changes.txt revision 1.1.1.24 1 ----------------------------------------
2
3
4 30 April 2020. Summary of changes for version 20200430:
5
6
7 1) ACPICA kernel-resident subsystem:
8
9 Cleaned up the coding style of a couple of global variables
10 (AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers.
11 AcpiProtocolLengths was made static, and the definition of
12 AcpiGbl_NextCmdNum was moved to acglobal.h.
13
14
15 2) iASL Compiler/Disassembler and ACPICA tools:
16
17 iASL DataTable Compiler: Fixed a segfault on errors that aren't directly
18 associated with a field.
19
20 Disassembler: has been made more resilient so that it will continue to
21 parse AML even if the AML generates ACPI namespace errors. This enables
22 iASL to disassemble some AML that may have been compiled using older
23 versions of iASL that no longer compile with newer versions of iASL.
24
25 iASL: Fixed the required parameters for _NIH and _NIG. Previously, there
26 was a mixup where _NIG required one parameter and _NIH required zero
27 parameters. This change swaps these parameter requirements. Now it is
28 required that _NIH must be called with one parameter and _NIG requires
29 zero parameters.
30
31 iASL: Allow use of undefined externals as long as they are protected by
32 an if (CondRefOf (...)) block when compiling multiple definition blocks.
33
34 iASL: Fixed the type override behavior of named objects that are declared
35 as External. External declarations will no longer override the type of
36 the actual definition if it already exists.
37
38 AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable
39 command line wildcard support on Windows. Note: the AcpiNames utility is
40 essentially redundant with the AcpiExec utility (using the "namespace"
41 command) and is therefore deprecated. It will be removed in future
42 releases of ACPICA.
43
44 Disassembler: ignore AE_ALREADY_EXISTS status when parsing create*
45 operators. The disassembler is intended to emit existing ASL code as-is.
46 Therefore, error messages emitted during disassembly should be ignored or
47 handled in a way such that the disassembler can continue to parse the
48 AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op
49 parsing for create operators in order to complete parsing ASL termlists.
50
51 iASL DataTable Compiler: IVRS table: fix potentially uninitialized
52 variable warning. Some compilers catch potential uninitialized variables.
53 This is done by examining branches of if/else statements. This change
54 replaces an "else if" with an "else" to fix the uninitialized variable
55 warning.
56
57
58 ----------------------------------------
59 26 March 2020. Summary of changes for version 20200326:
60
61
62 1) ACPICA kernel-resident subsystem:
63
64 Performed a code clean-up to prevent build errors on early versions of
65 GCC-10.
66
67 Added the NHLT table signature. iASL data table compiler/disassembler
68 support for this table is coming soon.
69
70
71 2) iASL Compiler/Disassembler and ACPICA tools:
72
73 AcpiExec: Fixed several problems with the namespace initialization file
74 (-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS
75 errors, several seg faults, and enhancements to line parsing within the
76 init file. In addition, each object found in the init file and it's new
77 value is displayed, as well as any such entries that do not have a
78 corresponding name in the namespace. For reference, the syntax for the
79 various supported data types are presented below:
80 PCHG 0x777788889999BBBB // Integer
81 \DEV1.STR1 "XYZ" // String
82 BUF1 (88 99 AA) // Buffer
83 PKG1 [0x1111 0x2222] // Package
84 \BF1 0x7980 // BufferField
85 RCRV 0x0123456789ABCDEF // Field Unit
86
87 iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro
88 can be used anywhere in a given ASL file to configure iASL to expect an
89 iASL compiler error code on the line where this macro was placed. If the
90 error code does not exist, an error is generated. This is intended to be
91 used for ACPICA's ASL test suite, but can be used by ASL developers as
92 well.
93
94 iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD
95 IVRS table parsing supported only IVHD type 10h structures. Parsing an
96 IVHD type 11h caused the iasl to report unknown subtable type. Add
97 necessary structure definition for IVHD type 11h and apply correct
98 parsing method based on subtable type. Micha? ?ygowski.
99
100 iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name
101 According to AMD IOMMU Specification Revision 3.05 the reserved field
102 should be IOMMU Feature Reporting. Change the name of the field to the
103 correct one. Micha? ?ygowski.
104
105 acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch
106 based on suggestions by David Seifert and Benjamin Berg.
107
108 iASL: table compiler: removed an unused variable (DtCompilerParserResult)
109 causing linking errors. Patch based on suggestions by David Seifert and
110 Benjamin Berg.
111
112 iASL: table compiler: make LexBuffer static to avoid linking errors in
113 newer compilers. Patch based on suggestions by David Seifert and Benjamin
114 Berg.
115
116 iASL: fixed type matching between External and Named objects. External
117 object types can only be expressed with ACPI object type values that are
118 defined in the ACPI spec. However, iASL uses ACPI object type values that
119 are local to ACPICA in addition to the values defined in the ACPI spec.
120 This change implements type matching to map some object type values
121 specific to ACPICA to ones that are defined in the ACPI spec.
122
123 iASL: Dropped the type mismatch compiler error that can arise from
124 External declarations to a warning. This warning can occur when there is
125 a type difference between the external declaration and the actual object
126 declaration (when compiling multiple files/modules simultaneously).
127
128 iASL: removed an incorrect error message regarding externals. This change
129 removes an incorrect error that is emitted when a duplicate external
130 declaration does not contain a type that opens a scope. This is incorrect
131 because the duplicate external with conflicting types are already caught
132 by iASL and it doesn't make any sense to enforce what this conflicting
133 type should be.
134
135 AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be
136 surrounded by parens. Otherwise, a logical statement that applies a
137 logical not operator to this macro could result in a computation that
138 applies the operator to the left side of the logical and but not the
139 right. Reported-by: John Levon <john.levon (a] joyent.com>
140
141 Fixed a problem with the local version of sprint(): On 32-bit, the
142 provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX,
143 String + Size will wrap, meaning End < Start, and
144 AcpiUtBoundStringOutput() will never output anything as a result. The
145 symptom seen of this was acpixtract failing to output anything -- with a
146 custom build that included utprint.c. Signed-off-by: John Levon
147 <john.levon (a] joyent.com>
148
149 iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the
150 ACPI specification.
151
152
153 ----------------------------------------
154 14 February 2020. Summary of changes for version 20200214:
155
156
157 1) ACPICA kernel-resident subsystem:
158
159 Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered
160 in a guest when it receives a sleep trigger from the hypervisor. When the
161 guest resumes from this power state, it does not see the SleepEnabled
162 bit. In other words, the sleepHibernation (S4) is triggered in a guest
163 when it receives a sleep trigger from the hypervisor. When the guest
164 resumes from this power state, it does not see the SleepEnabled bit. In
165 other words, the sleep button is not enabled on waking from an S4 state.
166 This causes subsequent invocation of sleep state to fail since the
167 guest.button is not enabled on waking from an S4 state. This causes
168 subsequent invocation of sleep state to fail in the guest. Fix this
169 problem by enabling the sleep button in ACPI legacy wake. From Anchal
170 Agarwal <anchalag (a] amazon.com>.
171
172 Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
173 for checking the status bits of all enabled GPEs in one go. It is needed
174 to distinguish spurious SCIs from genuine ones when deciding whether or
175 not to wake up the system from suspend-to-idle.
176
177 Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
178 using HOST in their environment to represent the host name for their
179 machines. Avoid this problem by renaming this variable from HOST to
180 ACPI_HOST.
181
182 MSVC 2017 project files: Enable multiprocessor generation to improve
183 build performance.
184
185 Added a macro to get the byte width of a Generic Address structure. New
186 ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
187 ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
188
189
190 2) iASL Compiler/Disassembler and ACPICA tools:
191
192 iASL: Implemented full support for the (optional, rarely used) ReturnType
193 and ParameterTypesList for the Method, Function, and External operators.
194 For Method declarations, the number of individual ParameterTypes must
195 match the declaration of the number of arguments (NumArgs). This also
196 Fixes a problem with the External operator where extra/extraneous bytes
197 were emitted in the AML code if the optional ReturnType/ParameterTypes
198 were specified for a MethodObj declaration.
199 New error message:
200 1) Method NumArgs count does not match length of ParameterTypes list
201
202 iASL: Implemented detection of type mismatches between External
203 declarations and named object declarations. Also, detect type mismatches
204 between multiple External declarations of the same Name.
205 New error messages:
206 1) Type mismatch between external declaration and actual object
207 declaration detected
208 2) Type mismatch between multiple external declarations detected
209
210 iASL: Implemented new error messages for External operators that specify
211 a ReturnType and/or ParameterTypesList for any object type other than
212 control methods (MethodObj).
213 New error messages:
214 1) Return type is only allowed for Externals declared as MethodObj
215 2) Parameter type is only allowed for Externals declared as MethodObj
216
217 iASL: Implemented two new remark/warning messages for ASL code that
218 creates named objects from within a control method. This is very
219 inefficient since the named object must be created and deleted each time
220 the method is executed.
221 New messages:
222 1) Creation of named objects within a method is highly inefficient, use
223 globals or method local variables instead (remark)
224 2) Static OperationRegion should be declared outside control method
225 (warning)
226
227 iASL: Improved illegal forward reference detection by adding support to
228 detect forward-reference method invocations.
229
230 iASL: Detect and issue an error message for NameStrings that contain too
231 many individual NameSegs (>255). This is an AML limitation that is
232 defined in the ACPI specification.
233 New message:
234 1) NameString contains too many NameSegs (>255)
235
236 acpidump: windows: use GetSystemFirmwareTable API for all tables except
237 SSDT. By using this API, acpidump is able to get all tables in the XSDT
238
239 iASL: Removed unused parser file and updated msvc2017 project files.
240 Removed the obsolete AslCompiler.y from the repository.
241
242 iASL: msvc2017: Fixed macros in the file dependency list to prevent
243 unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
244
245 Disassembler: Prevent spilling error messages to the output file. All
246 errors are directed to the console instead. These error messages
247 prevented re-compilation of the resulting disassembled ASL output file
248 (.DSL).
249
250
251 ----------------------------------------
252 10 January 2020. Summary of changes for version 20200110:
253
254
255 1) ACPICA kernel-resident subsystem:
256
257 Updated all copyrights to 2020. This affects all ACPICA source code
258 modules.
259
260
261 2) iASL Compiler/Disassembler and ACPICA tools:
262
263 ASL test suite (ASLTS): Updated all copyrights to 2020.
264
265 Tools and utilities: Updated all signon copyrights to 2020.
266
267 iASL: fix forward reference analysis for field declarations. Fixes
268 forward reference analysis for field declarations by searching the
269 parent scope for the named object when the object is not present in
270 the current scope.
271
272 iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
273 full pathname of the name that already exists is printed.
274
275 iASL: Enhance duplicate Case() detection for buffers. Add check for
276 buffers with no initializer list (these buffers will be filled with
277 zeros at runtime.)
278
279
280 ----------------------------------------
281 13 December 2019. Summary of changes for version 20191213:
282
283
284 1) ACPICA kernel-resident subsystem:
285
286 Return a Buffer object for all fields created via the CreateField
287 operator. Previously, an Integer would be returned if the size of
288 the field was less than or equal to the current size of an Integer.
289 Although this goes against the ACPI specification, it provides
290 compatibility with other ACPI implementations. Also updated the
291 ASLTS test suite to reflect this new behavior.
292
293 2) iASL Compiler/Disassembler and ACPICA tools:
294
295 iASL: Implemented detection of (and throw an error for) duplicate
296 values for Case statements within a single Switch statement. Duplicate
297 Integers, Strings, and Buffers are supported.
298
299 iASL: Fix error logging issue during multiple file compilation --
300 Switch to the correct input file during error node creation.
301
302 iASL: For duplicate named object creation, now emit an error instead
303 of a warning - since this will cause a runtime error.
304
305 AcpiSrc: Add unix line-ending support for non-Windows builds.
306
307 iASL: Add an error condition for an attempt to create a NameString
308 with > 255 NameSegs (the max allowable via the AML definition).
309
310
311 ----------------------------------------
312 18 October 2019. Summary of changes for version 20191018:
313
314
315 1) ACPICA kernel-resident subsystem:
316
317 Debugger: added a new command: ?Fields [address space ID]?. This command
318 dumps the contents of all field units that are defined within the
319 namespace with a particular address space ID.
320
321 Modified the external interface AcpiLoadTable() to return a table index.
322 This table index can be used for unloading a table for debugging.
323 ACPI_STATUS
324 AcpiLoadTable (
325 ACPI_TABLE_HEADER *Table,
326 UINT32 *TableIndex))
327
328 Implemented a new external interface: AcpiUnloadTable() This new function
329 takes a table index as an argument and unloads the table. Useful for
330 debugging only.
331 ACPI_STATUS
332 AcpiUnloadTable (
333 UINT32 TableIndex))
334
335 Ported the AcpiNames utility to use the new table initialization
336 sequence. The utility was broken before this change. Also, it was
337 required to include most of the AML interpreter into the utility in order
338 to process table initialization (module-level code execution.)
339
340 Update for results from running Clang V8.0.1. This fixes all "dead
341 assignment" warnings. There are still several "Dereference of NULL
342 pointer" warnings, but these have been found to be false positive
343 warnings.
344
345
346 2) iASL Compiler/Disassembler and ACPICA tools:
347
348 iASL: numerous table compiler changes to ensure that the usage of
349 yacc/bison syntax is POSIX-compliant.
350
351 iASL/disassembler: several simple bug fixes in the data table
352 disassembler.
353
354 Acpiexec: expanded the initialization file (the -fi option) to initialize
355 strings, buffers, packages, and field units.
356
357
358 ----------------------------------------
359 16 August 2019. Summary of changes for version 20190816:
360
361 This release is available at https://acpica.org/downloads
362
363
364 1) ACPICA kernel-resident subsystem:
365
366 Modified the OwnerId mechanism to allow for more Owner Ids. The previous
367 limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
368 exceptions on machines with a large number of initialization threads,
369 many CPU cores and nested initialization control methods.
370
371 Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
372 checking if the given GPE (as represented by a GPE device handle and a
373 GPE number) is currently active and dispatching it (if that's the case)
374 outside of interrupt context.
375
376 Table load: exit the interpreter before initializing objects within the
377 new table This prevents re-acquiring the interpreter lock when loading
378 tables
379
380 Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
381 uk Kim
382
383 Macros: removed pointer math on a null pointer. Causes warnings on some
384 compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
385 instead of using arithmetic.
386
387 Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
388 across all "printf-like" internal functions. Also, cleanup all calls to
389 such functions (both in 32-bit mode and 64-bit mode) now that they are
390 analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
391
392
393 2) iASL Compiler/Disassembler and ACPICA tools:
394
395 iASL: implemented a new data table compiler flex/bison front-end. This
396 change is internal and is not intended to result in changes to the
397 compiled code. This new compiler front-end can be invoked using the -tp
398 option for now, until the old mechanism is removed.
399
400 ASLTS: Implemented a new data table compiler test suite. This test suite
401 generates all table templates and compile/disassemble/re-compile/binary-
402 compare each file.
403
404 iASL: return -1 if AML files were not generated due to compiler errors
405
406 iASL: added a warning on use of the now-legacy ASL Processor () keyword.
407
408 iASL: added an error on _UID object declaration that returns a String
409 within a Processor () declaration. A _UID for a processor must be an
410 Integer.
411
412 iASL: added a null terminator to name strings that consist only of
413 multiple parent prefixes (^)
414
415 iASL: added support to compile both ASL and data table files in a single
416 command.
417
418 Updated the tool generation project files that were recently migrated to
419 MSVC 2017 to eliminate all new warnings. The new project files appear in
420 the directory \acpica\generate\msvc2017. This change effectively
421 deprecates the older project files in \acpica\generate\msvc9.
422
423
424 ----------------------------------------
425 03 July 2019. Summary of changes for version 20190703:
426
427
428 1) ACPICA kernel-resident subsystem:
429
430 Remove legacy module-level support code. There were still some remnants
431 of the legacy module-level code executions. Since we no longer support
432 this option, this is essentially dead code and has been removed from the
433 ACPICA source.
434
435 iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
436 scope. If these named objects are declared outside the root scope, they
437 will not be invoked by any host Operating System.
438
439 Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
440 one) can be enabled in two situations. First, the GPEs with existing _Lxx
441 and _Exx methods are enabled implicitly by ACPICA during system
442 initialization. Second, the GPEs without these methods (like GPEs listed
443 by _PRW objects for wakeup devices) need to be enabled directly by the
444 code that is going to use them (e.g. ACPI power management or device
445 drivers).
446
447 In the former case, if the status of a given GPE is set to start with,
448 its handler method (either _Lxx or _Exx) needs to be invoked to take care
449 of the events (possibly) signaled before the GPE was enabled. In the
450 latter case, however, the first caller of AcpiEnableGpe() for a given GPE
451 should not be expected to care about any events that might be signaled
452 through it earlier. In that case, it is better to clear the status of
453 the GPE before enabling it, to prevent stale events from triggering
454 unwanted actions (like spurious system resume, for example).
455
456 For this reason, modify AcpiEvAddGpeReference() to take an additional
457 boolean argument indicating whether or not the GPE status needs to be
458 cleared when its reference counter changes from zero to one and make
459 AcpiEnableGpe() pass TRUE to it through that new argument.
460
461
462 2) iASL Compiler/Disassembler and ACPICA tools:
463
464 The tool generation process has been migrated to MSVC 2017, and all
465 project files have been upgraded. The new project files appear in the
466 directory \acpica\generate\msvc2017. This change effectively deprecates
467 the older project files in \acpica\generate\msvc9.
468
469 iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
470 scope. If these named objects are declared outside the root scope, they
471 will not be invoked by any host Operating System
472
473 ----------------------------------------
474 09 May 2019. Summary of changes for version 20190509:
475
476
477 1) ACPICA kernel-resident subsystem:
478
479 Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling
480 them") that causes problems with Thunderbolt controllers to occur if a
481 dock device is connected at init time (the xhci_hcd and thunderbolt
482 modules crash which prevents peripherals connected through them from
483 working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
484 Dispatch active GPEs at init time") to get undone, so the problem
485 addressed by commit ecc1165b8b74 appears again as a result of it.
486
487
488 2) iASL Compiler/Disassembler and ACPICA tools:
489
490 Reverted iASL: Additional forward reference detection. This change
491 reverts forward reference detection for field declarations. The feature
492 unintentionally emitted AML bytecode with incorrect package lengths for
493 some ASL code related to Fields and OperationRegions. This malformed AML
494 can cause systems to crash
495 during boot. The malformed AML bytecode is emitted in iASL version
496 20190329 and 20190405.
497
498 iASL: improve forward reference detection. This change improves forward
499 reference detection for named objects inside of scopes. If a parse object
500 has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
501 a named object that is declared later in the AML bytecode. This is
502 allowed if the reference is inside of a method and the declaration is
503 outside of a method like so:
504
505 DefinitionBlock(...)
506 {
507 Method (TEST)
508 {
509 Return (NUM0)
510 }
511 Name (NUM0,0)
512 }
513
514 However, if the declaration and reference are both in the same method or
515 outside any methods, this is a forward reference and should be marked as
516 an error because it would result in runtime errors.
517
518 DefinitionBlock(...)
519 {
520 Name (BUFF, Buffer (NUM0) {}) // Forward reference
521 Name (NUM0, 0x0)
522
523 Method (TEST)
524 {
525 Local0 = NUM1
526 Name (NUM1, 0x1) // Forward reference
527 return (Local0)
528 }
529 }
530
531 iASL: Implemented additional buffer overflow analysis for BufferField
532 declarations. Check if a buffer index argument to a create buffer field
533 operation is beyond the end of the target buffer.
534
535 This affects these AML operators:
536
537 AML_CREATE_FIELD_OP
538 AML_CREATE_BIT_FIELD_OP
539 AML_CREATE_BYTE_FIELD_OP
540 AML_CREATE_WORD_FIELD_OP
541 AML_CREATE_DWORD_FIELD_OP
542 AML_CREATE_QWORD_FIELD_OP
543
544 There are three conditions that must be satisfied in order to allow this
545 validation at compile time:
546
547 1) The length of the target buffer must be an integer constant
548 2) The index specified in the create* must be an integer constant
549 3) For CreateField, the bit length argument must be non-zero.
550
551 Example:
552 Name (BUF1, Buffer() {1,2})
553 CreateField (BUF1, 7, 9, CF03) // 3: ERR
554
555 dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR
556 Error 6165 - ^ Buffer index beyond end of
557 target buffer
558
559
560 ----------------------------------------
561 05 April 2019. Summary of changes for version 20190405:
562
563
564 1) ACPICA kernel-resident subsystem:
565
566 Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
567 unconditionally clearing ACPI IRQs during suspend/resume") was added
568 earlier to stop clearing of event status bits unconditionally on suspend
569 and resume paths. Though this change fixed an issue on suspend path, it
570 introduced regressions on several resume paths. In the case of S0ix,
571 events are enabled as part of device suspend path. If status bits for the
572 events are set when they are enabled, it could result in premature wake
573 from S0ix. If status is cleared for any event that is being enabled so
574 that any stale events are cleared out. In case of S0ix, events are
575 enabled as part of device suspend path. If status bits for the events are
576 set when they are enabled, it could result in premature wake from S0ix.
577
578 This change ensures that status is cleared for any event that is being
579 enabled so that any stale events are cleared out.
580
581
582 2) iASL Compiler/Disassembler and ACPICA tools:
583
584 iASL: Implemented an enhanced multiple file compilation that combines
585 named objects from all input files to a single namespace. With this
586 feature, any unresolved external declarations as well as duplicate named
587 object declarations can be detected during compilation rather than
588 generating errors much later at runtime. The following commands are
589 examples that utilize this feature:
590 iasl dsdt.asl ssdt.asl
591 iasl dsdt.asl ssdt1.asl ssdt2.asl
592 iasl dsdt.asl ssdt*.asl
593
594 ----------------------------------------
595 29 March 2019. Summary of changes for version 20190329:
596
597
598 1) ACPICA kernel-resident subsystem:
599
600 Namespace support: Remove the address nodes from global list after method
601 termination. The global address list contains pointers to namespace nodes
602 that represent Operation Regions. This change properly removes Operation
603 Region namespace nodes that are declared dynamically during method
604 execution.
605
606 Linux: Use a different debug default than ACPICA. There was a divergence
607 between Linux and the ACPICA codebases. In order to resolve this
608 divergence, Linux now declares its own debug default in aclinux.h
609
610 Renamed some internal macros to improve code understanding and
611 maintenance. The macros below all operate on single 4-character ACPI
612 NameSegs, not generic strings (old -> new):
613 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE
614 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
615 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG
616
617 Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
618 table.
619
620 Test suite: Update makefiles, add PCC operation region support
621
622
623 2) iASL Compiler/Disassembler and Tools:
624
625 iASL: Implemented additional illegal forward reference detection. Now
626 detect and emit an error upon detection of a forward reference from a
627 Field to an Operation Region. This will fail at runtime if allowed to
628 pass the compiler.
629
630 AcpiExec: Add an address list check for dynamic Operation Regions. This
631 feature performs a sanity test for each node the global address list.
632 This is done in order to ensure that all dynamic operation regions are
633 properly removed from the global address list and no dangling pointers
634 are left behind.
635
636 Disassembler: Improved generation of resource pathnames. This change
637 improves the code that generates resource descriptor and resource tag
638 pathnames. The original code used a bunch of str* C library functions
639 that caused warnings on some compilers.
640
641 iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
642 function can overwrite buffers if the calling code is not very careful.
643 In the case of generating a module/table header, use of memmove is a
644 better implementation.
645
646
647 3) Status of new features that have not been completed at this time:
648
649 iASL: Implementing an enhanced multiple file compilation into a single
650 namespace feature (Status): This feature will be released soon, and
651 allows multiple ASL files to be compiled into the same single namespace.
652 By doing so, any unresolved external declarations as well as duplicate
653 named object declarations can be detected during compilation (rather than
654 later during runtime). The following commands are examples that utilize
655 this feature:
656 iasl dsdt.asl ssdt.asl
657 iasl dsdt.asl ssdt1.asl ssdt2.asl
658 iasl dsdt.asl ssdt*.asl
659
660 ASL tutorial status: Feedback is being gathered internally and the
661 current plan is to publish this tutorial on the ACPICA website after a
662 final review by a tech writer.
663
664 ----------------------------------------
665 15 February 2019. Summary of changes for version 20190215:
666
667
668 0) Support for ACPI specification version 6.3:
669
670 Add PCC operation region support for the AML interpreter. This adds PCC
671 operation region support in the AML interpreter and a default handler for
672 acpiexec. The change also renames the PCC region address space keyword to
673 PlatformCommChannel.
674
675 Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
676 These methods provide OSPM with health information and device boot
677 status.
678
679 PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
680 defines if the trigger needs to be invoked by OSPM before or at the end
681 of kernel crash dump processing/handling operation.
682
683 SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
684 is used for describing devices such as heterogeneous processors,
685 accelerators, GPUs, and IO devices with integrated compute or DMA
686 engines.
687
688 MADT: Add support for statistical profiling in GICC. Statistical
689 profiling extension (SPE) is an architecture-specific feature for ARM.
690
691 MADT: Add online capable flag. If this bit is set, system hardware
692 supports enabling this processor during OS runtime.
693
694 New Error Disconnect Recover Notification value. There are a number of
695 scenarios where system Firmware in collaboration with hardware may
696 disconnect one or more devices from the rest of the system for purposes
697 of error containment. Firmware can use this new notification value to
698 alert OSPM of such a removal.
699
700 PPTT: New additional fields in Processor Structure Flags. These flags
701 provide more information about processor topology.
702
703 NFIT/Disassembler: Change a field name from "Address Range" to "Region
704 Type".
705
706 HMAT updates: make several existing fields to be reserved as well as
707 rename subtable 0 to "memory proximity domain attributes".
708
709 GTDT: Add support for new GTDT Revision 3. This revision adds information
710 for the EL2 timer.
711
712 iASL: Update the HMAT example template for new fields.
713
714 iASL: Add support for the new revision of the GTDT (Rev 3).
715
716
717 1) ACPICA kernel-resident subsystem:
718
719 AML Parser: fix the main AML parse loop to correctly skip erroneous
720 extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
721 byte extended opcodes. If an error occurs during an AML table load, the
722 AML parser will continue loading the table by skipping the offending
723 opcode. This implements a "load table at any cost" philosophy.
724
725
726 2) iASL Compiler/Disassembler and Tools:
727
728 iASL: Add checks for illegal object references, such as a reference
729 outside of method to an object within a method. Such an object is only
730 temporary.
731
732 iASL: Emit error for creation of a zero-length operation region. Such a
733 region is rather pointless. If encountered, a runtime error is also
734 implemented in the interpreter.
735
736 Debugger: Fix a possible fault with the "test objects" command.
737
738 iASL: Makefile: support parent directory filenames containing embedded
739 spaces.
740
741 iASL: Update the TPM2 template to revision 4.
742
743 iASL: Add the ability to report specific warnings or remarks as errors.
744
745 Disassembler: Disassemble OEMx tables as actual AML byte code.
746 Previously, these tables were treated as "unknown table".
747
748 iASL: Add definition and disassembly for TPM2 revision 3.
749
750 iASL: Add support for TPM2 rev 3 compilation.
751
752
753 ----------------------------------------
754 08 January 2019. Summary of changes for version 20190108:
755
756
757 1) ACPICA kernel-resident subsystem:
758
759 Updated all copyrights to 2019. This affects all source code modules.
760
761
762 2) iASL Compiler/Disassembler and Tools:
763
764 ASL test suite (ASLTS): Updated all copyrights to 2019.
765
766 Tools: Updated all signon copyrights to 2019.
767
768 AcpiExec: Added a new option to dump extra information concerning any
769 memory leaks detected by the internal object/cache tracking mechanism. -
770 va
771
772 iASL: Updated the table template for the TPM2 table to the newest version
773 of the table (Revision 4)
774
775
776 ----------------------------------------
777 13 December 2018. Summary of changes for version 20181213:
778
779
780 1) ACPICA Kernel-resident Subsystem:
781
782 Fixed some buffer length issues with the GenericSerialBus, related to two
783 of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
784 which are rarely seen in the field. For these, the LEN field of the ASL
785 buffer is now ignored. Hans de Goede
786
787 Implemented a new object evaluation trace mechanism for control methods
788 and data objects. This includes nested control methods. It is
789 particularly useful for examining the ACPI execution during system
790 initialization since the output is relatively terse. The flag below
791 enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
792 #define ACPI_LV_EVALUATION 0x00080000
793
794 Examples:
795 Enter evaluation : _SB.PCI0._INI (Method)
796 Exit evaluation : _SB.PCI0._INI
797 Enter evaluation : _OSI (Method)
798 Exit evaluation : _OSI
799 Enter evaluation : _SB.PCI0.TEST (Method)
800 Nested method call : _SB.PCI0.NST1
801 Exit nested method : _SB.PCI0.NST1
802 Exit evaluation : _SB.PCI0.TEST
803
804 Added two recently-defined _OSI strings. See
805 https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
806 osi.
807 "Windows 2018"
808 "Windows 2018.2"
809
810 Update for buffer-to-string conversions via the ToHexString ASL operator.
811 A "0x" is now prepended to each of the hex values in the output string.
812 This provides compatibility with other ACPI implementations. The ACPI
813 specification is somewhat vague on this issue.
814 Example output string after conversion:
815 "0x01,0x02,0x03,0x04,0x05,0x06"
816
817 Return a run-time error for TermArg expressions within individual package
818 elements. Although this is technically supported by the ASL grammar,
819 other ACPI implementations do not support this either. Also, this fixes a
820 fault if this type of construct is ever encountered (it never has been).
821
822
823 2) iASL Compiler/Disassembler and Tools:
824
825 iASL: Implemented a new compile option (-ww) that will promote individual
826 warnings and remarks to errors. This is intended to enhance the firmware
827 build process.
828
829 AcpiExec: Implemented a new command-line option (-eo) to support the new
830 object evaluation trace mechanism described above.
831
832 Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
833 instead of a "unknown table" message.
834
835 AcpiHelp: Improved support for the "special" predefined names such as
836 _Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
837 used for "xx" and "x".
838
839 ----------------------------------------
840 31 October 2018. Summary of changes for version 20181031:
841
842
843 An Operation Region regression was fixed by properly adding address
844 ranges to a global list during initialization. This allows OS to
845 accurately check for overlapping regions between native devices (such as
846 PCI) and Operation regions as well as checking for region conflicts
847 between two Operation Regions.
848
849 Added support for the 2-byte extended opcodes in the code/feature that
850 attempts to continue parsing during the table load phase. Skip parsing
851 Device declarations (and other extended opcodes) when an error occurs
852 during parsing. Previously, only single-byte opcodes were supported.
853
854 Cleanup: Simplified the module-level code support by eliminating a
855 useless global variable (AcpiGbl_GroupModuleLeveCode).
856
857
858 2) iASL Compiler/Disassembler and Tools:
859
860 iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
861 could cause a fault in the preprocessor. This was an inadvertent side-
862 effect from moving more allocations/frees to the local cache/memory
863 mechanism.
864
865 iASL: Enhanced error detection by validating that all NameSeg elements
866 within a NamePatch actually exist. The previous behavior was spotty at
867 best, and such errors could be improperly ignored at compiler time (never
868 at runtime, however. There are two new error messages, as shown in the
869 examples below:
870
871 dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1)
872 Error 6161 - ^ One or more objects within
873 the Pathname do not exist (TTTT.BXXX)
874
875 dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
876 Error 6160 - One or more prefix Scopes do not exist ^
877 (BBBB.CBF1)
878
879 iASL: Disassembler/table-compiler: Added support for the static data
880 table TPM2 revision 3 (an older version of TPM2). The support has been
881 added for the compiler and the disassembler.
882
883 Fixed compilation of DOS format data table file on Unix/Linux systems.
884 iASL now properly detects line continuations (\) for DOS format data
885 table definition language files on when executing on Unix/Linux.
886
887 ----------------------------------------
888 03 October 2018. Summary of changes for version 20181003:
889
890
891 2) iASL Compiler/Disassembler and Tools:
892
893 Fixed a regression introduced in version 20180927 that could cause the
894 compiler to fault, especially with NamePaths containing one or more
895 carats (^). Such as: ^^_SB_PCI0
896
897 Added a new remark for the Sleep() operator when the sleep time operand
898 is larger than one second. This is a very long time for the ASL/BIOS code
899 and may not be what was intended by the ASL writer.
900
901 ----------------------------------------
902 27 September 2018. Summary of changes for version 20180927:
903
904
905 1) ACPICA kernel-resident subsystem:
906
907 Updated the GPE support to clear the status of all ACPI events when
908 entering any/all sleep states in order to avoid premature wakeups. In
909 theory, this may cause some wakeup events to be missed, but the
910 likelihood of this is small. This change restores the original behavior
911 of the ACPICA code in order to fix a regression seen from the previous
912 "Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
913 This regression could cause some systems to incorrectly wake immediately.
914
915 Updated the execution of the _REG methods during initialization and
916 namespace loading to bring the behavior into closer conformance to the
917 ACPI specification and other ACPI implementations:
918
919 From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
920 "Control methods must assume all operation regions are inaccessible
921 until the _REG(RegionSpace, 1) method is executed"
922
923 "The exceptions to this rule are:
924 1. OSPM must guarantee that the following operation regions are always
925 accessible:
926 SystemIO operation regions.
927 SystemMemory operation regions when accessing memory returned by the
928 System Address Map reporting interfaces."
929
930 Since the state of both the SystemIO and SystemMemory address spaces are
931 defined by the specification to never change, this ACPICA change ensures
932 that now _REG is never called on them. This solves some problems seen in
933 the field and provides compatibility with other ACPI implementations. An
934 update to the upcoming new version of the ACPI specification will help
935 clarify this behavior.
936
937 Updated the implementation of support for the Generic Serial Bus. For the
938 "bidirectional" protocols, the internal implementation now automatically
939 creates a return data buffer of the maximum size (255). This handles the
940 worst-case for data that is returned from the serial bus handler, and
941 fixes some problems seen in the field. This new buffer is directly
942 returned to the ASL. As such, there is no true "bidirectional" buffer,
943 which matches the ACPI specification. This is the reason for the "double
944 store" seen in the example ASL code in the specification, shown below:
945
946 Word Process Call (AttribProcessCall):
947 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
948 Field(TOP1, BufferAcc, NoLock, Preserve)
949 {
950 FLD1, 8, // Virtual register at command value 1.
951 }
952
953 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
954 // as BUFF
955 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
956
957 Store(0x5416, DATA) // Save 0x5416 into the data buffer
958 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call
959 transaction
960 // This is the "double store". The write to
961 // FLD1 returns a new buffer, which is stored
962 // back into BUFF with the second Store.
963
964
965 2) iASL Compiler/Disassembler and Tools:
966
967 iASL: Implemented detection of extraneous/redundant uses of the Offset()
968 operator within a Field Unit list. A remark is now issued for these. For
969 example, the first two of the Offset() operators below are extraneous.
970 Because both the compiler and the interpreter track the offsets
971 automatically, these Offsets simply refer to the current offset and are
972 unnecessary. Note, when optimization is enabled, the iASL compiler will
973 in fact remove the redundant Offset operators and will not emit any AML
974 code for them.
975
976 OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
977 Field (OPR1)
978 {
979 Offset (0), // Never needed
980 FLD1, 32,
981 Offset (4), // Redundant, offset is already 4 (bytes)
982 FLD2, 8,
983 Offset (64), // OK use of Offset.
984 FLD3, 16,
985 }
986 dsdt.asl 14: Offset (0),
987 Remark 2158 - ^ Unnecessary/redundant use of Offset
988 operator
989
990 dsdt.asl 16: Offset (4),
991 Remark 2158 - ^ Unnecessary/redundant use of Offset
992 operator
993
994 ----------------------------------------
995 10 August 2018. Summary of changes for version 20180810:
996
997
998 1) ACPICA kernel-resident subsystem:
999
1000 Initial ACPI table loading: Attempt to continue loading ACPI tables
1001 regardless of malformed AML. Since migrating table initialization to the
1002 new module-level code support, the AML interpreter rejected tables upon
1003 any ACPI error encountered during table load. This is a problem because
1004 non-serious ACPI errors during table load do not necessarily mean that
1005 the entire definition block (DSDT or SSDT) is invalid. This change
1006 improves the table loading by ignoring some types of errors that can be
1007 generated by incorrect AML. This can range from object type errors, scope
1008 errors, and index errors.
1009
1010 Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
1011 during suspend/resume. The status of ACPI events is no longer cleared
1012 when entering the ACPI S5 system state (power off) which caused some
1013 systems to power up immediately after turning off power in certain
1014 situations. This was a functional regression. It was fixed by clearing
1015 the status of all ACPI events again when entering S5 (for system-wide
1016 suspend or hibernation the clearing of the status of all events is not
1017 desirable, as it might cause the kernel to miss wakeup events sometimes).
1018 Rafael Wysocki.
1019
1020
1021 2) iASL Compiler/Disassembler and Tools:
1022
1023 AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
1024 elements listed in the initialization file were previously initialized
1025 after the table load and before executing module-level code blocks.
1026 Recent changes in the module-level code support means that the table load
1027 becomes a large control method execution. If fields are used within
1028 module-level code and we are executing with the -fi option, the
1029 initialization values were used to initialize the namespace object(s)
1030 only after the table was finished loading. This change Provides an early
1031 initialization of objects specified in the initialization file so that
1032 field unit values are populated during the table load (not after the
1033 load).
1034
1035 AcpiExec: Fixed a small memory leak regression that could result in
1036 warnings during exit of the utility. These warnings were similar to
1037 these:
1038 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
1039 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
1040
1041 ----------------------------------------
1042 29 June 2018. Summary of changes for version 20180629:
1043
1044
1045 1) iASL Compiler/Disassembler and Tools:
1046
1047 iASL: Fixed a regression related to the use of the ASL External
1048 statement. Error checking for the use of the External() statement has
1049 been relaxed. Previously, a restriction on the use of External meant that
1050 the referenced named object was required to be defined in a different
1051 table (an SSDT). Thus it would be an error to declare an object as an
1052 external and then define the same named object in the same table. For
1053 example:
1054 DefinitionBlock (...)
1055 {
1056 External (DEV1)
1057 Device (DEV1){...} // This was an error
1058 }
1059 However, this behavior has caused regressions in some existing ASL code,
1060 because there is code that depends on named objects and externals (with
1061 the same name) being declared in the same table. This change will allow
1062 the ASL code above to compile without errors or warnings.
1063
1064 iASL: Implemented ASL language extensions for four operators to make some
1065 of their arguments optional instead of required:
1066 1) Field (RegionName, AccessType, LockRule, UpdateRule)
1067 2) BankField (RegionName, BankName, BankValue,
1068 AccessType, LockRule, UpdateRule)
1069 3) IndexField (IndexName, DataName,
1070 AccessType, LockRule, UpdateRule)
1071 For the Field operators above, the AccessType, LockRule, and UpdateRule
1072 are now optional arguments. The default values are:
1073 AccessType: AnyAcc
1074 LockRule: NoLock
1075 UpdateRule: Preserve
1076 4) Mutex (MutexName, SyncLevel)
1077 For this operator, the SyncLevel argument is now optional. This argument
1078 is rarely used in any meaningful way by ASL code, and thus it makes sense
1079 to make it optional. The default value is:
1080 SyncLevel: 0
1081
1082 iASL: Attempted use of the ASL Unload() operator now results in the
1083 following warning:
1084 "Unload is not supported by all operating systems"
1085 This is in fact very true, and the Unload operator may be completely
1086 deprecated in the near future.
1087
1088 AcpiExec: Fixed a regression for the -fi option (Namespace initialization
1089 file. Recent changes in the ACPICA module-level code support altered the
1090 table load/initialization sequence . This means that the table load has
1091 become a large method execution of the table itself. If Operation Region
1092 Fields are used within any module-level code and the -fi option was
1093 specified, the initialization values were populated only after the table
1094 had completely finished loading (and thus the module-level code had
1095 already been executed). This change moves the initialization of objects
1096 listed in the initialization file to before the table is executed as a
1097 method. Field unit values are now initialized before the table execution
1098 is performed.
1099
1100 ----------------------------------------
1101 31 May 2018. Summary of changes for version 20180531:
1102
1103
1104 1) ACPICA kernel-resident Subsystem:
1105
1106 Implemented additional support to help ensure that a DSDT or SSDT is
1107 fully loaded even if errors are incurred during the load. The majority of
1108 the problems that are seen is the failure of individual AML operators
1109 that occur during execution of any module-level code (MLC) existing in
1110 the table. This support adds a mechanism to abort the current ASL
1111 statement (AML opcode), emit an error message, and to simply move on to
1112 the next opcode -- instead of aborting the entire table load. This is
1113 different than the execution of a control method where the entire method
1114 is aborted upon any error. The goal is to perform a very "best effort" to
1115 load the ACPI tables. The most common MLC errors that have been seen in
1116 the field are direct references to unresolved ASL/AML symbols (referenced
1117 directly without the use of the CondRefOf operator to validate the
1118 symbol). This new ACPICA behavior is now compatible with other ACPI
1119 implementations.
1120
1121 Interpreter: The Unload AML operator is no longer supported for the
1122 reasons below. An AE_NOT_IMPLEMENTED exception is returned.
1123 1) A correct implementation on at least some hosts may not be possible.
1124 2) Other ACPI implementations do not correctly/fully support it.
1125 3) It requires host device driver support which is not known to exist.
1126 (To properly support namespace unload out from underneath.)
1127 4) This AML operator has never been seen in the field.
1128
1129 Parser: Added a debug option to dump AML parse sub-trees as they are
1130 being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
1131 ACPI_DB_PARSE_TREES.
1132
1133 Debugger: Reduced the verbosity for errors incurred during table load and
1134 module-level code execution.
1135
1136 Completed an investigation into adding a namespace node "owner list"
1137 instead of the current "owner ID" associated with namespace nodes. This
1138 list would link together all nodes that are owned by an individual
1139 control method. The purpose would be to enhance control method execution
1140 by speeding up cleanup during method exit (all namespace nodes created by
1141 a method are deleted upon method termination.) Currently, the entire
1142 namespace must be searched for matching owner IDs if (and only if) the
1143 method creates named objects outside of the local scope. However, by far
1144 the most common case is that methods create objects locally, not outside
1145 the method scope. There is already an ACPICA optimization in place that
1146 only searches the entire namespace in the rare case of a method creating
1147 objects elsewhere in the namespace. Therefore, it is felt that the
1148 overhead of adding an additional pointer to each namespace node to
1149 implement the owner list makes this feature unnecessary.
1150
1151
1152 2) iASL Compiler/Disassembler and Tools:
1153
1154 iASL, Disassembler, and Template generator: Implemented support for
1155 Revision D of the IORT table. Adds a new subtable that is used to specify
1156 SMMUv3 PMCGs. rmurphy-arm.
1157
1158 Disassembler: Restored correct table header validation for the "special"
1159 ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
1160 table header and must be special-cased. This was a regression that has
1161 been present for apparently a long time.
1162
1163 AcpiExec: Reduced verbosity of the local exception handler implemented
1164 within acpiexec. This handler is invoked by ACPICA upon any exceptions
1165 generated during control method execution. A new option was added: -vh
1166 restores the original verbosity level if desired.
1167
1168 AcpiExec: Changed the default base from decimal to hex for the -x option
1169 (set debug level). This simplifies the use of this option and matches the
1170 behavior of the corresponding iASL -x option.
1171
1172 AcpiExec: Restored a force-exit on multiple control-c (sigint)
1173 interrupts. This allows program termination even if other issues cause
1174 the control-c to fail.
1175
1176 ASL test suite (ASLTS): Added tests for the recently implemented package
1177 element resolution mechanism that allows forward references to named
1178 objects from individual package elements (this mechanism provides
1179 compatibility with other ACPI implementations.)
1180
1181
1182 ----------------------------------------
1183 8 May 2018. Summary of changes for version 20180508:
1184
1185
1186 1) ACPICA kernel-resident subsystem:
1187
1188 Completed the new (recently deployed) package resolution mechanism for
1189 the Load and LoadTable ASL/AML operators. This fixes a regression that
1190 was introduced in version 20180209 that could result in an
1191 AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
1192 (SSDT) that contains package objects.
1193
1194
1195 2) iASL Compiler/Disassembler and Tools:
1196
1197 AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
1198 1 MB. This change allows for table offsets within the acpidump file to be
1199 up to 8 characters. These changes are backwards compatible with existing
1200 acpidump files.
1201
1202
1203 ----------------------------------------
1204 27 April 2018. Summary of changes for version 20180427:
1205
1206
1207 1) ACPICA kernel-resident subsystem:
1208
1209 Debugger: Added support for Package objects in the "Test Objects"
1210 command. This command walks the entire namespace and evaluates all named
1211 data objects (Integers, Strings, Buffers, and now Packages).
1212
1213 Improved error messages for the namespace root node. Originally, the root
1214 was referred to by the confusing string "\___". This has been replaced by
1215 "Namespace Root" for clarification.
1216
1217 Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
1218 Ian King <colin.king (a] canonical.com>.
1219
1220
1221 2) iASL Compiler/Disassembler and Tools:
1222
1223 iASL: Implemented support to detect and flag illegal forward references.
1224 For compatibility with other ACPI implementations, these references are
1225 now illegal at the root level of the DSDT or SSDTs. Forward references
1226 have always been illegal within control methods. This change should not
1227 affect existing ASL/AML code because of the fact that these references
1228 have always been illegal in the other ACPI implementation.
1229
1230 iASL: Added error messages for the case where a table OEM ID and OEM
1231 TABLE ID strings are longer than the ACPI-defined length. Previously,
1232 these strings were simply silently truncated.
1233
1234 iASL: Enhanced the -tc option (which creates an AML hex file in C,
1235 suitable for import into a firmware project):
1236 1) Create a unique name for the table, to simplify use of multiple
1237 SSDTs.
1238 2) Add a protection #ifdef in the file, similar to a .h header file.
1239 With assistance from Sami Mujawar, sami.mujawar (a] arm.com and Evan Lloyd,
1240 evan.lloyd (a] arm.com
1241
1242 AcpiExec: Added a new option, -df, to disable the local fault handler.
1243 This is useful during debugging, where it may be desired to drop into a
1244 debugger on a fault.
1245
1246 ----------------------------------------
1247 13 March 2018. Summary of changes for version 20180313:
1248
1249
1250 1) ACPICA kernel-resident subsystem:
1251
1252 Implemented various improvements to the GPE support:
1253
1254 1) Dispatch all active GPEs at initialization time so that no GPEs are
1255 lost.
1256 2) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
1257 before devices are enumerated.
1258 3) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
1259 IRQs are not lost.
1260 4) Add parallel GPE handling to eliminate the possibility of dispatching
1261 the same GPE twice.
1262 5) Dispatch any pending GPEs after enabling for the first time.
1263
1264 AcpiGetObjectInfo - removed support for the _STA method. This was causing
1265 problems on some platforms.
1266
1267 Added a new _OSI string, "Windows 2017.2".
1268
1269 Cleaned up and simplified the module-level code support. These changes
1270 are in preparation for the eventual removal of the legacy MLC support
1271 (deferred execution), replaced by the new MLC architecture which executes
1272 the MLC as a table is loaded (DSDT/SSDTs).
1273
1274 Changed a compile-time option to a runtime option. Changes the option to
1275 ignore ACPI table load-time package resolution errors into a runtime
1276 option. Used only for platforms that generate many AE_NOT_FOUND errors
1277 during boot. AcpiGbl_IgnorePackageResolutionErrors.
1278
1279 Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
1280 ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
1281 compilation errors from unused variables (seen with some compilers).
1282
1283
1284 2) iASL Compiler/Disassembler and Tools:
1285
1286 ASLTS: parallelized execution in order to achieve an (approximately) 2X
1287 performance increase.
1288
1289 ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
1290 error reporting.
1291
1292 ----------------------------------------
1293 09 February 2018. Summary of changes for version 20180209:
1294
1295
1296 1) ACPICA kernel-resident subsystem:
1297
1298 Completed the final integration of the recent changes to Package Object
1299 handling and the module-level AML code support. This allows forward
1300 references from individual package elements when the package object is
1301 declared from within module-level code blocks. Provides compatibility
1302 with other ACPI implementations.
1303
1304 The new architecture for the AML module-level code has been completed and
1305 is now the default for the ACPICA code. This new architecture executes
1306 the module-level code in-line as the ACPI table is loaded/parsed instead
1307 of the previous architecture which deferred this code until after the
1308 table was fully loaded. This solves some ASL code ordering issues and
1309 provides compatibility with other ACPI implementations. At this time,
1310 there is an option to fallback to the earlier architecture, but this
1311 support is deprecated and is planned to be completely removed later this
1312 year.
1313
1314 Added a compile-time option to ignore AE_NOT_FOUND exceptions during
1315 resolution of named reference elements within Package objects. Although
1316 this is potentially a serious problem, it can generate a lot of
1317 noise/errors on platforms whose firmware carries around a bunch of unused
1318 Package objects. To disable these errors, define
1319 ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
1320 errors are always reported for ACPICA applications such as AcpiExec.
1321
1322 Fixed a regression related to the explicit type-conversion AML operators
1323 (ToXXXX). The regression was introduced early in 2017 but was not seen
1324 until recently because these operators are not fully supported by other
1325 ACPI implementations and are thus rarely used by firmware developers. The
1326 operators are defined by the ACPI specification to not implement the
1327 "implicit result object conversion". The regression incorrectly
1328 introduced this object conversion for the following explicit conversion
1329 operators:
1330 ToInteger
1331 ToString
1332 ToBuffer
1333 ToDecimalString
1334 ToHexString
1335 ToBCD
1336 FromBCD
1337
1338
1339 2) iASL Compiler/Disassembler and Tools:
1340
1341 iASL: Fixed a problem with the compiler constant folding feature as
1342 related to the ToXXXX explicit conversion operators. These operators do
1343 not support the "implicit result object conversion" by definition. Thus,
1344 ASL expressions that use these operators cannot be folded to a simple
1345 Store operator because Store implements the implicit conversion. This
1346 change uses the CopyObject operator for the ToXXXX operator folding
1347 instead. CopyObject is defined to not implement implicit result
1348 conversions and is thus appropriate for folding the ToXXXX operators.
1349
1350 iASL: Changed the severity of an error condition to a simple warning for
1351 the case where a symbol is declared both locally and as an external
1352 symbol. This accommodates existing ASL code.
1353
1354 AcpiExec: The -ep option to enable the new architecture for module-level
1355 code has been removed. It is replaced by the -dp option which instead has
1356 the opposite effect: it disables the new architecture (the default) and
1357 enables the legacy architecture. When the legacy code is removed in the
1358 future, the -dp option will be removed also.
1359
1360 ----------------------------------------
1361 05 January 2018. Summary of changes for version 20180105:
1362
1363
1364 1) ACPICA kernel-resident subsystem:
1365
1366 Updated all copyrights to 2018. This affects all source code modules.
1367
1368 Fixed a possible build error caused by an unresolved reference to the
1369 AcpiUtSafeStrncpy function.
1370
1371 Removed NULL pointer arithmetic in the various pointer manipulation
1372 macros. All "(void *) NULL" constructs are converted to "(void *) 0".
1373 This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
1374
1375 Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
1376 Mittal.
1377
1378
1379 2) iASL Compiler/Disassembler and Tools:
1380
1381 ASLTS: Updated all copyrights to 2018.
1382
1383 Tools: Updated all signon copyrights to 2018.
1384
1385 AcpiXtract: Fixed a regression related to ACPI table signatures where the
1386 signature was truncated to 3 characters (instead of 4).
1387
1388 AcpiExec: Restore the original terminal mode after the use of the -v and
1389 -vd options.
1390
1391 ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
1392
1393 ----------------------------------------
1394 14 December 2017. Summary of changes for version 20171214:
1395
1396
1397 1) ACPICA kernel-resident subsystem:
1398
1399 Fixed a regression in the external (public) AcpiEvaluateObjectTyped
1400 interface where the optional "pathname" argument had inadvertently become
1401 a required argument returning an error if omitted (NULL pointer
1402 argument).
1403
1404 Fixed two possible memory leaks related to the recently developed "late
1405 resolution" of reference objects within ASL Package Object definitions.
1406
1407 Added two recently defined _OSI strings: "Windows 2016" and "Windows
1408 2017". Mario Limonciello.
1409
1410 Implemented and deployed a safer version of the C library function
1411 strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the
1412 creation of unterminated strings as a possible result of a standard
1413 strncpy.
1414
1415 Cleaned up and restructured the global variable file (acglobal.h). There
1416 are many changes, but no functional changes.
1417
1418
1419 2) iASL Compiler/Disassembler and Tools:
1420
1421 iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
1422 optional OemData field at the end of the table was incorrectly required
1423 for proper compilation. It is now correctly an optional field.
1424
1425 ASLTS: The entire suite was converted from standard ASL to the ASL+
1426 language, using the ASL-to-ASL+ converter which is integrated into the
1427 iASL compiler. A binary compare of all output files has verified the
1428 correctness of the conversion.
1429
1430 iASL: Fixed the source code build for platforms where "char" is unsigned.
1431 This affected the iASL lexer only. Jung-uk Kim.
1432
1433 ----------------------------------------
1434 10 November 2017. Summary of changes for version 20171110:
1435
1436
1437 1) ACPICA kernel-resident subsystem:
1438
1439 This release implements full support for ACPI 6.2A:
1440 NFIT - Added a new subtable, "Platform Capabilities Structure"
1441 No other changes to ACPICA were required, since ACPI 6.2A is primarily an
1442 errata release of the specification.
1443
1444 Other ACPI table changes:
1445 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
1446 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
1447 Linton
1448
1449 Utilities: Modified the string/integer conversion functions to use
1450 internal 64-bit divide support instead of a native divide. On 32-bit
1451 platforms, a 64-bit divide typically requires a library function which
1452 may not be present in the build (kernel or otherwise).
1453
1454 Implemented a targeted error message for timeouts returned from the
1455 Embedded Controller device driver. This is seen frequently enough to
1456 special-case an AE_TIME returned from an EC operation region access:
1457 "Timeout from EC hardware or EC device driver"
1458
1459 Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
1460 runtime error messages have the identical prefix.
1461
1462
1463 2) iASL Compiler/Disassembler and Tools:
1464
1465 AcpiXtract: Fixed a problem with table header detection within the
1466 acpidump file. Processing a table could be ended early if a 0x40 (@)
1467 appears in the original binary table, resulting in the @ symbol appearing
1468 in the decoded ASCII field at the end of the acpidump text line. The
1469 symbol caused acpixtract to incorrectly think it had reached the end of
1470 the current table and the beginning of a new table.
1471
1472 AcpiXtract: Added an option (-f) to ignore some errors during table
1473 extraction. This initial implementation ignores non-ASCII and non-
1474 printable characters found in the acpidump text file.
1475
1476 TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
1477 for ASLTS. This feature is used to track memory allocations from
1478 different memory caches within the ACPICA code. At the end of an ASLTS
1479 run, these memory statistics are recorded and stored in a log file.
1480
1481 Debugger (user-space version): Implemented a simple "Background" command.
1482 Creates a new thread to execute a control method in the background, while
1483 control returns to the debugger prompt to allow additional commands.
1484 Syntax: Background <Namepath> [Arguments]
1485
1486 ----------------------------------------
1487 29 September 2017. Summary of changes for version 20170929:
1488
1489
1490 1) ACPICA kernel-resident subsystem:
1491
1492 Redesigned and implemented an improved ASL While() loop timeout
1493 mechanism. This mechanism is used to prevent infinite loops in the kernel
1494 AML interpreter caused by either non-responsive hardware or incorrect AML
1495 code. The new implementation uses AcpiOsGetTimer instead of a simple
1496 maximum loop count, and is thus more accurate and constant across
1497 different machines. The default timeout is currently 30 seconds, but this
1498 may be adjusted later.
1499
1500 Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
1501 better reflect the new implementation of the loop timeout mechanism.
1502
1503 Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
1504 and to fix an off-by-one error. Jung-uk Kim.
1505
1506 Fixed an EFI build problem by updating the makefiles to for a new file
1507 that was added, utstrsuppt.c
1508
1509
1510 2) iASL Compiler/Disassembler and Tools:
1511
1512 Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
1513 includes support in the table disassembler, compiler, and template
1514 generator.
1515
1516 iASL: Added an exception for an illegal type of recursive method
1517 invocation. If a method creates named objects, the first recursive call
1518 will fail at runtime. This change adds an error detection at compile time
1519 to catch the problem up front. Note: Marking such a method as
1520 "serialized" will not help with this problem, because the same thread can
1521 acquire the method mutex more than once. Example compiler and runtime
1522 output:
1523
1524 Method (MTH1)
1525 {
1526 Name (INT1, 1)
1527 MTH1 ()
1528 }
1529
1530 dsdt.asl 22: MTH1 ()
1531 Error 6152 - ^ Illegal recursive call to method
1532 that creates named objects (MTH1)
1533
1534 Previous runtime exception:
1535 ACPI Error: [INT1] Namespace lookup failure,
1536 AE_ALREADY_EXISTS (20170831/dswload2-465)
1537
1538 iASL: Updated support for External() opcodes to improve namespace
1539 management and error detection. These changes are related to issues seen
1540 with multiple-segment namespace pathnames within External declarations,
1541 such as below:
1542
1543 External(\_SB.PCI0.GFX0, DeviceObj)
1544 External(\_SB.PCI0.GFX0.ALSI)
1545
1546 iASL: Implemented support for multi-line error/warning messages. This
1547 enables more detailed and helpful error messages as below, from the
1548 initial deployment for the duplicate names error:
1549
1550 DSDT.iiii 1692: Device(PEG2) {
1551 Error 6074 - ^ Name already exists in scope
1552 (PEG2)
1553
1554 Original name creation/declaration below:
1555 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj)
1556
1557 AcpiXtract: Added additional flexibility to support differing input hex
1558 dump formats. Specifically, hex dumps that contain partial disassembly
1559 and/or comments within the ACPI table data definition. There exist some
1560 dump utilities seen in the field that create this type of hex dump (such
1561 as Simics). For example:
1562
1563 DSDT @ 0xdfffd0c0 (10999 bytes)
1564 Signature DSDT
1565 Length 10999
1566 Revision 1
1567 Checksum 0xf3 (Ok)
1568 OEM_ID BXPC
1569 OEM_table_id BXDSDT
1570 OEM_revision 1
1571 Creator_id 1280593481
1572 Creator_revision 537399345
1573 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
1574 ...
1575 2af0: 5f 4c 30 46 00 a4 01
1576
1577 Test suite: Miscellaneous changes/fixes:
1578 More cleanup and simplification of makefiles
1579 Continue compilation of test cases after a compile failure
1580 Do not perform binary compare unless both files actually exist
1581
1582 iASL: Performed some code/module restructuring. Moved all memory
1583 allocation functions to new modules. Two new files, aslallocate.c and
1584 aslcache.c
1585
1586 ----------------------------------------
1587 31 August 2017. Summary of changes for version 20170831:
1588
1589
1590 1) ACPICA kernel-resident subsystem:
1591
1592 Implemented internal support for full 64-bit addresses that appear in all
1593 Generic Address Structure (GAS) structures. Previously, only the lower 32
1594 bits were used. Affects the use of GAS structures in the FADT and other
1595 tables, as well as the GAS structures passed to the AcpiRead and
1596 AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
1597
1598 Added header support for the PDTT ACPI table (Processor Debug Trigger
1599 Table). Full support in the iASL Data Table Compiler and disassembler is
1600 forthcoming.
1601
1602
1603 2) iASL Compiler/Disassembler and Tools:
1604
1605 iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
1606 Properties Topology Table) where a flag bit was specified in the wrong
1607 bit position ("Line Size Valid", bit 6).
1608
1609 iASL: Implemented support for Octal integer constants as defined by the
1610 ASL language grammar, per the ACPI specification. Any integer constant
1611 that starts with a zero is an octal constant. For example,
1612 Store (037777, Local0) /* Octal constant */
1613 Store (0x3FFF, Local0) /* Hex equivalent */
1614 Store (16383, Local0) /* Decimal equivalent */
1615
1616 iASL: Improved overflow detection for 64-bit string conversions during
1617 compilation of integer constants. "Overflow" in this case means a string
1618 that represents an integer that is too large to fit into a 64-bit value.
1619 Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
1620 the low-order 32 bits with a warning, as previously implemented. Several
1621 new exceptions are defined that indicate a 64-bit overflow, as well as
1622 the base (radix) that was used during the attempted conversion. Examples:
1623 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW
1624 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW
1625 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW
1626
1627 iASL: Added a warning for the case where a ResourceTemplate is declared
1628 with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
1629 this case, the resulting template is created with a single END_TAG
1630 descriptor, which is essentially useless.
1631
1632 iASL: Expanded the -vw option (ignore specific warnings/remarks) to
1633 include compilation error codes as well.
1634
1635 ----------------------------------------
1636 28 July 2017. Summary of changes for version 20170728:
1637
1638
1639 1) ACPICA kernel-resident subsystem:
1640
1641 Fixed a regression seen with small resource descriptors that could cause
1642 an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
1643
1644 AML interpreter: Implemented a new feature that allows forward references
1645 from individual named references within package objects that are
1646 contained within blocks of "module-level code". This provides
1647 compatibility with other ACPI implementations and supports existing
1648 firmware that depends on this feature. Example:
1649
1650 Name (ABCD, 1)
1651 If (ABCD) /* An If() at module-level */
1652 {
1653 Name (PKG1, Package()
1654 {
1655 INT1 /* Forward reference to object INT1
1656 */
1657 })
1658 Name (INT1, 0x1234)
1659 }
1660
1661 AML Interpreter: Fixed a problem with the Alias() operator where aliases
1662 to some ASL objects were not handled properly. Objects affected are:
1663 Mutex, Event, and OperationRegion.
1664
1665 AML Debugger: Enhanced to properly handle AML Alias objects. These
1666 objects have one level of indirection which was not fully supported by
1667 the debugger.
1668
1669 Table Manager: Added support to detect and ignore duplicate SSDTs within
1670 the XSDT/RSDT. This error in the XSDT has been seen in the field.
1671
1672 EFI and EDK2 support:
1673 Enabled /WX flag for MSVC builds
1674 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
1675 Added local support for 64-bit multiply and shift operations
1676 Added support to compile acpidump.efi on Windows
1677 Added OSL function stubs for interfaces not used under EFI
1678
1679 Added additional support for the _DMA predefined name. _DMA returns a
1680 buffer containing a resource template. This change add support within the
1681 resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
1682 resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi (a] arm.com>
1683
1684
1685 2) iASL Compiler/Disassembler and Tools:
1686
1687 iASL: Fixed a problem where the internal input line buffer(s) could
1688 overflow if there are very long lines in the input ASL source code file.
1689 Implemented buffer management that automatically increases the size of
1690 the buffers as necessary.
1691
1692 iASL: Added an option (-vx) to "expect" particular remarks, warnings and
1693 errors. If the specified exception is not raised during compilation, the
1694 compiler emits an error. This is intended to support the ASL test suite,
1695 but may be useful in other contexts.
1696
1697 iASL: Implemented a new predefined macro, __METHOD__, which returns a
1698 string containing the name of the current control method that is being
1699 compiled.
1700
1701 iASL: Implemented debugger and table compiler support for the SDEI ACPI
1702 table (Software Delegated Exception Interface). James Morse
1703 <james.morse (a] arm.com>
1704
1705 Unix/Linux makefiles: Added an option to disable compile optimizations.
1706 The disable occurs when the NOOPT flag is set to TRUE.
1707 theracermaster (a] gmail.com
1708
1709 Acpidump: Added support for multiple DSDT and FACS tables. This can occur
1710 when there are different tables for 32-bit versus 64-bit.
1711
1712 Enhanced error reporting for the ASL test suite (ASLTS) by removing
1713 unnecessary/verbose text, and emit the actual line number where an error
1714 has occurred. These changes are intended to improve the usefulness of the
1715 test suite.
1716
1717 ----------------------------------------
1718 29 June 2017. Summary of changes for version 20170629:
1719
1720
1721 1) ACPICA kernel-resident subsystem:
1722
1723 Tables: Implemented a deferred ACPI table verification. This is useful
1724 for operating systems where the tables cannot be verified in the early
1725 initialization stage due to early memory mapping limitations on some
1726 architectures. Lv Zheng.
1727
1728 Tables: Removed the signature validation for dynamically loaded tables.
1729 Provides compatibility with other ACPI implementations. Previously, only
1730 SSDT tables were allowed, as per the ACPI specification. Now, any table
1731 signature can be used via the Load() operator. Lv Zheng.
1732
1733 Tables: Fixed several mutex issues that could cause errors during table
1734 acquisition. Lv Zheng.
1735
1736 Tables: Fixed a problem where an ACPI warning could be generated if a
1737 null pointer was passed to the AcpiPutTable interface. Lv Zheng.
1738
1739 Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
1740 AcpiPutTable interfaces. This applies to the "late stage" table loading
1741 when the use of AcpiPutTable is no longer required (since the system
1742 memory manager is fully running and available). Lv Zheng.
1743
1744 Fixed/Reverted a regression during processing of resource descriptors
1745 that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
1746 exception in this case.
1747
1748 Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
1749 I/O Remapping specification. Robin Murphy <robin.murphy (a] arm.com>
1750
1751 Interpreter: Fixed a possible fault if an Alias operator with an invalid
1752 or duplicate target is encountered during Alias creation in
1753 AcpiExCreateAlias. Alex James <theracermaster (a] gmail.com>
1754
1755 Added an option to use designated initializers for function pointers.
1756 Kees Cook <keescook (a] google.com>
1757
1758
1759 2) iASL Compiler/Disassembler and Tools:
1760
1761 iASL: Allow compilation of External declarations with target pathnames
1762 that refer to existing named objects within the table. Erik Schmauss.
1763
1764 iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
1765 FieldUnit name also is declared via External in the same table. Erik
1766 Schmauss.
1767
1768 iASL: Allow existing scope names within pathnames used in External
1769 statements. For example:
1770 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
1771 Device (ABCD)
1772
1773 iASL: IORT ACPI table: Implemented changes required to decode the new
1774 Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
1775 compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni (a] cavium.com>
1776
1777 Disassembler: Don't abort disassembly on errors from External()
1778 statements. Erik Schmauss.
1779
1780 Disassembler: fixed a possible fault when one of the Create*Field
1781 operators references a Resource Template. ACPICA Bugzilla 1396.
1782
1783 iASL: In the source code, resolved some naming inconsistences across the
1784 parsing support. Fixes confusion between "Parse Op" and "Parse Node".
1785 Adds a new file, aslparseop.c
1786
1787 ----------------------------------------
1788 31 May 2017. Summary of changes for version 20170531:
1789
1790
1791 0) ACPI 6.2 support:
1792
1793 The ACPI specification version 6.2 has been released and is available at
1794 http://uefi.org/specifications
1795
1796 This version of ACPICA fully supports the ACPI 6.2 specification. Changes
1797 are summarized below.
1798
1799 New ACPI tables (Table Compiler/Disassembler/Templates):
1800 HMAT (Heterogeneous Memory Attributes Table)
1801 WSMT (Windows SMM Security Mitigation Table)
1802 PPTT (Processor Properties Topology Table)
1803
1804 New subtables for existing ACPI tables:
1805 HEST (New subtable, Arch-deferred machine check)
1806 SRAT (New subtable, Arch-specific affinity structure)
1807 PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
1808
1809 Simple updates for existing ACPI tables:
1810 BGRT (two new flag bits)
1811 HEST (New bit defined for several subtables, GHES_ASSIST)
1812
1813 New Resource Descriptors and Resource macros (Compiler/Disassembler):
1814 PinConfig()
1815 PinFunction()
1816 PinGroup()
1817 PinGroupConfig()
1818 PinGroupFunction()
1819 New type for hardware error notification (section 18.3.2.9)
1820
1821 New predefined names/methods (Compiler/Interpreter):
1822 _HMA (Heterogeneous Memory Attributes)
1823 _LSI (Label Storage Information)
1824 _LSR (Label Storage Read)
1825 _LSW (Label Storage Write)
1826
1827 ASL grammar/macro changes (Compiler):
1828 For() ASL macro, implemented with the AML while operator
1829 Extensions to Concatenate operator
1830 Support for multiple definition blocks in same ASL file
1831 Clarification for Buffer operator
1832 Allow executable AML code underneath all scopes (Devices, etc.)
1833 Clarification/change for the _OSI return value
1834 ASL grammar update for reference operators
1835 Allow a zero-length string for AML filename in DefinitionBlock
1836
1837 Miscellaneous:
1838 New device object notification value
1839 Remove a notify value (0x0C) for graceful shutdown
1840 New UUIDs for processor/cache properties and
1841 physical package property
1842 New _HID, ACPI0014 (Wireless Power Calibration Device)
1843
1844
1845 1) ACPICA kernel-resident subsystem:
1846
1847 Added support to disable ACPI events on hardware-reduced platforms.
1848 Eliminates error messages of the form "Could not enable fixed event". Lv
1849 Zheng
1850
1851 Fixed a problem using Device/Thermal objects with the ObjectType and
1852 DerefOf ASL operators. This support had not been fully/properly
1853 implemented.
1854
1855 Fixed a problem where if a Buffer object containing a resource template
1856 was longer than the actual resource template, an error was generated --
1857 even though the AML is legal. This case has been seen in the field.
1858
1859 Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
1860 The values for DUAL_PIC and MULTIPLE_APIC were reversed.
1861
1862 Added header file changes for the TPM2 ACPI table. Update to new version
1863 of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
1864
1865 Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
1866 These interfaces are intended to be used only in conjunction with the
1867 predefined _DLM method (Device Lock Method). "This object appears in a
1868 device scope when AML access to the device must be synchronized with the
1869 OS environment".
1870
1871 Example Code and Data Size: These are the sizes for the OS-independent
1872 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1873 debug version of the code includes the debug output trace mechanism and
1874 has a much larger code and data size.
1875
1876 Current Release:
1877 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
1878 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total
1879 Previous Release:
1880 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1881 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total
1882
1883
1884 2) iASL Compiler/Disassembler and Tools:
1885
1886 iASL: Fixed a problem where an External() declaration could not refer to
1887 a Field Unit. Erik Schmauss.
1888
1889 Disassembler: Improved support for the Switch/Case operators. This
1890 feature will disassemble AML code back to the original Switch operators
1891 when possible, instead of an If..Else sequence. David Box
1892
1893 iASL and disassembler: Improved the handling of multiple extraneous
1894 parentheses for both ASL input and disassembled ASL output.
1895
1896 Improved the behavior of the iASL compiler and disassembler to detect
1897 improper use of external declarations
1898
1899 Disassembler: Now aborts immediately upon detection of an unknown AML
1900 opcode. The AML parser has no real way to recover from this, and can
1901 result in the creation of an ill-formed parse tree that causes errors
1902 later during the disassembly.
1903
1904 All tools: Fixed a problem where the Unix application OSL did not handle
1905 control-c correctly. For example, a control-c could incorrectly wake the
1906 debugger.
1907
1908 AcpiExec: Improved the Control-C handling and added a handler for
1909 segmentation faults (SIGSEGV). Supports both Windows and Unix-like
1910 environments.
1911
1912 Reduced the verbosity of the generic unix makefiles. Previously, each
1913 compilation displayed the full set of compiler options. This has been
1914 eliminated as the options are easily inspected within the makefiles. Each
1915 compilation now results in a single line of output.
1916
1917 ----------------------------------------
1918 03 March 2017. Summary of changes for version 20170303:
1919
1920
1921 0) ACPICA licensing:
1922
1923 The licensing information at the start of each source code module has
1924 been updated. In addition to the Intel license, the dual GPLv2/BSD
1925 license has been added for completeness. Now, a single version of the
1926 source code should be suitable for all ACPICA customers. This is the
1927 major change for this release since it affects all source code modules.
1928
1929
1930 1) ACPICA kernel-resident subsystem:
1931
1932 Fixed two issues with the common asltypes.h header that could cause
1933 problems in some environments: (Kim Jung-uk)
1934 Removed typedef for YY_BUFFER_STATE ?
1935 Fixes an error with earlier versions of Flex.
1936 Removed use of FILE typedef (which is only defined in stdio.h)
1937
1938
1939 2) iASL Compiler/Disassembler and Tools:
1940
1941 Disassembler: fixed a regression introduced in 20170224. A fix for a
1942 memory leak related to resource descriptor tags (names) could fault when
1943 the disassembler was generated with 64-bit compilers.
1944
1945 The ASLTS test suite has been updated to implement a new testing
1946 architecture. During generation of the suite from ASL source, both the
1947 ASL and ASL+ compilers are now validated, as well as the disassembler
1948 itself (Erik Schmauss). The architecture executes as follows:
1949
1950 For every ASL source module:
1951 Compile (legacy ASL compilation)
1952 Disassemble the resulting AML to ASL+ source code
1953 Compile the new ASL+ module
1954 Perform a binary compare on the legacy AML and the new ASL+ AML
1955 The ASLTS suite then executes normally using the AML binaries.
1956
1957 ----------------------------------------
1958 24 February 2017. Summary of changes for version 20170224:
1959
1960
1961 1) ACPICA kernel-resident subsystem:
1962
1963 Interpreter: Fixed two issues with the control method return value auto-
1964 repair feature, where an attempt to double-delete an internal object
1965 could result in an ACPICA warning (for _CID repair and others). No fault
1966 occurs, however, because the attempted deletion (actually a release to an
1967 internal cache) is detected and ignored via object poisoning.
1968
1969 Debugger: Fixed an AML interpreter mutex issue during the single stepping
1970 of control methods. If certain debugger commands are executed during
1971 stepping, a mutex acquire/release error could occur. Lv Zheng.
1972
1973 Fixed some issues generating ACPICA with the Intel C compiler by
1974 restoring the original behavior and compiler-specific include file in
1975 acenv.h. Lv Zheng.
1976
1977 Example Code and Data Size: These are the sizes for the OS-independent
1978 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1979 debug version of the code includes the debug output trace mechanism and
1980 has a much larger code and data size.
1981
1982 Current Release:
1983 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1984 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total
1985 Previous Release:
1986 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1987 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
1988
1989
1990 2) iASL Compiler/Disassembler and Tools:
1991
1992 iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
1993 tool has been designed, implemented, and included in this release. The
1994 key feature of this utility is that the original comments within the
1995 input ASL file are preserved during the conversion process, and included
1996 within the converted ASL+ file -- thus creating a transparent conversion
1997 of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
1998
1999 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with
2000 converted code
2001
2002 iASL/Disassembler: Improved the detection and correct disassembly of
2003 Switch/Case operators. This feature detects sequences of if/elseif/else
2004 operators that originated from ASL Switch/Case/Default operators and
2005 emits the original operators. David Box.
2006
2007 iASL: Improved the IORT ACPI table support in the following areas. Lv
2008 Zheng:
2009 Clear MappingOffset if the MappingCount is zero.
2010 Fix the disassembly of the SMMU GSU interrupt offset.
2011 Update the template file for the IORT table.
2012
2013 Disassembler: Enhanced the detection and disassembly of resource
2014 template/descriptor within a Buffer object. An EndTag descriptor is now
2015 required to have a zero second byte, since all known ASL compilers emit
2016 this. This helps eliminate incorrect decisions when a buffer is
2017 disassembled (false positives on resource templates).
2018
2019 ----------------------------------------
2020 19 January 2017. Summary of changes for version 20170119:
2021
2022
2023 1) General ACPICA software:
2024
2025 Entire source code base: Added the 2017 copyright to all source code
2026 legal/licensing module headers and utility/tool signons. This includes
2027 the standard Linux dual-license header. This affects virtually every file
2028 in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
2029 the ACPICA test suite.
2030
2031
2032 2) iASL Compiler/Disassembler and Tools:
2033
2034 iASL: Removed/fixed an inadvertent remark when a method argument
2035 containing a reference is used as a target operand within the method (and
2036 never used as a simple argument), as in the example below. Jeffrey Hugo.
2037
2038 dsdt.asl 1507: Store(0x1, Arg0)
2039 Remark 2146 - ^ Method Argument is never used (Arg0)
2040
2041 All tools: Removed the bit width of the compiler that generated the tool
2042 from the common signon for all user space tools. This proved to be
2043 confusing and unnecessary. This includes similar removal of HARDWARE_NAME
2044 from the generic makefiles (Thomas Petazzoni). Example below.
2045
2046 Old:
2047 ASL+ Optimizing Compiler version 20170119-32
2048 ASL+ Optimizing Compiler version 20170119-64
2049
2050 New:
2051 ASL+ Optimizing Compiler version 20170119
2052
2053 ----------------------------------------
2054 22 December 2016. Summary of changes for version 20161222:
2055
2056
2057 1) ACPICA kernel-resident subsystem:
2058
2059 AML Debugger: Implemented a new mechanism to simplify and enhance
2060 debugger integration into all environments, including kernel debuggers
2061 and user-space utilities, as well as remote debug services. This
2062 mechanism essentially consists of new OSL interfaces to support debugger
2063 initialization/termination, as well as wait/notify interfaces to perform
2064 the debugger handshake with the host. Lv Zheng.
2065
2066 New OSL interfaces:
2067 AcpiOsInitializeDebugger (void)
2068 AcpiOsTerminateDebugger (void)
2069 AcpiOsWaitCommandReady (void)
2070 AcpiOsNotifyCommandComplete (void)
2071
2072 New OS services layer:
2073 osgendbg.c -- Example implementation, and used for AcpiExec
2074
2075 Update for Generic Address Space (GAS) support: Although the AccessWidth
2076 and/or BitOffset fields of the GAS are not often used, this change now
2077 fully supports these fields. This affects the internal support for FADT
2078 registers, registers in other ACPI data tables, and the AcpiRead and
2079 AcpiWrite public interfaces. Lv Zheng.
2080
2081 Sleep support: In order to simplify integration of ACPI sleep for the
2082 various host operating systems, a new OSL interface has been introduced.
2083 AcpiOsEnterSleep allows the host to perform any required operations
2084 before the final write to the sleep control register(s) is performed by
2085 ACPICA. Lv Zheng.
2086
2087 New OSL interface:
2088 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
2089
2090 Called from these internal interfaces:
2091 AcpiHwLegacySleep
2092 AcpiHwExtendedSleep
2093
2094 EFI support: Added a very small EFI/ACPICA example application. Provides
2095 a simple demo for EFI integration, as well as assisting with resolution
2096 of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
2097
2098 source/tools/efihello/efihello.c
2099
2100 Local C library: Implemented several new functions to enhance ACPICA
2101 portability, for environments where these clib functions are not
2102 available (such as EFI). Lv Zheng:
2103 putchar
2104 getchar
2105 strpbrk
2106 strtok
2107 memmove
2108
2109 Fixed a regression where occasionally a valid resource descriptor was
2110 incorrectly detected as invalid at runtime, and a
2111 AE_AML_NO_RESOURCE_END_TAG was returned.
2112
2113 Fixed a problem with the recently implemented support that enables
2114 control method invocations as Target operands to many ASL operators.
2115 Warnings of this form: "Needed type [Reference], found [Processor]" were
2116 seen at runtime for some method invocations.
2117
2118 Example Code and Data Size: These are the sizes for the OS-independent
2119 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2120 debug version of the code includes the debug output trace mechanism and
2121 has a much larger code and data size.
2122
2123 Current Release:
2124 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
2125 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total
2126 Previous Release:
2127 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2128 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total
2129
2130
2131 2) iASL Compiler/Disassembler and Tools:
2132
2133 Disassembler: Enhanced output by adding the capability to detect and
2134 disassemble ASL Switch/Case statements back to the original ASL source
2135 code instead of if/else blocks. David Box.
2136
2137 AcpiHelp: Split a large file into separate files based upon
2138 functionality/purpose. New files are:
2139 ahaml.c
2140 ahasl.c
2141
2142 ----------------------------------------
2143 17 November 2016. Summary of changes for version 20161117:
2144
2145
2146 1) ACPICA kernel-resident subsystem:
2147
2148 Table Manager: Fixed a regression introduced in 20160729, "FADT support
2149 cleanup". This was an attempt to remove all references in the source to
2150 the FADT version 2, which never was a legal version number. It was
2151 skipped because it was an early version of 64-bit support that was
2152 eventually abandoned for the current 64-bit support.
2153
2154 Interpreter: Fixed a problem where runtime implicit conversion was
2155 incorrectly disabled for the ASL operators below. This brings the
2156 behavior into compliance with the ACPI specification:
2157 FromBCD
2158 ToBCD
2159 ToDecimalString
2160 ToHexString
2161 ToInteger
2162 ToBuffer
2163
2164 Table Manager: Added a new public interface, AcpiPutTable, used to
2165 release and free an ACPI table returned by AcpiGetTable and related
2166 interfaces. Lv Zheng.
2167
2168 Example Code and Data Size: These are the sizes for the OS-independent
2169 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2170 debug version of the code includes the debug output trace mechanism and
2171 has a much larger code and data size.
2172
2173 Current Release:
2174 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2175 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total
2176 Previous Release:
2177 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2178 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total
2179
2180
2181 2) iASL Compiler/Disassembler and Tools:
2182
2183 Disassembler: Fixed a regression for disassembly of Resource Template.
2184 Detection of templates in the AML stream missed some types of templates.
2185
2186 iASL: Fixed a problem where an Access Size error was returned for the PCC
2187 address space when the AccessSize of the GAS register is greater than a
2188 DWORD. Hoan Tran.
2189
2190 iASL: Implemented several grammar changes for the operators below. These
2191 changes are slated for the next version of the ACPI specification:
2192 RefOf - Disallow method invocation as an operand
2193 CondRefOf - Disallow method invocation as an operand
2194 DerefOf - Disallow operands that use the result from operators
2195 that
2196 do not return a reference (Changed TermArg to
2197 SuperName).
2198
2199 iASL: Control method invocations are now allowed for Target operands, as
2200 per the ACPI specification. Removed error for using a control method
2201 invocation as a Target operand.
2202
2203 Disassembler: Improved detection of Resource Templates, Unicode, and
2204 Strings within Buffer objects. These subtypes do not contain a specific
2205 opcode to indicate the originating ASL code, and they must be detected by
2206 other means within the disassembler.
2207
2208 iASL: Implemented an optimization improvement for 32-bit ACPI tables
2209 (DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
2210 only after 64-bit to 32-bit truncation. A truncation warning message is
2211 still emitted, however.
2212
2213 AcpiXtract: Implemented handling for both types of line terminators (LF
2214 or CR/LF) so that it can accept AcpiDump output files from any system.
2215 Peter Wu.
2216
2217 AcpiBin: Added two new options for comparing AML files:
2218 -a: compare and display ALL mismatches
2219 -o: start compare at this offset into the second file
2220
2221 ----------------------------------------
2222 30 September 2016. Summary of changes for version 20160930:
2223
2224
2225 1) ACPICA kernel-resident subsystem:
2226
2227 Fixed a regression in the internal AcpiTbFindTable function where a non
2228 AE_OK exception could inadvertently be returned even if the function did
2229 not fail. This problem affects the following operators:
2230 DataTableRegion
2231 LoadTable
2232
2233 Fixed a regression in the LoadTable operator where a load to any
2234 namespace location other than the root no longer worked properly.
2235
2236 Increased the maximum loop count value that will result in the
2237 AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
2238 prevent infinite loops within the AML interpreter and thus the host OS
2239 kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
2240 1,048,575).
2241
2242 Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
2243 acpixf.h file. This allows hosts to easily configure the maximum loop
2244 count at runtime.
2245
2246 Removed an illegal character in the strtoul64.c file. This character
2247 caused errors with some C compilers.
2248
2249 Example Code and Data Size: These are the sizes for the OS-independent
2250 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2251 debug version of the code includes the debug output trace mechanism and
2252 has a much larger code and data size.
2253
2254 Current Release:
2255 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2256 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total
2257 Previous Release:
2258 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
2259 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total
2260
2261
2262 2) iASL Compiler/Disassembler and Tools:
2263
2264 Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
2265 the simpler ASL ElseIf keyword. During the conversion, a trailing If
2266 block could be lost and missing from the disassembled output.
2267
2268 iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
2269 the missing rule caused a parse error when using the Index operator as an
2270 operand to ObjectType. This construct now compiles properly. Example:
2271 ObjectType(PKG1[4]).
2272
2273 iASL: Correctly handle unresolved symbols in the hardware map file (-lm
2274 option). Previously, unresolved symbols could cause a protection fault.
2275 Such symbols are now marked as unresolved in the map file.
2276
2277 iASL: Implemented support to allow control method invocations as an
2278 operand to the ASL DeRefOf operator. Example:
2279 DeRefOf(MTH1(Local0))
2280
2281 Disassembler: Improved support for the ToPLD ASL macro. Detection of a
2282 possible _PLD buffer now includes examination of both the normal buffer
2283 length (16 or 20) as well as the surrounding AML package length.
2284
2285 Disassembler: Fixed a problem with the decoding of complex expressions
2286 within the Divide operator for ASL+. For the case where both the quotient
2287 and remainder targets are specified, the entire statement cannot be
2288 disassembled. Previously, the output incorrectly contained a mix of ASL-
2289 and ASL+ operators. This mixed statement causes a syntax error when
2290 compiled. Example:
2291 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly
2292 disassembled to:
2293 Divide (INT1 + 6, 128, RSLT, QUOT)
2294
2295 iASL/Tools: Added support to process AML and non-AML ACPI tables
2296 consistently. For the disassembler and AcpiExec, allow all types of ACPI
2297 tables (AML and data tables). For the iASL -e option, allow only AML
2298 tables (DSDT/SSDT).
2299
2300 ----------------------------------------
2301 31 August 2016. Summary of changes for version 20160831:
2302
2303
2304 1) ACPICA kernel-resident subsystem:
2305
2306 Improve support for the so-called "module-level code", which is defined
2307 to be math, logical and control AML opcodes that appear outside of any
2308 control method. This change improves the support by adding more opcodes
2309 that can be executed in the manner. Some other issues have been solved,
2310 and the ASL grammar changes to support such code under all scope
2311 operators (Device, etc.) are complete. Lv Zheng.
2312
2313 UEFI support: these OSL functions have been implemented. This is an
2314 additional step toward supporting the AcpiExec utility natively (with
2315 full hardware access) under UEFI. Marcelo Ferreira.
2316 AcpiOsReadPciConfiguration
2317 AcpiOsWritePciConfiguration
2318
2319 Fixed a possible mutex error during control method auto-serialization. Lv
2320 Zheng.
2321
2322 Updated support for the Generic Address Structure by fully implementing
2323 all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
2324 Zheng.
2325
2326 Updated the return value for the internal _OSI method. Instead of
2327 0xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
2328 for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
2329 implementations, and will be reflected and clarified in the next version
2330 of the ACPI specification.
2331
2332 Implemented two new table events that can be passed to an ACPICA table
2333 handler. These events are used to indicate a table installation or
2334 uninstallation. These events are used in addition to existed table load
2335 and unload events. Lv Zheng.
2336
2337 Implemented a cleanup for all internal string-to-integer conversions.
2338 Consolidate multiple versions of this functionality and limit possible
2339 bases to either 10 or 16 to simplify the code. Adds a new file,
2340 utstrtoul64.
2341
2342 Cleanup the inclusion order of the various compiler-specific headers.
2343 This simplifies build configuration management. The compiler-specific
2344 headers are now split out from the host-specific headers. Lv Zheng.
2345
2346 Example Code and Data Size: These are the sizes for the OS-independent
2347 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2348 debug version of the code includes the debug output trace mechanism and
2349 has a much larger code and data size.
2350
2351 Current Release:
2352 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
2353 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total
2354
2355
2356 2) iASL Compiler/Disassembler and Tools:
2357
2358 iASL/AcpiExec: Added a command line option to display the build date/time
2359 of the tool (-vd). This can be useful to verify that the correct version
2360 of the tools are being used.
2361
2362 AML Debugger: Implemented a new subcommand ("execute predef") to execute
2363 all predefined control methods and names within the current namespace.
2364 This can be useful for debugging problems with ACPI tables and the ACPI
2365 namespace.
2366
2367 ----------------------------------------
2368 29 July 2016. Summary of changes for version 20160729:
2369
2370
2371 1) ACPICA kernel-resident subsystem:
2372
2373 Implemented basic UEFI support for the various ACPICA tools. This
2374 includes:
2375 1) An OSL to implement the various AcpiOs* interfaces on UEFI.
2376 2) Support to obtain the ACPI tables on UEFI.
2377 3) Local implementation of required C library functions not available on
2378 UEFI.
2379 4) A front-end (main) function for the tools for UEFI-related
2380 initialization.
2381
2382 The initial deployment of this support is the AcpiDump utility executing
2383 as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
2384 Current environments supported are Linux/Unix. MSVC generation is not
2385 supported at this time. See the generate/efi/README file for build
2386 instructions. Lv Zheng.
2387
2388 Future plans include porting the AcpiExec utility to execute natively on
2389 the platform with I/O and memory access. This will allow viewing/dump of
2390 the platform namespace and native execution of ACPI control methods that
2391 access the actual hardware. To fully implement this support, the OSL
2392 functions below must be implemented with UEFI interfaces. Any community
2393 help in the implementation of these functions would be appreciated:
2394 AcpiOsReadPort
2395 AcpiOsWritePort
2396 AcpiOsReadMemory
2397 AcpiOsWriteMemory
2398 AcpiOsReadPciConfiguration
2399 AcpiOsWritePciConfiguration
2400
2401 Restructured and standardized the C library configuration for ACPICA,
2402 resulting in the various configuration options below. This includes a
2403 global restructuring of the compiler-dependent and platform-dependent
2404 include files. These changes may affect the existing platform-dependent
2405 configuration files on some hosts. Lv Zheng.
2406
2407 The current C library configuration options appear below. For any issues,
2408 it may be helpful to examine the existing compiler-dependent and
2409 platform-dependent files as examples. Lv Zheng.
2410
2411 1) Linux kernel:
2412 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2413 library.
2414 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
2415 2) Unix/Windows/BSD applications:
2416 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
2417 library.
2418 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
2419 3) UEFI applications:
2420 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2421 library.
2422 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
2423 4) UEFI applications (EDK2/StdLib):
2424 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
2425 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
2426
2427
2428 AML interpreter: "module-level code" support. Allows for execution of so-
2429 called "executable" AML code (math/logical operations, etc.) outside of
2430 control methods not just at the module level (top level) but also within
2431 any scope declared outside of a control method - Scope{}, Device{},
2432 Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
2433
2434 Simplified the configuration of the "maximum AML loops" global option by
2435 adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
2436 modified at runtime.
2437
2438
2439 Example Code and Data Size: These are the sizes for the OS-independent
2440 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2441 debug version of the code includes the debug output trace mechanism and
2442 has a much larger code and data size.
2443
2444 Current Release:
2445 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
2446 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total
2447
2448
2449 2) iASL Compiler/Disassembler and Tools:
2450
2451 iASL: Add full support for the RASF ACPI table (RAS Features Table).
2452 Includes disassembler, data table compiler, and header support.
2453
2454 iASL Expand "module-level code" support. Allows for
2455 compilation/disassembly of so-called "executable" AML code (math/logical
2456 operations, etc.) outside of control methods not just at the module level
2457 (top level) but also within any scope declared outside of a control
2458 method - Scope{}, Device{}, Processor{}, PowerResource{}, and
2459 ThermalZone{}.
2460
2461 AcpiDump: Added support for dumping all SSDTs on newer versions of
2462 Windows. These tables are now easily available -- SSDTs are not available
2463 through the registry on older versions.
2464
2465 ----------------------------------------
2466 27 May 2016. Summary of changes for version 20160527:
2467
2468
2469 1) ACPICA kernel-resident subsystem:
2470
2471 Temporarily reverted the new arbitrary bit length/alignment support in
2472 AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
2473 a number of regressions with the new code that need to be fully resolved
2474 and tested before this support can be finally integrated into ACPICA.
2475 Apologies for any inconveniences these issues may have caused.
2476
2477 The ACPI message macros are not configurable (ACPI_MSG_ERROR,
2478 ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
2479 and ACPI_MSG_BIOS_WARNING). Lv Zheng.
2480
2481 Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
2482 option. Adds a new return macro, return_STR. Junk-uk Kim.
2483
2484 Example Code and Data Size: These are the sizes for the OS-independent
2485 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2486 debug version of the code includes the debug output trace mechanism and
2487 has a much larger code and data size.
2488
2489 Current Release:
2490 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
2491 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
2492 Previous Release:
2493 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2494 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total
2495
2496 ----------------------------------------
2497 22 April 2016. Summary of changes for version 20160422:
2498
2499 1) ACPICA kernel-resident subsystem:
2500
2501 Fixed a regression in the GAS (generic address structure) arbitrary bit
2502 support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
2503 and incorrect return values. Lv Zheng. ACPICA BZ 1270.
2504
2505 ACPI 6.0: Added support for new/renamed resource macros. One new argument
2506 was added to each of these macros, and the original name has been
2507 deprecated. The AML disassembler will always disassemble to the new
2508 names. Support for the new macros was added to iASL, disassembler,
2509 resource manager, and the acpihelp utility. ACPICA BZ 1274.
2510
2511 I2cSerialBus -> I2cSerialBusV2
2512 SpiSerialBus -> SpiSerialBusV2
2513 UartSerialBus -> UartSerialBusV2
2514
2515 ACPI 6.0: Added support for a new integer field that was appended to the
2516 package object returned by the _BIX method. This adds iASL compile-time
2517 and AML runtime error checking. ACPICA BZ 1273.
2518
2519 ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
2520 Subspace Type2" (Headers, Disassembler, and data table compiler).
2521
2522 Example Code and Data Size: These are the sizes for the OS-independent
2523 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2524 debug version of the code includes the debug output trace mechanism and
2525 has a much larger code and data size.
2526
2527 Current Release:
2528 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2529 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
2530 Previous Release:
2531 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2532 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total
2533
2534
2535 2) iASL Compiler/Disassembler and Tools:
2536
2537 iASL: Implemented an ASL grammar extension to allow/enable executable
2538 "module-level code" to be created and executed under the various
2539 operators that create new scopes. This type of AML code is already
2540 supported in all known AML interpreters, and the grammar change will
2541 appear in the next version of the ACPI specification. Simplifies the
2542 conditional runtime creation of named objects under these object types:
2543
2544 Device
2545 PowerResource
2546 Processor
2547 Scope
2548 ThermalZone
2549
2550 iASL: Implemented a new ASL extension, a "For" loop macro to add greater
2551 ease-of-use to the ASL language. The syntax is similar to the
2552 corresponding C operator, and is implemented with the existing AML While
2553 opcode -- thus requiring no changes to existing AML interpreters.
2554
2555 For (Initialize, Predicate, Update) {TermList}
2556
2557 Grammar:
2558 ForTerm :=
2559 For (
2560 Initializer // Nothing | TermArg => ComputationalData
2561 Predicate // Nothing | TermArg => ComputationalData
2562 Update // Nothing | TermArg => ComputationalData
2563 ) {TermList}
2564
2565
2566 iASL: The _HID/_ADR detection and validation has been enhanced to search
2567 under conditionals in order to allow these objects to be conditionally
2568 created at runtime.
2569
2570 iASL: Fixed several issues with the constant folding feature. The
2571 improvement allows better detection and resolution of statements that can
2572 be folded at compile time. ACPICA BZ 1266.
2573
2574 iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
2575 conversion to the ASL ElseIf operator where incorrect ASL code could be
2576 generated.
2577
2578 iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
2579 sometimes an extra (and extraneous) set of parentheses were emitted for
2580 some combinations of operators. Although this did not cause any problems
2581 with recompilation of the disassembled code, it made the code more
2582 difficult to read. David Box. ACPICA BZ 1231.
2583
2584 iASL: Changed to ignore the unreferenced detection for predefined names
2585 of resource descriptor elements, when the resource descriptor is
2586 created/defined within a control method.
2587
2588 iASL: Disassembler: Fix a possible fault with externally declared Buffer
2589 objects.
2590
2591 ----------------------------------------
2592 18 March 2016. Summary of changes for version 20160318:
2593
2594 1) ACPICA kernel-resident subsystem:
2595
2596 Added support for arbitrary bit lengths and bit offsets for registers
2597 defined by the Generic Address Structure. Previously, only aligned bit
2598 lengths of 8/16/32/64 were supported. This was sufficient for many years,
2599 but recently some machines have been seen that require arbitrary bit-
2600 level support. ACPICA BZ 1240. Lv Zheng.
2601
2602 Fixed an issue where the \_SB._INI method sometimes must be evaluated
2603 before any _REG methods are evaluated. Lv Zheng.
2604
2605 Implemented several changes related to ACPI table support
2606 (Headers/Disassembler/TableCompiler):
2607 NFIT: For ACPI 6.1, updated to add some additional new fields and
2608 constants.
2609 FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
2610 6).
2611 DMAR: Added new constants per the 10/2014 DMAR spec.
2612 IORT: Added new subtable per the 10/2015 IORT spec.
2613 HEST: For ACPI 6.1, added new constants and new subtable.
2614 DBG2: Added new constants per the 12/2015 DBG2 spec.
2615 FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
2616 ACPICA BZ 1249.
2617 ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
2618
2619 Updated header support for the DMAR table to match the current version of
2620 the related spec.
2621
2622 Added extensions to the ASL Concatenate operator to allow any ACPI object
2623 to be passed as an operand. Any object other than Integer/String/Buffer
2624 simply returns a string containing the object type. This extends the
2625 usefulness of the Printf macros. Previously, Concatenate would abort the
2626 control method if a non-data object was encountered.
2627
2628 ACPICA source code: Deployed the C "const" keyword across the source code
2629 where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
2630
2631 Example Code and Data Size: These are the sizes for the OS-independent
2632 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2633 debug version of the code includes the debug output trace mechanism and
2634 has a much larger code and data size.
2635
2636 Current Release:
2637 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2638 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total
2639 Previous Release:
2640 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2641 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total
2642
2643
2644 2) iASL Compiler/Disassembler and Tools:
2645
2646 iASL/Disassembler: Improved the heuristic used to determine the number of
2647 arguments for an externally defined control method (a method in another
2648 table). Although this is an improvement, there is no deterministic way to
2649 "guess" the number of method arguments. Only the ACPI 6.0 External opcode
2650 will completely solve this problem as it is deployed (automatically) in
2651 newer BIOS code.
2652
2653 iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
2654 statements that could cause errors when the disassembled file is
2655 compiled. ACPICA BZ 1243. David Box.
2656
2657 iASL: Fixed a regression caused by the merger of the two versions of the
2658 local strtoul64. Because of a dependency on a global variable, strtoul64
2659 could return an error for integers greater than a 32-bit value. ACPICA BZ
2660 1260.
2661
2662 iASL: Fixed a regression where a fault could occur for an ASL Return
2663 statement if it invokes a control method that is not resolved. ACPICA BZ
2664 1264.
2665
2666 AcpiXtract: Improved input file validation: detection of binary files and
2667 non-acpidump text files.
2668
2669 ----------------------------------------
2670 12 February 2016. Summary of changes for version 20160212:
2671
2672 1) ACPICA kernel-resident subsystem:
2673
2674 Implemented full support for the ACPI 6.1 specification (released in
2675 January). This version of the specification is available at:
2676 http://www.uefi.org/specifications
2677
2678 Only a relatively small number of changes were required in ACPICA to
2679 support ACPI 6.1, in these areas:
2680 - New predefined names
2681 - New _HID values
2682 - A new subtable for HEST
2683 - A few other header changes for new values
2684
2685 Ensure \_SB_._INI is executed before any _REG methods are executed. There
2686 appears to be existing BIOS code that relies on this behavior. Lv Zheng.
2687
2688 Reverted a change made in version 20151218 which enabled method
2689 invocations to be targets of various ASL operators (SuperName and Target
2690 grammar elements). While the new behavior is supported by the ACPI
2691 specification, other AML interpreters do not support this behavior and
2692 never will. The ACPI specification will be updated for ACPI 6.2 to remove
2693 this support. Therefore, the change was reverted to the original ACPICA
2694 behavior.
2695
2696 ACPICA now supports the GCC 6 compiler.
2697
2698 Current Release: (Note: build changes increased sizes)
2699 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2700 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total
2701 Previous Release:
2702 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2703 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total
2704
2705
2706 2) iASL Compiler/Disassembler and Tools:
2707
2708 Completed full support for the ACPI 6.0 External() AML opcode. The
2709 compiler emits an external AML opcode for each ASL External statement.
2710 This opcode is used by the disassembler to assist with the disassembly of
2711 external control methods by specifying the required number of arguments
2712 for the method. AML interpreters do not use this opcode. To ensure that
2713 interpreters do not even see the opcode, a block of one or more external
2714 opcodes is surrounded by an "If(0)" construct. As this feature becomes
2715 commonly deployed in BIOS code, the ability of disassemblers to correctly
2716 disassemble AML code will be greatly improved. David Box.
2717
2718 iASL: Implemented support for an optional cross-reference output file.
2719 The -lx option will create a the cross-reference file with the suffix
2720 "xrf". Three different types of cross-reference are created in this file:
2721 - List of object references made from within each control method
2722 - Invocation (caller) list for each user-defined control method
2723 - List of references to each non-method object in the namespace
2724
2725 iASL: Method invocations as ASL Target operands are now disallowed and
2726 flagged as errors in preparation for ACPI 6.2 (see the description of the
2727 problem above).
2728
2729 ----------------------------------------
2730 8 January 2016. Summary of changes for version 20160108:
2731
2732 1) ACPICA kernel-resident subsystem:
2733
2734 Updated all ACPICA copyrights and signons to 2016: Added the 2016
2735 copyright to all source code module headers and utility/tool signons.
2736 This includes the standard Linux dual-license header. This affects
2737 virtually every file in the ACPICA core subsystem, iASL compiler, all
2738 ACPICA utilities, and the ACPICA test suite.
2739
2740 Fixed a regression introduced in version 20151218 concerning the
2741 execution of so-called module-level ASL/AML code. Namespace objects
2742 created under a module-level If() construct were not properly/fully
2743 entered into the namespace and could cause an interpreter fault when
2744 accessed.
2745
2746 Example Code and Data Size: These are the sizes for the OS-independent
2747 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2748 debug version of the code includes the debug output trace mechanism and
2749 has a much larger code and data size.
2750
2751 Current Release:
2752 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2753 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total
2754 Previous Release:
2755 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2756 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total
2757
2758
2759 2) iASL Compiler/Disassembler and Tools:
2760
2761 Fixed a problem with the compilation of the GpioIo and GpioInt resource
2762 descriptors. The _PIN field name was incorrectly defined to be an array
2763 of 32-bit values, but the _PIN values are in fact 16 bits each. This
2764 would cause incorrect bit width warnings when using Word (16-bit) fields
2765 to access the descriptors.
2766
2767
2768 ----------------------------------------
2769 18 December 2015. Summary of changes for version 20151218:
2770
2771 1) ACPICA kernel-resident subsystem:
2772
2773 Implemented per-AML-table execution of "module-level code" as individual
2774 ACPI tables are loaded into the namespace during ACPICA initialization.
2775 In other words, any module-level code within an AML table is executed
2776 immediately after the table is loaded, instead of batched and executed
2777 after all of the tables have been loaded. This provides compatibility
2778 with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
2779 David Box.
2780
2781 To fully support the feature above, the default operation region handlers
2782 for the SystemMemory, SystemIO, and PCI_Config address spaces are now
2783 installed before any ACPI tables are loaded. This enables module-level
2784 code to access these address spaces during the table load and module-
2785 level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
2786 Box.
2787
2788 Implemented several changes to the internal _REG support in conjunction
2789 with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
2790 utilities for the changes above. Although these tools were changed, host
2791 operating systems that simply use the default handlers for SystemMemory,
2792 SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
2793
2794 For example, in the code below, DEV1 is conditionally added to the
2795 namespace by the DSDT via module-level code that accesses an operation
2796 region. The SSDT references DEV1 via the Scope operator. DEV1 must be
2797 created immediately after the DSDT is loaded in order for the SSDT to
2798 successfully reference DEV1. Previously, this code would cause an
2799 AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
2800 fully supported by ACPICA.
2801
2802 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
2803 {
2804 OperationRegion (OPR1, SystemMemory, 0x400, 32)
2805 Field (OPR1, AnyAcc, NoLock, Preserve)
2806 {
2807 FLD1, 1
2808 }
2809 If (FLD1)
2810 {
2811 Device (\DEV1)
2812 {
2813 }
2814 }
2815 }
2816 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
2817 {
2818 External (\DEV1, DeviceObj)
2819 Scope (\DEV1)
2820 {
2821 }
2822 }
2823
2824 Fixed an AML interpreter problem where control method invocations were
2825 not handled correctly when the invocation was itself a SuperName argument
2826 to another ASL operator. In these cases, the method was not invoked.
2827 ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
2828 argument:
2829 Store
2830 Acquire, Wait
2831 CondRefOf, RefOf
2832 Decrement, Increment
2833 Load, Unload
2834 Notify
2835 Signal, Release, Reset
2836 SizeOf
2837
2838 Implemented automatic String-to-ObjectReference conversion support for
2839 packages returned by predefined names (such as _DEP). A common BIOS error
2840 is to add double quotes around an ObjectReference namepath, which turns
2841 the reference into an unexpected string object. This support detects the
2842 problem and corrects it before the package is returned to the caller that
2843 invoked the method. Lv Zheng.
2844
2845 Implemented extensions to the Concatenate operator. Concatenate now
2846 accepts any type of object, it is not restricted to simply
2847 Integer/String/Buffer. For objects other than these 3 basic data types,
2848 the argument is treated as a string containing the name of the object
2849 type. This expands the utility of Concatenate and the Printf/Fprintf
2850 macros. ACPICA BZ 1222.
2851
2852 Cleaned up the output of the ASL Debug object. The timer() value is now
2853 optional and no longer emitted by default. Also, the basic data types of
2854 Integer/String/Buffer are simply emitted as their values, without a data
2855 type string -- since the data type is obvious from the output. ACPICA BZ
2856 1221.
2857
2858 Example Code and Data Size: These are the sizes for the OS-independent
2859 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2860 debug version of the code includes the debug output trace mechanism and
2861 has a much larger code and data size.
2862
2863 Current Release:
2864 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2865 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total
2866 Previous Release:
2867 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2868 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total
2869
2870
2871 2) iASL Compiler/Disassembler and Tools:
2872
2873 iASL: Fixed some issues with the ASL Include() operator. This operator
2874 was incorrectly defined in the iASL parser rules, causing a new scope to
2875 be opened for the code within the include file. This could lead to
2876 several issues, including allowing ASL code that is technically illegal
2877 and not supported by AML interpreters. Note, this does not affect the
2878 related #include preprocessor operator. ACPICA BZ 1212.
2879
2880 iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
2881 operator is essentially an ASL macro since there is no AML opcode
2882 associated with it. The code emitted by the iASL compiler for ElseIf is
2883 an Else opcode followed immediately by an If opcode. The disassembler
2884 will now emit an ElseIf if it finds an Else immediately followed by an
2885 If. This simplifies the decoded ASL, especially for deeply nested
2886 If..Else and large Switch constructs. Thus, the disassembled code more
2887 closely follows the original source ASL. ACPICA BZ 1211. Example:
2888
2889 Old disassembly:
2890 Else
2891 {
2892 If (Arg0 == 0x02)
2893 {
2894 Local0 = 0x05
2895 }
2896 }
2897
2898 New disassembly:
2899 ElseIf (Arg0 == 0x02)
2900 {
2901 Local0 = 0x05
2902 }
2903
2904 AcpiExec: Added support for the new module level code behavior and the
2905 early region installation. This required a small change to the
2906 initialization, since AcpiExec must install its own operation region
2907 handlers.
2908
2909 AcpiExec: Added support to make the debug object timer optional. Default
2910 is timer disabled. This cleans up the debug object output -- the timer
2911 data is rarely used.
2912
2913 AcpiExec: Multiple ACPI tables are now loaded in the order that they
2914 appear on the command line. This can be important when there are
2915 interdependencies/references between the tables.
2916
2917 iASL/Templates. Add support to generate template files with multiple
2918 SSDTs within a single output file. Also added ommand line support to
2919 specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
2920 1223, 1225.
2921
2922
2923 ----------------------------------------
2924 24 November 2015. Summary of changes for version 20151124:
2925
2926 1) ACPICA kernel-resident subsystem:
2927
2928 Fixed a possible regression for a previous update to FADT handling. The
2929 FADT no longer has a fixed table ID, causing some issues with code that
2930 was hardwired to a specific ID. Lv Zheng.
2931
2932 Fixed a problem where the method auto-serialization could interfere with
2933 the current SyncLevel. This change makes the auto-serialization support
2934 transparent to the SyncLevel support and management.
2935
2936 Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
2937 interface is intended for early access to the namespace during the
2938 initial namespace device discovery walk. The _SUB method has been seen to
2939 access operation regions in some cases, causing errors because the
2940 operation regions are not fully initialized.
2941
2942 AML Debugger: Fixed some issues with the terminate/quit/exit commands
2943 that can cause faults. Lv Zheng.
2944
2945 AML Debugger: Add thread ID support so that single-step mode only applies
2946 to the AML Debugger thread. This prevents runtime errors within some
2947 kernels. Lv Zheng.
2948
2949 Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
2950 methods that are invoked by this interface are optional, removed warnings
2951 emitted for the case where one or more of these methods do not exist.
2952 ACPICA BZ 1208, original change by Prarit Bhargava.
2953
2954 Made a major pass through the entire ACPICA source code base to
2955 standardize formatting that has diverged a bit over time. There are no
2956 functional changes, but this will of course cause quite a few code
2957 differences from the previous ACPICA release.
2958
2959 Example Code and Data Size: These are the sizes for the OS-independent
2960 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2961 debug version of the code includes the debug output trace mechanism and
2962 has a much larger code and data size.
2963
2964 Current Release:
2965 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2966 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total
2967 Previous Release:
2968 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2969 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
2970
2971
2972 2) iASL Compiler/Disassembler and Tools:
2973
2974 iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
2975 definition blocks within a single ASL file and the resulting AML file.
2976 Support for this type of file was also added to the various tools that
2977 use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
2978 example code below shows two definition blocks within the same file:
2979
2980 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
2981 0x12345678)
2982 {
2983 }
2984 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
2985 {
2986 }
2987
2988 iASL: Enhanced typechecking for the Name() operator. All expressions for
2989 the value of the named object must be reduced/folded to a single constant
2990 at compile time, as per the ACPI specification (the AML definition of
2991 Name()).
2992
2993 iASL: Fixed some code indentation issues for the -ic and -ia options (C
2994 and assembly headers). Now all emitted code correctly begins in column 1.
2995
2996 iASL: Added an error message for an attempt to open a Scope() on an
2997 object defined in an SSDT. The DSDT is always loaded into the namespace
2998 first, so any attempt to open a Scope on an SSDT object will fail at
2999 runtime.
3000
3001
3002 ----------------------------------------
3003 30 September 2015. Summary of changes for version 20150930:
3004
3005 1) ACPICA kernel-resident subsystem:
3006
3007 Debugger: Implemented several changes and bug fixes to assist support for
3008 the in-kernel version of the AML debugger. Lv Zheng.
3009 - Fix the "predefined" command for in-kernel debugger.
3010 - Do not enter debug command loop for the help and version commands.
3011 - Disallow "execute" command during execution/single-step of a method.
3012
3013 Interpreter: Updated runtime typechecking for all operators that have
3014 target operands. The operand is resolved and validated that it is legal.
3015 For example, the target cannot be a non-data object such as a Device,
3016 Mutex, ThermalZone, etc., as per the ACPI specification.
3017
3018 Debugger: Fixed the double-mutex user I/O handshake to work when local
3019 deadlock detection is enabled.
3020
3021 Debugger: limited display of method locals and arguments (LocalX and
3022 ArgX) to only those that have actually been initialized. This prevents
3023 lines of extraneous output.
3024
3025 Updated the definition of the NFIT table to correct the bit polarity of
3026 one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
3027
3028 Example Code and Data Size: These are the sizes for the OS-independent
3029 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3030 debug version of the code includes the debug output trace mechanism and
3031 has a much larger code and data size.
3032
3033 Current Release:
3034 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3035 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
3036 Previous Release:
3037 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3038 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
3039
3040
3041 2) iASL Compiler/Disassembler and Tools:
3042
3043 iASL: Improved the compile-time typechecking for operands of many of the
3044 ASL operators:
3045
3046 -- Added an option to disable compiler operand/operator typechecking (-
3047 ot).
3048
3049 -- For the following operators, the TermArg operands are now validated
3050 when possible to be Integer data objects: BankField, OperationRegion,
3051 DataTableRegion, Buffer, and Package.
3052
3053 -- Store (Source, Target): Both the source and target operands are
3054 resolved and checked that the operands are both legal. For example,
3055 neither operand can be a non-data object such as a Device, Mutex,
3056 ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
3057 operator can be used to store an object to any type of target object.
3058
3059 -- Store (Source, Target): If the source is a Package object, the target
3060 must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
3061 is a Package, the source must also be a Package.
3062
3063 -- Store (Source, Target): A warning is issued if the source and target
3064 resolve to the identical named object.
3065
3066 -- Store (Source, <method invocation>): An error is generated for the
3067 target method invocation, as this construct is not supported by the AML
3068 interpreter.
3069
3070 -- For all ASL math and logic operators, the target operand must be a
3071 data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
3072 includes the function return value also.
3073
3074 -- External declarations are also included in the typechecking where
3075 possible. External objects defined using the UnknownObj keyword cannot be
3076 typechecked, however.
3077
3078 iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
3079 operator:
3080 - Legacy code: Index(PKG1, 3)
3081 - New ASL+ code: PKG1[3]
3082 This completes the ACPI 6.0 ASL+ support as it was the only operator not
3083 supported.
3084
3085 iASL: Fixed the file suffix for the preprocessor output file (.i). Two
3086 spaces were inadvertently appended to the filename, causing file access
3087 and deletion problems on some systems.
3088
3089 ASL Test Suite (ASLTS): Updated the master makefile to generate all
3090 possible compiler output files when building the test suite -- thus
3091 exercising these features of the compiler. These files are automatically
3092 deleted when the test suite exits.
3093
3094
3095 ----------------------------------------
3096 18 August 2015. Summary of changes for version 20150818:
3097
3098 1) ACPICA kernel-resident subsystem:
3099
3100 Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
3101 Zheng. ACPICA BZ 1186.
3102
3103 Completed development to ensure that the ACPICA Disassembler and Debugger
3104 are fully standalone components of ACPICA. Removed cross-component
3105 dependences. Lv Zheng.
3106
3107 The max-number-of-AML-loops is now runtime configurable (previously was
3108 compile-time only). This is essentially a loop timeout to force-abort
3109 infinite AML loops. ACPCIA BZ 1192.
3110
3111 Debugger: Cleanup output to dump ACPI names and namepaths without any
3112 trailing underscores. Lv Zheng. ACPICA BZ 1135.
3113
3114 Removed unnecessary conditional compilations across the Debugger and
3115 Disassembler components where entire modules could be left uncompiled.
3116
3117 The aapits test is deprecated and has been removed from the ACPICA git
3118 tree. The test has never been completed and has not been maintained, thus
3119 becoming rather useless. ACPICA BZ 1015, 794.
3120
3121 A batch of small changes to close bugzilla and other reports:
3122 - Remove duplicate code for _PLD processing. ACPICA BZ 1176.
3123 - Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
3124 - iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
3125 - ACPI table support: general cleanup and simplification. Lv Zheng, Bob
3126 Moore.
3127 - ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
3128 ACPICA BZ 1184.
3129 - Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
3130 operators.
3131 - Debugger: Split debugger initialization/termination interfaces. Lv
3132 Zheng.
3133 - AcpiExec: Emit OemTableId for SSDTs during the load phase for table
3134 identification.
3135 - AcpiExec: Add debug message during _REG method phase during table
3136 load/init.
3137 - AcpiNames: Fix a regression where some output was missing and no longer
3138 emitted.
3139 - Debugger: General cleanup and simplification. Lv Zheng.
3140 - Disassembler: Cleanup use of several global option variables. Lv Zheng.
3141
3142 Example Code and Data Size: These are the sizes for the OS-independent
3143 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3144 debug version of the code includes the debug output trace mechanism and
3145 has a much larger code and data size.
3146
3147 Current Release:
3148 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3149 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
3150 Previous Release:
3151 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3152 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
3153
3154
3155 2) iASL Compiler/Disassembler and Tools:
3156
3157 AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
3158 were not handled properly and caused load errors. Now, properly invoke
3159 and use the ACPICA auto-reallocate mechanism for ACPI table data
3160 structures. ACPICA BZ 1188
3161
3162 AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
3163 BZ 1190.
3164
3165 AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
3166 AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
3167 executed during initialization. ACPICA BZ 1187, 1189.
3168
3169 iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
3170 that corresponds to each disassembled ASL statement, to simplify
3171 debugging. ACPICA BZ 1191.
3172
3173 Debugger: Add option to the "objects" command to display a summary of the
3174 current namespace objects (Object type and count). This is displayed if
3175 the command is entered with no arguments.
3176
3177 AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
3178
3179
3180 ----------------------------------------
3181 17 July 2015. Summary of changes for version 20150717:
3182
3183 1) ACPICA kernel-resident subsystem:
3184
3185 Improved the partitioning between the Debugger and Disassembler
3186 components. This allows the Debugger to be used standalone within kernel
3187 code without the Disassembler (which is used for single stepping also).
3188 This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
3189
3190 Debugger: Implemented a new command to trace the execution of control
3191 methods (Trace). This is especially useful for the in-kernel version of
3192 the debugger when file I/O may not be available for method trace output.
3193 See the ACPICA reference for more information. Lv Zheng.
3194
3195 Moved all C library prototypes (used for the local versions of these
3196 functions when requested) to a new header, acclib.h
3197 Cleaned up the use of non-ANSI C library functions. These functions are
3198 implemented locally in ACPICA. Moved all such functions to a common
3199 source file, utnonansi.c
3200
3201 Debugger: Fixed a problem with the "!!" command (get last command
3202 executed) where the debugger could enter an infinite loop and eventually
3203 crash.
3204
3205 Removed the use of local macros that were used for some of the standard C
3206 library functions to automatically cast input parameters. This mostly
3207 affected the is* functions where the input parameter is defined to be an
3208 int. This required a few modifications to the main ACPICA source code to
3209 provide casting for these functions and eliminate possible compiler
3210 warnings for these parameters.
3211
3212 Across the source code, added additional status/error checking to resolve
3213 issues discovered by static source code analysis tools such as Coverity.
3214
3215 Example Code and Data Size: These are the sizes for the OS-independent
3216 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3217 debug version of the code includes the debug output trace mechanism and
3218 has a much larger code and data size.
3219
3220 Current Release:
3221 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3222 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
3223 Previous Release:
3224 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3225 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
3226
3227
3228 2) iASL Compiler/Disassembler and Tools:
3229
3230 iASL: Fixed a regression where the device map file feature no longer
3231 worked properly when used in conjunction with the disassembler. It only
3232 worked properly with the compiler itself.
3233
3234 iASL: Implemented a new warning for method LocalX variables that are set
3235 but never used (similar to a C compiler such as gcc). This also applies
3236 to ArgX variables that are not defined by the parent method, and are
3237 instead (legally) used as local variables.
3238
3239 iASL/Preprocessor: Finished the pass-through of line numbers from the
3240 preprocessor to the compiler. This ensures that compiler errors/warnings
3241 have the correct original line numbers and filenames, regardless of any
3242 #include files.
3243
3244 iASL/Preprocessor: Fixed a couple of issues with comment handling and the
3245 pass-through of comments to the preprocessor output file (which becomes
3246 the compiler input file). Also fixed a problem with // comments that
3247 appear after a math expression.
3248
3249 iASL: Added support for the TCPA server table to the table compiler and
3250 template generator. (The client table was already previously supported)
3251
3252 iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
3253 identify the iASL compiler.
3254
3255 Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
3256 multiple times. The new names are ACPI_SIGN_NEGATIVE and
3257 ACPI_SIGN_POSITIVE.
3258
3259 AcpiHelp: Update to expand help messages for the iASL preprocessor
3260 directives.
3261
3262
3263 ----------------------------------------
3264 19 June 2015. Summary of changes for version 20150619:
3265
3266 Two regressions in version 20150616 have been addressed:
3267
3268 Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
3269 etc.) This update changes ACPICA to only use the standard headers for
3270 functions, or the prototypes for the local versions of the C library
3271 functions. Across the source code, this required some additional casts
3272 for some Clib invocations for portability. Moved all local prototypes to
3273 a new file, acclib.h
3274
3275 Fixes several problems with recent changes to the handling of the FACS
3276 table that could cause some systems not to boot.
3277
3278
3279 ----------------------------------------
3280 16 June 2015. Summary of changes for version 20150616:
3281
3282
3283 1) ACPICA kernel-resident subsystem:
3284
3285 Across the entire ACPICA source code base, the various macros for the C
3286 library functions (such as ACPI_STRLEN, etc.) have been removed and
3287 replaced by the standard C library names (strlen, etc.) The original
3288 purpose for these macros is no longer applicable. This simplification
3289 reduces the number of macros used in the ACPICA source code
3290 significantly, improving readability and maintainability.
3291
3292 Implemented support for a new ACPI table, the OSDT. This table, the
3293 "override" SDT, can be loaded directly by the host OS at boot time. It
3294 enables the replacement of existing namespace objects that were installed
3295 via the DSDT and/or SSDTs. The primary purpose for this is to replace
3296 buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
3297 for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
3298 Moore.
3299
3300 Added support for systems with (improperly) two FACS tables -- a "32-bit"
3301 table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
3302 X field). This change will support both automatically. There continues to
3303 be systems found with this issue. This support requires a change to the
3304 AcpiSetFirmwareWakingVector interface. Also, a public global variable has
3305 been added to allow the host to select which FACS is desired
3306 (AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
3307 details Lv Zheng.
3308
3309 Added a new feature to allow for systems that do not contain an FACS.
3310 Although this is already supported on hardware-reduced platforms, the
3311 feature has been extended for all platforms. The reasoning is that we do
3312 not want to abort the entire ACPICA initialization just because the
3313 system is seriously buggy and has no FACS.
3314
3315 Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
3316 not correctly transcribed from the ACPI specification in ACPICA version
3317 20150515.
3318
3319 Implemented support for the _CLS object in the AcpiGetObjectInfo external
3320 interface.
3321
3322 Updated the definitions of the TCPA and TPM2 ACPI tables to the more
3323 recent TCG ACPI Specification, December 14, 2014. Table disassembler and
3324 compiler also updated. Note: The TCPA "server" table is not supported by
3325 the disassembler/table-compiler at this time.
3326
3327 ACPI 6.0: Added definitions for the new GIC version field in the MADT.
3328
3329 Example Code and Data Size: These are the sizes for the OS-independent
3330 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3331 debug version of the code includes the debug output trace mechanism and
3332 has a much larger code and data size.
3333
3334 Current Release:
3335 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3336 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
3337 Previous Release:
3338 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
3339 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
3340
3341
3342 2) iASL Compiler/Disassembler and Tools:
3343
3344 Disassembler: Fixed a problem with the new symbolic operator disassembler
3345 where incorrect ASL code could be emitted in some cases for the "non-
3346 commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
3347 ShiftRight. The actual problem cases seem to be rather unusual in common
3348 ASL code, however. David Box.
3349
3350 Modified the linux version of acpidump to obtain ACPI tables from not
3351 just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
3352 Zheng.
3353
3354 iASL: Fixed a problem where the user preprocessor output file (.i)
3355 contained extra data that was not expected. The compiler was using this
3356 file as a temporary file and passed through #line directives in order to
3357 keep compiler error messages in sync with the input file and line number
3358 across multiple include files. The (.i) is no longer a temporary file as
3359 the compiler uses a new, different file for the original purpose.
3360
3361 iASL: Fixed a problem where comments within the original ASL source code
3362 file were not passed through to the preprocessor output file, nor any
3363 listing files.
3364
3365 iASL: Fixed some issues for the handling of the "#include" preprocessor
3366 directive and the similar (but not the same) "Include" ASL operator.
3367
3368 iASL: Add support for the new OSDT in both the disassembler and compiler.
3369
3370 iASL: Fixed a problem with the constant folding support where a Buffer
3371 object could be incorrectly generated (incorrectly formed) during a
3372 conversion to a Store() operator.
3373
3374 AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
3375 description text for the _REV predefined name. _REV now permanently
3376 returns 2, as per the ACPI 6.0 specification.
3377
3378 Debugger: Enhanced the output of the Debug ASL object for references
3379 produced by the Index operator. For Buffers and strings, only output the
3380 actual byte pointed to by the index. For packages, only print the single
3381 package element decoded by the index. Previously, the entire
3382 buffer/string/package was emitted.
3383
3384 iASL/Table-compiler: Fixed a regression where the "generic" data types
3385 were no longer recognized, causing errors.
3386
3387
3388 ----------------------------------------
3389 15 May 2015. Summary of changes for version 20150515:
3390
3391 This release implements most of ACPI 6.0 as described below.
3392
3393 1) ACPICA kernel-resident subsystem:
3394
3395 Implemented runtime argument checking and return value checking for all
3396 new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
3397 _MTL, _PRR, _RDI, _RST, _TFP, _TSN.
3398
3399 Example Code and Data Size: These are the sizes for the OS-independent
3400 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3401 debug version of the code includes the debug output trace mechanism and
3402 has a much larger code and data size.
3403
3404 Current Release:
3405 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
3406 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
3407 Previous Release:
3408 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
3409 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
3410
3411
3412 2) iASL Compiler/Disassembler and Tools:
3413
3414 iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
3415 names (argument count validation and return value typechecking.)
3416
3417 iASL disassembler and table compiler: implemented support for all new
3418 ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
3419
3420 iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
3421 tables: FADT, MADT.
3422
3423 iASL preprocessor: Added a new directive to enable inclusion of binary
3424 blobs into ASL code. The new directive is #includebuffer. It takes a
3425 binary file as input and emits a named ascii buffer object into the ASL
3426 code.
3427
3428 AcpiHelp: Added support for all new ACPI 6.0 predefined names.
3429
3430 AcpiHelp: Added a new option, -d, to display all iASL preprocessor
3431 directives.
3432
3433 AcpiHelp: Added a new option, -t, to display all known/supported ACPI
3434 tables.
3435
3436
3437 ----------------------------------------
3438 10 April 2015. Summary of changes for version 20150410:
3439
3440 Reverted a change introduced in version 20150408 that caused
3441 a regression in the disassembler where incorrect operator
3442 symbols could be emitted.
3443
3444
3445 ----------------------------------------
3446 08 April 2015. Summary of changes for version 20150408:
3447
3448
3449 1) ACPICA kernel-resident subsystem:
3450
3451 Permanently set the return value for the _REV predefined name. It now
3452 returns 2 (was 5). This matches other ACPI implementations. _REV will be
3453 deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
3454 for ACPI 2.0 and later. It should never be used to differentiate or
3455 identify operating systems.
3456
3457 Added the "Windows 2015" string to the _OSI support. ACPICA will now
3458 return TRUE to a query with this string.
3459
3460 Fixed several issues with the local version of the printf function.
3461
3462 Added the C99 compiler option (-std=c99) to the Unix makefiles.
3463
3464 Current Release:
3465 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total
3466 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total
3467 Previous Release:
3468 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
3469 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
3470
3471
3472 2) iASL Compiler/Disassembler and Tools:
3473
3474 iASL: Implemented an enhancement to the constant folding feature to
3475 transform the parse tree to a simple Store operation whenever possible:
3476 Add (2, 3, X) ==> is converted to: Store (5, X)
3477 X = 2 + 3 ==> is converted to: Store (5, X)
3478
3479 Updated support for the SLIC table (Software Licensing Description Table)
3480 in both the Data Table compiler and the disassembler. The SLIC table
3481 support now conforms to "Microsoft Software Licensing Tables (SLIC and
3482 MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
3483 following the ACPI header is now defined to be "Proprietary Data", and as
3484 such, can only be entered or displayed as a hex data block.
3485
3486 Implemented full support for the MSDM table as described in the document
3487 above. Note: The format of MSDM is similar to SLIC. Any MSDM data
3488 following the ACPI header is defined to be "Proprietary Data", and can
3489 only be entered or displayed as a hex data block.
3490
3491 Implemented the -Pn option for the iASL Table Compiler (was only
3492 implemented for the ASL compiler). This option disables the iASL
3493 preprocessor.
3494
3495 Disassembler: For disassembly of Data Tables, added a comment field
3496 around the Ascii equivalent data that is emitted as part of the "Raw
3497 Table Data" block. This prevents the iASL Preprocessor from possible
3498 confusion if/when the table is compiled.
3499
3500 Disassembler: Added an option (-df) to force the disassembler to assume
3501 that the table being disassembled contains valid AML. This feature is
3502 useful for disassembling AML files that contain ACPI signatures other
3503 than DSDT or SSDT (such as OEMx or other signatures).
3504
3505 Changes for the EFI version of the tools:
3506 1) Fixed a build error/issue
3507 2) Fixed a cast warning
3508
3509 iASL: Fixed a path issue with the __FILE__ operator by making the
3510 directory prefix optional within the internal SplitInputFilename
3511 function.
3512
3513 Debugger: Removed some unused global variables.
3514
3515 Tests: Updated the makefile for proper generation of the AAPITS suite.
3516
3517
3518 ----------------------------------------
3519 04 February 2015. Summary of changes for version 20150204:
3520
3521 ACPICA kernel-resident subsystem:
3522
3523 Updated all ACPICA copyrights and signons to 2014. Added the 2014
3524 copyright to all module headers and signons, including the standard Linux
3525 header. This affects virtually every file in the ACPICA core subsystem,
3526 iASL compiler, all ACPICA utilities, and the test suites.
3527
3528 Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
3529 A raw gpe handling mechanism was created to allow better handling of GPE
3530 storms that aren't easily managed by the normal handler. The raw handler
3531 allows disabling/renabling of the the GPE so that interrupt storms can be
3532 avoided in cases where events cannot be timely serviced. In this
3533 scenario, handlers should use the AcpiSetGpe() API to disable/enable the
3534 GPE. This API will leave the reference counts undisturbed, thereby
3535 preventing unintentional clearing of the GPE when the intent in only to
3536 temporarily disable it. Raw handlers allow enabling and disabling of a
3537 GPE by removing GPE register locking. As such, raw handlers much provide
3538 their own locks while using GPE API's to protect access to GPE data
3539 structures.
3540 Lv Zheng
3541
3542 Events: Always modify GPE registers under the GPE lock.
3543 Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
3544 values. Reported as bug by joe.liu (a] apple.com.
3545
3546 Unix makefiles: Separate option to disable optimizations and
3547 _FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
3548 NOOPT disable option and creates a separate flag (NOFORTIFY) for this
3549 purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
3550 errors when building ACPICA. This allows disabling the option without
3551 also having to disable optimazations.
3552 David Box
3553
3554 Current Release:
3555 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3556 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total
3557
3558 --
3559 --------------------------------------
3560 07 November 2014. Summary of changes for version 20141107:
3561
3562 This release is available at https://acpica.org/downloads
3563
3564 This release introduces and implements language extensions to ASL that
3565 provide support for symbolic ("C-style") operators and expressions. These
3566 language extensions are known collectively as ASL+.
3567
3568
3569 1) iASL Compiler/Disassembler and Tools:
3570
3571 Disassembler: Fixed a problem with disassembly of the UartSerialBus
3572 macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
3573 Box.
3574
3575 Disassembler: Fixed the Unicode macro support to add escape sequences.
3576 All non-printable ASCII values are emitted as escape sequences, as well
3577 as the standard escapes for quote and backslash. Ensures that the
3578 disassembled macro can be correctly recompiled.
3579
3580 iASL: Added Printf/Fprintf macros for formatted output. These macros are
3581 translated to existing AML Concatenate and Store operations. Printf
3582 writes to the ASL Debug object. Fprintf allows the specification of an
3583 ASL name as the target. Only a single format specifier is required, %o,
3584 since the AML interpreter dynamically converts objects to the required
3585 type. David E. Box.
3586
3587 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate
3588 (Concatenate (Concatenate (Concatenate ("", Arg0),
3589 ": Unexpected value for "), Arg1), ", "), Arg2),
3590 " at line "), Arg3), Debug)
3591
3592 (new) Printf ("%o: Unexpected value for %o, %o at line %o",
3593 Arg0, Arg1, Arg2, Arg3)
3594
3595 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate
3596 ("", Arg1), ": "), Arg0), " Successful"), STR1)
3597
3598 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
3599
3600 iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
3601 ASL parse tree before the AML code is generated. This allows blocks of
3602 ASL code to be removed in order to help locate and identify problem
3603 devices and/or code. David E. Box.
3604
3605 AcpiExec: Added support (-fi) for an optional namespace object
3606 initialization file. This file specifies initial values for namespace
3607 objects as necessary for debugging and testing different ASL code paths
3608 that may be taken as a result of BIOS options.
3609
3610
3611 2) Overview of symbolic operator support for ASL (ASL+)
3612 -------------------------------------------------------
3613
3614 As an extension to the ASL language, iASL implements support for symbolic
3615 (C-style) operators for math and logical expressions. This can greatly
3616 simplify ASL code as well as improve both readability and
3617 maintainability. These language extensions can exist concurrently with
3618 all legacy ASL code and expressions.
3619
3620 The symbolic extensions are 100% compatible with existing AML
3621 interpreters, since no new AML opcodes are created. To implement the
3622 extensions, the iASL compiler transforms the symbolic expressions into
3623 the legacy ASL/AML equivalents at compile time.
3624
3625 Full symbolic expressions are supported, along with the standard C
3626 precedence and associativity rules.
3627
3628 Full disassembler support for the symbolic expressions is provided, and
3629 creates an automatic migration path for existing ASL code to ASL+ code
3630 via the disassembly process. By default, the disassembler now emits ASL+
3631 code with symbolic expressions. An option (-dl) is provided to force the
3632 disassembler to emit legacy ASL code if desired.
3633
3634 Below is the complete list of the currently supported symbolic operators
3635 with examples. See the iASL User Guide for additional information.
3636
3637
3638 ASL+ Syntax Legacy ASL Equivalent
3639 ----------- ---------------------
3640
3641 // Math operators
3642
3643 Z = X + Y Add (X, Y, Z)
3644 Z = X - Y Subtract (X, Y, Z)
3645 Z = X * Y Multiply (X, Y, Z)
3646 Z = X / Y Divide (X, Y, , Z)
3647 Z = X % Y Mod (X, Y, Z)
3648 Z = X << Y ShiftLeft (X, Y, Z)
3649 Z = X >> Y ShiftRight (X, Y, Z)
3650 Z = X & Y And (X, Y, Z)
3651 Z = X | Y Or (X, Y, Z)
3652 Z = X ^ Y Xor (X, Y, Z)
3653 Z = ~X Not (X, Z)
3654 X++ Increment (X)
3655 X-- Decrement (X)
3656
3657 // Logical operators
3658
3659 (X == Y) LEqual (X, Y)
3660 (X != Y) LNotEqual (X, Y)
3661 (X < Y) LLess (X, Y)
3662 (X > Y) LGreater (X, Y)
3663 (X <= Y) LLessEqual (X, Y)
3664 (X >= Y) LGreaterEqual (X, Y)
3665 (X && Y) LAnd (X, Y)
3666 (X || Y) LOr (X, Y)
3667 (!X) LNot (X)
3668
3669 // Assignment and compound assignment operations
3670
3671 X = Y Store (Y, X)
3672 X += Y Add (X, Y, X)
3673 X -= Y Subtract (X, Y, X)
3674 X *= Y Multiply (X, Y, X)
3675 X /= Y Divide (X, Y, , X)
3676 X %= Y Mod (X, Y, X)
3677 X <<= Y ShiftLeft (X, Y, X)
3678 X >>= Y ShiftRight (X, Y, X)
3679 X &= Y And (X, Y, X)
3680 X |= Y Or (X, Y, X)
3681 X ^= Y Xor (X, Y, X)
3682
3683
3684 3) ASL+ Examples:
3685 -----------------
3686
3687 Legacy ASL:
3688 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
3689 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
3690 0x03FB),
3691 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
3692 {
3693 And (MEMB, 0xFFFFFFF0, SRMB)
3694 Store (MEMB, Local2)
3695 Store (PDBM, Local1)
3696 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
3697 Store (SRMB, MEMB)
3698 Or (PDBM, 0x02, PDBM)
3699 }
3700
3701 ASL+ version:
3702 If (((R510 & 0x03FB) == 0x02E0) ||
3703 ((R520 & 0x03FB) == 0x02E0) ||
3704 ((R530 & 0x03FB) == 0x02E0) ||
3705 ((R540 & 0x03FB) == 0x02E0))
3706 {
3707 SRMB = (MEMB & 0xFFFFFFF0)
3708 Local2 = MEMB
3709 Local1 = PDBM
3710 PDBM &= 0xFFFFFFFFFFFFFFF9
3711 MEMB = SRMB
3712 PDBM |= 0x02
3713 }
3714
3715 Legacy ASL:
3716 Store (0x1234, Local1)
3717 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
3718 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
3719 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
3720 Store (Index (PKG1, 0x03), Local6)
3721 Store (Add (Local3, Local2), Debug)
3722 Add (Local1, 0x0F, Local2)
3723 Add (Local1, Multiply (Local2, Local3), Local2)
3724 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
3725
3726 ASL+ version:
3727 Local1 = 0x1234
3728 Local3 = (((Local1 + TEST) + 0x20) * Local2)
3729 Local3 = (Local2 * ((Local1 + TEST) + 0x20))
3730 Local3 = (Local1 + (TEST + (0x20 * Local2)))
3731 Local6 = Index (PKG1, 0x03)
3732 Debug = (Local3 + Local2)
3733 Local2 = (Local1 + 0x0F)
3734 Local2 = (Local1 + (Local2 * Local3))
3735 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
3736
3737
3738 ----------------------------------------
3739 26 September 2014. Summary of changes for version 20140926:
3740
3741 1) ACPICA kernel-resident subsystem:
3742
3743 Updated the GPIO operation region handler interface (GeneralPurposeIo).
3744 In order to support GPIO Connection objects with multiple pins, along
3745 with the related Field objects, the following changes to the interface
3746 have been made: The Address is now defined to be the offset in bits of
3747 the field unit from the previous invocation of a Connection. It can be
3748 viewed as a "Pin Number Index" into the connection resource descriptor.
3749 The BitWidth is the exact bit width of the field. It is usually one bit,
3750 but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
3751 additional information and examples.
3752
3753 GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
3754 corresponding _Lxx/_Exx methods are disabled (they may have been enabled
3755 by the firmware), so that they cannot fire until they are enabled via
3756 AcpiUpdateAllGpes. Rafael J. Wysocki.
3757
3758 Added a new return flag for the Event/GPE status interfaces --
3759 AcpiGetEventStatus and AcpiGetGpeStatus. The new
3760 ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
3761 GPE currently has a handler associated with it, and can thus actually
3762 affect the system. Lv Zheng.
3763
3764 Example Code and Data Size: These are the sizes for the OS-independent
3765 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3766 debug version of the code includes the debug output trace mechanism and
3767 has a much larger code and data size.
3768
3769 Current Release:
3770 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
3771 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
3772 Previous Release:
3773 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
3774 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
3775
3776 2) iASL Compiler/Disassembler and Tools:
3777
3778 iASL: Fixed a memory allocation/free regression introduced in 20140828
3779 that could cause the compiler to crash. This was introduced inadvertently
3780 during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
3781 1113.
3782
3783 iASL: Removed two error messages that have been found to create false
3784 positives, until they can be fixed and fully validated (ACPICA BZ 1112):
3785 1) Illegal forward reference within a method
3786 2) Illegal reference across two methods
3787
3788 iASL: Implemented a new option (-lm) to create a hardware mapping file
3789 that summarizes all GPIO, I2C, SPI, and UART connections. This option
3790 works for both the compiler and disassembler. See the iASL compiler user
3791 guide for additional information and examples (section 6.4.6).
3792
3793 AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
3794 version 2. This corrects the AE_BAD_HEADER exception seen on systems with
3795 a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
3796
3797 AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
3798 unless STDIN is actually a terminal. Assists with batch-mode processing.
3799 ACPICA BZ 1114.
3800
3801 Disassembler/AcpiHelp: Added another large group of recognized _HID
3802 values.
3803
3804
3805 ----------------------------------------
3806 28 August 2014. Summary of changes for version 20140828:
3807
3808 1) ACPICA kernel-resident subsystem:
3809
3810 Fixed a problem related to the internal use of the Timer() operator where
3811 a 64-bit divide could cause an attempted link to a double-precision math
3812 library. This divide is not actually necessary, so the code was
3813 restructured to eliminate it. Lv Zheng.
3814
3815 ACPI 5.1: Added support for the runtime validation of the _DSD package
3816 (similar to the iASL support).
3817
3818 ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
3819 SRAT table. Hanjun Guo <hanjun.guo (a] linaro.org>.
3820
3821 Example Code and Data Size: These are the sizes for the OS-independent
3822 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3823 debug version of the code includes the debug output trace mechanism and
3824 has a much larger code and data size.
3825
3826 Current Release:
3827 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
3828 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
3829 Previous Release:
3830 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1
3831 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total
3832
3833 2) iASL Compiler/Disassembler and Tools:
3834
3835 AcpiExec: Fixed a problem on unix systems where the original terminal
3836 state was not always properly restored upon exit. Seen when using the -v
3837 option. ACPICA BZ 1104.
3838
3839 iASL: Fixed a problem with the validation of the ranges/length within the
3840 Memory24 resource descriptor. There was a boundary condition when the
3841 range was equal to the (length -1) caused by the fact that these values
3842 are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
3843
3844 Disassembler: Fixed a problem with the GpioInt descriptor interrupt
3845 polarity
3846 flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
3847 is
3848 now supported properly.
3849
3850 ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
3851 in the disassembler, data table compiler, and table template generator.
3852
3853 iASL: Added a requirement for Device() objects that one of either a _HID
3854 or _ADR must exist within the scope of a Device, as per the ACPI
3855 specification. Remove a similar requirement that was incorrectly in place
3856 for the _DSD object.
3857
3858 iASL: Added error detection for illegal named references within control
3859 methods that would cause runtime failures. Now trapped as errors are: 1)
3860 References to objects within a non-parent control method. 2) Forward
3861 references (within a method) -- for control methods, AML interpreters use
3862 a one-pass parse of control methods. ACPICA BZ 1008.
3863
3864 iASL: Added error checking for dependencies related to the _PSx power
3865 methods. ACPICA BZ 1029.
3866 1) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
3867 _PS3.
3868 2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
3869 scope.
3870
3871 iASL and table compiler: Cleanup miscellaneous memory leaks by fully
3872 deploying the existing object and string caches and adding new caches for
3873 the table compiler.
3874
3875 iASL: Split the huge parser source file into multiple subfiles to improve
3876 manageability. Generation now requires the M4 macro preprocessor, which
3877 is part of the Bison distribution on both unix and windows platforms.
3878
3879 AcpiSrc: Fixed and removed all extraneous warnings generated during
3880 entire ACPICA source code scan and/or conversion.
3881
3882
3883 ----------------------------------------
3884
3885 24 July 2014. Summary of changes for version 20140724:
3886
3887 The ACPI 5.1 specification has been released and is available at:
3888 http://uefi.org/specs/access
3889
3890
3891 0) ACPI 5.1 support in ACPICA:
3892
3893 ACPI 5.1 is fully supported in ACPICA as of this release.
3894
3895 New predefined names. Support includes iASL and runtime ACPICA
3896 validation.
3897 _CCA (Cache Coherency Attribute).
3898 _DSD (Device-Specific Data). David Box.
3899
3900 Modifications to existing ACPI tables. Support includes headers, iASL
3901 Data Table compiler, disassembler, and the template generator.
3902 FADT - New fields and flags. Graeme Gregory.
3903 GTDT - One new subtable and new fields. Tomasz Nowicki.
3904 MADT - Two new subtables. Tomasz Nowicki.
3905 PCCT - One new subtable.
3906
3907 Miscellaneous.
3908 New notification type for System Resource Affinity change events.
3909
3910
3911 1) ACPICA kernel-resident subsystem:
3912
3913 Fixed a regression introduced in 20140627 where a fault can happen during
3914 the deletion of Alias AML namespace objects. The problem affected both
3915 the core ACPICA and the ACPICA tools including iASL and AcpiExec.
3916
3917 Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
3918 simple mechanism to enable wake GPEs that have no associated handler or
3919 control method. Rafael Wysocki.
3920
3921 Updated the AcpiEnableGpe interface to disallow the enable if there is no
3922 handler or control method associated with the particular GPE. This will
3923 help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
3924
3925 Updated GPE handling and dispatch by disabling the GPE before clearing
3926 the status bit for edge-triggered GPEs. Lv Zheng.
3927
3928 Added Timer() support to the AML Debug object. The current timer value is
3929 now displayed with each invocation of (Store to) the debug object to
3930 enable simple generation of execution times for AML code (method
3931 execution for example.) ACPICA BZ 1093.
3932
3933 Example Code and Data Size: These are the sizes for the OS-independent
3934 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3935 debug version of the code includes the debug output trace mechanism and
3936 has a much larger code and data size.
3937
3938 Current Release:
3939 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total
3940 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total
3941 Previous Release:
3942 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total
3943 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total
3944
3945
3946 2) iASL Compiler/Disassembler and Tools:
3947
3948 Fixed an issue with the recently added local printf implementation,
3949 concerning width/precision specifiers that could cause incorrect output.
3950 Lv Zheng. ACPICA BZ 1094.
3951
3952 Disassembler: Added support to detect buffers that contain UUIDs and
3953 disassemble them to an invocation of the ToUUID operator. Also emit
3954 commented descriptions of known ACPI-related UUIDs.
3955
3956 AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
3957 -u. Adds three new files.
3958
3959 iASL: Update table compiler and disassembler for DMAR table changes that
3960 were introduced in September 2013. With assistance by David Woodhouse.
3961
3962 ----------------------------------------
3963 27 June 2014. Summary of changes for version 20140627:
3964
3965 1) ACPICA kernel-resident subsystem:
3966
3967 Formatted Output: Implemented local versions of standard formatted output
3968 utilities such as printf, etc. Over time, it has been discovered that
3969 there are in fact many portability issues with printf, and the addition
3970 of this feature will fix/prevent these issues once and for all. Some
3971 known issues are summarized below:
3972
3973 1) Output of 64-bit values is not portable. For example, UINT64 is %ull
3974 for the Linux kernel and is %uI64 for some MSVC versions.
3975 2) Invoking printf consistently in a manner that is portable across both
3976 32-bit and 64-bit platforms is difficult at best in many situations.
3977 3) The output format for pointers varies from system to system (leading
3978 zeros especially), and leads to inconsistent output from ACPICA across
3979 platforms.
3980 4) Certain platform-specific printf formats may conflict with ACPICA use.
3981 5) If there is no local C library available, ACPICA now has local support
3982 for printf.
3983
3984 -- To address these printf issues in a complete manner, ACPICA now
3985 directly implements a small subset of printf format specifiers, only
3986 those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
3987
3988 Implemented support for ACPICA generation within the EFI environment.
3989 Initially, the AcpiDump utility is supported in the UEFI shell
3990 environment. Lv Zheng.
3991
3992 Added a new external interface, AcpiLogError, to improve ACPICA
3993 portability. This allows the host to redirect error messages from the
3994 ACPICA utilities. Lv Zheng.
3995
3996 Added and deployed new OSL file I/O interfaces to improve ACPICA
3997 portability:
3998 AcpiOsOpenFile
3999 AcpiOsCloseFile
4000 AcpiOsReadFile
4001 AcpiOsWriteFile
4002 AcpiOsGetFileOffset
4003 AcpiOsSetFileOffset
4004 There are C library implementations of these functions in the new file
4005 service_layers/oslibcfs.c -- however, the functions can be implemented by
4006 the local host in any way necessary. Lv Zheng.
4007
4008 Implemented a mechanism to disable/enable ACPI table checksum validation
4009 at runtime. This can be useful when loading tables very early during OS
4010 initialization when it may not be possible to map the entire table in
4011 order to compute the checksum. Lv Zheng.
4012
4013 Fixed a buffer allocation issue for the Generic Serial Bus support.
4014 Originally, a fixed buffer length was used. This change allows for
4015 variable-length buffers based upon the protocol indicated by the field
4016 access attributes. Reported by Lan Tianyu. Lv Zheng.
4017
4018 Fixed a problem where an object detached from a namespace node was not
4019 properly terminated/cleared and could cause a circular list problem if
4020 reattached. ACPICA BZ 1063. David Box.
4021
4022 Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
4023
4024 Fixed a possible memory leak in an error return path within the function
4025 AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
4026
4027 Example Code and Data Size: These are the sizes for the OS-independent
4028 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4029 debug version of the code includes the debug output trace mechanism and
4030 has a much larger code and data size.
4031
4032 Current Release:
4033 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total
4034 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total
4035 Previous Release:
4036 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total
4037 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total
4038
4039
4040 2) iASL Compiler/Disassembler and Tools:
4041
4042 Disassembler: Add dump of ASCII equivalent text within a comment at the
4043 end of each line of the output for the Buffer() ASL operator.
4044
4045 AcpiDump: Miscellaneous changes:
4046 Fixed repetitive table dump in -n mode.
4047 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
4048 the ACPI 2.0 GUID fails.
4049
4050 iASL: Fixed a problem where the compiler could fault if incorrectly given
4051 an acpidump output file as input. ACPICA BZ 1088. David Box.
4052
4053 AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
4054 they are invoked without any arguments.
4055
4056 Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
4057 1086. Colin Ian King.
4058
4059 Disassembler: Cleaned up a block of code that extracts a parent Op
4060 object. Added a comment that explains that the parent is guaranteed to be
4061 valid in this case. ACPICA BZ 1069.
4062
4063
4064 ----------------------------------------
4065 24 April 2014. Summary of changes for version 20140424:
4066
4067 1) ACPICA kernel-resident subsystem:
4068
4069 Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
4070 Some of these tables are known to contain a trailing NULL entry. Lv
4071 Zheng.
4072
4073 Removed an extraneous error message for the case where there are a large
4074 number of system GPEs (> 124). This was the "32-bit FADT register is too
4075 long to convert to GAS struct" message, which is irrelevant for GPEs
4076 since the GPEx_BLK_LEN fields of the FADT are always used instead of the
4077 (limited capacity) GAS bit length. Also, several changes to ensure proper
4078 support for GPE numbers > 255, where some "GPE number" fields were 8-bits
4079 internally.
4080
4081 Implemented and deployed additional configuration support for the public
4082 ACPICA external interfaces. Entire classes of interfaces can now be
4083 easily modified or configured out, replaced by stubbed inline functions
4084 by default. Lv Zheng.
4085
4086 Moved all public ACPICA runtime configuration globals to the public
4087 ACPICA external interface file for convenience. Also, removed some
4088 obsolete/unused globals. See the file acpixf.h. Lv Zheng.
4089
4090 Documentation: Added a new section to the ACPICA reference describing the
4091 maximum number of GPEs that can be supported by the FADT-defined GPEs in
4092 block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
4093 reference.
4094
4095 Example Code and Data Size: These are the sizes for the OS-independent
4096 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4097 debug version of the code includes the debug output trace mechanism and
4098 has a much larger code and data size.
4099
4100 Current Release:
4101 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total
4102 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total
4103 Previous Release:
4104 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total
4105 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
4106
4107
4108 2) iASL Compiler/Disassembler and Tools:
4109
4110 iASL and disassembler: Add full support for the LPIT table (Low Power
4111 Idle Table). Includes support in the disassembler, data table compiler,
4112 and template generator.
4113
4114 AcpiDump utility:
4115 1) Add option to force the use of the RSDT (over the XSDT).
4116 2) Improve validation of the RSDP signature (use 8 chars instead of 4).
4117
4118 iASL: Add check for predefined packages that are too large. For
4119 predefined names that contain subpackages, check if each subpackage is
4120 too large. (Check for too small already exists.)
4121
4122 Debugger: Updated the GPE command (which simulates a GPE by executing the
4123 GPE code paths in ACPICA). The GPE device is now optional, and defaults
4124 to the GPE 0/1 FADT-defined blocks.
4125
4126 Unix application OSL: Update line-editing support. Add additional error
4127 checking and take care not to reset terminal attributes on exit if they
4128 were never set. This should help guarantee that the terminal is always
4129 left in the previous state on program exit.
4130
4131
4132 ----------------------------------------
4133 25 March 2014. Summary of changes for version 20140325:
4134
4135 1) ACPICA kernel-resident subsystem:
4136
4137 Updated the auto-serialize feature for control methods. This feature
4138 automatically serializes all methods that create named objects in order
4139 to prevent runtime errors. The update adds support to ignore the
4140 currently executing AML SyncLevel when invoking such a method, in order
4141 to prevent disruption of any existing SyncLevel priorities that may exist
4142 in the AML code. Although the use of SyncLevels is relatively rare, this
4143 change fixes a regression where an AE_AML_MUTEX_ORDER exception can
4144 appear on some machines starting with the 20140214 release.
4145
4146 Added a new external interface to allow the host to install ACPI tables
4147 very early, before the namespace is even created. AcpiInstallTable gives
4148 the host additional flexibility for ACPI table management. Tables can be
4149 installed directly by the host as if they had originally appeared in the
4150 XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
4151 (anything except the DSDT and FACS). Adds a new file, tbdata.c, along
4152 with additional internal restructuring and cleanup. See the ACPICA
4153 Reference for interface details. Lv Zheng.
4154
4155 Added validation of the checksum for all incoming dynamically loaded
4156 tables (via external interfaces or via AML Load/LoadTable operators). Lv
4157 Zheng.
4158
4159 Updated the use of the AcpiOsWaitEventsComplete interface during Notify
4160 and GPE handler removal. Restructured calls to eliminate possible race
4161 conditions. Lv Zheng.
4162
4163 Added a warning for the use/execution of the ASL/AML Unload (table)
4164 operator. This will help detect and identify machines that use this
4165 operator if and when it is ever used. This operator has never been seen
4166 in the field and the usage model and possible side-effects of the drastic
4167 runtime action of a full table removal are unknown.
4168
4169 Reverted the use of #pragma push/pop which was introduced in the 20140214
4170 release. It appears that push and pop are not implemented by enough
4171 compilers to make the use of this feature feasible for ACPICA at this
4172 time. However, these operators may be deployed in a future ACPICA
4173 release.
4174
4175 Added the missing EXPORT_SYMBOL macros for the install and remove SCI
4176 handler interfaces.
4177
4178 Source code generation:
4179 1) Disabled the use of the "strchr" macro for the gcc-specific
4180 generation. For some versions of gcc, this macro can periodically expose
4181 a compiler bug which in turn causes compile-time error(s).
4182 2) Added support for PPC64 compilation. Colin Ian King.
4183
4184 Example Code and Data Size: These are the sizes for the OS-independent
4185 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4186 debug version of the code includes the debug output trace mechanism and
4187 has a much larger code and data size.
4188
4189 Current Release:
4190 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total
4191 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
4192 Previous Release:
4193 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total
4194 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total
4195
4196
4197 2) iASL Compiler/Disassembler and Tools:
4198
4199 Disassembler: Added several new features to improve the readability of
4200 the resulting ASL code. Extra information is emitted within comment
4201 fields in the ASL code:
4202 1) Known _HID/_CID values are decoded to descriptive text.
4203 2) Standard values for the Notify() operator are decoded to descriptive
4204 text.
4205 3) Target operands are expanded to full pathnames (in a comment) when
4206 possible.
4207
4208 Disassembler: Miscellaneous updates for extern() handling:
4209 1) Abort compiler if file specified by -fe option does not exist.
4210 2) Silence unnecessary warnings about argument count mismatches.
4211 3) Update warning messages concerning unresolved method externals.
4212 4) Emit "UnknownObj" keyword for externals whose type cannot be
4213 determined.
4214
4215 AcpiHelp utility:
4216 1) Added the -a option to display both the ASL syntax and the AML
4217 encoding for an input ASL operator. This effectively displays all known
4218 information about an ASL operator with one AcpiHelp invocation.
4219 2) Added substring match support (similar to a wildcard) for the -i
4220 (_HID/PNP IDs) option.
4221
4222 iASL/Disassembler: Since this tool does not yet support execution on big-
4223 endian machines, added detection of endianness and an error message if
4224 execution is attempted on big-endian. Support for big-endian within iASL
4225 is a feature that is on the ACPICA to-be-done list.
4226
4227 AcpiBin utility:
4228 1) Remove option to extract binary files from an acpidump; this function
4229 is made obsolete by the AcpiXtract utility.
4230 2) General cleanup of open files and allocated buffers.
4231
4232
4233 ----------------------------------------
4234 14 February 2014. Summary of changes for version 20140214:
4235
4236 1) ACPICA kernel-resident subsystem:
4237
4238 Implemented a new mechanism to proactively prevent problems with ill-
4239 behaved reentrant control methods that create named ACPI objects. This
4240 behavior is illegal as per the ACPI specification, but is nonetheless
4241 frequently seen in the field. Previously, this could lead to an
4242 AE_ALREADY_EXISTS exception if the method was actually entered by more
4243 than one thread. This new mechanism detects such methods at table load
4244 time and marks them "serialized" to prevent reentrancy. A new global
4245 option, AcpiGbl_AutoSerializeMethods, has been added to disable this
4246 feature if desired. This mechanism and global option obsoletes and
4247 supersedes the previous AcpiGbl_SerializeAllMethods option.
4248
4249 Added the "Windows 2013" string to the _OSI support. ACPICA will now
4250 respond TRUE to _OSI queries with this string. It is the stated policy of
4251 ACPICA to add new strings to the _OSI support as soon as possible after
4252 they are defined. See the full ACPICA _OSI policy which has been added to
4253 the utilities/utosi.c file.
4254
4255 Hardened/updated the _PRT return value auto-repair code:
4256 1) Do not abort the repair on a single subpackage failure, continue to
4257 check all subpackages.
4258 2) Add check for the minimum subpackage length (4).
4259 3) Properly handle extraneous NULL package elements.
4260
4261 Added support to avoid the possibility of infinite loops when traversing
4262 object linked lists. Never allow an infinite loop, even in the face of
4263 corrupted object lists.
4264
4265 ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
4266 pack(pop) directives to ensure that the ACPICA headers are independent of
4267 compiler settings or other host headers.
4268
4269 Example Code and Data Size: These are the sizes for the OS-independent
4270 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4271 debug version of the code includes the debug output trace mechanism and
4272 has a much larger code and data size.
4273
4274 Current Release:
4275 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total
4276 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total
4277 Previous Release:
4278 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total
4279 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
4280
4281
4282 2) iASL Compiler/Disassembler and Tools:
4283
4284 iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
4285 first reserved field was incorrectly forced to have a value of zero. This
4286 change correctly forces the field to have a value of one. ACPICA BZ 1081.
4287
4288 Debugger: Added missing support for the "Extra" and "Data" subobjects
4289 when displaying object data.
4290
4291 Debugger: Added support to display entire object linked lists when
4292 displaying object data.
4293
4294 iASL: Removed the obsolete -g option to obtain ACPI tables from the
4295 Windows registry. This feature has been superseded by the acpidump
4296 utility.
4297
4298
4299 ----------------------------------------
4300 14 January 2014. Summary of changes for version 20140114:
4301
4302 1) ACPICA kernel-resident subsystem:
4303
4304 Updated all ACPICA copyrights and signons to 2014. Added the 2014
4305 copyright to all module headers and signons, including the standard Linux
4306 header. This affects virtually every file in the ACPICA core subsystem,
4307 iASL compiler, all ACPICA utilities, and the test suites.
4308
4309 Improved parameter validation for AcpiInstallGpeBlock. Added the
4310 following checks:
4311 1) The incoming device handle refers to type ACPI_TYPE_DEVICE.
4312 2) There is not already a GPE block attached to the device.
4313 Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
4314 device.
4315
4316 Correctly support "references" in the ACPI_OBJECT. This change fixes the
4317 support to allow references (namespace nodes) to be passed as arguments
4318 to control methods via the evaluate object interface. This is probably
4319 most useful for testing purposes, however.
4320
4321 Improved support for 32/64 bit physical addresses in printf()-like
4322 output. This change improves the support for physical addresses in printf
4323 debug statements and other output on both 32-bit and 64-bit hosts. It
4324 consistently outputs the appropriate number of bytes for each host. The
4325 %p specifier is unsatisfactory since it does not emit uniform output on
4326 all hosts/clib implementations (on some, leading zeros are not supported,
4327 leading to difficult-to-read output).
4328
4329 Example Code and Data Size: These are the sizes for the OS-independent
4330 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4331 debug version of the code includes the debug output trace mechanism and
4332 has a much larger code and data size.
4333
4334 Current Release:
4335 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total
4336 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
4337 Previous Release:
4338 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total
4339 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
4340
4341
4342 2) iASL Compiler/Disassembler and Tools:
4343
4344 iASL: Fix a possible fault when using the Connection() operator. Fixes a
4345 problem if the parent Field definition for the Connection operator refers
4346 to an operation region that does not exist. ACPICA BZ 1064.
4347
4348 AcpiExec: Load of local test tables is now optional. The utility has the
4349 capability to load some various tables to test features of ACPICA.
4350 However, there are enough of them that the output of the utility became
4351 confusing. With this change, only the required local tables are displayed
4352 (RSDP, XSDT, etc.) along with the actual tables loaded via the command
4353 line specification. This makes the default output simler and easier to
4354 understand. The -el command line option restores the original behavior
4355 for testing purposes.
4356
4357 AcpiExec: Added support for overlapping operation regions. This change
4358 expands the simulation of operation regions by supporting regions that
4359 overlap within the given address space. Supports SystemMemory and
4360 SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
4361
4362 AcpiExec: Added region handler support for PCI_Config and EC spaces. This
4363 allows AcpiExec to simulate these address spaces, similar to the current
4364 support for SystemMemory and SystemIO.
4365
4366 Debugger: Added new command to read/write/compare all namespace objects.
4367 The command "test objects" will exercise the entire namespace by writing
4368 new values to each data object, and ensuring that the write was
4369 successful. The original value is then restored and verified.
4370
4371 Debugger: Added the "test predefined" command. This change makes this
4372 test public and puts it under the new "test" command. The test executes
4373 each and every predefined name within the current namespace.
4374
4375
4376 ----------------------------------------
4377 18 December 2013. Summary of changes for version 20131218:
4378
4379 Global note: The ACPI 5.0A specification was released this month. There
4380 are no changes needed for ACPICA since this release of ACPI is an
4381 errata/clarification release. The specification is available at
4382 acpi.info.
4383
4384
4385 1) ACPICA kernel-resident subsystem:
4386
4387 Added validation of the XSDT root table if it is present. Some older
4388 platforms contain an XSDT that is ill-formed or otherwise invalid (such
4389 as containing some or all entries that are NULL pointers). This change
4390 adds a new function to validate the XSDT before actually using it. If the
4391 XSDT is found to be invalid, ACPICA will now automatically fall back to
4392 using the RSDT instead. Original implementation by Zhao Yakui. Ported to
4393 ACPICA and enhanced by Lv Zheng and Bob Moore.
4394
4395 Added a runtime option to ignore the XSDT and force the use of the RSDT.
4396 This change adds a runtime option that will force ACPICA to use the RSDT
4397 instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
4398 requires that an XSDT be used instead of the RSDT, the XSDT has been
4399 found to be corrupt or ill-formed on some machines. Lv Zheng.
4400
4401 Added a runtime option to favor 32-bit FADT register addresses over the
4402 64-bit addresses. This change adds an option to favor 32-bit FADT
4403 addresses when there is a conflict between the 32-bit and 64-bit versions
4404 of the same register. The default behavior is to use the 64-bit version
4405 in accordance with the ACPI specification. This can now be overridden via
4406 the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
4407
4408 During the change above, the internal "Convert FADT" and "Verify FADT"
4409 functions have been merged to simplify the code, making it easier to
4410 understand and maintain. ACPICA BZ 933.
4411
4412 Improve exception reporting and handling for GPE block installation.
4413 Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
4414 status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
4415
4416 Added helper macros to extract bus/segment numbers from the HEST table.
4417 This change adds two macros to extract the encoded bus and segment
4418 numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
4419 Betty Dall <betty.dall (a] hp.com>
4420
4421 Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
4422 by ACPICA. It is not a public macro, so it should have no effect on
4423 existing OSV code. Lv Zheng.
4424
4425 Example Code and Data Size: These are the sizes for the OS-independent
4426 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4427 debug version of the code includes the debug output trace mechanism and
4428 has a much larger code and data size.
4429
4430 Current Release:
4431 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total
4432 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
4433 Previous Release:
4434 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total
4435 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total
4436
4437
4438 2) iASL Compiler/Disassembler and Tools:
4439
4440 Disassembler: Improved pathname support for emitted External()
4441 statements. This change adds full pathname support for external names
4442 that have been resolved internally by the inclusion of additional ACPI
4443 tables (via the iASL -e option). Without this change, the disassembler
4444 can emit multiple externals for the same object, or it become confused
4445 when the Scope() operator is used on an external object. Overall, greatly
4446 improves the ability to actually recompile the emitted ASL code when
4447 objects a referenced across multiple ACPI tables. Reported by Michael
4448 Tsirkin (mst (a] redhat.com).
4449
4450 Tests/ASLTS: Updated functional control suite to execute with no errors.
4451 David Box. Fixed several errors related to the testing of the interpreter
4452 slack mode. Lv Zheng.
4453
4454 iASL: Added support to detect names that are declared within a control
4455 method, but are unused (these are temporary names that are only valid
4456 during the time the method is executing). A remark is issued for these
4457 cases. ACPICA BZ 1022.
4458
4459 iASL: Added full support for the DBG2 table. Adds full disassembler,
4460 table compiler, and template generator support for the DBG2 table (Debug
4461 Port 2 table).
4462
4463 iASL: Added full support for the PCCT table, update the table definition.
4464 Updates the PCCT table definition in the actbl3.h header and adds table
4465 compiler and template generator support.
4466
4467 iASL: Added an option to emit only error messages (no warnings/remarks).
4468 The -ve option will enable only error messages, warnings and remarks are
4469 suppressed. This can simplify debugging when only the errors are
4470 important, such as when an ACPI table is disassembled and there are many
4471 warnings and remarks -- but only the actual errors are of real interest.
4472
4473 Example ACPICA code (source/tools/examples): Updated the example code so
4474 that it builds to an actual working program, not just example code. Added
4475 ACPI tables and execution of an example control method in the DSDT. Added
4476 makefile support for Unix generation.
4477
4478
4479 ----------------------------------------
4480 15 November 2013. Summary of changes for version 20131115:
4481
4482 This release is available at https://acpica.org/downloads
4483
4484
4485 1) ACPICA kernel-resident subsystem:
4486
4487 Resource Manager: Fixed loop termination for the "get AML length"
4488 function. The loop previously had an error termination on a NULL resource
4489 pointer, which can never happen since the loop simply increments a valid
4490 resource pointer. This fix changes the loop to terminate with an error on
4491 an invalid end-of-buffer condition. The problem can be seen as an
4492 infinite loop by callers to AcpiSetCurrentResources with an invalid or
4493 corrupted resource descriptor, or a resource descriptor that is missing
4494 an END_TAG descriptor. Reported by Dan Carpenter
4495 <dan.carpenter (a] oracle.com>. Lv Zheng, Bob Moore.
4496
4497 Table unload and ACPICA termination: Delete all attached data objects
4498 during namespace node deletion. This fix updates namespace node deletion
4499 to delete the entire list of attached objects (attached via
4500 AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
4501 1024. Tomasz Nowicki (tomasz.nowicki (a] linaro.org).
4502
4503 ACPICA termination: Added support to delete all objects attached to the
4504 root namespace node. This fix deletes any and all objects that have been
4505 attached to the root node via AcpiAttachData. Previously, none of these
4506 objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
4507
4508 Debug output: Do not emit the function nesting level for the in-kernel
4509 build. The nesting level is really only useful during a single-thread
4510 execution. Therefore, only enable this output for the AcpiExec utility.
4511 Also, only emit the thread ID when executing under AcpiExec (Context
4512 switches are still always detected and a message is emitted). ACPICA BZ
4513 972.
4514
4515 Example Code and Data Size: These are the sizes for the OS-independent
4516 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4517 debug version of the code includes the debug output trace mechanism and
4518 has a much larger code and data size.
4519
4520 Current Release:
4521 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total
4522 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total
4523 Previous Release:
4524 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total
4525 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total
4526
4527
4528 2) iASL Compiler/Disassembler and Tools:
4529
4530 AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
4531 correct portable POSIX header for terminal control functions.
4532
4533 Disassembler: Fixed control method invocation issues related to the use
4534 of the CondRefOf() operator. The problem is seen in the disassembly where
4535 control method invocations may not be disassembled properly if the
4536 control method name has been used previously as an argument to CondRefOf.
4537 The solution is to not attempt to emit an external declaration for the
4538 CondRefOf target (it is not necessary in the first place). This prevents
4539 disassembler object type confusion. ACPICA BZ 988.
4540
4541 Unix Makefiles: Added an option to disable compiler optimizations and the
4542 _FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
4543 with optimizations (reportedly, gcc 4.4 for example). This change adds a
4544 command line option for make (NOOPT) that disables all compiler
4545 optimizations and the _FORTIFY_SOURCE compiler flag. The default
4546 optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
4547 1034. Lv Zheng, Bob Moore.
4548
4549 Tests/ASLTS: Added options to specify individual test cases and modes.
4550 This allows testers running aslts.sh to optionally specify individual
4551 test modes and test cases. Also added an option to disable the forced
4552 generation of the ACPICA tools from source if desired. Lv Zheng.
4553
4554 ----------------------------------------
4555 27 September 2013. Summary of changes for version 20130927:
4556
4557 This release is available at https://acpica.org/downloads
4558
4559
4560 1) ACPICA kernel-resident subsystem:
4561
4562 Fixed a problem with store operations to reference objects. This change
4563 fixes a problem where a Store operation to an ArgX object that contained
4564 a
4565 reference to a field object did not complete the automatic dereference
4566 and
4567 then write to the actual field object. Instead, the object type of the
4568 field object was inadvertently changed to match the type of the source
4569 operand. The new behavior will actually write to the field object (buffer
4570 field or field unit), thus matching the correct ACPI-defined behavior.
4571
4572 Implemented support to allow the host to redefine individual OSL
4573 prototypes. This change enables the host to redefine OSL prototypes found
4574 in the acpiosxf.h file. This allows the host to implement OSL interfaces
4575 with a macro or inlined function. Further, it allows the host to add any
4576 additional required modifiers such as __iomem, __init, __exit, etc., as
4577 necessary on a per-interface basis. Enables maximum flexibility for the
4578 OSL interfaces. Lv Zheng.
4579
4580 Hardcoded the access width for the FADT-defined reset register. The ACPI
4581 specification requires the reset register width to be 8 bits. ACPICA now
4582 hardcodes the width to 8 and ignores the FADT width value. This provides
4583 compatibility with other ACPI implementations that have allowed BIOS code
4584 with bad register width values to go unnoticed. Matthew Garett, Bob
4585 Moore,
4586 Lv Zheng.
4587
4588 Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
4589 used
4590 in the OSL header (acpiosxf). The change modifies the position of this
4591 macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
4592 build issues if the OSL defines the implementation of the interface to be
4593 an inline stub function. Lv Zheng.
4594
4595 Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
4596 initialization interfaces. This change adds a new macro for the main init
4597 and terminate external interfaces in order to support hosts that require
4598 additional or different processing for these functions. Changed from
4599 ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
4600 Zheng, Bob Moore.
4601
4602 Cleaned up the memory allocation macros for configurability. In the
4603 common
4604 case, the ACPI_ALLOCATE and related macros now resolve directly to their
4605 respective AcpiOs* OSL interfaces. Two options:
4606 1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
4607 default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
4608 2) For AcpiExec (and for debugging), the macros can optionally be
4609 resolved
4610 to the local ACPICA interfaces that track each allocation (local tracking
4611 is used to immediately detect memory leaks).
4612 Lv Zheng.
4613
4614 Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
4615 to predefine this macro to either TRUE or FALSE during the system build.
4616
4617 Replaced __FUNCTION_ with __func__ in the gcc-specific header.
4618
4619 Example Code and Data Size: These are the sizes for the OS-independent
4620 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4621 debug version of the code includes the debug output trace mechanism and
4622 has a much larger code and data size.
4623
4624 Current Release:
4625 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total
4626 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total
4627 Previous Release:
4628 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total
4629 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
4630
4631
4632 2) iASL Compiler/Disassembler and Tools:
4633
4634 iASL: Implemented wildcard support for the -e option. This simplifies use
4635 when there are many SSDTs that must be included to resolve external
4636 method
4637 declarations. ACPICA BZ 1041. Example:
4638 iasl -e ssdt*.dat -d dsdt.dat
4639
4640 AcpiExec: Add history/line-editing for Unix/Linux systems. This change
4641 adds a portable module that implements full history and limited line
4642 editing for Unix and Linux systems. It does not use readline() due to
4643 portability issues. Instead it uses the POSIX termio interface to put the
4644 terminal in raw input mode so that the various special keys can be
4645 trapped
4646 (such as up/down-arrow for history support and left/right-arrow for line
4647 editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
4648
4649 AcpiXtract: Add support to handle (ignore) "empty" lines containing only
4650 one or more spaces. This provides compatible with early or different
4651 versions of the AcpiDump utility. ACPICA BZ 1044.
4652
4653 AcpiDump: Do not ignore tables that contain only an ACPI table header.
4654 Apparently, some BIOSs create SSDTs that contain an ACPI table header but
4655 no other data. This change adds support to dump these tables. Any tables
4656 shorter than the length of an ACPI table header remain in error (an error
4657 message is emitted). Reported by Yi Li.
4658
4659 Debugger: Echo actual command along with the "unknown command" message.
4660
4661 ----------------------------------------
4662 23 August 2013. Summary of changes for version 20130823:
4663
4664 1) ACPICA kernel-resident subsystem:
4665
4666 Implemented support for host-installed System Control Interrupt (SCI)
4667 handlers. Certain ACPI functionality requires the host to handle raw
4668 SCIs. For example, the "SCI Doorbell" that is defined for memory power
4669 state support requires the host device driver to handle SCIs to examine
4670 if the doorbell has been activated. Multiple SCI handlers can be
4671 installed to allow for future expansion. New external interfaces are
4672 AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
4673 details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
4674
4675 Operation region support: Never locally free the handler "context"
4676 pointer. This change removes some dangerous code that attempts to free
4677 the handler context pointer in some (rare) circumstances. The owner of
4678 the handler owns this pointer and the ACPICA code should never touch it.
4679 Although not seen to be an issue in any kernel, it did show up as a
4680 problem (fault) under AcpiExec. Also, set the internal storage field for
4681 the context pointer to zero when the region is deactivated, simply for
4682 sanity. David Box. ACPICA BZ 1039.
4683
4684 AcpiRead: On error, do not modify the return value target location. If an
4685 error happens in the middle of a split 32/32 64-bit I/O operation, do not
4686 modify the target of the return value pointer. Makes the code consistent
4687 with the rest of ACPICA. Bjorn Helgaas.
4688
4689 Example Code and Data Size: These are the sizes for the OS-independent
4690 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4691 debug version of the code includes the debug output trace mechanism and
4692 has a much larger code and data size.
4693
4694 Current Release:
4695 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total
4696 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
4697 Previous Release:
4698 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
4699 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total
4700
4701
4702 2) iASL Compiler/Disassembler and Tools:
4703
4704 AcpiDump: Implemented several new features and fixed some problems:
4705 1) Added support to dump the RSDP, RSDT, and XSDT tables.
4706 2) Added support for multiple table instances (SSDT, UEFI).
4707 3) Added option to dump "customized" (overridden) tables (-c).
4708 4) Fixed a problem where some table filenames were improperly
4709 constructed.
4710 5) Improved some error messages, removed some unnecessary messages.
4711
4712 iASL: Implemented additional support for disassembly of ACPI tables that
4713 contain invocations of external control methods. The -fe<file> option
4714 allows the import of a file that specifies the external methods along
4715 with the required number of arguments for each -- allowing for the
4716 correct disassembly of the table. This is a workaround for a limitation
4717 of AML code where the disassembler often cannot determine the number of
4718 arguments required for an external control method and generates incorrect
4719 ASL code. See the iASL reference for details. ACPICA BZ 1030.
4720
4721 Debugger: Implemented a new command (paths) that displays the full
4722 pathnames (namepaths) and object types of all objects in the namespace.
4723 This is an alternative to the namespace command.
4724
4725 Debugger: Implemented a new command (sci) that invokes the SCI dispatch
4726 mechanism and any installed handlers.
4727
4728 iASL: Fixed a possible segfault for "too many parent prefixes" condition.
4729 This can occur if there are too many parent prefixes in a namepath (for
4730 example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
4731
4732 Application OSLs: Set the return value for the PCI read functions. These
4733 functions simply return AE_OK, but should set the return value to zero
4734 also. This change implements this. ACPICA BZ 1038.
4735
4736 Debugger: Prevent possible command line buffer overflow. Increase the
4737 size of a couple of the debugger line buffers, and ensure that overflow
4738 cannot happen. ACPICA BZ 1037.
4739
4740 iASL: Changed to abort immediately on serious errors during the parsing
4741 phase. Due to the nature of ASL, there is no point in attempting to
4742 compile these types of errors, and they typically end up causing a
4743 cascade of hundreds of errors which obscure the original problem.
4744
4745 ----------------------------------------
4746 25 July 2013. Summary of changes for version 20130725:
4747
4748 1) ACPICA kernel-resident subsystem:
4749
4750 Fixed a problem with the DerefOf operator where references to FieldUnits
4751 and BufferFields incorrectly returned the parent object, not the actual
4752 value of the object. After this change, a dereference of a FieldUnit
4753 reference results in a read operation on the field to get the value, and
4754 likewise, the appropriate BufferField value is extracted from the target
4755 buffer.
4756
4757 Fixed a problem where the _WAK method could cause a fault under these
4758 circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
4759 method returned no value. The problem is rarely seen because most kernels
4760 run ACPICA in slack mode.
4761
4762 For the DerefOf operator, a fatal error now results if an attempt is made
4763 to dereference a reference (created by the Index operator) to a NULL
4764 package element. Provides compatibility with other ACPI implementations,
4765 and this behavior will be added to a future version of the ACPI
4766 specification.
4767
4768 The ACPI Power Management Timer (defined in the FADT) is now optional.
4769 This provides compatibility with other ACPI implementations and will
4770 appear in the next version of the ACPI specification. If there is no PM
4771 Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
4772 zero in the FADT indicates no PM timer.
4773
4774 Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
4775 allows the host to globally enable/disable all vendor strings, all
4776 feature strings, or both. Intended to be primarily used for debugging
4777 purposes only. Lv Zheng.
4778
4779 Expose the collected _OSI data to the host via a global variable. This
4780 data tracks the highest level vendor ID that has been invoked by the BIOS
4781 so that the host (and potentially ACPICA itself) can change behaviors
4782 based upon the age of the BIOS.
4783
4784 Example Code and Data Size: These are the sizes for the OS-independent
4785 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4786 debug version of the code includes the debug output trace mechanism and
4787 has a much larger code and data size.
4788
4789 Current Release:
4790 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
4791 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
4792 Previous Release:
4793 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
4794 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
4795
4796
4797 2) iASL Compiler/Disassembler and Tools:
4798
4799 iASL: Created the following enhancements for the -so option (create
4800 offset table):
4801 1)Add offsets for the last nameseg in each namepath for every supported
4802 object type
4803 2)Add support for Processor, Device, Thermal Zone, and Scope objects
4804 3)Add the actual AML opcode for the parent object of every supported
4805 object type
4806 4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
4807
4808 Disassembler: Emit all unresolved external symbols in a single block.
4809 These are external references to control methods that could not be
4810 resolved, and thus, the disassembler had to make a guess at the number of
4811 arguments to parse.
4812
4813 iASL: The argument to the -T option (create table template) is now
4814 optional. If not specified, the default table is a DSDT, typically the
4815 most common case.
4816
4817 ----------------------------------------
4818 26 June 2013. Summary of changes for version 20130626:
4819
4820 1) ACPICA kernel-resident subsystem:
4821
4822 Fixed an issue with runtime repair of the _CST object. Null or invalid
4823 elements were not always removed properly. Lv Zheng.
4824
4825 Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
4826 FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
4827 the maximum number of GPEs is 1016. Use of multiple GPE block devices
4828 makes the system-wide number of GPEs essentially unlimited.
4829
4830 Example Code and Data Size: These are the sizes for the OS-independent
4831 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4832 debug version of the code includes the debug output trace mechanism and
4833 has a much larger code and data size.
4834
4835 Current Release:
4836 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
4837 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
4838 Previous Release:
4839 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
4840 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
4841
4842
4843 2) iASL Compiler/Disassembler and Tools:
4844
4845 Portable AcpiDump: Implemented full support for the Linux and FreeBSD
4846 hosts. Now supports Linux, FreeBSD, and Windows.
4847
4848 Disassembler: Added some missing types for the HEST and EINJ tables: "Set
4849 Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
4850
4851 iASL/Preprocessor: Implemented full support for nested
4852 #if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
4853
4854 Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
4855 max. The original purpose of this constraint was to limit the amount of
4856 debug output. However, the string function in question (UtPrintString) is
4857 now used for the disassembler also, where 256 bytes is insufficient.
4858 Reported by RehabMan@GitHub.
4859
4860 iASL/DataTables: Fixed some problems and issues with compilation of DMAR
4861 tables. ACPICA BZ 999. Lv Zheng.
4862
4863 iASL: Fixed a couple of error exit issues that could result in a "Could
4864 not delete <file>" message during ASL compilation.
4865
4866 AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
4867 the actual signatures for these tables are "FACP" and "APIC",
4868 respectively.
4869
4870 AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
4871 tables are allowed to have multiple instances.
4872
4873 ----------------------------------------
4874 17 May 2013. Summary of changes for version 20130517:
4875
4876 1) ACPICA kernel-resident subsystem:
4877
4878 Fixed a regression introduced in version 20130328 for _INI methods. This
4879 change fixes a problem introduced in 20130328 where _INI methods are no
4880 longer executed properly because of a memory block that was not
4881 initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
4882 <tomasz.nowicki (a] linaro.org>.
4883
4884 Fixed a possible problem with the new extended sleep registers in the
4885 ACPI
4886 5.0 FADT. Do not use these registers (even if populated) unless the HW-
4887 reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
4888 1020. Lv Zheng.
4889
4890 Implemented return value repair code for _CST predefined objects: Sort
4891 the
4892 list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
4893
4894 Implemented a debug-only option to disable loading of SSDTs from the
4895 RSDT/XSDT during ACPICA initialization. This can be useful for debugging
4896 ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
4897 acglobal.h - ACPICA BZ 1005. Lv Zheng.
4898
4899 Fixed some issues in the ACPICA initialization and termination code:
4900 Tomasz Nowicki <tomasz.nowicki (a] linaro.org>
4901 1) Clear events initialized flag upon event component termination. ACPICA
4902 BZ 1013.
4903 2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
4904 3) Delete global lock pending lock during termination. ACPICA BZ 1012.
4905 4) Clear debug buffer global on termination to prevent possible multiple
4906 delete. ACPICA BZ 1010.
4907
4908 Standardized all switch() blocks across the entire source base. After
4909 many
4910 years, different formatting for switch() had crept in. This change makes
4911 the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
4912
4913 Split some files to enhance ACPICA modularity and configurability:
4914 1) Split buffer dump routines into utilities/utbuffer.c
4915 2) Split internal error message routines into utilities/uterror.c
4916 3) Split table print utilities into tables/tbprint.c
4917 4) Split iASL command-line option processing into asloptions.c
4918
4919 Makefile enhancements:
4920 1) Support for all new files above.
4921 2) Abort make on errors from any subcomponent. Chao Guan.
4922 3) Add build support for Apple Mac OS X. Liang Qi.
4923
4924 Example Code and Data Size: These are the sizes for the OS-independent
4925 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4926 debug version of the code includes the debug output trace mechanism and
4927 has a much larger code and data size.
4928
4929 Current Release:
4930 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
4931 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
4932 Previous Release:
4933 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
4934 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
4935
4936
4937 2) iASL Compiler/Disassembler and Tools:
4938
4939 New utility: Implemented an easily portable version of the acpidump
4940 utility to extract ACPI tables from the system (or a file) in an ASCII
4941 hex
4942 dump format. The top-level code implements the various command line
4943 options, file I/O, and table dump routines. To port to a new host, only
4944 three functions need to be implemented to get tables -- since this
4945 functionality is OS-dependent. See the tools/acpidump/apmain.c module and
4946 the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
4947 1) The Windows version obtains the ACPI tables from the Registry.
4948 2) The Linux version is under development.
4949 3) Other hosts - If an OS-dependent module is submitted, it will be
4950 distributed with ACPICA.
4951
4952 iASL: Fixed a regression for -D preprocessor option (define symbol). A
4953 restructuring/change to the initialization sequence caused this option to
4954 no longer work properly.
4955
4956 iASL: Implemented a mechanism to disable specific warnings and remarks.
4957 Adds a new command line option, "-vw <messageid> as well as "#pragma
4958 disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
4959
4960 iASL: Fix for too-strict package object validation. The package object
4961 validation for return values from the predefined names is a bit too
4962 strict, it does not allow names references within the package (which will
4963 be resolved at runtime.) These types of references cannot be validated at
4964 compile time. This change ignores named references within package objects
4965 for names that return or define static packages.
4966
4967 Debugger: Fixed the 80-character command line limitation for the History
4968 command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
4969
4970 iASL: Added control method and package support for the -so option
4971 (generates AML offset table for BIOS support.)
4972
4973 iASL: issue a remark if a non-serialized method creates named objects. If
4974 a thread blocks within the method for any reason, and another thread
4975 enters the method, the method will fail because an attempt will be made
4976 to
4977 create the same (named) object twice. In this case, issue a remark that
4978 the method should be marked serialized. NOTE: may become a warning later.
4979 ACPICA BZ 909.
4980
4981 ----------------------------------------
4982 18 April 2013. Summary of changes for version 20130418:
4983
4984 1) ACPICA kernel-resident subsystem:
4985
4986 Fixed a possible buffer overrun during some rare but specific field unit
4987 read operations. This overrun can only happen if the DSDT version is 1 --
4988 meaning that all AML integers are 32 bits -- and the field length is
4989 between 33 and 55 bits long. During the read, an internal buffer object
4990 is
4991 created for the field unit because the field is larger than an integer
4992 (32
4993 bits). However, in this case, the buffer will be incorrectly written
4994 beyond the end because the buffer length is less than the internal
4995 minimum
4996 of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
4997 long, but a full 8 bytes will be written.
4998
4999 Updated the Embedded Controller "orphan" _REG method support. This refers
5000 to _REG methods under the EC device that have no corresponding operation
5001 region. This is allowed by the ACPI specification. This update removes a
5002 dependency on the existence an ECDT table. It will execute an orphan _REG
5003 method as long as the operation region handler for the EC is installed at
5004 the EC device node and not the namespace root. Rui Zhang (original
5005 update), Bob Moore (update/integrate).
5006
5007 Implemented run-time argument typechecking for all predefined ACPI names
5008 (_STA, _BIF, etc.) This change performs object typechecking on all
5009 incoming arguments for all predefined names executed via
5010 AcpiEvaluateObject. This ensures that ACPI-related device drivers are
5011 passing correct object types as well as the correct number of arguments
5012 (therefore identifying any issues immediately). Also, the ASL/namespace
5013 definition of the predefined name is checked against the ACPI
5014 specification for the proper argument count. Adds one new file,
5015 nsarguments.c
5016
5017 Changed an exception code for the ASL UnLoad() operator. Changed the
5018 exception code for the case where the input DdbHandle is invalid, from
5019 AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
5020
5021 Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
5022 global makefile. The use of this flag causes compiler errors on earlier
5023 versions of GCC, so it has been removed for compatibility.
5024
5025 Miscellaneous cleanup:
5026 1) Removed some unused/obsolete macros
5027 2) Fixed a possible memory leak in the _OSI support
5028 3) Removed an unused variable in the predefined name support
5029 4) Windows OSL: remove obsolete reference to a memory list field
5030
5031 Example Code and Data Size: These are the sizes for the OS-independent
5032 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5033 debug version of the code includes the debug output trace mechanism and
5034 has a much larger code and data size.
5035
5036 Current Release:
5037 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total
5038 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total
5039 Previous Release:
5040 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
5041 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
5042
5043
5044 2) iASL Compiler/Disassembler and Tools:
5045
5046 AcpiExec: Added installation of a handler for the SystemCMOS address
5047 space. This prevents control method abort if a method accesses this
5048 space.
5049
5050 AcpiExec: Added support for multiple EC devices, and now install EC
5051 operation region handler(s) at the actual EC device instead of the
5052 namespace root. This reflects the typical behavior of host operating
5053 systems.
5054
5055 AcpiExec: Updated to ensure that all operation region handlers are
5056 installed before the _REG methods are executed. This prevents a _REG
5057 method from aborting if it accesses an address space has no handler.
5058 AcpiExec installs a handler for every possible address space.
5059
5060 Debugger: Enhanced the "handlers" command to display non-root handlers.
5061 This change enhances the handlers command to display handlers associated
5062 with individual devices throughout the namespace, in addition to the
5063 currently supported display of handlers associated with the root
5064 namespace
5065 node.
5066
5067 ASL Test Suite: Several test suite errors have been identified and
5068 resolved, reducing the total error count during execution. Chao Guan.
5069
5070 ----------------------------------------
5071 28 March 2013. Summary of changes for version 20130328:
5072
5073 1) ACPICA kernel-resident subsystem:
5074
5075 Fixed several possible race conditions with the internal object reference
5076 counting mechanism. Some of the external ACPICA interfaces update object
5077 reference counts without holding the interpreter or namespace lock. This
5078 change adds a spinlock to protect reference count updates on the internal
5079 ACPICA objects. Reported by and with assistance from Andriy Gapon
5080 (avg (a] FreeBSD.org).
5081
5082 FADT support: Removed an extraneous warning for very large GPE register
5083 sets. This change removes a size mismatch warning if the legacy length
5084 field for a GPE register set is larger than the 64-bit GAS structure can
5085 accommodate. GPE register sets can be larger than the 255-bit width
5086 limitation of the GAS structure. Linn Crosetto (linn (a] hp.com).
5087
5088 _OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
5089 return from this interface. Handles a possible timeout case if
5090 ACPI_WAIT_FOREVER is modified by the host to be a value less than
5091 "forever". Jung-uk Kim.
5092
5093 Predefined name support: Add allowed/required argument type information
5094 to
5095 the master predefined info table. This change adds the infrastructure to
5096 enable typechecking on incoming arguments for all predefined
5097 methods/objects. It does not actually contain the code that will fully
5098 utilize this information, this is still under development. Also condenses
5099 some duplicate code for the predefined names into a new module,
5100 utilities/utpredef.c
5101
5102 Example Code and Data Size: These are the sizes for the OS-independent
5103 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5104 debug version of the code includes the debug output trace mechanism and
5105 has a much larger code and data size.
5106
5107 Previous Release:
5108 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total
5109 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total
5110 Current Release:
5111 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total
5112 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total
5113
5114
5115 2) iASL Compiler/Disassembler and Tools:
5116
5117 iASL: Implemented a new option to simplify the development of ACPI-
5118 related
5119 BIOS code. Adds support for a new "offset table" output file. The -so
5120 option will create a C table containing the AML table offsets of various
5121 named objects in the namespace so that BIOS code can modify them easily
5122 at
5123 boot time. This can simplify BIOS runtime code by eliminating expensive
5124 searches for "magic values", enhancing boot times and adding greater
5125 reliability. With assistance from Lee Hamel.
5126
5127 iASL: Allow additional predefined names to return zero-length packages.
5128 Now, all predefined names that are defined by the ACPI specification to
5129 return a "variable-length package of packages" are allowed to return a
5130 zero length top-level package. This allows the BIOS to tell the host that
5131 the requested feature is not supported, and supports existing BIOS/ASL
5132 code and practices.
5133
5134 iASL: Changed the "result not used" warning to an error. This is the case
5135 where an ASL operator is effectively a NOOP because the result of the
5136 operation is not stored anywhere. For example:
5137 Add (4, Local0)
5138 There is no target (missing 3rd argument), nor is the function return
5139 value used. This is potentially a very serious problem -- since the code
5140 was probably intended to do something, but for whatever reason, the value
5141 was not stored. Therefore, this issue has been upgraded from a warning to
5142 an error.
5143
5144 AcpiHelp: Added allowable/required argument types to the predefined names
5145 info display. This feature utilizes the recent update to the predefined
5146 names table (above).
5147
5148 ----------------------------------------
5149 14 February 2013. Summary of changes for version 20130214:
5150
5151 1) ACPICA Kernel-resident Subsystem:
5152
5153 Fixed a possible regression on some hosts: Reinstated the safe return
5154 macros (return_ACPI_STATUS, etc.) that ensure that the argument is
5155 evaluated only once. Although these macros are not needed for the ACPICA
5156 code itself, they are often used by ACPI-related host device drivers
5157 where
5158 the safe feature may be necessary.
5159
5160 Fixed several issues related to the ACPI 5.0 reduced hardware support
5161 (SOC): Now ensure that if the platform declares itself as hardware-
5162 reduced
5163 via the FADT, the following functions become NOOPs (and always return
5164 AE_OK) because ACPI is always enabled by definition on these machines:
5165 AcpiEnable
5166 AcpiDisable
5167 AcpiHwGetMode
5168 AcpiHwSetMode
5169
5170 Dynamic Object Repair: Implemented additional runtime repairs for
5171 predefined name return values. Both of these repairs can simplify code in
5172 the related device drivers that invoke these methods:
5173 1) For the _STR and _MLS names, automatically repair/convert an ASCII
5174 string to a Unicode buffer.
5175 2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
5176 a
5177 lone end tag descriptor in the following cases: A Return(0) was executed,
5178 a null buffer was returned, or no object at all was returned (non-slack
5179 mode only). Adds a new file, nsconvert.c
5180 ACPICA BZ 998. Bob Moore, Lv Zheng.
5181
5182 Resource Manager: Added additional code to prevent possible infinite
5183 loops
5184 while traversing corrupted or ill-formed resource template buffers. Check
5185 for zero-length resource descriptors in all code that loops through
5186 resource templates (the length field is used to index through the
5187 template). This change also hardens the external AcpiWalkResources and
5188 AcpiWalkResourceBuffer interfaces.
5189
5190 Local Cache Manager: Enhanced the main data structure to eliminate an
5191 unnecessary mechanism to access the next object in the list. Actually
5192 provides a small performance enhancement for hosts that use the local
5193 ACPICA cache manager. Jung-uk Kim.
5194
5195 Example Code and Data Size: These are the sizes for the OS-independent
5196 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5197 debug version of the code includes the debug output trace mechanism and
5198 has a much larger code and data size.
5199
5200 Previous Release:
5201 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
5202 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
5203 Current Release:
5204 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total
5205 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total
5206
5207
5208 2) iASL Compiler/Disassembler and Tools:
5209
5210 iASL/Disassembler: Fixed several issues with the definition of the ACPI
5211 5.0 RASF table (RAS Feature Table). This change incorporates late changes
5212 that were made to the ACPI 5.0 specification.
5213
5214 iASL/Disassembler: Added full support for the following new ACPI tables:
5215 1) The MTMR table (MID Timer Table)
5216 2) The VRTC table (Virtual Real Time Clock Table).
5217 Includes header file, disassembler, table compiler, and template support
5218 for both tables.
5219
5220 iASL: Implemented compile-time validation of package objects returned by
5221 predefined names. This new feature validates static package objects
5222 returned by the various predefined names defined to return packages. Both
5223 object types and package lengths are validated, for both parent packages
5224 and sub-packages, if any. The code is similar in structure and behavior
5225 to
5226 the runtime repair mechanism within the AML interpreter and uses the
5227 existing predefined name information table. Adds a new file, aslprepkg.c.
5228 ACPICA BZ 938.
5229
5230 iASL: Implemented auto-detection of binary ACPI tables for disassembly.
5231 This feature detects a binary file with a valid ACPI table header and
5232 invokes the disassembler automatically. Eliminates the need to
5233 specifically invoke the disassembler with the -d option. ACPICA BZ 862.
5234
5235 iASL/Disassembler: Added several warnings for the case where there are
5236 unresolved control methods during the disassembly. This can potentially
5237 cause errors when the output file is compiled, because the disassembler
5238 assumes zero method arguments in these cases (it cannot determine the
5239 actual number of arguments without resolution/definition of the method).
5240
5241 Debugger: Added support to display all resources with a single command.
5242 Invocation of the resources command with no arguments will now display
5243 all
5244 resources within the current namespace.
5245
5246 AcpiHelp: Added descriptive text for each ACPICA exception code displayed
5247 via the -e option.
5248
5249 ----------------------------------------
5250 17 January 2013. Summary of changes for version 20130117:
5251
5252 1) ACPICA Kernel-resident Subsystem:
5253
5254 Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
5255 return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
5256 objects to return a package containing one integer, most BIOS code
5257 returns
5258 two integers and the previous code reflects that. However, we also need
5259 to
5260 support BIOS code that actually implements to the ACPI spec, and this
5261 change reflects this.
5262
5263 Fixed two issues with the ACPI_DEBUG_PRINT macros:
5264 1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
5265 C compilers that require this support.
5266 2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
5267 ACPI_DEBUG is already used by many of the various hosts.
5268
5269 Updated all ACPICA copyrights and signons to 2013. Added the 2013
5270 copyright to all module headers and signons, including the standard Linux
5271 header. This affects virtually every file in the ACPICA core subsystem,
5272 iASL compiler, all ACPICA utilities, and the test suites.
5273
5274 Example Code and Data Size: These are the sizes for the OS-independent
5275 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5276 debug version of the code includes the debug output trace mechanism and
5277 has a much larger code and data size.
5278
5279 Previous Release:
5280 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
5281 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
5282 Current Release:
5283 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
5284 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
5285
5286
5287 2) iASL Compiler/Disassembler and Tools:
5288
5289 Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
5290 prevent a possible fault on some hosts. Some C libraries modify the arg
5291 pointer parameter to vfprintf making it difficult to call it twice in the
5292 AcpiOsVprintf function. Use a local buffer to workaround this issue. This
5293 does not affect the Windows OSL since the Win C library does not modify
5294 the arg pointer. Chao Guan, Bob Moore.
5295
5296 iASL: Fixed a possible infinite loop when the maximum error count is
5297 reached. If an output file other than the .AML file is specified (such as
5298 a listing file), and the maximum number of errors is reached, do not
5299 attempt to flush data to the output file(s) as the compiler is aborting.
5300 This can cause an infinite loop as the max error count code essentially
5301 keeps calling itself.
5302
5303 iASL/Disassembler: Added an option (-in) to ignore NOOP
5304 opcodes/operators.
5305 Implemented for both the compiler and the disassembler. Often, the NOOP
5306 opcode is used as padding for packages that are changed dynamically by
5307 the
5308 BIOS. When disassembled and recompiled, these NOOPs will cause syntax
5309 errors. This option causes the disassembler to ignore all NOOP opcodes
5310 (0xA3), and it also causes the compiler to ignore all ASL source code
5311 NOOP
5312 statements as well.
5313
5314 Debugger: Enhanced the Sleep command to execute all sleep states. This
5315 change allows Sleep to be invoked with no arguments and causes the
5316 debugger to execute all of the sleep states, 0-5, automatically.
5317
5318 ----------------------------------------
5319 20 December 2012. Summary of changes for version 20121220:
5320
5321 1) ACPICA Kernel-resident Subsystem:
5322
5323 Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
5324 alternate entry point for AcpiWalkResources and improves the usability of
5325 the resource manager by accepting as input a buffer containing the output
5326 of either a _CRS, _PRS, or _AEI method. The key functionality is that the
5327 input buffer is not deleted by this interface so that it can be used by
5328 the host later. See the ACPICA reference for details.
5329
5330 Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
5331 (DSDT version < 2). The constant will be truncated and this warning
5332 reflects that behavior.
5333
5334 Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
5335 ExtendedInterrupt, and GpioInt descriptors. This change adds support to
5336 both get and set the new wake bit in these descriptors, separately from
5337 the existing share bit. Reported by Aaron Lu.
5338
5339 Interpreter: Fix Store() when an implicit conversion is not possible. For
5340 example, in the cases such as a store of a string to an existing package
5341 object, implement the store as a CopyObject(). This is a small departure
5342 from the ACPI specification which states that the control method should
5343 be
5344 aborted in this case. However, the ASLTS suite depends on this behavior.
5345
5346 Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
5347 macros: check if debug output is currently enabled as soon as possible to
5348 minimize performance impact if debug is in fact not enabled.
5349
5350 Source code restructuring: Cleanup to improve modularity. The following
5351 new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
5352 psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
5353 Associated makefiles and project files have been updated.
5354
5355 Changed an exception code for LoadTable operator. For the case where one
5356 of the input strings is too long, change the returned exception code from
5357 AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
5358
5359 Fixed a possible memory leak in dispatcher error path. On error, delete
5360 the mutex object created during method mutex creation. Reported by
5361 tim.gardner (a] canonical.com.
5362
5363 Example Code and Data Size: These are the sizes for the OS-independent
5364 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5365 debug version of the code includes the debug output trace mechanism and
5366 has a much larger code and data size.
5367
5368 Previous Release:
5369 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
5370 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
5371 Current Release:
5372 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
5373 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
5374
5375
5376 2) iASL Compiler/Disassembler and Tools:
5377
5378 iASL: Disallow a method call as argument to the ObjectType ASL operator.
5379 This change tracks an errata to the ACPI 5.0 document. The AML grammar
5380 will not allow the interpreter to differentiate between a method and a
5381 method invocation when these are used as an argument to the ObjectType
5382 operator. The ACPI specification change is to disallow a method
5383 invocation
5384 (UserTerm) for the ObjectType operator.
5385
5386 Finish support for the TPM2 and CSRT tables in the headers, table
5387 compiler, and disassembler.
5388
5389 Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
5390 always expires immediately if the semaphore is not available. The
5391 original
5392 code was using a relative-time timeout, but sem_timedwait requires the
5393 use
5394 of an absolute time.
5395
5396 iASL: Added a remark if the Timer() operator is used within a 32-bit
5397 table. This operator returns a 64-bit time value that will be truncated
5398 within a 32-bit table.
5399
5400 iASL Source code restructuring: Cleanup to improve modularity. The
5401 following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
5402 aslmethod.c, and aslfileio.c. Associated makefiles and project files have
5403 been updated.
5404
5405
5406 ----------------------------------------
5407 14 November 2012. Summary of changes for version 20121114:
5408
5409 1) ACPICA Kernel-resident Subsystem:
5410
5411 Implemented a performance enhancement for ACPI/AML Package objects. This
5412 change greatly increases the performance of Package objects within the
5413 interpreter. It changes the processing of reference counts for packages
5414 by
5415 optimizing for the most common case where the package sub-objects are
5416 either Integers, Strings, or Buffers. Increases the overall performance
5417 of
5418 the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
5419 2X.)
5420 Chao Guan. ACPICA BZ 943.
5421
5422 Implemented and deployed common macros to extract flag bits from resource
5423 descriptors. Improves readability and maintainability of the code. Fixes
5424 a
5425 problem with the UART serial bus descriptor for the number of data bits
5426 flags (was incorrectly 2 bits, should be 3).
5427
5428 Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
5429 of the macros and changed the SETx macros to the style of (destination,
5430 source). Also added ACPI_CASTx companion macros. Lv Zheng.
5431
5432 Example Code and Data Size: These are the sizes for the OS-independent
5433 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5434 debug version of the code includes the debug output trace mechanism and
5435 has a much larger code and data size.
5436
5437 Previous Release:
5438 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
5439 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
5440 Current Release:
5441 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
5442 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
5443
5444
5445 2) iASL Compiler/Disassembler and Tools:
5446
5447 Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
5448 adds the ShareAndWake and ExclusiveAndWake flags which were added to the
5449 Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
5450
5451 Disassembler: Fixed a problem with external declaration generation. Fixes
5452 a problem where an incorrect pathname could be generated for an external
5453 declaration if the original reference to the object includes leading
5454 carats (^). ACPICA BZ 984.
5455
5456 Debugger: Completed a major update for the Disassemble<method> command.
5457 This command was out-of-date and did not properly disassemble control
5458 methods that had any reasonable complexity. This fix brings the command
5459 up
5460 to the same level as the rest of the disassembler. Adds one new file,
5461 dmdeferred.c, which is existing code that is now common with the main
5462 disassembler and the debugger disassemble command. ACPICA MZ 978.
5463
5464 iASL: Moved the parser entry prototype to avoid a duplicate declaration.
5465 Newer versions of Bison emit this prototype, so moved the prototype out
5466 of
5467 the iASL header to where it is actually used in order to avoid a
5468 duplicate
5469 declaration.
5470
5471 iASL/Tools: Standardized use of the stream I/O functions:
5472 1) Ensure check for I/O error after every fopen/fread/fwrite
5473 2) Ensure proper order of size/count arguments for fread/fwrite
5474 3) Use test of (Actual != Requested) after all fwrite, and most fread
5475 4) Standardize I/O error messages
5476 Improves reliability and maintainability of the code. Bob Moore, Lv
5477 Zheng.
5478 ACPICA BZ 981.
5479
5480 Disassembler: Prevent duplicate External() statements. During generation
5481 of external statements, detect similar pathnames that are actually
5482 duplicates such as these:
5483 External (\ABCD)
5484 External (ABCD)
5485 Remove all leading '\' characters from pathnames during the external
5486 statement generation so that duplicates will be detected and tossed.
5487 ACPICA BZ 985.
5488
5489 Tools: Replace low-level I/O with stream I/O functions. Replace
5490 open/read/write/close with the stream I/O equivalents
5491 fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
5492 Moore.
5493
5494 AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
5495 name header so that AcpiXtract recognizes the output file/table.
5496
5497 iASL: Remove obsolete -2 option flag. Originally intended to force the
5498 compiler/disassembler into an ACPI 2.0 mode, this was never implemented
5499 and the entire concept is now obsolete.
5500
5501 ----------------------------------------
5502 18 October 2012. Summary of changes for version 20121018:
5503
5504
5505 1) ACPICA Kernel-resident Subsystem:
5506
5507 Updated support for the ACPI 5.0 MPST table. Fixes some problems
5508 introduced by late changes to the table as it was added to the ACPI 5.0
5509 specification. Includes header, disassembler, and data table compiler
5510 support as well as a new version of the MPST template.
5511
5512 AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
5513 5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
5514 methods: _HID, _CID, and _UID.
5515
5516 Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
5517 ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
5518 name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
5519 names for their various drivers. Affects the AcpiGetObjectInfo external
5520 interface, and other internal interfaces as well.
5521
5522 Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
5523 This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
5524 on machines that support non-aligned transfers. Optimizes for this case
5525 rather than using a strncpy. With assistance from Zheng Lv.
5526
5527 Resource Manager: Small fix for buffer size calculation. Fixed a one byte
5528 error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
5529
5530 Added a new debug print message for AML mutex objects that are force-
5531 released. At control method termination, any currently acquired mutex
5532 objects are force-released. Adds a new debug-only message for each one
5533 that is released.
5534
5535 Audited/updated all ACPICA return macros and the function debug depth
5536 counter: 1) Ensure that all functions that use the various TRACE macros
5537 also use the appropriate ACPICA return macros. 2) Ensure that all normal
5538 return statements surround the return expression (value) with parens to
5539 ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
5540 Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
5541
5542 Global source code changes/maintenance: All extra lines at the start and
5543 end of each source file have been removed for consistency. Also, within
5544 comments, all new sentences start with a single space instead of a double
5545 space, again for consistency across the code base.
5546
5547 Example Code and Data Size: These are the sizes for the OS-independent
5548 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5549 debug version of the code includes the debug output trace mechanism and
5550 has a much larger code and data size.
5551
5552 Previous Release:
5553 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total
5554 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total
5555 Current Release:
5556 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
5557 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
5558
5559
5560 2) iASL Compiler/Disassembler and Tools:
5561
5562 AcpiExec: Improved the algorithm used for memory leak/corruption
5563 detection. Added some intelligence to the code that maintains the global
5564 list of allocated memory. The list is now ordered by allocated memory
5565 address, significantly improving performance. When running AcpiExec on
5566 the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
5567 on the platform and/or the environment. Note, this performance
5568 enhancement affects the AcpiExec utility only, not the kernel-resident
5569 ACPICA code.
5570
5571 Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
5572 the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
5573 incorrect table offset reported for invalid opcodes. Report the original
5574 32-bit value for bad ACPI_NAMEs (as well as the repaired name.)
5575
5576 Disassembler: Enhanced the -vt option to emit the binary table data in
5577 hex format to assist with debugging.
5578
5579 Fixed a potential filename buffer overflow in osunixdir.c. Increased the
5580 size of file structure. Colin Ian King.
5581
5582 ----------------------------------------
5583 13 September 2012. Summary of changes for version 20120913:
5584
5585
5586 1) ACPICA Kernel-resident Subsystem:
5587
5588 ACPI 5.0: Added two new notify types for the Hardware Error Notification
5589 Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
5590 and
5591 MCE(6).
5592
5593 Table Manager: Merged/removed duplicate code in the root table resize
5594 functions. One function is external, the other is internal. Lv Zheng,
5595 ACPICA
5596 BZ 846.
5597
5598 Makefiles: Completely removed the obsolete "Linux" makefiles under
5599 acpica/generate/linux. These makefiles are obsolete and have been
5600 replaced
5601 by
5602 the generic unix makefiles under acpica/generate/unix.
5603
5604 Makefiles: Ensure that binary files always copied properly. Minor rule
5605 change
5606 to ensure that the final binary output files are always copied up to the
5607 appropriate binary directory (bin32 or bin64.)
5608
5609 Example Code and Data Size: These are the sizes for the OS-independent
5610 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5611 debug
5612 version of the code includes the debug output trace mechanism and has a
5613 much
5614 larger code and data size.
5615
5616 Previous Release:
5617 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total
5618 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total
5619 Current Release:
5620 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total
5621 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total
5622
5623
5624 2) iASL Compiler/Disassembler and Tools:
5625
5626 Disassembler: Fixed a possible fault during the disassembly of resource
5627 descriptors when a second parse is required because of the invocation of
5628 external control methods within the table. With assistance from
5629 adq (a] lidskialf.net. ACPICA BZ 976.
5630
5631 iASL: Fixed a namepath optimization problem. An error can occur if the
5632 parse
5633 node that contains the namepath to be optimized does not have a parent
5634 node
5635 that is a named object. This change fixes the problem.
5636
5637 iASL: Fixed a regression where the AML file is not deleted on errors. The
5638 AML
5639 output file should be deleted if there are any errors during the
5640 compiler.
5641 The
5642 only exception is if the -f (force output) option is used. ACPICA BZ 974.
5643
5644 iASL: Added a feature to automatically increase internal line buffer
5645 sizes.
5646 Via realloc(), automatically increase the internal line buffer sizes as
5647 necessary to support very long source code lines. The current version of
5648 the
5649 preprocessor requires a buffer long enough to contain full source code
5650 lines.
5651 This change increases the line buffer(s) if the input lines go beyond the
5652 current buffer size. This eliminates errors that occurred when a source
5653 code
5654 line was longer than the buffer.
5655
5656 iASL: Fixed a problem with constant folding in method declarations. The
5657 SyncLevel term is a ByteConstExpr, and incorrect code would be generated
5658 if a
5659 Type3 opcode was used.
5660
5661 Debugger: Improved command help support. For incorrect argument count,
5662 display
5663 full help for the command. For help command itself, allow an argument to
5664 specify a command.
5665
5666 Test Suites: Several bug fixes for the ASLTS suite reduces the number of
5667 errors during execution of the suite. Guan Chao.
5668
5669 ----------------------------------------
5670 16 August 2012. Summary of changes for version 20120816:
5671
5672
5673 1) ACPICA Kernel-resident Subsystem:
5674
5675 Removed all use of the deprecated _GTS and _BFS predefined methods. The
5676 _GTS
5677 (Going To Sleep) and _BFS (Back From Sleep) methods are essentially
5678 deprecated and will probably be removed from the ACPI specification.
5679 Windows
5680 does not invoke them, and reportedly never will. The final nail in the
5681 coffin
5682 is that the ACPI specification states that these methods must be run with
5683 interrupts off, which is not going to happen in a kernel interpreter.
5684 Note:
5685 Linux has removed all use of the methods also. It was discovered that
5686 invoking these functions caused failures on some machines, probably
5687 because
5688 they were never tested since Windows does not call them. Affects two
5689 external
5690 interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
5691 ACPICA BZ 969.
5692
5693 Implemented support for complex bit-packed buffers returned from the _PLD
5694 (Physical Location of Device) predefined method. Adds a new external
5695 interface, AcpiDecodePldBuffer that parses the buffer into a more usable
5696 C
5697 structure. Note: C Bitfields cannot be used for this type of predefined
5698 structure since the memory layout of individual bitfields is not defined
5699 by
5700 the C language. In addition, there are endian concerns where a compiler
5701 will
5702 change the bitfield ordering based on the machine type. The new ACPICA
5703 interface eliminates these issues, and should be called after _PLD is
5704 executed. ACPICA BZ 954.
5705
5706 Implemented a change to allow a scope change to root (via "Scope (\)")
5707 during
5708 execution of module-level ASL code (code that is executed at table load
5709 time.) Lin Ming.
5710
5711 Added the Windows8/Server2012 string for the _OSI method. This change
5712 adds
5713 a
5714 new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
5715 2012.
5716
5717 Added header support for the new ACPI tables DBG2 (Debug Port Table Type
5718 2)
5719 and CSRT (Core System Resource Table).
5720
5721 Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
5722 names. This simplifies access to the buffers returned by these predefined
5723 names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
5724
5725 GPE support: Removed an extraneous parameter from the various low-level
5726 internal GPE functions. Tang Feng.
5727
5728 Removed the linux makefiles from the unix packages. The generate/linux
5729 makefiles are obsolete and have been removed from the unix tarball
5730 release
5731 packages. The replacement makefiles are under generate/unix, and there is
5732 a
5733 top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
5734
5735 Updates for Unix makefiles:
5736 1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
5737 2) Update linker flags (move to end of command line) for AcpiExec
5738 utility.
5739 Guan Chao.
5740
5741 Split ACPICA initialization functions to new file, utxfinit.c. Split from
5742 utxface.c to improve modularity and reduce file size.
5743
5744 Example Code and Data Size: These are the sizes for the OS-independent
5745 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5746 debug version of the code includes the debug output trace mechanism and
5747 has a
5748 much larger code and data size.
5749
5750 Previous Release:
5751 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total
5752 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total
5753 Current Release:
5754 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total
5755 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total
5756
5757
5758 2) iASL Compiler/Disassembler and Tools:
5759
5760 iASL: Fixed a problem with constant folding for fixed-length constant
5761 expressions. The constant-folding code was not being invoked for constant
5762 expressions that allow the use of type 3/4/5 opcodes to generate
5763 constants
5764 for expressions such as ByteConstExpr, WordConstExpr, etc. This could
5765 result
5766 in the generation of invalid AML bytecode. ACPICA BZ 970.
5767
5768 iASL: Fixed a generation issue on newer versions of Bison. Newer versions
5769 apparently automatically emit some of the necessary externals. This
5770 change
5771 handles these versions in order to eliminate generation warnings.
5772
5773 Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
5774
5775 Disassembler: Add support to decode _PLD buffers. The decoded buffer
5776 appears
5777 within comments in the output file.
5778
5779 Debugger: Fixed a regression with the "Threads" command where
5780 AE_BAD_PARAMETER was always returned.
5781
5782 ----------------------------------------
5783 11 July 2012. Summary of changes for version 20120711:
5784
5785 1) ACPICA Kernel-resident Subsystem:
5786
5787 Fixed a possible fault in the return package object repair code. Fixes a
5788 problem that can occur when a lone package object is wrapped with an
5789 outer
5790 package object in order to force conformance to the ACPI specification.
5791 Can
5792 affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
5793 _DLM,
5794 _CSD, _PSD, _TSD.
5795
5796 Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
5797 PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
5798 ARB_DIS bit must be implemented in the host-dependent C3 processor power
5799 state
5800 support. Note, ARB_DIS is obsolete and only applies to older chipsets,
5801 both
5802 Intel and other vendors. (for Intel: ICH4-M and earlier)
5803
5804 This change removes the code to disable/enable bus master arbitration
5805 during
5806 suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
5807 causes
5808 resume problems on some machines. The change has been in use for over
5809 seven
5810 years within Linux.
5811
5812 Implemented two new external interfaces to support host-directed dynamic
5813 ACPI
5814 table load and unload. They are intended to simplify the host
5815 implementation
5816 of hot-plug support:
5817 AcpiLoadTable: Load an SSDT from a buffer into the namespace.
5818 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
5819 table.
5820 See the ACPICA reference for additional details. Adds one new file,
5821 components/tables/tbxfload.c
5822
5823 Implemented and deployed two new interfaces for errors and warnings that
5824 are
5825 known to be caused by BIOS/firmware issues:
5826 AcpiBiosError: Prints "ACPI Firmware Error" message.
5827 AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
5828 Deployed these new interfaces in the ACPICA Table Manager code for ACPI
5829 table
5830 and FADT errors. Additional deployment to be completed as appropriate in
5831 the
5832 future. The associated conditional macros are ACPI_BIOS_ERROR and
5833 ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
5834 ACPICA
5835 BZ
5836 843.
5837
5838 Implicit notify support: ensure that no memory allocation occurs within a
5839 critical region. This fix moves a memory allocation outside of the time
5840 that a
5841 spinlock is held. Fixes issues on systems that do not allow this
5842 behavior.
5843 Jung-uk Kim.
5844
5845 Split exception code utilities and tables into a new file,
5846 utilities/utexcep.c
5847
5848 Example Code and Data Size: These are the sizes for the OS-independent
5849 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5850 debug
5851 version of the code includes the debug output trace mechanism and has a
5852 much
5853 larger code and data size.
5854
5855 Previous Release:
5856 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total
5857 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total
5858 Current Release:
5859 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total
5860 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total
5861
5862
5863 2) iASL Compiler/Disassembler and Tools:
5864
5865 iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
5866 of
5867 0. Jung-uk Kim.
5868
5869 Debugger: Enhanced the "tables" command to emit additional information
5870 about
5871 the current set of ACPI tables, including the owner ID and flags decode.
5872
5873 Debugger: Reimplemented the "unload" command to use the new
5874 AcpiUnloadParentTable external interface. This command was disable
5875 previously
5876 due to need for an unload interface.
5877
5878 AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
5879 option
5880 will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
5881
5882 ----------------------------------------
5883 20 June 2012. Summary of changes for version 20120620:
5884
5885
5886 1) ACPICA Kernel-resident Subsystem:
5887
5888 Implemented support to expand the "implicit notify" feature to allow
5889 multiple
5890 devices to be notified by a single GPE. This feature automatically
5891 generates a
5892 runtime device notification in the absence of a BIOS-provided GPE control
5893 method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
5894 notify is
5895 provided by ACPICA for Windows compatibility, and is a workaround for
5896 BIOS
5897 AML
5898 code errors. See the description of the AcpiSetupGpeForWake interface in
5899 the
5900 APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
5901
5902 Changed some comments and internal function names to simplify and ensure
5903 correctness of the Linux code translation. No functional changes.
5904
5905 Example Code and Data Size: These are the sizes for the OS-independent
5906 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5907 debug
5908 version of the code includes the debug output trace mechanism and has a
5909 much
5910 larger code and data size.
5911
5912 Previous Release:
5913 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total
5914 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total
5915 Current Release:
5916 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total
5917 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total
5918
5919
5920 2) iASL Compiler/Disassembler and Tools:
5921
5922 Disassembler: Added support to emit short, commented descriptions for the
5923 ACPI
5924 predefined names in order to improve the readability of the disassembled
5925 output. ACPICA BZ 959. Changes include:
5926 1) Emit descriptions for all standard predefined names (_INI, _STA,
5927 _PRW,
5928 etc.)
5929 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
5930 3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
5931 etc.)
5932
5933 AcpiSrc: Fixed several long-standing Linux code translation issues.
5934 Argument
5935 descriptions in function headers are now translated properly to lower
5936 case
5937 and
5938 underscores. ACPICA BZ 961. Also fixes translation problems such as
5939 these:
5940 (old -> new)
5941 i_aSL -> iASL
5942 00-7_f -> 00-7F
5943 16_k -> 16K
5944 local_fADT -> local_FADT
5945 execute_oSI -> execute_OSI
5946
5947 iASL: Fixed a problem where null bytes were inadvertently emitted into
5948 some
5949 listing files.
5950
5951 iASL: Added the existing debug options to the standard help screen. There
5952 are
5953 no longer two different help screens. ACPICA BZ 957.
5954
5955 AcpiHelp: Fixed some typos in the various predefined name descriptions.
5956 Also
5957 expand some of the descriptions where appropriate.
5958
5959 iASL: Fixed the -ot option (display compile times/statistics). Was not
5960 working
5961 properly for standard output; only worked for the debug file case.
5962
5963 ----------------------------------------
5964 18 May 2012. Summary of changes for version 20120518:
5965
5966
5967 1) ACPICA Core Subsystem:
5968
5969 Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
5970 defined
5971 to block until asynchronous events such as notifies and GPEs have
5972 completed.
5973 Within ACPICA, it is only called before a notify or GPE handler is
5974 removed/uninstalled. It also may be useful for the host OS within related
5975 drivers such as the Embedded Controller driver. See the ACPICA reference
5976 for
5977 additional information. ACPICA BZ 868.
5978
5979 ACPI Tables: Added a new error message for a possible overflow failure
5980 during
5981 the conversion of FADT 32-bit legacy register addresses to internal
5982 common
5983 64-
5984 bit GAS structure representation. The GAS has a one-byte "bit length"
5985 field,
5986 thus limiting the register length to 255 bits. ACPICA BZ 953.
5987
5988 Example Code and Data Size: These are the sizes for the OS-independent
5989 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5990 debug
5991 version of the code includes the debug output trace mechanism and has a
5992 much
5993 larger code and data size.
5994
5995 Previous Release:
5996 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
5997 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total
5998 Current Release:
5999 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total
6000 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total
6001
6002
6003 2) iASL Compiler/Disassembler and Tools:
6004
6005 iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
6006 macro.
6007 This keyword was added late in the ACPI 5.0 release cycle and was not
6008 implemented until now.
6009
6010 Disassembler: Added support for Operation Region externals. Adds missing
6011 support for operation regions that are defined in another table, and
6012 referenced locally via a Field or BankField ASL operator. Now generates
6013 the
6014 correct External statement.
6015
6016 Disassembler: Several additional fixes for the External() statement
6017 generation
6018 related to some ASL operators. Also, order the External() statements
6019 alphabetically in the disassembler output. Fixes the External()
6020 generation
6021 for
6022 the Create* field, Alias, and Scope operators:
6023 1) Create* buffer field operators - fix type mismatch warning on
6024 disassembly
6025 2) Alias - implement missing External support
6026 3) Scope - fix to make sure all necessary externals are emitted.
6027
6028 iASL: Improved pathname support. For include files, merge the prefix
6029 pathname
6030 with the file pathname and eliminate unnecessary components. Convert
6031 backslashes in all pathnames to forward slashes, for readability. Include
6032 file
6033 pathname changes affect both #include and Include() type operators.
6034
6035 iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
6036 end
6037 of a valid line by inserting a newline and then returning the EOF during
6038 the
6039 next call to GetNextLine. Prevents the line from being ignored due to EOF
6040 condition.
6041
6042 iASL: Implemented some changes to enhance the IDE support (-vi option.)
6043 Error
6044 and Warning messages are now correctly recognized for both the source
6045 code
6046 browser and the global error and warning counts.
6047
6048 ----------------------------------------
6049 20 April 2012. Summary of changes for version 20120420:
6050
6051
6052 1) ACPICA Core Subsystem:
6053
6054 Implemented support for multiple notify handlers. This change adds
6055 support
6056 to
6057 allow multiple system and device notify handlers on Device, Thermal Zone,
6058 and
6059 Processor objects. This can simplify the host OS notification
6060 implementation.
6061 Also re-worked and restructured the entire notify support code to
6062 simplify
6063 handler installation, handler removal, notify event queuing, and notify
6064 dispatch to handler(s). Note: there can still only be two global notify
6065 handlers - one for system notifies and one for device notifies. There are
6066 no
6067 changes to the existing handler install/remove interfaces. Lin Ming, Bob
6068 Moore, Rafael Wysocki.
6069
6070 Fixed a regression in the package repair code where the object reference
6071 count was calculated incorrectly. Regression was introduced in the commit
6072 "Support to add Package wrappers".
6073
6074 Fixed a couple possible memory leaks in the AML parser, in the error
6075 recovery
6076 path. Jesper Juhl, Lin Ming.
6077
6078 Example Code and Data Size: These are the sizes for the OS-independent
6079 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6080 debug version of the code includes the debug output trace mechanism and
6081 has a
6082 much larger code and data size.
6083
6084 Previous Release:
6085 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
6086 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
6087 Current Release:
6088 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
6089 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total
6090
6091
6092 2) iASL Compiler/Disassembler and Tools:
6093
6094 iASL: Fixed a problem with the resource descriptor support where the
6095 length
6096 of the StartDependentFn and StartDependentFnNoPrio descriptors were not
6097 included in cumulative descriptor offset, resulting in incorrect values
6098 for
6099 resource tags within resource descriptors appearing after a
6100 StartDependent*
6101 descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
6102
6103 iASL and Preprocessor: Implemented full support for the #line directive
6104 to
6105 correctly track original source file line numbers through the .i
6106 preprocessor
6107 output file - for error and warning messages.
6108
6109 iASL: Expand the allowable byte constants for address space IDs.
6110 Previously,
6111 the allowable range was 0x80-0xFF (user-defined spaces), now the range is
6112 0x0A-0xFF to allow for custom and new IDs without changing the compiler.
6113
6114 iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
6115
6116 iASL: Add option to completely disable the preprocessor (-Pn).
6117
6118 iASL: Now emit all error/warning messages to standard error (stderr) by
6119 default (instead of the previous stdout).
6120
6121 ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
6122 Update
6123 for resource descriptor offset fix above. Update/cleanup error output
6124 routines. Enable and send iASL errors/warnings to an error logfile
6125 (error.txt). Send all other iASL output to a logfile (compiler.txt).
6126 Fixed
6127 several extraneous "unrecognized operator" messages.
6128
6129 ----------------------------------------
6130 20 March 2012. Summary of changes for version 20120320:
6131
6132
6133 1) ACPICA Core Subsystem:
6134
6135 Enhanced the sleep/wake interfaces to optionally execute the _GTS method
6136 (Going To Sleep) and the _BFS method (Back From Sleep). Windows
6137 apparently
6138 does not execute these methods, and therefore these methods are often
6139 untested. It has been seen on some systems where the execution of these
6140 methods causes errors and also prevents the machine from entering S5. It
6141 is
6142 therefore suggested that host operating systems do not execute these
6143 methods
6144 by default. In the future, perhaps these methods can be optionally
6145 executed
6146 based on the age of the system and/or what is the newest version of
6147 Windows
6148 that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
6149 and
6150 AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
6151 Ming.
6152
6153 Fixed a problem where the length of the local/common FADT was set too
6154 early.
6155 The local FADT table length cannot be set to the common length until the
6156 original length has been examined. There is code that checks the table
6157 length
6158 and sets various fields appropriately. This can affect older machines
6159 with
6160 early FADT versions. For example, this can cause inadvertent writes to
6161 the
6162 CST_CNT register. Julian Anastasov.
6163
6164 Fixed a mapping issue related to a physical table override. Use the
6165 deferred
6166 mapping mechanism for tables loaded via the physical override OSL
6167 interface.
6168 This allows for early mapping before the virtual memory manager is
6169 available.
6170 Thomas Renninger, Bob Moore.
6171
6172 Enhanced the automatic return-object repair code: Repair a common problem
6173 with
6174 predefined methods that are defined to return a variable-length Package
6175 of
6176 sub-objects. If there is only one sub-object, some BIOS ASL code
6177 mistakenly
6178 simply returns the single object instead of a Package with one sub-
6179 object.
6180 This new support will repair this error by wrapping a Package object
6181 around
6182 the original object, creating the correct and expected Package with one
6183 sub-
6184 object. Names that can be repaired in this manner include: _ALR, _CSD,
6185 _HPX,
6186 _MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
6187 939.
6188
6189 Changed the exception code returned for invalid ACPI paths passed as
6190 parameters to external interfaces such as AcpiEvaluateObject. Was
6191 AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
6192
6193 Example Code and Data Size: These are the sizes for the OS-independent
6194 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6195 debug
6196 version of the code includes the debug output trace mechanism and has a
6197 much
6198 larger code and data size.
6199
6200 Previous Release:
6201 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total
6202 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
6203 Current Release:
6204 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
6205 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
6206
6207
6208 2) iASL Compiler/Disassembler and Tools:
6209
6210 iASL: Added the infrastructure and initial implementation of a integrated
6211 C-
6212 like preprocessor. This will simplify BIOS development process by
6213 eliminating
6214 the need for a separate preprocessing step during builds. On Windows, it
6215 also
6216 eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
6217 features including full #define() macro support are still under
6218 development.
6219 These preprocessor directives are supported:
6220 #define
6221 #elif
6222 #else
6223 #endif
6224 #error
6225 #if
6226 #ifdef
6227 #ifndef
6228 #include
6229 #pragma message
6230 #undef
6231 #warning
6232 In addition, these new command line options are supported:
6233 -D <symbol> Define symbol for preprocessor use
6234 -li Create preprocessed output file (*.i)
6235 -P Preprocess only and create preprocessor output file (*.i)
6236
6237 Table Compiler: Fixed a problem where the equals operator within an
6238 expression
6239 did not work properly.
6240
6241 Updated iASL to use the current versions of Bison/Flex. Updated the
6242 Windows
6243 project file to invoke these tools from the standard location. ACPICA BZ
6244 904.
6245 Versions supported:
6246 Flex for Windows: V2.5.4
6247 Bison for Windows: V2.4.1
6248
6249 ----------------------------------------
6250 15 February 2012. Summary of changes for version 20120215:
6251
6252
6253 1) ACPICA Core Subsystem:
6254
6255 There have been some major changes to the sleep/wake support code, as
6256 described below (a - e).
6257
6258 a) The AcpiLeaveSleepState has been split into two interfaces, similar to
6259 AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
6260 AcpiLeaveSleepStatePrep. This allows the host to perform actions between
6261 the
6262 time the _BFS method is called and the _WAK method is called. NOTE: all
6263 hosts
6264 must update their wake/resume code or else sleep/wake will not work
6265 properly.
6266 Rafael Wysocki.
6267
6268 b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
6269 _WAK
6270 method. Some machines require that the GPEs are enabled before the _WAK
6271 method
6272 is executed. Thomas Renninger.
6273
6274 c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
6275 bit.
6276 Some BIOS code assumes that WAK_STS will be cleared on resume and use it
6277 to
6278 determine whether the system is rebooting or resuming. Matthew Garrett.
6279
6280 d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
6281 Sleep) to
6282 match the ACPI specification requirement. Rafael Wysocki.
6283
6284 e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
6285 registers within the V5 FADT. This support adds two new files:
6286 hardware/hwesleep.c implements the support for the new registers. Moved
6287 all
6288 sleep/wake external interfaces to hardware/hwxfsleep.c.
6289
6290
6291 Added a new OSL interface for ACPI table overrides,
6292 AcpiOsPhysicalTableOverride. This interface allows the host to override a
6293 table via a physical address, instead of the logical address required by
6294 AcpiOsTableOverride. This simplifies the host implementation. Initial
6295 implementation by Thomas Renninger. The ACPICA implementation creates a
6296 single
6297 shared function for table overrides that attempts both a logical and a
6298 physical override.
6299
6300 Expanded the OSL memory read/write interfaces to 64-bit data
6301 (AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
6302 transfer support for GAS register structures passed to AcpiRead and
6303 AcpiWrite.
6304
6305 Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
6306 custom
6307 build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
6308 model.
6309 See the ACPICA reference for details. ACPICA BZ 942. This option removes
6310 about
6311 10% of the code and 5% of the static data, and the following hardware
6312 ACPI
6313 features become unavailable:
6314 PM Event and Control registers
6315 SCI interrupt (and handler)
6316 Fixed Events
6317 General Purpose Events (GPEs)
6318 Global Lock
6319 ACPI PM timer
6320 FACS table (Waking vectors and Global Lock)
6321
6322 Updated the unix tarball directory structure to match the ACPICA git
6323 source
6324 tree. This ensures that the generic unix makefiles work properly (in
6325 generate/unix). Also updated the Linux makefiles to match. ACPICA BZ
6326 867.
6327
6328 Updated the return value of the _REV predefined method to integer value 5
6329 to
6330 reflect ACPI 5.0 support.
6331
6332 Moved the external ACPI PM timer interface prototypes to the public
6333 acpixf.h
6334 file where they belong.
6335
6336 Example Code and Data Size: These are the sizes for the OS-independent
6337 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6338 debug
6339 version of the code includes the debug output trace mechanism and has a
6340 much
6341 larger code and data size.
6342
6343 Previous Release:
6344 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total
6345 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total
6346 Current Release:
6347 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total
6348 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
6349
6350
6351 2) iASL Compiler/Disassembler and Tools:
6352
6353 Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
6354 descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
6355 incorrectly displayed.
6356
6357 AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
6358 specification.
6359
6360 ----------------------------------------
6361 11 January 2012. Summary of changes for version 20120111:
6362
6363
6364 1) ACPICA Core Subsystem:
6365
6366 Implemented a new mechanism to allow host device drivers to check for
6367 address
6368 range conflicts with ACPI Operation Regions. Both SystemMemory and
6369 SystemIO
6370 address spaces are supported. A new external interface,
6371 AcpiCheckAddressRange,
6372 allows drivers to check an address range against the ACPI namespace. See
6373 the
6374 ACPICA reference for additional details. Adds one new file,
6375 utilities/utaddress.c. Lin Ming, Bob Moore.
6376
6377 Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
6378 Control
6379 and
6380 Status registers, update the ACPI 5.0 flags, and update internal data
6381 structures to handle an FADT larger than 256 bytes. The size of the ACPI
6382 5.0
6383 FADT is 268 bytes.
6384
6385 Updated all ACPICA copyrights and signons to 2012. Added the 2012
6386 copyright to
6387 all module headers and signons, including the standard Linux header. This
6388 affects virtually every file in the ACPICA core subsystem, iASL compiler,
6389 and
6390 all ACPICA utilities.
6391
6392 Example Code and Data Size: These are the sizes for the OS-independent
6393 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6394 debug
6395 version of the code includes the debug output trace mechanism and has a
6396 much
6397 larger code and data size.
6398
6399 Previous Release:
6400 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
6401 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
6402 Current Release:
6403 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total
6404 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total
6405
6406
6407 2) iASL Compiler/Disassembler and Tools:
6408
6409 Disassembler: fixed a problem with the automatic resource tag generation
6410 support. Fixes a problem where the resource tags are inadvertently not
6411 constructed if the table being disassembled contains external references
6412 to
6413 control methods. Moved the actual construction of the tags to after the
6414 final
6415 namespace is constructed (after 2nd parse is invoked due to external
6416 control
6417 method references.) ACPICA BZ 941.
6418
6419 Table Compiler: Make all "generic" operators caseless. These are the
6420 operators
6421 like UINT8, String, etc. Making these caseless improves ease-of-use.
6422 ACPICA BZ
6423 934.
6424
6425 ----------------------------------------
6426 23 November 2011. Summary of changes for version 20111123:
6427
6428 0) ACPI 5.0 Support:
6429
6430 This release contains full support for the ACPI 5.0 specification, as
6431 summarized below.
6432
6433 Reduced Hardware Support:
6434 -------------------------
6435
6436 This support allows for ACPI systems without the usual ACPI hardware.
6437 This
6438 support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
6439 will
6440 not attempt to initialize or use any of the usual ACPI hardware. Note,
6441 when
6442 this flag is set, all of the following ACPI hardware is assumed to be not
6443 present and is not initialized or accessed:
6444
6445 General Purpose Events (GPEs)
6446 Fixed Events (PM1a/PM1b and PM Control)
6447 Power Management Timer and Console Buttons (power/sleep)
6448 Real-time Clock Alarm
6449 Global Lock
6450 System Control Interrupt (SCI)
6451 The FACS is assumed to be non-existent
6452
6453 ACPI Tables:
6454 ------------
6455
6456 All new tables and updates to existing tables are fully supported in the
6457 ACPICA headers (for use by device drivers), the disassembler, and the
6458 iASL
6459 Data Table Compiler. ACPI 5.0 defines these new tables:
6460
6461 BGRT /* Boot Graphics Resource Table */
6462 DRTM /* Dynamic Root of Trust for Measurement table */
6463 FPDT /* Firmware Performance Data Table */
6464 GTDT /* Generic Timer Description Table */
6465 MPST /* Memory Power State Table */
6466 PCCT /* Platform Communications Channel Table */
6467 PMTT /* Platform Memory Topology Table */
6468 RASF /* RAS Feature table */
6469
6470 Operation Regions/SpaceIDs:
6471 ---------------------------
6472
6473 All new operation regions are fully supported by the iASL compiler, the
6474 disassembler, and the ACPICA runtime code (for dispatch to region
6475 handlers.)
6476 The new operation region Space IDs are:
6477
6478 GeneralPurposeIo
6479 GenericSerialBus
6480
6481 Resource Descriptors:
6482 ---------------------
6483
6484 All new ASL resource descriptors are fully supported by the iASL
6485 compiler,
6486 the
6487 ASL/AML disassembler, and the ACPICA runtime Resource Manager code
6488 (including
6489 all new predefined resource tags). New descriptors are:
6490
6491 FixedDma
6492 GpioIo
6493 GpioInt
6494 I2cSerialBus
6495 SpiSerialBus
6496 UartSerialBus
6497
6498 ASL/AML Operators, New and Modified:
6499 ------------------------------------
6500
6501 One new operator is added, the Connection operator, which is used to
6502 associate
6503 a GeneralPurposeIo or GenericSerialBus resource descriptor with
6504 individual
6505 field objects within an operation region. Several new protocols are
6506 associated
6507 with the AccessAs operator. All are fully supported by the iASL compiler,
6508 disassembler, and runtime ACPICA AML interpreter:
6509
6510 Connection // Declare Field Connection
6511 attributes
6512 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol
6513 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes
6514 Protocol
6515 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
6516 RawDataBuffer // Data type for Vendor Data
6517 fields
6518
6519 Predefined ASL/AML Objects:
6520 ---------------------------
6521
6522 All new predefined objects/control-methods are supported by the iASL
6523 compiler
6524 and the ACPICA runtime validation/repair (arguments and return values.)
6525 New
6526 predefined names include the following:
6527
6528 Standard Predefined Names (Objects or Control Methods):
6529 _AEI, _CLS, _CPC, _CWS, _DEP,
6530 _DLM, _EVT, _GCP, _CRT, _GWS,
6531 _HRV, _PRE, _PSE, _SRT, _SUB.
6532
6533 Resource Tags (Names used to access individual fields within resource
6534 descriptors):
6535 _DBT, _DPL, _DRS, _END, _FLC,
6536 _IOR, _LIN, _MOD, _PAR, _PHA,
6537 _PIN, _PPI, _POL, _RXL, _SLV,
6538 _SPE, _STB, _TXL, _VEN.
6539
6540 ACPICA External Interfaces:
6541 ---------------------------
6542
6543 Several new interfaces have been defined for use by ACPI-related device
6544 drivers and other host OS services:
6545
6546 AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
6547 to
6548 acquire and release AML mutexes that are defined in the DSDT/SSDT tables
6549 provided by the BIOS. They are intended to be used in conjunction with
6550 the
6551 ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
6552 mutual exclusion with the AML code/interpreter.
6553
6554 AcpiGetEventResources: Returns the (formatted) resource descriptors as
6555 defined
6556 by the ACPI 5.0 _AEI object (ACPI Event Information). This object
6557 provides
6558 resource descriptors associated with hardware-reduced platform events,
6559 similar
6560 to the AcpiGetCurrentResources interface.
6561
6562 Operation Region Handlers: For General Purpose IO and Generic Serial Bus
6563 operation regions, information about the Connection() object and any
6564 optional
6565 length information is passed to the region handler within the Context
6566 parameter.
6567
6568 AcpiBufferToResource: This interface converts a raw AML buffer containing
6569 a
6570 resource template or resource descriptor to the ACPI_RESOURCE internal
6571 format
6572 suitable for use by device drivers. Can be used by an operation region
6573 handler
6574 to convert the Connection() buffer object into a ACPI_RESOURCE.
6575
6576 Miscellaneous/Tools/TestSuites:
6577 -------------------------------
6578
6579 Support for extended _HID names (Four alpha characters instead of three).
6580 Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
6581 Support for ACPI 5.0 features in the ASLTS test suite.
6582 Fully updated documentation (ACPICA and iASL reference documents.)
6583
6584 ACPI Table Definition Language:
6585 -------------------------------
6586
6587 Support for this language was implemented and released as a subsystem of
6588 the
6589 iASL compiler in 2010. (See the iASL compiler User Guide.)
6590
6591
6592 Non-ACPI 5.0 changes for this release:
6593 --------------------------------------
6594
6595 1) ACPICA Core Subsystem:
6596
6597 Fix a problem with operation region declarations where a failure can
6598 occur
6599 if
6600 the region name and an argument that evaluates to an object (such as the
6601 region address) are in different namespace scopes. Lin Ming, ACPICA BZ
6602 937.
6603
6604 Do not abort an ACPI table load if an invalid space ID is found within.
6605 This
6606 will be caught later if the offending method is executed. ACPICA BZ 925.
6607
6608 Fixed an issue with the FFixedHW space ID where the ID was not always
6609 recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
6610
6611 Fixed a problem with the 32-bit generation of the unix-specific OSL
6612 (osunixxf.c). Lin Ming, ACPICA BZ 936.
6613
6614 Several changes made to enable generation with the GCC 4.6 compiler.
6615 ACPICA BZ
6616 935.
6617
6618 New error messages: Unsupported I/O requests (not 8/16/32 bit), and
6619 Index/Bank
6620 field registers out-of-range.
6621
6622 2) iASL Compiler/Disassembler and Tools:
6623
6624 iASL: Implemented the __PATH__ operator, which returns the full pathname
6625 of
6626 the current source file.
6627
6628 AcpiHelp: Automatically display expanded keyword information for all ASL
6629 operators.
6630
6631 Debugger: Add "Template" command to disassemble/dump resource template
6632 buffers.
6633
6634 Added a new master script to generate and execute the ASLTS test suite.
6635 Automatically handles 32- and 64-bit generation. See tests/aslts.sh
6636
6637 iASL: Fix problem with listing generation during processing of the
6638 Switch()
6639 operator where AML listing was disabled until the entire Switch block was
6640 completed.
6641
6642 iASL: Improve support for semicolon statement terminators. Fix "invalid
6643 character" message for some cases when the semicolon is used. Semicolons
6644 are
6645 now allowed after every <Term> grammar element. ACPICA BZ 927.
6646
6647 iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
6648 923.
6649
6650 Disassembler: Fix problem with disassembly of the DataTableRegion
6651 operator
6652 where an inadvertent "Unhandled deferred opcode" message could be
6653 generated.
6654
6655 3) Example Code and Data Size
6656
6657 These are the sizes for the OS-independent acpica.lib produced by the
6658 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6659 includes the debug output trace mechanism and has a much larger code and
6660 data
6661 size.
6662
6663 Previous Release:
6664 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
6665 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6666 Current Release:
6667 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
6668 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
6669
6670 ----------------------------------------
6671 22 September 2011. Summary of changes for version 20110922:
6672
6673 0) ACPI 5.0 News:
6674
6675 Support for ACPI 5.0 in ACPICA has been underway for several months and
6676 will
6677 be released at the same time that ACPI 5.0 is officially released.
6678
6679 The ACPI 5.0 specification is on track for release in the next few
6680 months.
6681
6682 1) ACPICA Core Subsystem:
6683
6684 Fixed a problem where the maximum sleep time for the Sleep() operator was
6685 intended to be limited to two seconds, but was inadvertently limited to
6686 20
6687 seconds instead.
6688
6689 Linux and Unix makefiles: Added header file dependencies to ensure
6690 correct
6691 generation of ACPICA core code and utilities. Also simplified the
6692 makefiles
6693 considerably through the use of the vpath variable to specify search
6694 paths.
6695 ACPICA BZ 924.
6696
6697 2) iASL Compiler/Disassembler and Tools:
6698
6699 iASL: Implemented support to check the access length for all fields
6700 created to
6701 access named Resource Descriptor fields. For example, if a resource field
6702 is
6703 defined to be two bits, a warning is issued if a CreateXxxxField() is
6704 used
6705 with an incorrect bit length. This is implemented for all current
6706 resource
6707 descriptor names. ACPICA BZ 930.
6708
6709 Disassembler: Fixed a byte ordering problem with the output of 24-bit and
6710 56-
6711 bit integers.
6712
6713 iASL: Fixed a couple of issues associated with variable-length package
6714 objects. 1) properly handle constants like One, Ones, Zero -- do not make
6715 a
6716 VAR_PACKAGE when these are used as a package length. 2) Allow the
6717 VAR_PACKAGE
6718 opcode (in addition to PACKAGE) when validating object types for
6719 predefined
6720 names.
6721
6722 iASL: Emit statistics for all output files (instead of just the ASL input
6723 and
6724 AML output). Includes listings, hex files, etc.
6725
6726 iASL: Added -G option to the table compiler to allow the compilation of
6727 custom
6728 ACPI tables. The only part of a table that is required is the standard
6729 36-
6730 byte
6731 ACPI header.
6732
6733 AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
6734 headers),
6735 which also adds correct 64-bit support. Also, now all output filenames
6736 are
6737 completely lower case.
6738
6739 AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
6740 loading table files. A warning is issued for any such tables. The only
6741 exception is an FADT. This also fixes a possible fault when attempting to
6742 load
6743 non-AML tables. ACPICA BZ 932.
6744
6745 AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
6746 a
6747 missing table terminator could cause a fault when using the -p option.
6748
6749 AcpiSrc: Fixed a possible divide-by-zero fault when generating file
6750 statistics.
6751
6752 3) Example Code and Data Size
6753
6754 These are the sizes for the OS-independent acpica.lib produced by the
6755 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6756 includes the debug output trace mechanism and has a much larger code and
6757 data
6758 size.
6759
6760 Previous Release (VC 9.0):
6761 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
6762 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6763 Current Release (VC 9.0):
6764 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
6765 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6766
6767
6768 ----------------------------------------
6769 23 June 2011. Summary of changes for version 20110623:
6770
6771 1) ACPI CA Core Subsystem:
6772
6773 Updated the predefined name repair mechanism to not attempt repair of a
6774 _TSS
6775 return object if a _PSS object is present. We can only sort the _TSS
6776 return
6777 package if there is no _PSS within the same scope. This is because if
6778 _PSS
6779 is
6780 present, the ACPI specification dictates that the _TSS Power Dissipation
6781 field
6782 is to be ignored, and therefore some BIOSs leave garbage values in the
6783 _TSS
6784 Power field(s). In this case, it is best to just return the _TSS package
6785 as-
6786 is. Reported by, and fixed with assistance from Fenghua Yu.
6787
6788 Added an option to globally disable the control method return value
6789 validation
6790 and repair. This runtime option can be used to disable return value
6791 repair
6792 if
6793 this is causing a problem on a particular machine. Also added an option
6794 to
6795 AcpiExec (-dr) to set this disable flag.
6796
6797 All makefiles and project files: Major changes to improve generation of
6798 ACPICA
6799 tools. ACPICA BZ 912:
6800 Reduce default optimization levels to improve compatibility
6801 For Linux, add strict-aliasing=0 for gcc 4
6802 Cleanup and simplify use of command line defines
6803 Cleanup multithread library support
6804 Improve usage messages
6805
6806 Linux-specific header: update handling of THREAD_ID and pthread. For the
6807 32-
6808 bit case, improve casting to eliminate possible warnings, especially with
6809 the
6810 acpica tools.
6811
6812 Example Code and Data Size: These are the sizes for the OS-independent
6813 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6814 debug
6815 version of the code includes the debug output trace mechanism and has a
6816 much
6817 larger code and data size.
6818
6819 Previous Release (VC 9.0):
6820 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total
6821 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6822 Current Release (VC 9.0):
6823 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
6824 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6825
6826 2) iASL Compiler/Disassembler and Tools:
6827
6828 With this release, a new utility named "acpihelp" has been added to the
6829 ACPICA
6830 package. This utility summarizes the ACPI specification chapters for the
6831 ASL
6832 and AML languages. It generates under Linux/Unix as well as Windows, and
6833 provides the following functionality:
6834 Find/display ASL operator(s) -- with description and syntax.
6835 Find/display ASL keyword(s) -- with exact spelling and descriptions.
6836 Find/display ACPI predefined name(s) -- with description, number
6837 of arguments, and the return value data type.
6838 Find/display AML opcode name(s) -- with opcode, arguments, and
6839 grammar.
6840 Decode/display AML opcode -- with opcode name, arguments, and
6841 grammar.
6842
6843 Service Layers: Make multi-thread support configurable. Conditionally
6844 compile
6845 the multi-thread support so that threading libraries will not be linked
6846 if
6847 not
6848 necessary. The only tool that requires multi-thread support is AcpiExec.
6849
6850 iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
6851 of
6852 Bison appear to want the interface to yyerror to be a const char * (or at
6853 least this is a problem when generating iASL on some systems.) ACPICA BZ
6854 923
6855 Pierre Lejeune.
6856
6857 Tools: Fix for systems where O_BINARY is not defined. Only used for
6858 Windows
6859 versions of the tools.
6860
6861 ----------------------------------------
6862 27 May 2011. Summary of changes for version 20110527:
6863
6864 1) ACPI CA Core Subsystem:
6865
6866 ASL Load() operator: Reinstate most restrictions on the incoming ACPI
6867 table
6868 signature. Now, only allow SSDT, OEMx, and a null signature. History:
6869 1) Originally, we checked the table signature for "SSDT" or "PSDT".
6870 (PSDT is now obsolete.)
6871 2) We added support for OEMx tables, signature "OEM" plus a fourth
6872 "don't care" character.
6873 3) Valid tables were encountered with a null signature, so we just
6874 gave up on validating the signature, (05/2008).
6875 4) We encountered non-AML tables such as the MADT, which caused
6876 interpreter errors and kernel faults. So now, we once again allow
6877 only SSDT, OEMx, and now, also a null signature. (05/2011).
6878
6879 Added the missing _TDL predefined name to the global name list in order
6880 to
6881 enable validation. Affects both the core ACPICA code and the iASL
6882 compiler.
6883
6884 Example Code and Data Size: These are the sizes for the OS-independent
6885 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6886 debug
6887 version of the code includes the debug output trace mechanism and has a
6888 much
6889 larger code and data size.
6890
6891 Previous Release (VC 9.0):
6892 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total
6893 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total
6894 Current Release (VC 9.0):
6895 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total
6896 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6897
6898 2) iASL Compiler/Disassembler and Tools:
6899
6900 Debugger/AcpiExec: Implemented support for "complex" method arguments on
6901 the
6902 debugger command line. This adds support beyond simple integers --
6903 including
6904 Strings, Buffers, and Packages. Includes support for nested packages.
6905 Increased the default command line buffer size to accommodate these
6906 arguments.
6907 See the ACPICA reference for details and syntax. ACPICA BZ 917.
6908
6909 Debugger/AcpiExec: Implemented support for "default" method arguments for
6910 the
6911 Execute/Debug command. Now, the debugger will always invoke a control
6912 method
6913 with the required number of arguments -- even if the command line
6914 specifies
6915 none or insufficient arguments. It uses default integer values for any
6916 missing
6917 arguments. Also fixes a bug where only six method arguments maximum were
6918 supported instead of the required seven.
6919
6920 Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
6921 and
6922 also return status in order to prevent buffer overruns. See the ACPICA
6923 reference for details and syntax. ACPICA BZ 921
6924
6925 iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
6926 makefiles to simplify support for the two different but similar parser
6927 generators, bison and yacc.
6928
6929 Updated the generic unix makefile for gcc 4. The default gcc version is
6930 now
6931 expected to be 4 or greater, since options specific to gcc 4 are used.
6932
6933 ----------------------------------------
6934 13 April 2011. Summary of changes for version 20110413:
6935
6936 1) ACPI CA Core Subsystem:
6937
6938 Implemented support to execute a so-called "orphan" _REG method under the
6939 EC
6940 device. This change will force the execution of a _REG method underneath
6941 the
6942 EC
6943 device even if there is no corresponding operation region of type
6944 EmbeddedControl. Fixes a problem seen on some machines and apparently is
6945 compatible with Windows behavior. ACPICA BZ 875.
6946
6947 Added more predefined methods that are eligible for automatic NULL
6948 package
6949 element removal. This change adds another group of predefined names to
6950 the
6951 list
6952 of names that can be repaired by having NULL package elements dynamically
6953 removed. This group are those methods that return a single variable-
6954 length
6955 package containing simple data types such as integers, buffers, strings.
6956 This
6957 includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
6958 _PSL,
6959 _Sx,
6960 and _TZD. ACPICA BZ 914.
6961
6962 Split and segregated all internal global lock functions to a new file,
6963 evglock.c.
6964
6965 Updated internal address SpaceID for DataTable regions. Moved this
6966 internal
6967 space
6968 id in preparation for ACPI 5.0 changes that will include some new space
6969 IDs.
6970 This
6971 change should not affect user/host code.
6972
6973 Example Code and Data Size: These are the sizes for the OS-independent
6974 acpica.lib
6975 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6976 version of
6977 the code includes the debug output trace mechanism and has a much larger
6978 code
6979 and
6980 data size.
6981
6982 Previous Release (VC 9.0):
6983 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total
6984 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total
6985 Current Release (VC 9.0):
6986 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total
6987 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total
6988
6989 2) iASL Compiler/Disassembler and Tools:
6990
6991 iASL/DTC: Major update for new grammar features. Allow generic data types
6992 in
6993 custom ACPI tables. Field names are now optional. Any line can be split
6994 to
6995 multiple lines using the continuation char (\). Large buffers now use
6996 line-
6997 continuation character(s) and no colon on the continuation lines. See the
6998 grammar
6999 update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
7000 Moore.
7001
7002 iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
7003 statements.
7004 Since the parser stuffs a "zero" as the return value for these statements
7005 (due
7006 to
7007 the underlying AML grammar), they were seen as "return with value" by the
7008 iASL
7009 semantic checking. They are now seen correctly as "null" return
7010 statements.
7011
7012 iASL: Check if a_REG declaration has a corresponding Operation Region.
7013 Adds a
7014 check for each _REG to ensure that there is in fact a corresponding
7015 operation
7016 region declaration in the same scope. If not, the _REG method is not very
7017 useful
7018 since it probably won't be executed. ACPICA BZ 915.
7019
7020 iASL/DTC: Finish support for expression evaluation. Added a new
7021 expression
7022 parser
7023 that implements c-style operator precedence and parenthesization. ACPICA
7024 bugzilla
7025 908.
7026
7027 Disassembler/DTC: Remove support for () and <> style comments in data
7028 tables.
7029 Now
7030 that DTC has full expression support, we don't want to have comment
7031 strings
7032 that
7033 start with a parentheses or a less-than symbol. Now, only the standard /*
7034 and
7035 //
7036 comments are supported, as well as the bracket [] comments.
7037
7038 AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
7039 "unusual"
7040 headers in the acpidump file. Update the header validation to support
7041 these
7042 tables. Problem introduced in previous AcpiXtract version in the change
7043 to
7044 support "wrong checksum" error messages emitted by acpidump utility.
7045
7046 iASL: Add a * option to generate all template files (as a synonym for
7047 ALL)
7048 as
7049 in
7050 "iasl -T *" or "iasl -T ALL".
7051
7052 iASL/DTC: Do not abort compiler on fatal errors. We do not want to
7053 completely
7054 abort the compiler on "fatal" errors, simply should abort the current
7055 compile.
7056 This allows multiple compiles with a single (possibly wildcard) compiler
7057 invocation.
7058
7059 ----------------------------------------
7060 16 March 2011. Summary of changes for version 20110316:
7061
7062 1) ACPI CA Core Subsystem:
7063
7064 Fixed a problem caused by a _PRW method appearing at the namespace root
7065 scope
7066 during the setup of wake GPEs. A fault could occur if a _PRW directly
7067 under
7068 the
7069 root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
7070
7071 Implemented support for "spurious" Global Lock interrupts. On some
7072 systems, a
7073 global lock interrupt can occur without the pending flag being set. Upon
7074 a
7075 GL
7076 interrupt, we now ensure that a thread is actually waiting for the lock
7077 before
7078 signaling GL availability. Rafael Wysocki, Bob Moore.
7079
7080 Example Code and Data Size: These are the sizes for the OS-independent
7081 acpica.lib
7082 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7083 version of
7084 the code includes the debug output trace mechanism and has a much larger
7085 code
7086 and
7087 data size.
7088
7089 Previous Release (VC 9.0):
7090 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
7091 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
7092 Current Release (VC 9.0):
7093 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total
7094 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total
7095
7096 2) iASL Compiler/Disassembler and Tools:
7097
7098 Implemented full support for the "SLIC" ACPI table. Includes support in
7099 the
7100 header files, disassembler, table compiler, and template generator. Bob
7101 Moore,
7102 Lin Ming.
7103
7104 AcpiXtract: Correctly handle embedded comments and messages from
7105 AcpiDump.
7106 Apparently some or all versions of acpidump will occasionally emit a
7107 comment
7108 like
7109 "Wrong checksum", etc., into the dump file. This was causing problems for
7110 AcpiXtract. ACPICA BZ 905.
7111
7112 iASL: Fix the Linux makefile by removing an inadvertent double file
7113 inclusion.
7114 ACPICA BZ 913.
7115
7116 AcpiExec: Update installation of operation region handlers. Install one
7117 handler
7118 for a user-defined address space. This is used by the ASL test suite
7119 (ASLTS).
7120
7121 ----------------------------------------
7122 11 February 2011. Summary of changes for version 20110211:
7123
7124 1) ACPI CA Core Subsystem:
7125
7126 Added a mechanism to defer _REG methods for some early-installed
7127 handlers.
7128 Most user handlers should be installed before call to
7129 AcpiEnableSubsystem.
7130 However, Event handlers and region handlers should be installed after
7131 AcpiInitializeObjects. Override handlers for the "default" regions should
7132 be
7133 installed early, however. This change executes all _REG methods for the
7134 default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
7135 chicken/egg issues between them. ACPICA BZ 848.
7136
7137 Implemented an optimization for GPE detection. This optimization will
7138 simply
7139 ignore GPE registers that contain no enabled GPEs -- there is no need to
7140 read the register since this information is available internally. This
7141 becomes more important on machines with a large GPE space. ACPICA
7142 bugzilla
7143 884. Lin Ming. Suggestion from Joe Liu.
7144
7145 Removed all use of the highly unreliable FADT revision field. The
7146 revision
7147 number in the FADT has been found to be completely unreliable and cannot
7148 be
7149 trusted. Only the actual table length can be used to infer the version.
7150 This
7151 change updates the ACPICA core and the disassembler so that both no
7152 longer
7153 even look at the FADT version and instead depend solely upon the FADT
7154 length.
7155
7156 Fix an unresolved name issue for the no-debug and no-error-message source
7157 generation cases. The _AcpiModuleName was left undefined in these cases,
7158 but
7159 it is actually needed as a parameter to some interfaces. Define
7160 _AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
7161
7162 Split several large files (makefiles and project files updated)
7163 utglobal.c -> utdecode.c
7164 dbcomds.c -> dbmethod.c dbnames.c
7165 dsopcode.c -> dsargs.c dscontrol.c
7166 dsload.c -> dsload2.c
7167 aslanalyze.c -> aslbtypes.c aslwalks.c
7168
7169 Example Code and Data Size: These are the sizes for the OS-independent
7170 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7171 debug version of the code includes the debug output trace mechanism and
7172 has
7173 a much larger code and data size.
7174
7175 Previous Release (VC 9.0):
7176 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
7177 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
7178 Current Release (VC 9.0):
7179 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
7180 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
7181
7182 2) iASL Compiler/Disassembler and Tools:
7183
7184 iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
7185 These are useful C-style macros with the standard definitions. ACPICA
7186 bugzilla 898.
7187
7188 iASL/DTC: Added support for integer expressions and labels. Support for
7189 full
7190 expressions for all integer fields in all ACPI tables. Support for labels
7191 in
7192 "generic" portions of tables such as UEFI. See the iASL reference manual.
7193
7194 Debugger: Added a command to display the status of global handlers. The
7195 "handlers" command will display op region, fixed event, and miscellaneous
7196 global handlers. installation status -- and for op regions, whether
7197 default
7198 or user-installed handler will be used.
7199
7200 iASL: Warn if reserved method incorrectly returns a value. Many
7201 predefined
7202 names are defined such that they do not return a value. If implemented as
7203 a
7204 method, issue a warning if such a name explicitly returns a value. ACPICA
7205 Bugzilla 855.
7206
7207 iASL: Added detection of GPE method name conflicts. Detects a conflict
7208 where
7209 there are two GPE methods of the form _Lxy and _Exy in the same scope.
7210 (For
7211 example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
7212
7213 iASL/DTC: Fixed a couple input scanner issues with comments and line
7214 numbers. Comment remover could get confused and miss a comment ending.
7215 Fixed
7216 a problem with line counter maintenance.
7217
7218 iASL/DTC: Reduced the severity of some errors from fatal to error. There
7219 is
7220 no need to abort on simple errors within a field definition.
7221
7222 Debugger: Simplified the output of the help command. All help output now
7223 in
7224 a single screen, instead of help subcommands. ACPICA Bugzilla 897.
7225
7226 ----------------------------------------
7227 12 January 2011. Summary of changes for version 20110112:
7228
7229 1) ACPI CA Core Subsystem:
7230
7231 Fixed a race condition between method execution and namespace walks that
7232 can
7233 possibly cause a fault. The problem was apparently introduced in version
7234 20100528 as a result of a performance optimization that reduces the
7235 number
7236 of
7237 namespace walks upon method exit by using the delete_namespace_subtree
7238 function instead of the delete_namespace_by_owner function used
7239 previously.
7240 Bug is a missing namespace lock in the delete_namespace_subtree function.
7241 dana.myers (a] oracle.com
7242
7243 Fixed several issues and a possible fault with the automatic "serialized"
7244 method support. History: This support changes a method to "serialized" on
7245 the
7246 fly if the method generates an AE_ALREADY_EXISTS error, indicating the
7247 possibility that it cannot handle reentrancy. This fix repairs a couple
7248 of
7249 issues seen in the field, especially on machines with many cores:
7250
7251 1) Delete method children only upon the exit of the last thread,
7252 so as to not delete objects out from under other running threads
7253 (and possibly causing a fault.)
7254 2) Set the "serialized" bit for the method only upon the exit of the
7255 Last thread, so as to not cause deadlock when running threads
7256 attempt to exit.
7257 3) Cleanup the use of the AML "MethodFlags" and internal method flags
7258 so that there is no longer any confusion between the two.
7259
7260 Lin Ming, Bob Moore. Reported by dana.myers (a] oracle.com.
7261
7262 Debugger: Now lock the namespace for duration of a namespace dump.
7263 Prevents
7264 issues if the namespace is changing dynamically underneath the debugger.
7265 Especially affects temporary namespace nodes, since the debugger displays
7266 these also.
7267
7268 Updated the ordering of include files. The ACPICA headers should appear
7269 before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
7270 set
7271 any necessary compiler-specific defines, etc. Affects the ACPI-related
7272 tools
7273 and utilities.
7274
7275 Updated all ACPICA copyrights and signons to 2011. Added the 2011
7276 copyright
7277 to all module headers and signons, including the Linux header. This
7278 affects
7279 virtually every file in the ACPICA core subsystem, iASL compiler, and all
7280 utilities.
7281
7282 Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
7283 project files for VC++ 6.0 are now obsolete. New project files can be
7284 found
7285 under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
7286 details.
7287
7288 Example Code and Data Size: These are the sizes for the OS-independent
7289 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7290 debug version of the code includes the debug output trace mechanism and
7291 has a
7292 much larger code and data size.
7293
7294 Previous Release (VC 6.0):
7295 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total
7296 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total
7297 Current Release (VC 9.0):
7298 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
7299 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
7300
7301 2) iASL Compiler/Disassembler and Tools:
7302
7303 iASL: Added generic data types to the Data Table compiler. Add "generic"
7304 data
7305 types such as UINT32, String, Unicode, etc., to simplify the generation
7306 of
7307 platform-defined tables such as UEFI. Lin Ming.
7308
7309 iASL: Added listing support for the Data Table Compiler. Adds listing
7310 support
7311 (-l) to display actual binary output for each line of input code.
7312
7313 ----------------------------------------
7314 09 December 2010. Summary of changes for version 20101209:
7315
7316 1) ACPI CA Core Subsystem:
7317
7318 Completed the major overhaul of the GPE support code that was begun in
7319 July
7320 2010. Major features include: removal of _PRW execution in ACPICA (host
7321 executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
7322 changes to existing interfaces, simplification of GPE handler operation,
7323 and
7324 a handful of new interfaces:
7325
7326 AcpiUpdateAllGpes
7327 AcpiFinishGpe
7328 AcpiSetupGpeForWake
7329 AcpiSetGpeWakeMask
7330 One new file, evxfgpe.c to consolidate all external GPE interfaces.
7331
7332 See the ACPICA Programmer Reference for full details and programming
7333 information. See the new section 4.4 "General Purpose Event (GPE)
7334 Support"
7335 for a full overview, and section 8.7 "ACPI General Purpose Event
7336 Management"
7337 for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
7338 Ming,
7339 Bob Moore, Rafael Wysocki.
7340
7341 Implemented a new GPE feature for Windows compatibility, the "Implicit
7342 Wake
7343 GPE Notify". This feature will automatically issue a Notify(2) on a
7344 device
7345 when a Wake GPE is received if there is no corresponding GPE method or
7346 handler. ACPICA BZ 870.
7347
7348 Fixed a problem with the Scope() operator during table parse and load
7349 phase.
7350 During load phase (table load or method execution), the scope operator
7351 should
7352 not enter the target into the namespace. Instead, it should open a new
7353 scope
7354 at the target location. Linux BZ 19462, ACPICA BZ 882.
7355
7356 Example Code and Data Size: These are the sizes for the OS-independent
7357 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7358 debug version of the code includes the debug output trace mechanism and
7359 has a
7360 much larger code and data size.
7361
7362 Previous Release:
7363 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total
7364 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total
7365 Current Release:
7366 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
7367 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
7368
7369 2) iASL Compiler/Disassembler and Tools:
7370
7371 iASL: Relax the alphanumeric restriction on _CID strings. These strings
7372 are
7373 "bus-specific" per the ACPI specification, and therefore any characters
7374 are
7375 acceptable. The only checks that can be performed are for a null string
7376 and
7377 perhaps for a leading asterisk. ACPICA BZ 886.
7378
7379 iASL: Fixed a problem where a syntax error that caused a premature EOF
7380 condition on the source file emitted a very confusing error message. The
7381 premature EOF is now detected correctly. ACPICA BZ 891.
7382
7383 Disassembler: Decode the AccessSize within a Generic Address Structure
7384 (byte
7385 access, word access, etc.) Note, this field does not allow arbitrary bit
7386 access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
7387
7388 New: AcpiNames utility - Example namespace dump utility. Shows an example
7389 of
7390 ACPICA configuration for a minimal namespace dump utility. Uses table and
7391 namespace managers, but no AML interpreter. Does not add any
7392 functionality
7393 over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
7394 partition and configure ACPICA. ACPICA BZ 883.
7395
7396 AML Debugger: Increased the debugger buffer size for method return
7397 objects.
7398 Was 4K, increased to 16K. Also enhanced error messages for debugger
7399 method
7400 execution, including the buffer overflow case.
7401
7402 ----------------------------------------
7403 13 October 2010. Summary of changes for version 20101013:
7404
7405 1) ACPI CA Core Subsystem:
7406
7407 Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
7408 now
7409 clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
7410 HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
7411
7412 Changed the type of the predefined namespace object _TZ from ThermalZone
7413 to
7414 Device. This was found to be confusing to the host software that
7415 processes
7416 the various thermal zones, since _TZ is not really a ThermalZone.
7417 However,
7418 a
7419 Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
7420 Zhang.
7421
7422 Added Windows Vista SP2 to the list of supported _OSI strings. The actual
7423 string is "Windows 2006 SP2".
7424
7425 Eliminated duplicate code in AcpiUtExecute* functions. Now that the
7426 nsrepair
7427 code automatically repairs _HID-related strings, this type of code is no
7428 longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
7429 878.
7430
7431 Example Code and Data Size: These are the sizes for the OS-independent
7432 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7433 debug version of the code includes the debug output trace mechanism and
7434 has a
7435 much larger code and data size.
7436
7437 Previous Release:
7438 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
7439 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
7440 Current Release:
7441 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
7442 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
7443
7444 2) iASL Compiler/Disassembler and Tools:
7445
7446 iASL: Implemented additional compile-time validation for _HID strings.
7447 The
7448 non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
7449 length
7450 of
7451 the string must be exactly seven or eight characters. For both _HID and
7452 _CID
7453 strings, all characters must be alphanumeric. ACPICA BZ 874.
7454
7455 iASL: Allow certain "null" resource descriptors. Some BIOS code creates
7456 descriptors that are mostly or all zeros, with the expectation that they
7457 will
7458 be filled in at runtime. iASL now allows this as long as there is a
7459 "resource
7460 tag" (name) associated with the descriptor, which gives the ASL a handle
7461 needed to modify the descriptor. ACPICA BZ 873.
7462
7463 Added single-thread support to the generic Unix application OSL.
7464 Primarily
7465 for iASL support, this change removes the use of semaphores in the
7466 single-
7467 threaded ACPICA tools/applications - increasing performance. The
7468 _MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
7469 option. ACPICA BZ 879.
7470
7471 AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
7472 support
7473 for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
7474
7475 iASL: Moved all compiler messages to a new file, aslmessages.h.
7476
7477 ----------------------------------------
7478 15 September 2010. Summary of changes for version 20100915:
7479
7480 1) ACPI CA Core Subsystem:
7481
7482 Removed the AcpiOsDerivePciId OSL interface. The various host
7483 implementations
7484 of this function were not OS-dependent and are now obsolete and can be
7485 removed from all host OSLs. This function has been replaced by
7486 AcpiHwDerivePciId, which is now part of the ACPICA core code.
7487 AcpiHwDerivePciId has been implemented without recursion. Adds one new
7488 module, hwpci.c. ACPICA BZ 857.
7489
7490 Implemented a dynamic repair for _HID and _CID strings. The following
7491 problems are now repaired at runtime: 1) Remove a leading asterisk in the
7492 string, and 2) the entire string is uppercased. Both repairs are in
7493 accordance with the ACPI specification and will simplify host driver
7494 code.
7495 ACPICA BZ 871.
7496
7497 The ACPI_THREAD_ID type is no longer configurable, internally it is now
7498 always UINT64. This simplifies the ACPICA code, especially any printf
7499 output.
7500 UINT64 is the only common data type for all thread_id types across all
7501 operating systems. It is now up to the host OSL to cast the native
7502 thread_id
7503 type to UINT64 before returning the value to ACPICA (via
7504 AcpiOsGetThreadId).
7505 Lin Ming, Bob Moore.
7506
7507 Added the ACPI_INLINE type to enhance the ACPICA configuration. The
7508 "inline"
7509 keyword is not standard across compilers, and this type allows inline to
7510 be
7511 configured on a per-compiler basis. Lin Ming.
7512
7513 Made the system global AcpiGbl_SystemAwakeAndRunning publicly
7514 available.
7515 Added an extern for this boolean in acpixf.h. Some hosts utilize this
7516 value
7517 during suspend/restore operations. ACPICA BZ 869.
7518
7519 All code that implements error/warning messages with the "ACPI:" prefix
7520 has
7521 been moved to a new module, utxferror.c.
7522
7523 The UINT64_OVERLAY was moved to utmath.c, which is the only module where
7524 it
7525 is used. ACPICA BZ 829. Lin Ming, Bob Moore.
7526
7527 Example Code and Data Size: These are the sizes for the OS-independent
7528 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7529 debug version of the code includes the debug output trace mechanism and
7530 has a
7531 much larger code and data size.
7532
7533 Previous Release:
7534 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total
7535 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total
7536 Current Release:
7537 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
7538 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
7539
7540 2) iASL Compiler/Disassembler and Tools:
7541
7542 iASL/Disassembler: Write ACPI errors to stderr instead of the output
7543 file.
7544 This keeps the output files free of random error messages that may
7545 originate
7546 from within the namespace/interpreter code. Used this opportunity to
7547 merge
7548 all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
7549 866. Lin Ming, Bob Moore.
7550
7551 Tools: update some printfs for ansi warnings on size_t. Handle width
7552 change
7553 of size_t on 32-bit versus 64-bit generations. Lin Ming.
7554
7555 ----------------------------------------
7556 06 August 2010. Summary of changes for version 20100806:
7557
7558 1) ACPI CA Core Subsystem:
7559
7560 Designed and implemented a new host interface to the _OSI support code.
7561 This
7562 will allow the host to dynamically add or remove multiple _OSI strings,
7563 as
7564 well as install an optional handler that is called for each _OSI
7565 invocation.
7566 Also added a new AML debugger command, 'osi' to display and modify the
7567 global
7568 _OSI string table, and test support in the AcpiExec utility. See the
7569 ACPICA
7570 reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
7571 New Functions:
7572 AcpiInstallInterface - Add an _OSI string.
7573 AcpiRemoveInterface - Delete an _OSI string.
7574 AcpiInstallInterfaceHandler - Install optional _OSI handler.
7575 Obsolete Functions:
7576 AcpiOsValidateInterface - no longer used.
7577 New Files:
7578 source/components/utilities/utosi.c
7579
7580 Re-introduced the support to enable multi-byte transfers for Embedded
7581 Controller (EC) operation regions. A reported problem was found to be a
7582 bug
7583 in the host OS, not in the multi-byte support. Previously, the maximum
7584 data
7585 size passed to the EC operation region handler was a single byte. There
7586 are
7587 often EC Fields larger than one byte that need to be transferred, and it
7588 is
7589 useful for the EC driver to lock these as a single transaction. This
7590 change
7591 enables single transfers larger than 8 bits. This effectively changes the
7592 access to the EC space from ByteAcc to AnyAcc, and will probably require
7593 changes to the host OS Embedded Controller driver to enable 16/32/64/256-
7594 bit
7595 transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
7596
7597 Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
7598 prototype in acpiosxf.h had the output value pointer as a (void *).
7599 It should be a (UINT64 *). This may affect some host OSL code.
7600
7601 Fixed a couple problems with the recently modified Linux makefiles for
7602 iASL
7603 and AcpiExec. These new makefiles place the generated object files in the
7604 local directory so that there can be no collisions between the files that
7605 are
7606 shared between them that are compiled with different options.
7607
7608 Example Code and Data Size: These are the sizes for the OS-independent
7609 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7610 debug version of the code includes the debug output trace mechanism and
7611 has a
7612 much larger code and data size.
7613
7614 Previous Release:
7615 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
7616 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total
7617 Current Release:
7618 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total
7619 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total
7620
7621 2) iASL Compiler/Disassembler and Tools:
7622
7623 iASL/Disassembler: Added a new option (-da, "disassemble all") to load
7624 the
7625 namespace from and disassemble an entire group of AML files. Useful for
7626 loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
7627 and
7628 disassembling with one simple command. ACPICA BZ 865. Lin Ming.
7629
7630 iASL: Allow multiple invocations of -e option. This change allows
7631 multiple
7632 uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
7633 834.
7634 Lin Ming.
7635
7636 ----------------------------------------
7637 02 July 2010. Summary of changes for version 20100702:
7638
7639 1) ACPI CA Core Subsystem:
7640
7641 Implemented several updates to the recently added GPE reference count
7642 support. The model for "wake" GPEs is changing to give the host OS
7643 complete
7644 control of these GPEs. Eventually, the ACPICA core will not execute any
7645 _PRW
7646 methods, since the host already must execute them. Also, additional
7647 changes
7648 were made to help ensure that the reference counts are kept in proper
7649 synchronization with reality. Rafael J. Wysocki.
7650
7651 1) Ensure that GPEs are not enabled twice during initialization.
7652 2) Ensure that GPE enable masks stay in sync with the reference count.
7653 3) Do not inadvertently enable GPEs when writing GPE registers.
7654 4) Remove the internal wake reference counter and add new AcpiGpeWakeup
7655 interface. This interface will set or clear individual GPEs for wakeup.
7656 5) Remove GpeType argument from AcpiEnable and AcpiDisable. These
7657 interfaces
7658 are now used for "runtime" GPEs only.
7659
7660 Changed the behavior of the GPE install/remove handler interfaces. The
7661 GPE
7662 is
7663 no longer disabled during this process, as it was found to cause problems
7664 on
7665 some machines. Rafael J. Wysocki.
7666
7667 Reverted a change introduced in version 20100528 to enable Embedded
7668 Controller multi-byte transfers. This change was found to cause problems
7669 with
7670 Index Fields and possibly Bank Fields. It will be reintroduced when these
7671 problems have been resolved.
7672
7673 Fixed a problem with references to Alias objects within Package Objects.
7674 A
7675 reference to an Alias within the definition of a Package was not always
7676 resolved properly. Aliases to objects like Processors, Thermal zones,
7677 etc.
7678 were resolved to the actual object instead of a reference to the object
7679 as
7680 it
7681 should be. Package objects are only allowed to contain integer, string,
7682 buffer, package, and reference objects. Redhat bugzilla 608648.
7683
7684 Example Code and Data Size: These are the sizes for the OS-independent
7685 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7686 debug version of the code includes the debug output trace mechanism and
7687 has a
7688 much larger code and data size.
7689
7690 Previous Release:
7691 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
7692 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total
7693 Current Release:
7694 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
7695 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total
7696
7697 2) iASL Compiler/Disassembler and Tools:
7698
7699 iASL: Implemented a new compiler subsystem to allow definition and
7700 compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
7701 These
7702 are called "ACPI Data Tables", and the new compiler is the "Data Table
7703 Compiler". This compiler is intended to simplify the existing error-prone
7704 process of creating these tables for the BIOS, as well as allowing the
7705 disassembly, modification, recompilation, and override of existing ACPI
7706 data
7707 tables. See the iASL User Guide for detailed information.
7708
7709 iASL: Implemented a new Template Generator option in support of the new
7710 Data
7711 Table Compiler. This option will create examples of all known ACPI tables
7712 that can be used as the basis for table development. See the iASL
7713 documentation and the -T option.
7714
7715 Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
7716 Descriptor Table).
7717
7718 Updated the Linux makefiles for iASL and AcpiExec to place the generated
7719 object files in the local directory so that there can be no collisions
7720 between the shared files between them that are generated with different
7721 options.
7722
7723 Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
7724 Use
7725 the #define __APPLE__ to enable this support.
7726
7727 ----------------------------------------
7728 28 May 2010. Summary of changes for version 20100528:
7729
7730 Note: The ACPI 4.0a specification was released on April 5, 2010 and is
7731 available at www.acpi.info. This is primarily an errata release.
7732
7733 1) ACPI CA Core Subsystem:
7734
7735 Undefined ACPI tables: We are looking for the definitions for the
7736 following
7737 ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
7738
7739 Implemented support to enable multi-byte transfers for Embedded
7740 Controller
7741 (EC) operation regions. Previously, the maximum data size passed to the
7742 EC
7743 operation region handler was a single byte. There are often EC Fields
7744 larger
7745 than one byte that need to be transferred, and it is useful for the EC
7746 driver
7747 to lock these as a single transaction. This change enables single
7748 transfers
7749 larger than 8 bits. This effectively changes the access to the EC space
7750 from
7751 ByteAcc to AnyAcc, and will probably require changes to the host OS
7752 Embedded
7753 Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
7754 bit
7755 transfers. Alexey Starikovskiy, Lin Ming
7756
7757 Implemented a performance enhancement for namespace search and access.
7758 This
7759 change enhances the performance of namespace searches and walks by adding
7760 a
7761 backpointer to the parent in each namespace node. On large namespaces,
7762 this
7763 change can improve overall ACPI performance by up to 9X. Adding a pointer
7764 to
7765 each namespace node increases the overall size of the internal namespace
7766 by
7767 about 5%, since each namespace entry usually consists of both a namespace
7768 node and an ACPI operand object. However, this is the first growth of the
7769 namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
7770
7771 Implemented a performance optimization that reduces the number of
7772 namespace
7773 walks. On control method exit, only walk the namespace if the method is
7774 known
7775 to have created namespace objects outside of its local scope. Previously,
7776 the
7777 entire namespace was traversed on each control method exit. This change
7778 can
7779 improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
7780 Moore.
7781
7782 Added support to truncate I/O addresses to 16 bits for Windows
7783 compatibility.
7784 Some ASL code has been seen in the field that inadvertently has bits set
7785 above bit 15. This feature is optional and is enabled if the BIOS
7786 requests
7787 any Windows OSI strings. It can also be enabled by the host OS. Matthew
7788 Garrett, Bob Moore.
7789
7790 Added support to limit the maximum time for the ASL Sleep() operator. To
7791 prevent accidental deep sleeps, limit the maximum time that Sleep() will
7792 actually sleep. Configurable, the default maximum is two seconds. ACPICA
7793 bugzilla 854.
7794
7795 Added run-time validation support for the _WDG and_WED Microsoft
7796 predefined
7797 methods. These objects are defined by "Windows Instrumentation", and are
7798 not
7799 part of the ACPI spec. ACPICA BZ 860.
7800
7801 Expanded all statistic counters used during namespace and device
7802 initialization from 16 to 32 bits in order to support very large
7803 namespaces.
7804
7805 Replaced all instances of %d in printf format specifiers with %u since
7806 nearly
7807 all integers in ACPICA are unsigned.
7808
7809 Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
7810 returned
7811 as AE_NO_HANDLER.
7812
7813 Example Code and Data Size: These are the sizes for the OS-independent
7814 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7815 debug version of the code includes the debug output trace mechanism and
7816 has a
7817 much larger code and data size.
7818
7819 Previous Release:
7820 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total
7821 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total
7822 Current Release:
7823 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
7824 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total
7825
7826 2) iASL Compiler/Disassembler and Tools:
7827
7828 iASL: Added compiler support for the _WDG and_WED Microsoft predefined
7829 methods. These objects are defined by "Windows Instrumentation", and are
7830 not
7831 part of the ACPI spec. ACPICA BZ 860.
7832
7833 AcpiExec: added option to disable the memory tracking mechanism. The -dt
7834 option will disable the tracking mechanism, which improves performance
7835 considerably.
7836
7837 AcpiExec: Restructured the command line options into -d (disable) and -e
7838 (enable) options.
7839
7840 ----------------------------------------
7841 28 April 2010. Summary of changes for version 20100428:
7842
7843 1) ACPI CA Core Subsystem:
7844
7845 Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
7846 including FADT-based and GPE Block Devices, execute any _PRW methods in
7847 the
7848 new table, and process any _Lxx/_Exx GPE methods in the new table. Any
7849 runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
7850 immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
7851 Devices. Provides compatibility with other ACPI implementations. Two new
7852 files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
7853 Moore.
7854
7855 Fixed a regression introduced in version 20100331 within the table
7856 manager
7857 where initial table loading could fail. This was introduced in the fix
7858 for
7859 AcpiReallocateRootTable. Also, renamed some of fields in the table
7860 manager
7861 data structures to clarify their meaning and use.
7862
7863 Fixed a possible allocation overrun during internal object copy in
7864 AcpiUtCopySimpleObject. The original code did not correctly handle the
7865 case
7866 where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
7867 847.
7868
7869 Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
7870 possible access beyond end-of-allocation. Also, now fully validate
7871 descriptor
7872 (size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
7873
7874 Example Code and Data Size: These are the sizes for the OS-independent
7875 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7876 debug version of the code includes the debug output trace mechanism and
7877 has a
7878 much larger code and data size.
7879
7880 Previous Release:
7881 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total
7882 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total
7883 Current Release:
7884 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total
7885 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total
7886
7887 2) iASL Compiler/Disassembler and Tools:
7888
7889 iASL: Implemented Min/Max/Len/Gran validation for address resource
7890 descriptors. This change implements validation for the address fields
7891 that
7892 are common to all address-type resource descriptors. These checks are
7893 implemented: Checks for valid Min/Max, length within the Min/Max window,
7894 valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
7895 per
7896 table 6-40 in the ACPI 4.0a specification. Also split the large
7897 aslrestype1.c
7898 and aslrestype2.c files into five new files. ACPICA BZ 840.
7899
7900 iASL: Added support for the _Wxx predefined names. This support was
7901 missing
7902 and these names were not recognized by the compiler as valid predefined
7903 names. ACPICA BZ 851.
7904
7905 iASL: Added an error for all predefined names that are defined to return
7906 no
7907 value and thus must be implemented as Control Methods. These include all
7908 of
7909 the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
7910 names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
7911
7912 iASL: Implemented the -ts option to emit hex AML data in ASL format, as
7913 an
7914 ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
7915 be
7916 dynamically loaded via the Load() operator. Also cleaned up output for
7917 the
7918 -
7919 ta and -tc options. ACPICA BZ 853.
7920
7921 Tests: Added a new file with examples of extended iASL error checking.
7922 Demonstrates the advanced error checking ability of the iASL compiler.
7923 Available at tests/misc/badcode.asl.
7924
7925 ----------------------------------------
7926 31 March 2010. Summary of changes for version 20100331:
7927
7928 1) ACPI CA Core Subsystem:
7929
7930 Completed a major update for the GPE support in order to improve support
7931 for
7932 shared GPEs and to simplify both host OS and ACPICA code. Added a
7933 reference
7934 count mechanism to support shared GPEs that require multiple device
7935 drivers.
7936 Several external interfaces have changed. One external interface has been
7937 removed. One new external interface was added. Most of the GPE external
7938 interfaces now use the GPE spinlock instead of the events mutex (and the
7939 Flags parameter for many GPE interfaces has been removed.) See the
7940 updated
7941 ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
7942 Rafael
7943 Wysocki. ACPICA BZ 831.
7944
7945 Changed:
7946 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
7947 Removed:
7948 AcpiSetGpeType
7949 New:
7950 AcpiSetGpe
7951
7952 Implemented write support for DataTable operation regions. These regions
7953 are
7954 defined via the DataTableRegion() operator. Previously, only read support
7955 was
7956 implemented. The ACPI specification allows DataTableRegions to be
7957 read/write,
7958 however.
7959
7960 Implemented a new subsystem option to force a copy of the DSDT to local
7961 memory. Optionally copy the entire DSDT to local memory (instead of
7962 simply
7963 mapping it.) There are some (albeit very rare) BIOSs that corrupt or
7964 replace
7965 the original DSDT, creating the need for this option. Default is FALSE,
7966 do
7967 not copy the DSDT.
7968
7969 Implemented detection of a corrupted or replaced DSDT. This change adds
7970 support to detect a DSDT that has been corrupted and/or replaced from
7971 outside
7972 the OS (by firmware). This is typically catastrophic for the system, but
7973 has
7974 been seen on some machines. Once this problem has been detected, the DSDT
7975 copy option can be enabled via system configuration. Lin Ming, Bob Moore.
7976
7977 Fixed two problems with AcpiReallocateRootTable during the root table
7978 copy.
7979 When copying the root table to the new allocation, the length used was
7980 incorrect. The new size was used instead of the current table size,
7981 meaning
7982 too much data was copied. Also, the count of available slots for ACPI
7983 tables
7984 was not set correctly. Alexey Starikovskiy, Bob Moore.
7985
7986 Example Code and Data Size: These are the sizes for the OS-independent
7987 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7988 debug version of the code includes the debug output trace mechanism and
7989 has a
7990 much larger code and data size.
7991
7992 Previous Release:
7993 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total
7994 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total
7995 Current Release:
7996 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total
7997 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total
7998
7999 2) iASL Compiler/Disassembler and Tools:
8000
8001 iASL: Implement limited typechecking for values returned from predefined
8002 control methods. The type of any returned static (unnamed) object is now
8003 validated. For example, Return(1). ACPICA BZ 786.
8004
8005 iASL: Fixed a predefined name object verification regression. Fixes a
8006 problem
8007 introduced in version 20100304. An error is incorrectly generated if a
8008 predefined name is declared as a static named object with a value defined
8009 using the keywords "Zero", "One", or "Ones". Lin Ming.
8010
8011 iASL: Added Windows 7 support for the -g option (get local ACPI tables)
8012 by
8013 reducing the requested registry access rights. ACPICA BZ 842.
8014
8015 Disassembler: fixed a possible fault when generating External()
8016 statements.
8017 Introduced in commit ae7d6fd: Properly handle externals with parent-
8018 prefix
8019 (carat). Fixes a string length allocation calculation. Lin Ming.
8020
8021 ----------------------------------------
8022 04 March 2010. Summary of changes for version 20100304:
8023
8024 1) ACPI CA Core Subsystem:
8025
8026 Fixed a possible problem with the AML Mutex handling function
8027 AcpiExReleaseMutex where the function could fault under the very rare
8028 condition when the interpreter has blocked, the interpreter lock is
8029 released,
8030 the interpreter is then reentered via the same thread, and attempts to
8031 acquire an AML mutex that was previously acquired. FreeBSD report 140979.
8032 Lin
8033 Ming.
8034
8035 Implemented additional configuration support for the AML "Debug Object".
8036 Output from the debug object can now be enabled via a global variable,
8037 AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
8038 debugging.
8039 This debug output is now available in the release version of ACPICA
8040 instead
8041 of just the debug version. Also, the entire debug output module can now
8042 be
8043 configured out of the ACPICA build if desired. One new file added,
8044 executer/exdebug.c. Lin Ming, Bob Moore.
8045
8046 Added header support for the ACPI MCHI table (Management Controller Host
8047 Interface Table). This table was added in ACPI 4.0, but the defining
8048 document
8049 has only recently become available.
8050
8051 Standardized output of integer values for ACPICA warnings/errors. Always
8052 use
8053 0x prefix for hex output, always use %u for unsigned integer decimal
8054 output.
8055 Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
8056 400
8057 invocations.) These invocations were converted from the original
8058 ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
8059
8060 Example Code and Data Size: These are the sizes for the OS-independent
8061 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8062 debug version of the code includes the debug output trace mechanism and
8063 has a
8064 much larger code and data size.
8065
8066 Previous Release:
8067 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total
8068 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total
8069 Current Release:
8070 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total
8071 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total
8072
8073 2) iASL Compiler/Disassembler and Tools:
8074
8075 iASL: Implemented typechecking support for static (non-control method)
8076 predefined named objects that are declared with the Name() operator. For
8077 example, the type of this object is now validated to be of type Integer:
8078 Name(_BBN, 1). This change migrates the compiler to using the core
8079 predefined
8080 name table instead of maintaining a local version. Added a new file,
8081 aslpredef.c. ACPICA BZ 832.
8082
8083 Disassembler: Added support for the ACPI 4.0 MCHI table.
8084
8085 ----------------------------------------
8086 21 January 2010. Summary of changes for version 20100121:
8087
8088 1) ACPI CA Core Subsystem:
8089
8090 Added the 2010 copyright to all module headers and signons. This affects
8091 virtually every file in the ACPICA core subsystem, the iASL compiler, the
8092 tools/utilities, and the test suites.
8093
8094 Implemented a change to the AcpiGetDevices interface to eliminate
8095 unnecessary
8096 invocations of the _STA method. In the case where a specific _HID is
8097 requested, do not run _STA until a _HID match is found. This eliminates
8098 potentially dozens of _STA calls during a search for a particular
8099 device/HID,
8100 which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
8101
8102 Implemented an additional repair for predefined method return values.
8103 Attempt
8104 to repair unexpected NULL elements within returned Package objects.
8105 Create
8106 an
8107 Integer of value zero, a NULL String, or a zero-length Buffer as
8108 appropriate.
8109 ACPICA BZ 818. Lin Ming, Bob Moore.
8110
8111 Removed the obsolete ACPI_INTEGER data type. This type was introduced as
8112 the
8113 code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
8114 (with
8115 64-bit AML integers). It is now obsolete and this change removes it from
8116 the
8117 ACPICA code base, replaced by UINT64. The original typedef has been
8118 retained
8119 for now for compatibility with existing device driver code. ACPICA BZ
8120 824.
8121
8122 Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
8123 in
8124 the parse tree object.
8125
8126 Added additional warning options for the gcc-4 generation. Updated the
8127 source
8128 accordingly. This includes some code restructuring to eliminate
8129 unreachable
8130 code, elimination of some gotos, elimination of unused return values,
8131 some
8132 additional casting, and removal of redundant declarations.
8133
8134 Example Code and Data Size: These are the sizes for the OS-independent
8135 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8136 debug version of the code includes the debug output trace mechanism and
8137 has a
8138 much larger code and data size.
8139
8140 Previous Release:
8141 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total
8142 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total
8143 Current Release:
8144 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total
8145 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total
8146
8147 2) iASL Compiler/Disassembler and Tools:
8148
8149 No functional changes for this release.
8150
8151 ----------------------------------------
8152 14 December 2009. Summary of changes for version 20091214:
8153
8154 1) ACPI CA Core Subsystem:
8155
8156 Enhanced automatic data type conversions for predefined name repairs.
8157 This
8158 change expands the automatic repairs/conversions for predefined name
8159 return
8160 values to make Integers, Strings, and Buffers fully interchangeable.
8161 Also,
8162 a
8163 Buffer can be converted to a Package of Integers if necessary. The
8164 nsrepair.c
8165 module was completely restructured. Lin Ming, Bob Moore.
8166
8167 Implemented automatic removal of null package elements during predefined
8168 name
8169 repairs. This change will automatically remove embedded and trailing NULL
8170 package elements from returned package objects that are defined to
8171 contain
8172 a
8173 variable number of sub-packages. The driver is then presented with a
8174 package
8175 with no null elements to deal with. ACPICA BZ 819.
8176
8177 Implemented a repair for the predefined _FDE and _GTM names. The expected
8178 return value for both names is a Buffer of 5 DWORDs. This repair fixes
8179 two
8180 possible problems (both seen in the field), where a package of integers
8181 is
8182 returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
8183 Kim.
8184
8185 Implemented additional module-level code support. This change will
8186 properly
8187 execute module-level code that is not at the root of the namespace (under
8188 a
8189 Device object, etc.). Now executes the code within the current scope
8190 instead
8191 of the root. ACPICA BZ 762. Lin Ming.
8192
8193 Fixed possible mutex acquisition errors when running _REG methods. Fixes
8194 a
8195 problem where mutex errors can occur when running a _REG method that is
8196 in
8197 the same scope as a method-defined operation region or an operation
8198 region
8199 under a module-level IF block. This type of code is rare, so the problem
8200 has
8201 not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
8202
8203 Fixed a possible memory leak during module-level code execution. An
8204 object
8205 could be leaked for each block of executed module-level code if the
8206 interpreter slack mode is enabled This change deletes any implicitly
8207 returned
8208 object from the module-level code block. Lin Ming.
8209
8210 Removed messages for successful predefined repair(s). The repair
8211 mechanism
8212 was considered too wordy. Now, messages are only unconditionally emitted
8213 if
8214 the return object cannot be repaired. Existing messages for successful
8215 repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
8216 827.
8217
8218 Example Code and Data Size: These are the sizes for the OS-independent
8219 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8220 debug version of the code includes the debug output trace mechanism and
8221 has a
8222 much larger code and data size.
8223
8224 Previous Release:
8225 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total
8226 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total
8227 Current Release:
8228 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total
8229 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total
8230
8231 2) iASL Compiler/Disassembler and Tools:
8232
8233 iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
8234 files
8235 were no longer automatically removed at the termination of the compile.
8236
8237 acpiexec: Implemented the -f option to specify default region fill value.
8238 This option specifies the value used to initialize buffers that simulate
8239 operation regions. Default value is zero. Useful for debugging problems
8240 that
8241 depend on a specific initial value for a region or field.
8242
8243 ----------------------------------------
8244 12 November 2009. Summary of changes for version 20091112:
8245
8246 1) ACPI CA Core Subsystem:
8247
8248 Implemented a post-order callback to AcpiWalkNamespace. The existing
8249 interface only has a pre-order callback. This change adds an additional
8250 parameter for a post-order callback which will be more useful for bus
8251 scans.
8252 ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
8253
8254 Modified the behavior of the operation region memory mapping cache for
8255 SystemMemory. Ensure that the memory mappings created for operation
8256 regions
8257 do not cross 4K page boundaries. Crossing a page boundary while mapping
8258 regions can cause kernel warnings on some hosts if the pages have
8259 different
8260 attributes. Such regions are probably BIOS bugs, and this is the
8261 workaround.
8262 Linux BZ 14445. Lin Ming.
8263
8264 Implemented an automatic repair for predefined methods that must return
8265 sorted lists. This change will repair (by sorting) packages returned by
8266 _ALR,
8267 _PSS, and _TSS. Drivers can now assume that the packages are correctly
8268 sorted
8269 and do not contain NULL package elements. Adds one new file,
8270 namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
8271
8272 Fixed a possible fault during predefined name validation if a return
8273 Package
8274 object contains NULL elements. Also adds a warning if a NULL element is
8275 followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
8276 may
8277 include repair or removal of all such NULL elements where possible.
8278
8279 Implemented additional module-level executable AML code support. This
8280 change
8281 will execute module-level code that is not at the root of the namespace
8282 (under a Device object, etc.) at table load time. Module-level executable
8283 AML
8284 code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
8285
8286 Implemented a new internal function to create Integer objects. This
8287 function
8288 simplifies miscellaneous object creation code. ACPICA BZ 823.
8289
8290 Reduced the severity of predefined repair messages, Warning to Info.
8291 Since
8292 the object was successfully repaired, a warning is too severe. Reduced to
8293 an
8294 info message for now. These messages may eventually be changed to debug-
8295 only.
8296 ACPICA BZ 812.
8297
8298 Example Code and Data Size: These are the sizes for the OS-independent
8299 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8300 debug version of the code includes the debug output trace mechanism and
8301 has a
8302 much larger code and data size.
8303
8304 Previous Release:
8305 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total
8306 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total
8307 Current Release:
8308 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total
8309 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total
8310
8311 2) iASL Compiler/Disassembler and Tools:
8312
8313 iASL: Implemented Switch() with While(1) so that Break works correctly.
8314 This
8315 change correctly implements the Switch operator with a surrounding
8316 While(1)
8317 so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
8318
8319 iASL: Added a message if a package initializer list is shorter than
8320 package
8321 length. Adds a new remark for a Package() declaration if an initializer
8322 list
8323 exists, but is shorter than the declared length of the package. Although
8324 technically legal, this is probably a coding error and it is seen in the
8325 field. ACPICA BZ 815. Lin Ming, Bob Moore.
8326
8327 iASL: Fixed a problem where the compiler could fault after the maximum
8328 number
8329 of errors was reached (200).
8330
8331 acpixtract: Fixed a possible warning for pointer cast if the compiler
8332 warning
8333 level set very high.
8334
8335 ----------------------------------------
8336 13 October 2009. Summary of changes for version 20091013:
8337
8338 1) ACPI CA Core Subsystem:
8339
8340 Fixed a problem where an Operation Region _REG method could be executed
8341 more
8342 than once. If a custom address space handler is installed by the host
8343 before
8344 the "initialize operation regions" phase of the ACPICA initialization,
8345 any
8346 _REG methods for that address space could be executed twice. This change
8347 fixes the problem. ACPICA BZ 427. Lin Ming.
8348
8349 Fixed a possible memory leak for the Scope() ASL operator. When the exact
8350 invocation of "Scope(\)" is executed (change scope to root), one internal
8351 operand object was leaked. Lin Ming.
8352
8353 Implemented a run-time repair for the _MAT predefined method. If the _MAT
8354 return value is defined as a Field object in the AML, and the field
8355 size is less than or equal to the default width of an integer (32 or
8356 64),_MAT
8357 can incorrectly return an Integer instead of a Buffer. ACPICA now
8358 automatically repairs this problem. ACPICA BZ 810.
8359
8360 Implemented a run-time repair for the _BIF and _BIX predefined methods.
8361 The
8362 "OEM Information" field is often incorrectly returned as an Integer with
8363 value zero if the field is not supported by the platform. This is due to
8364 an
8365 ambiguity in the ACPI specification. The field should always be a string.
8366 ACPICA now automatically repairs this problem by returning a NULL string
8367 within the returned Package. ACPICA BZ 807.
8368
8369 Example Code and Data Size: These are the sizes for the OS-independent
8370 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8371 debug version of the code includes the debug output trace mechanism and
8372 has a
8373 much larger code and data size.
8374
8375 Previous Release:
8376 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total
8377 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total
8378 Current Release:
8379 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total
8380 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total
8381
8382 2) iASL Compiler/Disassembler and Tools:
8383
8384 Disassembler: Fixed a problem where references to external symbols that
8385 contained one or more parent-prefixes (carats) were not handled
8386 correctly,
8387 possibly causing a fault. ACPICA BZ 806. Lin Ming.
8388
8389 Disassembler: Restructured the code so that all functions that handle
8390 external symbols are in a single module. One new file is added,
8391 common/dmextern.c.
8392
8393 AML Debugger: Added a max count argument for the Batch command (which
8394 executes multiple predefined methods within the namespace.)
8395
8396 iASL: Updated the compiler documentation (User Reference.) Available at
8397 http://www.acpica.org/documentation/. ACPICA BZ 750.
8398
8399 AcpiXtract: Updated for Lint and other formatting changes. Close all open
8400 files.
8401
8402 ----------------------------------------
8403 03 September 2009. Summary of changes for version 20090903:
8404
8405 1) ACPI CA Core Subsystem:
8406
8407 For Windows Vista compatibility, added the automatic execution of an _INI
8408 method located at the namespace root (\_INI). This method is executed at
8409 table load time. This support is in addition to the automatic execution
8410 of
8411 \_SB._INI. Lin Ming.
8412
8413 Fixed a possible memory leak in the interpreter for AML package objects
8414 if
8415 the package initializer list is longer than the defined size of the
8416 package.
8417 This apparently can only happen if the BIOS changes the package size on
8418 the
8419 fly (seen in a _PSS object), as ASL compilers do not allow this. The
8420 interpreter will truncate the package to the defined size (and issue an
8421 error
8422 message), but previously could leave the extra objects undeleted if they
8423 were
8424 pre-created during the argument processing (such is the case if the
8425 package
8426 consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
8427
8428 Fixed a problem seen when a Buffer or String is stored to itself via ASL.
8429 This has been reported in the field. Previously, ACPICA would zero out
8430 the
8431 buffer/string. Now, the operation is treated as a noop. Provides Windows
8432 compatibility. ACPICA BZ 803. Lin Ming.
8433
8434 Removed an extraneous error message for ASL constructs of the form
8435 Store(LocalX,LocalX) when LocalX is uninitialized. These curious
8436 statements
8437 are seen in many BIOSs and are once again treated as NOOPs and no error
8438 is
8439 emitted when they are encountered. ACPICA BZ 785.
8440
8441 Fixed an extraneous warning message if a _DSM reserved method returns a
8442 Package object. _DSM can return any type of object, so validation on the
8443 return type cannot be performed. ACPICA BZ 802.
8444
8445 Example Code and Data Size: These are the sizes for the OS-independent
8446 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8447 debug version of the code includes the debug output trace mechanism and
8448 has a
8449 much larger code and data size.
8450
8451 Previous Release:
8452 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total
8453 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total
8454 Current Release:
8455 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total
8456 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total
8457
8458 2) iASL Compiler/Disassembler and Tools:
8459
8460 iASL: Fixed a problem with the use of the Alias operator and Resource
8461 Templates. The correct alias is now constructed and no error is emitted.
8462 ACPICA BZ 738.
8463
8464 iASL: Implemented the -I option to specify additional search directories
8465 for
8466 include files. Allows multiple additional search paths for include files.
8467 Directories are searched in the order specified on the command line
8468 (after
8469 the local directory is searched.) ACPICA BZ 800.
8470
8471 iASL: Fixed a problem where the full pathname for include files was not
8472 emitted for warnings/errors. This caused the IDE support to not work
8473 properly. ACPICA BZ 765.
8474
8475 iASL: Implemented the -@ option to specify a Windows-style response file
8476 containing additional command line options. ACPICA BZ 801.
8477
8478 AcpiExec: Added support to load multiple AML files simultaneously (such
8479 as
8480 a
8481 DSDT and multiple SSDTs). Also added support for wildcards within the AML
8482 pathname. These features allow all machine tables to be easily loaded and
8483 debugged together. ACPICA BZ 804.
8484
8485 Disassembler: Added missing support for disassembly of HEST table Error
8486 Bank
8487 subtables.
8488
8489 ----------------------------------------
8490 30 July 2009. Summary of changes for version 20090730:
8491
8492 The ACPI 4.0 implementation for ACPICA is complete with this release.
8493
8494 1) ACPI CA Core Subsystem:
8495
8496 ACPI 4.0: Added header file support for all new and changed ACPI tables.
8497 Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
8498 new
8499 for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
8500 BERT,
8501 EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
8502 There
8503 have been some ACPI 4.0 changes to other existing tables. Split the large
8504 actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
8505
8506 ACPI 4.0: Implemented predefined name validation for all new names. There
8507 are
8508 31 new names in ACPI 4.0. The predefined validation module was split into
8509 two
8510 files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
8511
8512 Implemented support for so-called "module-level executable code". This is
8513 executable AML code that exists outside of any control method and is
8514 intended
8515 to be executed at table load time. Although illegal since ACPI 2.0, this
8516 type
8517 of code still exists and is apparently still being created. Blocks of
8518 this
8519 code are now detected and executed as intended. Currently, the code
8520 blocks
8521 must exist under either an If, Else, or While construct; these are the
8522 typical cases seen in the field. ACPICA BZ 762. Lin Ming.
8523
8524 Implemented an automatic dynamic repair for predefined names that return
8525 nested Package objects. This applies to predefined names that are defined
8526 to
8527 return a variable-length Package of sub-packages. If the number of sub-
8528 packages is one, BIOS code is occasionally seen that creates a simple
8529 single
8530 package with no sub-packages. This code attempts to fix the problem by
8531 wrapping a new package object around the existing package. These methods
8532 can
8533 be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
8534 BZ
8535 790.
8536
8537 Fixed a regression introduced in 20090625 for the AcpiGetDevices
8538 interface.
8539 The _HID/_CID matching was broken and no longer matched IDs correctly.
8540 ACPICA
8541 BZ 793.
8542
8543 Fixed a problem with AcpiReset where the reset would silently fail if the
8544 register was one of the protected I/O ports. AcpiReset now bypasses the
8545 port
8546 validation mechanism. This may eventually be driven into the
8547 AcpiRead/Write
8548 interfaces.
8549
8550 Fixed a regression related to the recent update of the AcpiRead/Write
8551 interfaces. A sleep/suspend could fail if the optional PM2 Control
8552 register
8553 does not exist during an attempt to write the Bus Master Arbitration bit.
8554 (However, some hosts already delete the code that writes this bit, and
8555 the
8556 code may in fact be obsolete at this date.) ACPICA BZ 799.
8557
8558 Fixed a problem where AcpiTerminate could fault if inadvertently called
8559 twice
8560 in succession. ACPICA BZ 795.
8561
8562 Example Code and Data Size: These are the sizes for the OS-independent
8563 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8564 debug version of the code includes the debug output trace mechanism and
8565 has a
8566 much larger code and data size.
8567
8568 Previous Release:
8569 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total
8570 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total
8571 Current Release:
8572 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total
8573 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total
8574
8575 2) iASL Compiler/Disassembler and Tools:
8576
8577 ACPI 4.0: Implemented disassembler support for all new ACPI tables and
8578 changes to existing tables. ACPICA BZ 775.
8579
8580 ----------------------------------------
8581 25 June 2009. Summary of changes for version 20090625:
8582
8583 The ACPI 4.0 Specification was released on June 16 and is available at
8584 www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
8585 continue for the next few releases.
8586
8587 1) ACPI CA Core Subsystem:
8588
8589 ACPI 4.0: Implemented interpreter support for the IPMI operation region
8590 address space. Includes support for bi-directional data buffers and an
8591 IPMI
8592 address space handler (to be installed by an IPMI device driver.) ACPICA
8593 BZ
8594 773. Lin Ming.
8595
8596 ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
8597 Includes
8598 support in both the header files and the disassembler.
8599
8600 Completed a major update for the AcpiGetObjectInfo external interface.
8601 Changes include:
8602 - Support for variable, unlimited length HID, UID, and CID strings.
8603 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
8604 etc.)
8605 - Call the _SxW power methods on behalf of a device object.
8606 - Determine if a device is a PCI root bridge.
8607 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
8608 These changes will require an update to all callers of this interface.
8609 See
8610 the updated ACPICA Programmer Reference for details. One new source file
8611 has
8612 been added - utilities/utids.c. ACPICA BZ 368, 780.
8613
8614 Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
8615 transfers. The Value parameter has been extended from 32 bits to 64 bits
8616 in
8617 order to support new ACPI 4.0 tables. These changes will require an
8618 update
8619 to
8620 all callers of these interfaces. See the ACPICA Programmer Reference for
8621 details. ACPICA BZ 768.
8622
8623 Fixed several problems with AcpiAttachData. The handler was not invoked
8624 when
8625 the host node was deleted. The data sub-object was not automatically
8626 deleted
8627 when the host node was deleted. The interface to the handler had an
8628 unused
8629 parameter, this was removed. ACPICA BZ 778.
8630
8631 Enhanced the function that dumps ACPI table headers. All non-printable
8632 characters in the string fields are now replaced with '?' (Signature,
8633 OemId,
8634 OemTableId, and CompilerId.) ACPI tables with non-printable characters in
8635 these fields are occasionally seen in the field. ACPICA BZ 788.
8636
8637 Fixed a problem with predefined method repair code where the code that
8638 attempts to repair/convert an object of incorrect type is only executed
8639 on
8640 the first time the predefined method is called. The mechanism that
8641 disables
8642 warnings on subsequent calls was interfering with the repair mechanism.
8643 ACPICA BZ 781.
8644
8645 Fixed a possible memory leak in the predefined validation/repair code
8646 when
8647 a
8648 buffer is automatically converted to an expected string object.
8649
8650 Removed obsolete 16-bit files from the distribution and from the current
8651 git
8652 tree head. ACPICA BZ 776.
8653
8654 Example Code and Data Size: These are the sizes for the OS-independent
8655 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8656 debug version of the code includes the debug output trace mechanism and
8657 has a
8658 much larger code and data size.
8659
8660 Previous Release:
8661 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total
8662 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total
8663 Current Release:
8664 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total
8665 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total
8666
8667 2) iASL Compiler/Disassembler and Tools:
8668
8669 ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
8670 operation region keyword. ACPICA BZ 771, 772. Lin Ming.
8671
8672 ACPI 4.0: iASL - implemented compile-time validation support for all new
8673 predefined names and control methods (31 total). ACPICA BZ 769.
8674
8675 ----------------------------------------
8676 21 May 2009. Summary of changes for version 20090521:
8677
8678 1) ACPI CA Core Subsystem:
8679
8680 Disabled the preservation of the SCI enable bit in the PM1 control
8681 register.
8682 The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
8683 to
8684 be
8685 a "preserved" bit - "OSPM always preserves this bit position", section
8686 4.7.3.2.1. However, some machines fail if this bit is in fact preserved
8687 because the bit needs to be explicitly set by the OS as a workaround. No
8688 machines fail if the bit is not preserved. Therefore, ACPICA no longer
8689 attempts to preserve this bit.
8690
8691 Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
8692 incorrectly formed _PRT package could cause a fault. Added validation to
8693 ensure that each package element is actually a sub-package.
8694
8695 Implemented a new interface to install or override a single control
8696 method,
8697 AcpiInstallMethod. This interface is useful when debugging in order to
8698 repair
8699 an existing method or to install a missing method without having to
8700 override
8701 the entire ACPI table. See the ACPICA Programmer Reference for use and
8702 examples. Lin Ming, Bob Moore.
8703
8704 Fixed several reference count issues with the DdbHandle object that is
8705 created from a Load or LoadTable operator. Prevent premature deletion of
8706 the
8707 object. Also, mark the object as invalid once the table has been
8708 unloaded.
8709 This is needed because the handle itself may not be deleted after the
8710 table
8711 unload, depending on whether it has been stored in a named object by the
8712 caller. Lin Ming.
8713
8714 Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
8715 mutexes of the same sync level are acquired but then not released in
8716 strict
8717 opposite order, the internally maintained Current Sync Level becomes
8718 confused
8719 and can cause subsequent execution errors. ACPICA BZ 471.
8720
8721 Changed the allowable release order for ASL mutex objects. The ACPI 4.0
8722 specification has been changed to make the SyncLevel for mutex objects
8723 more
8724 useful. When releasing a mutex, the SyncLevel of the mutex must now be
8725 the
8726 same as the current sync level. This makes more sense than the previous
8727 rule
8728 (SyncLevel less than or equal). This change updates the code to match the
8729 specification.
8730
8731 Fixed a problem with the local version of the AcpiOsPurgeCache function.
8732 The
8733 (local) cache must be locked during all cache object deletions. Andrew
8734 Baumann.
8735
8736 Updated the Load operator to use operation region interfaces. This
8737 replaces
8738 direct memory mapping with region access calls. Now, all region accesses
8739 go
8740 through the installed region handler as they should.
8741
8742 Simplified and optimized the NsGetNextNode function. Reduced parameter
8743 count
8744 and reduced code for this frequently used function.
8745
8746 Example Code and Data Size: These are the sizes for the OS-independent
8747 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8748 debug version of the code includes the debug output trace mechanism and
8749 has a
8750 much larger code and data size.
8751
8752 Previous Release:
8753 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total
8754 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total
8755 Current Release:
8756 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total
8757 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total
8758
8759 2) iASL Compiler/Disassembler and Tools:
8760
8761 Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
8762 problems
8763 with sub-table disassembly and handling invalid sub-tables. Attempt
8764 recovery
8765 after an invalid sub-table ID.
8766
8767 ----------------------------------------
8768 22 April 2009. Summary of changes for version 20090422:
8769
8770 1) ACPI CA Core Subsystem:
8771
8772 Fixed a compatibility issue with the recently released I/O port
8773 protection
8774 mechanism. For windows compatibility, 1) On a port protection violation,
8775 simply ignore the request and do not return an exception (allow the
8776 control
8777 method to continue execution.) 2) If only part of the request overlaps a
8778 protected port, read/write the individual ports that are not protected.
8779 Linux
8780 BZ 13036. Lin Ming
8781
8782 Enhanced the execution of the ASL/AML BreakPoint operator so that it
8783 actually
8784 breaks into the AML debugger if the debugger is present. This matches the
8785 ACPI-defined behavior.
8786
8787 Fixed several possible warnings related to the use of the configurable
8788 ACPI_THREAD_ID. This type can now be configured as either an integer or a
8789 pointer with no warnings. Also fixes several warnings in printf-like
8790 statements for the 64-bit build when the type is configured as a pointer.
8791 ACPICA BZ 766, 767.
8792
8793 Fixed a number of possible warnings when compiling with gcc 4+ (depending
8794 on
8795 warning options.) Examples include printf formats, aliasing, unused
8796 globals,
8797 missing prototypes, missing switch default statements, use of non-ANSI
8798 library functions, use of non-ANSI constructs. See generate/unix/Makefile
8799 for
8800 a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
8801
8802 Example Code and Data Size: These are the sizes for the OS-independent
8803 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8804 debug version of the code includes the debug output trace mechanism and
8805 has a
8806 much larger code and data size.
8807
8808 Previous Release:
8809 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total
8810 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total
8811 Current Release:
8812 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total
8813 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total
8814
8815 2) iASL Compiler/Disassembler and Tools:
8816
8817 iASL: Fixed a generation warning from Bison 2.3 and fixed several
8818 warnings
8819 on
8820 the 64-bit build.
8821
8822 iASL: Fixed a problem where the Unix/Linux versions of the compiler could
8823 not
8824 correctly digest Windows/DOS formatted files (with CR/LF).
8825
8826 iASL: Added a new option for "quiet mode" (-va) that produces only the
8827 compilation summary, not individual errors and warnings. Useful for large
8828 batch compilations.
8829
8830 AcpiExec: Implemented a new option (-z) to enable a forced
8831 semaphore/mutex
8832 timeout that can be used to detect hang conditions during execution of
8833 AML
8834 code (includes both internal semaphores and AML-defined mutexes and
8835 events.)
8836
8837 Added new makefiles for the generation of acpica in a generic unix-like
8838 environment. These makefiles are intended to generate the acpica tools
8839 and
8840 utilities from the original acpica git source tree structure.
8841
8842 Test Suites: Updated and cleaned up the documentation files. Updated the
8843 copyrights to 2009, affecting all source files. Use the new version of
8844 iASL
8845 with quiet mode. Increased the number of available semaphores in the
8846 Windows
8847 OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
8848 added
8849 an alternate implementation of the semaphore timeout to allow aslts to
8850 execute fully on Cygwin.
8851
8852 ----------------------------------------
8853 20 March 2009. Summary of changes for version 20090320:
8854
8855 1) ACPI CA Core Subsystem:
8856
8857 Fixed a possible race condition between AcpiWalkNamespace and dynamic
8858 table
8859 unloads. Added a reader/writer locking mechanism to allow multiple
8860 concurrent
8861 namespace walks (readers), but block a dynamic table unload until it can
8862 gain
8863 exclusive write access to the namespace. This fixes a problem where a
8864 table
8865 unload could (possibly catastrophically) delete the portion of the
8866 namespace
8867 that is currently being examined by a walk. Adds a new file, utlock.c,
8868 that
8869 implements the reader/writer lock mechanism. ACPICA BZ 749.
8870
8871 Fixed a regression introduced in version 20090220 where a change to the
8872 FADT
8873 handling could cause the ACPICA subsystem to access non-existent I/O
8874 ports.
8875
8876 Modified the handling of FADT register and table (FACS/DSDT) addresses.
8877 The
8878 FADT can contain both 32-bit and 64-bit versions of these addresses.
8879 Previously, the 64-bit versions were favored, meaning that if both 32 and
8880 64
8881 versions were valid, but not equal, the 64-bit version was used. This was
8882 found to cause some machines to fail. Now, in this case, the 32-bit
8883 version
8884 is used instead. This now matches the Windows behavior.
8885
8886 Implemented a new mechanism to protect certain I/O ports. Provides
8887 Microsoft
8888 compatibility and protects the standard PC I/O ports from access via AML
8889 code. Adds a new file, hwvalid.c
8890
8891 Fixed a possible extraneous warning message from the FADT support. The
8892 message warns of a 32/64 length mismatch between the legacy and GAS
8893 definitions for a register.
8894
8895 Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
8896 is
8897 made obsolete by the port protection mechanism above. It was previously
8898 used
8899 to validate the entire address range of an operation region, which could
8900 be
8901 incorrect if the range included illegal ports, but fields within the
8902 operation region did not actually access those ports. Validation is now
8903 performed on a per-field basis instead of the entire region.
8904
8905 Modified the handling of the PM1 Status Register ignored bit (bit 11.)
8906 Ignored bits must be "preserved" according to the ACPI spec. Usually,
8907 this
8908 means a read/modify/write when writing to the register. However, for
8909 status
8910 registers, writing a one means clear the event. Writing a zero means
8911 preserve
8912 the event (do not clear.) This behavior is clarified in the ACPI 4.0
8913 spec,
8914 and the ACPICA code now simply always writes a zero to the ignored bit.
8915
8916 Modified the handling of ignored bits for the PM1 A/B Control Registers.
8917 As
8918 per the ACPI specification, for the control registers, preserve
8919 (read/modify/write) all bits that are defined as either reserved or
8920 ignored.
8921
8922 Updated the handling of write-only bits in the PM1 A/B Control Registers.
8923 When reading the register, zero the write-only bits as per the ACPI spec.
8924 ACPICA BZ 443. Lin Ming.
8925
8926 Removed "Linux" from the list of supported _OSI strings. Linux no longer
8927 wants to reply true to this request. The Windows strings are the only
8928 paths
8929 through the AML that are tested and known to work properly.
8930
8931 Previous Release:
8932 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total
8933 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total
8934 Current Release:
8935 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total
8936 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total
8937
8938 2) iASL Compiler/Disassembler and Tools:
8939
8940 Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
8941 and
8942 aetables.c
8943
8944 ----------------------------------------
8945 20 February 2009. Summary of changes for version 20090220:
8946
8947 1) ACPI CA Core Subsystem:
8948
8949 Optimized the ACPI register locking. Removed locking for reads from the
8950 ACPI
8951 bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
8952 is
8953 not required when reading the single-bit registers. The
8954 AcpiGetRegisterUnlocked function is no longer needed and has been
8955 removed.
8956 This will improve performance for reads on these registers. ACPICA BZ
8957 760.
8958
8959 Fixed the parameter validation for AcpiRead/Write. Now return
8960 AE_BAD_PARAMETER if the input register pointer is null, and
8961 AE_BAD_ADDRESS
8962 if
8963 the register has an address of zero. Previously, these cases simply
8964 returned
8965 AE_OK. For optional registers such as PM1B status/enable/control, the
8966 caller
8967 should check for a valid register address before calling. ACPICA BZ 748.
8968
8969 Renamed the external ACPI bit register access functions. Renamed
8970 AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
8971 functions. The new names are AcpiReadBitRegister and
8972 AcpiWriteBitRegister.
8973 Also, restructured the code for these functions by simplifying the code
8974 path
8975 and condensing duplicate code to reduce code size.
8976
8977 Added new functions to transparently handle the possibly split PM1 A/B
8978 registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
8979 functions
8980 now handle the split registers for PM1 Status, Enable, and Control.
8981 ACPICA
8982 BZ
8983 746.
8984
8985 Added a function to handle the PM1 control registers,
8986 AcpiHwWritePm1Control.
8987 This function writes both of the PM1 control registers (A/B). These
8988 registers
8989 are different than the PM1 A/B status and enable registers in that
8990 different
8991 values can be written to the A/B registers. Most notably, the SLP_TYP
8992 bits
8993 can be different, as per the values returned from the _Sx predefined
8994 methods.
8995
8996 Removed an extra register write within AcpiHwClearAcpiStatus. This
8997 function
8998 was writing an optional PM1B status register twice. The existing call to
8999 the
9000 low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
9001 A/B
9002 register. ACPICA BZ 751.
9003
9004 Split out the PM1 Status registers from the FADT. Added new globals for
9005 these
9006 registers (A/B), similar to the way the PM1 Enable registers are handled.
9007 Instead of overloading the FADT Event Register blocks. This makes the
9008 code
9009 clearer and less prone to error.
9010
9011 Fixed the warning message for when the platform contains too many ACPI
9012 tables
9013 for the default size of the global root table data structure. The
9014 calculation
9015 for the truncation value was incorrect.
9016
9017 Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
9018 obsolete macro, since it is now a simple reference to ->common.type.
9019 There
9020 were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
9021
9022 Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
9023 TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
9024 simply SLEEP_TYPE. ACPICA BZ 754.
9025
9026 Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
9027 function is only needed on 64-bit host operating systems and is thus not
9028 included for 32-bit hosts.
9029
9030 Debug output: print the input and result for invocations of the _OSI
9031 reserved
9032 control method via the ACPI_LV_INFO debug level. Also, reduced some of
9033 the
9034 verbosity of this debug level. Len Brown.
9035
9036 Example Code and Data Size: These are the sizes for the OS-independent
9037 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9038 debug version of the code includes the debug output trace mechanism and
9039 has a
9040 much larger code and data size.
9041
9042 Previous Release:
9043 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total
9044 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total
9045 Current Release:
9046 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total
9047 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total
9048
9049 2) iASL Compiler/Disassembler and Tools:
9050
9051 Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
9052 various legal performance profiles.
9053
9054 ----------------------------------------
9055 23 January 2009. Summary of changes for version 20090123:
9056
9057 1) ACPI CA Core Subsystem:
9058
9059 Added the 2009 copyright to all module headers and signons. This affects
9060 virtually every file in the ACPICA core subsystem, the iASL compiler, and
9061 the tools/utilities.
9062
9063 Implemented a change to allow the host to override any ACPI table,
9064 including
9065 dynamically loaded tables. Previously, only the DSDT could be replaced by
9066 the
9067 host. With this change, the AcpiOsTableOverride interface is called for
9068 each
9069 table found in the RSDT/XSDT during ACPICA initialization, and also
9070 whenever
9071 a table is dynamically loaded via the AML Load operator.
9072
9073 Updated FADT flag definitions, especially the Boot Architecture flags.
9074
9075 Debugger: For the Find command, automatically pad the input ACPI name
9076 with
9077 underscores if the name is shorter than 4 characters. This enables a
9078 match
9079 with the actual namespace entry which is itself padded with underscores.
9080
9081 Example Code and Data Size: These are the sizes for the OS-independent
9082 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9083 debug version of the code includes the debug output trace mechanism and
9084 has a
9085 much larger code and data size.
9086
9087 Previous Release:
9088 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total
9089 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total
9090 Current Release:
9091 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total
9092 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total
9093
9094 2) iASL Compiler/Disassembler and Tools:
9095
9096 Fix build error under Bison-2.4.
9097
9098 Disassembler: Enhanced FADT support. Added decoding of the Boot
9099 Architecture
9100 flags. Now decode all flags, regardless of the FADT version. Flag output
9101 includes the FADT version which first defined each flag.
9102
9103 The iASL -g option now dumps the RSDT to a file (in addition to the FADT
9104 and
9105 DSDT). Windows only.
9106
9107 ----------------------------------------
9108 04 December 2008. Summary of changes for version 20081204:
9109
9110 1) ACPI CA Core Subsystem:
9111
9112 The ACPICA Programmer Reference has been completely updated and revamped
9113 for
9114 this release. This includes updates to the external interfaces, OSL
9115 interfaces, the overview sections, and the debugger reference.
9116
9117 Several new ACPICA interfaces have been implemented and documented in the
9118 programmer reference:
9119 AcpiReset - Writes the reset value to the FADT-defined reset register.
9120 AcpiDisableAllGpes - Disable all available GPEs.
9121 AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
9122 AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
9123 AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
9124 AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
9125 AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
9126
9127 Most of the public ACPI hardware-related interfaces have been moved to a
9128 new
9129 file, components/hardware/hwxface.c
9130
9131 Enhanced the FADT parsing and low-level ACPI register access: The ACPI
9132 register lengths within the FADT are now used, and the low level ACPI
9133 register access no longer hardcodes the ACPI register lengths. Given that
9134 there may be some risk in actually trusting the FADT register lengths, a
9135 run-
9136 time option was added to fall back to the default hardcoded lengths if
9137 the
9138 FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
9139 option is set to true for now, and a warning is issued if a suspicious
9140 FADT
9141 register length is overridden with the default value.
9142
9143 Fixed a reference count issue in NsRepairObject. This problem was
9144 introduced
9145 in version 20081031 as part of a fix to repair Buffer objects within
9146 Packages. Lin Ming.
9147
9148 Added semaphore support to the Linux/Unix application OS-services layer
9149 (OSL). ACPICA BZ 448. Lin Ming.
9150
9151 Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
9152 will
9153 be implemented in the OSL, or will binary semaphores be used instead.
9154
9155 Example Code and Data Size: These are the sizes for the OS-independent
9156 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9157 debug version of the code includes the debug output trace mechanism and
9158 has a
9159 much larger code and data size.
9160
9161 Previous Release:
9162 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total
9163 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total
9164 Current Release:
9165 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total
9166 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total
9167
9168 2) iASL Compiler/Disassembler and Tools:
9169
9170 iASL: Completed the '-e' option to include additional ACPI tables in
9171 order
9172 to
9173 aid with disassembly and External statement generation. ACPICA BZ 742.
9174 Lin
9175 Ming.
9176
9177 iASL: Removed the "named object in while loop" error. The compiler cannot
9178 determine how many times a loop will execute. ACPICA BZ 730.
9179
9180 Disassembler: Implemented support for FADT revision 2 (MS extension).
9181 ACPICA
9182 BZ 743.
9183
9184 Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
9185 MCFG).
9186
9187 ----------------------------------------
9188 31 October 2008. Summary of changes for version 20081031:
9189
9190 1) ACPI CA Core Subsystem:
9191
9192 Restructured the ACPICA header files into public/private. acpi.h now
9193 includes
9194 only the "public" acpica headers. All other acpica headers are "private"
9195 and
9196 should not be included by acpica users. One new file, accommon.h is used
9197 to
9198 include the commonly used private headers for acpica code generation.
9199 Future
9200 plans include moving all private headers to a new subdirectory.
9201
9202 Implemented an automatic Buffer->String return value conversion for
9203 predefined ACPI methods. For these methods (such as _BIF), added
9204 automatic
9205 conversion for return objects that are required to be a String, but a
9206 Buffer
9207 was found instead. This can happen when reading string battery data from
9208 an
9209 operation region, because it used to be difficult to convert the data
9210 from
9211 buffer to string from within the ASL. Ensures that the host OS is
9212 provided
9213 with a valid null-terminated string. Linux BZ 11822.
9214
9215 Updated the FACS waking vector interfaces. Split
9216 AcpiSetFirmwareWakingVector
9217 into two: one for the 32-bit vector, another for the 64-bit vector. This
9218 is
9219 required because the host OS must setup the wake much differently for
9220 each
9221 vector (real vs. protected mode, etc.) and the interface itself should
9222 not
9223 be
9224 deciding which vector to use. Also, eliminated the
9225 GetFirmwareWakingVector
9226 interface, as it served no purpose (only the firmware reads the vector,
9227 OS
9228 only writes the vector.) ACPICA BZ 731.
9229
9230 Implemented a mechanism to escape infinite AML While() loops. Added a
9231 loop
9232 counter to force exit from AML While loops if the count becomes too
9233 large.
9234 This can occur in poorly written AML when the hardware does not respond
9235 within a while loop and the loop does not implement a timeout. The
9236 maximum
9237 loop count is configurable. A new exception code is returned when a loop
9238 is
9239 broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
9240
9241 Optimized the execution of AML While loops. Previously, a control state
9242 object was allocated and freed for each execution of the loop. The
9243 optimization is to simply reuse the control state for each iteration.
9244 This
9245 speeds up the raw loop execution time by about 5%.
9246
9247 Enhanced the implicit return mechanism. For Windows compatibility, return
9248 an
9249 implicit integer of value zero for methods that contain no executable
9250 code.
9251 Such methods are seen in the field as stubs (presumably), and can cause
9252 drivers to fail if they expect a return value. Lin Ming.
9253
9254 Allow multiple backslashes as root prefixes in namepaths. In a fully
9255 qualified namepath, allow multiple backslash prefixes. This can happen
9256 (and
9257 is seen in the field) because of the use of a double-backslash in strings
9258 (since backslash is the escape character) causing confusion. ACPICA BZ
9259 739
9260 Lin Ming.
9261
9262 Emit a warning if two different FACS or DSDT tables are discovered in the
9263 FADT. Checks if there are two valid but different addresses for the FACS
9264 and
9265 DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
9266
9267 Consolidated the method argument count validation code. Merged the code
9268 that
9269 validates control method argument counts into the predefined validation
9270 module. Eliminates possible multiple warnings for incorrect argument
9271 counts.
9272
9273 Implemented ACPICA example code. Includes code for ACPICA initialization,
9274 handler installation, and calling a control method. Available at
9275 source/tools/examples.
9276
9277 Added a global pointer for FACS table to simplify internal FACS access.
9278 Use
9279 the global pointer instead of using AcpiGetTableByIndex for each FACS
9280 access.
9281 This simplifies the code for the Global Lock and the Firmware Waking
9282 Vector(s).
9283
9284 Example Code and Data Size: These are the sizes for the OS-independent
9285 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9286 debug version of the code includes the debug output trace mechanism and
9287 has a
9288 much larger code and data size.
9289
9290 Previous Release:
9291 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total
9292 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total
9293 Current Release:
9294 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total
9295 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total
9296
9297 2) iASL Compiler/Disassembler and Tools:
9298
9299 iASL: Improved disassembly of external method calls. Added the -e option
9300 to
9301 allow the inclusion of additional ACPI tables to help with the
9302 disassembly
9303 of
9304 method invocations and the generation of external declarations during the
9305 disassembly. Certain external method invocations cannot be disassembled
9306 properly without the actual declaration of the method. Use the -e option
9307 to
9308 include the table where the external method(s) are actually declared.
9309 Most
9310 useful for disassembling SSDTs that make method calls back to the master
9311 DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl
9312 -d
9313 -e dsdt.aml ssdt1.aml
9314
9315 iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
9316 problem where the use of an alias within a namepath would result in a not
9317 found error or cause the compiler to fault. Also now allows forward
9318 references from the Alias operator itself. ACPICA BZ 738.
9319
9320 ----------------------------------------
9321 26 September 2008. Summary of changes for version 20080926:
9322
9323 1) ACPI CA Core Subsystem:
9324
9325 Designed and implemented a mechanism to validate predefined ACPI methods
9326 and
9327 objects. This code validates the predefined ACPI objects (objects whose
9328 names
9329 start with underscore) that appear in the namespace, at the time they are
9330 evaluated. The argument count and the type of the returned object are
9331 validated against the ACPI specification. The purpose of this validation
9332 is
9333 to detect problems with the BIOS-implemented predefined ACPI objects
9334 before
9335 the results are returned to the ACPI-related drivers. Future enhancements
9336 may
9337 include actual repair of incorrect return objects where possible. Two new
9338 files are nspredef.c and acpredef.h.
9339
9340 Fixed a fault in the AML parser if a memory allocation fails during the
9341 Op
9342 completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
9343
9344 Fixed an issue with implicit return compatibility. This change improves
9345 the
9346 implicit return mechanism to be more compatible with the MS interpreter.
9347 Lin
9348 Ming, ACPICA BZ 349.
9349
9350 Implemented support for zero-length buffer-to-string conversions. Allow
9351 zero
9352 length strings during interpreter buffer-to-string conversions. For
9353 example,
9354 during the ToDecimalString and ToHexString operators, as well as implicit
9355 conversions. Fiodor Suietov, ACPICA BZ 585.
9356
9357 Fixed two possible memory leaks in the error exit paths of
9358 AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
9359 are
9360 similar in that they use a stack of state objects in order to eliminate
9361 recursion. The stack must be fully unwound and deallocated if an error
9362 occurs. Lin Ming. ACPICA BZ 383.
9363
9364 Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
9365 global
9366 ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
9367 Moore ACPICA BZ 442.
9368
9369 Removed the obsolete version number in module headers. Removed the
9370 "$Revision" number that appeared in each module header. This version
9371 number
9372 was useful under SourceSafe and CVS, but has no meaning under git. It is
9373 not
9374 only incorrect, it could also be misleading.
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.7K Code, 16.4K Data, 96.1K Total
9384 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total
9385 Current Release:
9386 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total
9387 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total
9388
9389 ----------------------------------------
9390 29 August 2008. Summary of changes for version 20080829:
9391
9392 1) ACPI CA Core Subsystem:
9393
9394 Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
9395 Reference. Changes include the elimination of cheating on the Object
9396 field
9397 for the DdbHandle subtype, addition of a reference class field to
9398 differentiate the various reference types (instead of an AML opcode), and
9399 the
9400 cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
9401
9402 Reduce an error to a warning for an incorrect method argument count.
9403 Previously aborted with an error if too few arguments were passed to a
9404 control method via the external ACPICA interface. Now issue a warning
9405 instead
9406 and continue. Handles the case where the method inadvertently declares
9407 too
9408 many arguments, but does not actually use the extra ones. Applies mainly
9409 to
9410 the predefined methods. Lin Ming. Linux BZ 11032.
9411
9412 Disallow the evaluation of named object types with no intrinsic value.
9413 Return
9414 AE_TYPE for objects that have no value and therefore evaluation is
9415 undefined:
9416 Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
9417 of
9418 these types were allowed, but an exception would be generated at some
9419 point
9420 during the evaluation. Now, the error is generated up front.
9421
9422 Fixed a possible memory leak in the AcpiNsGetExternalPathname function
9423 (nsnames.c). Fixes a leak in the error exit path.
9424
9425 Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
9426 debug
9427 levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
9428 ACPI_EXCEPTION
9429 interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
9430 ACPI_LV_EVENTS.
9431
9432 Removed obsolete and/or unused exception codes from the acexcep.h header.
9433 There is the possibility that certain device drivers may be affected if
9434 they
9435 use any of these exceptions.
9436
9437 The ACPICA documentation has been added to the public git source tree,
9438 under
9439 acpica/documents. Included are the ACPICA programmer reference, the iASL
9440 compiler reference, and the changes.txt release logfile.
9441
9442 Example Code and Data Size: These are the sizes for the OS-independent
9443 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9444 debug version of the code includes the debug output trace mechanism and
9445 has a
9446 much larger code and data size.
9447
9448 Previous Release:
9449 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
9450 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total
9451 Current Release:
9452 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
9453 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total
9454
9455 2) iASL Compiler/Disassembler and Tools:
9456
9457 Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
9458 defines _SCP with 3 arguments. Previous versions defined it with only 1
9459 argument. iASL now allows both definitions.
9460
9461 iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
9462 zero-
9463 length subtables when disassembling ACPI tables. Also fixed a couple of
9464 errors where a full 16-bit table type field was not extracted from the
9465 input
9466 properly.
9467
9468 acpisrc: Improve comment counting mechanism for generating source code
9469 statistics. Count first and last lines of multi-line comments as
9470 whitespace,
9471 not comment lines. Handle Linux legal header in addition to standard
9472 acpica
9473 header.
9474
9475 ----------------------------------------
9476
9477 29 July 2008. Summary of changes for version 20080729:
9478
9479 1) ACPI CA Core Subsystem:
9480
9481 Fix a possible deadlock in the GPE dispatch. Remove call to
9482 AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
9483 attempt
9484 to acquire the GPE lock but can deadlock since the GPE lock is already
9485 held
9486 at dispatch time. This code was introduced in version 20060831 as a
9487 response
9488 to Linux BZ 6881 and has since been removed from Linux.
9489
9490 Add a function to dereference returned reference objects. Examines the
9491 return
9492 object from a call to AcpiEvaluateObject. Any Index or RefOf references
9493 are
9494 automatically dereferenced in an attempt to return something useful
9495 (these
9496 reference types cannot be converted into an external ACPI_OBJECT.)
9497 Provides
9498 MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
9499
9500 x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
9501 subtables for the MADT and one new subtable for the SRAT. Includes
9502 disassembler and AcpiSrc support. Data from the Intel 64 Architecture
9503 x2APIC
9504 Specification, June 2008.
9505
9506 Additional error checking for pathname utilities. Add error check after
9507 all
9508 calls to AcpiNsGetPathnameLength. Add status return from
9509 AcpiNsBuildExternalPath and check after all calls. Add parameter
9510 validation
9511 to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
9512
9513 Return status from the global init function AcpiUtGlobalInitialize. This
9514 is
9515 used by both the kernel subsystem and the utilities such as iASL
9516 compiler.
9517 The function could possibly fail when the caches are initialized. Yang
9518 Yi.
9519
9520 Add a function to decode reference object types to strings. Created for
9521 improved error messages.
9522
9523 Improve object conversion error messages. Better error messages during
9524 object
9525 conversion from internal to the external ACPI_OBJECT. Used for external
9526 calls
9527 to AcpiEvaluateObject.
9528
9529 Example Code and Data Size: These are the sizes for the OS-independent
9530 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9531 debug version of the code includes the debug output trace mechanism and
9532 has a
9533 much larger code and data size.
9534
9535 Previous Release:
9536 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total
9537 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total
9538 Current Release:
9539 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
9540 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total
9541
9542 2) iASL Compiler/Disassembler and Tools:
9543
9544 Debugger: fix a possible hang when evaluating non-methods. Fixes a
9545 problem
9546 introduced in version 20080701. If the object being evaluated (via
9547 execute
9548 command) is not a method, the debugger can hang while trying to obtain
9549 non-
9550 existent parameters.
9551
9552 iASL: relax error for using reserved "_T_x" identifiers. These names can
9553 appear in a disassembled ASL file if they were emitted by the original
9554 compiler. Instead of issuing an error or warning and forcing the user to
9555 manually change these names, issue a remark instead.
9556
9557 iASL: error if named object created in while loop. Emit an error if any
9558 named
9559 object is created within a While loop. If allowed, this code will
9560 generate
9561 a
9562 run-time error on the second iteration of the loop when an attempt is
9563 made
9564 to
9565 create the same named object twice. ACPICA bugzilla 730.
9566
9567 iASL: Support absolute pathnames for include files. Add support for
9568 absolute
9569 pathnames within the Include operator. previously, only relative
9570 pathnames
9571 were supported.
9572
9573 iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
9574 Descriptor.
9575 The ACPI spec requires one interrupt minimum. BZ 423
9576
9577 iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
9578 Handles the case for the Interrupt Resource Descriptor where
9579 the ResourceSource argument is omitted but ResourceSourceIndex
9580 is present. Now leave room for the Index. BZ 426
9581
9582 iASL: Prevent error message if CondRefOf target does not exist. Fixes
9583 cases
9584 where an error message is emitted if the target does not exist. BZ 516
9585
9586 iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
9587 (get ACPI tables on Windows). This was apparently broken in version
9588 20070919.
9589
9590 AcpiXtract: Handle EOF while extracting data. Correctly handle the case
9591 where
9592 the EOF happens immediately after the last table in the input file. Print
9593 completion message. Previously, no message was displayed in this case.
9594
9595 ----------------------------------------
9596 01 July 2008. Summary of changes for version 20080701:
9597
9598 0) Git source tree / acpica.org
9599
9600 Fixed a problem where a git-clone from http would not transfer the entire
9601 source tree.
9602
9603 1) ACPI CA Core Subsystem:
9604
9605 Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
9606 enable bit. Now performs a read-change-write of the enable register
9607 instead
9608 of simply writing out the cached enable mask. This will prevent
9609 inadvertent
9610 enabling of GPEs if a rogue GPE is received during initialization (before
9611 GPE
9612 handlers are installed.)
9613
9614 Implemented a copy for dynamically loaded tables. Previously, dynamically
9615 loaded tables were simply mapped - but on some machines this memory is
9616 corrupted after suspend. Now copy the table to a local buffer. For the
9617 OpRegion case, added checksum verify. Use the table length from the table
9618 header, not the region length. For the Buffer case, use the table length
9619 also. Dennis Noordsij, Bob Moore. BZ 10734
9620
9621 Fixed a problem where the same ACPI table could not be dynamically loaded
9622 and
9623 unloaded more than once. Without this change, a table cannot be loaded
9624 again
9625 once it has been loaded/unloaded one time. The current mechanism does not
9626 unregister a table upon an unload. During a load, if the same table is
9627 found,
9628 this no longer returns an exception. BZ 722
9629
9630 Fixed a problem where the wrong descriptor length was calculated for the
9631 EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
9632 EndTag
9633 are calculated as 12 bytes long, but the actual length in the internal
9634 descriptor is 16 because of the round-up to 8 on the 64-bit build.
9635 Reported
9636 by Linn Crosetto. BZ 728
9637
9638 Fixed a possible memory leak in the Unload operator. The DdbHandle
9639 returned
9640 by Load() did not have its reference count decremented during unload,
9641 leading
9642 to a memory leak. Lin Ming. BZ 727
9643
9644 Fixed a possible memory leak when deleting thermal/processor objects. Any
9645 associated notify handlers (and objects) were not being deleted. Fiodor
9646 Suietov. BZ 506
9647
9648 Fixed the ordering of the ASCII names in the global mutex table to match
9649 the
9650 actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
9651 only.
9652 Vegard Nossum. BZ 726
9653
9654 Enhanced the AcpiGetObjectInfo interface to return the number of required
9655 arguments if the object is a control method. Added this call to the
9656 debugger
9657 so the proper number of default arguments are passed to a method. This
9658 prevents a warning when executing methods from AcpiExec.
9659
9660 Added a check for an invalid handle in AcpiGetObjectInfo. Return
9661 AE_BAD_PARAMETER if input handle is invalid. BZ 474
9662
9663 Fixed an extraneous warning from exconfig.c on the 64-bit build.
9664
9665 Example Code and Data Size: These are the sizes for the OS-independent
9666 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9667 debug version of the code includes the debug output trace mechanism and
9668 has a
9669 much larger code and data size.
9670
9671 Previous Release:
9672 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total
9673 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total
9674 Current Release:
9675 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total
9676 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total
9677
9678 2) iASL Compiler/Disassembler and Tools:
9679
9680 iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
9681 resource descriptor names.
9682
9683 iASL: Detect invalid ASCII characters in input (windows version). Removed
9684 the
9685 "-CF" flag from the flex compile, enables correct detection of non-ASCII
9686 characters in the input. BZ 441
9687
9688 iASL: Eliminate warning when result of LoadTable is not used. Eliminate
9689 the
9690 "result of operation not used" warning when the DDB handle returned from
9691 LoadTable is not used. The warning is not needed. BZ 590
9692
9693 AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
9694 method
9695 to
9696 pass address of table to the AML. Added option to disable OpRegion
9697 simulation
9698 to allow creation of an OpRegion with a real address that was passed to
9699 _CFG.
9700 All of this allows testing of the Load and Unload operators from
9701 AcpiExec.
9702
9703 Debugger: update tables command for unloaded tables. Handle unloaded
9704 tables
9705 and use the standard table header output routine.
9706
9707 ----------------------------------------
9708 09 June 2008. Summary of changes for version 20080609:
9709
9710 1) ACPI CA Core Subsystem:
9711
9712 Implemented a workaround for reversed _PRT entries. A significant number
9713 of
9714 BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
9715 change dynamically detects and repairs this problem. Provides
9716 compatibility
9717 with MS ACPI. BZ 6859
9718
9719 Simplified the internal ACPI hardware interfaces to eliminate the locking
9720 flag parameter from Register Read/Write. Added a new external interface,
9721 AcpiGetRegisterUnlocked.
9722
9723 Fixed a problem where the invocation of a GPE control method could hang.
9724 This
9725 was a regression introduced in 20080514. The new method argument count
9726 validation mechanism can enter an infinite loop when a GPE method is
9727 dispatched. Problem fixed by removing the obsolete code that passed GPE
9728 block
9729 information to the notify handler via the control method parameter
9730 pointer.
9731
9732 Fixed a problem where the _SST execution status was incorrectly returned
9733 to
9734 the caller of AcpiEnterSleepStatePrep. This was a regression introduced
9735 in
9736 20080514. _SST is optional and a NOT_FOUND exception should never be
9737 returned. BZ 716
9738
9739 Fixed a problem where a deleted object could be accessed from within the
9740 AML
9741 parser. This was a regression introduced in version 20080123 as a fix for
9742 the
9743 Unload operator. Lin Ming. BZ 10669
9744
9745 Cleaned up the debug operand dump mechanism. Eliminated unnecessary
9746 operands
9747 and eliminated the use of a negative index in a loop. Operands are now
9748 displayed in the correct order, not backwards. This also fixes a
9749 regression
9750 introduced in 20080514 on 64-bit systems where the elimination of
9751 ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
9752 715
9753
9754 Fixed a possible memory leak in EvPciConfigRegionSetup where the error
9755 exit
9756 path did not delete a locally allocated structure.
9757
9758 Updated definitions for the DMAR and SRAT tables to synchronize with the
9759 current specifications. Includes disassembler support.
9760
9761 Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
9762 loop termination value was used. Loop terminated on iteration early,
9763 missing
9764 one mutex. Linn Crosetto
9765
9766 Example Code and Data Size: These are the sizes for the OS-independent
9767 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9768 debug version of the code includes the debug output trace mechanism and
9769 has a
9770 much larger code and data size.
9771
9772 Previous Release:
9773 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total
9774 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total
9775 Current Release:
9776 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total
9777 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total
9778
9779 2) iASL Compiler/Disassembler and Tools:
9780
9781 Disassembler: Implemented support for EisaId() within _CID objects. Now
9782 disassemble integer _CID objects back to EisaId invocations, including
9783 multiple integers within _CID packages. Includes single-step support for
9784 debugger also.
9785
9786 Disassembler: Added support for DMAR and SRAT table definition changes.
9787
9788 ----------------------------------------
9789 14 May 2008. Summary of changes for version 20080514:
9790
9791 1) ACPI CA Core Subsystem:
9792
9793 Fixed a problem where GPEs were enabled too early during the ACPICA
9794 initialization. This could lead to "handler not installed" errors on some
9795 machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
9796 This
9797 ensures that all operation regions and devices throughout the namespace
9798 have
9799 been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
9800
9801 Implemented a change to the enter sleep code. Moved execution of the _GTS
9802 method to just before setting sleep enable bit. The execution was moved
9803 from
9804 AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
9805 immediately before the SLP_EN bit is set, as per the ACPI specification.
9806 Luming Yu, BZ 1653.
9807
9808 Implemented a fix to disable unknown GPEs (2nd version). Now always
9809 disable
9810 the GPE, even if ACPICA thinks that that it is already disabled. It is
9811 possible that the AML or some other code has enabled the GPE unbeknownst
9812 to
9813 the ACPICA code.
9814
9815 Fixed a problem with the Field operator where zero-length fields would
9816 return
9817 an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
9818 ASL
9819 field declarations in Field(), BankField(), and IndexField(). BZ 10606.
9820
9821 Implemented a fix for the Load operator, now load the table at the
9822 namespace
9823 root. This reverts a change introduced in version 20071019. The table is
9824 now
9825 loaded at the namespace root even though this goes against the ACPI
9826 specification. This provides compatibility with other ACPI
9827 implementations.
9828 The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
9829 Ming.
9830
9831 Fixed a problem where ACPICA would not Load() tables with unusual
9832 signatures.
9833 Now ignore ACPI table signature for Load() operator. Only "SSDT" is
9834 acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
9835 Therefore, signature validation is worthless. Apparently MS ACPI accepts
9836 such
9837 signatures, ACPICA must be compatible. BZ 10454.
9838
9839 Fixed a possible negative array index in AcpiUtValidateException. Added
9840 NULL
9841 fields to the exception string arrays to eliminate a -1 subtraction on
9842 the
9843 SubStatus field.
9844
9845 Updated the debug tracking macros to reduce overall code and data size.
9846 Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
9847 instead of pointers to static strings. Jan Beulich and Bob Moore.
9848
9849 Implemented argument count checking in control method invocation via
9850 AcpiEvaluateObject. Now emit an error if too few arguments, warning if
9851 too
9852 many. This applies only to extern programmatic control method execution,
9853 not
9854 method-to-method calls within the AML. Lin Ming.
9855
9856 Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
9857 no
9858 longer needed, especially with the removal of 16-bit support. It was
9859 replaced
9860 mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
9861 bit
9862 on
9863 32/64-bit platforms is required.
9864
9865 Added the C const qualifier for appropriate string constants -- mostly
9866 MODULE_NAME and printf format strings. Jan Beulich.
9867
9868 Example Code and Data Size: These are the sizes for the OS-independent
9869 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9870 debug version of the code includes the debug output trace mechanism and
9871 has a
9872 much larger code and data size.
9873
9874 Previous Release:
9875 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total
9876 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total
9877 Current Release:
9878 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total
9879 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total
9880
9881 2) iASL Compiler/Disassembler and Tools:
9882
9883 Implemented ACPI table revision ID validation in the disassembler. Zero
9884 is
9885 always invalid. For DSDTs, the ID controls the interpreter integer width.
9886 1
9887 means 32-bit and this is unusual. 2 or greater is 64-bit.
9888
9889 ----------------------------------------
9890 21 March 2008. Summary of changes for version 20080321:
9891
9892 1) ACPI CA Core Subsystem:
9893
9894 Implemented an additional change to the GPE support in order to suppress
9895 spurious or stray GPEs. The AcpiEvDisableGpe function will now
9896 permanently
9897 disable incoming GPEs that are neither enabled nor disabled -- meaning
9898 that
9899 the GPE is unknown to the system. This should prevent future interrupt
9900 floods
9901 from that GPE. BZ 6217 (Zhang Rui)
9902
9903 Fixed a problem where NULL package elements were not returned to the
9904 AcpiEvaluateObject interface correctly. The element was simply ignored
9905 instead of returning a NULL ACPI_OBJECT package element, potentially
9906 causing
9907 a buffer overflow and/or confusing the caller who expected a fixed number
9908 of
9909 elements. BZ 10132 (Lin Ming, Bob Moore)
9910
9911 Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
9912 Dword,
9913 Qword), Field, BankField, and IndexField operators when invoked from
9914 inside
9915 an executing control method. In this case, these operators created
9916 namespace
9917 nodes that were incorrectly left marked as permanent nodes instead of
9918 temporary nodes. This could cause a problem if there is race condition
9919 between an exiting control method and a running namespace walk. (Reported
9920 by
9921 Linn Crosetto)
9922
9923 Fixed a problem where the CreateField and CreateXXXField operators would
9924 incorrectly allow duplicate names (the name of the field) with no
9925 exception
9926 generated.
9927
9928 Implemented several changes for Notify handling. Added support for new
9929 Notify
9930 values (ACPI 2.0+) and improved the Notify debug output. Notify on
9931 PowerResource objects is no longer allowed, as per the ACPI
9932 specification.
9933 (Bob Moore, Zhang Rui)
9934
9935 All Reference Objects returned via the AcpiEvaluateObject interface are
9936 now
9937 marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
9938 for
9939 NULL objects - either NULL package elements or unresolved named
9940 references.
9941
9942 Fixed a problem where an extraneous debug message was produced for
9943 package
9944 objects (when debugging enabled). The message "Package List length larger
9945 than NumElements count" is now produced in the correct case, and is now
9946 an
9947 error message rather than a debug message. Added a debug message for the
9948 opposite case, where NumElements is larger than the Package List (the
9949 package
9950 will be padded out with NULL elements as per the ACPI spec.)
9951
9952 Implemented several improvements for the output of the ASL "Debug" object
9953 to
9954 clarify and keep all data for a given object on one output line.
9955
9956 Fixed two size calculation issues with the variable-length Start
9957 Dependent
9958 resource descriptor.
9959
9960 Example Code and Data Size: These are the sizes for the OS-independent
9961 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9962 debug version of the code includes the debug output trace mechanism and
9963 has
9964 a much larger code and data size.
9965
9966 Previous Release:
9967 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total
9968 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total
9969 Current Release:
9970 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total
9971 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total
9972
9973 2) iASL Compiler/Disassembler and Tools:
9974
9975 Fixed a problem with the use of the Switch operator where execution of
9976 the
9977 containing method by multiple concurrent threads could cause an
9978 AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
9979 actual Switch opcode, it must be simulated with local named temporary
9980 variables and if/else pairs. The solution chosen was to mark any method
9981 that
9982 uses Switch as Serialized, thus preventing multiple thread entries. BZ
9983 469.
9984
9985 ----------------------------------------
9986 13 February 2008. Summary of changes for version 20080213:
9987
9988 1) ACPI CA Core Subsystem:
9989
9990 Implemented another MS compatibility design change for GPE/Notify
9991 handling.
9992 GPEs are now cleared/enabled asynchronously to allow all pending notifies
9993 to
9994 complete first. It is expected that the OSL will queue the enable request
9995 behind all pending notify requests (may require changes to the local host
9996 OSL
9997 in AcpiOsExecute). Alexey Starikovskiy.
9998
9999 Fixed a problem where buffer and package objects passed as arguments to a
10000 control method via the external AcpiEvaluateObject interface could cause
10001 an
10002 AE_AML_INTERNAL exception depending on the order and type of operators
10003 executed by the target control method.
10004
10005 Fixed a problem where resource descriptor size optimization could cause a
10006 problem when a _CRS resource template is passed to a _SRS method. The
10007 _SRS
10008 resource template must use the same descriptors (with the same size) as
10009 returned from _CRS. This change affects the following resource
10010 descriptors:
10011 IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
10012 9487)
10013
10014 Fixed a problem where a CopyObject to RegionField, BankField, and
10015 IndexField
10016 objects did not perform an implicit conversion as it should. These types
10017 must
10018 retain their initial type permanently as per the ACPI specification.
10019 However,
10020 a CopyObject to all other object types should not perform an implicit
10021 conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
10022
10023 Fixed a problem with the AcpiGetDevices interface where the mechanism to
10024 match device CIDs did not examine the entire list of available CIDs, but
10025 instead aborted on the first non-matching CID. Andrew Patterson.
10026
10027 Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
10028 was
10029 inadvertently changed to return a 16-bit value instead of a 32-bit value,
10030 truncating the upper dword of a 64-bit value. This macro is only used to
10031 display debug output, so no incorrect calculations were made. Also,
10032 reimplemented the macro so that a 64-bit shift is not performed by
10033 inefficient compilers.
10034
10035 Added missing va_end statements that should correspond with each va_start
10036 statement.
10037
10038 Example Code and Data Size: These are the sizes for the OS-independent
10039 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10040 debug version of the code includes the debug output trace mechanism and
10041 has
10042 a much larger code and data size.
10043
10044 Previous Release:
10045 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total
10046 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total
10047 Current Release:
10048 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total
10049 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total
10050
10051 2) iASL Compiler/Disassembler and Tools:
10052
10053 Implemented full disassembler support for the following new ACPI tables:
10054 BERT, EINJ, and ERST. Implemented partial disassembler support for the
10055 complicated HEST table. These tables support the Windows Hardware Error
10056 Architecture (WHEA).
10057
10058 ----------------------------------------
10059 23 January 2008. Summary of changes for version 20080123:
10060
10061 1) ACPI CA Core Subsystem:
10062
10063 Added the 2008 copyright to all module headers and signons. This affects
10064 virtually every file in the ACPICA core subsystem, the iASL compiler, and
10065 the tools/utilities.
10066
10067 Fixed a problem with the SizeOf operator when used with Package and
10068 Buffer
10069 objects. These objects have deferred execution for some arguments, and
10070 the
10071 execution is now completed before the SizeOf is executed. This problem
10072 caused
10073 unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
10074 BZ
10075 9558
10076
10077 Implemented an enhancement to the interpreter "slack mode". In the
10078 absence
10079 of
10080 an explicit return or an implicitly returned object from the last
10081 executed
10082 opcode, a control method will now implicitly return an integer of value 0
10083 for
10084 Microsoft compatibility. (Lin Ming) BZ 392
10085
10086 Fixed a problem with the Load operator where an exception was not
10087 returned
10088 in
10089 the case where the table is already loaded. (Lin Ming) BZ 463
10090
10091 Implemented support for the use of DDBHandles as an Indexed Reference, as
10092 per
10093 the ACPI spec. (Lin Ming) BZ 486
10094
10095 Implemented support for UserTerm (Method invocation) for the Unload
10096 operator
10097 as per the ACPI spec. (Lin Ming) BZ 580
10098
10099 Fixed a problem with the LoadTable operator where the OemId and
10100 OemTableId
10101 input strings could cause unexpected failures if they were shorter than
10102 the
10103 maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
10104
10105 Implemented support for UserTerm (Method invocation) for the Unload
10106 operator
10107 as per the ACPI spec. (Lin Ming) BZ 580
10108
10109 Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
10110 HEST,
10111 IBFT, UEFI, WDAT. Disassembler support is forthcoming.
10112
10113 Example Code and Data Size: These are the sizes for the OS-independent
10114 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10115 debug version of the code includes the debug output trace mechanism and
10116 has
10117 a much larger code and data size.
10118
10119 Previous Release:
10120 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total
10121 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total
10122 Current Release:
10123 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total
10124 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total
10125
10126 2) iASL Compiler/Disassembler and Tools:
10127
10128 Implemented support in the disassembler for checksum validation on
10129 incoming
10130 binary DSDTs and SSDTs. If incorrect, a message is displayed within the
10131 table
10132 header dump at the start of the disassembly.
10133
10134 Implemented additional debugging information in the namespace listing
10135 file
10136 created during compilation. In addition to the namespace hierarchy, the
10137 full
10138 pathname to each namespace object is displayed.
10139
10140 Fixed a problem with the disassembler where invalid ACPI tables could
10141 cause
10142 faults or infinite loops.
10143
10144 Fixed an unexpected parse error when using the optional "parameter types"
10145 list in a control method declaration. (Lin Ming) BZ 397
10146
10147 Fixed a problem where two External declarations with the same name did
10148 not
10149 cause an error (Lin Ming) BZ 509
10150
10151 Implemented support for full TermArgs (adding Argx, Localx and method
10152 invocation) for the ParameterData parameter to the LoadTable operator.
10153 (Lin
10154 Ming) BZ 583,587
10155
10156 ----------------------------------------
10157 19 December 2007. Summary of changes for version 20071219:
10158
10159 1) ACPI CA Core Subsystem:
10160
10161 Implemented full support for deferred execution for the TermArg string
10162 arguments for DataTableRegion. This enables forward references and full
10163 operand resolution for the three string arguments. Similar to
10164 OperationRegion
10165 deferred argument execution.) Lin Ming. BZ 430
10166
10167 Implemented full argument resolution support for the BankValue argument
10168 to
10169 BankField. Previously, only constants were supported, now any TermArg may
10170 be
10171 used. Lin Ming BZ 387, 393
10172
10173 Fixed a problem with AcpiGetDevices where the search of a branch of the
10174 device tree could be terminated prematurely. In accordance with the ACPI
10175 specification, the search down the current branch is terminated if a
10176 device
10177 is both not present and not functional (instead of just not present.)
10178 Yakui
10179 Zhao.
10180
10181 Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
10182 if
10183 the underlying AML code changed the GPE enable registers. Now, any
10184 unknown
10185 incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
10186 disabled
10187 instead of simply ignored. Rui Zhang.
10188
10189 Fixed a problem with Index Fields where the Index register was
10190 incorrectly
10191 limited to a maximum of 32 bits. Now any size may be used.
10192
10193 Fixed a couple memory leaks associated with "implicit return" objects
10194 when
10195 the AML Interpreter slack mode is enabled. Lin Ming BZ 349
10196
10197 Example Code and Data Size: These are the sizes for the OS-independent
10198 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10199 debug version of the code includes the debug output trace mechanism and
10200 has
10201 a much larger code and data size.
10202
10203 Previous Release:
10204 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total
10205 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total
10206 Current Release:
10207 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total
10208 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total
10209
10210 ----------------------------------------
10211 14 November 2007. Summary of changes for version 20071114:
10212
10213 1) ACPI CA Core Subsystem:
10214
10215 Implemented event counters for each of the Fixed Events, the ACPI SCI
10216 (interrupt) itself, and control methods executed. Named
10217 AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
10218 These
10219 should be useful for debugging and statistics.
10220
10221 Implemented a new external interface, AcpiGetStatistics, to retrieve the
10222 contents of the various event counters. Returns the current values for
10223 AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
10224 AcpiMethodCount. The interface can be expanded in the future if new
10225 counters
10226 are added. Device drivers should use this interface rather than access
10227 the
10228 counters directly.
10229
10230 Fixed a problem with the FromBCD and ToBCD operators. With some
10231 compilers,
10232 the ShortDivide function worked incorrectly, causing problems with the
10233 BCD
10234 functions with large input values. A truncation from 64-bit to 32-bit
10235 inadvertently occurred. Internal BZ 435. Lin Ming
10236
10237 Fixed a problem with Index references passed as method arguments.
10238 References
10239 passed as arguments to control methods were dereferenced immediately
10240 (before
10241 control was passed to the called method). The references are now
10242 correctly
10243 passed directly to the called method. BZ 5389. Lin Ming
10244
10245 Fixed a problem with CopyObject used in conjunction with the Index
10246 operator.
10247 The reference was incorrectly dereferenced before the copy. The reference
10248 is
10249 now correctly copied. BZ 5391. Lin Ming
10250
10251 Fixed a problem with Control Method references within Package objects.
10252 These
10253 references are now correctly generated. This completes the package
10254 construction overhaul that began in version 20071019.
10255
10256 Example Code and Data Size: These are the sizes for the OS-independent
10257 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10258 debug version of the code includes the debug output trace mechanism and
10259 has
10260 a much larger code and data size.
10261
10262 Previous Release:
10263 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total
10264 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total
10265 Current Release:
10266 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total
10267 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total
10268
10269
10270 2) iASL Compiler/Disassembler and Tools:
10271
10272 The AcpiExec utility now installs handlers for all of the predefined
10273 Operation Region types. New types supported are: PCI_Config, CMOS, and
10274 PCIBARTarget.
10275
10276 Fixed a problem with the 64-bit version of AcpiExec where the extended
10277 (64-
10278 bit) address fields for the DSDT and FACS within the FADT were not being
10279 used, causing truncation of the upper 32-bits of these addresses. Lin
10280 Ming
10281 and Bob Moore
10282
10283 ----------------------------------------
10284 19 October 2007. Summary of changes for version 20071019:
10285
10286 1) ACPI CA Core Subsystem:
10287
10288 Fixed a problem with the Alias operator when the target of the alias is a
10289 named ASL operator that opens a new scope -- Scope, Device,
10290 PowerResource,
10291 Processor, and ThermalZone. In these cases, any children of the original
10292 operator could not be accessed via the alias, potentially causing
10293 unexpected
10294 AE_NOT_FOUND exceptions. (BZ 9067)
10295
10296 Fixed a problem with the Package operator where all named references were
10297 created as object references and left otherwise unresolved. According to
10298 the
10299 ACPI specification, a Package can only contain Data Objects or references
10300 to
10301 control methods. The implication is that named references to Data Objects
10302 (Integer, Buffer, String, Package, BufferField, Field) should be resolved
10303 immediately upon package creation. This is the approach taken with this
10304 change. References to all other named objects (Methods, Devices, Scopes,
10305 etc.) are all now properly created as reference objects. (BZ 5328)
10306
10307 Reverted a change to Notify handling that was introduced in version
10308 20070508. This version changed the Notify handling from asynchronous to
10309 fully synchronous (Device driver Notify handling with respect to the
10310 Notify
10311 ASL operator). It was found that this change caused more problems than it
10312 solved and was removed by most users.
10313
10314 Fixed a problem with the Increment and Decrement operators where the type
10315 of
10316 the target object could be unexpectedly and incorrectly changed. (BZ 353)
10317 Lin Ming.
10318
10319 Fixed a problem with the Load and LoadTable operators where the table
10320 location within the namespace was ignored. Instead, the table was always
10321 loaded into the root or current scope. Lin Ming.
10322
10323 Fixed a problem with the Load operator when loading a table from a buffer
10324 object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
10325
10326 Fixed a problem with the Debug object where a store of a DdbHandle
10327 reference
10328 object to the Debug object could cause a fault.
10329
10330 Added a table checksum verification for the Load operator, in the case
10331 where
10332 the load is from a buffer. (BZ 578).
10333
10334 Implemented additional parameter validation for the LoadTable operator.
10335 The
10336 length of the input strings SignatureString, OemIdString, and OemTableId
10337 are
10338 now checked for maximum lengths. (BZ 582) Lin Ming.
10339
10340 Example Code and Data Size: These are the sizes for the OS-independent
10341 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10342 debug version of the code includes the debug output trace mechanism and
10343 has
10344 a much larger code and data size.
10345
10346 Previous Release:
10347 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total
10348 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total
10349 Current Release:
10350 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total
10351 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total
10352
10353
10354 2) iASL Compiler/Disassembler:
10355
10356 Fixed a problem where if a single file was specified and the file did not
10357 exist, no error message was emitted. (Introduced with wildcard support in
10358 version 20070917.)
10359
10360 ----------------------------------------
10361 19 September 2007. Summary of changes for version 20070919:
10362
10363 1) ACPI CA Core Subsystem:
10364
10365 Designed and implemented new external interfaces to install and remove
10366 handlers for ACPI table-related events. Current events that are defined
10367 are
10368 LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
10369 they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
10370 AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
10371
10372 Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
10373 (acpi_serialized option on Linux) could cause some systems to hang during
10374 initialization. (Bob Moore) BZ 8171
10375
10376 Fixed a problem where objects of certain types (Device, ThermalZone,
10377 Processor, PowerResource) can be not found if they are declared and
10378 referenced from within the same control method (Lin Ming) BZ 341
10379
10380 Example Code and Data Size: These are the sizes for the OS-independent
10381 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10382 debug version of the code includes the debug output trace mechanism and
10383 has
10384 a much larger code and data size.
10385
10386 Previous Release:
10387 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total
10388 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total
10389 Current Release:
10390 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total
10391 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total
10392
10393
10394 2) iASL Compiler/Disassembler:
10395
10396 Implemented support to allow multiple files to be compiled/disassembled
10397 in
10398 a
10399 single invocation. This includes command line wildcard support for both
10400 the
10401 Windows and Unix versions of the compiler. This feature simplifies the
10402 disassembly and compilation of multiple ACPI tables in a single
10403 directory.
10404
10405 ----------------------------------------
10406 08 May 2007. Summary of changes for version 20070508:
10407
10408 1) ACPI CA Core Subsystem:
10409
10410 Implemented a Microsoft compatibility design change for the handling of
10411 the
10412 Notify AML operator. Previously, notify handlers were dispatched and
10413 executed completely asynchronously in a deferred thread. The new design
10414 still executes the notify handlers in a different thread, but the
10415 original
10416 thread that executed the Notify() now waits at a synchronization point
10417 for
10418 the notify handler to complete. Some machines depend on a synchronous
10419 Notify
10420 operator in order to operate correctly.
10421
10422 Implemented support to allow Package objects to be passed as method
10423 arguments to the external AcpiEvaluateObject interface. Previously, this
10424 would return the AE_NOT_IMPLEMENTED exception. This feature had not been
10425 implemented since there were no reserved control methods that required it
10426 until recently.
10427
10428 Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
10429 that
10430 contained invalid non-zero values in reserved fields could cause later
10431 failures because these fields have meaning in later revisions of the
10432 FADT.
10433 For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
10434 fields
10435 are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
10436
10437 Fixed a problem where the Global Lock handle was not properly updated if
10438 a
10439 thread that acquired the Global Lock via executing AML code then
10440 attempted
10441 to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
10442 Joe
10443 Liu.
10444
10445 Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
10446 could be corrupted if the interrupt being removed was at the head of the
10447 list. Reported by Linn Crosetto.
10448
10449 Example Code and Data Size: These are the sizes for the OS-independent
10450 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10451 debug version of the code includes the debug output trace mechanism and
10452 has
10453 a much larger code and data size.
10454
10455 Previous Release:
10456 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10457 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total
10458 Current Release:
10459 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total
10460 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total
10461
10462 ----------------------------------------
10463 20 March 2007. Summary of changes for version 20070320:
10464
10465 1) ACPI CA Core Subsystem:
10466
10467 Implemented a change to the order of interpretation and evaluation of AML
10468 operand objects within the AML interpreter. The interpreter now evaluates
10469 operands in the order that they appear in the AML stream (and the
10470 corresponding ASL code), instead of in the reverse order (after the
10471 entire
10472 operand list has been parsed). The previous behavior caused several
10473 subtle
10474 incompatibilities with the Microsoft AML interpreter as well as being
10475 somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
10476
10477 Implemented a change to the ACPI Global Lock support. All interfaces to
10478 the
10479 global lock now allow the same thread to acquire the lock multiple times.
10480 This affects the AcpiAcquireGlobalLock external interface to the global
10481 lock
10482 as well as the internal use of the global lock to support AML fields -- a
10483 control method that is holding the global lock can now simultaneously
10484 access
10485 AML fields that require global lock protection. Previously, in both
10486 cases,
10487 this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
10488 to
10489 AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
10490 Controller. There is no change to the behavior of the AML Acquire
10491 operator,
10492 as this can already be used to acquire a mutex multiple times by the same
10493 thread. BZ 8066. With assistance from Alexey Starikovskiy.
10494
10495 Fixed a problem where invalid objects could be referenced in the AML
10496 Interpreter after error conditions. During operand evaluation, ensure
10497 that
10498 the internal "Return Object" field is cleared on error and only valid
10499 pointers are stored there. Caused occasional access to deleted objects
10500 that
10501 resulted in "large reference count" warning messages. Valery Podrezov.
10502
10503 Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
10504 on
10505 deeply nested control method invocations. BZ 7873, local BZ 487. Valery
10506 Podrezov.
10507
10508 Fixed an internal problem with the handling of result objects on the
10509 interpreter result stack. BZ 7872. Valery Podrezov.
10510
10511 Removed obsolete code that handled the case where AML_NAME_OP is the
10512 target
10513 of a reference (Reference.Opcode). This code was no longer necessary. BZ
10514 7874. Valery Podrezov.
10515
10516 Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
10517 was
10518 a
10519 remnant from the previously discontinued 16-bit support.
10520
10521 Example Code and Data Size: These are the sizes for the OS-independent
10522 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10523 debug version of the code includes the debug output trace mechanism and
10524 has
10525 a much larger code and data size.
10526
10527 Previous Release:
10528 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10529 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
10530 Current Release:
10531 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10532 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total
10533
10534 ----------------------------------------
10535 26 January 2007. Summary of changes for version 20070126:
10536
10537 1) ACPI CA Core Subsystem:
10538
10539 Added the 2007 copyright to all module headers and signons. This affects
10540 virtually every file in the ACPICA core subsystem, the iASL compiler, and
10541 the utilities.
10542
10543 Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
10544 during a table load. A bad pointer was passed in the case where the DSDT
10545 is
10546 overridden, causing a fault in this case.
10547
10548 Example Code and Data Size: These are the sizes for the OS-independent
10549 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10550 debug version of the code includes the debug output trace mechanism and
10551 has
10552 a much larger code and data size.
10553
10554 Previous Release:
10555 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10556 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
10557 Current Release:
10558 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10559 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
10560
10561 ----------------------------------------
10562 15 December 2006. Summary of changes for version 20061215:
10563
10564 1) ACPI CA Core Subsystem:
10565
10566 Support for 16-bit ACPICA has been completely removed since it is no
10567 longer
10568 necessary and it clutters the code. All 16-bit macros, types, and
10569 conditional compiles have been removed, cleaning up and simplifying the
10570 code
10571 across the entire subsystem. DOS support is no longer needed since the
10572 bootable Linux firmware kit is now available.
10573
10574 The handler for the Global Lock is now removed during AcpiTerminate to
10575 enable a clean subsystem restart, via the implementation of the
10576 AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
10577 HP)
10578
10579 Implemented enhancements to the multithreading support within the
10580 debugger
10581 to enable improved multithreading debugging and evaluation of the
10582 subsystem.
10583 (Valery Podrezov)
10584
10585 Debugger: Enhanced the Statistics/Memory command to emit the total
10586 (maximum)
10587 memory used during the execution, as well as the maximum memory consumed
10588 by
10589 each of the various object types. (Valery Podrezov)
10590
10591 Example Code and Data Size: These are the sizes for the OS-independent
10592 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10593 debug version of the code includes the debug output trace mechanism and
10594 has
10595 a much larger code and data size.
10596
10597 Previous Release:
10598 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total
10599 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total
10600 Current Release:
10601 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10602 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
10603
10604
10605 2) iASL Compiler/Disassembler and Tools:
10606
10607 AcpiExec: Implemented a new option (-m) to display full memory use
10608 statistics upon subsystem/program termination. (Valery Podrezov)
10609
10610 ----------------------------------------
10611 09 November 2006. Summary of changes for version 20061109:
10612
10613 1) ACPI CA Core Subsystem:
10614
10615 Optimized the Load ASL operator in the case where the source operand is
10616 an
10617 operation region. Simply map the operation region memory, instead of
10618 performing a bytewise read. (Region must be of type SystemMemory, see
10619 below.)
10620
10621 Fixed the Load ASL operator for the case where the source operand is a
10622 region field. A buffer object is also allowed as the source operand. BZ
10623 480
10624
10625 Fixed a problem where the Load ASL operator allowed the source operand to
10626 be
10627 an operation region of any type. It is now restricted to regions of type
10628 SystemMemory, as per the ACPI specification. BZ 481
10629
10630 Additional cleanup and optimizations for the new Table Manager code.
10631
10632 AcpiEnable will now fail if all of the required ACPI tables are not
10633 loaded
10634 (FADT, FACS, DSDT). BZ 477
10635
10636 Added #pragma pack(8/4) to acobject.h to ensure that the structures in
10637 this
10638 header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
10639 manually optimized to be aligned and will not work if it is byte-packed.
10640
10641 Example Code and Data Size: These are the sizes for the OS-independent
10642 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10643 debug version of the code includes the debug output trace mechanism and
10644 has
10645 a much larger code and data size.
10646
10647 Previous Release:
10648 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total
10649 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total
10650 Current Release:
10651 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total
10652 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total
10653
10654
10655 2) iASL Compiler/Disassembler and Tools:
10656
10657 Fixed a problem where the presence of the _OSI predefined control method
10658 within complex expressions could cause an internal compiler error.
10659
10660 AcpiExec: Implemented full region support for multiple address spaces.
10661 SpaceId is now part of the REGION object. BZ 429
10662
10663 ----------------------------------------
10664 11 October 2006. Summary of changes for version 20061011:
10665
10666 1) ACPI CA Core Subsystem:
10667
10668 Completed an AML interpreter performance enhancement for control method
10669 execution. Previously a 2-pass parse/execution, control methods are now
10670 completely parsed and executed in a single pass. This improves overall
10671 interpreter performance by ~25%, reduces code size, and reduces CPU stack
10672 use. (Valery Podrezov + interpreter changes in version 20051202 that
10673 eliminated namespace loading during the pass one parse.)
10674
10675 Implemented _CID support for PCI Root Bridge detection. If the _HID does
10676 not
10677 match the predefined PCI Root Bridge IDs, the _CID list (if present) is
10678 now
10679 obtained and also checked for an ID match.
10680
10681 Implemented additional support for the PCI _ADR execution: upsearch until
10682 a
10683 device scope is found before executing _ADR. This allows PCI_Config
10684 operation regions to be declared locally within control methods
10685 underneath
10686 PCI device objects.
10687
10688 Fixed a problem with a possible race condition between threads executing
10689 AcpiWalkNamespace and the AML interpreter. This condition was removed by
10690 modifying AcpiWalkNamespace to (by default) ignore all temporary
10691 namespace
10692 entries created during any concurrent control method execution. An
10693 additional namespace race condition is known to exist between
10694 AcpiWalkNamespace and the Load/Unload ASL operators and is still under
10695 investigation.
10696
10697 Restructured the AML ParseLoop function, breaking it into several
10698 subfunctions in order to reduce CPU stack use and improve
10699 maintainability.
10700 (Mikhail Kouzmich)
10701
10702 AcpiGetHandle: Fix for parameter validation to detect invalid
10703 combinations
10704 of prefix handle and pathname. BZ 478
10705
10706 Example Code and Data Size: These are the sizes for the OS-independent
10707 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10708 debug version of the code includes the debug output trace mechanism and
10709 has
10710 a much larger code and data size.
10711
10712 Previous Release:
10713 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
10714 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total
10715 Current Release:
10716 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total
10717 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total
10718
10719 2) iASL Compiler/Disassembler and Tools:
10720
10721 Ported the -g option (get local ACPI tables) to the new ACPICA Table
10722 Manager
10723 to restore original behavior.
10724
10725 ----------------------------------------
10726 27 September 2006. Summary of changes for version 20060927:
10727
10728 1) ACPI CA Core Subsystem:
10729
10730 Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
10731 These functions now use a spinlock for mutual exclusion and the interrupt
10732 level indication flag is not needed.
10733
10734 Fixed a problem with the Global Lock where the lock could appear to be
10735 obtained before it is actually obtained. The global lock semaphore was
10736 inadvertently created with one unit instead of zero units. (BZ 464)
10737 Fiodor
10738 Suietov.
10739
10740 Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
10741 during
10742 a read from a buffer or region field. (BZ 458) Fiodor Suietov.
10743
10744 Example Code and Data Size: These are the sizes for the OS-independent
10745 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10746 debug version of the code includes the debug output trace mechanism and
10747 has
10748 a much larger code and data size.
10749
10750 Previous Release:
10751 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
10752 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total
10753 Current Release:
10754 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
10755 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total
10756
10757
10758 2) iASL Compiler/Disassembler and Tools:
10759
10760 Fixed a compilation problem with the pre-defined Resource Descriptor
10761 field
10762 names where an "object does not exist" error could be incorrectly
10763 generated
10764 if the parent ResourceTemplate pathname places the template within a
10765 different namespace scope than the current scope. (BZ 7212)
10766
10767 Fixed a problem where the compiler could hang after syntax errors
10768 detected
10769 in an ElseIf construct. (BZ 453)
10770
10771 Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
10772 operator. An incorrect output filename was produced when this parameter
10773 was
10774 a null string (""). Now, the original input filename is used as the AML
10775 output filename, with an ".aml" extension.
10776
10777 Implemented a generic batch command mode for the AcpiExec utility
10778 (execute
10779 any AML debugger command) (Valery Podrezov).
10780
10781 ----------------------------------------
10782 12 September 2006. Summary of changes for version 20060912:
10783
10784 1) ACPI CA Core Subsystem:
10785
10786 Enhanced the implementation of the "serialized mode" of the interpreter
10787 (enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
10788 specified, instead of creating a serialization semaphore per control
10789 method,
10790 the interpreter lock is simply no longer released before a blocking
10791 operation during control method execution. This effectively makes the AML
10792 Interpreter single-threaded. The overhead of a semaphore per-method is
10793 eliminated.
10794
10795 Fixed a regression where an error was no longer emitted if a control
10796 method
10797 attempts to create 2 objects of the same name. This once again returns
10798 AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
10799 that
10800 will dynamically serialize the control method to possible prevent future
10801 errors. (BZ 440)
10802
10803 Integrated a fix for a problem with PCI Express HID detection in the PCI
10804 Config Space setup procedure. (BZ 7145)
10805
10806 Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
10807 AcpiHwInitialize function - the FADT registers are now validated when the
10808 table is loaded.
10809
10810 Added two new warnings during FADT verification - 1) if the FADT is
10811 larger
10812 than the largest known FADT version, and 2) if there is a mismatch
10813 between
10814 a
10815 32-bit block address and the 64-bit X counterpart (when both are non-
10816 zero.)
10817
10818 Example Code and Data Size: These are the sizes for the OS-independent
10819 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10820 debug version of the code includes the debug output trace mechanism and
10821 has
10822 a much larger code and data size.
10823
10824 Previous Release:
10825 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total
10826 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total
10827 Current Release:
10828 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
10829 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total
10830
10831
10832 2) iASL Compiler/Disassembler and Tools:
10833
10834 Fixed a problem with the implementation of the Switch() operator where
10835 the
10836 temporary variable was declared too close to the actual Switch, instead
10837 of
10838 at method level. This could cause a problem if the Switch() operator is
10839 within a while loop, causing an error on the second iteration. (BZ 460)
10840
10841 Disassembler - fix for error emitted for unknown type for target of scope
10842 operator. Now, ignore it and continue.
10843
10844 Disassembly of an FADT now verifies the input FADT and reports any errors
10845 found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
10846
10847 Disassembly of raw data buffers with byte initialization data now
10848 prefixes
10849 each output line with the current buffer offset.
10850
10851 Disassembly of ASF! table now includes all variable-length data fields at
10852 the end of some of the subtables.
10853
10854 The disassembler now emits a comment if a buffer appears to be a
10855 ResourceTemplate, but cannot be disassembled as such because the EndTag
10856 does
10857 not appear at the very end of the buffer.
10858
10859 AcpiExec - Added the "-t" command line option to enable the serialized
10860 mode
10861 of the AML interpreter.
10862
10863 ----------------------------------------
10864 31 August 2006. Summary of changes for version 20060831:
10865
10866 1) ACPI CA Core Subsystem:
10867
10868 Miscellaneous fixes for the Table Manager:
10869 - Correctly initialize internal common FADT for all 64-bit "X" fields
10870 - Fixed a couple table mapping issues during table load
10871 - Fixed a couple alignment issues for IA64
10872 - Initialize input array to zero in AcpiInitializeTables
10873 - Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
10874 AcpiGetTableByIndex
10875
10876 Change for GPE support: when a "wake" GPE is received, all wake GPEs are
10877 now
10878 immediately disabled to prevent the waking GPE from firing again and to
10879 prevent other wake GPEs from interrupting the wake process.
10880
10881 Added the AcpiGpeCount global that tracks the number of processed GPEs,
10882 to
10883 be used for debugging systems with a large number of ACPI interrupts.
10884
10885 Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
10886 both the ACPICA headers and the disassembler.
10887
10888 Example Code and Data Size: These are the sizes for the OS-independent
10889 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10890 debug version of the code includes the debug output trace mechanism and
10891 has
10892 a much larger code and data size.
10893
10894 Previous Release:
10895 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total
10896 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total
10897 Current Release:
10898 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total
10899 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total
10900
10901
10902 2) iASL Compiler/Disassembler and Tools:
10903
10904 Disassembler support for the DMAR ACPI table.
10905
10906 ----------------------------------------
10907 23 August 2006. Summary of changes for version 20060823:
10908
10909 1) ACPI CA Core Subsystem:
10910
10911 The Table Manager component has been completely redesigned and
10912 reimplemented. The new design is much simpler, and reduces the overall
10913 code
10914 and data size of the kernel-resident ACPICA by approximately 5%. Also, it
10915 is
10916 now possible to obtain the ACPI tables very early during kernel
10917 initialization, even before dynamic memory management is initialized.
10918 (Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
10919
10920 Obsolete ACPICA interfaces:
10921
10922 - AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
10923 init
10924 time).
10925 - AcpiLoadTable: Not needed.
10926 - AcpiUnloadTable: Not needed.
10927
10928 New ACPICA interfaces:
10929
10930 - AcpiInitializeTables: Must be called before the table manager can be
10931 used.
10932 - AcpiReallocateRootTable: Used to transfer the root table to dynamically
10933 allocated memory after it becomes available.
10934 - AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
10935 tables
10936 in the RSDT/XSDT.
10937
10938 Other ACPICA changes:
10939
10940 - AcpiGetTableHeader returns the actual mapped table header, not a copy.
10941 Use
10942 AcpiOsUnmapMemory to free this mapping.
10943 - AcpiGetTable returns the actual mapped table. The mapping is managed
10944 internally and must not be deleted by the caller. Use of this interface
10945 causes no additional dynamic memory allocation.
10946 - AcpiFindRootPointer: Support for physical addressing has been
10947 eliminated,
10948 it appeared to be unused.
10949 - The interface to AcpiOsMapMemory has changed to be consistent with the
10950 other allocation interfaces.
10951 - The interface to AcpiOsGetRootPointer has changed to eliminate
10952 unnecessary
10953 parameters.
10954 - ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
10955 64-
10956 bit platforms. Was previously 64 bits on all platforms.
10957 - The interface to the ACPI Global Lock acquire/release macros have
10958 changed
10959 slightly since ACPICA no longer keeps a local copy of the FACS with a
10960 constructed pointer to the actual global lock.
10961
10962 Porting to the new table manager:
10963
10964 - AcpiInitializeTables: Must be called once, and can be called anytime
10965 during the OS initialization process. It allows the host to specify an
10966 area
10967 of memory to be used to store the internal version of the RSDT/XSDT (root
10968 table). This allows the host to access ACPI tables before memory
10969 management
10970 is initialized and running.
10971 - AcpiReallocateRootTable: Can be called after memory management is
10972 running
10973 to copy the root table to a dynamically allocated array, freeing up the
10974 scratch memory specified in the call to AcpiInitializeTables.
10975 - AcpiSubsystemInitialize: This existing interface is independent of the
10976 Table Manager, and does not have to be called before the Table Manager
10977 can
10978 be used, it only must be called before the rest of ACPICA can be used.
10979 - ACPI Tables: Some changes have been made to the names and structure of
10980 the
10981 actbl.h and actbl1.h header files and may require changes to existing
10982 code.
10983 For example, bitfields have been completely removed because of their lack
10984 of
10985 portability across C compilers.
10986 - Update interfaces to the Global Lock acquire/release macros if local
10987 versions are used. (see acwin.h)
10988
10989 Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
10990
10991 New files: tbfind.c
10992
10993 Example Code and Data Size: These are the sizes for the OS-independent
10994 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10995 debug version of the code includes the debug output trace mechanism and
10996 has
10997 a much larger code and data size.
10998
10999 Previous Release:
11000 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
11001 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
11002 Current Release:
11003 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total
11004 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total
11005
11006
11007 2) iASL Compiler/Disassembler and Tools:
11008
11009 No changes for this release.
11010
11011 ----------------------------------------
11012 21 July 2006. Summary of changes for version 20060721:
11013
11014 1) ACPI CA Core Subsystem:
11015
11016 The full source code for the ASL test suite used to validate the iASL
11017 compiler and the ACPICA core subsystem is being released with the ACPICA
11018 source for the first time. The source is contained in a separate package
11019 and
11020 consists of over 1100 files that exercise all ASL/AML operators. The
11021 package
11022 should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
11023 Fiodor
11024 Suietov)
11025
11026 Completed a new design and implementation for support of the ACPI Global
11027 Lock. On the OS side, the global lock is now treated as a standard AML
11028 mutex. Previously, multiple OS threads could "acquire" the global lock
11029 simultaneously. However, this could cause the BIOS to be starved out of
11030 the
11031 lock - especially in cases such as the Embedded Controller driver where
11032 there is a tight coupling between the OS and the BIOS.
11033
11034 Implemented an optimization for the ACPI Global Lock interrupt mechanism.
11035 The Global Lock interrupt handler no longer queues the execution of a
11036 separate thread to signal the global lock semaphore. Instead, the
11037 semaphore
11038 is signaled directly from the interrupt handler.
11039
11040 Implemented support within the AML interpreter for package objects that
11041 contain a larger AML length (package list length) than the package
11042 element
11043 count. In this case, the length of the package is truncated to match the
11044 package element count. Some BIOS code apparently modifies the package
11045 length
11046 on the fly, and this change supports this behavior. Provides
11047 compatibility
11048 with the MS AML interpreter. (With assistance from Fiodor Suietov)
11049
11050 Implemented a temporary fix for the BankValue parameter of a Bank Field
11051 to
11052 support all constant values, now including the Zero and One opcodes.
11053 Evaluation of this parameter must eventually be converted to a full
11054 TermArg
11055 evaluation. A not-implemented error is now returned (temporarily) for
11056 non-
11057 constant values for this parameter.
11058
11059 Fixed problem reports (Fiodor Suietov) integrated:
11060 - Fix for premature object deletion after CopyObject on Operation Region
11061 (BZ
11062 350)
11063
11064 Example Code and Data Size: These are the sizes for the OS-independent
11065 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11066 debug version of the code includes the debug output trace mechanism and
11067 has
11068 a much larger code and data size.
11069
11070 Previous Release:
11071 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total
11072 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total
11073 Current Release:
11074 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
11075 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
11076
11077
11078 2) iASL Compiler/Disassembler and Tools:
11079
11080 No changes for this release.
11081
11082 ----------------------------------------
11083 07 July 2006. Summary of changes for version 20060707:
11084
11085 1) ACPI CA Core Subsystem:
11086
11087 Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
11088 that do not allow the initialization of address pointers within packed
11089 structures - even though the hardware itself may support misaligned
11090 transfers. Some of the debug data structures are packed by default to
11091 minimize size.
11092
11093 Added an error message for the case where AcpiOsGetThreadId() returns
11094 zero.
11095 A non-zero value is required by the core ACPICA code to ensure the proper
11096 operation of AML mutexes and recursive control methods.
11097
11098 The DSDT is now the only ACPI table that determines whether the AML
11099 interpreter is in 32-bit or 64-bit mode. Not really a functional change,
11100 but
11101 the hooks for per-table 32/64 switching have been removed from the code.
11102 A
11103 clarification to the ACPI specification is forthcoming in ACPI 3.0B.
11104
11105 Fixed a possible leak of an OwnerID in the error path of
11106 AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
11107 deletion to a single place in AcpiTbUninstallTable to correct possible
11108 leaks
11109 when using the AcpiTbDeleteTablesByType interface (with assistance from
11110 Lance Ortiz.)
11111
11112 Fixed a problem with Serialized control methods where the semaphore
11113 associated with the method could be over-signaled after multiple method
11114 invocations.
11115
11116 Fixed two issues with the locking of the internal namespace data
11117 structure.
11118 Both the Unload() operator and AcpiUnloadTable interface now lock the
11119 namespace during the namespace deletion associated with the table unload
11120 (with assistance from Linn Crosetto.)
11121
11122 Fixed problem reports (Valery Podrezov) integrated:
11123 - Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
11124
11125 Fixed problem reports (Fiodor Suietov) integrated:
11126 - Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
11127 - On Address Space handler deletion, needless deactivation call (BZ 374)
11128 - AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
11129 375)
11130 - Possible memory leak, Notify sub-objects of Processor, Power,
11131 ThermalZone
11132 (BZ 376)
11133 - AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
11134 - Minimum Length of RSDT should be validated (BZ 379)
11135 - AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
11136 Handler (BZ (380)
11137 - AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
11138 loaded
11139 (BZ 381)
11140
11141 Example Code and Data Size: These are the sizes for the OS-independent
11142 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11143 debug version of the code includes the debug output trace mechanism and
11144 has
11145 a much larger code and data size.
11146
11147 Previous Release:
11148 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total
11149 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total
11150 Current Release:
11151 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
11152 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
11153
11154
11155 2) iASL Compiler/Disassembler and Tools:
11156
11157 Fixed problem reports:
11158 Compiler segfault when ASL contains a long (>1024) String declaration (BZ
11159 436)
11160
11161 ----------------------------------------
11162 23 June 2006. Summary of changes for version 20060623:
11163
11164 1) ACPI CA Core Subsystem:
11165
11166 Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
11167 allows the type to be customized to the host OS for improved efficiency
11168 (since a spinlock is usually a very small object.)
11169
11170 Implemented support for "ignored" bits in the ACPI registers. According
11171 to
11172 the ACPI specification, these bits should be preserved when writing the
11173 registers via a read/modify/write cycle. There are 3 bits preserved in
11174 this
11175 manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
11176
11177 Implemented the initial deployment of new OSL mutex interfaces. Since
11178 some
11179 host operating systems have separate mutex and semaphore objects, this
11180 feature was requested. The base code now uses mutexes (and the new mutex
11181 interfaces) wherever a binary semaphore was used previously. However, for
11182 the current release, the mutex interfaces are defined as macros to map
11183 them
11184 to the existing semaphore interfaces. Therefore, no OSL changes are
11185 required
11186 at this time. (See acpiosxf.h)
11187
11188 Fixed several problems with the support for the control method SyncLevel
11189 parameter. The SyncLevel now works according to the ACPI specification
11190 and
11191 in concert with the Mutex SyncLevel parameter, since the current
11192 SyncLevel
11193 is a property of the executing thread. Mutual exclusion for control
11194 methods
11195 is now implemented with a mutex instead of a semaphore.
11196
11197 Fixed three instances of the use of the C shift operator in the bitfield
11198 support code (exfldio.c) to avoid the use of a shift value larger than
11199 the
11200 target data width. The behavior of C compilers is undefined in this case
11201 and
11202 can cause unpredictable results, and therefore the case must be detected
11203 and
11204 avoided. (Fiodor Suietov)
11205
11206 Added an info message whenever an SSDT or OEM table is loaded dynamically
11207 via the Load() or LoadTable() ASL operators. This should improve
11208 debugging
11209 capability since it will show exactly what tables have been loaded
11210 (beyond
11211 the tables present in the RSDT/XSDT.)
11212
11213 Example Code and Data Size: These are the sizes for the OS-independent
11214 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11215 debug version of the code includes the debug output trace mechanism and
11216 has
11217 a much larger code and data size.
11218
11219 Previous Release:
11220 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total
11221 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total
11222 Current Release:
11223 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total
11224 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total
11225
11226
11227 2) iASL Compiler/Disassembler and Tools:
11228
11229 No changes for this release.
11230
11231 ----------------------------------------
11232 08 June 2006. Summary of changes for version 20060608:
11233
11234 1) ACPI CA Core Subsystem:
11235
11236 Converted the locking mutex used for the ACPI hardware to a spinlock.
11237 This
11238 change should eliminate all problems caused by attempting to acquire a
11239 semaphore at interrupt level, and it means that all ACPICA external
11240 interfaces that directly access the ACPI hardware can be safely called
11241 from
11242 interrupt level. OSL code that implements the semaphore interfaces should
11243 be
11244 able to eliminate any workarounds for being called at interrupt level.
11245
11246 Fixed a regression introduced in 20060526 where the ACPI device
11247 initialization could be prematurely aborted with an AE_NOT_FOUND if a
11248 device
11249 did not have an optional _INI method.
11250
11251 Fixed an IndexField issue where a write to the Data Register should be
11252 limited in size to the AccessSize (width) of the IndexField itself. (BZ
11253 433,
11254 Fiodor Suietov)
11255
11256 Fixed problem reports (Valery Podrezov) integrated:
11257 - Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
11258
11259 Fixed problem reports (Fiodor Suietov) integrated:
11260 - AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
11261
11262 Removed four global mutexes that were obsolete and were no longer being
11263 used.
11264
11265 Example Code and Data Size: These are the sizes for the OS-independent
11266 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11267 debug version of the code includes the debug output trace mechanism and
11268 has
11269 a much larger code and data size.
11270
11271 Previous Release:
11272 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total
11273 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total
11274 Current Release:
11275 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total
11276 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total
11277
11278
11279 2) iASL Compiler/Disassembler and Tools:
11280
11281 Fixed a fault when using -g option (get tables from registry) on Windows
11282 machines.
11283
11284 Fixed problem reports integrated:
11285 - Generate error if CreateField NumBits parameter is zero. (BZ 405)
11286 - Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
11287 Suietov)
11288 - Global table revision override (-r) is ignored (BZ 413)
11289
11290 ----------------------------------------
11291 26 May 2006. Summary of changes for version 20060526:
11292
11293 1) ACPI CA Core Subsystem:
11294
11295 Restructured, flattened, and simplified the internal interfaces for
11296 namespace object evaluation - resulting in smaller code, less CPU stack
11297 use,
11298 and fewer interfaces. (With assistance from Mikhail Kouzmich)
11299
11300 Fixed a problem with the CopyObject operator where the first parameter
11301 was
11302 not typed correctly for the parser, interpreter, compiler, and
11303 disassembler.
11304 Caused various errors and unexpected behavior.
11305
11306 Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
11307 produced incorrect results with some C compilers. Since the behavior of C
11308 compilers when the shift value is larger than the datatype width is
11309 apparently not well defined, the interpreter now detects this condition
11310 and
11311 simply returns zero as expected in all such cases. (BZ 395)
11312
11313 Fixed problem reports (Valery Podrezov) integrated:
11314 - Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
11315 - Allow interpreter to handle nested method declarations (BZ 5361)
11316
11317 Fixed problem reports (Fiodor Suietov) integrated:
11318 - AcpiTerminate doesn't free debug memory allocation list objects (BZ
11319 355)
11320 - After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
11321 356)
11322 - AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
11323 - Resource Manager should return AE_TYPE for non-device objects (BZ 358)
11324 - Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
11325 - Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
11326 - Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
11327 - Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
11328 - AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
11329 365)
11330 - Status of the Global Initialization Handler call not used (BZ 366)
11331 - Incorrect object parameter to Global Initialization Handler (BZ 367)
11332
11333 Example Code and Data Size: These are the sizes for the OS-independent
11334 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11335 debug version of the code includes the debug output trace mechanism and
11336 has
11337 a much larger code and data size.
11338
11339 Previous Release:
11340 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total
11341 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total
11342 Current Release:
11343 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total
11344 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total
11345
11346
11347 2) iASL Compiler/Disassembler and Tools:
11348
11349 Modified the parser to allow the names IO, DMA, and IRQ to be used as
11350 namespace identifiers with no collision with existing resource descriptor
11351 macro names. This provides compatibility with other ASL compilers and is
11352 most useful for disassembly/recompilation of existing tables without
11353 parse
11354 errors. (With assistance from Thomas Renninger)
11355
11356 Disassembler: fixed an incorrect disassembly problem with the
11357 DataTableRegion and CopyObject operators. Fixed a possible fault during
11358 disassembly of some Alias operators.
11359
11360 ----------------------------------------
11361 12 May 2006. Summary of changes for version 20060512:
11362
11363 1) ACPI CA Core Subsystem:
11364
11365 Replaced the AcpiOsQueueForExecution interface with a new interface named
11366 AcpiOsExecute. The major difference is that the new interface does not
11367 have
11368 a Priority parameter, this appeared to be useless and has been replaced
11369 by
11370 a
11371 Type parameter. The Type tells the host what type of execution is being
11372 requested, such as global lock handler, notify handler, GPE handler, etc.
11373 This allows the host to queue and execute the request as appropriate for
11374 the
11375 request type, possibly using different work queues and different
11376 priorities
11377 for the various request types. This enables fixes for multithreading
11378 deadlock problems such as BZ #5534, and will require changes to all
11379 existing
11380 OS interface layers. (Alexey Starikovskiy and Bob Moore)
11381
11382 Fixed a possible memory leak associated with the support for the so-
11383 called
11384 "implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
11385 Suietov)
11386
11387 Fixed a problem with the Load() operator where a table load from an
11388 operation region could overwrite an internal table buffer by up to 7
11389 bytes
11390 and cause alignment faults on IPF systems. (With assistance from Luming
11391 Yu)
11392
11393 Example Code and Data Size: These are the sizes for the OS-independent
11394 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11395 debug version of the code includes the debug output trace mechanism and
11396 has
11397 a much larger code and data size.
11398
11399 Previous Release:
11400 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total
11401 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total
11402 Current Release:
11403 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total
11404 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total
11405
11406
11407
11408 2) iASL Compiler/Disassembler and Tools:
11409
11410 Disassembler: Implemented support to cross reference the internal
11411 namespace
11412 and automatically generate ASL External() statements for symbols not
11413 defined
11414 within the current table being disassembled. This will simplify the
11415 disassembly and recompilation of interdependent tables such as SSDTs
11416 since
11417 these statements will no longer have to be added manually.
11418
11419 Disassembler: Implemented experimental support to automatically detect
11420 invocations of external control methods and generate appropriate
11421 External()
11422 statements. This is problematic because the AML cannot be correctly
11423 parsed
11424 until the number of arguments for each control method is known.
11425 Currently,
11426 standalone method invocations and invocations as the source operand of a
11427 Store() statement are supported.
11428
11429 Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
11430 LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
11431 LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
11432 more readable and likely closer to the original ASL source.
11433
11434 ----------------------------------------
11435 21 April 2006. Summary of changes for version 20060421:
11436
11437 1) ACPI CA Core Subsystem:
11438
11439 Removed a device initialization optimization introduced in 20051216 where
11440 the _STA method was not run unless an _INI was also present for the same
11441 device. This optimization could cause problems because it could allow
11442 _INI
11443 methods to be run within a not-present device subtree. (If a not-present
11444 device had no _INI, _STA would not be run, the not-present status would
11445 not
11446 be discovered, and the children of the device would be incorrectly
11447 traversed.)
11448
11449 Implemented a new _STA optimization where namespace subtrees that do not
11450 contain _INI are identified and ignored during device initialization.
11451 Selectively running _STA can significantly improve boot time on large
11452 machines (with assistance from Len Brown.)
11453
11454 Implemented support for the device initialization case where the returned
11455 _STA flags indicate a device not-present but functioning. In this case,
11456 _INI
11457 is not run, but the device children are examined for presence, as per the
11458 ACPI specification.
11459
11460 Implemented an additional change to the IndexField support in order to
11461 conform to MS behavior. The value written to the Index Register is not
11462 simply a byte offset, it is a byte offset in units of the access width of
11463 the parent Index Field. (Fiodor Suietov)
11464
11465 Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
11466 interface is called during the creation of all AML operation regions, and
11467 allows the host OS to exert control over what addresses it will allow the
11468 AML code to access. Operation Regions whose addresses are disallowed will
11469 cause a runtime exception when they are actually accessed (will not
11470 affect
11471 or abort table loading.) See oswinxf or osunixxf for an example
11472 implementation.
11473
11474 Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
11475 interface allows the host OS to match the various "optional"
11476 interface/behavior strings for the _OSI predefined control method as
11477 appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
11478 for an example implementation.
11479
11480 Restructured and corrected various problems in the exception handling
11481 code
11482 paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
11483 (with assistance from Takayoshi Kochi.)
11484
11485 Modified the Linux source converter to ignore quoted string literals
11486 while
11487 converting identifiers from mixed to lower case. This will correct
11488 problems
11489 with the disassembler and other areas where such strings must not be
11490 modified.
11491
11492 The ACPI_FUNCTION_* macros no longer require quotes around the function
11493 name. This allows the Linux source converter to convert the names, now
11494 that
11495 the converter ignores quoted strings.
11496
11497 Example Code and Data Size: These are the sizes for the OS-independent
11498 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11499 debug version of the code includes the debug output trace mechanism and
11500 has
11501 a much larger code and data size.
11502
11503 Previous Release:
11504
11505 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total
11506 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total
11507 Current Release:
11508 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total
11509 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total
11510
11511
11512 2) iASL Compiler/Disassembler and Tools:
11513
11514 Implemented 3 new warnings for iASL, and implemented multiple warning
11515 levels
11516 (w2 flag).
11517
11518 1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
11519 not
11520 WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
11521 check for the possible timeout, a warning is issued.
11522
11523 2) Useless operators: If an ASL operator does not specify an optional
11524 target
11525 operand and it also does not use the function return value from the
11526 operator, a warning is issued since the operator effectively does
11527 nothing.
11528
11529 3) Unreferenced objects: If a namespace object is created, but never
11530 referenced, a warning is issued. This is a warning level 2 since there
11531 are
11532 cases where this is ok, such as when a secondary table is loaded that
11533 uses
11534 the unreferenced objects. Even so, care is taken to only flag objects
11535 that
11536 don't look like they will ever be used. For example, the reserved methods
11537 (starting with an underscore) are usually not referenced because it is
11538 expected that the OS will invoke them.
11539
11540 ----------------------------------------
11541 31 March 2006. Summary of changes for version 20060331:
11542
11543 1) ACPI CA Core Subsystem:
11544
11545 Implemented header file support for the following additional ACPI tables:
11546 ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
11547 support,
11548 all current and known ACPI tables are now defined in the ACPICA headers
11549 and
11550 are available for use by device drivers and other software.
11551
11552 Implemented support to allow tables that contain ACPI names with invalid
11553 characters to be loaded. Previously, this would cause the table load to
11554 fail, but since there are several known cases of such tables on existing
11555 machines, this change was made to enable ACPI support for them. Also,
11556 this
11557 matches the behavior of the Microsoft ACPI implementation.
11558
11559 Fixed a couple regressions introduced during the memory optimization in
11560 the
11561 20060317 release. The namespace node definition required additional
11562 reorganization and an internal datatype that had been changed to 8-bit
11563 was
11564 restored to 32-bit. (Valery Podrezov)
11565
11566 Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
11567 could be passed through to AcpiOsReleaseObject which is unexpected. Such
11568 null pointers are now trapped and ignored, matching the behavior of the
11569 previous implementation before the deployment of AcpiOsReleaseObject.
11570 (Valery Podrezov, Fiodor Suietov)
11571
11572 Fixed a memory mapping leak during the deletion of a SystemMemory
11573 operation
11574 region where a cached memory mapping was not deleted. This became a
11575 noticeable problem for operation regions that are defined within
11576 frequently
11577 used control methods. (Dana Meyers)
11578
11579 Reorganized the ACPI table header files into two main files: one for the
11580 ACPI tables consumed by the ACPICA core, and another for the
11581 miscellaneous
11582 ACPI tables that are consumed by the drivers and other software. The
11583 various
11584 FADT definitions were merged into one common section and three different
11585 tables (ACPI 1.0, 1.0+, and 2.0)
11586
11587 Example Code and Data Size: These are the sizes for the OS-independent
11588 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11589 debug version of the code includes the debug output trace mechanism and
11590 has
11591 a much larger code and data size.
11592
11593 Previous Release:
11594 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total
11595 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total
11596 Current Release:
11597 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total
11598 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total
11599
11600
11601 2) iASL Compiler/Disassembler and Tools:
11602
11603 Disassembler: Implemented support to decode and format all non-AML ACPI
11604 tables (tables other than DSDTs and SSDTs.) This includes the new tables
11605 added to the ACPICA headers, therefore all current and known ACPI tables
11606 are
11607 supported.
11608
11609 Disassembler: The change to allow ACPI names with invalid characters also
11610 enables the disassembly of such tables. Invalid characters within names
11611 are
11612 changed to '*' to make the name printable; the iASL compiler will still
11613 generate an error for such names, however, since this is an invalid ACPI
11614 character.
11615
11616 Implemented an option for AcpiXtract (-a) to extract all tables found in
11617 the
11618 input file. The default invocation extracts only the DSDTs and SSDTs.
11619
11620 Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
11621 makefile for the AcpiXtract utility.
11622
11623 ----------------------------------------
11624 17 March 2006. Summary of changes for version 20060317:
11625
11626 1) ACPI CA Core Subsystem:
11627
11628 Implemented the use of a cache object for all internal namespace nodes.
11629 Since there are about 1000 static nodes in a typical system, this will
11630 decrease memory use for cache implementations that minimize per-
11631 allocation
11632 overhead (such as a slab allocator.)
11633
11634 Removed the reference count mechanism for internal namespace nodes, since
11635 it
11636 was deemed unnecessary. This reduces the size of each namespace node by
11637 about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
11638 case,
11639 and 32 bytes for the 64-bit case.
11640
11641 Optimized several internal data structures to reduce object size on 64-
11642 bit
11643 platforms by packing data within the 64-bit alignment. This includes the
11644 frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
11645 instances corresponding to the namespace objects.
11646
11647 Added two new strings for the predefined _OSI method: "Windows 2001.1
11648 SP1"
11649 and "Windows 2006".
11650
11651 Split the allocation tracking mechanism out to a separate file, from
11652 utalloc.c to uttrack.c. This mechanism appears to be only useful for
11653 application-level code. Kernels may wish to not include uttrack.c in
11654 distributions.
11655
11656 Removed all remnants of the obsolete ACPI_REPORT_* macros and the
11657 associated
11658 code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
11659 macros.)
11660
11661 Code and Data Size: These are the sizes for the acpica.lib produced by
11662 the
11663 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11664 ACPI
11665 driver or OSPM code. The debug version of the code includes the debug
11666 output
11667 trace mechanism and has a much larger code and data size. Note that these
11668 values will vary depending on the efficiency of the compiler and the
11669 compiler options used during generation.
11670
11671 Previous Release:
11672 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
11673 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total
11674 Current Release:
11675 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total
11676 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total
11677
11678
11679 2) iASL Compiler/Disassembler and Tools:
11680
11681 Implemented an ANSI C version of the acpixtract utility. This version
11682 will
11683 automatically extract the DSDT and all SSDTs from the input acpidump text
11684 file and dump the binary output to separate files. It can also display a
11685 summary of the input file including the headers for each table found and
11686 will extract any single ACPI table, with any signature. (See
11687 source/tools/acpixtract)
11688
11689 ----------------------------------------
11690 10 March 2006. Summary of changes for version 20060310:
11691
11692 1) ACPI CA Core Subsystem:
11693
11694 Tagged all external interfaces to the subsystem with the new
11695 ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
11696 assist
11697 kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
11698 macro. The default definition is NULL.
11699
11700 Added the ACPI_THREAD_ID type for the return value from
11701 AcpiOsGetThreadId.
11702 This allows the host to define this as necessary to simplify kernel
11703 integration. The default definition is ACPI_NATIVE_UINT.
11704
11705 Fixed two interpreter problems related to error processing, the deletion
11706 of
11707 objects, and placing invalid pointers onto the internal operator result
11708 stack. BZ 6028, 6151 (Valery Podrezov)
11709
11710 Increased the reference count threshold where a warning is emitted for
11711 large
11712 reference counts in order to eliminate unnecessary warnings on systems
11713 with
11714 large namespaces (especially 64-bit.) Increased the value from 0x400 to
11715 0x800.
11716
11717 Due to universal disagreement as to the meaning of the 'c' in the
11718 calloc()
11719 function, the ACPI_MEM_CALLOCATE macro has been renamed to
11720 ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
11721 ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
11722 ACPI_FREE.
11723
11724 Code and Data Size: These are the sizes for the acpica.lib produced by
11725 the
11726 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11727 ACPI
11728 driver or OSPM code. The debug version of the code includes the debug
11729 output
11730 trace mechanism and has a much larger code and data size. Note that these
11731 values will vary depending on the efficiency of the compiler and the
11732 compiler options used during generation.
11733
11734 Previous Release:
11735 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total
11736 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total
11737 Current Release:
11738 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
11739 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total
11740
11741
11742 2) iASL Compiler/Disassembler:
11743
11744 Disassembler: implemented support for symbolic resource descriptor
11745 references. If a CreateXxxxField operator references a fixed offset
11746 within
11747 a
11748 resource descriptor, a name is assigned to the descriptor and the offset
11749 is
11750 translated to the appropriate resource tag and pathname. The addition of
11751 this support brings the disassembled code very close to the original ASL
11752 source code and helps eliminate run-time errors when the disassembled
11753 code
11754 is modified (and recompiled) in such a way as to invalidate the original
11755 fixed offsets.
11756
11757 Implemented support for a Descriptor Name as the last parameter to the
11758 ASL
11759 Register() macro. This parameter was inadvertently left out of the ACPI
11760 specification, and will be added for ACPI 3.0b.
11761
11762 Fixed a problem where the use of the "_OSI" string (versus the full path
11763 "\_OSI") caused an internal compiler error. ("No back ptr to op")
11764
11765 Fixed a problem with the error message that occurs when an invalid string
11766 is
11767 used for a _HID object (such as one with an embedded asterisk:
11768 "*PNP010A".)
11769 The correct message is now displayed.
11770
11771 ----------------------------------------
11772 17 February 2006. Summary of changes for version 20060217:
11773
11774 1) ACPI CA Core Subsystem:
11775
11776 Implemented a change to the IndexField support to match the behavior of
11777 the
11778 Microsoft AML interpreter. The value written to the Index register is now
11779 a
11780 byte offset, no longer an index based upon the width of the Data
11781 register.
11782 This should fix IndexField problems seen on some machines where the Data
11783 register is not exactly one byte wide. The ACPI specification will be
11784 clarified on this point.
11785
11786 Fixed a problem where several resource descriptor types could overrun the
11787 internal descriptor buffer due to size miscalculation: VendorShort,
11788 VendorLong, and Interrupt. This was noticed on IA64 machines, but could
11789 affect all platforms.
11790
11791 Fixed a problem where individual resource descriptors were misaligned
11792 within
11793 the internal buffer, causing alignment faults on IA64 platforms.
11794
11795 Code and Data Size: These are the sizes for the acpica.lib produced by
11796 the
11797 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11798 ACPI
11799 driver or OSPM code. The debug version of the code includes the debug
11800 output
11801 trace mechanism and has a much larger code and data size. Note that these
11802 values will vary depending on the efficiency of the compiler and the
11803 compiler options used during generation.
11804
11805 Previous Release:
11806 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
11807 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total
11808 Current Release:
11809 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total
11810 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total
11811
11812
11813 2) iASL Compiler/Disassembler:
11814
11815 Implemented support for new reserved names: _WDG and _WED are Microsoft
11816 extensions for Windows Instrumentation Management, _TDL is a new ACPI-
11817 defined method (Throttling Depth Limit.)
11818
11819 Fixed a problem where a zero-length VendorShort or VendorLong resource
11820 descriptor was incorrectly emitted as a descriptor of length one.
11821
11822 ----------------------------------------
11823 10 February 2006. Summary of changes for version 20060210:
11824
11825 1) ACPI CA Core Subsystem:
11826
11827 Removed a couple of extraneous ACPI_ERROR messages that appeared during
11828 normal execution. These became apparent after the conversion from
11829 ACPI_DEBUG_PRINT.
11830
11831 Fixed a problem where the CreateField operator could hang if the BitIndex
11832 or
11833 NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
11834
11835 Fixed a problem where a DeRefOf operation on a buffer object incorrectly
11836 failed with an exception. This also fixes a couple of related RefOf and
11837 DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
11838
11839 Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
11840 of
11841 AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
11842 BZ
11843 5480)
11844
11845 Implemented a memory cleanup at the end of the execution of each
11846 iteration
11847 of an AML While() loop, preventing the accumulation of outstanding
11848 objects.
11849 (Valery Podrezov, BZ 5427)
11850
11851 Eliminated a chunk of duplicate code in the object resolution code.
11852 (Valery
11853 Podrezov, BZ 5336)
11854
11855 Fixed several warnings during the 64-bit code generation.
11856
11857 The AcpiSrc source code conversion tool now inserts one line of
11858 whitespace
11859 after an if() statement that is followed immediately by a comment,
11860 improving
11861 readability of the Linux code.
11862
11863 Code and Data Size: The current and previous library sizes for the core
11864 subsystem are shown below. These are the code and data sizes for the
11865 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11866 These
11867 values do not include any ACPI driver or OSPM code. The debug version of
11868 the
11869 code includes the debug output trace mechanism and has a much larger code
11870 and data size. Note that these values will vary depending on the
11871 efficiency
11872 of the compiler and the compiler options used during generation.
11873
11874 Previous Release:
11875 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total
11876 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total
11877 Current Release:
11878 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
11879 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total
11880
11881
11882 2) iASL Compiler/Disassembler:
11883
11884 Fixed a problem with the disassembly of a BankField operator with a
11885 complex
11886 expression for the BankValue parameter.
11887
11888 ----------------------------------------
11889 27 January 2006. Summary of changes for version 20060127:
11890
11891 1) ACPI CA Core Subsystem:
11892
11893 Implemented support in the Resource Manager to allow unresolved
11894 namestring
11895 references within resource package objects for the _PRT method. This
11896 support
11897 is in addition to the previously implemented unresolved reference support
11898 within the AML parser. If the interpreter slack mode is enabled, these
11899 unresolved references will be passed through to the caller as a NULL
11900 package
11901 entry.
11902
11903 Implemented and deployed new macros and functions for error and warning
11904 messages across the subsystem. These macros are simpler and generate less
11905 code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
11906 ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
11907 macros remain defined to allow ACPI drivers time to migrate to the new
11908 macros.
11909
11910 Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
11911 the
11912 Acquire/Release Lock OSL interfaces.
11913
11914 Fixed a problem where Alias ASL operators are sometimes not correctly
11915 resolved, in both the interpreter and the iASL compiler.
11916
11917 Fixed several problems with the implementation of the
11918 ConcatenateResTemplate
11919 ASL operator. As per the ACPI specification, zero length buffers are now
11920 treated as a single EndTag. One-length buffers always cause a fatal
11921 exception. Non-zero length buffers that do not end with a full 2-byte
11922 EndTag
11923 cause a fatal exception.
11924
11925 Fixed a possible structure overwrite in the AcpiGetObjectInfo external
11926 interface. (With assistance from Thomas Renninger)
11927
11928 Code and Data Size: The current and previous library sizes for the core
11929 subsystem are shown below. These are the code and data sizes for the
11930 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11931 These
11932 values do not include any ACPI driver or OSPM code. The debug version of
11933 the
11934 code includes the debug output trace mechanism and has a much larger code
11935 and data size. Note that these values will vary depending on the
11936 efficiency
11937 of the compiler and the compiler options used during generation.
11938
11939 Previous Release:
11940 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total
11941 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total
11942 Current Release:
11943 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total
11944 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total
11945
11946
11947 2) iASL Compiler/Disassembler:
11948
11949 Fixed an internal error that was generated for any forward references to
11950 ASL
11951 Alias objects.
11952
11953 ----------------------------------------
11954 13 January 2006. Summary of changes for version 20060113:
11955
11956 1) ACPI CA Core Subsystem:
11957
11958 Added 2006 copyright to all module headers and signons. This affects
11959 virtually every file in the ACPICA core subsystem, iASL compiler, and the
11960 utilities.
11961
11962 Enhanced the ACPICA error reporting in order to simplify user migration
11963 to
11964 the non-debug version of ACPICA. Replaced all instances of the
11965 ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
11966 debug
11967 levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
11968 respectively. This preserves all error and warning messages in the non-
11969 debug
11970 version of the ACPICA code (this has been referred to as the "debug lite"
11971 option.) Over 200 cases were converted to create a total of over 380
11972 error/warning messages across the ACPICA code. This increases the code
11973 and
11974 data size of the default non-debug version of the code somewhat (about
11975 13K),
11976 but all error/warning reporting may be disabled if desired (and code
11977 eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
11978 configuration option. The size of the debug version of ACPICA remains
11979 about
11980 the same.
11981
11982 Fixed a memory leak within the AML Debugger "Set" command. One object was
11983 not properly deleted for every successful invocation of the command.
11984
11985 Code and Data Size: The current and previous library sizes for the core
11986 subsystem are shown below. These are the code and data sizes for the
11987 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11988 These
11989 values do not include any ACPI driver or OSPM code. The debug version of
11990 the
11991 code includes the debug output trace mechanism and has a much larger code
11992 and data size. Note that these values will vary depending on the
11993 efficiency
11994 of the compiler and the compiler options used during generation.
11995
11996 Previous Release:
11997 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total
11998 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total
11999 Current Release:
12000 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total
12001 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total
12002
12003
12004 2) iASL Compiler/Disassembler:
12005
12006 The compiler now officially supports the ACPI 3.0a specification that was
12007 released on December 30, 2005. (Specification is available at
12008 www.acpi.info)
12009
12010 ----------------------------------------
12011 16 December 2005. Summary of changes for version 20051216:
12012
12013 1) ACPI CA Core Subsystem:
12014
12015 Implemented optional support to allow unresolved names within ASL Package
12016 objects. A null object is inserted in the package when a named reference
12017 cannot be located in the current namespace. Enabled via the interpreter
12018 slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
12019 machines
12020 that contain such code.
12021
12022 Implemented an optimization to the initialization sequence that can
12023 improve
12024 boot time. During ACPI device initialization, the _STA method is now run
12025 if
12026 and only if the _INI method exists. The _STA method is used to determine
12027 if
12028 the device is present; An _INI can only be run if _STA returns present,
12029 but
12030 it is a waste of time to run the _STA method if the _INI does not exist.
12031 (Prototype and assistance from Dong Wei)
12032
12033 Implemented use of the C99 uintptr_t for the pointer casting macros if it
12034 is
12035 available in the current compiler. Otherwise, the default (void *) cast
12036 is
12037 used as before.
12038
12039 Fixed some possible memory leaks found within the execution path of the
12040 Break, Continue, If, and CreateField operators. (Valery Podrezov)
12041
12042 Fixed a problem introduced in the 20051202 release where an exception is
12043 generated during method execution if a control method attempts to declare
12044 another method.
12045
12046 Moved resource descriptor string constants that are used by both the AML
12047 disassembler and AML debugger to the common utilities directory so that
12048 these components are independent.
12049
12050 Implemented support in the AcpiExec utility (-e switch) to globally
12051 ignore
12052 exceptions during control method execution (method is not aborted.)
12053
12054 Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
12055 generation.
12056
12057 Code and Data Size: The current and previous library sizes for the core
12058 subsystem are shown below. These are the code and data sizes for the
12059 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12060 These
12061 values do not include any ACPI driver or OSPM code. The debug version of
12062 the
12063 code includes the debug output trace mechanism and has a much larger code
12064 and data size. Note that these values will vary depending on the
12065 efficiency
12066 of the compiler and the compiler options used during generation.
12067
12068 Previous Release:
12069 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
12070 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total
12071 Current Release:
12072 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total
12073 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total
12074
12075
12076 2) iASL Compiler/Disassembler:
12077
12078 Fixed a problem where a CPU stack overflow fault could occur if a
12079 recursive
12080 method call was made from within a Return statement.
12081
12082 ----------------------------------------
12083 02 December 2005. Summary of changes for version 20051202:
12084
12085 1) ACPI CA Core Subsystem:
12086
12087 Modified the parsing of control methods to no longer create namespace
12088 objects during the first pass of the parse. Objects are now created only
12089 during the execute phase, at the moment the namespace creation operator
12090 is
12091 encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
12092 This
12093 should eliminate ALREADY_EXISTS exceptions seen on some machines where
12094 reentrant control methods are protected by an AML mutex. The mutex will
12095 now
12096 correctly block multiple threads from attempting to create the same
12097 object
12098 more than once.
12099
12100 Increased the number of available Owner Ids for namespace object tracking
12101 from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
12102 on
12103 some machines with a large number of ACPI tables (either static or
12104 dynamic).
12105
12106 Fixed a problem with the AcpiExec utility where a fault could occur when
12107 the
12108 -b switch (batch mode) is used.
12109
12110 Enhanced the namespace dump routine to output the owner ID for each
12111 namespace object.
12112
12113 Code and Data Size: The current and previous library sizes for the core
12114 subsystem are shown below. These are the code and data sizes for the
12115 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12116 These
12117 values do not include any ACPI driver or OSPM code. The debug version of
12118 the
12119 code includes the debug output trace mechanism and has a much larger code
12120 and data size. Note that these values will vary depending on the
12121 efficiency
12122 of the compiler and the compiler options used during generation.
12123
12124 Previous Release:
12125 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
12126 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
12127 Current Release:
12128 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
12129 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total
12130
12131
12132 2) iASL Compiler/Disassembler:
12133
12134 Fixed a parse error during compilation of certain Switch/Case constructs.
12135 To
12136 simplify the parse, the grammar now allows for multiple Default
12137 statements
12138 and this error is now detected and flagged during the analysis phase.
12139
12140 Disassembler: The disassembly now includes the contents of the original
12141 table header within a comment at the start of the file. This includes the
12142 name and version of the original ASL compiler.
12143
12144 ----------------------------------------
12145 17 November 2005. Summary of changes for version 20051117:
12146
12147 1) ACPI CA Core Subsystem:
12148
12149 Fixed a problem in the AML parser where the method thread count could be
12150 decremented below zero if any errors occurred during the method parse
12151 phase.
12152 This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
12153 machines.
12154 This also fixed a related regression with the mechanism that detects and
12155 corrects methods that cannot properly handle reentrancy (related to the
12156 deployment of the new OwnerId mechanism.)
12157
12158 Eliminated the pre-parsing of control methods (to detect errors) during
12159 table load. Related to the problem above, this was causing unwind issues
12160 if
12161 any errors occurred during the parse, and it seemed to be overkill. A
12162 table
12163 load should not be aborted if there are problems with any single control
12164 method, thus rendering this feature rather pointless.
12165
12166 Fixed a problem with the new table-driven resource manager where an
12167 internal
12168 buffer overflow could occur for small resource templates.
12169
12170 Implemented a new external interface, AcpiGetVendorResource. This
12171 interface
12172 will find and return a vendor-defined resource descriptor within a _CRS
12173 or
12174 _PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
12175 Helgaas.
12176
12177 Removed the length limit (200) on string objects as per the upcoming ACPI
12178 3.0A specification. This affects the following areas of the interpreter:
12179 1)
12180 any implicit conversion of a Buffer to a String, 2) a String object
12181 result
12182 of the ASL Concatenate operator, 3) the String object result of the ASL
12183 ToString operator.
12184
12185 Fixed a problem in the Windows OS interface layer (OSL) where a
12186 WAIT_FOREVER
12187 on a semaphore object would incorrectly timeout. This allows the
12188 multithreading features of the AcpiExec utility to work properly under
12189 Windows.
12190
12191 Updated the Linux makefiles for the iASL compiler and AcpiExec to include
12192 the recently added file named "utresrc.c".
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: 76.2K Code, 12.3K Data, 88.5K Total
12207 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
12208 Current Release:
12209 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
12210 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
12211
12212
12213 2) iASL Compiler/Disassembler:
12214
12215 Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
12216 specification. For the iASL compiler, this means that string literals
12217 within
12218 the source ASL can be of any length.
12219
12220 Enhanced the listing output to dump the AML code for resource descriptors
12221 immediately after the ASL code for each descriptor, instead of in a block
12222 at
12223 the end of the entire resource template.
12224
12225 Enhanced the compiler debug output to dump the entire original parse tree
12226 constructed during the parse phase, before any transforms are applied to
12227 the
12228 tree. The transformed tree is dumped also.
12229
12230 ----------------------------------------
12231 02 November 2005. Summary of changes for version 20051102:
12232
12233 1) ACPI CA Core Subsystem:
12234
12235 Modified the subsystem initialization sequence to improve GPE support.
12236 The
12237 GPE initialization has been split into two parts in order to defer
12238 execution
12239 of the _PRW methods (Power Resources for Wake) until after the hardware
12240 is
12241 fully initialized and the SCI handler is installed. This allows the _PRW
12242 methods to access fields protected by the Global Lock. This will fix
12243 systems
12244 where a NO_GLOBAL_LOCK exception has been seen during initialization.
12245
12246 Converted the ACPI internal object disassemble and display code within
12247 the
12248 AML debugger to fully table-driven operation, reducing code size and
12249 increasing maintainability.
12250
12251 Fixed a regression with the ConcatenateResTemplate() ASL operator
12252 introduced
12253 in the 20051021 release.
12254
12255 Implemented support for "local" internal ACPI object types within the
12256 debugger "Object" command and the AcpiWalkNamespace external interfaces.
12257 These local types include RegionFields, BankFields, IndexFields, Alias,
12258 and
12259 reference objects.
12260
12261 Moved common AML resource handling code into a new file, "utresrc.c".
12262 This
12263 code is shared by both the Resource Manager and the AML Debugger.
12264
12265 Code and Data Size: The current and previous library sizes for the core
12266 subsystem are shown below. These are the code and data sizes for the
12267 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12268 These
12269 values do not include any ACPI driver or OSPM code. The debug version of
12270 the
12271 code includes the debug output trace mechanism and has a much larger code
12272 and data size. Note that these values will vary depending on the
12273 efficiency
12274 of the compiler and the compiler options used during generation.
12275
12276 Previous Release:
12277 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total
12278 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total
12279 Current Release:
12280 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total
12281 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
12282
12283
12284 2) iASL Compiler/Disassembler:
12285
12286 Fixed a problem with very large initializer lists (more than 4000
12287 elements)
12288 for both Buffer and Package objects where the parse stack could overflow.
12289
12290 Enhanced the pre-compile source code scan for non-ASCII characters to
12291 ignore
12292 characters within comment fields. The scan is now always performed and is
12293 no
12294 longer optional, detecting invalid characters within a source file
12295 immediately rather than during the parse phase or later.
12296
12297 Enhanced the ASL grammar definition to force early reductions on all
12298 list-
12299 style grammar elements so that the overall parse stack usage is greatly
12300 reduced. This should improve performance and reduce the possibility of
12301 parse
12302 stack overflow.
12303
12304 Eliminated all reduce/reduce conflicts in the iASL parser generation.
12305 Also,
12306 with the addition of a %expected statement, the compiler generates from
12307 source with no warnings.
12308
12309 Fixed a possible segment fault in the disassembler if the input filename
12310 does not contain a "dot" extension (Thomas Renninger).
12311
12312 ----------------------------------------
12313 21 October 2005. Summary of changes for version 20051021:
12314
12315 1) ACPI CA Core Subsystem:
12316
12317 Implemented support for the EM64T and other x86-64 processors. This
12318 essentially entails recognizing that these processors support non-aligned
12319 memory transfers. Previously, all 64-bit processors were assumed to lack
12320 hardware support for non-aligned transfers.
12321
12322 Completed conversion of the Resource Manager to nearly full table-driven
12323 operation. Specifically, the resource conversion code (convert AML to
12324 internal format and the reverse) and the debug code to dump internal
12325 resource descriptors are fully table-driven, reducing code and data size
12326 and
12327 improving maintainability.
12328
12329 The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
12330 word
12331 on 64-bit processors instead of a fixed 32-bit word. (With assistance
12332 from
12333 Alexey Starikovskiy)
12334
12335 Implemented support within the resource conversion code for the Type-
12336 Specific byte within the various ACPI 3.0 *WordSpace macros.
12337
12338 Fixed some issues within the resource conversion code for the type-
12339 specific
12340 flags for both Memory and I/O address resource descriptors. For Memory,
12341 implemented support for the MTP and TTP flags. For I/O, split the TRS and
12342 TTP flags into two separate fields.
12343
12344 Code and Data Size: The current and previous library sizes for the core
12345 subsystem are shown below. These are the code and data sizes for the
12346 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12347 These
12348 values do not include any ACPI driver or OSPM code. The debug version of
12349 the
12350 code includes the debug output trace mechanism and has a much larger code
12351 and data size. Note that these values will vary depending on the
12352 efficiency
12353 of the compiler and the compiler options used during generation.
12354
12355 Previous Release:
12356 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total
12357 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total
12358 Current Release:
12359 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total
12360 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total
12361
12362
12363
12364 2) iASL Compiler/Disassembler:
12365
12366 Relaxed a compiler restriction that disallowed a ResourceIndex byte if
12367 the
12368 corresponding ResourceSource string was not also present in a resource
12369 descriptor declaration. This restriction caused problems with existing
12370 AML/ASL code that includes the Index byte without the string. When such
12371 AML
12372 was disassembled, it could not be compiled without modification. Further,
12373 the modified code created a resource template with a different size than
12374 the
12375 original, breaking code that used fixed offsets into the resource
12376 template
12377 buffer.
12378
12379 Removed a recent feature of the disassembler to ignore a lone
12380 ResourceIndex
12381 byte. This byte is now emitted if present so that the exact AML can be
12382 reproduced when the disassembled code is recompiled.
12383
12384 Improved comments and text alignment for the resource descriptor code
12385 emitted by the disassembler.
12386
12387 Implemented disassembler support for the ACPI 3.0 AccessSize field within
12388 a
12389 Register() resource descriptor.
12390
12391 ----------------------------------------
12392 30 September 2005. Summary of changes for version 20050930:
12393
12394 1) ACPI CA Core Subsystem:
12395
12396 Completed a major overhaul of the Resource Manager code - specifically,
12397 optimizations in the area of the AML/internal resource conversion code.
12398 The
12399 code has been optimized to simplify and eliminate duplicated code, CPU
12400 stack
12401 use has been decreased by optimizing function parameters and local
12402 variables, and naming conventions across the manager have been
12403 standardized
12404 for clarity and ease of maintenance (this includes function, parameter,
12405 variable, and struct/typedef names.) The update may force changes in some
12406 driver code, depending on how resources are handled by the host OS.
12407
12408 All Resource Manager dispatch and information tables have been moved to a
12409 single location for clarity and ease of maintenance. One new file was
12410 created, named "rsinfo.c".
12411
12412 The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
12413 guarantee that the argument is not evaluated twice, making them less
12414 prone
12415 to macro side-effects. However, since there exists the possibility of
12416 additional stack use if a particular compiler cannot optimize them (such
12417 as
12418 in the debug generation case), the original macros are optionally
12419 available.
12420 Note that some invocations of the return_VALUE macro may now cause size
12421 mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
12422 to
12423 eliminate these. (From Randy Dunlap)
12424
12425 Implemented a new mechanism to enable debug tracing for individual
12426 control
12427 methods. A new external interface, AcpiDebugTrace, is provided to enable
12428 this mechanism. The intent is to allow the host OS to easily enable and
12429 disable tracing for problematic control methods. This interface can be
12430 easily exposed to a user or debugger interface if desired. See the file
12431 psxface.c for details.
12432
12433 AcpiUtCallocate will now return a valid pointer if a length of zero is
12434 specified - a length of one is used and a warning is issued. This matches
12435 the behavior of AcpiUtAllocate.
12436
12437 Code and Data Size: The current and previous library sizes for the core
12438 subsystem are shown below. These are the code and data sizes for the
12439 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12440 These
12441 values do not include any ACPI driver or OSPM code. The debug version of
12442 the
12443 code includes the debug output trace mechanism and has a much larger code
12444 and data size. Note that these values will vary depending on the
12445 efficiency
12446 of the compiler and the compiler options used during generation.
12447
12448 Previous Release:
12449 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total
12450 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total
12451 Current Release:
12452 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total
12453 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total
12454
12455
12456 2) iASL Compiler/Disassembler:
12457
12458 A remark is issued if the effective compile-time length of a package or
12459 buffer is zero. Previously, this was a warning.
12460
12461 ----------------------------------------
12462 16 September 2005. Summary of changes for version 20050916:
12463
12464 1) ACPI CA Core Subsystem:
12465
12466 Fixed a problem within the Resource Manager where support for the Generic
12467 Register descriptor was not fully implemented. This descriptor is now
12468 fully
12469 recognized, parsed, disassembled, and displayed.
12470
12471 Completely restructured the Resource Manager code to utilize table-driven
12472 dispatch and lookup, eliminating many of the large switch() statements.
12473 This
12474 reduces overall subsystem code size and code complexity. Affects the
12475 resource parsing and construction, disassembly, and debug dump output.
12476
12477 Cleaned up and restructured the debug dump output for all resource
12478 descriptors. Improved readability of the output and reduced code size.
12479
12480 Fixed a problem where changes to internal data structures caused the
12481 optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
12482
12483 Code and Data Size: The current and previous library sizes for the core
12484 subsystem are shown below. These are the code and data sizes for the
12485 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12486 These
12487 values do not include any ACPI driver or OSPM code. The debug version of
12488 the
12489 code includes the debug output trace mechanism and has a much larger code
12490 and data size. Note that these values will vary depending on the
12491 efficiency
12492 of the compiler and the compiler options used during generation.
12493
12494 Previous Release:
12495 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total
12496 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total
12497 Current Release:
12498 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total
12499 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total
12500
12501
12502 2) iASL Compiler/Disassembler:
12503
12504 Updated the disassembler to automatically insert an EndDependentFn()
12505 macro
12506 into the ASL stream if this macro is missing in the original AML code,
12507 simplifying compilation of the resulting ASL module.
12508
12509 Fixed a problem in the disassembler where a disassembled ResourceSource
12510 string (within a large resource descriptor) was not surrounded by quotes
12511 and
12512 not followed by a comma, causing errors when the resulting ASL module was
12513 compiled. Also, escape sequences within a ResourceSource string are now
12514 handled correctly (especially "\\")
12515
12516 ----------------------------------------
12517 02 September 2005. Summary of changes for version 20050902:
12518
12519 1) ACPI CA Core Subsystem:
12520
12521 Fixed a problem with the internal Owner ID allocation and deallocation
12522 mechanisms for control method execution and recursive method invocation.
12523 This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
12524 messages seen on some systems. Recursive method invocation depth is
12525 currently limited to 255. (Alexey Starikovskiy)
12526
12527 Completely eliminated all vestiges of support for the "module-level
12528 executable code" until this support is fully implemented and debugged.
12529 This
12530 should eliminate the NO_RETURN_VALUE exceptions seen during table load on
12531 some systems that invoke this support.
12532
12533 Fixed a problem within the resource manager code where the transaction
12534 flags
12535 for a 64-bit address descriptor were handled incorrectly in the type-
12536 specific flag byte.
12537
12538 Consolidated duplicate code within the address descriptor resource
12539 manager
12540 code, reducing overall subsystem code size.
12541
12542 Fixed a fault when using the AML debugger "disassemble" command to
12543 disassemble individual control methods.
12544
12545 Removed references to the "release_current" directory within the Unix
12546 release package.
12547
12548 Code and Data Size: The current and previous core subsystem library sizes
12549 are shown below. These are the code and data sizes for the acpica.lib
12550 produced by the Microsoft Visual C++ 6.0 compiler. These values do not
12551 include any ACPI driver or OSPM code. The debug version of the code
12552 includes
12553 the debug output trace mechanism and has a much larger code and data
12554 size.
12555 Note that these values will vary depending on the efficiency of the
12556 compiler
12557 and the compiler options used during generation.
12558
12559 Previous Release:
12560 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
12561 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total
12562 Current Release:
12563 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total
12564 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total
12565
12566
12567 2) iASL Compiler/Disassembler:
12568
12569 Implemented an error check for illegal duplicate values in the interrupt
12570 and
12571 dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
12572 Interrupt().
12573
12574 Implemented error checking for the Irq() and IrqNoFlags() macros to
12575 detect
12576 too many values in the interrupt list (16 max) and invalid values in the
12577 list (range 0 - 15)
12578
12579 The maximum length string literal within an ASL file is now restricted to
12580 200 characters as per the ACPI specification.
12581
12582 Fixed a fault when using the -ln option (generate namespace listing).
12583
12584 Implemented an error check to determine if a DescriptorName within a
12585 resource descriptor has already been used within the current scope.
12586
12587 ----------------------------------------
12588 15 August 2005. Summary of changes for version 20050815:
12589
12590 1) ACPI CA Core Subsystem:
12591
12592 Implemented a full bytewise compare to determine if a table load request
12593 is
12594 attempting to load a duplicate table. The compare is performed if the
12595 table
12596 signatures and table lengths match. This will allow different tables with
12597 the same OEM Table ID and revision to be loaded - probably against the
12598 ACPI
12599 specification, but discovered in the field nonetheless.
12600
12601 Added the changes.txt logfile to each of the zipped release packages.
12602
12603 Code and Data Size: Current and previous core subsystem library sizes are
12604 shown below. These are the code and data sizes for the acpica.lib
12605 produced
12606 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12607 any ACPI driver or OSPM code. The debug version of the code includes the
12608 debug output trace mechanism and has a much larger code and data size.
12609 Note
12610 that these values will vary depending on the efficiency of the compiler
12611 and
12612 the compiler options used during generation.
12613
12614 Previous Release:
12615 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
12616 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total
12617 Current Release:
12618 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
12619 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total
12620
12621
12622 2) iASL Compiler/Disassembler:
12623
12624 Fixed a problem where incorrect AML code could be generated for Package
12625 objects if optimization is disabled (via the -oa switch).
12626
12627 Fixed a problem with where incorrect AML code is generated for variable-
12628 length packages when the package length is not specified and the number
12629 of
12630 initializer values is greater than 255.
12631
12632
12633 ----------------------------------------
12634 29 July 2005. Summary of changes for version 20050729:
12635
12636 1) ACPI CA Core Subsystem:
12637
12638 Implemented support to ignore an attempt to install/load a particular
12639 ACPI
12640 table more than once. Apparently there exists BIOS code that repeatedly
12641 attempts to load the same SSDT upon certain events. With assistance from
12642 Venkatesh Pallipadi.
12643
12644 Restructured the main interface to the AML parser in order to correctly
12645 handle all exceptional conditions. This will prevent leakage of the
12646 OwnerId
12647 resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
12648 some
12649 machines. With assistance from Alexey Starikovskiy.
12650
12651 Support for "module level code" has been disabled in this version due to
12652 a
12653 number of issues that have appeared on various machines. The support can
12654 be
12655 enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
12656 compilation. When the issues are fully resolved, the code will be enabled
12657 by
12658 default again.
12659
12660 Modified the internal functions for debug print support to define the
12661 FunctionName parameter as a (const char *) for compatibility with
12662 compiler
12663 built-in macros such as __FUNCTION__, etc.
12664
12665 Linted the entire ACPICA source tree for both 32-bit and 64-bit.
12666
12667 Implemented support to display an object count summary for the AML
12668 Debugger
12669 commands Object and Methods.
12670
12671 Code and Data Size: Current and previous core subsystem library sizes are
12672 shown below. These are the code and data sizes for the acpica.lib
12673 produced
12674 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12675 any ACPI driver or OSPM code. The debug version of the code includes the
12676 debug output trace mechanism and has a much larger code and data size.
12677 Note
12678 that these values will vary depending on the efficiency of the compiler
12679 and
12680 the compiler options used during generation.
12681
12682 Previous Release:
12683 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total
12684 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total
12685 Current Release:
12686 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
12687 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total
12688
12689
12690 2) iASL Compiler/Disassembler:
12691
12692 Fixed a regression that appeared in the 20050708 version of the compiler
12693 where an error message was inadvertently emitted for invocations of the
12694 _OSI
12695 reserved control method.
12696
12697 ----------------------------------------
12698 08 July 2005. Summary of changes for version 20050708:
12699
12700 1) ACPI CA Core Subsystem:
12701
12702 The use of the CPU stack in the debug version of the subsystem has been
12703 considerably reduced. Previously, a debug structure was declared in every
12704 function that used the debug macros. This structure has been removed in
12705 favor of declaring the individual elements as parameters to the debug
12706 functions. This reduces the cumulative stack use during nested execution
12707 of
12708 ACPI function calls at the cost of a small increase in the code size of
12709 the
12710 debug version of the subsystem. With assistance from Alexey Starikovskiy
12711 and
12712 Len Brown.
12713
12714 Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
12715 headers to define a macro that will return the current function name at
12716 runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
12717 by
12718 the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
12719 compiler-dependent header, the function name is saved on the CPU stack
12720 (one
12721 pointer per function.) This mechanism is used because apparently there
12722 exists no standard ANSI-C defined macro that that returns the function
12723 name.
12724
12725 Redesigned and reimplemented the "Owner ID" mechanism used to track
12726 namespace objects created/deleted by ACPI tables and control method
12727 execution. A bitmap is now used to allocate and free the IDs, thus
12728 solving
12729 the wraparound problem present in the previous implementation. The size
12730 of
12731 the namespace node descriptor was reduced by 2 bytes as a result (Alexey
12732 Starikovskiy).
12733
12734 Removed the UINT32_BIT and UINT16_BIT types that were used for the
12735 bitfield
12736 flag definitions within the headers for the predefined ACPI tables. These
12737 have been replaced by UINT8_BIT in order to increase the code portability
12738 of
12739 the subsystem. If the use of UINT8 remains a problem, we may be forced to
12740 eliminate bitfields entirely because of a lack of portability.
12741
12742 Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
12743 This
12744 is a frequently used function and this improvement increases the
12745 performance
12746 of the entire subsystem (Alexey Starikovskiy).
12747
12748 Fixed several possible memory leaks and the inverse - premature object
12749 deletion (Alexey Starikovskiy).
12750
12751 Code and Data Size: Current and previous core subsystem library sizes are
12752 shown below. These are the code and data sizes for the acpica.lib
12753 produced
12754 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12755 any ACPI driver or OSPM code. The debug version of the code includes the
12756 debug output trace mechanism and has a much larger code and data size.
12757 Note
12758 that these values will vary depending on the efficiency of the compiler
12759 and
12760 the compiler options used during generation.
12761
12762 Previous Release:
12763 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total
12764 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total
12765 Current Release:
12766 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total
12767 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total
12768
12769 ----------------------------------------
12770 24 June 2005. Summary of changes for version 20050624:
12771
12772 1) ACPI CA Core Subsystem:
12773
12774 Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
12775 the host-defined cache object. This allows the OSL implementation to
12776 define
12777 and type this object in any manner desired, simplifying the OSL
12778 implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
12779 Linux, and should be defined in the OS-specific header file for other
12780 operating systems as required.
12781
12782 Changed the interface to AcpiOsAcquireObject to directly return the
12783 requested object as the function return (instead of ACPI_STATUS.) This
12784 change was made for performance reasons, since this is the purpose of the
12785 interface in the first place. AcpiOsAcquireObject is now similar to the
12786 AcpiOsAllocate interface.
12787
12788 Implemented a new AML debugger command named Businfo. This command
12789 displays
12790 information about all devices that have an associate _PRT object. The
12791 _ADR,
12792 _HID, _UID, and _CID are displayed for these devices.
12793
12794 Modified the initialization sequence in AcpiInitializeSubsystem to call
12795 the
12796 OSL interface AcpiOslInitialize first, before any local initialization.
12797 This
12798 change was required because the global initialization now calls OSL
12799 interfaces.
12800
12801 Enhanced the Dump command to display the entire contents of Package
12802 objects
12803 (including all sub-objects and their values.)
12804
12805 Restructured the code base to split some files because of size and/or
12806 because the code logically belonged in a separate file. New files are
12807 listed
12808 below. All makefiles and project files included in the ACPI CA release
12809 have
12810 been updated.
12811 utilities/utcache.c /* Local cache interfaces */
12812 utilities/utmutex.c /* Local mutex support */
12813 utilities/utstate.c /* State object support */
12814 interpreter/parser/psloop.c /* Main AML parse loop */
12815
12816 Code and Data Size: Current and previous core subsystem library sizes are
12817 shown below. These are the code and data sizes for the acpica.lib
12818 produced
12819 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12820 any ACPI driver or OSPM code. The debug version of the code includes the
12821 debug output trace mechanism and has a much larger code and data size.
12822 Note
12823 that these values will vary depending on the efficiency of the compiler
12824 and
12825 the compiler options used during generation.
12826
12827 Previous Release:
12828 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total
12829 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total
12830 Current Release:
12831 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total
12832 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total
12833
12834
12835 2) iASL Compiler/Disassembler:
12836
12837 Fixed a regression introduced in version 20050513 where the use of a
12838 Package
12839 object within a Case() statement caused a compile time exception. The
12840 original behavior has been restored (a Match() operator is emitted.)
12841
12842 ----------------------------------------
12843 17 June 2005. Summary of changes for version 20050617:
12844
12845 1) ACPI CA Core Subsystem:
12846
12847 Moved the object cache operations into the OS interface layer (OSL) to
12848 allow
12849 the host OS to handle these operations if desired (for example, the Linux
12850 OSL will invoke the slab allocator). This support is optional; the
12851 compile
12852 time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
12853 cache
12854 code in the ACPI CA core. The new OSL interfaces are shown below. See
12855 utalloc.c for an example implementation, and acpiosxf.h for the exact
12856 interface definitions. With assistance from Alexey Starikovskiy.
12857 AcpiOsCreateCache
12858 AcpiOsDeleteCache
12859 AcpiOsPurgeCache
12860 AcpiOsAcquireObject
12861 AcpiOsReleaseObject
12862
12863 Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
12864 return
12865 and restore a flags parameter. This fits better with many OS lock models.
12866 Note: the current execution state (interrupt handler or not) is no longer
12867 passed to these interfaces. If necessary, the OSL must determine this
12868 state
12869 by itself, a simple and fast operation. With assistance from Alexey
12870 Starikovskiy.
12871
12872 Fixed a problem in the ACPI table handling where a valid XSDT was assumed
12873 present if the revision of the RSDP was 2 or greater. According to the
12874 ACPI
12875 specification, the XSDT is optional in all cases, and the table manager
12876 therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
12877 Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
12878 contain
12879 only the RSDT.
12880
12881 Fixed an interpreter problem with the Mid() operator in the case of an
12882 input
12883 string where the resulting output string is of zero length. It now
12884 correctly
12885 returns a valid, null terminated string object instead of a string object
12886 with a null pointer.
12887
12888 Fixed a problem with the control method argument handling to allow a
12889 store
12890 to an Arg object that already contains an object of type Device. The
12891 Device
12892 object is now correctly overwritten. Previously, an error was returned.
12893
12894
12895 Enhanced the debugger Find command to emit object values in addition to
12896 the
12897 found object pathnames. The output format is the same as the dump
12898 namespace
12899 command.
12900
12901 Enhanced the debugger Set command. It now has the ability to set the
12902 value
12903 of any Named integer object in the namespace (Previously, only method
12904 locals
12905 and args could be set.)
12906
12907 Code and Data Size: Current and previous core subsystem library sizes are
12908 shown below. These are the code and data sizes for the acpica.lib
12909 produced
12910 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12911 any ACPI driver or OSPM code. The debug version of the code includes the
12912 debug output trace mechanism and has a much larger code and data size.
12913 Note
12914 that these values will vary depending on the efficiency of the compiler
12915 and
12916 the compiler options used during generation.
12917
12918 Previous Release:
12919 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total
12920 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total
12921 Current Release:
12922 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total
12923 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total
12924
12925
12926 2) iASL Compiler/Disassembler:
12927
12928 Fixed a regression in the disassembler where if/else/while constructs
12929 were
12930 output incorrectly. This problem was introduced in the previous release
12931 (20050526). This problem also affected the single-step disassembly in the
12932 debugger.
12933
12934 Fixed a problem where compiling the reserved _OSI method would randomly
12935 (but
12936 rarely) produce compile errors.
12937
12938 Enhanced the disassembler to emit compilable code in the face of
12939 incorrect
12940 AML resource descriptors. If the optional ResourceSourceIndex is present,
12941 but the ResourceSource is not, do not emit the ResourceSourceIndex in the
12942 disassembly. Otherwise, the resulting code cannot be compiled without
12943 errors.
12944
12945 ----------------------------------------
12946 26 May 2005. Summary of changes for version 20050526:
12947
12948 1) ACPI CA Core Subsystem:
12949
12950 Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
12951 the module level (not within a control method.) These opcodes are
12952 executed
12953 exactly once at the time the table is loaded. This type of code was legal
12954 up
12955 until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
12956 in
12957 order to provide backwards compatibility with earlier BIOS
12958 implementations.
12959 This eliminates the "Encountered executable code at module level" warning
12960 that was previously generated upon detection of such code.
12961
12962 Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
12963 inadvertently be generated during the lookup of namespace objects in the
12964 second pass parse of ACPI tables and control methods. It appears that
12965 this
12966 problem could occur during the resolution of forward references to
12967 namespace
12968 objects.
12969
12970 Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
12971 corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
12972 allows the deadlock detection debug code to be compiled out in the normal
12973 case, improving mutex performance (and overall subsystem performance)
12974 considerably.
12975
12976 Implemented a handful of miscellaneous fixes for possible memory leaks on
12977 error conditions and error handling control paths. These fixes were
12978 suggested by FreeBSD and the Coverity Prevent source code analysis tool.
12979
12980 Added a check for a null RSDT pointer in AcpiGetFirmwareTable
12981 (tbxfroot.c)
12982 to prevent a fault in this error case.
12983
12984 Code and Data Size: Current and previous core subsystem library sizes are
12985 shown below. These are the code and data sizes for the acpica.lib
12986 produced
12987 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12988 any ACPI driver or OSPM code. The debug version of the code includes the
12989 debug output trace mechanism and has a much larger code and data size.
12990 Note
12991 that these values will vary depending on the efficiency of the compiler
12992 and
12993 the compiler options used during generation.
12994
12995 Previous Release:
12996 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
12997 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
12998 Current Release:
12999 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total
13000 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total
13001
13002
13003 2) iASL Compiler/Disassembler:
13004
13005 Implemented support to allow Type 1 and Type 2 ASL operators to appear at
13006 the module level (not within a control method.) These operators will be
13007 executed once at the time the table is loaded. This type of code was
13008 legal
13009 up until the release of ACPI 2.0B (2002) and is now supported by the iASL
13010 compiler in order to provide backwards compatibility with earlier BIOS
13011 ASL
13012 code.
13013
13014 The ACPI integer width (specified via the table revision ID or the -r
13015 override, 32 or 64 bits) is now used internally during compile-time
13016 constant
13017 folding to ensure that constants are truncated to 32 bits if necessary.
13018 Previously, the revision ID value was only emitted in the AML table
13019 header.
13020
13021 An error message is now generated for the Mutex and Method operators if
13022 the
13023 SyncLevel parameter is outside the legal range of 0 through 15.
13024
13025 Fixed a problem with the Method operator ParameterTypes list handling
13026 (ACPI
13027 3.0). Previously, more than 2 types or 2 arguments generated a syntax
13028 error.
13029 The actual underlying implementation of method argument typechecking is
13030 still under development, however.
13031
13032 ----------------------------------------
13033 13 May 2005. Summary of changes for version 20050513:
13034
13035 1) ACPI CA Core Subsystem:
13036
13037 Implemented support for PCI Express root bridges -- added support for
13038 device
13039 PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
13040
13041 The interpreter now automatically truncates incoming 64-bit constants to
13042 32
13043 bits if currently executing out of a 32-bit ACPI table (Revision < 2).
13044 This
13045 also affects the iASL compiler constant folding. (Note: as per below, the
13046 iASL compiler no longer allows 64-bit constants within 32-bit tables.)
13047
13048 Fixed a problem where string and buffer objects with "static" pointers
13049 (pointers to initialization data within an ACPI table) were not handled
13050 consistently. The internal object copy operation now always copies the
13051 data
13052 to a newly allocated buffer, regardless of whether the source object is
13053 static or not.
13054
13055 Fixed a problem with the FromBCD operator where an implicit result
13056 conversion was improperly performed while storing the result to the
13057 target
13058 operand. Since this is an "explicit conversion" operator, the implicit
13059 conversion should never be performed on the output.
13060
13061 Fixed a problem with the CopyObject operator where a copy to an existing
13062 named object did not always completely overwrite the existing object
13063 stored
13064 at name. Specifically, a buffer-to-buffer copy did not delete the
13065 existing
13066 buffer.
13067
13068 Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
13069 and
13070 structs for consistency.
13071
13072 Code and Data Size: Current and previous core subsystem library sizes are
13073 shown below. These are the code and data sizes for the acpica.lib
13074 produced
13075 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13076 any ACPI driver or OSPM code. The debug version of the code includes the
13077 debug output trace mechanism and has a much larger code and data size.
13078 Note
13079 that these values will vary depending on the efficiency of the compiler
13080 and
13081 the compiler options used during generation.
13082
13083 Previous Release:
13084 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
13085 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
13086 Current Release: (Same sizes)
13087 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
13088 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
13089
13090
13091 2) iASL Compiler/Disassembler:
13092
13093 The compiler now emits a warning if an attempt is made to generate a 64-
13094 bit
13095 integer constant from within a 32-bit ACPI table (Revision < 2). The
13096 integer
13097 is truncated to 32 bits.
13098
13099 Fixed a problem with large package objects: if the static length of the
13100 package is greater than 255, the "variable length package" opcode is
13101 emitted. Previously, this caused an error. This requires an update to the
13102 ACPI spec, since it currently (incorrectly) states that packages larger
13103 than
13104 255 elements are not allowed.
13105
13106 The disassembler now correctly handles variable length packages and
13107 packages
13108 larger than 255 elements.
13109
13110 ----------------------------------------
13111 08 April 2005. Summary of changes for version 20050408:
13112
13113 1) ACPI CA Core Subsystem:
13114
13115 Fixed three cases in the interpreter where an "index" argument to an ASL
13116 function was still (internally) 32 bits instead of the required 64 bits.
13117 This was the Index argument to the Index, Mid, and Match operators.
13118
13119 The "strupr" function is now permanently local (AcpiUtStrupr), since this
13120 is
13121 not a POSIX-defined function and not present in most kernel-level C
13122 libraries. All references to the C library strupr function have been
13123 removed
13124 from the headers.
13125
13126 Completed the deployment of static functions/prototypes. All prototypes
13127 with
13128 the static attribute have been moved from the headers to the owning C
13129 file.
13130
13131 Implemented an extract option (-e) for the AcpiBin utility (AML binary
13132 utility). This option allows the utility to extract individual ACPI
13133 tables
13134 from the output of AcpiDmp. It provides the same functionality of the
13135 acpixtract.pl perl script without the worry of setting the correct perl
13136 options. AcpiBin runs on Windows and has not yet been generated/validated
13137 in
13138 the Linux/Unix environment (but should be soon).
13139
13140 Updated and fixed the table dump option for AcpiBin (-d). This option
13141 converts a single ACPI table to a hex/ascii file, similar to the output
13142 of
13143 AcpiDmp.
13144
13145 Code and Data Size: Current and previous core subsystem library sizes are
13146 shown below. These are the code and data sizes for the acpica.lib
13147 produced
13148 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13149 any ACPI driver or OSPM code. The debug version of the code includes the
13150 debug output trace mechanism and has a much larger code and data size.
13151 Note
13152 that these values will vary depending on the efficiency of the compiler
13153 and
13154 the compiler options used during generation.
13155
13156 Previous Release:
13157 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total
13158 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total
13159 Current Release:
13160 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
13161 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
13162
13163
13164 2) iASL Compiler/Disassembler:
13165
13166 Disassembler fix: Added a check to ensure that the table length found in
13167 the
13168 ACPI table header within the input file is not longer than the actual
13169 input
13170 file size. This indicates some kind of file or table corruption.
13171
13172 ----------------------------------------
13173 29 March 2005. Summary of changes for version 20050329:
13174
13175 1) ACPI CA Core Subsystem:
13176
13177 An error is now generated if an attempt is made to create a Buffer Field
13178 of
13179 length zero (A CreateField with a length operand of zero.)
13180
13181 The interpreter now issues a warning whenever executable code at the
13182 module
13183 level is detected during ACPI table load. This will give some idea of the
13184 prevalence of this type of code.
13185
13186 Implemented support for references to named objects (other than control
13187 methods) within package objects.
13188
13189 Enhanced package object output for the debug object. Package objects are
13190 now
13191 completely dumped, showing all elements.
13192
13193 Enhanced miscellaneous object output for the debug object. Any object can
13194 now be written to the debug object (for example, a device object can be
13195 written, and the type of the object will be displayed.)
13196
13197 The "static" qualifier has been added to all local functions across both
13198 the
13199 core subsystem and the iASL compiler.
13200
13201 The number of "long" lines (> 80 chars) within the source has been
13202 significantly reduced, by about 1/3.
13203
13204 Cleaned up all header files to ensure that all CA/iASL functions are
13205 prototyped (even static functions) and the formatting is consistent.
13206
13207 Two new header files have been added, acopcode.h and acnames.h.
13208
13209 Removed several obsolete functions that were no longer used.
13210
13211 Code and Data Size: Current and previous core subsystem library sizes are
13212 shown below. These are the code and data sizes for the acpica.lib
13213 produced
13214 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13215 any ACPI driver or OSPM code. The debug version of the code includes the
13216 debug output trace mechanism and has a much larger code and data size.
13217 Note
13218 that these values will vary depending on the efficiency of the compiler
13219 and
13220 the compiler options used during generation.
13221
13222 Previous Release:
13223 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13224 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total
13225 Current Release:
13226 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total
13227 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total
13228
13229
13230
13231 2) iASL Compiler/Disassembler:
13232
13233 Fixed a problem with the resource descriptor generation/support. For the
13234 ResourceSourceIndex and the ResourceSource fields, both must be present,
13235 or
13236 both must be not present - can't have one without the other.
13237
13238 The compiler now returns non-zero from the main procedure if any errors
13239 have
13240 occurred during the compilation.
13241
13242
13243 ----------------------------------------
13244 09 March 2005. Summary of changes for version 20050309:
13245
13246 1) ACPI CA Core Subsystem:
13247
13248 The string-to-buffer implicit conversion code has been modified again
13249 after
13250 a change to the ACPI specification. In order to match the behavior of
13251 the
13252 other major ACPI implementation, the target buffer is no longer truncated
13253 if
13254 the source string is smaller than an existing target buffer. This change
13255 requires an update to the ACPI spec, and should eliminate the recent
13256 AE_AML_BUFFER_LIMIT issues.
13257
13258 The "implicit return" support was rewritten to a new algorithm that
13259 solves
13260 the general case. Rather than attempt to determine when a method is about
13261 to
13262 exit, the result of every ASL operator is saved momentarily until the
13263 very
13264 next ASL operator is executed. Therefore, no matter how the method exits,
13265 there will always be a saved implicit return value. This feature is only
13266 enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
13267 eliminate
13268 AE_AML_NO_RETURN_VALUE errors when enabled.
13269
13270 Implemented implicit conversion support for the predicate (operand) of
13271 the
13272 If, Else, and While operators. String and Buffer arguments are
13273 automatically
13274 converted to Integers.
13275
13276 Changed the string-to-integer conversion behavior to match the new ACPI
13277 errata: "If no integer object exists, a new integer is created. The ASCII
13278 string is interpreted as a hexadecimal constant. Each string character is
13279 interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
13280 with the first character as the most significant digit, and ending with
13281 the
13282 first non-hexadecimal character or end-of-string." This means that the
13283 first
13284 non-hex character terminates the conversion and this is the code that was
13285 changed.
13286
13287 Fixed a problem where the ObjectType operator would fail (fault) when
13288 used
13289 on an Index of a Package which pointed to a null package element. The
13290 operator now properly returns zero (Uninitialized) in this case.
13291
13292 Fixed a problem where the While operator used excessive memory by not
13293 properly popping the result stack during execution. There was no memory
13294 leak
13295 after execution, however. (Code provided by Valery Podrezov.)
13296
13297 Fixed a problem where references to control methods within Package
13298 objects
13299 caused the method to be invoked, instead of producing a reference object
13300 pointing to the method.
13301
13302 Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
13303 to
13304 improve performance and reduce code size. (Code provided by Alexey
13305 Starikovskiy.)
13306
13307 Code and Data Size: Current and previous core subsystem library sizes are
13308 shown below. These are the code and data sizes for the acpica.lib
13309 produced
13310 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13311 any ACPI driver or OSPM code. The debug version of the code includes the
13312 debug output trace mechanism and has a much larger code and data size.
13313 Note
13314 that these values will vary depending on the efficiency of the compiler
13315 and
13316 the compiler options used during generation.
13317
13318 Previous Release:
13319 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13320 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total
13321 Current Release:
13322 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13323 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total
13324
13325
13326 2) iASL Compiler/Disassembler:
13327
13328 Fixed a problem with the Return operator with no arguments. Since the AML
13329 grammar for the byte encoding requires an operand for the Return opcode,
13330 the
13331 compiler now emits a Return(Zero) for this case. An ACPI specification
13332 update has been written for this case.
13333
13334 For tables other than the DSDT, namepath optimization is automatically
13335 disabled. This is because SSDTs can be loaded anywhere in the namespace,
13336 the
13337 compiler has no knowledge of where, and thus cannot optimize namepaths.
13338
13339 Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
13340 inadvertently omitted from the ACPI specification, and will require an
13341 update to the spec.
13342
13343 The source file scan for ASCII characters is now optional (-a). This
13344 change
13345 was made because some vendors place non-ascii characters within comments.
13346 However, the scan is simply a brute-force byte compare to ensure all
13347 characters in the file are in the range 0x00 to 0x7F.
13348
13349 Fixed a problem with the CondRefOf operator where the compiler was
13350 inappropriately checking for the existence of the target. Since the point
13351 of
13352 the operator is to check for the existence of the target at run-time, the
13353 compiler no longer checks for the target existence.
13354
13355 Fixed a problem where errors generated from the internal AML interpreter
13356 during constant folding were not handled properly, causing a fault.
13357
13358 Fixed a problem with overly aggressive range checking for the Stall
13359 operator. The valid range (max 255) is now only checked if the operand is
13360 of
13361 type Integer. All other operand types cannot be statically checked.
13362
13363 Fixed a problem where control method references within the RefOf,
13364 DeRefOf,
13365 and ObjectType operators were not treated properly. They are now treated
13366 as
13367 actual references, not method invocations.
13368
13369 Fixed and enhanced the "list namespace" option (-ln). This option was
13370 broken
13371 a number of releases ago.
13372
13373 Improved error handling for the Field, IndexField, and BankField
13374 operators.
13375 The compiler now cleanly reports and recovers from errors in the field
13376 component (FieldUnit) list.
13377
13378 Fixed a disassembler problem where the optional ResourceDescriptor fields
13379 TRS and TTP were not always handled correctly.
13380
13381 Disassembler - Comments in output now use "//" instead of "/*"
13382
13383 ----------------------------------------
13384 28 February 2005. Summary of changes for version 20050228:
13385
13386 1) ACPI CA Core Subsystem:
13387
13388 Fixed a problem where the result of an Index() operator (an object
13389 reference) must increment the reference count on the target object for
13390 the
13391 life of the object reference.
13392
13393 Implemented AML Interpreter and Debugger support for the new ACPI 3.0
13394 Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
13395 WordSpace
13396 resource descriptors.
13397
13398 Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
13399 Space Descriptor" string, indicating interpreter support for the
13400 descriptors
13401 above.
13402
13403 Implemented header support for the new ACPI 3.0 FADT flag bits.
13404
13405 Implemented header support for the new ACPI 3.0 PCI Express bits for the
13406 PM1
13407 status/enable registers.
13408
13409 Updated header support for the MADT processor local Apic struct and MADT
13410 platform interrupt source struct for new ACPI 3.0 fields.
13411
13412 Implemented header support for the SRAT and SLIT ACPI tables.
13413
13414 Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
13415 flag
13416 at runtime.
13417
13418 Code and Data Size: Current and previous core subsystem library sizes are
13419 shown below. These are the code and data sizes for the acpica.lib
13420 produced
13421 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13422 any ACPI driver or OSPM code. The debug version of the code includes the
13423 debug output trace mechanism and has a much larger code and data size.
13424 Note
13425 that these values will vary depending on the efficiency of the compiler
13426 and
13427 the compiler options used during generation.
13428
13429 Previous Release:
13430 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total
13431 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total
13432 Current Release:
13433 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13434 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total
13435
13436
13437 2) iASL Compiler/Disassembler:
13438
13439 Fixed a problem with the internal 64-bit String-to-integer conversion
13440 with
13441 strings less than two characters long.
13442
13443 Fixed a problem with constant folding where the result of the Index()
13444 operator can not be considered a constant. This means that Index() cannot
13445 be
13446 a type3 opcode and this will require an update to the ACPI specification.
13447
13448 Disassembler: Implemented support for the TTP, MTP, and TRS resource
13449 descriptor fields. These fields were inadvertently ignored and not output
13450 in
13451 the disassembly of the resource descriptor.
13452
13453
13454 ----------------------------------------
13455 11 February 2005. Summary of changes for version 20050211:
13456
13457 1) ACPI CA Core Subsystem:
13458
13459 Implemented ACPI 3.0 support for implicit conversion within the Match()
13460 operator. MatchObjects can now be of type integer, buffer, or string
13461 instead
13462 of just type integer. Package elements are implicitly converted to the
13463 type
13464 of the MatchObject. This change aligns the behavior of Match() with the
13465 behavior of the other logical operators (LLess(), etc.) It also requires
13466 an
13467 errata change to the ACPI specification as this support was intended for
13468 ACPI 3.0, but was inadvertently omitted.
13469
13470 Fixed a problem with the internal implicit "to buffer" conversion.
13471 Strings
13472 that are converted to buffers will cause buffer truncation if the string
13473 is
13474 smaller than the target buffer. Integers that are converted to buffers
13475 will
13476 not cause buffer truncation, only zero extension (both as per the ACPI
13477 spec.) The problem was introduced when code was added to truncate the
13478 buffer, but this should not be performed in all cases, only the string
13479 case.
13480
13481 Fixed a problem with the Buffer and Package operators where the
13482 interpreter
13483 would get confused if two such operators were used as operands to an ASL
13484 operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
13485 stack was not being popped after the execution of these operators,
13486 resulting
13487 in an AE_NO_RETURN_VALUE exception.
13488
13489 Fixed a problem with constructs of the form Store(Index(...),...). The
13490 reference object returned from Index was inadvertently resolved to an
13491 actual
13492 value. This problem was introduced in version 20050114 when the behavior
13493 of
13494 Store() was modified to restrict the object types that can be used as the
13495 source operand (to match the ACPI specification.)
13496
13497 Reduced excessive stack use within the AcpiGetObjectInfo procedure.
13498
13499 Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
13500
13501 Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
13502
13503 Code and Data Size: Current and previous core subsystem library sizes are
13504 shown below. These are the code and data sizes for the acpica.lib
13505 produced
13506 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13507 any ACPI driver or OSPM code. The debug version of the code includes the
13508 debug output trace mechanism and has a much larger code and data size.
13509 Note
13510 that these values will vary depending on the efficiency of the compiler
13511 and
13512 the compiler options used during generation.
13513
13514 Previous Release:
13515 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total
13516 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total
13517 Current Release:
13518 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total
13519 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total
13520
13521
13522 2) iASL Compiler/Disassembler:
13523
13524 Fixed a code generation problem in the constant folding optimization code
13525 where incorrect code was generated if a constant was reduced to a buffer
13526 object (i.e., a reduced type 5 opcode.)
13527
13528 Fixed a typechecking problem for the ToBuffer operator. Caused by an
13529 incorrect return type in the internal opcode information table.
13530
13531 ----------------------------------------
13532 25 January 2005. Summary of changes for version 20050125:
13533
13534 1) ACPI CA Core Subsystem:
13535
13536 Fixed a recently introduced problem with the Global Lock where the
13537 underlying semaphore was not created. This problem was introduced in
13538 version 20050114, and caused an AE_AML_NO_OPERAND exception during an
13539 Acquire() operation on _GL.
13540
13541 The local object cache is now optional, and is disabled by default. Both
13542 AcpiExec and the iASL compiler enable the cache because they run in user
13543 mode and this enhances their performance. #define
13544 ACPI_ENABLE_OBJECT_CACHE
13545 to enable the local cache.
13546
13547 Fixed an issue in the internal function AcpiUtEvaluateObject concerning
13548 the
13549 optional "implicit return" support where an error was returned if no
13550 return
13551 object was expected, but one was implicitly returned. AE_OK is now
13552 returned
13553 in this case and the implicitly returned object is deleted.
13554 AcpiUtEvaluateObject is only occasionally used, and only to execute
13555 reserved
13556 methods such as _STA and _INI where the return type is known up front.
13557
13558 Fixed a few issues with the internal convert-to-integer code. It now
13559 returns
13560 an error if an attempt is made to convert a null string, a string of only
13561 blanks/tabs, or a zero-length buffer. This affects both implicit
13562 conversion
13563 and explicit conversion via the ToInteger() operator.
13564
13565 The internal debug code in AcpiUtAcquireMutex has been commented out. It
13566 is
13567 not needed for normal operation and should increase the performance of
13568 the
13569 entire subsystem. The code remains in case it is needed for debug
13570 purposes
13571 again.
13572
13573 The AcpiExec source and makefile are included in the Unix/Linux package
13574 for
13575 the first time.
13576
13577 Code and Data Size: Current and previous core subsystem library sizes are
13578 shown below. These are the code and data sizes for the acpica.lib
13579 produced
13580 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13581 any ACPI driver or OSPM code. The debug version of the code includes the
13582 debug output trace mechanism and has a much larger code and data size.
13583 Note
13584 that these values will vary depending on the efficiency of the compiler
13585 and
13586 the compiler options used during generation.
13587
13588 Previous Release:
13589 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total
13590 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total
13591 Current Release:
13592 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total
13593 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total
13594
13595 2) iASL Compiler/Disassembler:
13596
13597 Switch/Case support: A warning is now issued if the type of the Switch
13598 value
13599 cannot be determined at compile time. For example, Switch(Arg0) will
13600 generate the warning, and the type is assumed to be an integer. As per
13601 the
13602 ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
13603 the
13604 warning.
13605
13606 Switch/Case support: Implemented support for buffer and string objects as
13607 the switch value. This is an ACPI 3.0 feature, now that LEqual supports
13608 buffers and strings.
13609
13610 Switch/Case support: The emitted code for the LEqual() comparisons now
13611 uses
13612 the switch value as the first operand, not the second. The case value is
13613 now
13614 the second operand, and this allows the case value to be implicitly
13615 converted to the type of the switch value, not the other way around.
13616
13617 Switch/Case support: Temporary variables are now emitted immediately
13618 within
13619 the control method, not at the global level. This means that there are
13620 now
13621 36 temps available per-method, not 36 temps per-module as was the case
13622 with
13623 the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
13624
13625 ----------------------------------------
13626 14 January 2005. Summary of changes for version 20050114:
13627
13628 Added 2005 copyright to all module headers. This affects every module in
13629 the core subsystem, iASL compiler, and the utilities.
13630
13631 1) ACPI CA Core Subsystem:
13632
13633 Fixed an issue with the String-to-Buffer conversion code where the string
13634 null terminator was not included in the buffer after conversion, but
13635 there
13636 is existing ASL that assumes the string null terminator is included. This
13637 is
13638 the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
13639 introduced in the previous version when the code was updated to correctly
13640 set the converted buffer size as per the ACPI specification. The ACPI
13641 spec
13642 is ambiguous and will be updated to specify that the null terminator must
13643 be
13644 included in the converted buffer. This also affects the ToBuffer() ASL
13645 operator.
13646
13647 Fixed a problem with the Mid() ASL/AML operator where it did not work
13648 correctly on Buffer objects. Newly created sub-buffers were not being
13649 marked
13650 as initialized.
13651
13652
13653 Fixed a problem in AcpiTbFindTable where incorrect string compares were
13654 performed on the OemId and OemTableId table header fields. These fields
13655 are
13656 not null terminated, so strncmp is now used instead of strcmp.
13657
13658 Implemented a restriction on the Store() ASL/AML operator to align the
13659 behavior with the ACPI specification. Previously, any object could be
13660 used
13661 as the source operand. Now, the only objects that may be used are
13662 Integers,
13663 Buffers, Strings, Packages, Object References, and DDB Handles. If
13664 necessary, the original behavior can be restored by enabling the
13665 EnableInterpreterSlack flag.
13666
13667 Enhanced the optional "implicit return" support to allow an implicit
13668 return
13669 value from methods that are invoked externally via the AcpiEvaluateObject
13670 interface. This enables implicit returns from the _STA and _INI methods,
13671 for example.
13672
13673 Changed the Revision() ASL/AML operator to return the current version of
13674 the
13675 AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
13676 returned
13677 the supported ACPI version (This is the function of the _REV method).
13678
13679 Updated the _REV predefined method to return the currently supported
13680 version
13681 of ACPI, now 3.
13682
13683 Implemented batch mode option for the AcpiExec utility (-b).
13684
13685 Code and Data Size: Current and previous core subsystem library sizes are
13686 shown below. These are the code and data sizes for the acpica.lib
13687 produced
13688 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13689 any ACPI driver or OSPM code. The debug version of the code includes the
13690 debug output trace mechanism and has a much larger code and data size.
13691 Note
13692 that these values will vary depending on the efficiency of the compiler
13693 and
13694 the compiler options used during generation.
13695
13696 Previous Release:
13697 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13698 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total
13699 Current Release:
13700 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total
13701 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total
13702
13703 ----------------------------------------
13704 10 December 2004. Summary of changes for version 20041210:
13705
13706 ACPI 3.0 support is nearing completion in both the iASL compiler and the
13707 ACPI CA core subsystem.
13708
13709 1) ACPI CA Core Subsystem:
13710
13711 Fixed a problem in the ToDecimalString operator where the resulting
13712 string
13713 length was incorrectly calculated. The length is now calculated exactly,
13714 eliminating incorrect AE_STRING_LIMIT exceptions.
13715
13716 Fixed a problem in the ToHexString operator to allow a maximum 200
13717 character
13718 string to be produced.
13719
13720 Fixed a problem in the internal string-to-buffer and buffer-to-buffer
13721 copy
13722 routine where the length of the resulting buffer was not truncated to the
13723 new size (if the target buffer already existed).
13724
13725 Code and Data Size: Current and previous core subsystem library sizes are
13726 shown below. These are the code and data sizes for the acpica.lib
13727 produced
13728 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13729 any ACPI driver or OSPM code. The debug version of the code includes the
13730 debug output trace mechanism and has a much larger code and data size.
13731 Note
13732 that these values will vary depending on the efficiency of the compiler
13733 and
13734 the compiler options used during generation.
13735
13736 Previous Release:
13737 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13738 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total
13739 Current Release:
13740 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13741 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total
13742
13743
13744 2) iASL Compiler/Disassembler:
13745
13746 Implemented the new ACPI 3.0 resource template macros - DWordSpace,
13747 ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
13748 Includes support in the disassembler.
13749
13750 Implemented support for the new (ACPI 3.0) parameter to the Register
13751 macro,
13752 AccessSize.
13753
13754 Fixed a problem where the _HE resource name for the Interrupt macro was
13755 referencing bit 0 instead of bit 1.
13756
13757 Implemented check for maximum 255 interrupts in the Interrupt macro.
13758
13759 Fixed a problem with the predefined resource descriptor names where
13760 incorrect AML code was generated if the offset within the resource buffer
13761 was 0 or 1. The optimizer shortened the AML code to a single byte opcode
13762 but did not update the surrounding package lengths.
13763
13764 Changes to the Dma macro: All channels within the channel list must be
13765 in
13766 the range 0-7. Maximum 8 channels can be specified. BusMaster operand is
13767 optional (default is BusMaster).
13768
13769 Implemented check for maximum 7 data bytes for the VendorShort macro.
13770
13771 The ReadWrite parameter is now optional for the Memory32 and similar
13772 macros.
13773
13774 ----------------------------------------
13775 03 December 2004. Summary of changes for version 20041203:
13776
13777 1) ACPI CA Core Subsystem:
13778
13779 The low-level field insertion/extraction code (exfldio) has been
13780 completely
13781 rewritten to eliminate unnecessary complexity, bugs, and boundary
13782 conditions.
13783
13784 Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
13785 ToDecimalString
13786 operators where the input operand could be inadvertently deleted if no
13787 conversion was necessary (e.g., if the input to ToInteger was an Integer
13788 object.)
13789
13790 Fixed a problem with the ToDecimalString and ToHexString where an
13791 incorrect
13792 exception code was returned if the resulting string would be > 200 chars.
13793 AE_STRING_LIMIT is now returned.
13794
13795 Fixed a problem with the Concatenate operator where AE_OK was always
13796 returned, even if the operation failed.
13797
13798 Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
13799 semaphores to be allocated.
13800
13801 Code and Data Size: Current and previous core subsystem library sizes are
13802 shown below. These are the code and data sizes for the acpica.lib
13803 produced
13804 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13805 any ACPI driver or OSPM code. The debug version of the code includes the
13806 debug output trace mechanism and has a much larger code and data size.
13807 Note
13808 that these values will vary depending on the efficiency of the compiler
13809 and
13810 the compiler options used during generation.
13811
13812 Previous Release:
13813 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
13814 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
13815 Current Release:
13816 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13817 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total
13818
13819
13820 2) iASL Compiler/Disassembler:
13821
13822 Fixed typechecking for the ObjectType and SizeOf operators. Problem was
13823 recently introduced in 20041119.
13824
13825 Fixed a problem with the ToUUID macro where the upper nybble of each
13826 buffer
13827 byte was inadvertently set to zero.
13828
13829 ----------------------------------------
13830 19 November 2004. Summary of changes for version 20041119:
13831
13832 1) ACPI CA Core Subsystem:
13833
13834 Fixed a problem in the internal ConvertToInteger routine where new
13835 integers
13836 were not truncated to 32 bits for 32-bit ACPI tables. This routine
13837 converts
13838 buffers and strings to integers.
13839
13840 Implemented support to store a value to an Index() on a String object.
13841 This
13842 is an ACPI 2.0 feature that had not yet been implemented.
13843
13844 Implemented new behavior for storing objects to individual package
13845 elements
13846 (via the Index() operator). The previous behavior was to invoke the
13847 implicit
13848 conversion rules if an object was already present at the index. The new
13849 behavior is to simply delete any existing object and directly store the
13850 new
13851 object. Although the ACPI specification seems unclear on this subject,
13852 other
13853 ACPI implementations behave in this manner. (This is the root of the
13854 AE_BAD_HEX_CONSTANT issue.)
13855
13856 Modified the RSDP memory scan mechanism to support the extended checksum
13857 for
13858 ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
13859 RSDP signature is found with a valid checksum.
13860
13861 Code and Data Size: Current and previous core subsystem library sizes are
13862 shown below. These are the code and data sizes for the acpica.lib
13863 produced
13864 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13865 any ACPI driver or OSPM code. The debug version of the code includes the
13866 debug output trace mechanism and has a much larger code and data size.
13867 Note
13868 that these values will vary depending on the efficiency of the compiler
13869 and
13870 the compiler options used during generation.
13871
13872 Previous Release:
13873 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
13874 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
13875 Current Release:
13876 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
13877 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
13878
13879
13880 2) iASL Compiler/Disassembler:
13881
13882 Fixed a missing semicolon in the aslcompiler.y file.
13883
13884 ----------------------------------------
13885 05 November 2004. Summary of changes for version 20041105:
13886
13887 1) ACPI CA Core Subsystem:
13888
13889 Implemented support for FADT revision 2. This was an interim table
13890 (between
13891 ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
13892
13893 Implemented optional support to allow uninitialized LocalX and ArgX
13894 variables in a control method. The variables are initialized to an
13895 Integer
13896 object with a value of zero. This support is enabled by setting the
13897 AcpiGbl_EnableInterpreterSlack flag to TRUE.
13898
13899 Implemented support for Integer objects for the SizeOf operator. Either
13900 4
13901 or 8 is returned, depending on the current integer size (32-bit or 64-
13902 bit,
13903 depending on the parent table revision).
13904
13905 Fixed a problem in the implementation of the SizeOf and ObjectType
13906 operators
13907 where the operand was resolved to a value too early, causing incorrect
13908 return values for some objects.
13909
13910 Fixed some possible memory leaks during exceptional conditions.
13911
13912 Code and Data Size: Current and previous core subsystem library sizes are
13913 shown below. These are the code and data sizes for the acpica.lib
13914 produced
13915 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13916 any ACPI driver or OSPM code. The debug version of the code includes the
13917 debug output trace mechanism and has a much larger code and data size.
13918 Note
13919 that these values will vary depending on the efficiency of the compiler
13920 and
13921 the compiler options used during generation.
13922
13923 Previous Release:
13924 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
13925 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total
13926 Current Release:
13927 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
13928 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
13929
13930
13931 2) iASL Compiler/Disassembler:
13932
13933 Implemented support for all ACPI 3.0 reserved names and methods.
13934
13935 Implemented all ACPI 3.0 grammar elements in the front-end, including
13936 support for semicolons.
13937
13938 Implemented the ACPI 3.0 Function() and ToUUID() macros
13939
13940 Fixed a problem in the disassembler where a Scope() operator would not be
13941 emitted properly if the target of the scope was in another table.
13942
13943 ----------------------------------------
13944 15 October 2004. Summary of changes for version 20041015:
13945
13946 Note: ACPI CA is currently undergoing an in-depth and complete formal
13947 evaluation to test/verify the following areas. Other suggestions are
13948 welcome. This will result in an increase in the frequency of releases and
13949 the number of bug fixes in the next few months.
13950 - Functional tests for all ASL/AML operators
13951 - All implicit/explicit type conversions
13952 - Bit fields and operation regions
13953 - 64-bit math support and 32-bit-only "truncated" math support
13954 - Exceptional conditions, both compiler and interpreter
13955 - Dynamic object deletion and memory leaks
13956 - ACPI 3.0 support when implemented
13957 - External interfaces to the ACPI subsystem
13958
13959
13960 1) ACPI CA Core Subsystem:
13961
13962 Fixed two alignment issues on 64-bit platforms - within debug statements
13963 in
13964 AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
13965 Address
13966 field within the non-aligned ACPI generic address structure.
13967
13968 Fixed a problem in the Increment and Decrement operators where incorrect
13969 operand resolution could result in the inadvertent modification of the
13970 original integer when the integer is passed into another method as an
13971 argument and the arg is then incremented/decremented.
13972
13973 Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
13974 bit
13975 BCD number were truncated during conversion.
13976
13977 Fixed a problem in the ToDecimal operator where the length of the
13978 resulting
13979 string could be set incorrectly too long if the input operand was a
13980 Buffer
13981 object.
13982
13983 Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
13984 (0)
13985 within a buffer would prematurely terminate a compare between buffer
13986 objects.
13987
13988 Added a check for string overflow (>200 characters as per the ACPI
13989 specification) during the Concatenate operator with two string operands.
13990
13991 Code and Data Size: Current and previous core subsystem library sizes are
13992 shown below. These are the code and data sizes for the acpica.lib
13993 produced
13994 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13995 any ACPI driver or OSPM code. The debug version of the code includes the
13996 debug output trace mechanism and has a much larger code and data size.
13997 Note
13998 that these values will vary depending on the efficiency of the compiler
13999 and
14000 the compiler options used during generation.
14001
14002 Previous Release:
14003 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
14004 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total
14005 Current Release:
14006 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
14007 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total
14008
14009
14010
14011 2) iASL Compiler/Disassembler:
14012
14013 Allow the use of the ObjectType operator on uninitialized Locals and Args
14014 (returns 0 as per the ACPI specification).
14015
14016 Fixed a problem where the compiler would fault if there was a syntax
14017 error
14018 in the FieldName of all of the various CreateXXXField operators.
14019
14020 Disallow the use of lower case letters within the EISAID macro, as per
14021 the
14022 ACPI specification. All EISAID strings must be of the form "UUUNNNN"
14023 Where
14024 U is an uppercase letter and N is a hex digit.
14025
14026
14027 ----------------------------------------
14028 06 October 2004. Summary of changes for version 20041006:
14029
14030 1) ACPI CA Core Subsystem:
14031
14032 Implemented support for the ACPI 3.0 Timer operator. This ASL function
14033 implements a 64-bit timer with 100 nanosecond granularity.
14034
14035 Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
14036 implement the ACPI 3.0 Timer operator. This allows the host OS to
14037 implement
14038 the timer with the best clock available. Also, it keeps the core
14039 subsystem
14040 out of the clock handling business, since the host OS (usually) performs
14041 this function.
14042
14043 Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
14044 functions use a 64-bit address which is part of the packed ACPI Generic
14045 Address Structure. Since the structure is non-aligned, the alignment
14046 macros
14047 are now used to extract the address to a local variable before use.
14048
14049 Fixed a problem where the ToInteger operator assumed all input strings
14050 were
14051 hexadecimal. The operator now handles both decimal strings and hex
14052 strings
14053 (prefixed with "0x").
14054
14055 Fixed a problem where the string length in the string object created as a
14056 result of the internal ConvertToString procedure could be incorrect. This
14057 potentially affected all implicit conversions and also the
14058 ToDecimalString
14059 and ToHexString operators.
14060
14061 Fixed two problems in the ToString operator. If the length parameter was
14062 zero, an incorrect string object was created and the value of the input
14063 length parameter was inadvertently changed from zero to Ones.
14064
14065 Fixed a problem where the optional ResourceSource string in the
14066 ExtendedIRQ
14067 resource macro was ignored.
14068
14069 Simplified the interfaces to the internal division functions, reducing
14070 code
14071 size and complexity.
14072
14073 Code and Data Size: Current and previous core subsystem library sizes are
14074 shown below. These are the code and data sizes for the acpica.lib
14075 produced
14076 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14077 any ACPI driver or OSPM code. The debug version of the code includes the
14078 debug output trace mechanism and has a much larger code and data size.
14079 Note
14080 that these values will vary depending on the efficiency of the compiler
14081 and
14082 the compiler options used during generation.
14083
14084 Previous Release:
14085 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total
14086 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total
14087 Current Release:
14088 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
14089 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total
14090
14091
14092 2) iASL Compiler/Disassembler:
14093
14094 Implemented support for the ACPI 3.0 Timer operator.
14095
14096 Fixed a problem where the Default() operator was inadvertently ignored in
14097 a
14098 Switch/Case block. This was a problem in the translation of the Switch
14099 statement to If...Else pairs.
14100
14101 Added support to allow a standalone Return operator, with no parentheses
14102 (or
14103 operands).
14104
14105 Fixed a problem with code generation for the ElseIf operator where the
14106 translated Else...If parse tree was improperly constructed leading to the
14107 loss of some code.
14108
14109 ----------------------------------------
14110 22 September 2004. Summary of changes for version 20040922:
14111
14112 1) ACPI CA Core Subsystem:
14113
14114 Fixed a problem with the implementation of the LNot() operator where
14115 "Ones"
14116 was not returned for the TRUE case. Changed the code to return Ones
14117 instead
14118 of (!Arg) which was usually 1. This change affects iASL constant folding
14119 for
14120 this operator also.
14121
14122 Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
14123 not
14124 initialized properly -- Now zero the entire buffer in this case where the
14125 buffer already exists.
14126
14127 Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
14128 Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
14129 related code considerably. This will require changes/updates to all OS
14130 interface layers (OSLs.)
14131
14132 Implemented a new external interface, AcpiInstallExceptionHandler, to
14133 allow
14134 a system exception handler to be installed. This handler is invoked upon
14135 any
14136 run-time exception that occurs during control method execution.
14137
14138 Added support for the DSDT in AcpiTbFindTable. This allows the
14139 DataTableRegion() operator to access the local copy of the DSDT.
14140
14141 Code and Data Size: Current and previous core subsystem library sizes are
14142 shown below. These are the code and data sizes for the acpica.lib
14143 produced
14144 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14145 any ACPI driver or OSPM code. The debug version of the code includes the
14146 debug output trace mechanism and has a much larger code and data size.
14147 Note
14148 that these values will vary depending on the efficiency of the compiler
14149 and
14150 the compiler options used during generation.
14151
14152 Previous Release:
14153 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total
14154 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total
14155 Current Release:
14156 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total
14157 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total
14158
14159
14160 2) iASL Compiler/Disassembler:
14161
14162 Fixed a problem with constant folding and the LNot operator. LNot was
14163 returning 1 in the TRUE case, not Ones as per the ACPI specification.
14164 This
14165 could result in the generation of an incorrect folded/reduced constant.
14166
14167 End-Of-File is now allowed within a "//"-style comment. A parse error no
14168 longer occurs if such a comment is at the very end of the input ASL
14169 source
14170 file.
14171
14172 Implemented the "-r" option to override the Revision in the table header.
14173 The initial use of this option will be to simplify the evaluation of the
14174 AML
14175 interpreter by allowing a single ASL source module to be compiled for
14176 either
14177 32-bit or 64-bit integers.
14178
14179
14180 ----------------------------------------
14181 27 August 2004. Summary of changes for version 20040827:
14182
14183 1) ACPI CA Core Subsystem:
14184
14185 - Implemented support for implicit object conversion in the non-numeric
14186 logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
14187 and
14188 LNotEqual.) Any combination of Integers/Strings/Buffers may now be used;
14189 the second operand is implicitly converted on the fly to match the type
14190 of
14191 the first operand. For example:
14192
14193 LEqual (Source1, Source2)
14194
14195 Source1 and Source2 must each evaluate to an integer, a string, or a
14196 buffer.
14197 The data type of Source1 dictates the required type of Source2. Source2
14198 is
14199 implicitly converted if necessary to match the type of Source1.
14200
14201 - Updated and corrected the behavior of the string conversion support.
14202 The
14203 rules concerning conversion of buffers to strings (according to the ACPI
14204 specification) are as follows:
14205
14206 ToDecimalString - explicit byte-wise conversion of buffer to string of
14207 decimal values (0-255) separated by commas. ToHexString - explicit byte-
14208 wise
14209 conversion of buffer to string of hex values (0-FF) separated by commas.
14210 ToString - explicit byte-wise conversion of buffer to string. Byte-by-
14211 byte
14212 copy with no transform except NULL terminated. Any other implicit buffer-
14213 to-
14214 string conversion - byte-wise conversion of buffer to string of hex
14215 values
14216 (0-FF) separated by spaces.
14217
14218 - Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
14219
14220 - Fixed a problem in AcpiNsGetPathnameLength where the returned length
14221 was
14222 one byte too short in the case of a node in the root scope. This could
14223 cause a fault during debug output.
14224
14225 - Code and Data Size: Current and previous core subsystem library sizes
14226 are
14227 shown below. These are the code and data sizes for the acpica.lib
14228 produced
14229 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14230 any ACPI driver or OSPM code. The debug version of the code includes the
14231 debug output trace mechanism and has a much larger code and data size.
14232 Note
14233 that these values will vary depending on the efficiency of the compiler
14234 and
14235 the compiler options used during generation.
14236
14237 Previous Release:
14238 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total
14239 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total
14240 Current Release:
14241 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total
14242 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total
14243
14244
14245 2) iASL Compiler/Disassembler:
14246
14247 - Fixed a Linux generation error.
14248
14249
14250 ----------------------------------------
14251 16 August 2004. Summary of changes for version 20040816:
14252
14253 1) ACPI CA Core Subsystem:
14254
14255 Designed and implemented support within the AML interpreter for the so-
14256 called "implicit return". This support returns the result of the last
14257 ASL
14258 operation within a control method, in the absence of an explicit Return()
14259 operator. A few machines depend on this behavior, even though it is not
14260 explicitly supported by the ASL language. It is optional support that
14261 can
14262 be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
14263
14264 Removed support for the PCI_Config address space from the internal low
14265 level
14266 hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This
14267 support was not used internally, and would not work correctly anyway
14268 because
14269 the PCI bus number and segment number were not supported. There are
14270 separate interfaces for PCI configuration space access because of the
14271 unique
14272 interface.
14273
14274 Code and Data Size: Current and previous core subsystem library sizes are
14275 shown below. These are the code and data sizes for the acpica.lib
14276 produced
14277 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14278 any ACPI driver or OSPM code. The debug version of the code includes the
14279 debug output trace mechanism and has a much larger code and data size.
14280 Note
14281 that these values will vary depending on the efficiency of the compiler
14282 and
14283 the compiler options used during generation.
14284
14285 Previous Release:
14286 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
14287 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total
14288 Current Release:
14289 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total
14290 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total
14291
14292
14293 2) iASL Compiler/Disassembler:
14294
14295 Fixed a problem where constants in ASL expressions at the root level (not
14296 within a control method) could be inadvertently truncated during code
14297 generation. This problem was introduced in the 20040715 release.
14298
14299
14300 ----------------------------------------
14301 15 July 2004. Summary of changes for version 20040715:
14302
14303 1) ACPI CA Core Subsystem:
14304
14305 Restructured the internal HW GPE interfaces to pass/track the current
14306 state
14307 of interrupts (enabled/disabled) in order to avoid possible deadlock and
14308 increase flexibility of the interfaces.
14309
14310 Implemented a "lexicographical compare" for String and Buffer objects
14311 within
14312 the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
14313 -
14314 as per further clarification to the ACPI specification. Behavior is
14315 similar
14316 to C library "strcmp".
14317
14318 Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
14319 external function. In the 32-bit non-debug case, the stack use has been
14320 reduced from 168 bytes to 32 bytes.
14321
14322 Deployed a new run-time configuration flag,
14323 AcpiGbl_EnableInterpreterSlack,
14324 whose purpose is to allow the AML interpreter to forgive certain bad AML
14325 constructs. Default setting is FALSE.
14326
14327 Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
14328 IO
14329 support code. If enabled, it allows field access to go beyond the end of
14330 a
14331 region definition if the field is within the region length rounded up to
14332 the
14333 next access width boundary (a common coding error.)
14334
14335 Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
14336 ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also,
14337 these
14338 symbols are lowercase by the latest version of the AcpiSrc tool.
14339
14340 The prototypes for the PCI interfaces in acpiosxf.h have been updated to
14341 rename "Register" to simply "Reg" to prevent certain compilers from
14342 complaining.
14343
14344 Code and Data Size: Current and previous core subsystem library sizes are
14345 shown below. These are the code and data sizes for the acpica.lib
14346 produced
14347 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14348 any ACPI driver or OSPM code. The debug version of the code includes the
14349 debug output trace mechanism and has a much larger code and data size.
14350 Note
14351 that these values will vary depending on the efficiency of the compiler
14352 and
14353 the compiler options used during generation.
14354
14355 Previous Release:
14356 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
14357 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total
14358 Current Release:
14359 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
14360 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total
14361
14362
14363 2) iASL Compiler/Disassembler:
14364
14365 Implemented full support for Package objects within the Case() operator.
14366 Note: The Break() operator is currently not supported within Case blocks
14367 (TermLists) as there is some question about backward compatibility with
14368 ACPI
14369 1.0 interpreters.
14370
14371
14372 Fixed a problem where complex terms were not supported properly within
14373 the
14374 Switch() operator.
14375
14376 Eliminated extraneous warning for compiler-emitted reserved names of the
14377 form "_T_x". (Used in Switch/Case operators.)
14378
14379 Eliminated optimization messages for "_T_x" objects and small constants
14380 within the DefinitionBlock operator.
14381
14382
14383 ----------------------------------------
14384 15 June 2004. Summary of changes for version 20040615:
14385
14386 1) ACPI CA Core Subsystem:
14387
14388 Implemented support for Buffer and String objects (as per ACPI 2.0) for
14389 the
14390 following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and
14391 LLessEqual.
14392
14393 All directory names in the entire source package are lower case, as they
14394 were in earlier releases.
14395
14396 Implemented "Disassemble" command in the AML debugger that will
14397 disassemble
14398 a single control method.
14399
14400 Code and Data Size: Current and previous core subsystem library sizes are
14401 shown below. These are the code and data sizes for the acpica.lib
14402 produced
14403 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14404 any ACPI driver or OSPM code. The debug version of the code includes the
14405 debug output trace mechanism and has a much larger code and data size.
14406 Note
14407 that these values will vary depending on the efficiency of the compiler
14408 and
14409 the compiler options used during generation.
14410
14411 Previous Release:
14412 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total
14413 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total
14414
14415 Current Release:
14416 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
14417 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total
14418
14419
14420 2) iASL Compiler/Disassembler:
14421
14422 Implemented support for Buffer and String objects (as per ACPI 2.0) for
14423 the
14424 following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and
14425 LLessEqual.
14426
14427 All directory names in the entire source package are lower case, as they
14428 were in earlier releases.
14429
14430 Fixed a fault when using the -g or -d<nofilename> options if the FADT was
14431 not found.
14432
14433 Fixed an issue with the Windows version of the compiler where later
14434 versions
14435 of Windows place the FADT in the registry under the name "FADT" and not
14436 "FACP" as earlier versions did. This applies when using the -g or -
14437 d<nofilename> options. The compiler now looks for both strings as
14438 necessary.
14439
14440 Fixed a problem with compiler namepath optimization where a namepath
14441 within
14442 the Scope() operator could not be optimized if the namepath was a subpath
14443 of
14444 the current scope path.
14445
14446 ----------------------------------------
14447 27 May 2004. Summary of changes for version 20040527:
14448
14449 1) ACPI CA Core Subsystem:
14450
14451 Completed a new design and implementation for EBDA (Extended BIOS Data
14452 Area)
14453 support in the RSDP scan code. The original code improperly scanned for
14454 the
14455 EBDA by simply scanning from memory location 0 to 0x400. The correct
14456 method
14457 is to first obtain the EBDA pointer from within the BIOS data area, then
14458 scan 1K of memory starting at the EBDA pointer. There appear to be few
14459 if
14460 any machines that place the RSDP in the EBDA, however.
14461
14462 Integrated a fix for a possible fault during evaluation of BufferField
14463 arguments. Obsolete code that was causing the problem was removed.
14464
14465 Found and fixed a problem in the Field Support Code where data could be
14466 corrupted on a bit field read that starts on an aligned boundary but does
14467 not end on an aligned boundary. Merged the read/write "datum length"
14468 calculation code into a common procedure.
14469
14470 Rolled in a couple of changes to the FreeBSD-specific header.
14471
14472
14473 Code and Data Size: Current and previous core subsystem library sizes are
14474 shown below. These are the code and data sizes for the acpica.lib
14475 produced
14476 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14477 any ACPI driver or OSPM code. The debug version of the code includes the
14478 debug output trace mechanism and has a much larger code and data size.
14479 Note
14480 that these values will vary depending on the efficiency of the compiler
14481 and
14482 the compiler options used during generation.
14483
14484 Previous Release:
14485 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
14486 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total
14487 Current Release:
14488 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total
14489 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total
14490
14491
14492 2) iASL Compiler/Disassembler:
14493
14494 Fixed a generation warning produced by some overly-verbose compilers for
14495 a
14496 64-bit constant.
14497
14498 ----------------------------------------
14499 14 May 2004. Summary of changes for version 20040514:
14500
14501 1) ACPI CA Core Subsystem:
14502
14503 Fixed a problem where hardware GPE enable bits sometimes not set properly
14504 during and after GPE method execution. Result of 04/27 changes.
14505
14506 Removed extra "clear all GPEs" when sleeping/waking.
14507
14508 Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
14509 AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
14510 to
14511 the new AcpiEv* calls as appropriate.
14512
14513 ACPI_OS_NAME was removed from the OS-specific headers. The default name
14514 is
14515 now "Microsoft Windows NT" for maximum compatibility. However this can
14516 be
14517 changed by modifying the acconfig.h file.
14518
14519 Allow a single invocation of AcpiInstallNotifyHandler for a handler that
14520 traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag.
14521
14522 Run _INI methods on ThermalZone objects. This is against the ACPI
14523 specification, but there is apparently ASL code in the field that has
14524 these
14525 _INI methods, and apparently "other" AML interpreters execute them.
14526
14527 Performed a full 16/32/64 bit lint that resulted in some small changes.
14528
14529 Added a sleep simulation command to the AML debugger to test sleep code.
14530
14531 Code and Data Size: Current and previous core subsystem library sizes are
14532 shown below. These are the code and data sizes for the acpica.lib
14533 produced
14534 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14535 any ACPI driver or OSPM code. The debug version of the code includes the
14536 debug output trace mechanism and has a much larger code and data size.
14537 Note
14538 that these values will vary depending on the efficiency of the compiler
14539 and
14540 the compiler options used during generation.
14541
14542 Previous Release:
14543 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
14544 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total
14545 Current Release:
14546 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
14547 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total
14548
14549 ----------------------------------------
14550 27 April 2004. Summary of changes for version 20040427:
14551
14552 1) ACPI CA Core Subsystem:
14553
14554 Completed a major overhaul of the GPE handling within ACPI CA. There are
14555 now three types of GPEs: wake-only, runtime-only, and combination
14556 wake/run.
14557 The only GPEs allowed to be combination wake/run are for button-style
14558 devices such as a control-method power button, control-method sleep
14559 button,
14560 or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are
14561 not
14562 referenced by any _PRW methods are marked for "runtime" and hardware
14563 enabled. Any GPE that is referenced by a _PRW method is marked for
14564 "wake"
14565 (and disabled at runtime). However, at sleep time, only those GPEs that
14566 have been specifically enabled for wake via the AcpiEnableGpe interface
14567 will
14568 actually be hardware enabled.
14569
14570 A new external interface has been added, AcpiSetGpeType(), that is meant
14571 to
14572 be used by device drivers to force a GPE to a particular type. It will
14573 be
14574 especially useful for the drivers for the button devices mentioned above.
14575
14576 Completed restructuring of the ACPI CA initialization sequence so that
14577 default operation region handlers are installed before GPEs are
14578 initialized
14579 and the _PRW methods are executed. This will prevent errors when the
14580 _PRW
14581 methods attempt to access system memory or I/O space.
14582
14583 GPE enable/disable no longer reads the GPE enable register. We now keep
14584 the
14585 enable info for runtime and wake separate and in the GPE_EVENT_INFO. We
14586 thus no longer depend on the hardware to maintain these bits.
14587
14588 Always clear the wake status and fixed/GPE status bits before sleep, even
14589 for state S5.
14590
14591 Improved the AML debugger output for displaying the GPE blocks and their
14592 current status.
14593
14594 Added new strings for the _OSI method, of the form "Windows 2001 SPx"
14595 where
14596 x = 0,1,2,3,4.
14597
14598 Fixed a problem where the physical address was incorrectly calculated
14599 when
14600 the Load() operator was used to directly load from an Operation Region
14601 (vs.
14602 loading from a Field object.) Also added check for minimum table length
14603 for
14604 this case.
14605
14606 Fix for multiple mutex acquisition. Restore original thread SyncLevel on
14607 mutex release.
14608
14609 Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
14610 consistency with the other fields returned.
14611
14612 Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such
14613 structure for each GPE in the system, so the size of this structure is
14614 important.
14615
14616 CPU stack requirement reduction: Cleaned up the method execution and
14617 object
14618 evaluation paths so that now a parameter structure is passed, instead of
14619 copying the various method parameters over and over again.
14620
14621 In evregion.c: Correctly exit and reenter the interpreter region if and
14622 only if dispatching an operation region request to a user-installed
14623 handler.
14624 Do not exit/reenter when dispatching to a default handler (e.g., default
14625 system memory or I/O handlers)
14626
14627
14628 Notes for updating drivers for the new GPE support. The following
14629 changes
14630 must be made to ACPI-related device drivers that are attached to one or
14631 more
14632 GPEs: (This information will be added to the ACPI CA Programmer
14633 Reference.)
14634
14635 1) AcpiInstallGpeHandler no longer automatically enables the GPE, you
14636 must
14637 explicitly call AcpiEnableGpe.
14638 2) There is a new interface called AcpiSetGpeType. This should be called
14639 before enabling the GPE. Also, this interface will automatically disable
14640 the GPE if it is currently enabled.
14641 3) AcpiEnableGpe no longer supports a GPE type flag.
14642
14643 Specific drivers that must be changed:
14644 1) EC driver:
14645 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
14646 AeGpeHandler, NULL);
14647 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
14648 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
14649
14650 2) Button Drivers (Power, Lid, Sleep):
14651 Run _PRW method under parent device
14652 If _PRW exists: /* This is a control-method button */
14653 Extract GPE number and possibly GpeDevice
14654 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
14655 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
14656
14657 For all other devices that have _PRWs, we automatically set the GPE type
14658 to
14659 ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
14660 This
14661 must be done on a selective basis, usually requiring some kind of user
14662 app
14663 to allow the user to pick the wake devices.
14664
14665
14666 Code and Data Size: Current and previous core subsystem library sizes are
14667 shown below. These are the code and data sizes for the acpica.lib
14668 produced
14669 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14670 any ACPI driver or OSPM code. The debug version of the code includes the
14671 debug output trace mechanism and has a much larger code and data size.
14672 Note
14673 that these values will vary depending on the efficiency of the compiler
14674 and
14675 the compiler options used during generation.
14676
14677 Previous Release:
14678 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total
14679 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total
14680 Current Release:
14681
14682 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
14683 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total
14684
14685
14686
14687 ----------------------------------------
14688 02 April 2004. Summary of changes for version 20040402:
14689
14690 1) ACPI CA Core Subsystem:
14691
14692 Fixed an interpreter problem where an indirect store through an ArgX
14693 parameter was incorrectly applying the "implicit conversion rules" during
14694 the store. From the ACPI specification: "If the target is a method local
14695 or
14696 argument (LocalX or ArgX), no conversion is performed and the result is
14697 stored directly to the target". The new behavior is to disable implicit
14698 conversion during ALL stores to an ArgX.
14699
14700 Changed the behavior of the _PRW method scan to ignore any and all errors
14701 returned by a given _PRW. This prevents the scan from aborting from the
14702 failure of any single _PRW.
14703
14704 Moved the runtime configuration parameters from the global init procedure
14705 to
14706 static variables in acglobal.h. This will allow the host to override the
14707 default values easily.
14708
14709 Code and Data Size: Current and previous core subsystem library sizes are
14710 shown below. These are the code and data sizes for the acpica.lib
14711 produced
14712 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14713 any ACPI driver or OSPM code. The debug version of the code includes the
14714 debug output trace mechanism and has a much larger code and data size.
14715 Note
14716 that these values will vary depending on the efficiency of the compiler
14717 and
14718 the compiler options used during generation.
14719
14720 Previous Release:
14721 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total
14722 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total
14723 Current Release:
14724 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total
14725 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total
14726
14727
14728 2) iASL Compiler/Disassembler:
14729
14730 iASL now fully disassembles SSDTs. However, External() statements are
14731 not
14732 generated automatically for unresolved symbols at this time. This is a
14733 planned feature for future implementation.
14734
14735 Fixed a scoping problem in the disassembler that occurs when the type of
14736 the
14737 target of a Scope() operator is overridden. This problem caused an
14738 incorrectly nested internal namespace to be constructed.
14739
14740 Any warnings or errors that are emitted during disassembly are now
14741 commented
14742 out automatically so that the resulting file can be recompiled without
14743 any
14744 hand editing.
14745
14746 ----------------------------------------
14747 26 March 2004. Summary of changes for version 20040326:
14748
14749 1) ACPI CA Core Subsystem:
14750
14751 Implemented support for "wake" GPEs via interaction between GPEs and the
14752 _PRW methods. Every GPE that is pointed to by one or more _PRWs is
14753 identified as a WAKE GPE and by default will no longer be enabled at
14754 runtime. Previously, we were blindly enabling all GPEs with a
14755 corresponding
14756 _Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
14757 We
14758 believe this has been the cause of thousands of "spurious" GPEs on some
14759 systems.
14760
14761 This new GPE behavior is can be reverted to the original behavior (enable
14762 ALL GPEs at runtime) via a runtime flag.
14763
14764 Fixed a problem where aliased control methods could not access objects
14765 properly. The proper scope within the namespace was not initialized
14766 (transferred to the target of the aliased method) before executing the
14767 target method.
14768
14769 Fixed a potential race condition on internal object deletion on the
14770 return
14771 object in AcpiEvaluateObject.
14772
14773 Integrated a fix for resource descriptors where both _MEM and _MTP were
14774 being extracted instead of just _MEM. (i.e. bitmask was incorrectly too
14775 wide, 0x0F instead of 0x03.)
14776
14777 Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
14778 preventing
14779 a
14780 fault in some cases.
14781
14782 Updated Notify() values for debug statements in evmisc.c
14783
14784 Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
14785
14786 Code and Data Size: Current and previous core subsystem library sizes are
14787 shown below. These are the code and data sizes for the acpica.lib
14788 produced
14789 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14790 any ACPI driver or OSPM code. The debug version of the code includes the
14791 debug output trace mechanism and has a much larger code and data size.
14792 Note
14793 that these values will vary depending on the efficiency of the compiler
14794 and
14795 the compiler options used during generation.
14796
14797 Previous Release:
14798
14799 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total
14800 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total
14801 Current Release:
14802 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total
14803 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total
14804
14805 ----------------------------------------
14806 11 March 2004. Summary of changes for version 20040311:
14807
14808 1) ACPI CA Core Subsystem:
14809
14810 Fixed a problem where errors occurring during the parse phase of control
14811 method execution did not abort cleanly. For example, objects created and
14812 installed in the namespace were not deleted. This caused all subsequent
14813 invocations of the method to return the AE_ALREADY_EXISTS exception.
14814
14815 Implemented a mechanism to force a control method to "Serialized"
14816 execution
14817 if the method attempts to create namespace objects. (The root of the
14818 AE_ALREADY_EXISTS problem.)
14819
14820 Implemented support for the predefined _OSI "internal" control method.
14821 Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
14822 and
14823 "Windows 2001.1", and can be easily upgraded for new strings as
14824 necessary.
14825 This feature will allow "other" operating systems to execute the fully
14826 tested, "Windows" code path through the ASL code
14827
14828 Global Lock Support: Now allows multiple acquires and releases with any
14829 internal thread. Removed concept of "owning thread" for this special
14830 mutex.
14831
14832 Fixed two functions that were inappropriately declaring large objects on
14833 the
14834 CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage
14835 during
14836 method execution considerably.
14837
14838 Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
14839 S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
14840
14841 Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
14842 defined on the machine.
14843
14844 Implemented two runtime options: One to force all control method
14845 execution
14846 to "Serialized" to mimic Windows behavior, another to disable _OSI
14847 support
14848 if it causes problems on a given machine.
14849
14850 Code and Data Size: Current and previous core subsystem library sizes are
14851 shown below. These are the code and data sizes for the acpica.lib
14852 produced
14853 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14854 any ACPI driver or OSPM code. The debug version of the code includes the
14855 debug output trace mechanism and has a much larger code and data size.
14856 Note
14857 that these values will vary depending on the efficiency of the compiler
14858 and
14859 the compiler options used during generation.
14860
14861 Previous Release:
14862 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total
14863 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total
14864 Current Release:
14865 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total
14866 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total
14867
14868 2) iASL Compiler/Disassembler:
14869
14870 Fixed an array size problem for FreeBSD that would cause the compiler to
14871 fault.
14872
14873 ----------------------------------------
14874 20 February 2004. Summary of changes for version 20040220:
14875
14876
14877 1) ACPI CA Core Subsystem:
14878
14879 Implemented execution of _SxD methods for Device objects in the
14880 GetObjectInfo interface.
14881
14882 Fixed calls to _SST method to pass the correct arguments.
14883
14884 Added a call to _SST on wake to restore to "working" state.
14885
14886 Check for End-Of-Buffer failure case in the WalkResources interface.
14887
14888 Integrated fix for 64-bit alignment issue in acglobal.h by moving two
14889 structures to the beginning of the file.
14890
14891 After wake, clear GPE status register(s) before enabling GPEs.
14892
14893 After wake, clear/enable power button. (Perhaps we should clear/enable
14894 all
14895 fixed events upon wake.)
14896
14897 Fixed a couple of possible memory leaks in the Namespace manager.
14898
14899 Integrated latest acnetbsd.h file.
14900
14901 ----------------------------------------
14902 11 February 2004. Summary of changes for version 20040211:
14903
14904
14905 1) ACPI CA Core Subsystem:
14906
14907 Completed investigation and implementation of the call-by-reference
14908 mechanism for control method arguments.
14909
14910 Fixed a problem where a store of an object into an indexed package could
14911 fail if the store occurs within a different method than the method that
14912 created the package.
14913
14914 Fixed a problem where the ToDecimal operator could return incorrect
14915 results.
14916
14917 Fixed a problem where the CopyObject operator could fail on some of the
14918 more
14919 obscure objects (e.g., Reference objects.)
14920
14921 Improved the output of the Debug object to display buffer, package, and
14922 index objects.
14923
14924 Fixed a problem where constructs of the form "RefOf (ArgX)" did not
14925 return
14926 the expected result.
14927
14928 Added permanent ACPI_REPORT_ERROR macros for all instances of the
14929 ACPI_AML_INTERNAL exception.
14930
14931 Integrated latest version of acfreebsd.h
14932
14933 ----------------------------------------
14934 16 January 2004. Summary of changes for version 20040116:
14935
14936 The purpose of this release is primarily to update the copyright years in
14937 each module, thus causing a huge number of diffs. There are a few small
14938 functional changes, however.
14939
14940 1) ACPI CA Core Subsystem:
14941
14942 Improved error messages when there is a problem finding one or more of
14943 the
14944 required base ACPI tables
14945
14946 Reintroduced the definition of APIC_HEADER in actbl.h
14947
14948 Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
14949
14950 Removed extraneous reference to NewObj in dsmthdat.c
14951
14952 2) iASL compiler
14953
14954 Fixed a problem introduced in December that disabled the correct
14955 disassembly
14956 of Resource Templates
14957
14958
14959 ----------------------------------------
14960 03 December 2003. Summary of changes for version 20031203:
14961
14962 1) ACPI CA Core Subsystem:
14963
14964 Changed the initialization of Operation Regions during subsystem
14965 init to perform two entire walks of the ACPI namespace; The first
14966 to initialize the regions themselves, the second to execute the
14967 _REG methods. This fixed some interdependencies across _REG
14968 methods found on some machines.
14969
14970 Fixed a problem where a Store(Local0, Local1) could simply update
14971 the object reference count, and not create a new copy of the
14972 object if the Local1 is uninitialized.
14973
14974 Implemented support for the _SST reserved method during sleep
14975 transitions.
14976
14977 Implemented support to clear the SLP_TYP and SLP_EN bits when
14978 waking up, this is apparently required by some machines.
14979
14980 When sleeping, clear the wake status only if SleepState is not S5.
14981
14982 Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
14983 pointer arithmetic advanced a string pointer too far.
14984
14985 Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
14986 could be returned if the requested table has not been loaded.
14987
14988 Within the support for IRQ resources, restructured the handling of
14989 the active and edge/level bits.
14990
14991 Fixed a few problems in AcpiPsxExecute() where memory could be
14992 leaked under certain error conditions.
14993
14994 Improved error messages for the cases where the ACPI mode could
14995 not be entered.
14996
14997 Code and Data Size: Current and previous core subsystem library
14998 sizes are shown below. These are the code and data sizes for the
14999 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15000 these values do not include any ACPI driver or OSPM code. The
15001 debug version of the code includes the debug output trace
15002 mechanism and has a much larger code and data size. Note that
15003 these values will vary depending on the efficiency of the compiler
15004 and the compiler options used during generation.
15005
15006 Previous Release (20031029):
15007 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total
15008 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total
15009 Current Release:
15010 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total
15011 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total
15012
15013 2) iASL Compiler/Disassembler:
15014
15015 Implemented a fix for the iASL disassembler where a bad index was
15016 generated. This was most noticeable on 64-bit platforms
15017
15018
15019 ----------------------------------------
15020 29 October 2003. Summary of changes for version 20031029:
15021
15022 1) ACPI CA Core Subsystem:
15023
15024
15025 Fixed a problem where a level-triggered GPE with an associated
15026 _Lxx control method was incorrectly cleared twice.
15027
15028 Fixed a problem with the Field support code where an access can
15029 occur beyond the end-of-region if the field is non-aligned but
15030 extends to the very end of the parent region (resulted in an
15031 AE_AML_REGION_LIMIT exception.)
15032
15033 Fixed a problem with ACPI Fixed Events where an RT Clock handler
15034 would not get invoked on an RTC event. The RTC event bitmasks for
15035 the PM1 registers were not being initialized properly.
15036
15037 Implemented support for executing _STA and _INI methods for
15038 Processor objects. Although this is currently not part of the
15039 ACPI specification, there is existing ASL code that depends on the
15040 init-time execution of these methods.
15041
15042 Implemented and deployed a GetDescriptorName function to decode
15043 the various types of internal descriptors. Guards against null
15044 descriptors during debug output also.
15045
15046 Implemented and deployed a GetNodeName function to extract the 4-
15047 character namespace node name. This function simplifies the debug
15048 and error output, as well as guarding against null pointers during
15049 output.
15050
15051 Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
15052 simplify the debug and error output of 64-bit integers. This
15053 macro replaces the HIDWORD and LODWORD macros for dumping these
15054 integers.
15055
15056 Updated the implementation of the Stall() operator to only call
15057 AcpiOsStall(), and also return an error if the operand is larger
15058 than 255. This preserves the required behavior of not
15059 relinquishing the processor, as would happen if AcpiOsSleep() was
15060 called for "long stalls".
15061
15062 Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
15063 initialized are now treated as NOOPs.
15064
15065 Cleaned up a handful of warnings during 64-bit generation.
15066
15067 Fixed a reported error where and incorrect GPE number was passed
15068 to the GPE dispatch handler. This value is only used for error
15069 output, however. Used this opportunity to clean up and streamline
15070 the GPE dispatch code.
15071
15072 Code and Data Size: Current and previous core subsystem library
15073 sizes are shown below. These are the code and data sizes for the
15074 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15075 these values do not include any ACPI driver or OSPM code. The
15076
15077 debug version of the code includes the debug output trace
15078 mechanism and has a much larger code and data size. Note that
15079 these values will vary depending on the efficiency of the compiler
15080 and the compiler options used during generation.
15081
15082 Previous Release (20031002):
15083 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total
15084 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total
15085 Current Release:
15086 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total
15087 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total
15088
15089
15090 2) iASL Compiler/Disassembler:
15091
15092 Updated the iASL compiler to return an error if the operand to the
15093 Stall() operator is larger than 255.
15094
15095
15096 ----------------------------------------
15097 02 October 2003. Summary of changes for version 20031002:
15098
15099
15100 1) ACPI CA Core Subsystem:
15101
15102 Fixed a problem with Index Fields where the index was not
15103 incremented for fields that require multiple writes to the
15104 index/data registers (Fields that are wider than the data
15105 register.)
15106
15107 Fixed a problem with all Field objects where a write could go
15108 beyond the end-of-field if the field was larger than the access
15109 granularity and therefore required multiple writes to complete the
15110 request. An extra write beyond the end of the field could happen
15111 inadvertently.
15112
15113 Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
15114 would incorrectly be returned if the width of the Data Register
15115 was larger than the specified field access width.
15116
15117 Completed fixes for LoadTable() and Unload() and verified their
15118 operation. Implemented full support for the "DdbHandle" object
15119 throughout the ACPI CA subsystem.
15120
15121 Implemented full support for the MADT and ECDT tables in the ACPI
15122 CA header files. Even though these tables are not directly
15123 consumed by ACPI CA, the header definitions are useful for ACPI
15124 device drivers.
15125
15126 Integrated resource descriptor fixes posted to the Linux ACPI
15127 list. This included checks for minimum descriptor length, and
15128 support for trailing NULL strings within descriptors that have
15129 optional string elements.
15130
15131 Code and Data Size: Current and previous core subsystem library
15132 sizes are shown below. These are the code and data sizes for the
15133 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15134 these values do not include any ACPI driver or OSPM code. The
15135 debug version of the code includes the debug output trace
15136 mechanism and has a much larger code and data size. Note that
15137 these values will vary depending on the efficiency of the compiler
15138 and the compiler options used during generation.
15139
15140 Previous Release (20030918):
15141 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total
15142 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total
15143 Current Release:
15144 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total
15145 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total
15146
15147
15148 2) iASL Compiler:
15149
15150 Implemented detection of non-ASCII characters within the input
15151 source ASL file. This catches attempts to compile binary (AML)
15152 files early in the compile, with an informative error message.
15153
15154 Fixed a problem where the disassembler would fault if the output
15155 filename could not be generated or if the output file could not be
15156 opened.
15157
15158 ----------------------------------------
15159 18 September 2003. Summary of changes for version 20030918:
15160
15161
15162 1) ACPI CA Core Subsystem:
15163
15164 Found and fixed a longstanding problem with the late execution of
15165 the various deferred AML opcodes (such as Operation Regions,
15166 Buffer Fields, Buffers, and Packages). If the name string
15167 specified for the name of the new object placed the object in a
15168 scope other than the current scope, the initialization/execution
15169 of the opcode failed. The solution to this problem was to
15170 implement a mechanism where the late execution of such opcodes
15171 does not attempt to lookup/create the name a second time in an
15172 incorrect scope. This fixes the "region size computed
15173 incorrectly" problem.
15174
15175 Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
15176 Global Lock AE_BAD_PARAMETER error.
15177
15178 Fixed several 64-bit issues with prototypes, casting and data
15179 types.
15180
15181 Removed duplicate prototype from acdisasm.h
15182
15183 Fixed an issue involving EC Operation Region Detach (Shaohua Li)
15184
15185 Code and Data Size: Current and previous core subsystem library
15186 sizes are shown below. These are the code and data sizes for the
15187 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15188 these values do not include any ACPI driver or OSPM code. The
15189 debug version of the code includes the debug output trace
15190 mechanism and has a much larger code and data size. Note that
15191 these values will vary depending on the efficiency of the compiler
15192 and the compiler options used during generation.
15193
15194 Previous Release:
15195
15196 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total
15197 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total
15198 Current Release:
15199 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total
15200 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total
15201
15202
15203 2) Linux:
15204
15205 Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
15206 correct sleep time in seconds.
15207
15208 ----------------------------------------
15209 14 July 2003. Summary of changes for version 20030619:
15210
15211 1) ACPI CA Core Subsystem:
15212
15213 Parse SSDTs in order discovered, as opposed to reverse order
15214 (Hrvoje Habjanic)
15215
15216 Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
15217 Klausner,
15218 Nate Lawson)
15219
15220
15221 2) Linux:
15222
15223 Dynamically allocate SDT list (suggested by Andi Kleen)
15224
15225 proc function return value cleanups (Andi Kleen)
15226
15227 Correctly handle NMI watchdog during long stalls (Andrew Morton)
15228
15229 Make it so acpismp=force works (reported by Andrew Morton)
15230
15231
15232 ----------------------------------------
15233 19 June 2003. Summary of changes for version 20030619:
15234
15235 1) ACPI CA Core Subsystem:
15236
15237 Fix To/FromBCD, eliminating the need for an arch-specific #define.
15238
15239 Do not acquire a semaphore in the S5 shutdown path.
15240
15241 Fix ex_digits_needed for 0. (Takayoshi Kochi)
15242
15243 Fix sleep/stall code reversal. (Andi Kleen)
15244
15245 Revert a change having to do with control method calling
15246 semantics.
15247
15248 2) Linux:
15249
15250 acpiphp update (Takayoshi Kochi)
15251
15252 Export acpi_disabled for sonypi (Stelian Pop)
15253
15254 Mention acpismp=force in config help
15255
15256 Re-add acpitable.c and acpismp=force. This improves backwards
15257
15258 compatibility and also cleans up the code to a significant degree.
15259
15260 Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
15261
15262 ----------------------------------------
15263 22 May 2003. Summary of changes for version 20030522:
15264
15265 1) ACPI CA Core Subsystem:
15266
15267 Found and fixed a reported problem where an AE_NOT_FOUND error
15268 occurred occasionally during _BST evaluation. This turned out to
15269 be an Owner ID allocation issue where a called method did not get
15270 a new ID assigned to it. Eventually, (after 64k calls), the Owner
15271 ID UINT16 would wraparound so that the ID would be the same as the
15272 caller's and the called method would delete the caller's
15273 namespace.
15274
15275 Implemented extended error reporting for control methods that are
15276 aborted due to a run-time exception. Output includes the exact
15277 AML instruction that caused the method abort, a dump of the method
15278 locals and arguments at the time of the abort, and a trace of all
15279 nested control method calls.
15280
15281 Modified the interpreter to allow the creation of buffers of zero
15282 length from the AML code. Implemented new code to ensure that no
15283 attempt is made to actually allocate a memory buffer (of length
15284 zero) - instead, a simple buffer object with a NULL buffer pointer
15285 and length zero is created. A warning is no longer issued when
15286 the AML attempts to create a zero-length buffer.
15287
15288 Implemented a workaround for the "leading asterisk issue" in
15289 _HIDs, _UIDs, and _CIDs in the AML interpreter. One leading
15290 asterisk is automatically removed if present in any HID, UID, or
15291 CID strings. The iASL compiler will still flag this asterisk as
15292 an error, however.
15293
15294 Implemented full support for _CID methods that return a package of
15295 multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface
15296 now additionally returns a device _CID list if present. This
15297 required a change to the external interface in order to pass an
15298 ACPI_BUFFER object as a parameter since the _CID list is of
15299 variable length.
15300
15301 Fixed a problem with the new AE_SAME_HANDLER exception where
15302 handler initialization code did not know about this exception.
15303
15304 Code and Data Size: Current and previous core subsystem library
15305 sizes are shown below. These are the code and data sizes for the
15306 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15307 these values do not include any ACPI driver or OSPM code. The
15308 debug version of the code includes the debug output trace
15309 mechanism and has a much larger code and data size. Note that
15310 these values will vary depending on the efficiency of the compiler
15311 and the compiler options used during generation.
15312
15313 Previous Release (20030509):
15314 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total
15315 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total
15316 Current Release:
15317 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total
15318 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total
15319
15320
15321 2) Linux:
15322
15323 Fixed a bug in which we would reinitialize the ACPI interrupt
15324 after it was already working, thus disabling all ACPI and the IRQs
15325 for any other device sharing the interrupt. (Thanks to Stian
15326 Jordet)
15327
15328 Toshiba driver update (John Belmonte)
15329
15330 Return only 0 or 1 for our interrupt handler status (Andrew
15331 Morton)
15332
15333
15334 3) iASL Compiler:
15335
15336 Fixed a reported problem where multiple (nested) ElseIf()
15337 statements were not handled correctly by the compiler, resulting
15338 in incorrect warnings and incorrect AML code. This was a problem
15339 in both the ASL parser and the code generator.
15340
15341
15342 4) Documentation:
15343
15344 Added changes to existing interfaces, new exception codes, and new
15345 text concerning reference count object management versus garbage
15346 collection.
15347
15348 ----------------------------------------
15349 09 May 2003. Summary of changes for version 20030509.
15350
15351
15352 1) ACPI CA Core Subsystem:
15353
15354 Changed the subsystem initialization sequence to hold off
15355 installation of address space handlers until the hardware has been
15356 initialized and the system has entered ACPI mode. This is because
15357 the installation of space handlers can cause _REG methods to be
15358 run. Previously, the _REG methods could potentially be run before
15359 ACPI mode was enabled.
15360
15361 Fixed some memory leak issues related to address space handler and
15362 notify handler installation. There were some problems with the
15363 reference count mechanism caused by the fact that the handler
15364 objects are shared across several namespace objects.
15365
15366 Fixed a reported problem where reference counts within the
15367 namespace were not properly updated when named objects created by
15368 method execution were deleted.
15369
15370 Fixed a reported problem where multiple SSDTs caused a deletion
15371 issue during subsystem termination. Restructured the table data
15372 structures to simplify the linked lists and the related code.
15373
15374 Fixed a problem where the table ID associated with secondary
15375 tables (SSDTs) was not being propagated into the namespace objects
15376 created by those tables. This would only present a problem for
15377 tables that are unloaded at run-time, however.
15378
15379 Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
15380 type as the length parameter (instead of UINT32).
15381
15382 Solved a long-standing problem where an ALREADY_EXISTS error
15383 appears on various systems. This problem could happen when there
15384 are multiple PCI_Config operation regions under a single PCI root
15385 bus. This doesn't happen very frequently, but there are some
15386 systems that do this in the ASL.
15387
15388 Fixed a reported problem where the internal DeleteNode function
15389 was incorrectly handling the case where a namespace node was the
15390 first in the parent's child list, and had additional peers (not
15391 the only child, but first in the list of children.)
15392
15393 Code and Data Size: Current core subsystem library sizes are shown
15394 below. These are the code and data sizes for the acpica.lib
15395 produced by the Microsoft Visual C++ 6.0 compiler, and these
15396 values do not include any ACPI driver or OSPM code. The debug
15397 version of the code includes the debug output trace mechanism and
15398 has a much larger code and data size. Note that these values will
15399 vary depending on the efficiency of the compiler and the compiler
15400 options used during generation.
15401
15402 Previous Release
15403 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total
15404 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total
15405 Current Release:
15406 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total
15407 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total
15408
15409
15410 2) Linux:
15411
15412 Allow ":" in OS override string (Ducrot Bruno)
15413
15414 Kobject fix (Greg KH)
15415
15416
15417 3 iASL Compiler/Disassembler:
15418
15419 Fixed a problem in the generation of the C source code files (AML
15420 is emitted in C source statements for BIOS inclusion) where the
15421 Ascii dump that appears within a C comment at the end of each line
15422 could cause a compile time error if the AML sequence happens to
15423 have an open comment or close comment sequence embedded.
15424
15425
15426 ----------------------------------------
15427 24 April 2003. Summary of changes for version 20030424.
15428
15429
15430 1) ACPI CA Core Subsystem:
15431
15432 Support for big-endian systems has been implemented. Most of the
15433 support has been invisibly added behind big-endian versions of the
15434 ACPI_MOVE_* macros.
15435
15436 Fixed a problem in AcpiHwDisableGpeBlock() and
15437 AcpiHwClearGpeBlock() where an incorrect offset was passed to the
15438 low level hardware write routine. The offset parameter was
15439 actually eliminated from the low level read/write routines because
15440 they had become obsolete.
15441
15442 Fixed a problem where a handler object was deleted twice during
15443 the removal of a fixed event handler.
15444
15445
15446 2) Linux:
15447
15448 A fix for SMP systems with link devices was contributed by
15449
15450 Compaq's Dan Zink.
15451
15452 (2.5) Return whether we handled the interrupt in our IRQ handler.
15453 (Linux ISRs no longer return void, so we can propagate the handler
15454 return value from the ACPI CA core back to the OS.)
15455
15456
15457
15458 3) Documentation:
15459
15460 The ACPI CA Programmer Reference has been updated to reflect new
15461 interfaces and changes to existing interfaces.
15462
15463 ----------------------------------------
15464 28 March 2003. Summary of changes for version 20030328.
15465
15466 1) ACPI CA Core Subsystem:
15467
15468 The GPE Block Device support has been completed. New interfaces
15469 are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event
15470 interfaces (enable, disable, clear, getstatus) have been split
15471 into separate interfaces for Fixed Events and General Purpose
15472 Events (GPEs) in order to support GPE Block Devices properly.
15473
15474 Fixed a problem where the error message "Failed to acquire
15475 semaphore" would appear during operations on the embedded
15476 controller (EC).
15477
15478 Code and Data Size: Current core subsystem library sizes are shown
15479 below. These are the code and data sizes for the acpica.lib
15480 produced by the Microsoft Visual C++ 6.0 compiler, and these
15481 values do not include any ACPI driver or OSPM code. The debug
15482 version of the code includes the debug output trace mechanism and
15483 has a much larger code and data size. Note that these values will
15484 vary depending on the efficiency of the compiler and the compiler
15485 options used during generation.
15486
15487 Previous Release
15488 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total
15489 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total
15490 Current Release:
15491 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total
15492 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total
15493
15494
15495 ----------------------------------------
15496 28 February 2003. Summary of changes for version 20030228.
15497
15498
15499 1) ACPI CA Core Subsystem:
15500
15501 The GPE handling and dispatch code has been completely overhauled
15502 in preparation for support of GPE Block Devices (ID ACPI0006).
15503 This affects internal data structures and code only; there should
15504 be no differences visible externally. One new file has been
15505 added, evgpeblk.c
15506
15507 The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
15508 fields that are used to determine the GPE block lengths. The
15509 REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
15510 structures are ignored. This is per the ACPI specification but it
15511 isn't very clear. The full 256 Block 0/1 GPEs are now supported
15512 (the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
15513
15514 In the SCI interrupt handler, removed the read of the PM1_CONTROL
15515 register to look at the SCI_EN bit. On some machines, this read
15516 causes an SMI event and greatly slows down SCI events. (This may
15517 in fact be the cause of slow battery status response on some
15518 systems.)
15519
15520 Fixed a problem where a store of a NULL string to a package object
15521 could cause the premature deletion of the object. This was seen
15522 during execution of the battery _BIF method on some systems,
15523 resulting in no battery data being returned.
15524
15525 Added AcpiWalkResources interface to simplify parsing of resource
15526 lists.
15527
15528 Code and Data Size: Current core subsystem library sizes are shown
15529 below. These are the code and data sizes for the acpica.lib
15530 produced by the Microsoft Visual C++ 6.0 compiler, and these
15531 values do not include any ACPI driver or OSPM code. The debug
15532 version of the code includes the debug output trace mechanism and
15533 has a much larger code and data size. Note that these values will
15534 vary depending on the efficiency of the compiler and the compiler
15535 options used during generation.
15536
15537 Previous Release
15538 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
15539 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
15540 Current Release:
15541 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total
15542 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total
15543
15544
15545 2) Linux
15546
15547 S3 fixes (Ole Rohne)
15548
15549 Update ACPI PHP driver with to use new acpi_walk_resource API
15550 (Bjorn Helgaas)
15551
15552 Add S4BIOS support (Pavel Machek)
15553
15554 Map in entire table before performing checksum (John Stultz)
15555
15556 Expand the mem= cmdline to allow the specification of reserved and
15557 ACPI DATA blocks (Pavel Machek)
15558
15559 Never use ACPI on VISWS
15560
15561 Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
15562
15563 Revert a change that allowed P_BLK lengths to be 4 or 5. This is
15564 causing us to think that some systems support C2 when they really
15565 don't.
15566
15567 Do not count processor objects for non-present CPUs (Thanks to
15568 Dominik Brodowski)
15569
15570
15571 3) iASL Compiler:
15572
15573 Fixed a problem where ASL include files could not be found and
15574 opened.
15575
15576 Added support for the _PDC reserved name.
15577
15578
15579 ----------------------------------------
15580 22 January 2003. Summary of changes for version 20030122.
15581
15582
15583 1) ACPI CA Core Subsystem:
15584
15585 Added a check for constructs of the form: Store (Local0, Local0)
15586 where Local0 is not initialized. Apparently, some BIOS
15587 programmers believe that this is a NOOP. Since this store doesn't
15588 do anything anyway, the new prototype behavior will ignore this
15589 error. This is a case where we can relax the strict checking in
15590 the interpreter in the name of compatibility.
15591
15592
15593 2) Linux
15594
15595 The AcpiSrc Source Conversion Utility has been released with the
15596 Linux package for the first time. This is the utility that is
15597 used to convert the ACPI CA base source code to the Linux version.
15598
15599 (Both) Handle P_BLK lengths shorter than 6 more gracefully
15600
15601 (Both) Move more headers to include/acpi, and delete an unused
15602 header.
15603
15604 (Both) Move drivers/acpi/include directory to include/acpi
15605
15606 (Both) Boot functions don't use cmdline, so don't pass it around
15607
15608 (Both) Remove include of unused header (Adrian Bunk)
15609
15610 (Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
15611 the
15612 former now also includes the latter, acpiphp.h only needs the one,
15613 now.
15614
15615 (2.5) Make it possible to select method of bios restoring after S3
15616 resume. [=> no more ugly ifdefs] (Pavel Machek)
15617
15618 (2.5) Make proc write interfaces work (Pavel Machek)
15619
15620 (2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
15621
15622 (2.5) Break out ACPI Perf code into its own module, under cpufreq
15623 (Dominik Brodowski)
15624
15625 (2.4) S4BIOS support (Ducrot Bruno)
15626
15627 (2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
15628 Visinoni)
15629
15630
15631 3) iASL Compiler:
15632
15633 Added support to disassemble SSDT and PSDTs.
15634
15635 Implemented support to obtain SSDTs from the Windows registry if
15636 available.
15637
15638
15639 ----------------------------------------
15640 09 January 2003. Summary of changes for version 20030109.
15641
15642 1) ACPI CA Core Subsystem:
15643
15644 Changed the behavior of the internal Buffer-to-String conversion
15645 function. The current ACPI specification states that the contents
15646 of the buffer are "converted to a string of two-character
15647 hexadecimal numbers, each separated by a space". Unfortunately,
15648 this definition is not backwards compatible with existing ACPI 1.0
15649 implementations (although the behavior was not defined in the ACPI
15650 1.0 specification). The new behavior simply copies data from the
15651 buffer to the string until a null character is found or the end of
15652 the buffer is reached. The new String object is always null
15653 terminated. This problem was seen during the generation of _BIF
15654 battery data where incorrect strings were returned for battery
15655 type, etc. This will also require an errata to the ACPI
15656 specification.
15657
15658 Renamed all instances of NATIVE_UINT and NATIVE_INT to
15659 ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
15660
15661 Copyright in all module headers (both Linux and non-Linux) has be
15662 updated to 2003.
15663
15664 Code and Data Size: Current core subsystem library sizes are shown
15665 below. These are the code and data sizes for the acpica.lib
15666 produced by the Microsoft Visual C++ 6.0 compiler, and these
15667 values do not include any ACPI driver or OSPM code. The debug
15668 version of the code includes the debug output trace mechanism and
15669 has a much larger code and data size. Note that these values will
15670 vary depending on the efficiency of the compiler and the compiler
15671 options used during generation.
15672
15673 Previous Release
15674 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
15675 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
15676 Current Release:
15677 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
15678 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
15679
15680
15681 2) Linux
15682
15683 Fixed an oops on module insertion/removal (Matthew Tippett)
15684
15685 (2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
15686
15687 (2.5) Replace pr_debug (Randy Dunlap)
15688
15689 (2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
15690
15691 (Both) Eliminate spawning of thread from timer callback, in favor
15692 of schedule_work()
15693
15694 (Both) Show Lid status in /proc (Zdenek OGAR Skalak)
15695
15696 (Both) Added define for Fixed Function HW region (Matthew Wilcox)
15697
15698 (Both) Add missing statics to button.c (Pavel Machek)
15699
15700 Several changes have been made to the source code translation
15701 utility that generates the Linux Code in order to make the code
15702 more "Linux-like":
15703
15704 All typedefs on structs and unions have been removed in keeping
15705 with the Linux coding style.
15706
15707 Removed the non-Linux SourceSafe module revision number from each
15708 module header.
15709
15710 Completed major overhaul of symbols to be lowercase for linux.
15711 Doubled the number of symbols that are lowercase.
15712
15713 Fixed a problem where identifiers within procedure headers and
15714 within quotes were not fully lower cased (they were left with a
15715 starting capital.)
15716
15717 Some C macros whose only purpose is to allow the generation of 16-
15718 bit code are now completely removed in the Linux code, increasing
15719 readability and maintainability.
15720
15721 ----------------------------------------
15722
15723 12 December 2002. Summary of changes for version 20021212.
15724
15725
15726 1) ACPI CA Core Subsystem:
15727
15728 Fixed a problem where the creation of a zero-length AML Buffer
15729 would cause a fault.
15730
15731 Fixed a problem where a Buffer object that pointed to a static AML
15732 buffer (in an ACPI table) could inadvertently be deleted, causing
15733 memory corruption.
15734
15735 Fixed a problem where a user buffer (passed in to the external
15736 ACPI CA interfaces) could be overwritten if the buffer was too
15737 small to complete the operation, causing memory corruption.
15738
15739 Fixed a problem in the Buffer-to-String conversion code where a
15740 string of length one was always returned, regardless of the size
15741 of the input Buffer object.
15742
15743 Removed the NATIVE_CHAR data type across the entire source due to
15744 lack of need and lack of consistent use.
15745
15746 Code and Data Size: Current core subsystem library sizes are shown
15747 below. These are the code and data sizes for the acpica.lib
15748 produced by the Microsoft Visual C++ 6.0 compiler, and these
15749 values do not include any ACPI driver or OSPM code. The debug
15750 version of the code includes the debug output trace mechanism and
15751 has a much larger code and data size. Note that these values will
15752 vary depending on the efficiency of the compiler and the compiler
15753 options used during generation.
15754
15755 Previous Release
15756 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total
15757 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total
15758 Current Release:
15759 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
15760 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
15761
15762
15763 ----------------------------------------
15764 05 December 2002. Summary of changes for version 20021205.
15765
15766 1) ACPI CA Core Subsystem:
15767
15768 Fixed a problem where a store to a String or Buffer object could
15769 cause corruption of the DSDT if the object type being stored was
15770 the same as the target object type and the length of the object
15771 being stored was equal to or smaller than the original (existing)
15772 target object. This was seen to cause corruption of battery _BIF
15773 buffers if the _BIF method modified the buffer on the fly.
15774
15775 Fixed a problem where an internal error was generated if a control
15776 method invocation was used in an OperationRegion, Buffer, or
15777 Package declaration. This was caused by the deferred parsing of
15778 the control method and thus the deferred creation of the internal
15779 method object. The solution to this problem was to create the
15780 internal method object at the moment the method is encountered in
15781 the first pass - so that subsequent references to the method will
15782 able to obtain the required parameter count and thus properly
15783 parse the method invocation. This problem presented itself as an
15784 AE_AML_INTERNAL during the pass 1 parse phase during table load.
15785
15786 Fixed a problem where the internal String object copy routine did
15787 not always allocate sufficient memory for the target String object
15788 and caused memory corruption. This problem was seen to cause
15789 "Allocation already present in list!" errors as memory allocation
15790 became corrupted.
15791
15792 Implemented a new function for the evaluation of namespace objects
15793 that allows the specification of the allowable return object
15794 types. This simplifies a lot of code that checks for a return
15795 object of one or more specific objects returned from the
15796 evaluation (such as _STA, etc.) This may become and external
15797 function if it would be useful to ACPI-related drivers.
15798
15799 Completed another round of prefixing #defines with "ACPI_" for
15800 clarity.
15801
15802 Completed additional code restructuring to allow more modular
15803 linking for iASL compiler and AcpiExec. Several files were split
15804 creating new files. New files: nsparse.c dsinit.c evgpe.c
15805
15806 Implemented an abort mechanism to terminate an executing control
15807 method via the AML debugger. This feature is useful for debugging
15808 control methods that depend (wait) for specific hardware
15809 responses.
15810
15811 Code and Data Size: Current core subsystem library sizes are shown
15812 below. These are the code and data sizes for the acpica.lib
15813 produced by the Microsoft Visual C++ 6.0 compiler, and these
15814 values do not include any ACPI driver or OSPM code. The debug
15815 version of the code includes the debug output trace mechanism and
15816 has a much larger code and data size. Note that these values will
15817 vary depending on the efficiency of the compiler and the compiler
15818 options used during generation.
15819
15820 Previous Release
15821 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
15822 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total
15823 Current Release:
15824 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total
15825 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total
15826
15827
15828 2) iASL Compiler/Disassembler
15829
15830 Fixed a compiler code generation problem for "Interrupt" Resource
15831 Descriptors. If specified in the ASL, the optional "Resource
15832 Source Index" and "Resource Source" fields were not inserted into
15833 the correct location within the AML resource descriptor, creating
15834 an invalid descriptor.
15835
15836 Fixed a disassembler problem for "Interrupt" resource descriptors.
15837 The optional "Resource Source Index" and "Resource Source" fields
15838 were ignored.
15839
15840
15841 ----------------------------------------
15842 22 November 2002. Summary of changes for version 20021122.
15843
15844
15845 1) ACPI CA Core Subsystem:
15846
15847 Fixed a reported problem where an object stored to a Method Local
15848 or Arg was not copied to a new object during the store - the
15849 object pointer was simply copied to the Local/Arg. This caused
15850 all subsequent operations on the Local/Arg to also affect the
15851 original source of the store operation.
15852
15853 Fixed a problem where a store operation to a Method Local or Arg
15854 was not completed properly if the Local/Arg contained a reference
15855 (from RefOf) to a named field. The general-purpose store-to-
15856 namespace-node code is now used so that this case is handled
15857 automatically.
15858
15859 Fixed a problem where the internal object copy routine would cause
15860 a protection fault if the object being copied was a Package and
15861 contained either 1) a NULL package element or 2) a nested sub-
15862 package.
15863
15864 Fixed a problem with the GPE initialization that resulted from an
15865 ambiguity in the ACPI specification. One section of the
15866 specification states that both the address and length of the GPE
15867 block must be zero if the block is not supported. Another section
15868 implies that only the address need be zero if the block is not
15869 supported. The code has been changed so that both the address and
15870 the length must be non-zero to indicate a valid GPE block (i.e.,
15871 if either the address or the length is zero, the GPE block is
15872 invalid.)
15873
15874 Code and Data Size: Current core subsystem library sizes are shown
15875 below. These are the code and data sizes for the acpica.lib
15876 produced by the Microsoft Visual C++ 6.0 compiler, and these
15877 values do not include any ACPI driver or OSPM code. The debug
15878 version of the code includes the debug output trace mechanism and
15879 has a much larger code and data size. Note that these values will
15880 vary depending on the efficiency of the compiler and the compiler
15881 options used during generation.
15882
15883 Previous Release
15884 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total
15885 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total
15886 Current Release:
15887 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
15888 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total
15889
15890
15891 2) Linux
15892
15893 Cleaned up EC driver. Exported an external EC read/write
15894 interface. By going through this, other drivers (most notably
15895 sonypi) will be able to serialize access to the EC.
15896
15897
15898 3) iASL Compiler/Disassembler
15899
15900 Implemented support to optionally generate include files for both
15901 ASM and C (the -i switch). This simplifies BIOS development by
15902 automatically creating include files that contain external
15903 declarations for the symbols that are created within the
15904
15905 (optionally generated) ASM and C AML source files.
15906
15907
15908 ----------------------------------------
15909 15 November 2002. Summary of changes for version 20021115.
15910
15911 1) ACPI CA Core Subsystem:
15912
15913 Fixed a memory leak problem where an error during resolution of
15914
15915 method arguments during a method invocation from another method
15916 failed to cleanup properly by deleting all successfully resolved
15917 argument objects.
15918
15919 Fixed a problem where the target of the Index() operator was not
15920 correctly constructed if the source object was a package. This
15921 problem has not been detected because the use of a target operand
15922 with Index() is very rare.
15923
15924 Fixed a problem with the Index() operator where an attempt was
15925 made to delete the operand objects twice.
15926
15927 Fixed a problem where an attempt was made to delete an operand
15928 twice during execution of the CondRefOf() operator if the target
15929 did not exist.
15930
15931 Implemented the first of perhaps several internal create object
15932 functions that create and initialize a specific object type. This
15933 consolidates duplicated code wherever the object is created, thus
15934 shrinking the size of the subsystem.
15935
15936 Implemented improved debug/error messages for errors that occur
15937 during nested method invocations. All executing method pathnames
15938 are displayed (with the error) as the call stack is unwound - thus
15939 simplifying debug.
15940
15941 Fixed a problem introduced in the 10/02 release that caused
15942 premature deletion of a buffer object if a buffer was used as an
15943 ASL operand where an integer operand is required (Thus causing an
15944 implicit object conversion from Buffer to Integer.) The change in
15945 the 10/02 release was attempting to fix a memory leak (albeit
15946 incorrectly.)
15947
15948 Code and Data Size: Current core subsystem library sizes are shown
15949 below. These are the code and data sizes for the acpica.lib
15950 produced by the Microsoft Visual C++ 6.0 compiler, and these
15951 values do not include any ACPI driver or OSPM code. The debug
15952 version of the code includes the debug output trace mechanism and
15953 has a much larger code and data size. Note that these values will
15954 vary depending on the efficiency of the compiler and the compiler
15955 options used during generation.
15956
15957 Previous Release
15958 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total
15959 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total
15960 Current Release:
15961 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total
15962 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total
15963
15964
15965 2) Linux
15966
15967 Changed the implementation of the ACPI semaphores to use down()
15968 instead of down_interruptable(). It is important that the
15969 execution of ACPI control methods not be interrupted by signals.
15970 Methods must run to completion, or the system may be left in an
15971 unknown/unstable state.
15972
15973 Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
15974 (Shawn Starr)
15975
15976
15977 3) iASL Compiler/Disassembler
15978
15979
15980 Changed the default location of output files. All output files
15981 are now placed in the current directory by default instead of in
15982 the directory of the source file. This change may affect some
15983 existing makefiles, but it brings the behavior of the compiler in
15984 line with other similar tools. The location of the output files
15985 can be overridden with the -p command line switch.
15986
15987
15988 ----------------------------------------
15989 11 November 2002. Summary of changes for version 20021111.
15990
15991
15992 0) ACPI Specification 2.0B is released and is now available at:
15993 http://www.acpi.info/index.html
15994
15995
15996 1) ACPI CA Core Subsystem:
15997
15998 Implemented support for the ACPI 2.0 SMBus Operation Regions.
15999 This includes the early detection and handoff of the request to
16000 the SMBus region handler (avoiding all of the complex field
16001 support code), and support for the bidirectional return packet
16002 from an SMBus write operation. This paves the way for the
16003 development of SMBus drivers in each host operating system.
16004
16005 Fixed a problem where the semaphore WAIT_FOREVER constant was
16006 defined as 32 bits, but must be 16 bits according to the ACPI
16007 specification. This had the side effect of causing ASL
16008 Mutex/Event timeouts even though the ASL code requested a wait
16009 forever. Changed all internal references to the ACPI timeout
16010 parameter to 16 bits to prevent future problems. Changed the name
16011 of WAIT_FOREVER to ACPI_WAIT_FOREVER.
16012
16013 Code and Data Size: Current core subsystem library sizes are shown
16014 below. These are the code and data sizes for the acpica.lib
16015 produced by the Microsoft Visual C++ 6.0 compiler, and these
16016 values do not include any ACPI driver or OSPM code. The debug
16017 version of the code includes the debug output trace mechanism and
16018 has a much larger code and data size. Note that these values will
16019 vary depending on the efficiency of the compiler and the compiler
16020 options used during generation.
16021
16022 Previous Release
16023 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
16024 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total
16025 Current Release:
16026 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total
16027 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total
16028
16029
16030 2) Linux
16031
16032 Module loading/unloading fixes (John Cagle)
16033
16034
16035 3) iASL Compiler/Disassembler
16036
16037 Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
16038
16039 Implemented support for the disassembly of all SMBus protocol
16040 keywords (SMBQuick, SMBWord, etc.)
16041
16042 ----------------------------------------
16043 01 November 2002. Summary of changes for version 20021101.
16044
16045
16046 1) ACPI CA Core Subsystem:
16047
16048 Fixed a problem where platforms that have a GPE1 block but no GPE0
16049 block were not handled correctly. This resulted in a "GPE
16050 overlap" error message. GPE0 is no longer required.
16051
16052 Removed code added in the previous release that inserted nodes
16053 into the namespace in alphabetical order. This caused some side-
16054 effects on various machines. The root cause of the problem is
16055 still under investigation since in theory, the internal ordering
16056 of the namespace nodes should not matter.
16057
16058
16059 Enhanced error reporting for the case where a named object is not
16060 found during control method execution. The full ACPI namepath
16061 (name reference) of the object that was not found is displayed in
16062 this case.
16063
16064 Note: as a result of the overhaul of the namespace object types in
16065 the previous release, the namespace nodes for the predefined
16066 scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
16067 instead of ACPI_TYPE_ANY. This simplifies the namespace
16068 management code but may affect code that walks the namespace tree
16069 looking for specific object types.
16070
16071 Code and Data Size: Current core subsystem library sizes are shown
16072 below. These are the code and data sizes for the acpica.lib
16073 produced by the Microsoft Visual C++ 6.0 compiler, and these
16074 values do not include any ACPI driver or OSPM code. The debug
16075 version of the code includes the debug output trace mechanism and
16076 has a much larger code and data size. Note that these values will
16077 vary depending on the efficiency of the compiler and the compiler
16078 options used during generation.
16079
16080 Previous Release
16081 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total
16082 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total
16083 Current Release:
16084 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
16085 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total
16086
16087
16088 2) Linux
16089
16090 Fixed a problem introduced in the previous release where the
16091 Processor and Thermal objects were not recognized and installed in
16092 /proc. This was related to the scope type change described above.
16093
16094
16095 3) iASL Compiler/Disassembler
16096
16097 Implemented the -g option to get all of the required ACPI tables
16098 from the registry and save them to files (Windows version of the
16099 compiler only.) The required tables are the FADT, FACS, and DSDT.
16100
16101 Added ACPI table checksum validation during table disassembly in
16102 order to catch corrupted tables.
16103
16104
16105 ----------------------------------------
16106 22 October 2002. Summary of changes for version 20021022.
16107
16108 1) ACPI CA Core Subsystem:
16109
16110 Implemented a restriction on the Scope operator that the target
16111 must already exist in the namespace at the time the operator is
16112 encountered (during table load or method execution). In other
16113 words, forward references are not allowed and Scope() cannot
16114 create a new object. This changes the previous behavior where the
16115 interpreter would create the name if not found. This new behavior
16116 correctly enables the search-to-root algorithm during namespace
16117 lookup of the target name. Because of this upsearch, this fixes
16118 the known Compaq _SB_.OKEC problem and makes both the AML
16119 interpreter and iASL compiler compatible with other ACPI
16120 implementations.
16121
16122 Completed a major overhaul of the internal ACPI object types for
16123 the ACPI Namespace and the associated operand objects. Many of
16124 these types had become obsolete with the introduction of the two-
16125 pass namespace load. This cleanup simplifies the code and makes
16126 the entire namespace load mechanism much clearer and easier to
16127 understand.
16128
16129 Improved debug output for tracking scope opening/closing to help
16130 diagnose scoping issues. The old scope name as well as the new
16131 scope name are displayed. Also improved error messages for
16132 problems with ASL Mutex objects and error messages for GPE
16133 problems.
16134
16135 Cleaned up the namespace dump code, removed obsolete code.
16136
16137 All string output (for all namespace/object dumps) now uses the
16138 common ACPI string output procedure which handles escapes properly
16139 and does not emit non-printable characters.
16140
16141 Fixed some issues with constants in the 64-bit version of the
16142 local C library (utclib.c)
16143
16144
16145 2) Linux
16146
16147 EC Driver: No longer attempts to acquire the Global Lock at
16148 interrupt level.
16149
16150
16151 3) iASL Compiler/Disassembler
16152
16153 Implemented ACPI 2.0B grammar change that disallows all Type 1 and
16154 2 opcodes outside of a control method. This means that the
16155 "executable" operators (versus the "namespace" operators) cannot
16156 be used at the table level; they can only be used within a control
16157 method.
16158
16159 Implemented the restriction on the Scope() operator where the
16160 target must already exist in the namespace at the time the
16161 operator is encountered (during ASL compilation). In other words,
16162 forward references are not allowed and Scope() cannot create a new
16163 object. This makes the iASL compiler compatible with other ACPI
16164 implementations and makes the Scope() implementation adhere to the
16165 ACPI specification.
16166
16167 Fixed a problem where namepath optimization for the Alias operator
16168 was optimizing the wrong path (of the two namepaths.) This caused
16169 a "Missing alias link" error message.
16170
16171 Fixed a problem where an "unknown reserved name" warning could be
16172 incorrectly generated for names like "_SB" when the trailing
16173 underscore is not used in the original ASL.
16174
16175 Fixed a problem where the reserved name check did not handle
16176 NamePaths with multiple NameSegs correctly. The first nameseg of
16177 the NamePath was examined instead of the last NameSeg.
16178
16179
16180 ----------------------------------------
16181
16182 02 October 2002. Summary of changes for this release.
16183
16184
16185 1) ACPI CA Core Subsystem version 20021002:
16186
16187 Fixed a problem where a store/copy of a string to an existing
16188 string did not always set the string length properly in the String
16189 object.
16190
16191 Fixed a reported problem with the ToString operator where the
16192 behavior was identical to the ToHexString operator instead of just
16193 simply converting a raw buffer to a string data type.
16194
16195 Fixed a problem where CopyObject and the other "explicit"
16196 conversion operators were not updating the internal namespace node
16197 type as part of the store operation.
16198
16199 Fixed a memory leak during implicit source operand conversion
16200 where the original object was not deleted if it was converted to a
16201 new object of a different type.
16202
16203 Enhanced error messages for all problems associated with namespace
16204 lookups. Common procedure generates and prints the lookup name as
16205 well as the formatted status.
16206
16207 Completed implementation of a new design for the Alias support
16208 within the namespace. The existing design did not handle the case
16209 where a new object was assigned to one of the two names due to the
16210 use of an explicit conversion operator, resulting in the two names
16211 pointing to two different objects. The new design simply points
16212 the Alias name to the original name node - not to the object.
16213 This results in a level of indirection that must be handled in the
16214 name resolution mechanism.
16215
16216 Code and Data Size: Current core subsystem library sizes are shown
16217 below. These are the code and data sizes for the acpica.lib
16218 produced by the Microsoft Visual C++ 6.0 compiler, and these
16219 values do not include any ACPI driver or OSPM code. The debug
16220 version of the code includes the debug output trace mechanism and
16221 has a larger code and data size. Note that these values will vary
16222 depending on the efficiency of the compiler and the compiler
16223 options used during generation.
16224
16225 Previous Release
16226 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total
16227 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total
16228 Current Release:
16229 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total
16230 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total
16231
16232
16233 2) Linux
16234
16235 Initialize thermal driver's timer before it is used. (Knut
16236 Neumann)
16237
16238 Allow handling negative celsius values. (Kochi Takayoshi)
16239
16240 Fix thermal management and make trip points. R/W (Pavel Machek)
16241
16242 Fix /proc/acpi/sleep. (P. Christeas)
16243
16244 IA64 fixes. (David Mosberger)
16245
16246 Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
16247
16248 Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
16249 Brodowski)
16250
16251
16252 3) iASL Compiler/Disassembler
16253
16254 Clarified some warning/error messages.
16255
16256
16257 ----------------------------------------
16258 18 September 2002. Summary of changes for this release.
16259
16260
16261 1) ACPI CA Core Subsystem version 20020918:
16262
16263 Fixed a reported problem with reference chaining (via the Index()
16264 and RefOf() operators) in the ObjectType() and SizeOf() operators.
16265 The definition of these operators includes the dereferencing of
16266 all chained references to return information on the base object.
16267
16268 Fixed a problem with stores to indexed package elements - the
16269 existing code would not complete the store if an "implicit
16270 conversion" was not performed. In other words, if the existing
16271 object (package element) was to be replaced completely, the code
16272 didn't handle this case.
16273
16274 Relaxed typechecking on the ASL "Scope" operator to allow the
16275 target name to refer to an object of type Integer, String, or
16276 Buffer, in addition to the scoping object types (Device,
16277 predefined Scopes, Processor, PowerResource, and ThermalZone.)
16278 This allows existing AML code that has workarounds for a bug in
16279 Windows to function properly. A warning is issued, however. This
16280 affects both the AML interpreter and the iASL compiler. Below is
16281 an example of this type of ASL code:
16282
16283 Name(DEB,0x00)
16284 Scope(DEB)
16285 {
16286
16287 Fixed some reported problems with 64-bit integer support in the
16288 local implementation of C library functions (clib.c)
16289
16290
16291 2) Linux
16292
16293 Use ACPI fix map region instead of IOAPIC region, since it is
16294 undefined in non-SMP.
16295
16296 Ensure that the SCI has the proper polarity and trigger, even on
16297 systems that do not have an interrupt override entry in the MADT.
16298
16299 2.5 big driver reorganization (Pat Mochel)
16300
16301 Use early table mapping code from acpitable.c (Andi Kleen)
16302
16303 New blacklist entries (Andi Kleen)
16304
16305 Blacklist improvements. Split blacklist code out into a separate
16306 file. Move checking the blacklist to very early. Previously, we
16307 would use ACPI tables, and then halfway through init, check the
16308 blacklist -- too late. Now, it's early enough to completely fall-
16309 back to non-ACPI.
16310
16311
16312 3) iASL Compiler/Disassembler version 20020918:
16313
16314 Fixed a problem where the typechecking code didn't know that an
16315 alias could point to a method. In other words, aliases were not
16316 being dereferenced during typechecking.
16317
16318
16319 ----------------------------------------
16320 29 August 2002. Summary of changes for this release.
16321
16322 1) ACPI CA Core Subsystem Version 20020829:
16323
16324 If the target of a Scope() operator already exists, it must be an
16325 object type that actually opens a scope -- such as a Device,
16326 Method, Scope, etc. This is a fatal runtime error. Similar error
16327 check has been added to the iASL compiler also.
16328
16329 Tightened up the namespace load to disallow multiple names in the
16330 same scope. This previously was allowed if both objects were of
16331 the same type. (i.e., a lookup was the same as entering a new
16332 name).
16333
16334
16335 2) Linux
16336
16337 Ensure that the ACPI interrupt has the proper trigger and
16338 polarity.
16339
16340 local_irq_disable is extraneous. (Matthew Wilcox)
16341
16342 Make "acpi=off" actually do what it says, and not use the ACPI
16343 interpreter *or* the tables.
16344
16345 Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
16346 Takayoshi)
16347
16348
16349 3) iASL Compiler/Disassembler Version 20020829:
16350
16351 Implemented namepath optimization for name declarations. For
16352 example, a declaration like "Method (\_SB_.ABCD)" would get
16353 optimized to "Method (ABCD)" if the declaration is within the
16354 \_SB_ scope. This optimization is in addition to the named
16355 reference path optimization first released in the previous
16356 version. This would seem to complete all possible optimizations
16357 for namepaths within the ASL/AML.
16358
16359 If the target of a Scope() operator already exists, it must be an
16360 object type that actually opens a scope -- such as a Device,
16361 Method, Scope, etc.
16362
16363 Implemented a check and warning for unreachable code in the same
16364 block below a Return() statement.
16365
16366 Fixed a problem where the listing file was not generated if the
16367 compiler aborted if the maximum error count was exceeded (200).
16368
16369 Fixed a problem where the typechecking of method return values was
16370 broken. This includes the check for a return value when the
16371 method is invoked as a TermArg (a return value is expected.)
16372
16373 Fixed a reported problem where EOF conditions during a quoted
16374 string or comment caused a fault.
16375
16376
16377 ----------------------------------------
16378 15 August 2002. Summary of changes for this release.
16379
16380 1) ACPI CA Core Subsystem Version 20020815:
16381
16382 Fixed a reported problem where a Store to a method argument that
16383 contains a reference did not perform the indirect store correctly.
16384 This problem was created during the conversion to the new
16385 reference object model - the indirect store to a method argument
16386 code was not updated to reflect the new model.
16387
16388 Reworked the ACPI mode change code to better conform to ACPI 2.0,
16389 handle corner cases, and improve code legibility (Kochi Takayoshi)
16390
16391 Fixed a problem with the pathname parsing for the carat (^)
16392 prefix. The heavy use of the carat operator by the new namepath
16393 optimization in the iASL compiler uncovered a problem with the AML
16394 interpreter handling of this prefix. In the case where one or
16395 more carats precede a single nameseg, the nameseg was treated as
16396 standalone and the search rule (to root) was inadvertently
16397 applied. This could cause both the iASL compiler and the
16398 interpreter to find the wrong object or to miss the error that
16399 should occur if the object does not exist at that exact pathname.
16400
16401 Found and fixed the problem where the HP Pavilion DSDT would not
16402 load. This was a relatively minor tweak to the table loading code
16403 (a problem caused by the unexpected encounter with a method
16404 invocation not within a control method), but it does not solve the
16405 overall issue of the execution of AML code at the table level.
16406 This investigation is still ongoing.
16407
16408 Code and Data Size: Current core subsystem library sizes are shown
16409 below. These are the code and data sizes for the acpica.lib
16410 produced by the Microsoft Visual C++ 6.0 compiler, and these
16411 values do not include any ACPI driver or OSPM code. The debug
16412 version of the code includes the debug output trace mechanism and
16413 has a larger code and data size. Note that these values will vary
16414 depending on the efficiency of the compiler and the compiler
16415 options used during generation.
16416
16417 Previous Release
16418 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total
16419 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total
16420 Current Release:
16421 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total
16422 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total
16423
16424
16425 2) Linux
16426
16427 Remove redundant slab.h include (Brad Hards)
16428
16429 Fix several bugs in thermal.c (Herbert Nachtnebel)
16430
16431 Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
16432
16433 Change acpi_system_suspend to use updated irq functions (Pavel
16434 Machek)
16435
16436 Export acpi_get_firmware_table (Matthew Wilcox)
16437
16438 Use proper root proc entry for ACPI (Kochi Takayoshi)
16439
16440 Fix early-boot table parsing (Bjorn Helgaas)
16441
16442
16443 3) iASL Compiler/Disassembler
16444
16445 Reworked the compiler options to make them more consistent and to
16446 use two-letter options where appropriate. We were running out of
16447 sensible letters. This may break some makefiles, so check the
16448 current options list by invoking the compiler with no parameters.
16449
16450 Completed the design and implementation of the ASL namepath
16451 optimization option for the compiler. This option optimizes all
16452 references to named objects to the shortest possible path. The
16453 first attempt tries to utilize a single nameseg (4 characters) and
16454 the "search-to-root" algorithm used by the interpreter. If that
16455 cannot be used (because either the name is not in the search path
16456 or there is a conflict with another object with the same name),
16457 the pathname is optimized using the carat prefix (usually a
16458 shorter string than specifying the entire path from the root.)
16459
16460 Implemented support to obtain the DSDT from the Windows registry
16461 (when the disassembly option is specified with no input file).
16462 Added this code as the implementation for AcpiOsTableOverride in
16463 the Windows OSL. Migrated the 16-bit code (used in the AcpiDump
16464 utility) to scan memory for the DSDT to the AcpiOsTableOverride
16465 function in the DOS OSL to make the disassembler truly OS
16466 independent.
16467
16468 Implemented a new option to disassemble and compile in one step.
16469 When used without an input filename, this option will grab the
16470 DSDT from the local machine, disassemble it, and compile it in one
16471 step.
16472
16473 Added a warning message for invalid escapes (a backslash followed
16474 by any character other than the allowable escapes). This catches
16475 the quoted string error "\_SB_" (which should be "\\_SB_" ).
16476
16477 Also, there are numerous instances in the ACPI specification where
16478 this error occurs.
16479
16480 Added a compiler option to disable all optimizations. This is
16481 basically the "compatibility mode" because by using this option,
16482 the AML code will come out exactly the same as other ASL
16483 compilers.
16484
16485 Added error messages for incorrectly ordered dependent resource
16486 functions. This includes: missing EndDependentFn macro at end of
16487 dependent resource list, nested dependent function macros (both
16488 start and end), and missing StartDependentFn macro. These are
16489 common errors that should be caught at compile time.
16490
16491 Implemented _OSI support for the disassembler and compiler. _OSI
16492 must be included in the namespace for proper disassembly (because
16493 the disassembler must know the number of arguments.)
16494
16495 Added an "optimization" message type that is optional (off by
16496 default). This message is used for all optimizations - including
16497 constant folding, integer optimization, and namepath optimization.
16498
16499 ----------------------------------------
16500 25 July 2002. Summary of changes for this release.
16501
16502
16503 1) ACPI CA Core Subsystem Version 20020725:
16504
16505 The AML Disassembler has been enhanced to produce compilable ASL
16506 code and has been integrated into the iASL compiler (see below) as
16507 well as the single-step disassembly for the AML debugger and the
16508 disassembler for the AcpiDump utility. All ACPI 2.0A opcodes,
16509 resource templates and macros are fully supported. The
16510 disassembler has been tested on over 30 different AML files,
16511 producing identical AML when the resulting disassembled ASL file
16512 is recompiled with the same ASL compiler.
16513
16514 Modified the Resource Manager to allow zero interrupts and zero
16515 dma channels during the GetCurrentResources call. This was
16516 causing problems on some platforms.
16517
16518 Added the AcpiOsRedirectOutput interface to the OSL to simplify
16519 output redirection for the AcpiOsPrintf and AcpiOsVprintf
16520 interfaces.
16521
16522 Code and Data Size: Current core subsystem library sizes are shown
16523 below. These are the code and data sizes for the acpica.lib
16524 produced by the Microsoft Visual C++ 6.0 compiler, and these
16525 values do not include any ACPI driver or OSPM code. The debug
16526 version of the code includes the debug output trace mechanism and
16527 has a larger code and data size. Note that these values will vary
16528 depending on the efficiency of the compiler and the compiler
16529 options used during generation.
16530
16531 Previous Release
16532 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total
16533 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total
16534 Current Release:
16535 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total
16536 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total
16537
16538
16539 2) Linux
16540
16541 Fixed a panic in the EC driver (Dominik Brodowski)
16542
16543 Implemented checksum of the R/XSDT itself during Linux table scan
16544 (Richard Schaal)
16545
16546
16547 3) iASL compiler
16548
16549 The AML disassembler is integrated into the compiler. The "-d"
16550 option invokes the disassembler to completely disassemble an
16551 input AML file, producing as output a text ASL file with the
16552 extension ".dsl" (to avoid name collisions with existing .asl
16553 source files.) A future enhancement will allow the disassembler
16554 to obtain the BIOS DSDT from the registry under Windows.
16555
16556 Fixed a problem with the VendorShort and VendorLong resource
16557 descriptors where an invalid AML sequence was created.
16558
16559 Implemented a fix for BufferData term in the ASL parser. It was
16560 inadvertently defined twice, allowing invalid syntax to pass and
16561 causing reduction conflicts.
16562
16563 Fixed a problem where the Ones opcode could get converted to a
16564 value of zero if "Ones" was used where a byte, word or dword value
16565 was expected. The 64-bit value is now truncated to the correct
16566 size with the correct value.
16567
16568
16569
16570 ----------------------------------------
16571 02 July 2002. Summary of changes for this release.
16572
16573
16574 1) ACPI CA Core Subsystem Version 20020702:
16575
16576 The Table Manager code has been restructured to add several new
16577 features. Tables that are not required by the core subsystem
16578 (other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
16579 validated in any way and are returned from AcpiGetFirmwareTable if
16580 requested. The AcpiOsTableOverride interface is now called for
16581 each table that is loaded by the subsystem in order to allow the
16582 host to override any table it chooses. Previously, only the DSDT
16583 could be overridden. Added one new files, tbrsdt.c and
16584 tbgetall.c.
16585
16586 Fixed a problem with the conversion of internal package objects to
16587 external objects (when a package is returned from a control
16588 method.) The return buffer length was set to zero instead of the
16589 proper length of the package object.
16590
16591 Fixed a reported problem with the use of the RefOf and DeRefOf
16592 operators when passing reference arguments to control methods. A
16593 new type of Reference object is used internally for references
16594 produced by the RefOf operator.
16595
16596 Added additional error messages in the Resource Manager to explain
16597 AE_BAD_DATA errors when they occur during resource parsing.
16598
16599 Split the AcpiEnableSubsystem into two primitives to enable a
16600 finer granularity initialization sequence. These two calls should
16601 be called in this order: AcpiEnableSubsystem (flags),
16602 AcpiInitializeObjects (flags). The flags parameter remains the
16603 same.
16604
16605
16606 2) Linux
16607
16608 Updated the ACPI utilities module to understand the new style of
16609 fully resolved package objects that are now returned from the core
16610 subsystem. This eliminates errors of the form:
16611
16612 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
16613 acpi_utils-0430 [145] acpi_evaluate_reference:
16614 Invalid element in package (not a device reference)
16615
16616 The method evaluation utility uses the new buffer allocation
16617 scheme instead of calling AcpiEvaluate Object twice.
16618
16619 Added support for ECDT. This allows the use of the Embedded
16620
16621 Controller before the namespace has been fully initialized, which
16622 is necessary for ACPI 2.0 support, and for some laptops to
16623 initialize properly. (Laptops using ECDT are still rare, so only
16624 limited testing was performed of the added functionality.)
16625
16626 Fixed memory leaks in the EC driver.
16627
16628 Eliminated a brittle code structure in acpi_bus_init().
16629
16630 Eliminated the acpi_evaluate() helper function in utils.c. It is
16631 no longer needed since acpi_evaluate_object can optionally
16632 allocate memory for the return object.
16633
16634 Implemented fix for keyboard hang when getting battery readings on
16635 some systems (Stephen White)
16636
16637 PCI IRQ routing update (Dominik Brodowski)
16638
16639 Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
16640 support
16641
16642 ----------------------------------------
16643 11 June 2002. Summary of changes for this release.
16644
16645
16646 1) ACPI CA Core Subsystem Version 20020611:
16647
16648 Fixed a reported problem where constants such as Zero and One
16649 appearing within _PRT packages were not handled correctly within
16650 the resource manager code. Originally reported against the ASL
16651 compiler because the code generator now optimizes integers to
16652 their minimal AML representation (i.e. AML constants if possible.)
16653 The _PRT code now handles all AML constant opcodes correctly
16654 (Zero, One, Ones, Revision).
16655
16656 Fixed a problem with the Concatenate operator in the AML
16657 interpreter where a buffer result object was incorrectly marked as
16658 not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
16659
16660 All package sub-objects are now fully resolved before they are
16661 returned from the external ACPI interfaces. This means that name
16662 strings are resolved to object handles, and constant operators
16663 (Zero, One, Ones, Revision) are resolved to Integers.
16664
16665 Implemented immediate resolution of the AML Constant opcodes
16666 (Zero, One, Ones, Revision) to Integer objects upon detection
16667 within the AML stream. This has simplified and reduced the
16668 generated code size of the subsystem by eliminating about 10
16669 switch statements for these constants (which previously were
16670 contained in Reference objects.) The complicating issues are that
16671 the Zero opcode is used as a "placeholder" for unspecified
16672 optional target operands and stores to constants are defined to be
16673 no-ops.
16674
16675 Code and Data Size: Current core subsystem library sizes are shown
16676 below. These are the code and data sizes for the acpica.lib
16677 produced by the Microsoft Visual C++ 6.0 compiler, and these
16678 values do not include any ACPI driver or OSPM code. The debug
16679 version of the code includes the debug output trace mechanism and
16680 has a larger code and data size. Note that these values will vary
16681 depending on the efficiency of the compiler and the compiler
16682 options used during generation.
16683
16684 Previous Release
16685 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total
16686 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total
16687 Current Release:
16688 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total
16689 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total
16690
16691
16692 2) Linux
16693
16694
16695 Added preliminary support for obtaining _TRA data for PCI root
16696 bridges (Bjorn Helgaas).
16697
16698
16699 3) iASL Compiler Version X2046:
16700
16701 Fixed a problem where the "_DDN" reserved name was defined to be a
16702 control method with one argument. There are no arguments, and
16703 _DDN does not have to be a control method.
16704
16705 Fixed a problem with the Linux version of the compiler where the
16706 source lines printed with error messages were the wrong lines.
16707 This turned out to be the "LF versus CR/LF" difference between
16708 Windows and Unix. This appears to be the longstanding issue
16709 concerning listing output and error messages.
16710
16711 Fixed a problem with the Linux version of compiler where opcode
16712 names within error messages were wrong. This was caused by a
16713 slight difference in the output of the Flex tool on Linux versus
16714 Windows.
16715
16716 Fixed a problem with the Linux compiler where the hex output files
16717 contained some garbage data caused by an internal buffer overrun.
16718
16719
16720 ----------------------------------------
16721 17 May 2002. Summary of changes for this release.
16722
16723
16724 1) ACPI CA Core Subsystem Version 20020517:
16725
16726 Implemented a workaround to an BIOS bug discovered on the HP
16727 OmniBook where the FADT revision number and the table size are
16728 inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new
16729 behavior is to fallback to using only the ACPI 1.0 fields of the
16730 FADT if the table is too small to be a ACPI 2.0 table as claimed
16731 by the revision number. Although this is a BIOS bug, this is a
16732 case where the workaround is simple enough and with no side
16733 effects, so it seemed prudent to add it. A warning message is
16734 issued, however.
16735
16736 Implemented minimum size checks for the fixed-length ACPI tables -
16737 - the FADT and FACS, as well as consistency checks between the
16738 revision number and the table size.
16739
16740 Fixed a reported problem in the table override support where the
16741 new table pointer was incorrectly treated as a physical address
16742 instead of a logical address.
16743
16744 Eliminated the use of the AE_AML_ERROR exception and replaced it
16745 with more descriptive codes.
16746
16747 Fixed a problem where an exception would occur if an ASL Field was
16748 defined with no named Field Units underneath it (used by some
16749 index fields).
16750
16751 Code and Data Size: Current core subsystem library sizes are shown
16752 below. These are the code and data sizes for the acpica.lib
16753 produced by the Microsoft Visual C++ 6.0 compiler, and these
16754 values do not include any ACPI driver or OSPM code. The debug
16755 version of the code includes the debug output trace mechanism and
16756 has a larger code and data size. Note that these values will vary
16757 depending on the efficiency of the compiler and the compiler
16758 options used during generation.
16759
16760 Previous Release
16761 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total
16762 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total
16763 Current Release:
16764 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total
16765 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total
16766
16767
16768
16769 2) Linux
16770
16771 Much work done on ACPI init (MADT and PCI IRQ routing support).
16772 (Paul D. and Dominik Brodowski)
16773
16774 Fix PCI IRQ-related panic on boot (Sam Revitch)
16775
16776 Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
16777
16778 Fix "MHz" typo (Dominik Brodowski)
16779
16780 Fix RTC year 2000 issue (Dominik Brodowski)
16781
16782 Preclude multiple button proc entries (Eric Brunet)
16783
16784 Moved arch-specific code out of include/platform/aclinux.h
16785
16786 3) iASL Compiler Version X2044:
16787
16788 Implemented error checking for the string used in the EISAID macro
16789 (Usually used in the definition of the _HID object.) The code now
16790 strictly enforces the PnP format - exactly 7 characters, 3
16791 uppercase letters and 4 hex digits.
16792
16793 If a raw string is used in the definition of the _HID object
16794 (instead of the EISAID macro), the string must contain all
16795 alphanumeric characters (e.g., "*PNP0011" is not allowed because
16796 of the asterisk.)
16797
16798 Implemented checking for invalid use of ACPI reserved names for
16799 most of the name creation operators (Name, Device, Event, Mutex,
16800 OperationRegion, PowerResource, Processor, and ThermalZone.)
16801 Previously, this check was only performed for control methods.
16802
16803 Implemented an additional check on the Name operator to emit an
16804 error if a reserved name that must be implemented in ASL as a
16805 control method is used. We know that a reserved name must be a
16806 method if it is defined with input arguments.
16807
16808 The warning emitted when a namespace object reference is not found
16809 during the cross reference phase has been changed into an error.
16810 The "External" directive should be used for names defined in other
16811 modules.
16812
16813
16814 4) Tools and Utilities
16815
16816 The 16-bit tools (adump16 and aexec16) have been regenerated and
16817 tested.
16818
16819 Fixed a problem with the output of both acpidump and adump16 where
16820 the indentation of closing parentheses and brackets was not
16821
16822 aligned properly with the parent block.
16823
16824
16825 ----------------------------------------
16826 03 May 2002. Summary of changes for this release.
16827
16828
16829 1) ACPI CA Core Subsystem Version 20020503:
16830
16831 Added support a new OSL interface that allows the host operating
16832
16833 system software to override the DSDT found in the firmware -
16834 AcpiOsTableOverride. With this interface, the OSL can examine the
16835 version of the firmware DSDT and replace it with a different one
16836 if desired.
16837
16838 Added new external interfaces for accessing ACPI registers from
16839 device drivers and other system software - AcpiGetRegister and
16840 AcpiSetRegister. This was simply an externalization of the
16841 existing AcpiHwBitRegister interfaces.
16842
16843 Fixed a regression introduced in the previous build where the
16844 ASL/AML CreateField operator always returned an error,
16845 "destination must be a NS Node".
16846
16847 Extended the maximum time (before failure) to successfully enable
16848 ACPI mode to 3 seconds.
16849
16850 Code and Data Size: Current core subsystem library sizes are shown
16851 below. These are the code and data sizes for the acpica.lib
16852 produced by the Microsoft Visual C++ 6.0 compiler, and these
16853 values do not include any ACPI driver or OSPM code. The debug
16854 version of the code includes the debug output trace mechanism and
16855 has a larger code and data size. Note that these values will vary
16856 depending on the efficiency of the compiler and the compiler
16857 options used during generation.
16858
16859 Previous Release
16860 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total
16861 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total
16862 Current Release:
16863 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total
16864 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total
16865
16866
16867 2) Linux
16868
16869 Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
16870 free. While 3 out of 4 of our in-house systems work fine, the last
16871 one still hangs when testing the LAPIC timer.
16872
16873 Renamed many files in 2.5 kernel release to omit "acpi_" from the
16874 name.
16875
16876 Added warning on boot for Presario 711FR.
16877
16878 Sleep improvements (Pavel Machek)
16879
16880 ACPI can now be built without CONFIG_PCI enabled.
16881
16882 IA64: Fixed memory map functions (JI Lee)
16883
16884
16885 3) iASL Compiler Version X2043:
16886
16887 Added support to allow the compiler to be integrated into the MS
16888 VC++ development environment for one-button compilation of single
16889 files or entire projects -- with error-to-source-line mapping.
16890
16891 Implemented support for compile-time constant folding for the
16892 Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
16893 specification. This allows the ASL writer to use expressions
16894 instead of Integer/Buffer/String constants in terms that must
16895 evaluate to constants at compile time and will also simplify the
16896 emitted AML in any such sub-expressions that can be folded
16897 (evaluated at compile-time.) This increases the size of the
16898 compiler significantly because a portion of the ACPI CA AML
16899 interpreter is included within the compiler in order to pre-
16900 evaluate constant expressions.
16901
16902
16903 Fixed a problem with the "Unicode" ASL macro that caused the
16904 compiler to fault. (This macro is used in conjunction with the
16905 _STR reserved name.)
16906
16907 Implemented an AML opcode optimization to use the Zero, One, and
16908 Ones opcodes where possible to further reduce the size of integer
16909 constants and thus reduce the overall size of the generated AML
16910 code.
16911
16912 Implemented error checking for new reserved terms for ACPI version
16913 2.0A.
16914
16915 Implemented the -qr option to display the current list of ACPI
16916 reserved names known to the compiler.
16917
16918 Implemented the -qc option to display the current list of ASL
16919 operators that are allowed within constant expressions and can
16920 therefore be folded at compile time if the operands are constants.
16921
16922
16923 4) Documentation
16924
16925 Updated the Programmer's Reference for new interfaces, data types,
16926 and memory allocation model options.
16927
16928 Updated the iASL Compiler User Reference to apply new format and
16929 add information about new features and options.
16930
16931 ----------------------------------------
16932 19 April 2002. Summary of changes for this release.
16933
16934 1) ACPI CA Core Subsystem Version 20020419:
16935
16936 The source code base for the Core Subsystem has been completely
16937 cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
16938 versions. The Lint option files used are included in the
16939 /acpi/generate/lint directory.
16940
16941 Implemented enhanced status/error checking across the entire
16942 Hardware manager subsystem. Any hardware errors (reported from
16943 the OSL) are now bubbled up and will abort a running control
16944 method.
16945
16946
16947 Fixed a problem where the per-ACPI-table integer width (32 or 64)
16948 was stored only with control method nodes, causing a fault when
16949 non-control method code was executed during table loading. The
16950 solution implemented uses a global variable to indicate table
16951 width across the entire ACPI subsystem. Therefore, ACPI CA does
16952 not support mixed integer widths across different ACPI tables
16953 (DSDT, SSDT).
16954
16955 Fixed a problem where NULL extended fields (X fields) in an ACPI
16956 2.0 ACPI FADT caused the table load to fail. Although the
16957 existing ACPI specification is a bit fuzzy on this topic, the new
16958 behavior is to fall back on a ACPI 1.0 field if the corresponding
16959 ACPI 2.0 X field is zero (even though the table revision indicates
16960 a full ACPI 2.0 table.) The ACPI specification will be updated to
16961 clarify this issue.
16962
16963 Fixed a problem with the SystemMemory operation region handler
16964 where memory was always accessed byte-wise even if the AML-
16965 specified access width was larger than a byte. This caused
16966 problems on systems with memory-mapped I/O. Memory is now
16967 accessed with the width specified. On systems that do not support
16968 non-aligned transfers, a check is made to guarantee proper address
16969 alignment before proceeding in order to avoid an AML-caused
16970 alignment fault within the kernel.
16971
16972
16973 Fixed a problem with the ExtendedIrq resource where only one byte
16974 of the 4-byte Irq field was extracted.
16975
16976 Fixed the AcpiExDigitsNeeded() procedure to support _UID. This
16977 function was out of date and required a rewrite.
16978
16979 Code and Data Size: Current core subsystem library sizes are shown
16980 below. These are the code and data sizes for the acpica.lib
16981 produced by the Microsoft Visual C++ 6.0 compiler, and these
16982 values do not include any ACPI driver or OSPM code. The debug
16983 version of the code includes the debug output trace mechanism and
16984 has a larger code and data size. Note that these values will vary
16985 depending on the efficiency of the compiler and the compiler
16986 options used during generation.
16987
16988 Previous Release
16989 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total
16990 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total
16991 Current Release:
16992 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total
16993 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total
16994
16995
16996 2) Linux
16997
16998 PCI IRQ routing fixes (Dominik Brodowski)
16999
17000
17001 3) iASL Compiler Version X2042:
17002
17003 Implemented an additional compile-time error check for a field
17004 unit whose size + minimum access width would cause a run-time
17005 access beyond the end-of-region. Previously, only the field size
17006 itself was checked.
17007
17008 The Core subsystem and iASL compiler now share a common parse
17009 object in preparation for compile-time evaluation of the type
17010 3/4/5 ASL operators.
17011
17012
17013 ----------------------------------------
17014 Summary of changes for this release: 03_29_02
17015
17016 1) ACPI CA Core Subsystem Version 20020329:
17017
17018 Implemented support for late evaluation of TermArg operands to
17019 Buffer and Package objects. This allows complex expressions to be
17020 used in the declarations of these object types.
17021
17022 Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
17023 1.0, if the field was larger than 32 bits, it was returned as a
17024 buffer - otherwise it was returned as an integer. In ACPI 2.0,
17025 the field is returned as a buffer only if the field is larger than
17026 64 bits. The TableRevision is now considered when making this
17027 conversion to avoid incompatibility with existing ASL code.
17028
17029 Implemented logical addressing for AcpiOsGetRootPointer. This
17030 allows an RSDP with either a logical or physical address. With
17031 this support, the host OS can now override all ACPI tables with
17032 one logical RSDP. Includes implementation of "typed" pointer
17033 support to allow a common data type for both physical and logical
17034 pointers internally. This required a change to the
17035 AcpiOsGetRootPointer interface.
17036
17037 Implemented the use of ACPI 2.0 Generic Address Structures for all
17038 GPE, Fixed Event, and PM Timer I/O. This allows the use of memory
17039 mapped I/O for these ACPI features.
17040
17041 Initialization now ignores not only non-required tables (All
17042 tables other than the FADT, FACS, DSDT, and SSDTs), but also does
17043 not validate the table headers of unrecognized tables.
17044
17045 Fixed a problem where a notify handler could only be
17046 installed/removed on an object of type Device. All "notify"
17047
17048 objects are now supported -- Devices, Processor, Power, and
17049 Thermal.
17050
17051 Removed most verbosity from the ACPI_DB_INFO debug level. Only
17052 critical information is returned when this debug level is enabled.
17053
17054 Code and Data Size: Current core subsystem library sizes are shown
17055 below. These are the code and data sizes for the acpica.lib
17056 produced by the Microsoft Visual C++ 6.0 compiler, and these
17057 values do not include any ACPI driver or OSPM code. The debug
17058 version of the code includes the debug output trace mechanism and
17059 has a larger code and data size. Note that these values will vary
17060 depending on the efficiency of the compiler and the compiler
17061 options used during generation.
17062
17063 Previous Release
17064 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total
17065 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total
17066 Current Release:
17067 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total
17068 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total
17069
17070
17071 2) Linux:
17072
17073 The processor driver (acpi_processor.c) now fully supports ACPI
17074 2.0-based processor performance control (e.g. Intel(R)
17075 SpeedStep(TM) technology) Note that older laptops that only have
17076 the Intel "applet" interface are not supported through this. The
17077 'limit' and 'performance' interface (/proc) are fully functional.
17078 [Note that basic policy for controlling performance state
17079 transitions will be included in the next version of ospmd.] The
17080 idle handler was modified to more aggressively use C2, and PIIX4
17081 errata handling underwent a complete overhaul (big thanks to
17082 Dominik Brodowski).
17083
17084 Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
17085 based devices in the ACPI namespace are now dynamically bound
17086 (associated) with their PCI counterparts (e.g. PCI1->01:00.0).
17087 This allows, among other things, ACPI to resolve bus numbers for
17088 subordinate PCI bridges.
17089
17090 Enhanced PCI IRQ routing to get the proper bus number for _PRT
17091 entries defined underneath PCI bridges.
17092
17093 Added IBM 600E to bad bios list due to invalid _ADR value for
17094 PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
17095
17096 In the process of adding full MADT support (e.g. IOAPIC) for IA32
17097 (acpi.c, mpparse.c) -- stay tuned.
17098
17099 Added back visual differentiation between fixed-feature and
17100 control-method buttons in dmesg. Buttons are also subtyped (e.g.
17101 button/power/PWRF) to simplify button identification.
17102
17103 We no longer use -Wno-unused when compiling debug. Please ignore
17104 any "_THIS_MODULE defined but not used" messages.
17105
17106 Can now shut down the system using "magic sysrq" key.
17107
17108
17109 3) iASL Compiler version 2041:
17110
17111 Fixed a problem where conversion errors for hex/octal/decimal
17112 constants were not reported.
17113
17114 Implemented a fix for the General Register template Address field.
17115 This field was 8 bits when it should be 64.
17116
17117 Fixed a problem where errors/warnings were no longer being emitted
17118 within the listing output file.
17119
17120 Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
17121 exactly 4 characters, alphanumeric only.
17122
17123
17124
17125
17126 ----------------------------------------
17127 Summary of changes for this release: 03_08_02
17128
17129
17130 1) ACPI CA Core Subsystem Version 20020308:
17131
17132 Fixed a problem with AML Fields where the use of the "AccessAny"
17133 keyword could cause an interpreter error due to attempting to read
17134 or write beyond the end of the parent Operation Region.
17135
17136 Fixed a problem in the SystemMemory Operation Region handler where
17137 an attempt was made to map memory beyond the end of the region.
17138 This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
17139 errors on some Linux systems.
17140
17141 Fixed a problem where the interpreter/namespace "search to root"
17142 algorithm was not functioning for some object types. Relaxed the
17143 internal restriction on the search to allow upsearches for all
17144 external object types as well as most internal types.
17145
17146
17147 2) Linux:
17148
17149 We now use safe_halt() macro versus individual calls to sti | hlt.
17150
17151 Writing to the processor limit interface should now work. "echo 1"
17152 will increase the limit, 2 will decrease, and 0 will reset to the
17153
17154 default.
17155
17156
17157 3) ASL compiler:
17158
17159 Fixed segfault on Linux version.
17160
17161
17162 ----------------------------------------
17163 Summary of changes for this release: 02_25_02
17164
17165 1) ACPI CA Core Subsystem:
17166
17167
17168 Fixed a problem where the GPE bit masks were not initialized
17169 properly, causing erratic GPE behavior.
17170
17171 Implemented limited support for multiple calling conventions. The
17172 code can be generated with either the VPL (variable parameter
17173 list, or "C") convention, or the FPL (fixed parameter list, or
17174 "Pascal") convention. The core subsystem is about 3.4% smaller
17175 when generated with FPL.
17176
17177
17178 2) Linux
17179
17180 Re-add some /proc/acpi/event functionality that was lost during
17181 the rewrite
17182
17183 Resolved issue with /proc events for fixed-feature buttons showing
17184 up as the system device.
17185
17186 Fixed checks on C2/C3 latencies to be inclusive of maximum values.
17187
17188 Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
17189
17190 Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
17191
17192 Fixed limit interface & usage to fix bugs with passive cooling
17193 hysterisis.
17194
17195 Restructured PRT support.
17196
17197
17198 ----------------------------------------
17199 Summary of changes for this label: 02_14_02
17200
17201
17202 1) ACPI CA Core Subsystem:
17203
17204 Implemented support in AcpiLoadTable to allow loading of FACS and
17205 FADT tables.
17206
17207 Support for the now-obsolete interim 0.71 64-bit ACPI tables has
17208 been removed. All 64-bit platforms should be migrated to the ACPI
17209 2.0 tables. The actbl71.h header has been removed from the source
17210 tree.
17211
17212 All C macros defined within the subsystem have been prefixed with
17213 "ACPI_" to avoid collision with other system include files.
17214
17215 Removed the return value for the two AcpiOsPrint interfaces, since
17216 it is never used and causes lint warnings for ignoring the return
17217 value.
17218
17219 Added error checking to all internal mutex acquire and release
17220 calls. Although a failure from one of these interfaces is
17221 probably a fatal system error, these checks will cause the
17222 immediate abort of the currently executing method or interface.
17223
17224 Fixed a problem where the AcpiSetCurrentResources interface could
17225 fault. This was a side effect of the deployment of the new memory
17226 allocation model.
17227
17228 Fixed a couple of problems with the Global Lock support introduced
17229 in the last major build. The "common" (1.0/2.0) internal FACS was
17230 being overwritten with the FACS signature and clobbering the
17231 Global Lock pointer. Also, the actual firmware FACS was being
17232 unmapped after construction of the "common" FACS, preventing
17233 access to the actual Global Lock field within it. The "common"
17234 internal FACS is no longer installed as an actual ACPI table; it
17235 is used simply as a global.
17236
17237 Code and Data Size: Current core subsystem library sizes are shown
17238 below. These are the code and data sizes for the acpica.lib
17239 produced by the Microsoft Visual C++ 6.0 compiler, and these
17240 values do not include any ACPI driver or OSPM code. The debug
17241 version of the code includes the debug output trace mechanism and
17242 has a larger code and data size. Note that these values will vary
17243 depending on the efficiency of the compiler and the compiler
17244 options used during generation.
17245
17246 Previous Release (02_07_01)
17247 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total
17248 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total
17249 Current Release:
17250 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total
17251 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total
17252
17253
17254 2) Linux
17255
17256 Updated Linux-specific code for core macro and OSL interface
17257 changes described above.
17258
17259 Improved /proc/acpi/event. It now can be opened only once and has
17260 proper poll functionality.
17261
17262 Fixed and restructured power management (acpi_bus).
17263
17264 Only create /proc "view by type" when devices of that class exist.
17265
17266 Fixed "charging/discharging" bug (and others) in acpi_battery.
17267
17268 Improved thermal zone code.
17269
17270
17271 3) ASL Compiler, version X2039:
17272
17273
17274 Implemented the new compiler restriction on ASL String hex/octal
17275 escapes to non-null, ASCII values. An error results if an invalid
17276 value is used. (This will require an ACPI 2.0 specification
17277 change.)
17278
17279 AML object labels that are output to the optional C and ASM source
17280 are now prefixed with both the ACPI table signature and table ID
17281 to help guarantee uniqueness within a large BIOS project.
17282
17283
17284 ----------------------------------------
17285 Summary of changes for this label: 02_01_02
17286
17287 1) ACPI CA Core Subsystem:
17288
17289 ACPI 2.0 support is complete in the entire Core Subsystem and the
17290 ASL compiler. All new ACPI 2.0 operators are implemented and all
17291 other changes for ACPI 2.0 support are complete. With
17292 simultaneous code and data optimizations throughout the subsystem,
17293 ACPI 2.0 support has been implemented with almost no additional
17294 cost in terms of code and data size.
17295
17296 Implemented a new mechanism for allocation of return buffers. If
17297 the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
17298 be allocated on behalf of the caller. Consolidated all return
17299 buffer validation and allocation to a common procedure. Return
17300 buffers will be allocated via the primary OSL allocation interface
17301 since it appears that a separate pool is not needed by most users.
17302 If a separate pool is required for these buffers, the caller can
17303 still use the original mechanism and pre-allocate the buffer(s).
17304
17305 Implemented support for string operands within the DerefOf
17306 operator.
17307
17308 Restructured the Hardware and Event managers to be table driven,
17309 simplifying the source code and reducing the amount of generated
17310 code.
17311
17312 Split the common read/write low-level ACPI register bitfield
17313 procedure into a separate read and write, simplifying the code
17314 considerably.
17315
17316 Obsoleted the AcpiOsCallocate OSL interface. This interface was
17317 used only a handful of times and didn't have enough critical mass
17318 for a separate interface. Replaced with a common calloc procedure
17319 in the core.
17320
17321 Fixed a reported problem with the GPE number mapping mechanism
17322 that allows GPE1 numbers to be non-contiguous with GPE0.
17323 Reorganized the GPE information and shrunk a large array that was
17324 originally large enough to hold info for all possible GPEs (256)
17325 to simply large enough to hold all GPEs up to the largest GPE
17326 number on the machine.
17327
17328 Fixed a reported problem with resource structure alignment on 64-
17329 bit platforms.
17330
17331 Changed the AcpiEnableEvent and AcpiDisableEvent external
17332 interfaces to not require any flags for the common case of
17333 enabling/disabling a GPE.
17334
17335 Implemented support to allow a "Notify" on a Processor object.
17336
17337 Most TBDs in comments within the source code have been resolved
17338 and eliminated.
17339
17340
17341 Fixed a problem in the interpreter where a standalone parent
17342 prefix (^) was not handled correctly in the interpreter and
17343 debugger.
17344
17345 Removed obsolete and unnecessary GPE save/restore code.
17346
17347 Implemented Field support in the ASL Load operator. This allows a
17348 table to be loaded from a named field, in addition to loading a
17349 table directly from an Operation Region.
17350
17351 Implemented timeout and handle support in the external Global Lock
17352 interfaces.
17353
17354 Fixed a problem in the AcpiDump utility where pathnames were no
17355 longer being generated correctly during the dump of named objects.
17356
17357 Modified the AML debugger to give a full display of if/while
17358 predicates instead of just one AML opcode at a time. (The
17359 predicate can have several nested ASL statements.) The old method
17360 was confusing during single stepping.
17361
17362 Code and Data Size: Current core subsystem library sizes are shown
17363 below. These are the code and data sizes for the acpica.lib
17364 produced by the Microsoft Visual C++ 6.0 compiler, and these
17365 values do not include any ACPI driver or OSPM code. The debug
17366 version of the code includes the debug output trace mechanism and
17367 has a larger code and data size. Note that these values will vary
17368 depending on the efficiency of the compiler and the compiler
17369 options used during generation.
17370
17371 Previous Release (12_18_01)
17372 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total
17373 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total
17374 Current Release:
17375 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total
17376 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total
17377
17378 2) Linux
17379
17380 Implemented fix for PIIX reverse throttling errata (Processor
17381 driver)
17382
17383 Added new Limit interface (Processor and Thermal drivers)
17384
17385 New thermal policy (Thermal driver)
17386
17387 Many updates to /proc
17388
17389 Battery "low" event support (Battery driver)
17390
17391 Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
17392
17393 IA32 - IA64 initialization unification, no longer experimental
17394
17395 Menuconfig options redesigned
17396
17397 3) ASL Compiler, version X2037:
17398
17399 Implemented several new output features to simplify integration of
17400 AML code into firmware: 1) Output the AML in C source code with
17401 labels for each named ASL object. The original ASL source code
17402 is interleaved as C comments. 2) Output the AML in ASM source code
17403 with labels and interleaved ASL source. 3) Output the AML in
17404 raw hex table form, in either C or ASM.
17405
17406 Implemented support for optional string parameters to the
17407 LoadTable operator.
17408
17409 Completed support for embedded escape sequences within string
17410 literals. The compiler now supports all single character escapes
17411 as well as the Octal and Hex escapes. Note: the insertion of a
17412 null byte into a string literal (via the hex/octal escape) causes
17413 the string to be immediately terminated. A warning is issued.
17414
17415 Fixed a problem where incorrect AML was generated for the case
17416 where an ASL namepath consists of a single parent prefix (
17417
17418 ) with no trailing name segments.
17419
17420 The compiler has been successfully generated with a 64-bit C
17421 compiler.
17422
17423
17424
17425
17426 ----------------------------------------
17427 Summary of changes for this label: 12_18_01
17428
17429 1) Linux
17430
17431 Enhanced blacklist with reason and severity fields. Any table's
17432 signature may now be used to identify a blacklisted system.
17433
17434 Call _PIC control method to inform the firmware which interrupt
17435 model the OS is using. Turn on any disabled link devices.
17436
17437 Cleaned up busmgr /proc error handling (Andreas Dilger)
17438
17439 2) ACPI CA Core Subsystem:
17440
17441 Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
17442 while loop)
17443
17444 Completed implementation of the ACPI 2.0 "Continue",
17445 "ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
17446 operators. All new ACPI 2.0 operators are now implemented in both
17447 the ASL compiler and the AML interpreter. The only remaining ACPI
17448 2.0 task is support for the String data type in the DerefOf
17449 operator. Fixed a problem with AcquireMutex where the status code
17450 was lost if the caller had to actually wait for the mutex.
17451
17452 Increased the maximum ASL Field size from 64K bits to 4G bits.
17453
17454 Completed implementation of the external Global Lock interfaces --
17455 AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and
17456 Handler parameters were added.
17457
17458 Completed another pass at removing warnings and issues when
17459 compiling with 64-bit compilers. The code now compiles cleanly
17460 with the Intel 64-bit C/C++ compiler. Most notably, the pointer
17461 add and subtract (diff) macros have changed considerably.
17462
17463
17464 Created and deployed a new ACPI_SIZE type that is 64-bits wide on
17465 64-bit platforms, 32-bits on all others. This type is used
17466 wherever memory allocation and/or the C sizeof() operator is used,
17467 and affects the OSL memory allocation interfaces AcpiOsAllocate
17468 and AcpiOsCallocate.
17469
17470 Implemented sticky user breakpoints in the AML debugger.
17471
17472 Code and Data Size: Current core subsystem library sizes are shown
17473 below. These are the code and data sizes for the acpica.lib
17474 produced by the Microsoft Visual C++ 6.0 compiler, and these
17475 values do not include any ACPI driver or OSPM code. The debug
17476 version of the code includes the debug output trace mechanism and
17477 has a larger code and data size. Note that these values will vary
17478 depending on the efficiency of the compiler and the compiler
17479 options used during generation.
17480
17481 Previous Release (12_05_01)
17482 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total
17483 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total
17484 Current Release:
17485 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total
17486 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total
17487
17488 3) ASL Compiler, version X2034:
17489
17490 Now checks for (and generates an error if detected) the use of a
17491 Break or Continue statement without an enclosing While statement.
17492
17493
17494 Successfully generated the compiler with the Intel 64-bit C
17495 compiler.
17496
17497 ----------------------------------------
17498 Summary of changes for this label: 12_05_01
17499
17500 1) ACPI CA Core Subsystem:
17501
17502 The ACPI 2.0 CopyObject operator is fully implemented. This
17503 operator creates a new copy of an object (and is also used to
17504 bypass the "implicit conversion" mechanism of the Store operator.)
17505
17506 The ACPI 2.0 semantics for the SizeOf operator are fully
17507 implemented. The change is that performing a SizeOf on a
17508 reference object causes an automatic dereference of the object to
17509 tha actual value before the size is evaluated. This behavior was
17510 undefined in ACPI 1.0.
17511
17512 The ACPI 2.0 semantics for the Extended IRQ resource descriptor
17513 have been implemented. The interrupt polarity and mode are now
17514 independently set.
17515
17516 Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
17517 appearing in Package objects were not properly converted to
17518 integers when the internal Package was converted to an external
17519 object (via the AcpiEvaluateObject interface.)
17520
17521 Fixed a problem with the namespace object deletion mechanism for
17522 objects created by control methods. There were two parts to this
17523 problem: 1) Objects created during the initialization phase method
17524 parse were not being deleted, and 2) The object owner ID mechanism
17525 to track objects was broken.
17526
17527 Fixed a problem where the use of the ASL Scope operator within a
17528 control method would result in an invalid opcode exception.
17529
17530 Fixed a problem introduced in the previous label where the buffer
17531 length required for the _PRT structure was not being returned
17532 correctly.
17533
17534 Code and Data Size: Current core subsystem library sizes are shown
17535 below. These are the code and data sizes for the acpica.lib
17536 produced by the Microsoft Visual C++ 6.0 compiler, and these
17537 values do not include any ACPI driver or OSPM code. The debug
17538 version of the code includes the debug output trace mechanism and
17539 has a larger code and data size. Note that these values will vary
17540 depending on the efficiency of the compiler and the compiler
17541 options used during generation.
17542
17543 Previous Release (11_20_01)
17544 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total
17545 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total
17546
17547 Current Release:
17548 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total
17549 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total
17550
17551 2) Linux:
17552
17553 Updated all files to apply cleanly against 2.4.16.
17554
17555 Added basic PCI Interrupt Routing Table (PRT) support for IA32
17556 (acpi_pci.c), and unified the PRT code for IA32 and IA64. This
17557 version supports both static and dynamic PRT entries, but dynamic
17558 entries are treated as if they were static (not yet
17559 reconfigurable). Architecture- specific code to use this data is
17560 absent on IA32 but should be available shortly.
17561
17562 Changed the initialization sequence to start the ACPI interpreter
17563 (acpi_init) prior to initialization of the PCI driver (pci_init)
17564 in init/main.c. This ordering is required to support PRT and
17565 facilitate other (future) enhancement. A side effect is that the
17566 ACPI bus driver and certain device drivers can no longer be loaded
17567 as modules.
17568
17569 Modified the 'make menuconfig' options to allow PCI Interrupt
17570 Routing support to be included without the ACPI Bus and other
17571 device drivers.
17572
17573 3) ASL Compiler, version X2033:
17574
17575 Fixed some issues with the use of the new CopyObject and
17576 DataTableRegion operators. Both are fully functional.
17577
17578 ----------------------------------------
17579 Summary of changes for this label: 11_20_01
17580
17581 20 November 2001. Summary of changes for this release.
17582
17583 1) ACPI CA Core Subsystem:
17584
17585 Updated Index support to match ACPI 2.0 semantics. Storing a
17586 Integer, String, or Buffer to an Index of a Buffer will store only
17587 the least-significant byte of the source to the Indexed buffer
17588 byte. Multiple writes are not performed.
17589
17590 Fixed a problem where the access type used in an AccessAs ASL
17591 operator was not recorded correctly into the field object.
17592
17593 Fixed a problem where ASL Event objects were created in a
17594 signalled state. Events are now created in an unsignalled state.
17595
17596 The internal object cache is now purged after table loading and
17597 initialization to reduce the use of dynamic kernel memory -- on
17598 the assumption that object use is greatest during the parse phase
17599 of the entire table (versus the run-time use of individual control
17600 methods.)
17601
17602 ACPI 2.0 variable-length packages are now fully operational.
17603
17604 Code and Data Size: Code and Data optimizations have permitted new
17605 feature development with an actual reduction in the library size.
17606 Current core subsystem library sizes are shown below. These are
17607 the code and data sizes for the acpica.lib produced by the
17608 Microsoft Visual C++ 6.0 compiler, and these values do not include
17609 any ACPI driver or OSPM code. The debug version of the code
17610 includes the debug output trace mechanism and has a larger code
17611 and data size. Note that these values will vary depending on the
17612 efficiency of the compiler and the compiler options used during
17613 generation.
17614
17615 Previous Release (11_09_01):
17616 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total
17617 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total
17618
17619 Current Release:
17620 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total
17621 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total
17622
17623 2) Linux:
17624
17625 Enhanced the ACPI boot-time initialization code to allow the use
17626 of Local APIC tables for processor enumeration on IA-32, and to
17627 pave the way for a fully MPS-free boot (on SMP systems) in the
17628 near future. This functionality replaces
17629 arch/i386/kernel/acpitables.c, which was introduced in an earlier
17630 2.4.15-preX release. To enable this feature you must add
17631 "acpi_boot=on" to the kernel command line -- see the help entry
17632 for CONFIG_ACPI_BOOT for more information. An IA-64 release is in
17633 the works...
17634
17635 Restructured the configuration options to allow boot-time table
17636 parsing support without inclusion of the ACPI Interpreter (and
17637 other) code.
17638
17639 NOTE: This release does not include fixes for the reported events,
17640 power-down, and thermal passive cooling issues (coming soon).
17641
17642 3) ASL Compiler:
17643
17644 Added additional typechecking for Fields within restricted access
17645 Operation Regions. All fields within EC and CMOS regions must be
17646 declared with ByteAcc. All fields within SMBus regions must be
17647 declared with the BufferAcc access type.
17648
17649 Fixed a problem where the listing file output of control methods
17650 no longer interleaved the actual AML code with the ASL source
17651 code.
17652
17653
17654
17655
17656 ----------------------------------------
17657 Summary of changes for this label: 11_09_01
17658
17659 1) ACPI CA Core Subsystem:
17660
17661 Implemented ACPI 2.0-defined support for writes to fields with a
17662 Buffer, String, or Integer source operand that is smaller than the
17663 target field. In these cases, the source operand is zero-extended
17664 to fill the target field.
17665
17666 Fixed a problem where a Field starting bit offset (within the
17667 parent operation region) was calculated incorrectly if the
17668
17669 alignment of the field differed from the access width. This
17670 affected CreateWordField, CreateDwordField, CreateQwordField, and
17671 possibly other fields that use the "AccessAny" keyword.
17672
17673 Fixed a problem introduced in the 11_02_01 release where indirect
17674 stores through method arguments did not operate correctly.
17675
17676 2) Linux:
17677
17678 Implemented boot-time ACPI table parsing support
17679 (CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code
17680 facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
17681 legacy BIOS interfaces (e.g. MPS) for the configuration of system
17682 processors, memory, and interrupts during setup_arch(). Note that
17683 this patch does not include the required architecture-specific
17684 changes required to apply this information -- subsequent patches
17685 will be posted for both IA32 and IA64 to achieve this.
17686
17687 Added low-level sleep support for IA32 platforms, courtesy of Pat
17688 Mochel. This allows IA32 systems to transition to/from various
17689 sleeping states (e.g. S1, S3), although the lack of a centralized
17690 driver model and power-manageable drivers will prevent its
17691 (successful) use on most systems.
17692
17693 Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
17694 submenu, unified IA32 and IA64 options, added new "Boot using ACPI
17695 tables" option, etc.
17696
17697 Increased the default timeout for the EC driver from 1ms to 10ms
17698 (1000 cycles of 10us) to try to address AE_TIME errors during EC
17699 transactions.
17700
17701 ----------------------------------------
17702 Summary of changes for this label: 11_02_01
17703
17704 1) ACPI CA Core Subsystem:
17705
17706 ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
17707 (QWordAcc keyword). All ACPI 2.0 64-bit support is now
17708 implemented.
17709
17710 OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
17711 changes to support ACPI 2.0 Qword field access. Read/Write
17712 PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
17713 accept an ACPI_INTEGER (64 bits) as the value parameter. Also,
17714 the value parameter for the address space handler interface is now
17715 an ACPI_INTEGER. OSL implementations of these interfaces must now
17716 handle the case where the Width parameter is 64.
17717
17718 Index Fields: Fixed a problem where unaligned bit assembly and
17719 disassembly for IndexFields was not supported correctly.
17720
17721 Index and Bank Fields: Nested Index and Bank Fields are now
17722 supported. During field access, a check is performed to ensure
17723 that the value written to an Index or Bank register is not out of
17724 the range of the register. The Index (or Bank) register is
17725 written before each access to the field data. Future support will
17726 include allowing individual IndexFields to be wider than the
17727 DataRegister width.
17728
17729 Fields: Fixed a problem where the AML interpreter was incorrectly
17730 attempting to write beyond the end of a Field/OpRegion. This was
17731 a boundary case that occurred when a DWORD field was written to a
17732 BYTE access OpRegion, forcing multiple writes and causing the
17733 interpreter to write one datum too many.
17734
17735 Fields: Fixed a problem with Field/OpRegion access where the
17736 starting bit address of a field was incorrectly calculated if the
17737 current access type was wider than a byte (WordAcc, DwordAcc, or
17738 QwordAcc).
17739
17740 Fields: Fixed a problem where forward references to individual
17741 FieldUnits (individual Field names within a Field definition) were
17742 not resolved during the AML table load.
17743
17744 Fields: Fixed a problem where forward references from a Field
17745 definition to the parent Operation Region definition were not
17746 resolved during the AML table load.
17747
17748 Fields: Duplicate FieldUnit names within a scope are now detected
17749 during AML table load.
17750
17751 Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
17752 returned an incorrect name for the root node.
17753
17754 Code and Data Size: Code and Data optimizations have permitted new
17755 feature development with an actual reduction in the library size.
17756 Current core subsystem library sizes are shown below. These are
17757 the code and data sizes for the acpica.lib produced by the
17758 Microsoft Visual C++ 6.0 compiler, and these values do not include
17759 any ACPI driver or OSPM code. The debug version of the code
17760 includes the debug output trace mechanism and has a larger code
17761 and data size. Note that these values will vary depending on the
17762 efficiency of the compiler and the compiler options used during
17763 generation.
17764
17765 Previous Release (10_18_01):
17766 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total
17767 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total
17768
17769 Current Release:
17770 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total
17771 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total
17772
17773 2) Linux:
17774
17775 Improved /proc processor output (Pavel Machek) Re-added
17776 MODULE_LICENSE("GPL") to all modules.
17777
17778 3) ASL Compiler version X2030:
17779
17780 Duplicate FieldUnit names within a scope are now detected and
17781 flagged as errors.
17782
17783 4) Documentation:
17784
17785 Programmer Reference updated to reflect OSL and address space
17786 handler interface changes described above.
17787
17788 ----------------------------------------
17789 Summary of changes for this label: 10_18_01
17790
17791 ACPI CA Core Subsystem:
17792
17793 Fixed a problem with the internal object reference count mechanism
17794 that occasionally caused premature object deletion. This resolves
17795 all of the outstanding problem reports where an object is deleted
17796 in the middle of an interpreter evaluation. Although this problem
17797 only showed up in rather obscure cases, the solution to the
17798 problem involved an adjustment of all reference counts involving
17799 objects attached to namespace nodes.
17800
17801 Fixed a problem with Field support in the interpreter where
17802 writing to an aligned field whose length is an exact multiple (2
17803 or greater) of the field access granularity would cause an attempt
17804 to write beyond the end of the field.
17805
17806 The top level AML opcode execution functions within the
17807 interpreter have been renamed with a more meaningful and
17808 consistent naming convention. The modules exmonad.c and
17809 exdyadic.c were eliminated. New modules are exoparg1.c,
17810 exoparg2.c, exoparg3.c, and exoparg6.c.
17811
17812 Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
17813
17814 Fixed a problem where the AML debugger was causing some internal
17815 objects to not be deleted during subsystem termination.
17816
17817 Fixed a problem with the external AcpiEvaluateObject interface
17818 where the subsystem would fault if the named object to be
17819 evaluated referred to a constant such as Zero, Ones, etc.
17820
17821 Fixed a problem with IndexFields and BankFields where the
17822 subsystem would fault if the index, data, or bank registers were
17823 not defined in the same scope as the field itself.
17824
17825 Added printf format string checking for compilers that support
17826 this feature. Corrected more than 50 instances of issues with
17827 format specifiers within invocations of ACPI_DEBUG_PRINT
17828 throughout the core subsystem code.
17829
17830 The ASL "Revision" operator now returns the ACPI support level
17831 implemented in the core - the value "2" since the ACPI 2.0 support
17832 is more than 50% implemented.
17833
17834 Enhanced the output of the AML debugger "dump namespace" command
17835 to output in a more human-readable form.
17836
17837 Current core subsystem library code sizes are shown below. These
17838
17839 are the code and data sizes for the acpica.lib produced by the
17840 Microsoft Visual C++ 6.0 compiler, and these values do not include
17841 any ACPI driver or OSPM code. The debug version of the code
17842 includes the full debug trace mechanism -- leading to a much
17843
17844 larger code and data size. Note that these values will vary
17845 depending on the efficiency of the compiler and the compiler
17846 options used during generation.
17847
17848 Previous Label (09_20_01):
17849 Non-Debug Version: 65K Code, 5K Data, 70K Total
17850 Debug Version: 138K Code, 58K Data, 196K Total
17851
17852 This Label:
17853
17854 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total
17855 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total
17856
17857 Linux:
17858
17859 Implemented a "Bad BIOS Blacklist" to track machines that have
17860 known ASL/AML problems.
17861
17862 Enhanced the /proc interface for the thermal zone driver and added
17863 support for _HOT (the critical suspend trip point). The 'info'
17864 file now includes threshold/policy information, and allows setting
17865 of _SCP (cooling preference) and _TZP (polling frequency) values
17866 to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
17867 frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
17868 preference to the passive/quiet mode (if supported by the ASL).
17869
17870 Implemented a workaround for a gcc bug that resuted in an OOPs
17871 when loading the control method battery driver.
17872
17873 ----------------------------------------
17874 Summary of changes for this label: 09_20_01
17875
17876 ACPI CA Core Subsystem:
17877
17878 The AcpiEnableEvent and AcpiDisableEvent interfaces have been
17879 modified to allow individual GPE levels to be flagged as wake-
17880 enabled (i.e., these GPEs are to remain enabled when the platform
17881 sleeps.)
17882
17883 The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
17884 support wake-enabled GPEs. This means that upon entering the
17885 sleep state, all GPEs that are not wake-enabled are disabled.
17886 When leaving the sleep state, these GPEs are re-enabled.
17887
17888 A local double-precision divide/modulo module has been added to
17889 enhance portability to OS kernels where a 64-bit math library is
17890 not available. The new module is "utmath.c".
17891
17892 Several optimizations have been made to reduce the use of CPU
17893 stack. Originally over 2K, the maximum stack usage is now below
17894 2K at 1860 bytes (1.82k)
17895
17896 Fixed a problem with the AcpiGetFirmwareTable interface where the
17897 root table pointer was not mapped into a logical address properly.
17898
17899 Fixed a problem where a NULL pointer was being dereferenced in the
17900 interpreter code for the ASL Notify operator.
17901
17902 Fixed a problem where the use of the ASL Revision operator
17903 returned an error. This operator now returns the current version
17904 of the ACPI CA core subsystem.
17905
17906 Fixed a problem where objects passed as control method parameters
17907 to AcpiEvaluateObject were always deleted at method termination.
17908 However, these objects may end up being stored into the namespace
17909 by the called method. The object reference count mechanism was
17910 applied to these objects instead of a force delete.
17911
17912 Fixed a problem where static strings or buffers (contained in the
17913 AML code) that are declared as package elements within the ASL
17914 code could cause a fault because the interpreter would attempt to
17915 delete them. These objects are now marked with the "static
17916 object" flag to prevent any attempt to delete them.
17917
17918 Implemented an interpreter optimization to use operands directly
17919 from the state object instead of extracting the operands to local
17920 variables. This reduces stack use and code size, and improves
17921 performance.
17922
17923 The module exxface.c was eliminated as it was an unnecessary extra
17924 layer of code.
17925
17926 Current core subsystem library code sizes are shown below. These
17927 are the code and data sizes for the acpica.lib produced by the
17928 Microsoft Visual C++ 6.0 compiler, and these values do not include
17929 any ACPI driver or OSPM code. The debug version of the code
17930 includes the full debug trace mechanism -- leading to a much
17931 larger code and data size. Note that these values will vary
17932 depending on the efficiency of the compiler and the compiler
17933 options used during generation.
17934
17935 Non-Debug Version: 65K Code, 5K Data, 70K Total
17936 (Previously 69K) Debug Version: 138K Code, 58K Data, 196K
17937 Total (Previously 195K)
17938
17939 Linux:
17940
17941 Support for ACPI 2.0 64-bit integers has been added. All ACPI
17942 Integer objects are now 64 bits wide
17943
17944 All Acpi data types and structures are now in lower case. Only
17945 Acpi macros are upper case for differentiation.
17946
17947 Documentation:
17948
17949 Changes to the external interfaces as described above.
17950
17951 ----------------------------------------
17952 Summary of changes for this label: 08_31_01
17953
17954 ACPI CA Core Subsystem:
17955
17956 A bug with interpreter implementation of the ASL Divide operator
17957 was found and fixed. The implicit function return value (not the
17958 explicit store operands) was returning the remainder instead of
17959 the quotient. This was a longstanding bug and it fixes several
17960 known outstanding issues on various platforms.
17961
17962 The ACPI_DEBUG_PRINT and function trace entry/exit macros have
17963 been further optimized for size. There are 700 invocations of the
17964 DEBUG_PRINT macro alone, so each optimization reduces the size of
17965 the debug version of the subsystem significantly.
17966
17967 A stack trace mechanism has been implemented. The maximum stack
17968 usage is about 2K on 32-bit platforms. The debugger command "stat
17969 stack" will display the current maximum stack usage.
17970
17971 All public symbols and global variables within the subsystem are
17972 now prefixed with the string "Acpi". This keeps all of the
17973 symbols grouped together in a kernel map, and avoids conflicts
17974 with other kernel subsystems.
17975
17976 Most of the internal fixed lookup tables have been moved into the
17977 code segment via the const operator.
17978
17979 Several enhancements have been made to the interpreter to both
17980 reduce the code size and improve performance.
17981
17982 Current core subsystem library code sizes are shown below. These
17983 are the code and data sizes for the acpica.lib produced by the
17984 Microsoft Visual C++ 6.0 compiler, and these values do not include
17985 any ACPI driver or OSPM code. The debug version of the code
17986 includes the full debug trace mechanism which contains over 700
17987 invocations of the DEBUG_PRINT macro, 500 function entry macro
17988 invocations, and over 900 function exit macro invocations --
17989 leading to a much larger code and data size. Note that these
17990 values will vary depending on the efficiency of the compiler and
17991 the compiler options used during generation.
17992
17993 Non-Debug Version: 64K Code, 5K Data, 69K Total
17994 Debug Version: 137K Code, 58K Data, 195K Total
17995
17996 Linux:
17997
17998 Implemented wbinvd() macro, pending a kernel-wide definition.
17999
18000 Fixed /proc/acpi/event to handle poll() and short reads.
18001
18002 ASL Compiler, version X2026:
18003
18004 Fixed a problem introduced in the previous label where the AML
18005
18006 code emitted for package objects produced packages with zero
18007 length.
18008
18009 ----------------------------------------
18010 Summary of changes for this label: 08_16_01
18011
18012 ACPI CA Core Subsystem:
18013
18014 The following ACPI 2.0 ASL operators have been implemented in the
18015 AML interpreter (These are already supported by the Intel ASL
18016 compiler): ToDecimalString, ToHexString, ToString, ToInteger, and
18017 ToBuffer. Support for 64-bit AML constants is implemented in the
18018 AML parser, debugger, and disassembler.
18019
18020 The internal memory tracking mechanism (leak detection code) has
18021 been upgraded to reduce the memory overhead (a separate tracking
18022 block is no longer allocated for each memory allocation), and now
18023 supports all of the internal object caches.
18024
18025 The data structures and code for the internal object caches have
18026 been coelesced and optimized so that there is a single cache and
18027 memory list data structure and a single group of functions that
18028 implement generic cache management. This has reduced the code
18029 size in both the debug and release versions of the subsystem.
18030
18031 The DEBUG_PRINT macro(s) have been optimized for size and replaced
18032 by ACPI_DEBUG_PRINT. The syntax for this macro is slightly
18033 different, because it generates a single call to an internal
18034 function. This results in a savings of about 90 bytes per
18035 invocation, resulting in an overall code and data savings of about
18036 16% in the debug version of the subsystem.
18037
18038 Linux:
18039
18040 Fixed C3 disk corruption problems and re-enabled C3 on supporting
18041 machines.
18042
18043 Integrated low-level sleep code by Patrick Mochel.
18044
18045 Further tweaked source code Linuxization.
18046
18047 Other minor fixes.
18048
18049 ASL Compiler:
18050
18051 Support for ACPI 2.0 variable length packages is fixed/completed.
18052
18053 Fixed a problem where the optional length parameter for the ACPI
18054 2.0 ToString operator.
18055
18056 Fixed multiple extraneous error messages when a syntax error is
18057 detected within the declaration line of a control method.
18058
18059 ----------------------------------------
18060 Summary of changes for this label: 07_17_01
18061
18062 ACPI CA Core Subsystem:
18063
18064 Added a new interface named AcpiGetFirmwareTable to obtain any
18065 ACPI table via the ACPI signature. The interface can be called at
18066 any time during kernel initialization, even before the kernel
18067 virtual memory manager is initialized and paging is enabled. This
18068 allows kernel subsystems to obtain ACPI tables very early, even
18069 before the ACPI CA subsystem is initialized.
18070
18071 Fixed a problem where Fields defined with the AnyAcc attribute
18072 could be resolved to the incorrect address under the following
18073 conditions: 1) the field width is larger than 8 bits and 2) the
18074 parent operation region is not defined on a DWORD boundary.
18075
18076 Fixed a problem where the interpreter is not being locked during
18077 namespace initialization (during execution of the _INI control
18078 methods), causing an error when an attempt is made to release it
18079 later.
18080
18081 ACPI 2.0 support in the AML Interpreter has begun and will be
18082 ongoing throughout the rest of this year. In this label, The Mod
18083 operator is implemented.
18084
18085 Added a new data type to contain full PCI addresses named
18086 ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
18087 and Function values.
18088
18089 Linux:
18090
18091 Enhanced the Linux version of the source code to change most
18092 capitalized ACPI type names to lowercase. For example, all
18093 instances of ACPI_STATUS are changed to acpi_status. This will
18094 result in a large diff, but the change is strictly cosmetic and
18095 aligns the CA code closer to the Linux coding standard.
18096
18097 OSL Interfaces:
18098
18099 The interfaces to the PCI configuration space have been changed to
18100 add the PCI Segment number and to split the single 32-bit combined
18101 DeviceFunction field into two 16-bit fields. This was
18102 accomplished by moving the four values that define an address in
18103 PCI configuration space (segment, bus, device, and function) to
18104 the new ACPI_PCI_ID structure.
18105
18106 The changes to the PCI configuration space interfaces led to a
18107 reexamination of the complete set of address space access
18108 interfaces for PCI, I/O, and Memory. The previously existing 18
18109 interfaces have proven difficult to maintain (any small change
18110 must be propagated across at least 6 interfaces) and do not easily
18111 allow for future expansion to 64 bits if necessary. Also, on some
18112 systems, it would not be appropriate to demultiplex the access
18113 width (8, 16, 32,or 64) before calling the OSL if the
18114 corresponding native OS interfaces contain a similar access width
18115 parameter. For these reasons, the 18 address space interfaces
18116 have been replaced by these 6 new ones:
18117
18118 AcpiOsReadPciConfiguration
18119 AcpiOsWritePciConfiguration
18120 AcpiOsReadMemory
18121 AcpiOsWriteMemory
18122 AcpiOsReadPort
18123 AcpiOsWritePort
18124
18125 Added a new interface named AcpiOsGetRootPointer to allow the OSL
18126 to perform the platform and/or OS-specific actions necessary to
18127 obtain the ACPI RSDP table pointer. On IA-32 platforms, this
18128 interface will simply call down to the CA core to perform the low-
18129 memory search for the table. On IA-64, the RSDP is obtained from
18130 EFI. Migrating this interface to the OSL allows the CA core to
18131
18132 remain OS and platform independent.
18133
18134 Added a new interface named AcpiOsSignal to provide a generic
18135 "function code and pointer" interface for various miscellaneous
18136 signals and notifications that must be made to the host OS. The
18137 first such signals are intended to support the ASL Fatal and
18138 Breakpoint operators. In the latter case, the AcpiOsBreakpoint
18139 interface has been obsoleted.
18140
18141 The definition of the AcpiFormatException interface has been
18142 changed to simplify its use. The caller no longer must supply a
18143 buffer to the call; A pointer to a const string is now returned
18144 directly. This allows the call to be easily used in printf
18145 statements, etc. since the caller does not have to manage a local
18146 buffer.
18147
18148
18149 ASL Compiler, Version X2025:
18150
18151 The ACPI 2.0 Switch/Case/Default operators have been implemented
18152 and are fully functional. They will work with all ACPI 1.0
18153 interpreters, since the operators are simply translated to If/Else
18154 pairs.
18155
18156 The ACPI 2.0 ElseIf operator is implemented and will also work
18157 with 1.0 interpreters, for the same reason.
18158
18159 Implemented support for ACPI 2.0 variable-length packages. These
18160 packages have a separate opcode, and their size is determined by
18161 the interpreter at run-time.
18162
18163 Documentation The ACPI CA Programmer Reference has been updated to
18164 reflect the new interfaces and changes to existing interfaces.
18165
18166 ------------------------------------------
18167 Summary of changes for this label: 06_15_01
18168
18169 ACPI CA Core Subsystem:
18170
18171 Fixed a problem where a DWORD-accessed field within a Buffer
18172 object would get its byte address inadvertently rounded down to
18173 the nearest DWORD. Buffers are always Byte-accessible.
18174
18175 ASL Compiler, version X2024:
18176
18177 Fixed a problem where the Switch() operator would either fault or
18178 hang the compiler. Note however, that the AML code for this ACPI
18179 2.0 operator is not yet implemented.
18180
18181 Compiler uses the new AcpiOsGetTimer interface to obtain compile
18182 timings.
18183
18184 Implementation of the CreateField operator automatically converts
18185 a reference to a named field within a resource descriptor from a
18186 byte offset to a bit offset if required.
18187
18188 Added some missing named fields from the resource descriptor
18189 support. These are the names that are automatically created by the
18190 compiler to reference fields within a descriptor. They are only
18191 valid at compile time and are not passed through to the AML
18192 interpreter.
18193
18194 Resource descriptor named fields are now typed as Integers and
18195 subject to compile-time typechecking when used in expressions.
18196
18197 ------------------------------------------
18198 Summary of changes for this label: 05_18_01
18199
18200 ACPI CA Core Subsystem:
18201
18202 Fixed a couple of problems in the Field support code where bits
18203 from adjacent fields could be returned along with the proper field
18204 bits. Restructured the field support code to improve performance,
18205 readability and maintainability.
18206
18207 New DEBUG_PRINTP macro automatically inserts the procedure name
18208 into the output, saving hundreds of copies of procedure name
18209 strings within the source, shrinking the memory footprint of the
18210 debug version of the core subsystem.
18211
18212 Source Code Structure:
18213
18214 The source code directory tree was restructured to reflect the
18215 current organization of the component architecture. Some files
18216 and directories have been moved and/or renamed.
18217
18218 Linux:
18219
18220 Fixed leaking kacpidpc processes.
18221
18222 Fixed queueing event data even when /proc/acpi/event is not
18223 opened.
18224
18225 ASL Compiler, version X2020:
18226
18227 Memory allocation performance enhancement - over 24X compile time
18228 improvement on large ASL files. Parse nodes and namestring
18229 buffers are now allocated from a large internal compiler buffer.
18230
18231 The temporary .SRC file is deleted unless the "-s" option is
18232 specified
18233
18234 The "-d" debug output option now sends all output to the .DBG file
18235 instead of the console.
18236
18237 "External" second parameter is now optional
18238
18239 "ElseIf" syntax now properly allows the predicate
18240
18241 Last operand to "Load" now recognized as a Target operand
18242
18243 Debug object can now be used anywhere as a normal object.
18244
18245 ResourceTemplate now returns an object of type BUFFER
18246
18247 EISAID now returns an object of type INTEGER
18248
18249 "Index" now works with a STRING operand
18250
18251 "LoadTable" now accepts optional parameters
18252
18253 "ToString" length parameter is now optional
18254
18255 "Interrupt (ResourceType," parse error fixed.
18256
18257 "Register" with a user-defined region space parse error fixed
18258
18259 Escaped backslash at the end of a string ("\\") scan/parse error
18260 fixed
18261
18262 "Revision" is now an object of type INTEGER.
18263
18264
18265
18266 ------------------------------------------
18267 Summary of changes for this label: 05_02_01
18268
18269 Linux:
18270
18271 /proc/acpi/event now blocks properly.
18272
18273 Removed /proc/sys/acpi. You can still dump your DSDT from
18274 /proc/acpi/dsdt.
18275
18276 ACPI CA Core Subsystem:
18277
18278 Fixed a problem introduced in the previous label where some of the
18279 "small" resource descriptor types were not recognized.
18280
18281 Improved error messages for the case where an ASL Field is outside
18282 the range of the parent operation region.
18283
18284 ASL Compiler, version X2018:
18285
18286
18287 Added error detection for ASL Fields that extend beyond the length
18288 of the parent operation region (only if the length of the region
18289 is known at compile time.) This includes fields that have a
18290 minimum access width that is smaller than the parent region, and
18291 individual field units that are partially or entirely beyond the
18292 extent of the parent.
18293
18294
18295
18296 ------------------------------------------
18297 Summary of changes for this label: 04_27_01
18298
18299 ACPI CA Core Subsystem:
18300
18301 Fixed a problem where the namespace mutex could be released at the
18302 wrong time during execution of AcpiRemoveAddressSpaceHandler.
18303
18304 Added optional thread ID output for debug traces, to simplify
18305 debugging of multiple threads. Added context switch notification
18306 when the debug code realizes that a different thread is now
18307 executing ACPI code.
18308
18309 Some additional external data types have been prefixed with the
18310 string "ACPI_" for consistency. This may effect existing code.
18311 The data types affected are the external callback typedefs - e.g.,
18312
18313 WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
18314
18315 Linux:
18316
18317 Fixed an issue with the OSL semaphore implementation where a
18318 thread was waking up with an error from receiving a SIGCHLD
18319 signal.
18320
18321 Linux version of ACPI CA now uses the system C library for string
18322 manipulation routines instead of a local implementation.
18323
18324 Cleaned up comments and removed TBDs.
18325
18326 ASL Compiler, version X2017:
18327
18328 Enhanced error detection and reporting for all file I/O
18329 operations.
18330
18331 Documentation:
18332
18333 Programmer Reference updated to version 1.06.
18334
18335
18336
18337 ------------------------------------------
18338 Summary of changes for this label: 04_13_01
18339
18340 ACPI CA Core Subsystem:
18341
18342 Restructured support for BufferFields and RegionFields.
18343 BankFields support is now fully operational. All known 32-bit
18344 limitations on field sizes have been removed. Both BufferFields
18345 and (Operation) RegionFields are now supported by the same field
18346 management code.
18347
18348 Resource support now supports QWORD address and IO resources. The
18349 16/32/64 bit address structures and the Extended IRQ structure
18350 have been changed to properly handle Source Resource strings.
18351
18352 A ThreadId of -1 is now used to indicate a "mutex not acquired"
18353 condition internally and must never be returned by AcpiOsThreadId.
18354 This reserved value was changed from 0 since Unix systems allow a
18355 thread ID of 0.
18356
18357 Linux:
18358
18359 Driver code reorganized to enhance portability
18360
18361 Added a kernel configuration option to control ACPI_DEBUG
18362
18363 Fixed the EC driver to honor _GLK.
18364
18365 ASL Compiler, version X2016:
18366
18367 Fixed support for the "FixedHw" keyword. Previously, the FixedHw
18368 address space was set to 0, not 0x7f as it should be.
18369
18370 ------------------------------------------
18371 Summary of changes for this label: 03_13_01
18372
18373 ACPI CA Core Subsystem:
18374
18375 During ACPI initialization, the _SB_._INI method is now run if
18376 present.
18377
18378 Notify handler fix - notifies are deferred until the parent method
18379 completes execution. This fixes the "mutex already acquired"
18380 issue seen occasionally.
18381
18382 Part of the "implicit conversion" rules in ACPI 2.0 have been
18383 found to cause compatibility problems with existing ASL/AML. The
18384 convert "result-to-target-type" implementation has been removed
18385 for stores to method Args and Locals. Source operand conversion
18386 is still fully implemented. Possible changes to ACPI 2.0
18387 specification pending.
18388
18389 Fix to AcpiRsCalculatePciRoutingTableLength to return correct
18390 length.
18391
18392 Fix for compiler warnings for 64-bit compiles.
18393
18394 Linux:
18395
18396 /proc output aligned for easier parsing.
18397
18398 Release-version compile problem fixed.
18399
18400 New kernel configuration options documented in Configure.help.
18401
18402 IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
18403 context" message.
18404
18405 OSPM:
18406
18407 Power resource driver integrated with bus manager.
18408
18409 Fixed kernel fault during active cooling for thermal zones.
18410
18411 Source Code:
18412
18413 The source code tree has been restructured.
18414
18415
18416
18417 ------------------------------------------
18418 Summary of changes for this label: 03_02_01
18419
18420 Linux OS Services Layer (OSL):
18421
18422 Major revision of all Linux-specific code.
18423
18424 Modularized all ACPI-specific drivers.
18425
18426 Added new thermal zone and power resource drivers.
18427
18428 Revamped /proc interface (new functionality is under /proc/acpi).
18429
18430 New kernel configuration options.
18431
18432 Linux known issues:
18433
18434 New kernel configuration options not documented in Configure.help
18435 yet.
18436
18437
18438 Module dependencies not currently implemented. If used, they
18439 should be loaded in this order: busmgr, power, ec, system,
18440 processor, battery, ac_adapter, button, thermal.
18441
18442 Modules will not load if CONFIG_MODVERSION is set.
18443
18444 IBM 600E - entering S5 may reboot instead of shutting down.
18445
18446 IBM 600E - Sleep button may generate "Invalid <NULL> context"
18447 message.
18448
18449 Some systems may fail with "execution mutex already acquired"
18450 message.
18451
18452 ACPI CA Core Subsystem:
18453
18454 Added a new OSL Interface, AcpiOsGetThreadId. This was required
18455 for the deadlock detection code. Defined to return a non-zero, 32-
18456 bit thread ID for the currently executing thread. May be a non-
18457 zero constant integer on single-thread systems.
18458
18459 Implemented deadlock detection for internal subsystem mutexes. We
18460 may add conditional compilation for this code (debug only) later.
18461
18462 ASL/AML Mutex object semantics are now fully supported. This
18463 includes multiple acquires/releases by owner and support for the
18464
18465 Mutex SyncLevel parameter.
18466
18467 A new "Force Release" mechanism automatically frees all ASL
18468 Mutexes that have been acquired but not released when a thread
18469 exits the interpreter. This forces conformance to the ACPI spec
18470 ("All mutexes must be released when an invocation exits") and
18471 prevents deadlocked ASL threads. This mechanism can be expanded
18472 (later) to monitor other resource acquisitions if OEM ASL code
18473 continues to misbehave (which it will).
18474
18475 Several new ACPI exception codes have been added for the Mutex
18476 support.
18477
18478 Recursive method calls are now allowed and supported (the ACPI
18479 spec does in fact allow recursive method calls.) The number of
18480 recursive calls is subject to the restrictions imposed by the
18481 SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
18482 parameter.
18483
18484 Implemented support for the SyncLevel parameter for control
18485 methods (ACPI 2.0 feature)
18486
18487 Fixed a deadlock problem when multiple threads attempted to use
18488 the interpreter.
18489
18490 Fixed a problem where the string length of a String package
18491 element was not always set in a package returned from
18492 AcpiEvaluateObject.
18493
18494 Fixed a problem where the length of a String package element was
18495 not always included in the length of the overall package returned
18496 from AcpiEvaluateObject.
18497
18498 Added external interfaces (Acpi*) to the ACPI debug memory
18499 manager. This manager keeps a list of all outstanding
18500 allocations, and can therefore detect memory leaks and attempts to
18501 free memory blocks more than once. Useful for code such as the
18502 power manager, etc. May not be appropriate for device drivers.
18503 Performance with the debug code enabled is slow.
18504
18505 The ACPI Global Lock is now an optional hardware element.
18506
18507 ASL Compiler Version X2015:
18508
18509 Integrated changes to allow the compiler to be generated on
18510 multiple platforms.
18511
18512 Linux makefile added to generate the compiler on Linux
18513
18514 Source Code:
18515
18516 All platform-specific headers have been moved to their own
18517 subdirectory, Include/Platform.
18518
18519 New source file added, Interpreter/ammutex.c
18520
18521 New header file, Include/acstruct.h
18522
18523 Documentation:
18524
18525 The programmer reference has been updated for the following new
18526 interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
18527
18528 ------------------------------------------
18529 Summary of changes for this label: 02_08_01
18530
18531 Core ACPI CA Subsystem: Fixed a problem where an error was
18532 incorrectly returned if the return resource buffer was larger than
18533 the actual data (in the resource interfaces).
18534
18535 References to named objects within packages are resolved to the
18536
18537 full pathname string before packages are returned directly (via
18538 the AcpiEvaluateObject interface) or indirectly via the resource
18539 interfaces.
18540
18541 Linux OS Services Layer (OSL):
18542
18543 Improved /proc battery interface.
18544
18545
18546 Added C-state debugging output and other miscellaneous fixes.
18547
18548 ASL Compiler Version X2014:
18549
18550 All defined method arguments can now be used as local variables,
18551 including the ones that are not actually passed in as parameters.
18552 The compiler tracks initialization of the arguments and issues an
18553 exception if they are used without prior assignment (just like
18554 locals).
18555
18556 The -o option now specifies a filename prefix that is used for all
18557 output files, including the AML output file. Otherwise, the
18558 default behavior is as follows: 1) the AML goes to the file
18559 specified in the DSDT. 2) all other output files use the input
18560 source filename as the base.
18561
18562 ------------------------------------------
18563 Summary of changes for this label: 01_25_01
18564
18565 Core ACPI CA Subsystem: Restructured the implementation of object
18566 store support within the interpreter. This includes support for
18567 the Store operator as well as any ASL operators that include a
18568 target operand.
18569
18570 Partially implemented support for Implicit Result-to-Target
18571 conversion. This is when a result object is converted on the fly
18572 to the type of an existing target object. Completion of this
18573 support is pending further analysis of the ACPI specification
18574 concerning this matter.
18575
18576 CPU-specific code has been removed from the subsystem (hardware
18577 directory).
18578
18579 New Power Management Timer functions added
18580
18581 Linux OS Services Layer (OSL): Moved system state transition code
18582 to the core, fixed it, and modified Linux OSL accordingly.
18583
18584 Fixed C2 and C3 latency calculations.
18585
18586
18587 We no longer use the compilation date for the version message on
18588 initialization, but retrieve the version from AcpiGetSystemInfo().
18589
18590 Incorporated for fix Sony VAIO machines.
18591
18592 Documentation: The Programmer Reference has been updated and
18593 reformatted.
18594
18595
18596 ASL Compiler: Version X2013: Fixed a problem where the line
18597 numbering and error reporting could get out of sync in the
18598 presence of multiple include files.
18599
18600 ------------------------------------------
18601 Summary of changes for this label: 01_15_01
18602
18603 Core ACPI CA Subsystem:
18604
18605 Implemented support for type conversions in the execution of the
18606 ASL Concatenate operator (The second operand is converted to
18607 match the type of the first operand before concatenation.)
18608
18609 Support for implicit source operand conversion is partially
18610 implemented. The ASL source operand types Integer, Buffer, and
18611 String are freely interchangeable for most ASL operators and are
18612 converted by the interpreter on the fly as required. Implicit
18613 Target operand conversion (where the result is converted to the
18614 target type before storing) is not yet implemented.
18615
18616 Support for 32-bit and 64-bit BCD integers is implemented.
18617
18618 Problem fixed where a field read on an aligned field could cause a
18619 read past the end of the field.
18620
18621 New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
18622 does not return a value, but the caller expects one. (The ASL
18623 compiler flags this as a warning.)
18624
18625 ASL Compiler:
18626
18627 Version X2011:
18628 1. Static typechecking of all operands is implemented. This
18629 prevents the use of invalid objects (such as using a Package where
18630 an Integer is required) at compile time instead of at interpreter
18631 run-time.
18632 2. The ASL source line is printed with ALL errors and warnings.
18633 3. Bug fix for source EOF without final linefeed.
18634 4. Debug option is split into a parse trace and a namespace trace.
18635 5. Namespace output option (-n) includes initial values for
18636 integers and strings.
18637 6. Parse-only option added for quick syntax checking.
18638 7. Compiler checks for duplicate ACPI name declarations
18639
18640 Version X2012:
18641 1. Relaxed typechecking to allow interchangeability between
18642 strings, integers, and buffers. These types are now converted by
18643 the interpreter at runtime.
18644 2. Compiler reports time taken by each internal subsystem in the
18645 debug output file.
18646
18647
18648 ------------------------------------------
18649 Summary of changes for this label: 12_14_00
18650
18651 ASL Compiler:
18652
18653 This is the first official release of the compiler. Since the
18654 compiler requires elements of the Core Subsystem, this label
18655 synchronizes everything.
18656
18657 ------------------------------------------
18658 Summary of changes for this label: 12_08_00
18659
18660
18661 Fixed a problem where named references within the ASL definition
18662 of both OperationRegions and CreateXXXFields did not work
18663 properly. The symptom was an AE_AML_OPERAND_TYPE during
18664 initialization of the region/field. This is similar (but not
18665 related internally) to the problem that was fixed in the last
18666 label.
18667
18668 Implemented both 32-bit and 64-bit support for the BCD ASL
18669 functions ToBCD and FromBCD.
18670
18671 Updated all legal headers to include "2000" in the copyright
18672 years.
18673
18674 ------------------------------------------
18675 Summary of changes for this label: 12_01_00
18676
18677 Fixed a problem where method invocations within the ASL definition
18678 of both OperationRegions and CreateXXXFields did not work
18679 properly. The symptom was an AE_AML_OPERAND_TYPE during
18680 initialization of the region/field:
18681
18682 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
18683 [DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
18684 (0x3005)
18685
18686 Fixed a problem where operators with more than one nested
18687 subexpression would fail. The symptoms were varied, by mostly
18688 AE_AML_OPERAND_TYPE errors. This was actually a rather serious
18689 problem that has gone unnoticed until now.
18690
18691 Subtract (Add (1,2), Multiply (3,4))
18692
18693 Fixed a problem where AcpiGetHandle didn't quite get fixed in the
18694 previous build (The prefix part of a relative path was handled
18695 incorrectly).
18696
18697 Fixed a problem where Operation Region initialization failed if
18698 the operation region name was a "namepath" instead of a simple
18699 "nameseg". Symptom was an AE_NO_OPERAND error.
18700
18701 Fixed a problem where an assignment to a local variable via the
18702 indirect RefOf mechanism only worked for the first such
18703 assignment. Subsequent assignments were ignored.
18704
18705 ------------------------------------------
18706 Summary of changes for this label: 11_15_00
18707
18708 ACPI 2.0 table support with backwards support for ACPI 1.0 and the
18709 0.71 extensions. Note: although we can read ACPI 2.0 BIOS tables,
18710 the AML interpreter does NOT have support for the new 2.0 ASL
18711 grammar terms at this time.
18712
18713 All ACPI hardware access is via the GAS structures in the ACPI 2.0
18714 FADT.
18715
18716 All physical memory addresses across all platforms are now 64 bits
18717 wide. Logical address width remains dependent on the platform
18718 (i.e., "void *").
18719
18720 AcpiOsMapMemory interface changed to a 64-bit physical address.
18721
18722 The AML interpreter integer size is now 64 bits, as per the ACPI
18723 2.0 specification.
18724
18725 For backwards compatibility with ACPI 1.0, ACPI tables with a
18726 revision number less than 2 use 32-bit integers only.
18727
18728 Fixed a problem where the evaluation of OpRegion operands did not
18729 always resolve them to numbers properly.
18730
18731 ------------------------------------------
18732 Summary of changes for this label: 10_20_00
18733
18734 Fix for CBN_._STA issue. This fix will allow correct access to
18735 CBN_ OpRegions when the _STA returns 0x8.
18736
18737 Support to convert ACPI constants (Ones, Zeros, One) to actual
18738 values before a package object is returned
18739
18740 Fix for method call as predicate to if/while construct causing
18741 incorrect if/while behavior
18742
18743 Fix for Else block package lengths sometimes calculated wrong (if
18744 block > 63 bytes)
18745
18746 Fix for Processor object length field, was always zero
18747
18748 Table load abort if FACP sanity check fails
18749
18750 Fix for problem with Scope(name) if name already exists
18751
18752 Warning emitted if a named object referenced cannot be found
18753 (resolved) during method execution.
18754
18755
18756
18757
18758
18759 ------------------------------------------
18760 Summary of changes for this label: 9_29_00
18761
18762 New table initialization interfaces: AcpiInitializeSubsystem no
18763 longer has any parameters AcpiFindRootPointer - Find the RSDP (if
18764 necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
18765 >RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
18766 AcpiLoadTables
18767
18768 Note: These interface changes require changes to all existing OSDs
18769
18770 The PCI_Config default address space handler is always installed
18771 at the root namespace object.
18772
18773 -------------------------------------------
18774 Summary of changes for this label: 09_15_00
18775
18776 The new initialization architecture is implemented. New
18777 interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
18778 AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
18779
18780 (Namespace is automatically loaded when a table is loaded)
18781
18782 The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
18783 52 bytes to 32 bytes. There is usually one of these for every
18784 namespace object, so the memory savings is significant.
18785
18786 Implemented just-in-time evaluation of the CreateField operators.
18787
18788 Bug fixes for IA-64 support have been integrated.
18789
18790 Additional code review comments have been implemented
18791
18792 The so-called "third pass parse" has been replaced by a final walk
18793 through the namespace to initialize all operation regions (address
18794 spaces) and fields that have not yet been initialized during the
18795 execution of the various _INI and REG methods.
18796
18797 New file - namespace/nsinit.c
18798
18799 -------------------------------------------
18800 Summary of changes for this label: 09_01_00
18801
18802 Namespace manager data structures have been reworked to change the
18803 primary object from a table to a single object. This has
18804 resulted in dynamic memory savings of 3X within the namespace and
18805 2X overall in the ACPI CA subsystem.
18806
18807 Fixed problem where the call to AcpiEvFindPciRootBuses was
18808 inadvertently left commented out.
18809
18810 Reduced the warning count when generating the source with the GCC
18811 compiler.
18812
18813 Revision numbers added to each module header showing the
18814 SourceSafe version of the file. Please refer to this version
18815 number when giving us feedback or comments on individual modules.
18816
18817 The main object types within the subsystem have been renamed to
18818 clarify their purpose:
18819
18820 ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
18821 ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
18822 ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
18823
18824 NOTE: no changes to the initialization sequence are included in
18825 this label.
18826
18827 -------------------------------------------
18828 Summary of changes for this label: 08_23_00
18829
18830 Fixed problem where TerminateControlMethod was being called
18831 multiple times per method
18832
18833 Fixed debugger problem where single stepping caused a semaphore to
18834 be oversignalled
18835
18836 Improved performance through additional parse object caching -
18837 added ACPI_EXTENDED_OP type
18838
18839 -------------------------------------------
18840 Summary of changes for this label: 08_10_00
18841
18842 Parser/Interpreter integration: Eliminated the creation of
18843 complete parse trees for ACPI tables and control methods.
18844 Instead, parse subtrees are created and then deleted as soon as
18845 they are processed (Either entered into the namespace or executed
18846 by the interpreter). This reduces the use of dynamic kernel
18847 memory significantly. (about 10X)
18848
18849 Exception codes broken into classes and renumbered. Be sure to
18850 recompile all code that includes acexcep.h. Hopefully we won't
18851 have to renumber the codes again now that they are split into
18852 classes (environment, programmer, AML code, ACPI table, and
18853 internal).
18854
18855 Fixed some additional alignment issues in the Resource Manager
18856 subcomponent
18857
18858 Implemented semaphore tracking in the AcpiExec utility, and fixed
18859 several places where mutexes/semaphores were being unlocked
18860 without a corresponding lock operation. There are no known
18861 semaphore or mutex "leaks" at this time.
18862
18863 Fixed the case where an ASL Return operator is used to return an
18864 unnamed package.
18865
18866 -------------------------------------------
18867 Summary of changes for this label: 07_28_00
18868
18869 Fixed a problem with the way addresses were calculated in
18870 AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem
18871 manifested itself when a Field was created with WordAccess or
18872 DwordAccess, but the field unit defined within the Field was less
18873
18874 than a Word or Dword.
18875
18876 Fixed a problem in AmlDumpOperands() module's loop to pull
18877 operands off of the operand stack to display information. The
18878 problem manifested itself as a TLB error on 64-bit systems when
18879 accessing an operand stack with two or more operands.
18880
18881 Fixed a problem with the PCI configuration space handlers where
18882 context was getting confused between accesses. This required a
18883 change to the generic address space handler and address space
18884 setup definitions. Handlers now get both a global handler context
18885 (this is the one passed in by the user when executing
18886 AcpiInstallAddressSpaceHandler() and a specific region context
18887 that is unique to each region (For example, the _ADR, _SEG and
18888 _BBN values associated with a specific region). The generic
18889 function definitions have changed to the following:
18890
18891 typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
18892 UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
18893 *HandlerContext, // This used to be void *Context void
18894 *RegionContext); // This is an additional parameter
18895
18896 typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
18897 RegionHandle, UINT32 Function, void *HandlerContext, void
18898 **RegionContext); // This used to be **ReturnContext
18899
18900 -------------------------------------------
18901 Summary of changes for this label: 07_21_00
18902
18903 Major file consolidation and rename. All files within the
18904 interpreter have been renamed as well as most header files. This
18905 was done to prevent collisions with existing files in the host
18906 OSs -- filenames such as "config.h" and "global.h" seem to be
18907 quite common. The VC project files have been updated. All
18908 makefiles will require modification.
18909
18910 The parser/interpreter integration continues in Phase 5 with the
18911 implementation of a complete 2-pass parse (the AML is parsed
18912 twice) for each table; This avoids the construction of a huge
18913 parse tree and therefore reduces the amount of dynamic memory
18914 required by the subsystem. Greater use of the parse object cache
18915 means that performance is unaffected.
18916
18917 Many comments from the two code reviews have been rolled in.
18918
18919 The 64-bit alignment support is complete.
18920
18921 -------------------------------------------
18922 Summary of changes for this label: 06_30_00
18923
18924 With a nod and a tip of the hat to the technology of yesteryear,
18925 we've added support in the source code for 80 column output
18926 devices. The code is now mostly constrained to 80 columns or
18927 less to support environments and editors that 1) cannot display
18928 or print more than 80 characters on a single line, and 2) cannot
18929 disable line wrapping.
18930
18931 A major restructuring of the namespace data structure has been
18932 completed. The result is 1) cleaner and more
18933 understandable/maintainable code, and 2) a significant reduction
18934 in the dynamic memory requirement for each named ACPI object
18935 (almost half).
18936
18937 -------------------------------------------
18938 Summary of changes for this label: 06_23_00
18939
18940 Linux support has been added. In order to obtain approval to get
18941 the ACPI CA subsystem into the Linux kernel, we've had to make
18942 quite a few changes to the base subsystem that will affect all
18943 users (all the changes are generic and OS- independent). The
18944 effects of these global changes have been somewhat far reaching.
18945 Files have been merged and/or renamed and interfaces have been
18946 renamed. The major changes are described below.
18947
18948 Osd* interfaces renamed to AcpiOs* to eliminate namespace
18949 pollution/confusion within our target kernels. All OSD
18950 interfaces must be modified to match the new naming convention.
18951
18952 Files merged across the subsystem. A number of the smaller source
18953 and header files have been merged to reduce the file count and
18954 increase the density of the existing files. There are too many
18955 to list here. In general, makefiles that call out individual
18956 files will require rebuilding.
18957
18958 Interpreter files renamed. All interpreter files now have the
18959 prefix am* instead of ie* and is*.
18960
18961 Header files renamed: The acapi.h file is now acpixf.h. The
18962 acpiosd.h file is now acpiosxf.h. We are removing references to
18963 the acronym "API" since it is somewhat windowsy. The new name is
18964 "external interface" or xface or xf in the filenames.j
18965
18966
18967 All manifest constants have been forced to upper case (some were
18968 mixed case.) Also, the string "ACPI_" has been prepended to many
18969 (not all) of the constants, typedefs, and structs.
18970
18971 The globals "DebugLevel" and "DebugLayer" have been renamed
18972 "AcpiDbgLevel" and "AcpiDbgLayer" respectively.
18973
18974 All other globals within the subsystem are now prefixed with
18975 "AcpiGbl_" Internal procedures within the subsystem are now
18976 prefixed with "Acpi" (with only a few exceptions). The original
18977 two-letter abbreviation for the subcomponent remains after "Acpi"
18978 - for example, CmCallocate became AcpiCmCallocate.
18979
18980 Added a source code translation/conversion utility. Used to
18981 generate the Linux source code, it can be modified to generate
18982 other types of source as well. Can also be used to cleanup
18983 existing source by removing extraneous spaces and blank lines.
18984 Found in tools/acpisrc/*
18985
18986 OsdUnMapMemory was renamed to OsdUnmapMemory and then
18987 AcpiOsUnmapMemory. (UnMap became Unmap).
18988
18989 A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
18990 When set to one, this indicates that the caller wants to use the
18991
18992 semaphore as a mutex, not a counting semaphore. ACPI CA uses
18993 both types. However, implementers of this call may want to use
18994 different OS primitives depending on the type of semaphore
18995 requested. For example, some operating systems provide separate
18996
18997 "mutex" and "semaphore" interfaces - where the mutex interface is
18998 much faster because it doesn't have all the overhead of a full
18999 semaphore implementation.
19000
19001 Fixed a deadlock problem where a method that accesses the PCI
19002 address space can block forever if it is the first access to the
19003 space.
19004
19005 -------------------------------------------
19006 Summary of changes for this label: 06_02_00
19007
19008 Support for environments that cannot handle unaligned data
19009 accesses (e.g. firmware and OS environments devoid of alignment
19010 handler technology namely SAL/EFI and the IA-64 Linux kernel) has
19011 been added (via configurable macros) in these three areas: -
19012 Transfer of data from the raw AML byte stream is done via byte
19013 moves instead of word/dword/qword moves. - External objects are
19014 aligned within the user buffer, including package elements (sub-
19015 objects). - Conversion of name strings to UINT32 Acpi Names is now
19016 done byte-wise.
19017
19018 The Store operator was modified to mimic Microsoft's
19019 implementation when storing to a Buffer Field.
19020
19021 Added a check of the BM_STS bit before entering C3.
19022
19023 The methods subdirectory has been obsoleted and removed. A new
19024 file, cmeval.c subsumes the functionality.
19025
19026 A 16-bit (DOS) version of AcpiExec has been developed. The
19027 makefile is under the acpiexec directory.
19028