changes.txt revision 1.1.1.17 1 ----------------------------------------
2 27 April 2018. Summary of changes for version 20180427:
3
4
5 1) ACPICA kernel-resident subsystem:
6
7 Debugger: Added support for Package objects in the "Test Objects"
8 command. This command walks the entire namespace and evaluates all named
9 data objects (Integers, Strings, Buffers, and now Packages).
10
11 Improved error messages for the namespace root node. Originally, the root
12 was referred to by the confusing string "\___". This has been replaced by
13 "Namespace Root" for clarification.
14
15 Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
16 Ian King <colin.king (a] canonical.com>.
17
18
19 2) iASL Compiler/Disassembler and Tools:
20
21 iASL: Implemented support to detect and flag illegal forward references.
22 For compatibility with other ACPI implementations, these references are
23 now illegal at the root level of the DSDT or SSDTs. Forward references
24 have always been illegal within control methods. This change should not
25 affect existing ASL/AML code because of the fact that these references
26 have always been illegal in the other ACPI implementation.
27
28 iASL: Added error messages for the case where a table OEM ID and OEM
29 TABLE ID strings are longer than the ACPI-defined length. Previously,
30 these strings were simply silently truncated.
31
32 iASL: Enhanced the -tc option (which creates an AML hex file in C,
33 suitable for import into a firmware project):
34 1) Create a unique name for the table, to simplify use of multiple
35 SSDTs.
36 2) Add a protection #ifdef in the file, similar to a .h header file.
37 With assistance from Sami Mujawar, sami.mujawar (a] arm.com and Evan Lloyd,
38 evan.lloyd (a] arm.com
39
40 AcpiExec: Added a new option, -df, to disable the local fault handler.
41 This is useful during debugging, where it may be desired to drop into a
42 debugger on a fault.
43
44 ----------------------------------------
45 13 March 2018. Summary of changes for version 20180313:
46
47
48 1) ACPICA kernel-resident subsystem:
49
50 Implemented various improvements to the GPE support:
51
52 1) Dispatch all active GPEs at initialization time so that no GPEs are
53 lost.
54 2) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
55 before devices are enumerated.
56 3) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
57 IRQs are not lost.
58 4) Add parallel GPE handling to eliminate the possibility of dispatching
59 the same GPE twice.
60 5) Dispatch any pending GPEs after enabling for the first time.
61
62 AcpiGetObjectInfo - removed support for the _STA method. This was causing
63 problems on some platforms.
64
65 Added a new _OSI string, "Windows 2017.2".
66
67 Cleaned up and simplified the module-level code support. These changes
68 are in preparation for the eventual removal of the legacy MLC support
69 (deferred execution), replaced by the new MLC architecture which executes
70 the MLC as a table is loaded (DSDT/SSDTs).
71
72 Changed a compile-time option to a runtime option. Changes the option to
73 ignore ACPI table load-time package resolution errors into a runtime
74 option. Used only for platforms that generate many AE_NOT_FOUND errors
75 during boot. AcpiGbl_IgnorePackageResolutionErrors.
76
77 Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
78 ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
79 compilation errors from unused variables (seen with some compilers).
80
81
82 2) iASL Compiler/Disassembler and Tools:
83
84 ASLTS: parallelized execution in order to achieve an (approximately) 2X
85 performance increase.
86
87 ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
88 error reporting.
89
90 ----------------------------------------
91 09 February 2018. Summary of changes for version 20180209:
92
93
94 1) ACPICA kernel-resident subsystem:
95
96 Completed the final integration of the recent changes to Package Object
97 handling and the module-level AML code support. This allows forward
98 references from individual package elements when the package object is
99 declared from within module-level code blocks. Provides compatibility
100 with other ACPI implementations.
101
102 The new architecture for the AML module-level code has been completed and
103 is now the default for the ACPICA code. This new architecture executes
104 the module-level code in-line as the ACPI table is loaded/parsed instead
105 of the previous architecture which deferred this code until after the
106 table was fully loaded. This solves some ASL code ordering issues and
107 provides compatibility with other ACPI implementations. At this time,
108 there is an option to fallback to the earlier architecture, but this
109 support is deprecated and is planned to be completely removed later this
110 year.
111
112 Added a compile-time option to ignore AE_NOT_FOUND exceptions during
113 resolution of named reference elements within Package objects. Although
114 this is potentially a serious problem, it can generate a lot of
115 noise/errors on platforms whose firmware carries around a bunch of unused
116 Package objects. To disable these errors, define
117 ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
118 errors are always reported for ACPICA applications such as AcpiExec.
119
120 Fixed a regression related to the explicit type-conversion AML operators
121 (ToXXXX). The regression was introduced early in 2017 but was not seen
122 until recently because these operators are not fully supported by other
123 ACPI implementations and are thus rarely used by firmware developers. The
124 operators are defined by the ACPI specification to not implement the
125 "implicit result object conversion". The regression incorrectly
126 introduced this object conversion for the following explicit conversion
127 operators:
128 ToInteger
129 ToString
130 ToBuffer
131 ToDecimalString
132 ToHexString
133 ToBCD
134 FromBCD
135
136
137 2) iASL Compiler/Disassembler and Tools:
138
139 iASL: Fixed a problem with the compiler constant folding feature as
140 related to the ToXXXX explicit conversion operators. These operators do
141 not support the "implicit result object conversion" by definition. Thus,
142 ASL expressions that use these operators cannot be folded to a simple
143 Store operator because Store implements the implicit conversion. This
144 change uses the CopyObject operator for the ToXXXX operator folding
145 instead. CopyObject is defined to not implement implicit result
146 conversions and is thus appropriate for folding the ToXXXX operators.
147
148 iASL: Changed the severity of an error condition to a simple warning for
149 the case where a symbol is declared both locally and as an external
150 symbol. This accommodates existing ASL code.
151
152 AcpiExec: The -ep option to enable the new architecture for module-level
153 code has been removed. It is replaced by the -dp option which instead has
154 the opposite effect: it disables the new architecture (the default) and
155 enables the legacy architecture. When the legacy code is removed in the
156 future, the -dp option will be removed also.
157
158 ----------------------------------------
159 05 January 2018. Summary of changes for version 20180105:
160
161
162 1) ACPICA kernel-resident subsystem:
163
164 Updated all copyrights to 2018. This affects all source code modules.
165
166 Fixed a possible build error caused by an unresolved reference to the
167 AcpiUtSafeStrncpy function.
168
169 Removed NULL pointer arithmetic in the various pointer manipulation
170 macros. All "(void *) NULL" constructs are converted to "(void *) 0".
171 This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
172
173 Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
174 Mittal.
175
176
177 2) iASL Compiler/Disassembler and Tools:
178
179 ASLTS: Updated all copyrights to 2018.
180
181 Tools: Updated all signon copyrights to 2018.
182
183 AcpiXtract: Fixed a regression related to ACPI table signatures where the
184 signature was truncated to 3 characters (instead of 4).
185
186 AcpiExec: Restore the original terminal mode after the use of the -v and
187 -vd options.
188
189 ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
190
191 ----------------------------------------
192 14 December 2017. Summary of changes for version 20171214:
193
194
195 1) ACPICA kernel-resident subsystem:
196
197 Fixed a regression in the external (public) AcpiEvaluateObjectTyped
198 interface where the optional "pathname" argument had inadvertently become
199 a required argument returning an error if omitted (NULL pointer
200 argument).
201
202 Fixed two possible memory leaks related to the recently developed "late
203 resolution" of reference objects within ASL Package Object definitions.
204
205 Added two recently defined _OSI strings: "Windows 2016" and "Windows
206 2017". Mario Limonciello.
207
208 Implemented and deployed a safer version of the C library function
209 strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the
210 creation of unterminated strings as a possible result of a standard
211 strncpy.
212
213 Cleaned up and restructured the global variable file (acglobal.h). There
214 are many changes, but no functional changes.
215
216
217 2) iASL Compiler/Disassembler and Tools:
218
219 iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
220 optional OemData field at the end of the table was incorrectly required
221 for proper compilation. It is now correctly an optional field.
222
223 ASLTS: The entire suite was converted from standard ASL to the ASL+
224 language, using the ASL-to-ASL+ converter which is integrated into the
225 iASL compiler. A binary compare of all output files has verified the
226 correctness of the conversion.
227
228 iASL: Fixed the source code build for platforms where "char" is unsigned.
229 This affected the iASL lexer only. Jung-uk Kim.
230
231 ----------------------------------------
232 10 November 2017. Summary of changes for version 20171110:
233
234
235 1) ACPICA kernel-resident subsystem:
236
237 This release implements full support for ACPI 6.2A:
238 NFIT - Added a new subtable, "Platform Capabilities Structure"
239 No other changes to ACPICA were required, since ACPI 6.2A is primarily an
240 errata release of the specification.
241
242 Other ACPI table changes:
243 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
244 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
245 Linton
246
247 Utilities: Modified the string/integer conversion functions to use
248 internal 64-bit divide support instead of a native divide. On 32-bit
249 platforms, a 64-bit divide typically requires a library function which
250 may not be present in the build (kernel or otherwise).
251
252 Implemented a targeted error message for timeouts returned from the
253 Embedded Controller device driver. This is seen frequently enough to
254 special-case an AE_TIME returned from an EC operation region access:
255 "Timeout from EC hardware or EC device driver"
256
257 Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
258 runtime error messages have the identical prefix.
259
260
261 2) iASL Compiler/Disassembler and Tools:
262
263 AcpiXtract: Fixed a problem with table header detection within the
264 acpidump file. Processing a table could be ended early if a 0x40 (@)
265 appears in the original binary table, resulting in the @ symbol appearing
266 in the decoded ASCII field at the end of the acpidump text line. The
267 symbol caused acpixtract to incorrectly think it had reached the end of
268 the current table and the beginning of a new table.
269
270 AcpiXtract: Added an option (-f) to ignore some errors during table
271 extraction. This initial implementation ignores non-ASCII and non-
272 printable characters found in the acpidump text file.
273
274 TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
275 for ASLTS. This feature is used to track memory allocations from
276 different memory caches within the ACPICA code. At the end of an ASLTS
277 run, these memory statistics are recorded and stored in a log file.
278
279 Debugger (user-space version): Implemented a simple "Background" command.
280 Creates a new thread to execute a control method in the background, while
281 control returns to the debugger prompt to allow additional commands.
282 Syntax: Background <Namepath> [Arguments]
283
284 ----------------------------------------
285 29 September 2017. Summary of changes for version 20170929:
286
287
288 1) ACPICA kernel-resident subsystem:
289
290 Redesigned and implemented an improved ASL While() loop timeout
291 mechanism. This mechanism is used to prevent infinite loops in the kernel
292 AML interpreter caused by either non-responsive hardware or incorrect AML
293 code. The new implementation uses AcpiOsGetTimer instead of a simple
294 maximum loop count, and is thus more accurate and constant across
295 different machines. The default timeout is currently 30 seconds, but this
296 may be adjusted later.
297
298 Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
299 better reflect the new implementation of the loop timeout mechanism.
300
301 Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
302 and to fix an off-by-one error. Jung-uk Kim.
303
304 Fixed an EFI build problem by updating the makefiles to for a new file
305 that was added, utstrsuppt.c
306
307
308 2) iASL Compiler/Disassembler and Tools:
309
310 Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
311 includes support in the table disassembler, compiler, and template
312 generator.
313
314 iASL: Added an exception for an illegal type of recursive method
315 invocation. If a method creates named objects, the first recursive call
316 will fail at runtime. This change adds an error detection at compile time
317 to catch the problem up front. Note: Marking such a method as
318 "serialized" will not help with this problem, because the same thread can
319 acquire the method mutex more than once. Example compiler and runtime
320 output:
321
322 Method (MTH1)
323 {
324 Name (INT1, 1)
325 MTH1 ()
326 }
327
328 dsdt.asl 22: MTH1 ()
329 Error 6152 - ^ Illegal recursive call to method
330 that creates named objects (MTH1)
331
332 Previous runtime exception:
333 ACPI Error: [INT1] Namespace lookup failure,
334 AE_ALREADY_EXISTS (20170831/dswload2-465)
335
336 iASL: Updated support for External() opcodes to improve namespace
337 management and error detection. These changes are related to issues seen
338 with multiple-segment namespace pathnames within External declarations,
339 such as below:
340
341 External(\_SB.PCI0.GFX0, DeviceObj)
342 External(\_SB.PCI0.GFX0.ALSI)
343
344 iASL: Implemented support for multi-line error/warning messages. This
345 enables more detailed and helpful error messages as below, from the
346 initial deployment for the duplicate names error:
347
348 DSDT.iiii 1692: Device(PEG2) {
349 Error 6074 - ^ Name already exists in scope
350 (PEG2)
351
352 Original name creation/declaration below:
353 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj)
354
355 AcpiXtract: Added additional flexibility to support differing input hex
356 dump formats. Specifically, hex dumps that contain partial disassembly
357 and/or comments within the ACPI table data definition. There exist some
358 dump utilities seen in the field that create this type of hex dump (such
359 as Simics). For example:
360
361 DSDT @ 0xdfffd0c0 (10999 bytes)
362 Signature DSDT
363 Length 10999
364 Revision 1
365 Checksum 0xf3 (Ok)
366 OEM_ID BXPC
367 OEM_table_id BXDSDT
368 OEM_revision 1
369 Creator_id 1280593481
370 Creator_revision 537399345
371 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
372 ...
373 2af0: 5f 4c 30 46 00 a4 01
374
375 Test suite: Miscellaneous changes/fixes:
376 More cleanup and simplification of makefiles
377 Continue compilation of test cases after a compile failure
378 Do not perform binary compare unless both files actually exist
379
380 iASL: Performed some code/module restructuring. Moved all memory
381 allocation functions to new modules. Two new files, aslallocate.c and
382 aslcache.c
383
384 ----------------------------------------
385 31 August 2017. Summary of changes for version 20170831:
386
387
388 1) ACPICA kernel-resident subsystem:
389
390 Implemented internal support for full 64-bit addresses that appear in all
391 Generic Address Structure (GAS) structures. Previously, only the lower 32
392 bits were used. Affects the use of GAS structures in the FADT and other
393 tables, as well as the GAS structures passed to the AcpiRead and
394 AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
395
396 Added header support for the PDTT ACPI table (Processor Debug Trigger
397 Table). Full support in the iASL Data Table Compiler and disassembler is
398 forthcoming.
399
400
401 2) iASL Compiler/Disassembler and Tools:
402
403 iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
404 Properties Topology Table) where a flag bit was specified in the wrong
405 bit position ("Line Size Valid", bit 6).
406
407 iASL: Implemented support for Octal integer constants as defined by the
408 ASL language grammar, per the ACPI specification. Any integer constant
409 that starts with a zero is an octal constant. For example,
410 Store (037777, Local0) /* Octal constant */
411 Store (0x3FFF, Local0) /* Hex equivalent */
412 Store (16383, Local0) /* Decimal equivalent */
413
414 iASL: Improved overflow detection for 64-bit string conversions during
415 compilation of integer constants. "Overflow" in this case means a string
416 that represents an integer that is too large to fit into a 64-bit value.
417 Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
418 the low-order 32 bits with a warning, as previously implemented. Several
419 new exceptions are defined that indicate a 64-bit overflow, as well as
420 the base (radix) that was used during the attempted conversion. Examples:
421 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW
422 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW
423 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW
424
425 iASL: Added a warning for the case where a ResourceTemplate is declared
426 with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
427 this case, the resulting template is created with a single END_TAG
428 descriptor, which is essentially useless.
429
430 iASL: Expanded the -vw option (ignore specific warnings/remarks) to
431 include compilation error codes as well.
432
433 ----------------------------------------
434 28 July 2017. Summary of changes for version 20170728:
435
436
437 1) ACPICA kernel-resident subsystem:
438
439 Fixed a regression seen with small resource descriptors that could cause
440 an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
441
442 AML interpreter: Implemented a new feature that allows forward references
443 from individual named references within package objects that are
444 contained within blocks of "module-level code". This provides
445 compatibility with other ACPI implementations and supports existing
446 firmware that depends on this feature. Example:
447
448 Name (ABCD, 1)
449 If (ABCD) /* An If() at module-level */
450 {
451 Name (PKG1, Package()
452 {
453 INT1 /* Forward reference to object INT1
454 */
455 })
456 Name (INT1, 0x1234)
457 }
458
459 AML Interpreter: Fixed a problem with the Alias() operator where aliases
460 to some ASL objects were not handled properly. Objects affected are:
461 Mutex, Event, and OperationRegion.
462
463 AML Debugger: Enhanced to properly handle AML Alias objects. These
464 objects have one level of indirection which was not fully supported by
465 the debugger.
466
467 Table Manager: Added support to detect and ignore duplicate SSDTs within
468 the XSDT/RSDT. This error in the XSDT has been seen in the field.
469
470 EFI and EDK2 support:
471 Enabled /WX flag for MSVC builds
472 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
473 Added local support for 64-bit multiply and shift operations
474 Added support to compile acpidump.efi on Windows
475 Added OSL function stubs for interfaces not used under EFI
476
477 Added additional support for the _DMA predefined name. _DMA returns a
478 buffer containing a resource template. This change add support within the
479 resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
480 resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi (a] arm.com>
481
482
483 2) iASL Compiler/Disassembler and Tools:
484
485 iASL: Fixed a problem where the internal input line buffer(s) could
486 overflow if there are very long lines in the input ASL source code file.
487 Implemented buffer management that automatically increases the size of
488 the buffers as necessary.
489
490 iASL: Added an option (-vx) to "expect" particular remarks, warnings and
491 errors. If the specified exception is not raised during compilation, the
492 compiler emits an error. This is intended to support the ASL test suite,
493 but may be useful in other contexts.
494
495 iASL: Implemented a new predefined macro, __METHOD__, which returns a
496 string containing the name of the current control method that is being
497 compiled.
498
499 iASL: Implemented debugger and table compiler support for the SDEI ACPI
500 table (Software Delegated Exception Interface). James Morse
501 <james.morse (a] arm.com>
502
503 Unix/Linux makefiles: Added an option to disable compile optimizations.
504 The disable occurs when the NOOPT flag is set to TRUE.
505 theracermaster (a] gmail.com
506
507 Acpidump: Added support for multiple DSDT and FACS tables. This can occur
508 when there are different tables for 32-bit versus 64-bit.
509
510 Enhanced error reporting for the ASL test suite (ASLTS) by removing
511 unnecessary/verbose text, and emit the actual line number where an error
512 has occurred. These changes are intended to improve the usefulness of the
513 test suite.
514
515 ----------------------------------------
516 29 June 2017. Summary of changes for version 20170629:
517
518
519 1) ACPICA kernel-resident subsystem:
520
521 Tables: Implemented a deferred ACPI table verification. This is useful
522 for operating systems where the tables cannot be verified in the early
523 initialization stage due to early memory mapping limitations on some
524 architectures. Lv Zheng.
525
526 Tables: Removed the signature validation for dynamically loaded tables.
527 Provides compatibility with other ACPI implementations. Previously, only
528 SSDT tables were allowed, as per the ACPI specification. Now, any table
529 signature can be used via the Load() operator. Lv Zheng.
530
531 Tables: Fixed several mutex issues that could cause errors during table
532 acquisition. Lv Zheng.
533
534 Tables: Fixed a problem where an ACPI warning could be generated if a
535 null pointer was passed to the AcpiPutTable interface. Lv Zheng.
536
537 Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
538 AcpiPutTable interfaces. This applies to the "late stage" table loading
539 when the use of AcpiPutTable is no longer required (since the system
540 memory manager is fully running and available). Lv Zheng.
541
542 Fixed/Reverted a regression during processing of resource descriptors
543 that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
544 exception in this case.
545
546 Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
547 I/O Remapping specification. Robin Murphy <robin.murphy (a] arm.com>
548
549 Interpreter: Fixed a possible fault if an Alias operator with an invalid
550 or duplicate target is encountered during Alias creation in
551 AcpiExCreateAlias. Alex James <theracermaster (a] gmail.com>
552
553 Added an option to use designated initializers for function pointers.
554 Kees Cook <keescook (a] google.com>
555
556
557 2) iASL Compiler/Disassembler and Tools:
558
559 iASL: Allow compilation of External declarations with target pathnames
560 that refer to existing named objects within the table. Erik Schmauss.
561
562 iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
563 FieldUnit name also is declared via External in the same table. Erik
564 Schmauss.
565
566 iASL: Allow existing scope names within pathnames used in External
567 statements. For example:
568 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
569 Device (ABCD)
570
571 iASL: IORT ACPI table: Implemented changes required to decode the new
572 Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
573 compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni (a] cavium.com>
574
575 Disassembler: Don't abort disassembly on errors from External()
576 statements. Erik Schmauss.
577
578 Disassembler: fixed a possible fault when one of the Create*Field
579 operators references a Resource Template. ACPICA Bugzilla 1396.
580
581 iASL: In the source code, resolved some naming inconsistences across the
582 parsing support. Fixes confusion between "Parse Op" and "Parse Node".
583 Adds a new file, aslparseop.c
584
585 ----------------------------------------
586 31 May 2017. Summary of changes for version 20170531:
587
588
589 0) ACPI 6.2 support:
590
591 The ACPI specification version 6.2 has been released and is available at
592 http://uefi.org/specifications
593
594 This version of ACPICA fully supports the ACPI 6.2 specification. Changes
595 are summarized below.
596
597 New ACPI tables (Table Compiler/Disassembler/Templates):
598 HMAT (Heterogeneous Memory Attributes Table)
599 WSMT (Windows SMM Security Mitigation Table)
600 PPTT (Processor Properties Topology Table)
601
602 New subtables for existing ACPI tables:
603 HEST (New subtable, Arch-deferred machine check)
604 SRAT (New subtable, Arch-specific affinity structure)
605 PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
606
607 Simple updates for existing ACPI tables:
608 BGRT (two new flag bits)
609 HEST (New bit defined for several subtables, GHES_ASSIST)
610
611 New Resource Descriptors and Resource macros (Compiler/Disassembler):
612 PinConfig()
613 PinFunction()
614 PinGroup()
615 PinGroupConfig()
616 PinGroupFunction()
617 New type for hardware error notification (section 18.3.2.9)
618
619 New predefined names/methods (Compiler/Interpreter):
620 _HMA (Heterogeneous Memory Attributes)
621 _LSI (Label Storage Information)
622 _LSR (Label Storage Read)
623 _LSW (Label Storage Write)
624
625 ASL grammar/macro changes (Compiler):
626 For() ASL macro, implemented with the AML while operator
627 Extensions to Concatenate operator
628 Support for multiple definition blocks in same ASL file
629 Clarification for Buffer operator
630 Allow executable AML code underneath all scopes (Devices, etc.)
631 Clarification/change for the _OSI return value
632 ASL grammar update for reference operators
633 Allow a zero-length string for AML filename in DefinitionBlock
634
635 Miscellaneous:
636 New device object notification value
637 Remove a notify value (0x0C) for graceful shutdown
638 New UUIDs for processor/cache properties and
639 physical package property
640 New _HID, ACPI0014 (Wireless Power Calibration Device)
641
642
643 1) ACPICA kernel-resident subsystem:
644
645 Added support to disable ACPI events on hardware-reduced platforms.
646 Eliminates error messages of the form "Could not enable fixed event". Lv
647 Zheng
648
649 Fixed a problem using Device/Thermal objects with the ObjectType and
650 DerefOf ASL operators. This support had not been fully/properly
651 implemented.
652
653 Fixed a problem where if a Buffer object containing a resource template
654 was longer than the actual resource template, an error was generated --
655 even though the AML is legal. This case has been seen in the field.
656
657 Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
658 The values for DUAL_PIC and MULTIPLE_APIC were reversed.
659
660 Added header file changes for the TPM2 ACPI table. Update to new version
661 of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
662
663 Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
664 These interfaces are intended to be used only in conjunction with the
665 predefined _DLM method (Device Lock Method). "This object appears in a
666 device scope when AML access to the device must be synchronized with the
667 OS environment".
668
669 Example Code and Data Size: These are the sizes for the OS-independent
670 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
671 debug version of the code includes the debug output trace mechanism and
672 has a much larger code and data size.
673
674 Current Release:
675 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
676 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total
677 Previous Release:
678 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
679 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total
680
681
682 2) iASL Compiler/Disassembler and Tools:
683
684 iASL: Fixed a problem where an External() declaration could not refer to
685 a Field Unit. Erik Schmauss.
686
687 Disassembler: Improved support for the Switch/Case operators. This
688 feature will disassemble AML code back to the original Switch operators
689 when possible, instead of an If..Else sequence. David Box
690
691 iASL and disassembler: Improved the handling of multiple extraneous
692 parentheses for both ASL input and disassembled ASL output.
693
694 Improved the behavior of the iASL compiler and disassembler to detect
695 improper use of external declarations
696
697 Disassembler: Now aborts immediately upon detection of an unknown AML
698 opcode. The AML parser has no real way to recover from this, and can
699 result in the creation of an ill-formed parse tree that causes errors
700 later during the disassembly.
701
702 All tools: Fixed a problem where the Unix application OSL did not handle
703 control-c correctly. For example, a control-c could incorrectly wake the
704 debugger.
705
706 AcpiExec: Improved the Control-C handling and added a handler for
707 segmentation faults (SIGSEGV). Supports both Windows and Unix-like
708 environments.
709
710 Reduced the verbosity of the generic unix makefiles. Previously, each
711 compilation displayed the full set of compiler options. This has been
712 eliminated as the options are easily inspected within the makefiles. Each
713 compilation now results in a single line of output.
714
715 ----------------------------------------
716 03 March 2017. Summary of changes for version 20170303:
717
718
719 0) ACPICA licensing:
720
721 The licensing information at the start of each source code module has
722 been updated. In addition to the Intel license, the dual GPLv2/BSD
723 license has been added for completeness. Now, a single version of the
724 source code should be suitable for all ACPICA customers. This is the
725 major change for this release since it affects all source code modules.
726
727
728 1) ACPICA kernel-resident subsystem:
729
730 Fixed two issues with the common asltypes.h header that could cause
731 problems in some environments: (Kim Jung-uk)
732 Removed typedef for YY_BUFFER_STATE ?
733 Fixes an error with earlier versions of Flex.
734 Removed use of FILE typedef (which is only defined in stdio.h)
735
736
737 2) iASL Compiler/Disassembler and Tools:
738
739 Disassembler: fixed a regression introduced in 20170224. A fix for a
740 memory leak related to resource descriptor tags (names) could fault when
741 the disassembler was generated with 64-bit compilers.
742
743 The ASLTS test suite has been updated to implement a new testing
744 architecture. During generation of the suite from ASL source, both the
745 ASL and ASL+ compilers are now validated, as well as the disassembler
746 itself (Erik Schmauss). The architecture executes as follows:
747
748 For every ASL source module:
749 Compile (legacy ASL compilation)
750 Disassemble the resulting AML to ASL+ source code
751 Compile the new ASL+ module
752 Perform a binary compare on the legacy AML and the new ASL+ AML
753 The ASLTS suite then executes normally using the AML binaries.
754
755 ----------------------------------------
756 24 February 2017. Summary of changes for version 20170224:
757
758
759 1) ACPICA kernel-resident subsystem:
760
761 Interpreter: Fixed two issues with the control method return value auto-
762 repair feature, where an attempt to double-delete an internal object
763 could result in an ACPICA warning (for _CID repair and others). No fault
764 occurs, however, because the attempted deletion (actually a release to an
765 internal cache) is detected and ignored via object poisoning.
766
767 Debugger: Fixed an AML interpreter mutex issue during the single stepping
768 of control methods. If certain debugger commands are executed during
769 stepping, a mutex aquire/release error could occur. Lv Zheng.
770
771 Fixed some issues generating ACPICA with the Intel C compiler by
772 restoring the original behavior and compiler-specific include file in
773 acenv.h. Lv Zheng.
774
775 Example Code and Data Size: These are the sizes for the OS-independent
776 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
777 debug version of the code includes the debug output trace mechanism and
778 has a much larger code and data size.
779
780 Current Release:
781 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
782 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total
783 Previous Release:
784 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
785 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
786
787
788 2) iASL Compiler/Disassembler and Tools:
789
790 iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
791 tool has been designed, implemented, and included in this release. The
792 key feature of this utility is that the original comments within the
793 input ASL file are preserved during the conversion process, and included
794 within the converted ASL+ file -- thus creating a transparent conversion
795 of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
796
797 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with
798 converted code
799
800 iASL/Disassembler: Improved the detection and correct disassembly of
801 Switch/Case operators. This feature detects sequences of if/elseif/else
802 operators that originated from ASL Switch/Case/Default operators and
803 emits the original operators. David Box.
804
805 iASL: Improved the IORT ACPI table support in the following areas. Lv
806 Zheng:
807 Clear MappingOffset if the MappingCount is zero.
808 Fix the disassembly of the SMMU GSU interrupt offset.
809 Update the template file for the IORT table.
810
811 Disassembler: Enhanced the detection and disassembly of resource
812 template/descriptor within a Buffer object. An EndTag descriptor is now
813 required to have a zero second byte, since all known ASL compilers emit
814 this. This helps eliminate incorrect decisions when a buffer is
815 disassembled (false positives on resource templates).
816
817 ----------------------------------------
818 19 January 2017. Summary of changes for version 20170119:
819
820
821 1) General ACPICA software:
822
823 Entire source code base: Added the 2017 copyright to all source code
824 legal/licensing module headers and utility/tool signons. This includes
825 the standard Linux dual-license header. This affects virtually every file
826 in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
827 the ACPICA test suite.
828
829
830 2) iASL Compiler/Disassembler and Tools:
831
832 iASL: Removed/fixed an inadvertent remark when a method argument
833 containing a reference is used as a target operand within the method (and
834 never used as a simple argument), as in the example below. Jeffrey Hugo.
835
836 dsdt.asl 1507: Store(0x1, Arg0)
837 Remark 2146 - ^ Method Argument is never used (Arg0)
838
839 All tools: Removed the bit width of the compiler that generated the tool
840 from the common signon for all user space tools. This proved to be
841 confusing and unnecessary. This includes similar removal of HARDWARE_NAME
842 from the generic makefiles (Thomas Petazzoni). Example below.
843
844 Old:
845 ASL+ Optimizing Compiler version 20170119-32
846 ASL+ Optimizing Compiler version 20170119-64
847
848 New:
849 ASL+ Optimizing Compiler version 20170119
850
851 ----------------------------------------
852 22 December 2016. Summary of changes for version 20161222:
853
854
855 1) ACPICA kernel-resident subsystem:
856
857 AML Debugger: Implemented a new mechanism to simplify and enhance
858 debugger integration into all environments, including kernel debuggers
859 and user-space utilities, as well as remote debug services. This
860 mechanism essentially consists of new OSL interfaces to support debugger
861 initialization/termination, as well as wait/notify interfaces to perform
862 the debugger handshake with the host. Lv Zheng.
863
864 New OSL interfaces:
865 AcpiOsInitializeDebugger (void)
866 AcpiOsTerminateDebugger (void)
867 AcpiOsWaitCommandReady (void)
868 AcpiOsNotifyCommandComplete (void)
869
870 New OS services layer:
871 osgendbg.c -- Example implementation, and used for AcpiExec
872
873 Update for Generic Address Space (GAS) support: Although the AccessWidth
874 and/or BitOffset fields of the GAS are not often used, this change now
875 fully supports these fields. This affects the internal support for FADT
876 registers, registers in other ACPI data tables, and the AcpiRead and
877 AcpiWrite public interfaces. Lv Zheng.
878
879 Sleep support: In order to simplify integration of ACPI sleep for the
880 various host operating systems, a new OSL interface has been introduced.
881 AcpiOsEnterSleep allows the host to perform any required operations
882 before the final write to the sleep control register(s) is performed by
883 ACPICA. Lv Zheng.
884
885 New OSL interface:
886 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
887
888 Called from these internal interfaces:
889 AcpiHwLegacySleep
890 AcpiHwExtendedSleep
891
892 EFI support: Added a very small EFI/ACPICA example application. Provides
893 a simple demo for EFI integration, as well as assisting with resolution
894 of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
895
896 source/tools/efihello/efihello.c
897
898 Local C library: Implemented several new functions to enhance ACPICA
899 portability, for environments where these clib functions are not
900 available (such as EFI). Lv Zheng:
901 putchar
902 getchar
903 strpbrk
904 strtok
905 memmove
906
907 Fixed a regression where occasionally a valid resource descriptor was
908 incorrectly detected as invalid at runtime, and a
909 AE_AML_NO_RESOURCE_END_TAG was returned.
910
911 Fixed a problem with the recently implemented support that enables
912 control method invocations as Target operands to many ASL operators.
913 Warnings of this form: "Needed type [Reference], found [Processor]" were
914 seen at runtime for some method invocations.
915
916 Example Code and Data Size: These are the sizes for the OS-independent
917 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
918 debug version of the code includes the debug output trace mechanism and
919 has a much larger code and data size.
920
921 Current Release:
922 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
923 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total
924 Previous Release:
925 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
926 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total
927
928
929 2) iASL Compiler/Disassembler and Tools:
930
931 Disassembler: Enhanced output by adding the capability to detect and
932 disassemble ASL Switch/Case statements back to the original ASL source
933 code instead of if/else blocks. David Box.
934
935 AcpiHelp: Split a large file into separate files based upon
936 functionality/purpose. New files are:
937 ahaml.c
938 ahasl.c
939
940 ----------------------------------------
941 17 November 2016. Summary of changes for version 20161117:
942
943
944 1) ACPICA kernel-resident subsystem:
945
946 Table Manager: Fixed a regression introduced in 20160729, "FADT support
947 cleanup". This was an attempt to remove all references in the source to
948 the FADT version 2, which never was a legal version number. It was
949 skipped because it was an early version of 64-bit support that was
950 eventually abandoned for the current 64-bit support.
951
952 Interpreter: Fixed a problem where runtime implicit conversion was
953 incorrectly disabled for the ASL operators below. This brings the
954 behavior into compliance with the ACPI specification:
955 FromBCD
956 ToBCD
957 ToDecimalString
958 ToHexString
959 ToInteger
960 ToBuffer
961
962 Table Manager: Added a new public interface, AcpiPutTable, used to
963 release and free an ACPI table returned by AcpiGetTable and related
964 interfaces. Lv Zheng.
965
966 Example Code and Data Size: These are the sizes for the OS-independent
967 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
968 debug version of the code includes the debug output trace mechanism and
969 has a much larger code and data size.
970
971 Current Release:
972 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
973 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total
974 Previous Release:
975 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
976 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total
977
978
979 2) iASL Compiler/Disassembler and Tools:
980
981 Disassembler: Fixed a regression for disassembly of Resource Template.
982 Detection of templates in the AML stream missed some types of templates.
983
984 iASL: Fixed a problem where an Access Size error was returned for the PCC
985 address space when the AccessSize of the GAS register is greater than a
986 DWORD. Hoan Tran.
987
988 iASL: Implemented several grammar changes for the operators below. These
989 changes are slated for the next version of the ACPI specification:
990 RefOf - Disallow method invocation as an operand
991 CondRefOf - Disallow method invocation as an operand
992 DerefOf - Disallow operands that use the result from operators
993 that
994 do not return a reference (Changed TermArg to
995 SuperName).
996
997 iASL: Control method invocations are now allowed for Target operands, as
998 per the ACPI specification. Removed error for using a control method
999 invocation as a Target operand.
1000
1001 Disassembler: Improved detection of Resource Templates, Unicode, and
1002 Strings within Buffer objects. These subtypes do not contain a specific
1003 opcode to indicate the originating ASL code, and they must be detected by
1004 other means within the disassembler.
1005
1006 iASL: Implemented an optimization improvement for 32-bit ACPI tables
1007 (DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
1008 only after 64-bit to 32-bit truncation. A truncation warning message is
1009 still emitted, however.
1010
1011 AcpiXtract: Implemented handling for both types of line terminators (LF
1012 or CR/LF) so that it can accept AcpiDump output files from any system.
1013 Peter Wu.
1014
1015 AcpiBin: Added two new options for comparing AML files:
1016 -a: compare and display ALL mismatches
1017 -o: start compare at this offset into the second file
1018
1019 ----------------------------------------
1020 30 September 2016. Summary of changes for version 20160930:
1021
1022
1023 1) ACPICA kernel-resident subsystem:
1024
1025 Fixed a regression in the internal AcpiTbFindTable function where a non
1026 AE_OK exception could inadvertently be returned even if the function did
1027 not fail. This problem affects the following operators:
1028 DataTableRegion
1029 LoadTable
1030
1031 Fixed a regression in the LoadTable operator where a load to any
1032 namespace location other than the root no longer worked properly.
1033
1034 Increased the maximum loop count value that will result in the
1035 AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
1036 prevent infinite loops within the AML interpreter and thus the host OS
1037 kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
1038 1,048,575).
1039
1040 Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
1041 acpixf.h file. This allows hosts to easily configure the maximum loop
1042 count at runtime.
1043
1044 Removed an illegal character in the strtoul64.c file. This character
1045 caused errors with some C compilers.
1046
1047 Example Code and Data Size: These are the sizes for the OS-independent
1048 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1049 debug version of the code includes the debug output trace mechanism and
1050 has a much larger code and data size.
1051
1052 Current Release:
1053 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
1054 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total
1055 Previous Release:
1056 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
1057 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total
1058
1059
1060 2) iASL Compiler/Disassembler and Tools:
1061
1062 Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
1063 the simpler ASL ElseIf keyword. During the conversion, a trailing If
1064 block could be lost and missing from the disassembled output.
1065
1066 iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
1067 the missing rule caused a parse error when using the Index operator as an
1068 operand to ObjectType. This construct now compiles properly. Example:
1069 ObjectType(PKG1[4]).
1070
1071 iASL: Correctly handle unresolved symbols in the hardware map file (-lm
1072 option). Previously, unresolved symbols could cause a protection fault.
1073 Such symbols are now marked as unresolved in the map file.
1074
1075 iASL: Implemented support to allow control method invocations as an
1076 operand to the ASL DeRefOf operator. Example:
1077 DeRefOf(MTH1(Local0))
1078
1079 Disassembler: Improved support for the ToPLD ASL macro. Detection of a
1080 possible _PLD buffer now includes examination of both the normal buffer
1081 length (16 or 20) as well as the surrounding AML package length.
1082
1083 Disassembler: Fixed a problem with the decoding of complex expressions
1084 within the Divide operator for ASL+. For the case where both the quotient
1085 and remainder targets are specified, the entire statement cannot be
1086 disassembled. Previously, the output incorrectly contained a mix of ASL-
1087 and ASL+ operators. This mixed statement causes a syntax error when
1088 compiled. Example:
1089 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly
1090 disassembled to:
1091 Divide (INT1 + 6, 128, RSLT, QUOT)
1092
1093 iASL/Tools: Added support to process AML and non-AML ACPI tables
1094 consistently. For the disassembler and AcpiExec, allow all types of ACPI
1095 tables (AML and data tables). For the iASL -e option, allow only AML
1096 tables (DSDT/SSDT).
1097
1098 ----------------------------------------
1099 31 August 2016. Summary of changes for version 20160831:
1100
1101
1102 1) ACPICA kernel-resident subsystem:
1103
1104 Improve support for the so-called "module-level code", which is defined
1105 to be math, logical and control AML opcodes that appear outside of any
1106 control method. This change improves the support by adding more opcodes
1107 that can be executed in the manner. Some other issues have been solved,
1108 and the ASL grammar changes to support such code under all scope
1109 operators (Device, etc.) are complete. Lv Zheng.
1110
1111 UEFI support: these OSL functions have been implemented. This is an
1112 additional step toward supporting the AcpiExec utility natively (with
1113 full hardware access) under UEFI. Marcelo Ferreira.
1114 AcpiOsReadPciConfiguration
1115 AcpiOsWritePciConfiguration
1116
1117 Fixed a possible mutex error during control method auto-serialization. Lv
1118 Zheng.
1119
1120 Updated support for the Generic Address Structure by fully implementing
1121 all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
1122 Zheng.
1123
1124 Updated the return value for the internal _OSI method. Instead of
1125 0xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
1126 for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
1127 implementations, and will be reflected and clarified in the next version
1128 of the ACPI specification.
1129
1130 Implemented two new table events that can be passed to an ACPICA table
1131 handler. These events are used to indicate a table installation or
1132 uninstallation. These events are used in addition to existed table load
1133 and unload events. Lv Zheng.
1134
1135 Implemented a cleanup for all internal string-to-integer conversions.
1136 Consolidate multiple versions of this functionality and limit possible
1137 bases to either 10 or 16 to simplify the code. Adds a new file,
1138 utstrtoul64.
1139
1140 Cleanup the inclusion order of the various compiler-specific headers.
1141 This simplifies build configuration management. The compiler-specific
1142 headers are now split out from the host-specific headers. Lv Zheng.
1143
1144 Example Code and Data Size: These are the sizes for the OS-independent
1145 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1146 debug version of the code includes the debug output trace mechanism and
1147 has a much larger code and data size.
1148
1149 Current Release:
1150 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
1151 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total
1152
1153
1154 2) iASL Compiler/Disassembler and Tools:
1155
1156 iASL/AcpiExec: Added a command line option to display the build date/time
1157 of the tool (-vd). This can be useful to verify that the correct version
1158 of the tools are being used.
1159
1160 AML Debugger: Implemented a new subcommand ("execute predef") to execute
1161 all predefined control methods and names within the current namespace.
1162 This can be useful for debugging problems with ACPI tables and the ACPI
1163 namespace.
1164
1165 ----------------------------------------
1166 29 July 2016. Summary of changes for version 20160729:
1167
1168
1169 1) ACPICA kernel-resident subsystem:
1170
1171 Implemented basic UEFI support for the various ACPICA tools. This
1172 includes:
1173 1) An OSL to implement the various AcpiOs* interfaces on UEFI.
1174 2) Support to obtain the ACPI tables on UEFI.
1175 3) Local implementation of required C library functions not available on
1176 UEFI.
1177 4) A front-end (main) function for the tools for UEFI-related
1178 initialization.
1179
1180 The initial deployment of this support is the AcpiDump utility executing
1181 as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
1182 Current environments supported are Linux/Unix. MSVC generation is not
1183 supported at this time. See the generate/efi/README file for build
1184 instructions. Lv Zheng.
1185
1186 Future plans include porting the AcpiExec utility to execute natively on
1187 the platform with I/O and memory access. This will allow viewing/dump of
1188 the platform namespace and native execution of ACPI control methods that
1189 access the actual hardware. To fully implement this support, the OSL
1190 functions below must be implemented with UEFI interfaces. Any community
1191 help in the implementation of these functions would be appreciated:
1192 AcpiOsReadPort
1193 AcpiOsWritePort
1194 AcpiOsReadMemory
1195 AcpiOsWriteMemory
1196 AcpiOsReadPciConfiguration
1197 AcpiOsWritePciConfiguration
1198
1199 Restructured and standardized the C library configuration for ACPICA,
1200 resulting in the various configuration options below. This includes a
1201 global restructuring of the compiler-dependent and platform-dependent
1202 include files. These changes may affect the existing platform-dependent
1203 configuration files on some hosts. Lv Zheng.
1204
1205 The current C library configuration options appear below. For any issues,
1206 it may be helpful to examine the existing compiler-dependent and
1207 platform-dependent files as examples. Lv Zheng.
1208
1209 1) Linux kernel:
1210 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
1211 library.
1212 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
1213 2) Unix/Windows/BSD applications:
1214 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
1215 library.
1216 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
1217 3) UEFI applications:
1218 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
1219 library.
1220 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
1221 4) UEFI applications (EDK2/StdLib):
1222 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
1223 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
1224
1225
1226 AML interpreter: "module-level code" support. Allows for execution of so-
1227 called "executable" AML code (math/logical operations, etc.) outside of
1228 control methods not just at the module level (top level) but also within
1229 any scope declared outside of a control method - Scope{}, Device{},
1230 Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
1231
1232 Simplified the configuration of the "maximum AML loops" global option by
1233 adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
1234 modified at runtime.
1235
1236
1237 Example Code and Data Size: These are the sizes for the OS-independent
1238 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1239 debug version of the code includes the debug output trace mechanism and
1240 has a much larger code and data size.
1241
1242 Current Release:
1243 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
1244 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total
1245
1246
1247 2) iASL Compiler/Disassembler and Tools:
1248
1249 iASL: Add full support for the RASF ACPI table (RAS Features Table).
1250 Includes disassembler, data table compiler, and header support.
1251
1252 iASL Expand "module-level code" support. Allows for
1253 compilation/disassembly of so-called "executable" AML code (math/logical
1254 operations, etc.) outside of control methods not just at the module level
1255 (top level) but also within any scope declared outside of a control
1256 method - Scope{}, Device{}, Processor{}, PowerResource{}, and
1257 ThermalZone{}.
1258
1259 AcpiDump: Added support for dumping all SSDTs on newer versions of
1260 Windows. These tables are now easily available -- SSDTs are not available
1261 through the registry on older versions.
1262
1263 ----------------------------------------
1264 27 May 2016. Summary of changes for version 20160527:
1265
1266
1267 1) ACPICA kernel-resident subsystem:
1268
1269 Temporarily reverted the new arbitrary bit length/alignment support in
1270 AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
1271 a number of regressions with the new code that need to be fully resolved
1272 and tested before this support can be finally integrated into ACPICA.
1273 Apologies for any inconveniences these issues may have caused.
1274
1275 The ACPI message macros are not configurable (ACPI_MSG_ERROR,
1276 ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
1277 and ACPI_MSG_BIOS_WARNING). Lv Zheng.
1278
1279 Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
1280 option. Adds a new return macro, return_STR. Junk-uk Kim.
1281
1282 Example Code and Data Size: These are the sizes for the OS-independent
1283 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1284 debug version of the code includes the debug output trace mechanism and
1285 has a much larger code and data size.
1286
1287 Current Release:
1288 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
1289 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
1290 Previous Release:
1291 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1292 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total
1293
1294 ----------------------------------------
1295 22 April 2016. Summary of changes for version 20160422:
1296
1297 1) ACPICA kernel-resident subsystem:
1298
1299 Fixed a regression in the GAS (generic address structure) arbitrary bit
1300 support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
1301 and incorrect return values. Lv Zheng. ACPICA BZ 1270.
1302
1303 ACPI 6.0: Added support for new/renamed resource macros. One new argument
1304 was added to each of these macros, and the original name has been
1305 deprecated. The AML disassembler will always disassemble to the new
1306 names. Support for the new macros was added to iASL, disassembler,
1307 resource manager, and the acpihelp utility. ACPICA BZ 1274.
1308
1309 I2cSerialBus -> I2cSerialBusV2
1310 SpiSerialBus -> SpiSerialBusV2
1311 UartSerialBus -> UartSerialBusV2
1312
1313 ACPI 6.0: Added support for a new integer field that was appended to the
1314 package object returned by the _BIX method. This adds iASL compile-time
1315 and AML runtime error checking. ACPICA BZ 1273.
1316
1317 ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
1318 Subspace Type2" (Headers, Disassembler, and data table compiler).
1319
1320 Example Code and Data Size: These are the sizes for the OS-independent
1321 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1322 debug version of the code includes the debug output trace mechanism and
1323 has a much larger code and data size.
1324
1325 Current Release:
1326 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1327 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
1328 Previous Release:
1329 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
1330 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total
1331
1332
1333 2) iASL Compiler/Disassembler and Tools:
1334
1335 iASL: Implemented an ASL grammar extension to allow/enable executable
1336 "module-level code" to be created and executed under the various
1337 operators that create new scopes. This type of AML code is already
1338 supported in all known AML interpreters, and the grammar change will
1339 appear in the next version of the ACPI specification. Simplifies the
1340 conditional runtime creation of named objects under these object types:
1341
1342 Device
1343 PowerResource
1344 Processor
1345 Scope
1346 ThermalZone
1347
1348 iASL: Implemented a new ASL extension, a "For" loop macro to add greater
1349 ease-of-use to the ASL language. The syntax is similar to the
1350 corresponding C operator, and is implemented with the existing AML While
1351 opcode -- thus requiring no changes to existing AML interpreters.
1352
1353 For (Initialize, Predicate, Update) {TermList}
1354
1355 Grammar:
1356 ForTerm :=
1357 For (
1358 Initializer // Nothing | TermArg => ComputationalData
1359 Predicate // Nothing | TermArg => ComputationalData
1360 Update // Nothing | TermArg => ComputationalData
1361 ) {TermList}
1362
1363
1364 iASL: The _HID/_ADR detection and validation has been enhanced to search
1365 under conditionals in order to allow these objects to be conditionally
1366 created at runtime.
1367
1368 iASL: Fixed several issues with the constant folding feature. The
1369 improvement allows better detection and resolution of statements that can
1370 be folded at compile time. ACPICA BZ 1266.
1371
1372 iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
1373 conversion to the ASL ElseIf operator where incorrect ASL code could be
1374 generated.
1375
1376 iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
1377 sometimes an extra (and extraneous) set of parentheses were emitted for
1378 some combinations of operators. Although this did not cause any problems
1379 with recompilation of the disassembled code, it made the code more
1380 difficult to read. David Box. ACPICA BZ 1231.
1381
1382 iASL: Changed to ignore the unreferenced detection for predefined names
1383 of resource descriptor elements, when the resource descriptor is
1384 created/defined within a control method.
1385
1386 iASL: Disassembler: Fix a possible fault with externally declared Buffer
1387 objects.
1388
1389 ----------------------------------------
1390 18 March 2016. Summary of changes for version 20160318:
1391
1392 1) ACPICA kernel-resident subsystem:
1393
1394 Added support for arbitrary bit lengths and bit offsets for registers
1395 defined by the Generic Address Structure. Previously, only aligned bit
1396 lengths of 8/16/32/64 were supported. This was sufficient for many years,
1397 but recently some machines have been seen that require arbitrary bit-
1398 level support. ACPICA BZ 1240. Lv Zheng.
1399
1400 Fixed an issue where the \_SB._INI method sometimes must be evaluated
1401 before any _REG methods are evaluated. Lv Zheng.
1402
1403 Implemented several changes related to ACPI table support
1404 (Headers/Disassembler/TableCompiler):
1405 NFIT: For ACPI 6.1, updated to add some additional new fields and
1406 constants.
1407 FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
1408 6).
1409 DMAR: Added new constants per the 10/2014 DMAR spec.
1410 IORT: Added new subtable per the 10/2015 IORT spec.
1411 HEST: For ACPI 6.1, added new constants and new subtable.
1412 DBG2: Added new constants per the 12/2015 DBG2 spec.
1413 FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
1414 ACPICA BZ 1249.
1415 ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
1416
1417 Updated header support for the DMAR table to match the current version of
1418 the related spec.
1419
1420 Added extensions to the ASL Concatenate operator to allow any ACPI object
1421 to be passed as an operand. Any object other than Integer/String/Buffer
1422 simply returns a string containing the object type. This extends the
1423 usefulness of the Printf macros. Previously, Concatenate would abort the
1424 control method if a non-data object was encountered.
1425
1426 ACPICA source code: Deployed the C "const" keyword across the source code
1427 where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
1428
1429 Example Code and Data Size: These are the sizes for the OS-independent
1430 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1431 debug version of the code includes the debug output trace mechanism and
1432 has a much larger code and data size.
1433
1434 Current Release:
1435 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
1436 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total
1437 Previous Release:
1438 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
1439 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total
1440
1441
1442 2) iASL Compiler/Disassembler and Tools:
1443
1444 iASL/Disassembler: Improved the heuristic used to determine the number of
1445 arguments for an externally defined control method (a method in another
1446 table). Although this is an improvement, there is no deterministic way to
1447 "guess" the number of method arguments. Only the ACPI 6.0 External opcode
1448 will completely solve this problem as it is deployed (automatically) in
1449 newer BIOS code.
1450
1451 iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
1452 statements that could cause errors when the disassembled file is
1453 compiled. ACPICA BZ 1243. David Box.
1454
1455 iASL: Fixed a regression caused by the merger of the two versions of the
1456 local strtoul64. Because of a dependency on a global variable, strtoul64
1457 could return an error for integers greater than a 32-bit value. ACPICA BZ
1458 1260.
1459
1460 iASL: Fixed a regression where a fault could occur for an ASL Return
1461 statement if it invokes a control method that is not resolved. ACPICA BZ
1462 1264.
1463
1464 AcpiXtract: Improved input file validation: detection of binary files and
1465 non-acpidump text files.
1466
1467 ----------------------------------------
1468 12 February 2016. Summary of changes for version 20160212:
1469
1470 1) ACPICA kernel-resident subsystem:
1471
1472 Implemented full support for the ACPI 6.1 specification (released in
1473 January). This version of the specification is available at:
1474 http://www.uefi.org/specifications
1475
1476 Only a relatively small number of changes were required in ACPICA to
1477 support ACPI 6.1, in these areas:
1478 - New predefined names
1479 - New _HID values
1480 - A new subtable for HEST
1481 - A few other header changes for new values
1482
1483 Ensure \_SB_._INI is executed before any _REG methods are executed. There
1484 appears to be existing BIOS code that relies on this behavior. Lv Zheng.
1485
1486 Reverted a change made in version 20151218 which enabled method
1487 invocations to be targets of various ASL operators (SuperName and Target
1488 grammar elements). While the new behavior is supported by the ACPI
1489 specification, other AML interpreters do not support this behavior and
1490 never will. The ACPI specification will be updated for ACPI 6.2 to remove
1491 this support. Therefore, the change was reverted to the original ACPICA
1492 behavior.
1493
1494 ACPICA now supports the GCC 6 compiler.
1495
1496 Current Release: (Note: build changes increased sizes)
1497 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
1498 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total
1499 Previous Release:
1500 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
1501 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total
1502
1503
1504 2) iASL Compiler/Disassembler and Tools:
1505
1506 Completed full support for the ACPI 6.0 External() AML opcode. The
1507 compiler emits an external AML opcode for each ASL External statement.
1508 This opcode is used by the disassembler to assist with the disassembly of
1509 external control methods by specifying the required number of arguments
1510 for the method. AML interpreters do not use this opcode. To ensure that
1511 interpreters do not even see the opcode, a block of one or more external
1512 opcodes is surrounded by an "If(0)" construct. As this feature becomes
1513 commonly deployed in BIOS code, the ability of disassemblers to correctly
1514 disassemble AML code will be greatly improved. David Box.
1515
1516 iASL: Implemented support for an optional cross-reference output file.
1517 The -lx option will create a the cross-reference file with the suffix
1518 "xrf". Three different types of cross-reference are created in this file:
1519 - List of object references made from within each control method
1520 - Invocation (caller) list for each user-defined control method
1521 - List of references to each non-method object in the namespace
1522
1523 iASL: Method invocations as ASL Target operands are now disallowed and
1524 flagged as errors in preparation for ACPI 6.2 (see the description of the
1525 problem above).
1526
1527 ----------------------------------------
1528 8 January 2016. Summary of changes for version 20160108:
1529
1530 1) ACPICA kernel-resident subsystem:
1531
1532 Updated all ACPICA copyrights and signons to 2016: Added the 2016
1533 copyright to all source code module headers and utility/tool signons.
1534 This includes the standard Linux dual-license header. This affects
1535 virtually every file in the ACPICA core subsystem, iASL compiler, all
1536 ACPICA utilities, and the ACPICA test suite.
1537
1538 Fixed a regression introduced in version 20151218 concerning the
1539 execution of so-called module-level ASL/AML code. Namespace objects
1540 created under a module-level If() construct were not properly/fully
1541 entered into the namespace and could cause an interpreter fault when
1542 accessed.
1543
1544 Example Code and Data Size: These are the sizes for the OS-independent
1545 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1546 debug version of the code includes the debug output trace mechanism and
1547 has a much larger code and data size.
1548
1549 Current Release:
1550 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
1551 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total
1552 Previous Release:
1553 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
1554 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total
1555
1556
1557 2) iASL Compiler/Disassembler and Tools:
1558
1559 Fixed a problem with the compilation of the GpioIo and GpioInt resource
1560 descriptors. The _PIN field name was incorrectly defined to be an array
1561 of 32-bit values, but the _PIN values are in fact 16 bits each. This
1562 would cause incorrect bit width warnings when using Word (16-bit) fields
1563 to access the descriptors.
1564
1565
1566 ----------------------------------------
1567 18 December 2015. Summary of changes for version 20151218:
1568
1569 1) ACPICA kernel-resident subsystem:
1570
1571 Implemented per-AML-table execution of "module-level code" as individual
1572 ACPI tables are loaded into the namespace during ACPICA initialization.
1573 In other words, any module-level code within an AML table is executed
1574 immediately after the table is loaded, instead of batched and executed
1575 after all of the tables have been loaded. This provides compatibility
1576 with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
1577 David Box.
1578
1579 To fully support the feature above, the default operation region handlers
1580 for the SystemMemory, SystemIO, and PCI_Config address spaces are now
1581 installed before any ACPI tables are loaded. This enables module-level
1582 code to access these address spaces during the table load and module-
1583 level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
1584 Box.
1585
1586 Implemented several changes to the internal _REG support in conjunction
1587 with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
1588 utilities for the changes above. Although these tools were changed, host
1589 operating systems that simply use the default handlers for SystemMemory,
1590 SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
1591
1592 For example, in the code below, DEV1 is conditionally added to the
1593 namespace by the DSDT via module-level code that accesses an operation
1594 region. The SSDT references DEV1 via the Scope operator. DEV1 must be
1595 created immediately after the DSDT is loaded in order for the SSDT to
1596 successfully reference DEV1. Previously, this code would cause an
1597 AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
1598 fully supported by ACPICA.
1599
1600 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
1601 {
1602 OperationRegion (OPR1, SystemMemory, 0x400, 32)
1603 Field (OPR1, AnyAcc, NoLock, Preserve)
1604 {
1605 FLD1, 1
1606 }
1607 If (FLD1)
1608 {
1609 Device (\DEV1)
1610 {
1611 }
1612 }
1613 }
1614 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
1615 {
1616 External (\DEV1, DeviceObj)
1617 Scope (\DEV1)
1618 {
1619 }
1620 }
1621
1622 Fixed an AML interpreter problem where control method invocations were
1623 not handled correctly when the invocation was itself a SuperName argument
1624 to another ASL operator. In these cases, the method was not invoked.
1625 ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
1626 argument:
1627 Store
1628 Acquire, Wait
1629 CondRefOf, RefOf
1630 Decrement, Increment
1631 Load, Unload
1632 Notify
1633 Signal, Release, Reset
1634 SizeOf
1635
1636 Implemented automatic String-to-ObjectReference conversion support for
1637 packages returned by predefined names (such as _DEP). A common BIOS error
1638 is to add double quotes around an ObjectReference namepath, which turns
1639 the reference into an unexpected string object. This support detects the
1640 problem and corrects it before the package is returned to the caller that
1641 invoked the method. Lv Zheng.
1642
1643 Implemented extensions to the Concatenate operator. Concatenate now
1644 accepts any type of object, it is not restricted to simply
1645 Integer/String/Buffer. For objects other than these 3 basic data types,
1646 the argument is treated as a string containing the name of the object
1647 type. This expands the utility of Concatenate and the Printf/Fprintf
1648 macros. ACPICA BZ 1222.
1649
1650 Cleaned up the output of the ASL Debug object. The timer() value is now
1651 optional and no longer emitted by default. Also, the basic data types of
1652 Integer/String/Buffer are simply emitted as their values, without a data
1653 type string -- since the data type is obvious from the output. ACPICA BZ
1654 1221.
1655
1656 Example Code and Data Size: These are the sizes for the OS-independent
1657 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1658 debug version of the code includes the debug output trace mechanism and
1659 has a much larger code and data size.
1660
1661 Current Release:
1662 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
1663 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total
1664 Previous Release:
1665 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
1666 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total
1667
1668
1669 2) iASL Compiler/Disassembler and Tools:
1670
1671 iASL: Fixed some issues with the ASL Include() operator. This operator
1672 was incorrectly defined in the iASL parser rules, causing a new scope to
1673 be opened for the code within the include file. This could lead to
1674 several issues, including allowing ASL code that is technically illegal
1675 and not supported by AML interpreters. Note, this does not affect the
1676 related #include preprocessor operator. ACPICA BZ 1212.
1677
1678 iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
1679 operator is essentially an ASL macro since there is no AML opcode
1680 associated with it. The code emitted by the iASL compiler for ElseIf is
1681 an Else opcode followed immediately by an If opcode. The disassembler
1682 will now emit an ElseIf if it finds an Else immediately followed by an
1683 If. This simplifies the decoded ASL, especially for deeply nested
1684 If..Else and large Switch constructs. Thus, the disassembled code more
1685 closely follows the original source ASL. ACPICA BZ 1211. Example:
1686
1687 Old disassembly:
1688 Else
1689 {
1690 If (Arg0 == 0x02)
1691 {
1692 Local0 = 0x05
1693 }
1694 }
1695
1696 New disassembly:
1697 ElseIf (Arg0 == 0x02)
1698 {
1699 Local0 = 0x05
1700 }
1701
1702 AcpiExec: Added support for the new module level code behavior and the
1703 early region installation. This required a small change to the
1704 initialization, since AcpiExec must install its own operation region
1705 handlers.
1706
1707 AcpiExec: Added support to make the debug object timer optional. Default
1708 is timer disabled. This cleans up the debug object output -- the timer
1709 data is rarely used.
1710
1711 AcpiExec: Multiple ACPI tables are now loaded in the order that they
1712 appear on the command line. This can be important when there are
1713 interdependencies/references between the tables.
1714
1715 iASL/Templates. Add support to generate template files with multiple
1716 SSDTs within a single output file. Also added ommand line support to
1717 specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
1718 1223, 1225.
1719
1720
1721 ----------------------------------------
1722 24 November 2015. Summary of changes for version 20151124:
1723
1724 1) ACPICA kernel-resident subsystem:
1725
1726 Fixed a possible regression for a previous update to FADT handling. The
1727 FADT no longer has a fixed table ID, causing some issues with code that
1728 was hardwired to a specific ID. Lv Zheng.
1729
1730 Fixed a problem where the method auto-serialization could interfere with
1731 the current SyncLevel. This change makes the auto-serialization support
1732 transparent to the SyncLevel support and management.
1733
1734 Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
1735 interface is intended for early access to the namespace during the
1736 initial namespace device discovery walk. The _SUB method has been seen to
1737 access operation regions in some cases, causing errors because the
1738 operation regions are not fully initialized.
1739
1740 AML Debugger: Fixed some issues with the terminate/quit/exit commands
1741 that can cause faults. Lv Zheng.
1742
1743 AML Debugger: Add thread ID support so that single-step mode only applies
1744 to the AML Debugger thread. This prevents runtime errors within some
1745 kernels. Lv Zheng.
1746
1747 Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
1748 methods that are invoked by this interface are optional, removed warnings
1749 emitted for the case where one or more of these methods do not exist.
1750 ACPICA BZ 1208, original change by Prarit Bhargava.
1751
1752 Made a major pass through the entire ACPICA source code base to
1753 standardize formatting that has diverged a bit over time. There are no
1754 functional changes, but this will of course cause quite a few code
1755 differences from the previous ACPICA release.
1756
1757 Example Code and Data Size: These are the sizes for the OS-independent
1758 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1759 debug version of the code includes the debug output trace mechanism and
1760 has a much larger code and data size.
1761
1762 Current Release:
1763 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
1764 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total
1765 Previous Release:
1766 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
1767 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
1768
1769
1770 2) iASL Compiler/Disassembler and Tools:
1771
1772 iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
1773 definition blocks within a single ASL file and the resulting AML file.
1774 Support for this type of file was also added to the various tools that
1775 use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
1776 example code below shows two definition blocks within the same file:
1777
1778 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
1779 0x12345678)
1780 {
1781 }
1782 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
1783 {
1784 }
1785
1786 iASL: Enhanced typechecking for the Name() operator. All expressions for
1787 the value of the named object must be reduced/folded to a single constant
1788 at compile time, as per the ACPI specification (the AML definition of
1789 Name()).
1790
1791 iASL: Fixed some code indentation issues for the -ic and -ia options (C
1792 and assembly headers). Now all emitted code correctly begins in column 1.
1793
1794 iASL: Added an error message for an attempt to open a Scope() on an
1795 object defined in an SSDT. The DSDT is always loaded into the namespace
1796 first, so any attempt to open a Scope on an SSDT object will fail at
1797 runtime.
1798
1799
1800 ----------------------------------------
1801 30 September 2015. Summary of changes for version 20150930:
1802
1803 1) ACPICA kernel-resident subsystem:
1804
1805 Debugger: Implemented several changes and bug fixes to assist support for
1806 the in-kernel version of the AML debugger. Lv Zheng.
1807 - Fix the "predefined" command for in-kernel debugger.
1808 - Do not enter debug command loop for the help and version commands.
1809 - Disallow "execute" command during execution/single-step of a method.
1810
1811 Interpreter: Updated runtime typechecking for all operators that have
1812 target operands. The operand is resolved and validated that it is legal.
1813 For example, the target cannot be a non-data object such as a Device,
1814 Mutex, ThermalZone, etc., as per the ACPI specification.
1815
1816 Debugger: Fixed the double-mutex user I/O handshake to work when local
1817 deadlock detection is enabled.
1818
1819 Debugger: limited display of method locals and arguments (LocalX and
1820 ArgX) to only those that have actually been initialized. This prevents
1821 lines of extraneous output.
1822
1823 Updated the definition of the NFIT table to correct the bit polarity of
1824 one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
1825
1826 Example Code and Data Size: These are the sizes for the OS-independent
1827 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1828 debug version of the code includes the debug output trace mechanism and
1829 has a much larger code and data size.
1830
1831 Current Release:
1832 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
1833 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
1834 Previous Release:
1835 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
1836 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
1837
1838
1839 2) iASL Compiler/Disassembler and Tools:
1840
1841 iASL: Improved the compile-time typechecking for operands of many of the
1842 ASL operators:
1843
1844 -- Added an option to disable compiler operand/operator typechecking (-
1845 ot).
1846
1847 -- For the following operators, the TermArg operands are now validated
1848 when possible to be Integer data objects: BankField, OperationRegion,
1849 DataTableRegion, Buffer, and Package.
1850
1851 -- Store (Source, Target): Both the source and target operands are
1852 resolved and checked that the operands are both legal. For example,
1853 neither operand can be a non-data object such as a Device, Mutex,
1854 ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
1855 operator can be used to store an object to any type of target object.
1856
1857 -- Store (Source, Target): If the source is a Package object, the target
1858 must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
1859 is a Package, the source must also be a Package.
1860
1861 -- Store (Source, Target): A warning is issued if the source and target
1862 resolve to the identical named object.
1863
1864 -- Store (Source, <method invocation>): An error is generated for the
1865 target method invocation, as this construct is not supported by the AML
1866 interpreter.
1867
1868 -- For all ASL math and logic operators, the target operand must be a
1869 data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
1870 includes the function return value also.
1871
1872 -- External declarations are also included in the typechecking where
1873 possible. External objects defined using the UnknownObj keyword cannot be
1874 typechecked, however.
1875
1876 iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
1877 operator:
1878 - Legacy code: Index(PKG1, 3)
1879 - New ASL+ code: PKG1[3]
1880 This completes the ACPI 6.0 ASL+ support as it was the only operator not
1881 supported.
1882
1883 iASL: Fixed the file suffix for the preprocessor output file (.i). Two
1884 spaces were inadvertently appended to the filename, causing file access
1885 and deletion problems on some systems.
1886
1887 ASL Test Suite (ASLTS): Updated the master makefile to generate all
1888 possible compiler output files when building the test suite -- thus
1889 exercising these features of the compiler. These files are automatically
1890 deleted when the test suite exits.
1891
1892
1893 ----------------------------------------
1894 18 August 2015. Summary of changes for version 20150818:
1895
1896 1) ACPICA kernel-resident subsystem:
1897
1898 Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
1899 Zheng. ACPICA BZ 1186.
1900
1901 Completed development to ensure that the ACPICA Disassembler and Debugger
1902 are fully standalone components of ACPICA. Removed cross-component
1903 dependences. Lv Zheng.
1904
1905 The max-number-of-AML-loops is now runtime configurable (previously was
1906 compile-time only). This is essentially a loop timeout to force-abort
1907 infinite AML loops. ACPCIA BZ 1192.
1908
1909 Debugger: Cleanup output to dump ACPI names and namepaths without any
1910 trailing underscores. Lv Zheng. ACPICA BZ 1135.
1911
1912 Removed unnecessary conditional compilations across the Debugger and
1913 Disassembler components where entire modules could be left uncompiled.
1914
1915 The aapits test is deprecated and has been removed from the ACPICA git
1916 tree. The test has never been completed and has not been maintained, thus
1917 becoming rather useless. ACPICA BZ 1015, 794.
1918
1919 A batch of small changes to close bugzilla and other reports:
1920 - Remove duplicate code for _PLD processing. ACPICA BZ 1176.
1921 - Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
1922 - iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
1923 - ACPI table support: general cleanup and simplification. Lv Zheng, Bob
1924 Moore.
1925 - ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
1926 ACPICA BZ 1184.
1927 - Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
1928 operators.
1929 - Debugger: Split debugger initialization/termination interfaces. Lv
1930 Zheng.
1931 - AcpiExec: Emit OemTableId for SSDTs during the load phase for table
1932 identification.
1933 - AcpiExec: Add debug message during _REG method phase during table
1934 load/init.
1935 - AcpiNames: Fix a regression where some output was missing and no longer
1936 emitted.
1937 - Debugger: General cleanup and simplification. Lv Zheng.
1938 - Disassembler: Cleanup use of several global option variables. Lv Zheng.
1939
1940 Example Code and Data Size: These are the sizes for the OS-independent
1941 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1942 debug version of the code includes the debug output trace mechanism and
1943 has a much larger code and data size.
1944
1945 Current Release:
1946 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
1947 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
1948 Previous Release:
1949 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
1950 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
1951
1952
1953 2) iASL Compiler/Disassembler and Tools:
1954
1955 AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
1956 were not handled properly and caused load errors. Now, properly invoke
1957 and use the ACPICA auto-reallocate mechanism for ACPI table data
1958 structures. ACPICA BZ 1188
1959
1960 AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
1961 BZ 1190.
1962
1963 AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
1964 AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
1965 executed during initialization. ACPICA BZ 1187, 1189.
1966
1967 iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
1968 that corresponds to each disassembled ASL statement, to simplify
1969 debugging. ACPICA BZ 1191.
1970
1971 Debugger: Add option to the "objects" command to display a summary of the
1972 current namespace objects (Object type and count). This is displayed if
1973 the command is entered with no arguments.
1974
1975 AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
1976
1977
1978 ----------------------------------------
1979 17 July 2015. Summary of changes for version 20150717:
1980
1981 1) ACPICA kernel-resident subsystem:
1982
1983 Improved the partitioning between the Debugger and Disassembler
1984 components. This allows the Debugger to be used standalone within kernel
1985 code without the Disassembler (which is used for single stepping also).
1986 This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
1987
1988 Debugger: Implemented a new command to trace the execution of control
1989 methods (Trace). This is especially useful for the in-kernel version of
1990 the debugger when file I/O may not be available for method trace output.
1991 See the ACPICA reference for more information. Lv Zheng.
1992
1993 Moved all C library prototypes (used for the local versions of these
1994 functions when requested) to a new header, acclib.h
1995 Cleaned up the use of non-ANSI C library functions. These functions are
1996 implemented locally in ACPICA. Moved all such functions to a common
1997 source file, utnonansi.c
1998
1999 Debugger: Fixed a problem with the "!!" command (get last command
2000 executed) where the debugger could enter an infinite loop and eventually
2001 crash.
2002
2003 Removed the use of local macros that were used for some of the standard C
2004 library functions to automatically cast input parameters. This mostly
2005 affected the is* functions where the input parameter is defined to be an
2006 int. This required a few modifications to the main ACPICA source code to
2007 provide casting for these functions and eliminate possible compiler
2008 warnings for these parameters.
2009
2010 Across the source code, added additional status/error checking to resolve
2011 issues discovered by static source code analysis tools such as Coverity.
2012
2013 Example Code and Data Size: These are the sizes for the OS-independent
2014 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2015 debug version of the code includes the debug output trace mechanism and
2016 has a much larger code and data size.
2017
2018 Current Release:
2019 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
2020 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
2021 Previous Release:
2022 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
2023 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
2024
2025
2026 2) iASL Compiler/Disassembler and Tools:
2027
2028 iASL: Fixed a regression where the device map file feature no longer
2029 worked properly when used in conjunction with the disassembler. It only
2030 worked properly with the compiler itself.
2031
2032 iASL: Implemented a new warning for method LocalX variables that are set
2033 but never used (similar to a C compiler such as gcc). This also applies
2034 to ArgX variables that are not defined by the parent method, and are
2035 instead (legally) used as local variables.
2036
2037 iASL/Preprocessor: Finished the pass-through of line numbers from the
2038 preprocessor to the compiler. This ensures that compiler errors/warnings
2039 have the correct original line numbers and filenames, regardless of any
2040 #include files.
2041
2042 iASL/Preprocessor: Fixed a couple of issues with comment handling and the
2043 pass-through of comments to the preprocessor output file (which becomes
2044 the compiler input file). Also fixed a problem with // comments that
2045 appear after a math expression.
2046
2047 iASL: Added support for the TCPA server table to the table compiler and
2048 template generator. (The client table was already previously supported)
2049
2050 iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
2051 identify the iASL compiler.
2052
2053 Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
2054 multiple times. The new names are ACPI_SIGN_NEGATIVE and
2055 ACPI_SIGN_POSITIVE.
2056
2057 AcpiHelp: Update to expand help messages for the iASL preprocessor
2058 directives.
2059
2060
2061 ----------------------------------------
2062 19 June 2015. Summary of changes for version 20150619:
2063
2064 Two regressions in version 20150616 have been addressed:
2065
2066 Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
2067 etc.) This update changes ACPICA to only use the standard headers for
2068 functions, or the prototypes for the local versions of the C library
2069 functions. Across the source code, this required some additional casts
2070 for some Clib invocations for portability. Moved all local prototypes to
2071 a new file, acclib.h
2072
2073 Fixes several problems with recent changes to the handling of the FACS
2074 table that could cause some systems not to boot.
2075
2076
2077 ----------------------------------------
2078 16 June 2015. Summary of changes for version 20150616:
2079
2080
2081 1) ACPICA kernel-resident subsystem:
2082
2083 Across the entire ACPICA source code base, the various macros for the C
2084 library functions (such as ACPI_STRLEN, etc.) have been removed and
2085 replaced by the standard C library names (strlen, etc.) The original
2086 purpose for these macros is no longer applicable. This simplification
2087 reduces the number of macros used in the ACPICA source code
2088 significantly, improving readability and maintainability.
2089
2090 Implemented support for a new ACPI table, the OSDT. This table, the
2091 "override" SDT, can be loaded directly by the host OS at boot time. It
2092 enables the replacement of existing namespace objects that were installed
2093 via the DSDT and/or SSDTs. The primary purpose for this is to replace
2094 buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
2095 for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
2096 Moore.
2097
2098 Added support for systems with (improperly) two FACS tables -- a "32-bit"
2099 table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
2100 X field). This change will support both automatically. There continues to
2101 be systems found with this issue. This support requires a change to the
2102 AcpiSetFirmwareWakingVector interface. Also, a public global variable has
2103 been added to allow the host to select which FACS is desired
2104 (AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
2105 details Lv Zheng.
2106
2107 Added a new feature to allow for systems that do not contain an FACS.
2108 Although this is already supported on hardware-reduced platforms, the
2109 feature has been extended for all platforms. The reasoning is that we do
2110 not want to abort the entire ACPICA initialization just because the
2111 system is seriously buggy and has no FACS.
2112
2113 Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
2114 not correctly transcribed from the ACPI specification in ACPICA version
2115 20150515.
2116
2117 Implemented support for the _CLS object in the AcpiGetObjectInfo external
2118 interface.
2119
2120 Updated the definitions of the TCPA and TPM2 ACPI tables to the more
2121 recent TCG ACPI Specification, December 14, 2014. Table disassembler and
2122 compiler also updated. Note: The TCPA "server" table is not supported by
2123 the disassembler/table-compiler at this time.
2124
2125 ACPI 6.0: Added definitions for the new GIC version field in the MADT.
2126
2127 Example Code and Data Size: These are the sizes for the OS-independent
2128 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2129 debug version of the code includes the debug output trace mechanism and
2130 has a much larger code and data size.
2131
2132 Current Release:
2133 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
2134 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
2135 Previous Release:
2136 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
2137 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
2138
2139
2140 2) iASL Compiler/Disassembler and Tools:
2141
2142 Disassembler: Fixed a problem with the new symbolic operator disassembler
2143 where incorrect ASL code could be emitted in some cases for the "non-
2144 commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
2145 ShiftRight. The actual problem cases seem to be rather unusual in common
2146 ASL code, however. David Box.
2147
2148 Modified the linux version of acpidump to obtain ACPI tables from not
2149 just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
2150 Zheng.
2151
2152 iASL: Fixed a problem where the user preprocessor output file (.i)
2153 contained extra data that was not expected. The compiler was using this
2154 file as a temporary file and passed through #line directives in order to
2155 keep compiler error messages in sync with the input file and line number
2156 across multiple include files. The (.i) is no longer a temporary file as
2157 the compiler uses a new, different file for the original purpose.
2158
2159 iASL: Fixed a problem where comments within the original ASL source code
2160 file were not passed through to the preprocessor output file, nor any
2161 listing files.
2162
2163 iASL: Fixed some issues for the handling of the "#include" preprocessor
2164 directive and the similar (but not the same) "Include" ASL operator.
2165
2166 iASL: Add support for the new OSDT in both the disassembler and compiler.
2167
2168 iASL: Fixed a problem with the constant folding support where a Buffer
2169 object could be incorrectly generated (incorrectly formed) during a
2170 conversion to a Store() operator.
2171
2172 AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
2173 description text for the _REV predefined name. _REV now permanently
2174 returns 2, as per the ACPI 6.0 specification.
2175
2176 Debugger: Enhanced the output of the Debug ASL object for references
2177 produced by the Index operator. For Buffers and strings, only output the
2178 actual byte pointed to by the index. For packages, only print the single
2179 package element decoded by the index. Previously, the entire
2180 buffer/string/package was emitted.
2181
2182 iASL/Table-compiler: Fixed a regression where the "generic" data types
2183 were no longer recognized, causing errors.
2184
2185
2186 ----------------------------------------
2187 15 May 2015. Summary of changes for version 20150515:
2188
2189 This release implements most of ACPI 6.0 as described below.
2190
2191 1) ACPICA kernel-resident subsystem:
2192
2193 Implemented runtime argument checking and return value checking for all
2194 new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
2195 _MTL, _PRR, _RDI, _RST, _TFP, _TSN.
2196
2197 Example Code and Data Size: These are the sizes for the OS-independent
2198 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2199 debug version of the code includes the debug output trace mechanism and
2200 has a much larger code and data size.
2201
2202 Current Release:
2203 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
2204 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
2205 Previous Release:
2206 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
2207 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
2208
2209
2210 2) iASL Compiler/Disassembler and Tools:
2211
2212 iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
2213 names (argument count validation and return value typechecking.)
2214
2215 iASL disassembler and table compiler: implemented support for all new
2216 ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
2217
2218 iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
2219 tables: FADT, MADT.
2220
2221 iASL preprocessor: Added a new directive to enable inclusion of binary
2222 blobs into ASL code. The new directive is #includebuffer. It takes a
2223 binary file as input and emits a named ascii buffer object into the ASL
2224 code.
2225
2226 AcpiHelp: Added support for all new ACPI 6.0 predefined names.
2227
2228 AcpiHelp: Added a new option, -d, to display all iASL preprocessor
2229 directives.
2230
2231 AcpiHelp: Added a new option, -t, to display all known/supported ACPI
2232 tables.
2233
2234
2235 ----------------------------------------
2236 10 April 2015. Summary of changes for version 20150410:
2237
2238 Reverted a change introduced in version 20150408 that caused
2239 a regression in the disassembler where incorrect operator
2240 symbols could be emitted.
2241
2242
2243 ----------------------------------------
2244 08 April 2015. Summary of changes for version 20150408:
2245
2246
2247 1) ACPICA kernel-resident subsystem:
2248
2249 Permanently set the return value for the _REV predefined name. It now
2250 returns 2 (was 5). This matches other ACPI implementations. _REV will be
2251 deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
2252 for ACPI 2.0 and later. It should never be used to differentiate or
2253 identify operating systems.
2254
2255 Added the "Windows 2015" string to the _OSI support. ACPICA will now
2256 return TRUE to a query with this string.
2257
2258 Fixed several issues with the local version of the printf function.
2259
2260 Added the C99 compiler option (-std=c99) to the Unix makefiles.
2261
2262 Current Release:
2263 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total
2264 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total
2265 Previous Release:
2266 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
2267 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
2268
2269
2270 2) iASL Compiler/Disassembler and Tools:
2271
2272 iASL: Implemented an enhancement to the constant folding feature to
2273 transform the parse tree to a simple Store operation whenever possible:
2274 Add (2, 3, X) ==> is converted to: Store (5, X)
2275 X = 2 + 3 ==> is converted to: Store (5, X)
2276
2277 Updated support for the SLIC table (Software Licensing Description Table)
2278 in both the Data Table compiler and the disassembler. The SLIC table
2279 support now conforms to "Microsoft Software Licensing Tables (SLIC and
2280 MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
2281 following the ACPI header is now defined to be "Proprietary Data", and as
2282 such, can only be entered or displayed as a hex data block.
2283
2284 Implemented full support for the MSDM table as described in the document
2285 above. Note: The format of MSDM is similar to SLIC. Any MSDM data
2286 following the ACPI header is defined to be "Proprietary Data", and can
2287 only be entered or displayed as a hex data block.
2288
2289 Implemented the -Pn option for the iASL Table Compiler (was only
2290 implemented for the ASL compiler). This option disables the iASL
2291 preprocessor.
2292
2293 Disassembler: For disassembly of Data Tables, added a comment field
2294 around the Ascii equivalent data that is emitted as part of the "Raw
2295 Table Data" block. This prevents the iASL Preprocessor from possible
2296 confusion if/when the table is compiled.
2297
2298 Disassembler: Added an option (-df) to force the disassembler to assume
2299 that the table being disassembled contains valid AML. This feature is
2300 useful for disassembling AML files that contain ACPI signatures other
2301 than DSDT or SSDT (such as OEMx or other signatures).
2302
2303 Changes for the EFI version of the tools:
2304 1) Fixed a build error/issue
2305 2) Fixed a cast warning
2306
2307 iASL: Fixed a path issue with the __FILE__ operator by making the
2308 directory prefix optional within the internal SplitInputFilename
2309 function.
2310
2311 Debugger: Removed some unused global variables.
2312
2313 Tests: Updated the makefile for proper generation of the AAPITS suite.
2314
2315
2316 ----------------------------------------
2317 04 February 2015. Summary of changes for version 20150204:
2318
2319 ACPICA kernel-resident subsystem:
2320
2321 Updated all ACPICA copyrights and signons to 2014. Added the 2014
2322 copyright to all module headers and signons, including the standard Linux
2323 header. This affects virtually every file in the ACPICA core subsystem,
2324 iASL compiler, all ACPICA utilities, and the test suites.
2325
2326 Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
2327 A raw gpe handling mechanism was created to allow better handling of GPE
2328 storms that aren't easily managed by the normal handler. The raw handler
2329 allows disabling/renabling of the the GPE so that interrupt storms can be
2330 avoided in cases where events cannot be timely serviced. In this
2331 scenario, handlers should use the AcpiSetGpe() API to disable/enable the
2332 GPE. This API will leave the reference counts undisturbed, thereby
2333 preventing unintentional clearing of the GPE when the intent in only to
2334 temporarily disable it. Raw handlers allow enabling and disabling of a
2335 GPE by removing GPE register locking. As such, raw handlers much provide
2336 their own locks while using GPE API's to protect access to GPE data
2337 structures.
2338 Lv Zheng
2339
2340 Events: Always modify GPE registers under the GPE lock.
2341 Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
2342 values. Reported as bug by joe.liu (a] apple.com.
2343
2344 Unix makefiles: Separate option to disable optimizations and
2345 _FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
2346 NOOPT disable option and creates a separate flag (NOFORTIFY) for this
2347 purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
2348 errors when building ACPICA. This allows disabling the option without
2349 also having to disable optimazations.
2350 David Box
2351
2352 Current Release:
2353 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2354 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total
2355
2356 --
2357 --------------------------------------
2358 07 November 2014. Summary of changes for version 20141107:
2359
2360 This release is available at https://acpica.org/downloads
2361
2362 This release introduces and implements language extensions to ASL that
2363 provide support for symbolic ("C-style") operators and expressions. These
2364 language extensions are known collectively as ASL+.
2365
2366
2367 1) iASL Compiler/Disassembler and Tools:
2368
2369 Disassembler: Fixed a problem with disassembly of the UartSerialBus
2370 macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
2371 Box.
2372
2373 Disassembler: Fixed the Unicode macro support to add escape sequences.
2374 All non-printable ASCII values are emitted as escape sequences, as well
2375 as the standard escapes for quote and backslash. Ensures that the
2376 disassembled macro can be correctly recompiled.
2377
2378 iASL: Added Printf/Fprintf macros for formatted output. These macros are
2379 translated to existing AML Concatenate and Store operations. Printf
2380 writes to the ASL Debug object. Fprintf allows the specification of an
2381 ASL name as the target. Only a single format specifier is required, %o,
2382 since the AML interpreter dynamically converts objects to the required
2383 type. David E. Box.
2384
2385 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate
2386 (Concatenate (Concatenate (Concatenate ("", Arg0),
2387 ": Unexpected value for "), Arg1), ", "), Arg2),
2388 " at line "), Arg3), Debug)
2389
2390 (new) Printf ("%o: Unexpected value for %o, %o at line %o",
2391 Arg0, Arg1, Arg2, Arg3)
2392
2393 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate
2394 ("", Arg1), ": "), Arg0), " Successful"), STR1)
2395
2396 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
2397
2398 iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
2399 ASL parse tree before the AML code is generated. This allows blocks of
2400 ASL code to be removed in order to help locate and identify problem
2401 devices and/or code. David E. Box.
2402
2403 AcpiExec: Added support (-fi) for an optional namespace object
2404 initialization file. This file specifies initial values for namespace
2405 objects as necessary for debugging and testing different ASL code paths
2406 that may be taken as a result of BIOS options.
2407
2408
2409 2) Overview of symbolic operator support for ASL (ASL+)
2410 -------------------------------------------------------
2411
2412 As an extension to the ASL language, iASL implements support for symbolic
2413 (C-style) operators for math and logical expressions. This can greatly
2414 simplify ASL code as well as improve both readability and
2415 maintainability. These language extensions can exist concurrently with
2416 all legacy ASL code and expressions.
2417
2418 The symbolic extensions are 100% compatible with existing AML
2419 interpreters, since no new AML opcodes are created. To implement the
2420 extensions, the iASL compiler transforms the symbolic expressions into
2421 the legacy ASL/AML equivalents at compile time.
2422
2423 Full symbolic expressions are supported, along with the standard C
2424 precedence and associativity rules.
2425
2426 Full disassembler support for the symbolic expressions is provided, and
2427 creates an automatic migration path for existing ASL code to ASL+ code
2428 via the disassembly process. By default, the disassembler now emits ASL+
2429 code with symbolic expressions. An option (-dl) is provided to force the
2430 disassembler to emit legacy ASL code if desired.
2431
2432 Below is the complete list of the currently supported symbolic operators
2433 with examples. See the iASL User Guide for additional information.
2434
2435
2436 ASL+ Syntax Legacy ASL Equivalent
2437 ----------- ---------------------
2438
2439 // Math operators
2440
2441 Z = X + Y Add (X, Y, Z)
2442 Z = X - Y Subtract (X, Y, Z)
2443 Z = X * Y Multiply (X, Y, Z)
2444 Z = X / Y Divide (X, Y, , Z)
2445 Z = X % Y Mod (X, Y, Z)
2446 Z = X << Y ShiftLeft (X, Y, Z)
2447 Z = X >> Y ShiftRight (X, Y, Z)
2448 Z = X & Y And (X, Y, Z)
2449 Z = X | Y Or (X, Y, Z)
2450 Z = X ^ Y Xor (X, Y, Z)
2451 Z = ~X Not (X, Z)
2452 X++ Increment (X)
2453 X-- Decrement (X)
2454
2455 // Logical operators
2456
2457 (X == Y) LEqual (X, Y)
2458 (X != Y) LNotEqual (X, Y)
2459 (X < Y) LLess (X, Y)
2460 (X > Y) LGreater (X, Y)
2461 (X <= Y) LLessEqual (X, Y)
2462 (X >= Y) LGreaterEqual (X, Y)
2463 (X && Y) LAnd (X, Y)
2464 (X || Y) LOr (X, Y)
2465 (!X) LNot (X)
2466
2467 // Assignment and compound assignment operations
2468
2469 X = Y Store (Y, X)
2470 X += Y Add (X, Y, X)
2471 X -= Y Subtract (X, Y, X)
2472 X *= Y Multiply (X, Y, X)
2473 X /= Y Divide (X, Y, , X)
2474 X %= Y Mod (X, Y, X)
2475 X <<= Y ShiftLeft (X, Y, X)
2476 X >>= Y ShiftRight (X, Y, X)
2477 X &= Y And (X, Y, X)
2478 X |= Y Or (X, Y, X)
2479 X ^= Y Xor (X, Y, X)
2480
2481
2482 3) ASL+ Examples:
2483 -----------------
2484
2485 Legacy ASL:
2486 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
2487 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
2488 0x03FB),
2489 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
2490 {
2491 And (MEMB, 0xFFFFFFF0, SRMB)
2492 Store (MEMB, Local2)
2493 Store (PDBM, Local1)
2494 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
2495 Store (SRMB, MEMB)
2496 Or (PDBM, 0x02, PDBM)
2497 }
2498
2499 ASL+ version:
2500 If (((R510 & 0x03FB) == 0x02E0) ||
2501 ((R520 & 0x03FB) == 0x02E0) ||
2502 ((R530 & 0x03FB) == 0x02E0) ||
2503 ((R540 & 0x03FB) == 0x02E0))
2504 {
2505 SRMB = (MEMB & 0xFFFFFFF0)
2506 Local2 = MEMB
2507 Local1 = PDBM
2508 PDBM &= 0xFFFFFFFFFFFFFFF9
2509 MEMB = SRMB
2510 PDBM |= 0x02
2511 }
2512
2513 Legacy ASL:
2514 Store (0x1234, Local1)
2515 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
2516 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
2517 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
2518 Store (Index (PKG1, 0x03), Local6)
2519 Store (Add (Local3, Local2), Debug)
2520 Add (Local1, 0x0F, Local2)
2521 Add (Local1, Multiply (Local2, Local3), Local2)
2522 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
2523
2524 ASL+ version:
2525 Local1 = 0x1234
2526 Local3 = (((Local1 + TEST) + 0x20) * Local2)
2527 Local3 = (Local2 * ((Local1 + TEST) + 0x20))
2528 Local3 = (Local1 + (TEST + (0x20 * Local2)))
2529 Local6 = Index (PKG1, 0x03)
2530 Debug = (Local3 + Local2)
2531 Local2 = (Local1 + 0x0F)
2532 Local2 = (Local1 + (Local2 * Local3))
2533 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
2534
2535
2536 ----------------------------------------
2537 26 September 2014. Summary of changes for version 20140926:
2538
2539 1) ACPICA kernel-resident subsystem:
2540
2541 Updated the GPIO operation region handler interface (GeneralPurposeIo).
2542 In order to support GPIO Connection objects with multiple pins, along
2543 with the related Field objects, the following changes to the interface
2544 have been made: The Address is now defined to be the offset in bits of
2545 the field unit from the previous invocation of a Connection. It can be
2546 viewed as a "Pin Number Index" into the connection resource descriptor.
2547 The BitWidth is the exact bit width of the field. It is usually one bit,
2548 but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
2549 additional information and examples.
2550
2551 GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
2552 corresponding _Lxx/_Exx methods are disabled (they may have been enabled
2553 by the firmware), so that they cannot fire until they are enabled via
2554 AcpiUpdateAllGpes. Rafael J. Wysocki.
2555
2556 Added a new return flag for the Event/GPE status interfaces --
2557 AcpiGetEventStatus and AcpiGetGpeStatus. The new
2558 ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
2559 GPE currently has a handler associated with it, and can thus actually
2560 affect the system. Lv Zheng.
2561
2562 Example Code and Data Size: These are the sizes for the OS-independent
2563 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2564 debug version of the code includes the debug output trace mechanism and
2565 has a much larger code and data size.
2566
2567 Current Release:
2568 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
2569 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
2570 Previous Release:
2571 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
2572 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
2573
2574 2) iASL Compiler/Disassembler and Tools:
2575
2576 iASL: Fixed a memory allocation/free regression introduced in 20140828
2577 that could cause the compiler to crash. This was introduced inadvertently
2578 during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
2579 1113.
2580
2581 iASL: Removed two error messages that have been found to create false
2582 positives, until they can be fixed and fully validated (ACPICA BZ 1112):
2583 1) Illegal forward reference within a method
2584 2) Illegal reference across two methods
2585
2586 iASL: Implemented a new option (-lm) to create a hardware mapping file
2587 that summarizes all GPIO, I2C, SPI, and UART connections. This option
2588 works for both the compiler and disassembler. See the iASL compiler user
2589 guide for additional information and examples (section 6.4.6).
2590
2591 AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
2592 version 2. This corrects the AE_BAD_HEADER exception seen on systems with
2593 a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
2594
2595 AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
2596 unless STDIN is actually a terminal. Assists with batch-mode processing.
2597 ACPICA BZ 1114.
2598
2599 Disassembler/AcpiHelp: Added another large group of recognized _HID
2600 values.
2601
2602
2603 ----------------------------------------
2604 28 August 2014. Summary of changes for version 20140828:
2605
2606 1) ACPICA kernel-resident subsystem:
2607
2608 Fixed a problem related to the internal use of the Timer() operator where
2609 a 64-bit divide could cause an attempted link to a double-precision math
2610 library. This divide is not actually necessary, so the code was
2611 restructured to eliminate it. Lv Zheng.
2612
2613 ACPI 5.1: Added support for the runtime validation of the _DSD package
2614 (similar to the iASL support).
2615
2616 ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
2617 SRAT table. Hanjun Guo <hanjun.guo (a] linaro.org>.
2618
2619 Example Code and Data Size: These are the sizes for the OS-independent
2620 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2621 debug version of the code includes the debug output trace mechanism and
2622 has a much larger code and data size.
2623
2624 Current Release:
2625 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
2626 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
2627 Previous Release:
2628 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1
2629 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total
2630
2631 2) iASL Compiler/Disassembler and Tools:
2632
2633 AcpiExec: Fixed a problem on unix systems where the original terminal
2634 state was not always properly restored upon exit. Seen when using the -v
2635 option. ACPICA BZ 1104.
2636
2637 iASL: Fixed a problem with the validation of the ranges/length within the
2638 Memory24 resource descriptor. There was a boundary condition when the
2639 range was equal to the (length -1) caused by the fact that these values
2640 are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
2641
2642 Disassembler: Fixed a problem with the GpioInt descriptor interrupt
2643 polarity
2644 flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
2645 is
2646 now supported properly.
2647
2648 ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
2649 in the disassembler, data table compiler, and table template generator.
2650
2651 iASL: Added a requirement for Device() objects that one of either a _HID
2652 or _ADR must exist within the scope of a Device, as per the ACPI
2653 specification. Remove a similar requirement that was incorrectly in place
2654 for the _DSD object.
2655
2656 iASL: Added error detection for illegal named references within control
2657 methods that would cause runtime failures. Now trapped as errors are: 1)
2658 References to objects within a non-parent control method. 2) Forward
2659 references (within a method) -- for control methods, AML interpreters use
2660 a one-pass parse of control methods. ACPICA BZ 1008.
2661
2662 iASL: Added error checking for dependencies related to the _PSx power
2663 methods. ACPICA BZ 1029.
2664 1) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
2665 _PS3.
2666 2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
2667 scope.
2668
2669 iASL and table compiler: Cleanup miscellaneous memory leaks by fully
2670 deploying the existing object and string caches and adding new caches for
2671 the table compiler.
2672
2673 iASL: Split the huge parser source file into multiple subfiles to improve
2674 manageability. Generation now requires the M4 macro preprocessor, which
2675 is part of the Bison distribution on both unix and windows platforms.
2676
2677 AcpiSrc: Fixed and removed all extraneous warnings generated during
2678 entire ACPICA source code scan and/or conversion.
2679
2680
2681 ----------------------------------------
2682
2683 24 July 2014. Summary of changes for version 20140724:
2684
2685 The ACPI 5.1 specification has been released and is available at:
2686 http://uefi.org/specs/access
2687
2688
2689 0) ACPI 5.1 support in ACPICA:
2690
2691 ACPI 5.1 is fully supported in ACPICA as of this release.
2692
2693 New predefined names. Support includes iASL and runtime ACPICA
2694 validation.
2695 _CCA (Cache Coherency Attribute).
2696 _DSD (Device-Specific Data). David Box.
2697
2698 Modifications to existing ACPI tables. Support includes headers, iASL
2699 Data Table compiler, disassembler, and the template generator.
2700 FADT - New fields and flags. Graeme Gregory.
2701 GTDT - One new subtable and new fields. Tomasz Nowicki.
2702 MADT - Two new subtables. Tomasz Nowicki.
2703 PCCT - One new subtable.
2704
2705 Miscellaneous.
2706 New notification type for System Resource Affinity change events.
2707
2708
2709 1) ACPICA kernel-resident subsystem:
2710
2711 Fixed a regression introduced in 20140627 where a fault can happen during
2712 the deletion of Alias AML namespace objects. The problem affected both
2713 the core ACPICA and the ACPICA tools including iASL and AcpiExec.
2714
2715 Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
2716 simple mechanism to enable wake GPEs that have no associated handler or
2717 control method. Rafael Wysocki.
2718
2719 Updated the AcpiEnableGpe interface to disallow the enable if there is no
2720 handler or control method associated with the particular GPE. This will
2721 help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
2722
2723 Updated GPE handling and dispatch by disabling the GPE before clearing
2724 the status bit for edge-triggered GPEs. Lv Zheng.
2725
2726 Added Timer() support to the AML Debug object. The current timer value is
2727 now displayed with each invocation of (Store to) the debug object to
2728 enable simple generation of execution times for AML code (method
2729 execution for example.) ACPICA BZ 1093.
2730
2731 Example Code and Data Size: These are the sizes for the OS-independent
2732 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2733 debug version of the code includes the debug output trace mechanism and
2734 has a much larger code and data size.
2735
2736 Current Release:
2737 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total
2738 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total
2739 Previous Release:
2740 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total
2741 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total
2742
2743
2744 2) iASL Compiler/Disassembler and Tools:
2745
2746 Fixed an issue with the recently added local printf implementation,
2747 concerning width/precision specifiers that could cause incorrect output.
2748 Lv Zheng. ACPICA BZ 1094.
2749
2750 Disassembler: Added support to detect buffers that contain UUIDs and
2751 disassemble them to an invocation of the ToUUID operator. Also emit
2752 commented descriptions of known ACPI-related UUIDs.
2753
2754 AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
2755 -u. Adds three new files.
2756
2757 iASL: Update table compiler and disassembler for DMAR table changes that
2758 were introduced in September 2013. With assistance by David Woodhouse.
2759
2760 ----------------------------------------
2761 27 June 2014. Summary of changes for version 20140627:
2762
2763 1) ACPICA kernel-resident subsystem:
2764
2765 Formatted Output: Implemented local versions of standard formatted output
2766 utilities such as printf, etc. Over time, it has been discovered that
2767 there are in fact many portability issues with printf, and the addition
2768 of this feature will fix/prevent these issues once and for all. Some
2769 known issues are summarized below:
2770
2771 1) Output of 64-bit values is not portable. For example, UINT64 is %ull
2772 for the Linux kernel and is %uI64 for some MSVC versions.
2773 2) Invoking printf consistently in a manner that is portable across both
2774 32-bit and 64-bit platforms is difficult at best in many situations.
2775 3) The output format for pointers varies from system to system (leading
2776 zeros especially), and leads to inconsistent output from ACPICA across
2777 platforms.
2778 4) Certain platform-specific printf formats may conflict with ACPICA use.
2779 5) If there is no local C library available, ACPICA now has local support
2780 for printf.
2781
2782 -- To address these printf issues in a complete manner, ACPICA now
2783 directly implements a small subset of printf format specifiers, only
2784 those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
2785
2786 Implemented support for ACPICA generation within the EFI environment.
2787 Initially, the AcpiDump utility is supported in the UEFI shell
2788 environment. Lv Zheng.
2789
2790 Added a new external interface, AcpiLogError, to improve ACPICA
2791 portability. This allows the host to redirect error messages from the
2792 ACPICA utilities. Lv Zheng.
2793
2794 Added and deployed new OSL file I/O interfaces to improve ACPICA
2795 portability:
2796 AcpiOsOpenFile
2797 AcpiOsCloseFile
2798 AcpiOsReadFile
2799 AcpiOsWriteFile
2800 AcpiOsGetFileOffset
2801 AcpiOsSetFileOffset
2802 There are C library implementations of these functions in the new file
2803 service_layers/oslibcfs.c -- however, the functions can be implemented by
2804 the local host in any way necessary. Lv Zheng.
2805
2806 Implemented a mechanism to disable/enable ACPI table checksum validation
2807 at runtime. This can be useful when loading tables very early during OS
2808 initialization when it may not be possible to map the entire table in
2809 order to compute the checksum. Lv Zheng.
2810
2811 Fixed a buffer allocation issue for the Generic Serial Bus support.
2812 Originally, a fixed buffer length was used. This change allows for
2813 variable-length buffers based upon the protocol indicated by the field
2814 access attributes. Reported by Lan Tianyu. Lv Zheng.
2815
2816 Fixed a problem where an object detached from a namespace node was not
2817 properly terminated/cleared and could cause a circular list problem if
2818 reattached. ACPICA BZ 1063. David Box.
2819
2820 Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
2821
2822 Fixed a possible memory leak in an error return path within the function
2823 AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
2824
2825 Example Code and Data Size: These are the sizes for the OS-independent
2826 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2827 debug version of the code includes the debug output trace mechanism and
2828 has a much larger code and data size.
2829
2830 Current Release:
2831 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total
2832 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total
2833 Previous Release:
2834 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total
2835 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total
2836
2837
2838 2) iASL Compiler/Disassembler and Tools:
2839
2840 Disassembler: Add dump of ASCII equivalent text within a comment at the
2841 end of each line of the output for the Buffer() ASL operator.
2842
2843 AcpiDump: Miscellaneous changes:
2844 Fixed repetitive table dump in -n mode.
2845 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
2846 the ACPI 2.0 GUID fails.
2847
2848 iASL: Fixed a problem where the compiler could fault if incorrectly given
2849 an acpidump output file as input. ACPICA BZ 1088. David Box.
2850
2851 AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
2852 they are invoked without any arguments.
2853
2854 Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
2855 1086. Colin Ian King.
2856
2857 Disassembler: Cleaned up a block of code that extracts a parent Op
2858 object. Added a comment that explains that the parent is guaranteed to be
2859 valid in this case. ACPICA BZ 1069.
2860
2861
2862 ----------------------------------------
2863 24 April 2014. Summary of changes for version 20140424:
2864
2865 1) ACPICA kernel-resident subsystem:
2866
2867 Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
2868 Some of these tables are known to contain a trailing NULL entry. Lv
2869 Zheng.
2870
2871 Removed an extraneous error message for the case where there are a large
2872 number of system GPEs (> 124). This was the "32-bit FADT register is too
2873 long to convert to GAS struct" message, which is irrelevant for GPEs
2874 since the GPEx_BLK_LEN fields of the FADT are always used instead of the
2875 (limited capacity) GAS bit length. Also, several changes to ensure proper
2876 support for GPE numbers > 255, where some "GPE number" fields were 8-bits
2877 internally.
2878
2879 Implemented and deployed additional configuration support for the public
2880 ACPICA external interfaces. Entire classes of interfaces can now be
2881 easily modified or configured out, replaced by stubbed inline functions
2882 by default. Lv Zheng.
2883
2884 Moved all public ACPICA runtime configuration globals to the public
2885 ACPICA external interface file for convenience. Also, removed some
2886 obsolete/unused globals. See the file acpixf.h. Lv Zheng.
2887
2888 Documentation: Added a new section to the ACPICA reference describing the
2889 maximum number of GPEs that can be supported by the FADT-defined GPEs in
2890 block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
2891 reference.
2892
2893 Example Code and Data Size: These are the sizes for the OS-independent
2894 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2895 debug version of the code includes the debug output trace mechanism and
2896 has a much larger code and data size.
2897
2898 Current Release:
2899 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total
2900 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total
2901 Previous Release:
2902 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total
2903 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
2904
2905
2906 2) iASL Compiler/Disassembler and Tools:
2907
2908 iASL and disassembler: Add full support for the LPIT table (Low Power
2909 Idle Table). Includes support in the disassembler, data table compiler,
2910 and template generator.
2911
2912 AcpiDump utility:
2913 1) Add option to force the use of the RSDT (over the XSDT).
2914 2) Improve validation of the RSDP signature (use 8 chars instead of 4).
2915
2916 iASL: Add check for predefined packages that are too large. For
2917 predefined names that contain subpackages, check if each subpackage is
2918 too large. (Check for too small already exists.)
2919
2920 Debugger: Updated the GPE command (which simulates a GPE by executing the
2921 GPE code paths in ACPICA). The GPE device is now optional, and defaults
2922 to the GPE 0/1 FADT-defined blocks.
2923
2924 Unix application OSL: Update line-editing support. Add additional error
2925 checking and take care not to reset terminal attributes on exit if they
2926 were never set. This should help guarantee that the terminal is always
2927 left in the previous state on program exit.
2928
2929
2930 ----------------------------------------
2931 25 March 2014. Summary of changes for version 20140325:
2932
2933 1) ACPICA kernel-resident subsystem:
2934
2935 Updated the auto-serialize feature for control methods. This feature
2936 automatically serializes all methods that create named objects in order
2937 to prevent runtime errors. The update adds support to ignore the
2938 currently executing AML SyncLevel when invoking such a method, in order
2939 to prevent disruption of any existing SyncLevel priorities that may exist
2940 in the AML code. Although the use of SyncLevels is relatively rare, this
2941 change fixes a regression where an AE_AML_MUTEX_ORDER exception can
2942 appear on some machines starting with the 20140214 release.
2943
2944 Added a new external interface to allow the host to install ACPI tables
2945 very early, before the namespace is even created. AcpiInstallTable gives
2946 the host additional flexibility for ACPI table management. Tables can be
2947 installed directly by the host as if they had originally appeared in the
2948 XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
2949 (anything except the DSDT and FACS). Adds a new file, tbdata.c, along
2950 with additional internal restructuring and cleanup. See the ACPICA
2951 Reference for interface details. Lv Zheng.
2952
2953 Added validation of the checksum for all incoming dynamically loaded
2954 tables (via external interfaces or via AML Load/LoadTable operators). Lv
2955 Zheng.
2956
2957 Updated the use of the AcpiOsWaitEventsComplete interface during Notify
2958 and GPE handler removal. Restructured calls to eliminate possible race
2959 conditions. Lv Zheng.
2960
2961 Added a warning for the use/execution of the ASL/AML Unload (table)
2962 operator. This will help detect and identify machines that use this
2963 operator if and when it is ever used. This operator has never been seen
2964 in the field and the usage model and possible side-effects of the drastic
2965 runtime action of a full table removal are unknown.
2966
2967 Reverted the use of #pragma push/pop which was introduced in the 20140214
2968 release. It appears that push and pop are not implemented by enough
2969 compilers to make the use of this feature feasible for ACPICA at this
2970 time. However, these operators may be deployed in a future ACPICA
2971 release.
2972
2973 Added the missing EXPORT_SYMBOL macros for the install and remove SCI
2974 handler interfaces.
2975
2976 Source code generation:
2977 1) Disabled the use of the "strchr" macro for the gcc-specific
2978 generation. For some versions of gcc, this macro can periodically expose
2979 a compiler bug which in turn causes compile-time error(s).
2980 2) Added support for PPC64 compilation. Colin Ian King.
2981
2982 Example Code and Data Size: These are the sizes for the OS-independent
2983 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2984 debug version of the code includes the debug output trace mechanism and
2985 has a much larger code and data size.
2986
2987 Current Release:
2988 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total
2989 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
2990 Previous Release:
2991 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total
2992 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total
2993
2994
2995 2) iASL Compiler/Disassembler and Tools:
2996
2997 Disassembler: Added several new features to improve the readability of
2998 the resulting ASL code. Extra information is emitted within comment
2999 fields in the ASL code:
3000 1) Known _HID/_CID values are decoded to descriptive text.
3001 2) Standard values for the Notify() operator are decoded to descriptive
3002 text.
3003 3) Target operands are expanded to full pathnames (in a comment) when
3004 possible.
3005
3006 Disassembler: Miscellaneous updates for extern() handling:
3007 1) Abort compiler if file specified by -fe option does not exist.
3008 2) Silence unnecessary warnings about argument count mismatches.
3009 3) Update warning messages concerning unresolved method externals.
3010 4) Emit "UnknownObj" keyword for externals whose type cannot be
3011 determined.
3012
3013 AcpiHelp utility:
3014 1) Added the -a option to display both the ASL syntax and the AML
3015 encoding for an input ASL operator. This effectively displays all known
3016 information about an ASL operator with one AcpiHelp invocation.
3017 2) Added substring match support (similar to a wildcard) for the -i
3018 (_HID/PNP IDs) option.
3019
3020 iASL/Disassembler: Since this tool does not yet support execution on big-
3021 endian machines, added detection of endianness and an error message if
3022 execution is attempted on big-endian. Support for big-endian within iASL
3023 is a feature that is on the ACPICA to-be-done list.
3024
3025 AcpiBin utility:
3026 1) Remove option to extract binary files from an acpidump; this function
3027 is made obsolete by the AcpiXtract utility.
3028 2) General cleanup of open files and allocated buffers.
3029
3030
3031 ----------------------------------------
3032 14 February 2014. Summary of changes for version 20140214:
3033
3034 1) ACPICA kernel-resident subsystem:
3035
3036 Implemented a new mechanism to proactively prevent problems with ill-
3037 behaved reentrant control methods that create named ACPI objects. This
3038 behavior is illegal as per the ACPI specification, but is nonetheless
3039 frequently seen in the field. Previously, this could lead to an
3040 AE_ALREADY_EXISTS exception if the method was actually entered by more
3041 than one thread. This new mechanism detects such methods at table load
3042 time and marks them "serialized" to prevent reentrancy. A new global
3043 option, AcpiGbl_AutoSerializeMethods, has been added to disable this
3044 feature if desired. This mechanism and global option obsoletes and
3045 supersedes the previous AcpiGbl_SerializeAllMethods option.
3046
3047 Added the "Windows 2013" string to the _OSI support. ACPICA will now
3048 respond TRUE to _OSI queries with this string. It is the stated policy of
3049 ACPICA to add new strings to the _OSI support as soon as possible after
3050 they are defined. See the full ACPICA _OSI policy which has been added to
3051 the utilities/utosi.c file.
3052
3053 Hardened/updated the _PRT return value auto-repair code:
3054 1) Do not abort the repair on a single subpackage failure, continue to
3055 check all subpackages.
3056 2) Add check for the minimum subpackage length (4).
3057 3) Properly handle extraneous NULL package elements.
3058
3059 Added support to avoid the possibility of infinite loops when traversing
3060 object linked lists. Never allow an infinite loop, even in the face of
3061 corrupted object lists.
3062
3063 ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
3064 pack(pop) directives to ensure that the ACPICA headers are independent of
3065 compiler settings or other host headers.
3066
3067 Example Code and Data Size: These are the sizes for the OS-independent
3068 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3069 debug version of the code includes the debug output trace mechanism and
3070 has a much larger code and data size.
3071
3072 Current Release:
3073 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total
3074 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total
3075 Previous Release:
3076 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total
3077 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
3078
3079
3080 2) iASL Compiler/Disassembler and Tools:
3081
3082 iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
3083 first reserved field was incorrectly forced to have a value of zero. This
3084 change correctly forces the field to have a value of one. ACPICA BZ 1081.
3085
3086 Debugger: Added missing support for the "Extra" and "Data" subobjects
3087 when displaying object data.
3088
3089 Debugger: Added support to display entire object linked lists when
3090 displaying object data.
3091
3092 iASL: Removed the obsolete -g option to obtain ACPI tables from the
3093 Windows registry. This feature has been superseded by the acpidump
3094 utility.
3095
3096
3097 ----------------------------------------
3098 14 January 2014. Summary of changes for version 20140114:
3099
3100 1) ACPICA kernel-resident subsystem:
3101
3102 Updated all ACPICA copyrights and signons to 2014. Added the 2014
3103 copyright to all module headers and signons, including the standard Linux
3104 header. This affects virtually every file in the ACPICA core subsystem,
3105 iASL compiler, all ACPICA utilities, and the test suites.
3106
3107 Improved parameter validation for AcpiInstallGpeBlock. Added the
3108 following checks:
3109 1) The incoming device handle refers to type ACPI_TYPE_DEVICE.
3110 2) There is not already a GPE block attached to the device.
3111 Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
3112 device.
3113
3114 Correctly support "references" in the ACPI_OBJECT. This change fixes the
3115 support to allow references (namespace nodes) to be passed as arguments
3116 to control methods via the evaluate object interface. This is probably
3117 most useful for testing purposes, however.
3118
3119 Improved support for 32/64 bit physical addresses in printf()-like
3120 output. This change improves the support for physical addresses in printf
3121 debug statements and other output on both 32-bit and 64-bit hosts. It
3122 consistently outputs the appropriate number of bytes for each host. The
3123 %p specifier is unsatisfactory since it does not emit uniform output on
3124 all hosts/clib implementations (on some, leading zeros are not supported,
3125 leading to difficult-to-read output).
3126
3127 Example Code and Data Size: These are the sizes for the OS-independent
3128 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3129 debug version of the code includes the debug output trace mechanism and
3130 has a much larger code and data size.
3131
3132 Current Release:
3133 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total
3134 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
3135 Previous Release:
3136 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total
3137 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
3138
3139
3140 2) iASL Compiler/Disassembler and Tools:
3141
3142 iASL: Fix a possible fault when using the Connection() operator. Fixes a
3143 problem if the parent Field definition for the Connection operator refers
3144 to an operation region that does not exist. ACPICA BZ 1064.
3145
3146 AcpiExec: Load of local test tables is now optional. The utility has the
3147 capability to load some various tables to test features of ACPICA.
3148 However, there are enough of them that the output of the utility became
3149 confusing. With this change, only the required local tables are displayed
3150 (RSDP, XSDT, etc.) along with the actual tables loaded via the command
3151 line specification. This makes the default output simler and easier to
3152 understand. The -el command line option restores the original behavior
3153 for testing purposes.
3154
3155 AcpiExec: Added support for overlapping operation regions. This change
3156 expands the simulation of operation regions by supporting regions that
3157 overlap within the given address space. Supports SystemMemory and
3158 SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
3159
3160 AcpiExec: Added region handler support for PCI_Config and EC spaces. This
3161 allows AcpiExec to simulate these address spaces, similar to the current
3162 support for SystemMemory and SystemIO.
3163
3164 Debugger: Added new command to read/write/compare all namespace objects.
3165 The command "test objects" will exercise the entire namespace by writing
3166 new values to each data object, and ensuring that the write was
3167 successful. The original value is then restored and verified.
3168
3169 Debugger: Added the "test predefined" command. This change makes this
3170 test public and puts it under the new "test" command. The test executes
3171 each and every predefined name within the current namespace.
3172
3173
3174 ----------------------------------------
3175 18 December 2013. Summary of changes for version 20131218:
3176
3177 Global note: The ACPI 5.0A specification was released this month. There
3178 are no changes needed for ACPICA since this release of ACPI is an
3179 errata/clarification release. The specification is available at
3180 acpi.info.
3181
3182
3183 1) ACPICA kernel-resident subsystem:
3184
3185 Added validation of the XSDT root table if it is present. Some older
3186 platforms contain an XSDT that is ill-formed or otherwise invalid (such
3187 as containing some or all entries that are NULL pointers). This change
3188 adds a new function to validate the XSDT before actually using it. If the
3189 XSDT is found to be invalid, ACPICA will now automatically fall back to
3190 using the RSDT instead. Original implementation by Zhao Yakui. Ported to
3191 ACPICA and enhanced by Lv Zheng and Bob Moore.
3192
3193 Added a runtime option to ignore the XSDT and force the use of the RSDT.
3194 This change adds a runtime option that will force ACPICA to use the RSDT
3195 instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
3196 requires that an XSDT be used instead of the RSDT, the XSDT has been
3197 found to be corrupt or ill-formed on some machines. Lv Zheng.
3198
3199 Added a runtime option to favor 32-bit FADT register addresses over the
3200 64-bit addresses. This change adds an option to favor 32-bit FADT
3201 addresses when there is a conflict between the 32-bit and 64-bit versions
3202 of the same register. The default behavior is to use the 64-bit version
3203 in accordance with the ACPI specification. This can now be overridden via
3204 the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
3205
3206 During the change above, the internal "Convert FADT" and "Verify FADT"
3207 functions have been merged to simplify the code, making it easier to
3208 understand and maintain. ACPICA BZ 933.
3209
3210 Improve exception reporting and handling for GPE block installation.
3211 Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
3212 status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
3213
3214 Added helper macros to extract bus/segment numbers from the HEST table.
3215 This change adds two macros to extract the encoded bus and segment
3216 numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
3217 Betty Dall <betty.dall (a] hp.com>
3218
3219 Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
3220 by ACPICA. It is not a public macro, so it should have no effect on
3221 existing OSV code. Lv Zheng.
3222
3223 Example Code and Data Size: These are the sizes for the OS-independent
3224 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3225 debug version of the code includes the debug output trace mechanism and
3226 has a much larger code and data size.
3227
3228 Current Release:
3229 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total
3230 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
3231 Previous Release:
3232 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total
3233 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total
3234
3235
3236 2) iASL Compiler/Disassembler and Tools:
3237
3238 Disassembler: Improved pathname support for emitted External()
3239 statements. This change adds full pathname support for external names
3240 that have been resolved internally by the inclusion of additional ACPI
3241 tables (via the iASL -e option). Without this change, the disassembler
3242 can emit multiple externals for the same object, or it become confused
3243 when the Scope() operator is used on an external object. Overall, greatly
3244 improves the ability to actually recompile the emitted ASL code when
3245 objects a referenced across multiple ACPI tables. Reported by Michael
3246 Tsirkin (mst (a] redhat.com).
3247
3248 Tests/ASLTS: Updated functional control suite to execute with no errors.
3249 David Box. Fixed several errors related to the testing of the interpreter
3250 slack mode. Lv Zheng.
3251
3252 iASL: Added support to detect names that are declared within a control
3253 method, but are unused (these are temporary names that are only valid
3254 during the time the method is executing). A remark is issued for these
3255 cases. ACPICA BZ 1022.
3256
3257 iASL: Added full support for the DBG2 table. Adds full disassembler,
3258 table compiler, and template generator support for the DBG2 table (Debug
3259 Port 2 table).
3260
3261 iASL: Added full support for the PCCT table, update the table definition.
3262 Updates the PCCT table definition in the actbl3.h header and adds table
3263 compiler and template generator support.
3264
3265 iASL: Added an option to emit only error messages (no warnings/remarks).
3266 The -ve option will enable only error messages, warnings and remarks are
3267 suppressed. This can simplify debugging when only the errors are
3268 important, such as when an ACPI table is disassembled and there are many
3269 warnings and remarks -- but only the actual errors are of real interest.
3270
3271 Example ACPICA code (source/tools/examples): Updated the example code so
3272 that it builds to an actual working program, not just example code. Added
3273 ACPI tables and execution of an example control method in the DSDT. Added
3274 makefile support for Unix generation.
3275
3276
3277 ----------------------------------------
3278 15 November 2013. Summary of changes for version 20131115:
3279
3280 This release is available at https://acpica.org/downloads
3281
3282
3283 1) ACPICA kernel-resident subsystem:
3284
3285 Resource Manager: Fixed loop termination for the "get AML length"
3286 function. The loop previously had an error termination on a NULL resource
3287 pointer, which can never happen since the loop simply increments a valid
3288 resource pointer. This fix changes the loop to terminate with an error on
3289 an invalid end-of-buffer condition. The problem can be seen as an
3290 infinite loop by callers to AcpiSetCurrentResources with an invalid or
3291 corrupted resource descriptor, or a resource descriptor that is missing
3292 an END_TAG descriptor. Reported by Dan Carpenter
3293 <dan.carpenter (a] oracle.com>. Lv Zheng, Bob Moore.
3294
3295 Table unload and ACPICA termination: Delete all attached data objects
3296 during namespace node deletion. This fix updates namespace node deletion
3297 to delete the entire list of attached objects (attached via
3298 AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
3299 1024. Tomasz Nowicki (tomasz.nowicki (a] linaro.org).
3300
3301 ACPICA termination: Added support to delete all objects attached to the
3302 root namespace node. This fix deletes any and all objects that have been
3303 attached to the root node via AcpiAttachData. Previously, none of these
3304 objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
3305
3306 Debug output: Do not emit the function nesting level for the in-kernel
3307 build. The nesting level is really only useful during a single-thread
3308 execution. Therefore, only enable this output for the AcpiExec utility.
3309 Also, only emit the thread ID when executing under AcpiExec (Context
3310 switches are still always detected and a message is emitted). ACPICA BZ
3311 972.
3312
3313 Example Code and Data Size: These are the sizes for the OS-independent
3314 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3315 debug version of the code includes the debug output trace mechanism and
3316 has a much larger code and data size.
3317
3318 Current Release:
3319 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total
3320 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total
3321 Previous Release:
3322 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total
3323 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total
3324
3325
3326 2) iASL Compiler/Disassembler and Tools:
3327
3328 AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
3329 correct portable POSIX header for terminal control functions.
3330
3331 Disassembler: Fixed control method invocation issues related to the use
3332 of the CondRefOf() operator. The problem is seen in the disassembly where
3333 control method invocations may not be disassembled properly if the
3334 control method name has been used previously as an argument to CondRefOf.
3335 The solution is to not attempt to emit an external declaration for the
3336 CondRefOf target (it is not necessary in the first place). This prevents
3337 disassembler object type confusion. ACPICA BZ 988.
3338
3339 Unix Makefiles: Added an option to disable compiler optimizations and the
3340 _FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
3341 with optimizations (reportedly, gcc 4.4 for example). This change adds a
3342 command line option for make (NOOPT) that disables all compiler
3343 optimizations and the _FORTIFY_SOURCE compiler flag. The default
3344 optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
3345 1034. Lv Zheng, Bob Moore.
3346
3347 Tests/ASLTS: Added options to specify individual test cases and modes.
3348 This allows testers running aslts.sh to optionally specify individual
3349 test modes and test cases. Also added an option to disable the forced
3350 generation of the ACPICA tools from source if desired. Lv Zheng.
3351
3352 ----------------------------------------
3353 27 September 2013. Summary of changes for version 20130927:
3354
3355 This release is available at https://acpica.org/downloads
3356
3357
3358 1) ACPICA kernel-resident subsystem:
3359
3360 Fixed a problem with store operations to reference objects. This change
3361 fixes a problem where a Store operation to an ArgX object that contained
3362 a
3363 reference to a field object did not complete the automatic dereference
3364 and
3365 then write to the actual field object. Instead, the object type of the
3366 field object was inadvertently changed to match the type of the source
3367 operand. The new behavior will actually write to the field object (buffer
3368 field or field unit), thus matching the correct ACPI-defined behavior.
3369
3370 Implemented support to allow the host to redefine individual OSL
3371 prototypes. This change enables the host to redefine OSL prototypes found
3372 in the acpiosxf.h file. This allows the host to implement OSL interfaces
3373 with a macro or inlined function. Further, it allows the host to add any
3374 additional required modifiers such as __iomem, __init, __exit, etc., as
3375 necessary on a per-interface basis. Enables maximum flexibility for the
3376 OSL interfaces. Lv Zheng.
3377
3378 Hardcoded the access width for the FADT-defined reset register. The ACPI
3379 specification requires the reset register width to be 8 bits. ACPICA now
3380 hardcodes the width to 8 and ignores the FADT width value. This provides
3381 compatibility with other ACPI implementations that have allowed BIOS code
3382 with bad register width values to go unnoticed. Matthew Garett, Bob
3383 Moore,
3384 Lv Zheng.
3385
3386 Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
3387 used
3388 in the OSL header (acpiosxf). The change modifies the position of this
3389 macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
3390 build issues if the OSL defines the implementation of the interface to be
3391 an inline stub function. Lv Zheng.
3392
3393 Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
3394 initialization interfaces. This change adds a new macro for the main init
3395 and terminate external interfaces in order to support hosts that require
3396 additional or different processing for these functions. Changed from
3397 ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
3398 Zheng, Bob Moore.
3399
3400 Cleaned up the memory allocation macros for configurability. In the
3401 common
3402 case, the ACPI_ALLOCATE and related macros now resolve directly to their
3403 respective AcpiOs* OSL interfaces. Two options:
3404 1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
3405 default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
3406 2) For AcpiExec (and for debugging), the macros can optionally be
3407 resolved
3408 to the local ACPICA interfaces that track each allocation (local tracking
3409 is used to immediately detect memory leaks).
3410 Lv Zheng.
3411
3412 Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
3413 to predefine this macro to either TRUE or FALSE during the system build.
3414
3415 Replaced __FUNCTION_ with __func__ in the gcc-specific header.
3416
3417 Example Code and Data Size: These are the sizes for the OS-independent
3418 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3419 debug version of the code includes the debug output trace mechanism and
3420 has a much larger code and data size.
3421
3422 Current Release:
3423 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total
3424 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total
3425 Previous Release:
3426 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total
3427 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
3428
3429
3430 2) iASL Compiler/Disassembler and Tools:
3431
3432 iASL: Implemented wildcard support for the -e option. This simplifies use
3433 when there are many SSDTs that must be included to resolve external
3434 method
3435 declarations. ACPICA BZ 1041. Example:
3436 iasl -e ssdt*.dat -d dsdt.dat
3437
3438 AcpiExec: Add history/line-editing for Unix/Linux systems. This change
3439 adds a portable module that implements full history and limited line
3440 editing for Unix and Linux systems. It does not use readline() due to
3441 portability issues. Instead it uses the POSIX termio interface to put the
3442 terminal in raw input mode so that the various special keys can be
3443 trapped
3444 (such as up/down-arrow for history support and left/right-arrow for line
3445 editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
3446
3447 AcpiXtract: Add support to handle (ignore) "empty" lines containing only
3448 one or more spaces. This provides compatible with early or different
3449 versions of the AcpiDump utility. ACPICA BZ 1044.
3450
3451 AcpiDump: Do not ignore tables that contain only an ACPI table header.
3452 Apparently, some BIOSs create SSDTs that contain an ACPI table header but
3453 no other data. This change adds support to dump these tables. Any tables
3454 shorter than the length of an ACPI table header remain in error (an error
3455 message is emitted). Reported by Yi Li.
3456
3457 Debugger: Echo actual command along with the "unknown command" message.
3458
3459 ----------------------------------------
3460 23 August 2013. Summary of changes for version 20130823:
3461
3462 1) ACPICA kernel-resident subsystem:
3463
3464 Implemented support for host-installed System Control Interrupt (SCI)
3465 handlers. Certain ACPI functionality requires the host to handle raw
3466 SCIs. For example, the "SCI Doorbell" that is defined for memory power
3467 state support requires the host device driver to handle SCIs to examine
3468 if the doorbell has been activated. Multiple SCI handlers can be
3469 installed to allow for future expansion. New external interfaces are
3470 AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
3471 details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
3472
3473 Operation region support: Never locally free the handler "context"
3474 pointer. This change removes some dangerous code that attempts to free
3475 the handler context pointer in some (rare) circumstances. The owner of
3476 the handler owns this pointer and the ACPICA code should never touch it.
3477 Although not seen to be an issue in any kernel, it did show up as a
3478 problem (fault) under AcpiExec. Also, set the internal storage field for
3479 the context pointer to zero when the region is deactivated, simply for
3480 sanity. David Box. ACPICA BZ 1039.
3481
3482 AcpiRead: On error, do not modify the return value target location. If an
3483 error happens in the middle of a split 32/32 64-bit I/O operation, do not
3484 modify the target of the return value pointer. Makes the code consistent
3485 with the rest of ACPICA. Bjorn Helgaas.
3486
3487 Example Code and Data Size: These are the sizes for the OS-independent
3488 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3489 debug version of the code includes the debug output trace mechanism and
3490 has a much larger code and data size.
3491
3492 Current Release:
3493 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total
3494 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
3495 Previous Release:
3496 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
3497 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total
3498
3499
3500 2) iASL Compiler/Disassembler and Tools:
3501
3502 AcpiDump: Implemented several new features and fixed some problems:
3503 1) Added support to dump the RSDP, RSDT, and XSDT tables.
3504 2) Added support for multiple table instances (SSDT, UEFI).
3505 3) Added option to dump "customized" (overridden) tables (-c).
3506 4) Fixed a problem where some table filenames were improperly
3507 constructed.
3508 5) Improved some error messages, removed some unnecessary messages.
3509
3510 iASL: Implemented additional support for disassembly of ACPI tables that
3511 contain invocations of external control methods. The -fe<file> option
3512 allows the import of a file that specifies the external methods along
3513 with the required number of arguments for each -- allowing for the
3514 correct disassembly of the table. This is a workaround for a limitation
3515 of AML code where the disassembler often cannot determine the number of
3516 arguments required for an external control method and generates incorrect
3517 ASL code. See the iASL reference for details. ACPICA BZ 1030.
3518
3519 Debugger: Implemented a new command (paths) that displays the full
3520 pathnames (namepaths) and object types of all objects in the namespace.
3521 This is an alternative to the namespace command.
3522
3523 Debugger: Implemented a new command (sci) that invokes the SCI dispatch
3524 mechanism and any installed handlers.
3525
3526 iASL: Fixed a possible segfault for "too many parent prefixes" condition.
3527 This can occur if there are too many parent prefixes in a namepath (for
3528 example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
3529
3530 Application OSLs: Set the return value for the PCI read functions. These
3531 functions simply return AE_OK, but should set the return value to zero
3532 also. This change implements this. ACPICA BZ 1038.
3533
3534 Debugger: Prevent possible command line buffer overflow. Increase the
3535 size of a couple of the debugger line buffers, and ensure that overflow
3536 cannot happen. ACPICA BZ 1037.
3537
3538 iASL: Changed to abort immediately on serious errors during the parsing
3539 phase. Due to the nature of ASL, there is no point in attempting to
3540 compile these types of errors, and they typically end up causing a
3541 cascade of hundreds of errors which obscure the original problem.
3542
3543 ----------------------------------------
3544 25 July 2013. Summary of changes for version 20130725:
3545
3546 1) ACPICA kernel-resident subsystem:
3547
3548 Fixed a problem with the DerefOf operator where references to FieldUnits
3549 and BufferFields incorrectly returned the parent object, not the actual
3550 value of the object. After this change, a dereference of a FieldUnit
3551 reference results in a read operation on the field to get the value, and
3552 likewise, the appropriate BufferField value is extracted from the target
3553 buffer.
3554
3555 Fixed a problem where the _WAK method could cause a fault under these
3556 circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
3557 method returned no value. The problem is rarely seen because most kernels
3558 run ACPICA in slack mode.
3559
3560 For the DerefOf operator, a fatal error now results if an attempt is made
3561 to dereference a reference (created by the Index operator) to a NULL
3562 package element. Provides compatibility with other ACPI implementations,
3563 and this behavior will be added to a future version of the ACPI
3564 specification.
3565
3566 The ACPI Power Management Timer (defined in the FADT) is now optional.
3567 This provides compatibility with other ACPI implementations and will
3568 appear in the next version of the ACPI specification. If there is no PM
3569 Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
3570 zero in the FADT indicates no PM timer.
3571
3572 Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
3573 allows the host to globally enable/disable all vendor strings, all
3574 feature strings, or both. Intended to be primarily used for debugging
3575 purposes only. Lv Zheng.
3576
3577 Expose the collected _OSI data to the host via a global variable. This
3578 data tracks the highest level vendor ID that has been invoked by the BIOS
3579 so that the host (and potentially ACPICA itself) can change behaviors
3580 based upon the age of the BIOS.
3581
3582 Example Code and Data Size: These are the sizes for the OS-independent
3583 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3584 debug version of the code includes the debug output trace mechanism and
3585 has a much larger code and data size.
3586
3587 Current Release:
3588 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
3589 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
3590 Previous Release:
3591 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
3592 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
3593
3594
3595 2) iASL Compiler/Disassembler and Tools:
3596
3597 iASL: Created the following enhancements for the -so option (create
3598 offset table):
3599 1)Add offsets for the last nameseg in each namepath for every supported
3600 object type
3601 2)Add support for Processor, Device, Thermal Zone, and Scope objects
3602 3)Add the actual AML opcode for the parent object of every supported
3603 object type
3604 4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
3605
3606 Disassembler: Emit all unresolved external symbols in a single block.
3607 These are external references to control methods that could not be
3608 resolved, and thus, the disassembler had to make a guess at the number of
3609 arguments to parse.
3610
3611 iASL: The argument to the -T option (create table template) is now
3612 optional. If not specified, the default table is a DSDT, typically the
3613 most common case.
3614
3615 ----------------------------------------
3616 26 June 2013. Summary of changes for version 20130626:
3617
3618 1) ACPICA kernel-resident subsystem:
3619
3620 Fixed an issue with runtime repair of the _CST object. Null or invalid
3621 elements were not always removed properly. Lv Zheng.
3622
3623 Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
3624 FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
3625 the maximum number of GPEs is 1016. Use of multiple GPE block devices
3626 makes the system-wide number of GPEs essentially unlimited.
3627
3628 Example Code and Data Size: These are the sizes for the OS-independent
3629 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3630 debug version of the code includes the debug output trace mechanism and
3631 has a much larger code and data size.
3632
3633 Current Release:
3634 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
3635 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
3636 Previous Release:
3637 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
3638 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
3639
3640
3641 2) iASL Compiler/Disassembler and Tools:
3642
3643 Portable AcpiDump: Implemented full support for the Linux and FreeBSD
3644 hosts. Now supports Linux, FreeBSD, and Windows.
3645
3646 Disassembler: Added some missing types for the HEST and EINJ tables: "Set
3647 Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
3648
3649 iASL/Preprocessor: Implemented full support for nested
3650 #if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
3651
3652 Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
3653 max. The original purpose of this constraint was to limit the amount of
3654 debug output. However, the string function in question (UtPrintString) is
3655 now used for the disassembler also, where 256 bytes is insufficient.
3656 Reported by RehabMan@GitHub.
3657
3658 iASL/DataTables: Fixed some problems and issues with compilation of DMAR
3659 tables. ACPICA BZ 999. Lv Zheng.
3660
3661 iASL: Fixed a couple of error exit issues that could result in a "Could
3662 not delete <file>" message during ASL compilation.
3663
3664 AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
3665 the actual signatures for these tables are "FACP" and "APIC",
3666 respectively.
3667
3668 AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
3669 tables are allowed to have multiple instances.
3670
3671 ----------------------------------------
3672 17 May 2013. Summary of changes for version 20130517:
3673
3674 1) ACPICA kernel-resident subsystem:
3675
3676 Fixed a regression introduced in version 20130328 for _INI methods. This
3677 change fixes a problem introduced in 20130328 where _INI methods are no
3678 longer executed properly because of a memory block that was not
3679 initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
3680 <tomasz.nowicki (a] linaro.org>.
3681
3682 Fixed a possible problem with the new extended sleep registers in the
3683 ACPI
3684 5.0 FADT. Do not use these registers (even if populated) unless the HW-
3685 reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
3686 1020. Lv Zheng.
3687
3688 Implemented return value repair code for _CST predefined objects: Sort
3689 the
3690 list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
3691
3692 Implemented a debug-only option to disable loading of SSDTs from the
3693 RSDT/XSDT during ACPICA initialization. This can be useful for debugging
3694 ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
3695 acglobal.h - ACPICA BZ 1005. Lv Zheng.
3696
3697 Fixed some issues in the ACPICA initialization and termination code:
3698 Tomasz Nowicki <tomasz.nowicki (a] linaro.org>
3699 1) Clear events initialized flag upon event component termination. ACPICA
3700 BZ 1013.
3701 2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
3702 3) Delete global lock pending lock during termination. ACPICA BZ 1012.
3703 4) Clear debug buffer global on termination to prevent possible multiple
3704 delete. ACPICA BZ 1010.
3705
3706 Standardized all switch() blocks across the entire source base. After
3707 many
3708 years, different formatting for switch() had crept in. This change makes
3709 the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
3710
3711 Split some files to enhance ACPICA modularity and configurability:
3712 1) Split buffer dump routines into utilities/utbuffer.c
3713 2) Split internal error message routines into utilities/uterror.c
3714 3) Split table print utilities into tables/tbprint.c
3715 4) Split iASL command-line option processing into asloptions.c
3716
3717 Makefile enhancements:
3718 1) Support for all new files above.
3719 2) Abort make on errors from any subcomponent. Chao Guan.
3720 3) Add build support for Apple Mac OS X. Liang Qi.
3721
3722 Example Code and Data Size: These are the sizes for the OS-independent
3723 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3724 debug version of the code includes the debug output trace mechanism and
3725 has a much larger code and data size.
3726
3727 Current Release:
3728 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
3729 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
3730 Previous Release:
3731 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
3732 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
3733
3734
3735 2) iASL Compiler/Disassembler and Tools:
3736
3737 New utility: Implemented an easily portable version of the acpidump
3738 utility to extract ACPI tables from the system (or a file) in an ASCII
3739 hex
3740 dump format. The top-level code implements the various command line
3741 options, file I/O, and table dump routines. To port to a new host, only
3742 three functions need to be implemented to get tables -- since this
3743 functionality is OS-dependent. See the tools/acpidump/apmain.c module and
3744 the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
3745 1) The Windows version obtains the ACPI tables from the Registry.
3746 2) The Linux version is under development.
3747 3) Other hosts - If an OS-dependent module is submitted, it will be
3748 distributed with ACPICA.
3749
3750 iASL: Fixed a regression for -D preprocessor option (define symbol). A
3751 restructuring/change to the initialization sequence caused this option to
3752 no longer work properly.
3753
3754 iASL: Implemented a mechanism to disable specific warnings and remarks.
3755 Adds a new command line option, "-vw <messageid> as well as "#pragma
3756 disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
3757
3758 iASL: Fix for too-strict package object validation. The package object
3759 validation for return values from the predefined names is a bit too
3760 strict, it does not allow names references within the package (which will
3761 be resolved at runtime.) These types of references cannot be validated at
3762 compile time. This change ignores named references within package objects
3763 for names that return or define static packages.
3764
3765 Debugger: Fixed the 80-character command line limitation for the History
3766 command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
3767
3768 iASL: Added control method and package support for the -so option
3769 (generates AML offset table for BIOS support.)
3770
3771 iASL: issue a remark if a non-serialized method creates named objects. If
3772 a thread blocks within the method for any reason, and another thread
3773 enters the method, the method will fail because an attempt will be made
3774 to
3775 create the same (named) object twice. In this case, issue a remark that
3776 the method should be marked serialized. NOTE: may become a warning later.
3777 ACPICA BZ 909.
3778
3779 ----------------------------------------
3780 18 April 2013. Summary of changes for version 20130418:
3781
3782 1) ACPICA kernel-resident subsystem:
3783
3784 Fixed a possible buffer overrun during some rare but specific field unit
3785 read operations. This overrun can only happen if the DSDT version is 1 --
3786 meaning that all AML integers are 32 bits -- and the field length is
3787 between 33 and 55 bits long. During the read, an internal buffer object
3788 is
3789 created for the field unit because the field is larger than an integer
3790 (32
3791 bits). However, in this case, the buffer will be incorrectly written
3792 beyond the end because the buffer length is less than the internal
3793 minimum
3794 of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
3795 long, but a full 8 bytes will be written.
3796
3797 Updated the Embedded Controller "orphan" _REG method support. This refers
3798 to _REG methods under the EC device that have no corresponding operation
3799 region. This is allowed by the ACPI specification. This update removes a
3800 dependency on the existence an ECDT table. It will execute an orphan _REG
3801 method as long as the operation region handler for the EC is installed at
3802 the EC device node and not the namespace root. Rui Zhang (original
3803 update), Bob Moore (update/integrate).
3804
3805 Implemented run-time argument typechecking for all predefined ACPI names
3806 (_STA, _BIF, etc.) This change performs object typechecking on all
3807 incoming arguments for all predefined names executed via
3808 AcpiEvaluateObject. This ensures that ACPI-related device drivers are
3809 passing correct object types as well as the correct number of arguments
3810 (therefore identifying any issues immediately). Also, the ASL/namespace
3811 definition of the predefined name is checked against the ACPI
3812 specification for the proper argument count. Adds one new file,
3813 nsarguments.c
3814
3815 Changed an exception code for the ASL UnLoad() operator. Changed the
3816 exception code for the case where the input DdbHandle is invalid, from
3817 AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
3818
3819 Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
3820 global makefile. The use of this flag causes compiler errors on earlier
3821 versions of GCC, so it has been removed for compatibility.
3822
3823 Miscellaneous cleanup:
3824 1) Removed some unused/obsolete macros
3825 2) Fixed a possible memory leak in the _OSI support
3826 3) Removed an unused variable in the predefined name support
3827 4) Windows OSL: remove obsolete reference to a memory list field
3828
3829 Example Code and Data Size: These are the sizes for the OS-independent
3830 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3831 debug version of the code includes the debug output trace mechanism and
3832 has a much larger code and data size.
3833
3834 Current Release:
3835 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total
3836 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total
3837 Previous Release:
3838 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
3839 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
3840
3841
3842 2) iASL Compiler/Disassembler and Tools:
3843
3844 AcpiExec: Added installation of a handler for the SystemCMOS address
3845 space. This prevents control method abort if a method accesses this
3846 space.
3847
3848 AcpiExec: Added support for multiple EC devices, and now install EC
3849 operation region handler(s) at the actual EC device instead of the
3850 namespace root. This reflects the typical behavior of host operating
3851 systems.
3852
3853 AcpiExec: Updated to ensure that all operation region handlers are
3854 installed before the _REG methods are executed. This prevents a _REG
3855 method from aborting if it accesses an address space has no handler.
3856 AcpiExec installs a handler for every possible address space.
3857
3858 Debugger: Enhanced the "handlers" command to display non-root handlers.
3859 This change enhances the handlers command to display handlers associated
3860 with individual devices throughout the namespace, in addition to the
3861 currently supported display of handlers associated with the root
3862 namespace
3863 node.
3864
3865 ASL Test Suite: Several test suite errors have been identified and
3866 resolved, reducing the total error count during execution. Chao Guan.
3867
3868 ----------------------------------------
3869 28 March 2013. Summary of changes for version 20130328:
3870
3871 1) ACPICA kernel-resident subsystem:
3872
3873 Fixed several possible race conditions with the internal object reference
3874 counting mechanism. Some of the external ACPICA interfaces update object
3875 reference counts without holding the interpreter or namespace lock. This
3876 change adds a spinlock to protect reference count updates on the internal
3877 ACPICA objects. Reported by and with assistance from Andriy Gapon
3878 (avg (a] FreeBSD.org).
3879
3880 FADT support: Removed an extraneous warning for very large GPE register
3881 sets. This change removes a size mismatch warning if the legacy length
3882 field for a GPE register set is larger than the 64-bit GAS structure can
3883 accommodate. GPE register sets can be larger than the 255-bit width
3884 limitation of the GAS structure. Linn Crosetto (linn (a] hp.com).
3885
3886 _OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
3887 return from this interface. Handles a possible timeout case if
3888 ACPI_WAIT_FOREVER is modified by the host to be a value less than
3889 "forever". Jung-uk Kim.
3890
3891 Predefined name support: Add allowed/required argument type information
3892 to
3893 the master predefined info table. This change adds the infrastructure to
3894 enable typechecking on incoming arguments for all predefined
3895 methods/objects. It does not actually contain the code that will fully
3896 utilize this information, this is still under development. Also condenses
3897 some duplicate code for the predefined names into a new module,
3898 utilities/utpredef.c
3899
3900 Example Code and Data Size: These are the sizes for the OS-independent
3901 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3902 debug version of the code includes the debug output trace mechanism and
3903 has a much larger code and data size.
3904
3905 Previous Release:
3906 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total
3907 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total
3908 Current Release:
3909 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total
3910 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total
3911
3912
3913 2) iASL Compiler/Disassembler and Tools:
3914
3915 iASL: Implemented a new option to simplify the development of ACPI-
3916 related
3917 BIOS code. Adds support for a new "offset table" output file. The -so
3918 option will create a C table containing the AML table offsets of various
3919 named objects in the namespace so that BIOS code can modify them easily
3920 at
3921 boot time. This can simplify BIOS runtime code by eliminating expensive
3922 searches for "magic values", enhancing boot times and adding greater
3923 reliability. With assistance from Lee Hamel.
3924
3925 iASL: Allow additional predefined names to return zero-length packages.
3926 Now, all predefined names that are defined by the ACPI specification to
3927 return a "variable-length package of packages" are allowed to return a
3928 zero length top-level package. This allows the BIOS to tell the host that
3929 the requested feature is not supported, and supports existing BIOS/ASL
3930 code and practices.
3931
3932 iASL: Changed the "result not used" warning to an error. This is the case
3933 where an ASL operator is effectively a NOOP because the result of the
3934 operation is not stored anywhere. For example:
3935 Add (4, Local0)
3936 There is no target (missing 3rd argument), nor is the function return
3937 value used. This is potentially a very serious problem -- since the code
3938 was probably intended to do something, but for whatever reason, the value
3939 was not stored. Therefore, this issue has been upgraded from a warning to
3940 an error.
3941
3942 AcpiHelp: Added allowable/required argument types to the predefined names
3943 info display. This feature utilizes the recent update to the predefined
3944 names table (above).
3945
3946 ----------------------------------------
3947 14 February 2013. Summary of changes for version 20130214:
3948
3949 1) ACPICA Kernel-resident Subsystem:
3950
3951 Fixed a possible regression on some hosts: Reinstated the safe return
3952 macros (return_ACPI_STATUS, etc.) that ensure that the argument is
3953 evaluated only once. Although these macros are not needed for the ACPICA
3954 code itself, they are often used by ACPI-related host device drivers
3955 where
3956 the safe feature may be necessary.
3957
3958 Fixed several issues related to the ACPI 5.0 reduced hardware support
3959 (SOC): Now ensure that if the platform declares itself as hardware-
3960 reduced
3961 via the FADT, the following functions become NOOPs (and always return
3962 AE_OK) because ACPI is always enabled by definition on these machines:
3963 AcpiEnable
3964 AcpiDisable
3965 AcpiHwGetMode
3966 AcpiHwSetMode
3967
3968 Dynamic Object Repair: Implemented additional runtime repairs for
3969 predefined name return values. Both of these repairs can simplify code in
3970 the related device drivers that invoke these methods:
3971 1) For the _STR and _MLS names, automatically repair/convert an ASCII
3972 string to a Unicode buffer.
3973 2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
3974 a
3975 lone end tag descriptor in the following cases: A Return(0) was executed,
3976 a null buffer was returned, or no object at all was returned (non-slack
3977 mode only). Adds a new file, nsconvert.c
3978 ACPICA BZ 998. Bob Moore, Lv Zheng.
3979
3980 Resource Manager: Added additional code to prevent possible infinite
3981 loops
3982 while traversing corrupted or ill-formed resource template buffers. Check
3983 for zero-length resource descriptors in all code that loops through
3984 resource templates (the length field is used to index through the
3985 template). This change also hardens the external AcpiWalkResources and
3986 AcpiWalkResourceBuffer interfaces.
3987
3988 Local Cache Manager: Enhanced the main data structure to eliminate an
3989 unnecessary mechanism to access the next object in the list. Actually
3990 provides a small performance enhancement for hosts that use the local
3991 ACPICA cache manager. Jung-uk Kim.
3992
3993 Example Code and Data Size: These are the sizes for the OS-independent
3994 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3995 debug version of the code includes the debug output trace mechanism and
3996 has a much larger code and data size.
3997
3998 Previous Release:
3999 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
4000 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
4001 Current Release:
4002 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total
4003 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total
4004
4005
4006 2) iASL Compiler/Disassembler and Tools:
4007
4008 iASL/Disassembler: Fixed several issues with the definition of the ACPI
4009 5.0 RASF table (RAS Feature Table). This change incorporates late changes
4010 that were made to the ACPI 5.0 specification.
4011
4012 iASL/Disassembler: Added full support for the following new ACPI tables:
4013 1) The MTMR table (MID Timer Table)
4014 2) The VRTC table (Virtual Real Time Clock Table).
4015 Includes header file, disassembler, table compiler, and template support
4016 for both tables.
4017
4018 iASL: Implemented compile-time validation of package objects returned by
4019 predefined names. This new feature validates static package objects
4020 returned by the various predefined names defined to return packages. Both
4021 object types and package lengths are validated, for both parent packages
4022 and sub-packages, if any. The code is similar in structure and behavior
4023 to
4024 the runtime repair mechanism within the AML interpreter and uses the
4025 existing predefined name information table. Adds a new file, aslprepkg.c.
4026 ACPICA BZ 938.
4027
4028 iASL: Implemented auto-detection of binary ACPI tables for disassembly.
4029 This feature detects a binary file with a valid ACPI table header and
4030 invokes the disassembler automatically. Eliminates the need to
4031 specifically invoke the disassembler with the -d option. ACPICA BZ 862.
4032
4033 iASL/Disassembler: Added several warnings for the case where there are
4034 unresolved control methods during the disassembly. This can potentially
4035 cause errors when the output file is compiled, because the disassembler
4036 assumes zero method arguments in these cases (it cannot determine the
4037 actual number of arguments without resolution/definition of the method).
4038
4039 Debugger: Added support to display all resources with a single command.
4040 Invocation of the resources command with no arguments will now display
4041 all
4042 resources within the current namespace.
4043
4044 AcpiHelp: Added descriptive text for each ACPICA exception code displayed
4045 via the -e option.
4046
4047 ----------------------------------------
4048 17 January 2013. Summary of changes for version 20130117:
4049
4050 1) ACPICA Kernel-resident Subsystem:
4051
4052 Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
4053 return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
4054 objects to return a package containing one integer, most BIOS code
4055 returns
4056 two integers and the previous code reflects that. However, we also need
4057 to
4058 support BIOS code that actually implements to the ACPI spec, and this
4059 change reflects this.
4060
4061 Fixed two issues with the ACPI_DEBUG_PRINT macros:
4062 1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
4063 C compilers that require this support.
4064 2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
4065 ACPI_DEBUG is already used by many of the various hosts.
4066
4067 Updated all ACPICA copyrights and signons to 2013. Added the 2013
4068 copyright to all module headers and signons, including the standard Linux
4069 header. This affects virtually every file in the ACPICA core subsystem,
4070 iASL compiler, all ACPICA utilities, and the test suites.
4071
4072 Example Code and Data Size: These are the sizes for the OS-independent
4073 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4074 debug version of the code includes the debug output trace mechanism and
4075 has a much larger code and data size.
4076
4077 Previous Release:
4078 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
4079 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
4080 Current Release:
4081 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
4082 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
4083
4084
4085 2) iASL Compiler/Disassembler and Tools:
4086
4087 Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
4088 prevent a possible fault on some hosts. Some C libraries modify the arg
4089 pointer parameter to vfprintf making it difficult to call it twice in the
4090 AcpiOsVprintf function. Use a local buffer to workaround this issue. This
4091 does not affect the Windows OSL since the Win C library does not modify
4092 the arg pointer. Chao Guan, Bob Moore.
4093
4094 iASL: Fixed a possible infinite loop when the maximum error count is
4095 reached. If an output file other than the .AML file is specified (such as
4096 a listing file), and the maximum number of errors is reached, do not
4097 attempt to flush data to the output file(s) as the compiler is aborting.
4098 This can cause an infinite loop as the max error count code essentially
4099 keeps calling itself.
4100
4101 iASL/Disassembler: Added an option (-in) to ignore NOOP
4102 opcodes/operators.
4103 Implemented for both the compiler and the disassembler. Often, the NOOP
4104 opcode is used as padding for packages that are changed dynamically by
4105 the
4106 BIOS. When disassembled and recompiled, these NOOPs will cause syntax
4107 errors. This option causes the disassembler to ignore all NOOP opcodes
4108 (0xA3), and it also causes the compiler to ignore all ASL source code
4109 NOOP
4110 statements as well.
4111
4112 Debugger: Enhanced the Sleep command to execute all sleep states. This
4113 change allows Sleep to be invoked with no arguments and causes the
4114 debugger to execute all of the sleep states, 0-5, automatically.
4115
4116 ----------------------------------------
4117 20 December 2012. Summary of changes for version 20121220:
4118
4119 1) ACPICA Kernel-resident Subsystem:
4120
4121 Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
4122 alternate entry point for AcpiWalkResources and improves the usability of
4123 the resource manager by accepting as input a buffer containing the output
4124 of either a _CRS, _PRS, or _AEI method. The key functionality is that the
4125 input buffer is not deleted by this interface so that it can be used by
4126 the host later. See the ACPICA reference for details.
4127
4128 Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
4129 (DSDT version < 2). The constant will be truncated and this warning
4130 reflects that behavior.
4131
4132 Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
4133 ExtendedInterrupt, and GpioInt descriptors. This change adds support to
4134 both get and set the new wake bit in these descriptors, separately from
4135 the existing share bit. Reported by Aaron Lu.
4136
4137 Interpreter: Fix Store() when an implicit conversion is not possible. For
4138 example, in the cases such as a store of a string to an existing package
4139 object, implement the store as a CopyObject(). This is a small departure
4140 from the ACPI specification which states that the control method should
4141 be
4142 aborted in this case. However, the ASLTS suite depends on this behavior.
4143
4144 Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
4145 macros: check if debug output is currently enabled as soon as possible to
4146 minimize performance impact if debug is in fact not enabled.
4147
4148 Source code restructuring: Cleanup to improve modularity. The following
4149 new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
4150 psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
4151 Associated makefiles and project files have been updated.
4152
4153 Changed an exception code for LoadTable operator. For the case where one
4154 of the input strings is too long, change the returned exception code from
4155 AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
4156
4157 Fixed a possible memory leak in dispatcher error path. On error, delete
4158 the mutex object created during method mutex creation. Reported by
4159 tim.gardner (a] canonical.com.
4160
4161 Example Code and Data Size: These are the sizes for the OS-independent
4162 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4163 debug version of the code includes the debug output trace mechanism and
4164 has a much larger code and data size.
4165
4166 Previous Release:
4167 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
4168 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
4169 Current Release:
4170 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
4171 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
4172
4173
4174 2) iASL Compiler/Disassembler and Tools:
4175
4176 iASL: Disallow a method call as argument to the ObjectType ASL operator.
4177 This change tracks an errata to the ACPI 5.0 document. The AML grammar
4178 will not allow the interpreter to differentiate between a method and a
4179 method invocation when these are used as an argument to the ObjectType
4180 operator. The ACPI specification change is to disallow a method
4181 invocation
4182 (UserTerm) for the ObjectType operator.
4183
4184 Finish support for the TPM2 and CSRT tables in the headers, table
4185 compiler, and disassembler.
4186
4187 Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
4188 always expires immediately if the semaphore is not available. The
4189 original
4190 code was using a relative-time timeout, but sem_timedwait requires the
4191 use
4192 of an absolute time.
4193
4194 iASL: Added a remark if the Timer() operator is used within a 32-bit
4195 table. This operator returns a 64-bit time value that will be truncated
4196 within a 32-bit table.
4197
4198 iASL Source code restructuring: Cleanup to improve modularity. The
4199 following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
4200 aslmethod.c, and aslfileio.c. Associated makefiles and project files have
4201 been updated.
4202
4203
4204 ----------------------------------------
4205 14 November 2012. Summary of changes for version 20121114:
4206
4207 1) ACPICA Kernel-resident Subsystem:
4208
4209 Implemented a performance enhancement for ACPI/AML Package objects. This
4210 change greatly increases the performance of Package objects within the
4211 interpreter. It changes the processing of reference counts for packages
4212 by
4213 optimizing for the most common case where the package sub-objects are
4214 either Integers, Strings, or Buffers. Increases the overall performance
4215 of
4216 the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
4217 2X.)
4218 Chao Guan. ACPICA BZ 943.
4219
4220 Implemented and deployed common macros to extract flag bits from resource
4221 descriptors. Improves readability and maintainability of the code. Fixes
4222 a
4223 problem with the UART serial bus descriptor for the number of data bits
4224 flags (was incorrectly 2 bits, should be 3).
4225
4226 Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
4227 of the macros and changed the SETx macros to the style of (destination,
4228 source). Also added ACPI_CASTx companion macros. Lv Zheng.
4229
4230 Example Code and Data Size: These are the sizes for the OS-independent
4231 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4232 debug version of the code includes the debug output trace mechanism and
4233 has a much larger code and data size.
4234
4235 Previous Release:
4236 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
4237 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
4238 Current Release:
4239 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
4240 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
4241
4242
4243 2) iASL Compiler/Disassembler and Tools:
4244
4245 Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
4246 adds the ShareAndWake and ExclusiveAndWake flags which were added to the
4247 Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
4248
4249 Disassembler: Fixed a problem with external declaration generation. Fixes
4250 a problem where an incorrect pathname could be generated for an external
4251 declaration if the original reference to the object includes leading
4252 carats (^). ACPICA BZ 984.
4253
4254 Debugger: Completed a major update for the Disassemble<method> command.
4255 This command was out-of-date and did not properly disassemble control
4256 methods that had any reasonable complexity. This fix brings the command
4257 up
4258 to the same level as the rest of the disassembler. Adds one new file,
4259 dmdeferred.c, which is existing code that is now common with the main
4260 disassembler and the debugger disassemble command. ACPICA MZ 978.
4261
4262 iASL: Moved the parser entry prototype to avoid a duplicate declaration.
4263 Newer versions of Bison emit this prototype, so moved the prototype out
4264 of
4265 the iASL header to where it is actually used in order to avoid a
4266 duplicate
4267 declaration.
4268
4269 iASL/Tools: Standardized use of the stream I/O functions:
4270 1) Ensure check for I/O error after every fopen/fread/fwrite
4271 2) Ensure proper order of size/count arguments for fread/fwrite
4272 3) Use test of (Actual != Requested) after all fwrite, and most fread
4273 4) Standardize I/O error messages
4274 Improves reliability and maintainability of the code. Bob Moore, Lv
4275 Zheng.
4276 ACPICA BZ 981.
4277
4278 Disassembler: Prevent duplicate External() statements. During generation
4279 of external statements, detect similar pathnames that are actually
4280 duplicates such as these:
4281 External (\ABCD)
4282 External (ABCD)
4283 Remove all leading '\' characters from pathnames during the external
4284 statement generation so that duplicates will be detected and tossed.
4285 ACPICA BZ 985.
4286
4287 Tools: Replace low-level I/O with stream I/O functions. Replace
4288 open/read/write/close with the stream I/O equivalents
4289 fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
4290 Moore.
4291
4292 AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
4293 name header so that AcpiXtract recognizes the output file/table.
4294
4295 iASL: Remove obsolete -2 option flag. Originally intended to force the
4296 compiler/disassembler into an ACPI 2.0 mode, this was never implemented
4297 and the entire concept is now obsolete.
4298
4299 ----------------------------------------
4300 18 October 2012. Summary of changes for version 20121018:
4301
4302
4303 1) ACPICA Kernel-resident Subsystem:
4304
4305 Updated support for the ACPI 5.0 MPST table. Fixes some problems
4306 introduced by late changes to the table as it was added to the ACPI 5.0
4307 specification. Includes header, disassembler, and data table compiler
4308 support as well as a new version of the MPST template.
4309
4310 AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
4311 5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
4312 methods: _HID, _CID, and _UID.
4313
4314 Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
4315 ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
4316 name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
4317 names for their various drivers. Affects the AcpiGetObjectInfo external
4318 interface, and other internal interfaces as well.
4319
4320 Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
4321 This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
4322 on machines that support non-aligned transfers. Optimizes for this case
4323 rather than using a strncpy. With assistance from Zheng Lv.
4324
4325 Resource Manager: Small fix for buffer size calculation. Fixed a one byte
4326 error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
4327
4328 Added a new debug print message for AML mutex objects that are force-
4329 released. At control method termination, any currently acquired mutex
4330 objects are force-released. Adds a new debug-only message for each one
4331 that is released.
4332
4333 Audited/updated all ACPICA return macros and the function debug depth
4334 counter: 1) Ensure that all functions that use the various TRACE macros
4335 also use the appropriate ACPICA return macros. 2) Ensure that all normal
4336 return statements surround the return expression (value) with parens to
4337 ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
4338 Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
4339
4340 Global source code changes/maintenance: All extra lines at the start and
4341 end of each source file have been removed for consistency. Also, within
4342 comments, all new sentences start with a single space instead of a double
4343 space, again for consistency across the code base.
4344
4345 Example Code and Data Size: These are the sizes for the OS-independent
4346 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4347 debug version of the code includes the debug output trace mechanism and
4348 has a much larger code and data size.
4349
4350 Previous Release:
4351 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total
4352 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total
4353 Current Release:
4354 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
4355 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
4356
4357
4358 2) iASL Compiler/Disassembler and Tools:
4359
4360 AcpiExec: Improved the algorithm used for memory leak/corruption
4361 detection. Added some intelligence to the code that maintains the global
4362 list of allocated memory. The list is now ordered by allocated memory
4363 address, significantly improving performance. When running AcpiExec on
4364 the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
4365 on the platform and/or the environment. Note, this performance
4366 enhancement affects the AcpiExec utility only, not the kernel-resident
4367 ACPICA code.
4368
4369 Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
4370 the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
4371 incorrect table offset reported for invalid opcodes. Report the original
4372 32-bit value for bad ACPI_NAMEs (as well as the repaired name.)
4373
4374 Disassembler: Enhanced the -vt option to emit the binary table data in
4375 hex format to assist with debugging.
4376
4377 Fixed a potential filename buffer overflow in osunixdir.c. Increased the
4378 size of file structure. Colin Ian King.
4379
4380 ----------------------------------------
4381 13 September 2012. Summary of changes for version 20120913:
4382
4383
4384 1) ACPICA Kernel-resident Subsystem:
4385
4386 ACPI 5.0: Added two new notify types for the Hardware Error Notification
4387 Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
4388 and
4389 MCE(6).
4390
4391 Table Manager: Merged/removed duplicate code in the root table resize
4392 functions. One function is external, the other is internal. Lv Zheng,
4393 ACPICA
4394 BZ 846.
4395
4396 Makefiles: Completely removed the obsolete "Linux" makefiles under
4397 acpica/generate/linux. These makefiles are obsolete and have been
4398 replaced
4399 by
4400 the generic unix makefiles under acpica/generate/unix.
4401
4402 Makefiles: Ensure that binary files always copied properly. Minor rule
4403 change
4404 to ensure that the final binary output files are always copied up to the
4405 appropriate binary directory (bin32 or bin64.)
4406
4407 Example Code and Data Size: These are the sizes for the OS-independent
4408 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4409 debug
4410 version of the code includes the debug output trace mechanism and has a
4411 much
4412 larger code and data size.
4413
4414 Previous Release:
4415 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total
4416 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total
4417 Current Release:
4418 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total
4419 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total
4420
4421
4422 2) iASL Compiler/Disassembler and Tools:
4423
4424 Disassembler: Fixed a possible fault during the disassembly of resource
4425 descriptors when a second parse is required because of the invocation of
4426 external control methods within the table. With assistance from
4427 adq (a] lidskialf.net. ACPICA BZ 976.
4428
4429 iASL: Fixed a namepath optimization problem. An error can occur if the
4430 parse
4431 node that contains the namepath to be optimized does not have a parent
4432 node
4433 that is a named object. This change fixes the problem.
4434
4435 iASL: Fixed a regression where the AML file is not deleted on errors. The
4436 AML
4437 output file should be deleted if there are any errors during the
4438 compiler.
4439 The
4440 only exception is if the -f (force output) option is used. ACPICA BZ 974.
4441
4442 iASL: Added a feature to automatically increase internal line buffer
4443 sizes.
4444 Via realloc(), automatically increase the internal line buffer sizes as
4445 necessary to support very long source code lines. The current version of
4446 the
4447 preprocessor requires a buffer long enough to contain full source code
4448 lines.
4449 This change increases the line buffer(s) if the input lines go beyond the
4450 current buffer size. This eliminates errors that occurred when a source
4451 code
4452 line was longer than the buffer.
4453
4454 iASL: Fixed a problem with constant folding in method declarations. The
4455 SyncLevel term is a ByteConstExpr, and incorrect code would be generated
4456 if a
4457 Type3 opcode was used.
4458
4459 Debugger: Improved command help support. For incorrect argument count,
4460 display
4461 full help for the command. For help command itself, allow an argument to
4462 specify a command.
4463
4464 Test Suites: Several bug fixes for the ASLTS suite reduces the number of
4465 errors during execution of the suite. Guan Chao.
4466
4467 ----------------------------------------
4468 16 August 2012. Summary of changes for version 20120816:
4469
4470
4471 1) ACPICA Kernel-resident Subsystem:
4472
4473 Removed all use of the deprecated _GTS and _BFS predefined methods. The
4474 _GTS
4475 (Going To Sleep) and _BFS (Back From Sleep) methods are essentially
4476 deprecated and will probably be removed from the ACPI specification.
4477 Windows
4478 does not invoke them, and reportedly never will. The final nail in the
4479 coffin
4480 is that the ACPI specification states that these methods must be run with
4481 interrupts off, which is not going to happen in a kernel interpreter.
4482 Note:
4483 Linux has removed all use of the methods also. It was discovered that
4484 invoking these functions caused failures on some machines, probably
4485 because
4486 they were never tested since Windows does not call them. Affects two
4487 external
4488 interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
4489 ACPICA BZ 969.
4490
4491 Implemented support for complex bit-packed buffers returned from the _PLD
4492 (Physical Location of Device) predefined method. Adds a new external
4493 interface, AcpiDecodePldBuffer that parses the buffer into a more usable
4494 C
4495 structure. Note: C Bitfields cannot be used for this type of predefined
4496 structure since the memory layout of individual bitfields is not defined
4497 by
4498 the C language. In addition, there are endian concerns where a compiler
4499 will
4500 change the bitfield ordering based on the machine type. The new ACPICA
4501 interface eliminates these issues, and should be called after _PLD is
4502 executed. ACPICA BZ 954.
4503
4504 Implemented a change to allow a scope change to root (via "Scope (\)")
4505 during
4506 execution of module-level ASL code (code that is executed at table load
4507 time.) Lin Ming.
4508
4509 Added the Windows8/Server2012 string for the _OSI method. This change
4510 adds
4511 a
4512 new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
4513 2012.
4514
4515 Added header support for the new ACPI tables DBG2 (Debug Port Table Type
4516 2)
4517 and CSRT (Core System Resource Table).
4518
4519 Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
4520 names. This simplifies access to the buffers returned by these predefined
4521 names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
4522
4523 GPE support: Removed an extraneous parameter from the various low-level
4524 internal GPE functions. Tang Feng.
4525
4526 Removed the linux makefiles from the unix packages. The generate/linux
4527 makefiles are obsolete and have been removed from the unix tarball
4528 release
4529 packages. The replacement makefiles are under generate/unix, and there is
4530 a
4531 top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
4532
4533 Updates for Unix makefiles:
4534 1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
4535 2) Update linker flags (move to end of command line) for AcpiExec
4536 utility.
4537 Guan Chao.
4538
4539 Split ACPICA initialization functions to new file, utxfinit.c. Split from
4540 utxface.c to improve modularity and reduce file size.
4541
4542 Example Code and Data Size: These are the sizes for the OS-independent
4543 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4544 debug version of the code includes the debug output trace mechanism and
4545 has a
4546 much larger code and data size.
4547
4548 Previous Release:
4549 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total
4550 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total
4551 Current Release:
4552 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total
4553 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total
4554
4555
4556 2) iASL Compiler/Disassembler and Tools:
4557
4558 iASL: Fixed a problem with constant folding for fixed-length constant
4559 expressions. The constant-folding code was not being invoked for constant
4560 expressions that allow the use of type 3/4/5 opcodes to generate
4561 constants
4562 for expressions such as ByteConstExpr, WordConstExpr, etc. This could
4563 result
4564 in the generation of invalid AML bytecode. ACPICA BZ 970.
4565
4566 iASL: Fixed a generation issue on newer versions of Bison. Newer versions
4567 apparently automatically emit some of the necessary externals. This
4568 change
4569 handles these versions in order to eliminate generation warnings.
4570
4571 Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
4572
4573 Disassembler: Add support to decode _PLD buffers. The decoded buffer
4574 appears
4575 within comments in the output file.
4576
4577 Debugger: Fixed a regression with the "Threads" command where
4578 AE_BAD_PARAMETER was always returned.
4579
4580 ----------------------------------------
4581 11 July 2012. Summary of changes for version 20120711:
4582
4583 1) ACPICA Kernel-resident Subsystem:
4584
4585 Fixed a possible fault in the return package object repair code. Fixes a
4586 problem that can occur when a lone package object is wrapped with an
4587 outer
4588 package object in order to force conformance to the ACPI specification.
4589 Can
4590 affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
4591 _DLM,
4592 _CSD, _PSD, _TSD.
4593
4594 Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
4595 PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
4596 ARB_DIS bit must be implemented in the host-dependent C3 processor power
4597 state
4598 support. Note, ARB_DIS is obsolete and only applies to older chipsets,
4599 both
4600 Intel and other vendors. (for Intel: ICH4-M and earlier)
4601
4602 This change removes the code to disable/enable bus master arbitration
4603 during
4604 suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
4605 causes
4606 resume problems on some machines. The change has been in use for over
4607 seven
4608 years within Linux.
4609
4610 Implemented two new external interfaces to support host-directed dynamic
4611 ACPI
4612 table load and unload. They are intended to simplify the host
4613 implementation
4614 of hot-plug support:
4615 AcpiLoadTable: Load an SSDT from a buffer into the namespace.
4616 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
4617 table.
4618 See the ACPICA reference for additional details. Adds one new file,
4619 components/tables/tbxfload.c
4620
4621 Implemented and deployed two new interfaces for errors and warnings that
4622 are
4623 known to be caused by BIOS/firmware issues:
4624 AcpiBiosError: Prints "ACPI Firmware Error" message.
4625 AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
4626 Deployed these new interfaces in the ACPICA Table Manager code for ACPI
4627 table
4628 and FADT errors. Additional deployment to be completed as appropriate in
4629 the
4630 future. The associated conditional macros are ACPI_BIOS_ERROR and
4631 ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
4632 ACPICA
4633 BZ
4634 843.
4635
4636 Implicit notify support: ensure that no memory allocation occurs within a
4637 critical region. This fix moves a memory allocation outside of the time
4638 that a
4639 spinlock is held. Fixes issues on systems that do not allow this
4640 behavior.
4641 Jung-uk Kim.
4642
4643 Split exception code utilities and tables into a new file,
4644 utilities/utexcep.c
4645
4646 Example Code and Data Size: These are the sizes for the OS-independent
4647 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4648 debug
4649 version of the code includes the debug output trace mechanism and has a
4650 much
4651 larger code and data size.
4652
4653 Previous Release:
4654 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total
4655 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total
4656 Current Release:
4657 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total
4658 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total
4659
4660
4661 2) iASL Compiler/Disassembler and Tools:
4662
4663 iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
4664 of
4665 0. Jung-uk Kim.
4666
4667 Debugger: Enhanced the "tables" command to emit additional information
4668 about
4669 the current set of ACPI tables, including the owner ID and flags decode.
4670
4671 Debugger: Reimplemented the "unload" command to use the new
4672 AcpiUnloadParentTable external interface. This command was disable
4673 previously
4674 due to need for an unload interface.
4675
4676 AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
4677 option
4678 will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
4679
4680 ----------------------------------------
4681 20 June 2012. Summary of changes for version 20120620:
4682
4683
4684 1) ACPICA Kernel-resident Subsystem:
4685
4686 Implemented support to expand the "implicit notify" feature to allow
4687 multiple
4688 devices to be notified by a single GPE. This feature automatically
4689 generates a
4690 runtime device notification in the absence of a BIOS-provided GPE control
4691 method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
4692 notify is
4693 provided by ACPICA for Windows compatibility, and is a workaround for
4694 BIOS
4695 AML
4696 code errors. See the description of the AcpiSetupGpeForWake interface in
4697 the
4698 APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
4699
4700 Changed some comments and internal function names to simplify and ensure
4701 correctness of the Linux code translation. No functional changes.
4702
4703 Example Code and Data Size: These are the sizes for the OS-independent
4704 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4705 debug
4706 version of the code includes the debug output trace mechanism and has a
4707 much
4708 larger code and data size.
4709
4710 Previous Release:
4711 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total
4712 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total
4713 Current Release:
4714 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total
4715 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total
4716
4717
4718 2) iASL Compiler/Disassembler and Tools:
4719
4720 Disassembler: Added support to emit short, commented descriptions for the
4721 ACPI
4722 predefined names in order to improve the readability of the disassembled
4723 output. ACPICA BZ 959. Changes include:
4724 1) Emit descriptions for all standard predefined names (_INI, _STA,
4725 _PRW,
4726 etc.)
4727 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
4728 3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
4729 etc.)
4730
4731 AcpiSrc: Fixed several long-standing Linux code translation issues.
4732 Argument
4733 descriptions in function headers are now translated properly to lower
4734 case
4735 and
4736 underscores. ACPICA BZ 961. Also fixes translation problems such as
4737 these:
4738 (old -> new)
4739 i_aSL -> iASL
4740 00-7_f -> 00-7F
4741 16_k -> 16K
4742 local_fADT -> local_FADT
4743 execute_oSI -> execute_OSI
4744
4745 iASL: Fixed a problem where null bytes were inadvertently emitted into
4746 some
4747 listing files.
4748
4749 iASL: Added the existing debug options to the standard help screen. There
4750 are
4751 no longer two different help screens. ACPICA BZ 957.
4752
4753 AcpiHelp: Fixed some typos in the various predefined name descriptions.
4754 Also
4755 expand some of the descriptions where appropriate.
4756
4757 iASL: Fixed the -ot option (display compile times/statistics). Was not
4758 working
4759 properly for standard output; only worked for the debug file case.
4760
4761 ----------------------------------------
4762 18 May 2012. Summary of changes for version 20120518:
4763
4764
4765 1) ACPICA Core Subsystem:
4766
4767 Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
4768 defined
4769 to block until asynchronous events such as notifies and GPEs have
4770 completed.
4771 Within ACPICA, it is only called before a notify or GPE handler is
4772 removed/uninstalled. It also may be useful for the host OS within related
4773 drivers such as the Embedded Controller driver. See the ACPICA reference
4774 for
4775 additional information. ACPICA BZ 868.
4776
4777 ACPI Tables: Added a new error message for a possible overflow failure
4778 during
4779 the conversion of FADT 32-bit legacy register addresses to internal
4780 common
4781 64-
4782 bit GAS structure representation. The GAS has a one-byte "bit length"
4783 field,
4784 thus limiting the register length to 255 bits. ACPICA BZ 953.
4785
4786 Example Code and Data Size: These are the sizes for the OS-independent
4787 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4788 debug
4789 version of the code includes the debug output trace mechanism and has a
4790 much
4791 larger code and data size.
4792
4793 Previous Release:
4794 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
4795 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total
4796 Current Release:
4797 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total
4798 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total
4799
4800
4801 2) iASL Compiler/Disassembler and Tools:
4802
4803 iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
4804 macro.
4805 This keyword was added late in the ACPI 5.0 release cycle and was not
4806 implemented until now.
4807
4808 Disassembler: Added support for Operation Region externals. Adds missing
4809 support for operation regions that are defined in another table, and
4810 referenced locally via a Field or BankField ASL operator. Now generates
4811 the
4812 correct External statement.
4813
4814 Disassembler: Several additional fixes for the External() statement
4815 generation
4816 related to some ASL operators. Also, order the External() statements
4817 alphabetically in the disassembler output. Fixes the External()
4818 generation
4819 for
4820 the Create* field, Alias, and Scope operators:
4821 1) Create* buffer field operators - fix type mismatch warning on
4822 disassembly
4823 2) Alias - implement missing External support
4824 3) Scope - fix to make sure all necessary externals are emitted.
4825
4826 iASL: Improved pathname support. For include files, merge the prefix
4827 pathname
4828 with the file pathname and eliminate unnecessary components. Convert
4829 backslashes in all pathnames to forward slashes, for readability. Include
4830 file
4831 pathname changes affect both #include and Include() type operators.
4832
4833 iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
4834 end
4835 of a valid line by inserting a newline and then returning the EOF during
4836 the
4837 next call to GetNextLine. Prevents the line from being ignored due to EOF
4838 condition.
4839
4840 iASL: Implemented some changes to enhance the IDE support (-vi option.)
4841 Error
4842 and Warning messages are now correctly recognized for both the source
4843 code
4844 browser and the global error and warning counts.
4845
4846 ----------------------------------------
4847 20 April 2012. Summary of changes for version 20120420:
4848
4849
4850 1) ACPICA Core Subsystem:
4851
4852 Implemented support for multiple notify handlers. This change adds
4853 support
4854 to
4855 allow multiple system and device notify handlers on Device, Thermal Zone,
4856 and
4857 Processor objects. This can simplify the host OS notification
4858 implementation.
4859 Also re-worked and restructured the entire notify support code to
4860 simplify
4861 handler installation, handler removal, notify event queuing, and notify
4862 dispatch to handler(s). Note: there can still only be two global notify
4863 handlers - one for system notifies and one for device notifies. There are
4864 no
4865 changes to the existing handler install/remove interfaces. Lin Ming, Bob
4866 Moore, Rafael Wysocki.
4867
4868 Fixed a regression in the package repair code where the object reference
4869 count was calculated incorrectly. Regression was introduced in the commit
4870 "Support to add Package wrappers".
4871
4872 Fixed a couple possible memory leaks in the AML parser, in the error
4873 recovery
4874 path. Jesper Juhl, Lin Ming.
4875
4876 Example Code and Data Size: These are the sizes for the OS-independent
4877 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4878 debug version of the code includes the debug output trace mechanism and
4879 has a
4880 much larger code and data size.
4881
4882 Previous Release:
4883 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
4884 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
4885 Current Release:
4886 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
4887 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total
4888
4889
4890 2) iASL Compiler/Disassembler and Tools:
4891
4892 iASL: Fixed a problem with the resource descriptor support where the
4893 length
4894 of the StartDependentFn and StartDependentFnNoPrio descriptors were not
4895 included in cumulative descriptor offset, resulting in incorrect values
4896 for
4897 resource tags within resource descriptors appearing after a
4898 StartDependent*
4899 descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
4900
4901 iASL and Preprocessor: Implemented full support for the #line directive
4902 to
4903 correctly track original source file line numbers through the .i
4904 preprocessor
4905 output file - for error and warning messages.
4906
4907 iASL: Expand the allowable byte constants for address space IDs.
4908 Previously,
4909 the allowable range was 0x80-0xFF (user-defined spaces), now the range is
4910 0x0A-0xFF to allow for custom and new IDs without changing the compiler.
4911
4912 iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
4913
4914 iASL: Add option to completely disable the preprocessor (-Pn).
4915
4916 iASL: Now emit all error/warning messages to standard error (stderr) by
4917 default (instead of the previous stdout).
4918
4919 ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
4920 Update
4921 for resource descriptor offset fix above. Update/cleanup error output
4922 routines. Enable and send iASL errors/warnings to an error logfile
4923 (error.txt). Send all other iASL output to a logfile (compiler.txt).
4924 Fixed
4925 several extraneous "unrecognized operator" messages.
4926
4927 ----------------------------------------
4928 20 March 2012. Summary of changes for version 20120320:
4929
4930
4931 1) ACPICA Core Subsystem:
4932
4933 Enhanced the sleep/wake interfaces to optionally execute the _GTS method
4934 (Going To Sleep) and the _BFS method (Back From Sleep). Windows
4935 apparently
4936 does not execute these methods, and therefore these methods are often
4937 untested. It has been seen on some systems where the execution of these
4938 methods causes errors and also prevents the machine from entering S5. It
4939 is
4940 therefore suggested that host operating systems do not execute these
4941 methods
4942 by default. In the future, perhaps these methods can be optionally
4943 executed
4944 based on the age of the system and/or what is the newest version of
4945 Windows
4946 that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
4947 and
4948 AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
4949 Ming.
4950
4951 Fixed a problem where the length of the local/common FADT was set too
4952 early.
4953 The local FADT table length cannot be set to the common length until the
4954 original length has been examined. There is code that checks the table
4955 length
4956 and sets various fields appropriately. This can affect older machines
4957 with
4958 early FADT versions. For example, this can cause inadvertent writes to
4959 the
4960 CST_CNT register. Julian Anastasov.
4961
4962 Fixed a mapping issue related to a physical table override. Use the
4963 deferred
4964 mapping mechanism for tables loaded via the physical override OSL
4965 interface.
4966 This allows for early mapping before the virtual memory manager is
4967 available.
4968 Thomas Renninger, Bob Moore.
4969
4970 Enhanced the automatic return-object repair code: Repair a common problem
4971 with
4972 predefined methods that are defined to return a variable-length Package
4973 of
4974 sub-objects. If there is only one sub-object, some BIOS ASL code
4975 mistakenly
4976 simply returns the single object instead of a Package with one sub-
4977 object.
4978 This new support will repair this error by wrapping a Package object
4979 around
4980 the original object, creating the correct and expected Package with one
4981 sub-
4982 object. Names that can be repaired in this manner include: _ALR, _CSD,
4983 _HPX,
4984 _MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
4985 939.
4986
4987 Changed the exception code returned for invalid ACPI paths passed as
4988 parameters to external interfaces such as AcpiEvaluateObject. Was
4989 AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
4990
4991 Example Code and Data Size: These are the sizes for the OS-independent
4992 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4993 debug
4994 version of the code includes the debug output trace mechanism and has a
4995 much
4996 larger code and data size.
4997
4998 Previous Release:
4999 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total
5000 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
5001 Current Release:
5002 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
5003 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
5004
5005
5006 2) iASL Compiler/Disassembler and Tools:
5007
5008 iASL: Added the infrastructure and initial implementation of a integrated
5009 C-
5010 like preprocessor. This will simplify BIOS development process by
5011 eliminating
5012 the need for a separate preprocessing step during builds. On Windows, it
5013 also
5014 eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
5015 features including full #define() macro support are still under
5016 development.
5017 These preprocessor directives are supported:
5018 #define
5019 #elif
5020 #else
5021 #endif
5022 #error
5023 #if
5024 #ifdef
5025 #ifndef
5026 #include
5027 #pragma message
5028 #undef
5029 #warning
5030 In addition, these new command line options are supported:
5031 -D <symbol> Define symbol for preprocessor use
5032 -li Create preprocessed output file (*.i)
5033 -P Preprocess only and create preprocessor output file (*.i)
5034
5035 Table Compiler: Fixed a problem where the equals operator within an
5036 expression
5037 did not work properly.
5038
5039 Updated iASL to use the current versions of Bison/Flex. Updated the
5040 Windows
5041 project file to invoke these tools from the standard location. ACPICA BZ
5042 904.
5043 Versions supported:
5044 Flex for Windows: V2.5.4
5045 Bison for Windows: V2.4.1
5046
5047 ----------------------------------------
5048 15 February 2012. Summary of changes for version 20120215:
5049
5050
5051 1) ACPICA Core Subsystem:
5052
5053 There have been some major changes to the sleep/wake support code, as
5054 described below (a - e).
5055
5056 a) The AcpiLeaveSleepState has been split into two interfaces, similar to
5057 AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
5058 AcpiLeaveSleepStatePrep. This allows the host to perform actions between
5059 the
5060 time the _BFS method is called and the _WAK method is called. NOTE: all
5061 hosts
5062 must update their wake/resume code or else sleep/wake will not work
5063 properly.
5064 Rafael Wysocki.
5065
5066 b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
5067 _WAK
5068 method. Some machines require that the GPEs are enabled before the _WAK
5069 method
5070 is executed. Thomas Renninger.
5071
5072 c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
5073 bit.
5074 Some BIOS code assumes that WAK_STS will be cleared on resume and use it
5075 to
5076 determine whether the system is rebooting or resuming. Matthew Garrett.
5077
5078 d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
5079 Sleep) to
5080 match the ACPI specification requirement. Rafael Wysocki.
5081
5082 e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
5083 registers within the V5 FADT. This support adds two new files:
5084 hardware/hwesleep.c implements the support for the new registers. Moved
5085 all
5086 sleep/wake external interfaces to hardware/hwxfsleep.c.
5087
5088
5089 Added a new OSL interface for ACPI table overrides,
5090 AcpiOsPhysicalTableOverride. This interface allows the host to override a
5091 table via a physical address, instead of the logical address required by
5092 AcpiOsTableOverride. This simplifies the host implementation. Initial
5093 implementation by Thomas Renninger. The ACPICA implementation creates a
5094 single
5095 shared function for table overrides that attempts both a logical and a
5096 physical override.
5097
5098 Expanded the OSL memory read/write interfaces to 64-bit data
5099 (AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
5100 transfer support for GAS register structures passed to AcpiRead and
5101 AcpiWrite.
5102
5103 Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
5104 custom
5105 build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
5106 model.
5107 See the ACPICA reference for details. ACPICA BZ 942. This option removes
5108 about
5109 10% of the code and 5% of the static data, and the following hardware
5110 ACPI
5111 features become unavailable:
5112 PM Event and Control registers
5113 SCI interrupt (and handler)
5114 Fixed Events
5115 General Purpose Events (GPEs)
5116 Global Lock
5117 ACPI PM timer
5118 FACS table (Waking vectors and Global Lock)
5119
5120 Updated the unix tarball directory structure to match the ACPICA git
5121 source
5122 tree. This ensures that the generic unix makefiles work properly (in
5123 generate/unix). Also updated the Linux makefiles to match. ACPICA BZ
5124 867.
5125
5126 Updated the return value of the _REV predefined method to integer value 5
5127 to
5128 reflect ACPI 5.0 support.
5129
5130 Moved the external ACPI PM timer interface prototypes to the public
5131 acpixf.h
5132 file where they belong.
5133
5134 Example Code and Data Size: These are the sizes for the OS-independent
5135 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5136 debug
5137 version of the code includes the debug output trace mechanism and has a
5138 much
5139 larger code and data size.
5140
5141 Previous Release:
5142 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total
5143 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total
5144 Current Release:
5145 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total
5146 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
5147
5148
5149 2) iASL Compiler/Disassembler and Tools:
5150
5151 Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
5152 descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
5153 incorrectly displayed.
5154
5155 AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
5156 specification.
5157
5158 ----------------------------------------
5159 11 January 2012. Summary of changes for version 20120111:
5160
5161
5162 1) ACPICA Core Subsystem:
5163
5164 Implemented a new mechanism to allow host device drivers to check for
5165 address
5166 range conflicts with ACPI Operation Regions. Both SystemMemory and
5167 SystemIO
5168 address spaces are supported. A new external interface,
5169 AcpiCheckAddressRange,
5170 allows drivers to check an address range against the ACPI namespace. See
5171 the
5172 ACPICA reference for additional details. Adds one new file,
5173 utilities/utaddress.c. Lin Ming, Bob Moore.
5174
5175 Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
5176 Control
5177 and
5178 Status registers, update the ACPI 5.0 flags, and update internal data
5179 structures to handle an FADT larger than 256 bytes. The size of the ACPI
5180 5.0
5181 FADT is 268 bytes.
5182
5183 Updated all ACPICA copyrights and signons to 2012. Added the 2012
5184 copyright to
5185 all module headers and signons, including the standard Linux header. This
5186 affects virtually every file in the ACPICA core subsystem, iASL compiler,
5187 and
5188 all ACPICA utilities.
5189
5190 Example Code and Data Size: These are the sizes for the OS-independent
5191 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5192 debug
5193 version of the code includes the debug output trace mechanism and has a
5194 much
5195 larger code and data size.
5196
5197 Previous Release:
5198 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
5199 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
5200 Current Release:
5201 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total
5202 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total
5203
5204
5205 2) iASL Compiler/Disassembler and Tools:
5206
5207 Disassembler: fixed a problem with the automatic resource tag generation
5208 support. Fixes a problem where the resource tags are inadvertently not
5209 constructed if the table being disassembled contains external references
5210 to
5211 control methods. Moved the actual construction of the tags to after the
5212 final
5213 namespace is constructed (after 2nd parse is invoked due to external
5214 control
5215 method references.) ACPICA BZ 941.
5216
5217 Table Compiler: Make all "generic" operators caseless. These are the
5218 operators
5219 like UINT8, String, etc. Making these caseless improves ease-of-use.
5220 ACPICA BZ
5221 934.
5222
5223 ----------------------------------------
5224 23 November 2011. Summary of changes for version 20111123:
5225
5226 0) ACPI 5.0 Support:
5227
5228 This release contains full support for the ACPI 5.0 specification, as
5229 summarized below.
5230
5231 Reduced Hardware Support:
5232 -------------------------
5233
5234 This support allows for ACPI systems without the usual ACPI hardware.
5235 This
5236 support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
5237 will
5238 not attempt to initialize or use any of the usual ACPI hardware. Note,
5239 when
5240 this flag is set, all of the following ACPI hardware is assumed to be not
5241 present and is not initialized or accessed:
5242
5243 General Purpose Events (GPEs)
5244 Fixed Events (PM1a/PM1b and PM Control)
5245 Power Management Timer and Console Buttons (power/sleep)
5246 Real-time Clock Alarm
5247 Global Lock
5248 System Control Interrupt (SCI)
5249 The FACS is assumed to be non-existent
5250
5251 ACPI Tables:
5252 ------------
5253
5254 All new tables and updates to existing tables are fully supported in the
5255 ACPICA headers (for use by device drivers), the disassembler, and the
5256 iASL
5257 Data Table Compiler. ACPI 5.0 defines these new tables:
5258
5259 BGRT /* Boot Graphics Resource Table */
5260 DRTM /* Dynamic Root of Trust for Measurement table */
5261 FPDT /* Firmware Performance Data Table */
5262 GTDT /* Generic Timer Description Table */
5263 MPST /* Memory Power State Table */
5264 PCCT /* Platform Communications Channel Table */
5265 PMTT /* Platform Memory Topology Table */
5266 RASF /* RAS Feature table */
5267
5268 Operation Regions/SpaceIDs:
5269 ---------------------------
5270
5271 All new operation regions are fully supported by the iASL compiler, the
5272 disassembler, and the ACPICA runtime code (for dispatch to region
5273 handlers.)
5274 The new operation region Space IDs are:
5275
5276 GeneralPurposeIo
5277 GenericSerialBus
5278
5279 Resource Descriptors:
5280 ---------------------
5281
5282 All new ASL resource descriptors are fully supported by the iASL
5283 compiler,
5284 the
5285 ASL/AML disassembler, and the ACPICA runtime Resource Manager code
5286 (including
5287 all new predefined resource tags). New descriptors are:
5288
5289 FixedDma
5290 GpioIo
5291 GpioInt
5292 I2cSerialBus
5293 SpiSerialBus
5294 UartSerialBus
5295
5296 ASL/AML Operators, New and Modified:
5297 ------------------------------------
5298
5299 One new operator is added, the Connection operator, which is used to
5300 associate
5301 a GeneralPurposeIo or GenericSerialBus resource descriptor with
5302 individual
5303 field objects within an operation region. Several new protocols are
5304 associated
5305 with the AccessAs operator. All are fully supported by the iASL compiler,
5306 disassembler, and runtime ACPICA AML interpreter:
5307
5308 Connection // Declare Field Connection
5309 attributes
5310 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol
5311 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes
5312 Protocol
5313 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
5314 RawDataBuffer // Data type for Vendor Data
5315 fields
5316
5317 Predefined ASL/AML Objects:
5318 ---------------------------
5319
5320 All new predefined objects/control-methods are supported by the iASL
5321 compiler
5322 and the ACPICA runtime validation/repair (arguments and return values.)
5323 New
5324 predefined names include the following:
5325
5326 Standard Predefined Names (Objects or Control Methods):
5327 _AEI, _CLS, _CPC, _CWS, _DEP,
5328 _DLM, _EVT, _GCP, _CRT, _GWS,
5329 _HRV, _PRE, _PSE, _SRT, _SUB.
5330
5331 Resource Tags (Names used to access individual fields within resource
5332 descriptors):
5333 _DBT, _DPL, _DRS, _END, _FLC,
5334 _IOR, _LIN, _MOD, _PAR, _PHA,
5335 _PIN, _PPI, _POL, _RXL, _SLV,
5336 _SPE, _STB, _TXL, _VEN.
5337
5338 ACPICA External Interfaces:
5339 ---------------------------
5340
5341 Several new interfaces have been defined for use by ACPI-related device
5342 drivers and other host OS services:
5343
5344 AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
5345 to
5346 acquire and release AML mutexes that are defined in the DSDT/SSDT tables
5347 provided by the BIOS. They are intended to be used in conjunction with
5348 the
5349 ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
5350 mutual exclusion with the AML code/interpreter.
5351
5352 AcpiGetEventResources: Returns the (formatted) resource descriptors as
5353 defined
5354 by the ACPI 5.0 _AEI object (ACPI Event Information). This object
5355 provides
5356 resource descriptors associated with hardware-reduced platform events,
5357 similar
5358 to the AcpiGetCurrentResources interface.
5359
5360 Operation Region Handlers: For General Purpose IO and Generic Serial Bus
5361 operation regions, information about the Connection() object and any
5362 optional
5363 length information is passed to the region handler within the Context
5364 parameter.
5365
5366 AcpiBufferToResource: This interface converts a raw AML buffer containing
5367 a
5368 resource template or resource descriptor to the ACPI_RESOURCE internal
5369 format
5370 suitable for use by device drivers. Can be used by an operation region
5371 handler
5372 to convert the Connection() buffer object into a ACPI_RESOURCE.
5373
5374 Miscellaneous/Tools/TestSuites:
5375 -------------------------------
5376
5377 Support for extended _HID names (Four alpha characters instead of three).
5378 Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
5379 Support for ACPI 5.0 features in the ASLTS test suite.
5380 Fully updated documentation (ACPICA and iASL reference documents.)
5381
5382 ACPI Table Definition Language:
5383 -------------------------------
5384
5385 Support for this language was implemented and released as a subsystem of
5386 the
5387 iASL compiler in 2010. (See the iASL compiler User Guide.)
5388
5389
5390 Non-ACPI 5.0 changes for this release:
5391 --------------------------------------
5392
5393 1) ACPICA Core Subsystem:
5394
5395 Fix a problem with operation region declarations where a failure can
5396 occur
5397 if
5398 the region name and an argument that evaluates to an object (such as the
5399 region address) are in different namespace scopes. Lin Ming, ACPICA BZ
5400 937.
5401
5402 Do not abort an ACPI table load if an invalid space ID is found within.
5403 This
5404 will be caught later if the offending method is executed. ACPICA BZ 925.
5405
5406 Fixed an issue with the FFixedHW space ID where the ID was not always
5407 recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
5408
5409 Fixed a problem with the 32-bit generation of the unix-specific OSL
5410 (osunixxf.c). Lin Ming, ACPICA BZ 936.
5411
5412 Several changes made to enable generation with the GCC 4.6 compiler.
5413 ACPICA BZ
5414 935.
5415
5416 New error messages: Unsupported I/O requests (not 8/16/32 bit), and
5417 Index/Bank
5418 field registers out-of-range.
5419
5420 2) iASL Compiler/Disassembler and Tools:
5421
5422 iASL: Implemented the __PATH__ operator, which returns the full pathname
5423 of
5424 the current source file.
5425
5426 AcpiHelp: Automatically display expanded keyword information for all ASL
5427 operators.
5428
5429 Debugger: Add "Template" command to disassemble/dump resource template
5430 buffers.
5431
5432 Added a new master script to generate and execute the ASLTS test suite.
5433 Automatically handles 32- and 64-bit generation. See tests/aslts.sh
5434
5435 iASL: Fix problem with listing generation during processing of the
5436 Switch()
5437 operator where AML listing was disabled until the entire Switch block was
5438 completed.
5439
5440 iASL: Improve support for semicolon statement terminators. Fix "invalid
5441 character" message for some cases when the semicolon is used. Semicolons
5442 are
5443 now allowed after every <Term> grammar element. ACPICA BZ 927.
5444
5445 iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
5446 923.
5447
5448 Disassembler: Fix problem with disassembly of the DataTableRegion
5449 operator
5450 where an inadvertent "Unhandled deferred opcode" message could be
5451 generated.
5452
5453 3) Example Code and Data Size
5454
5455 These are the sizes for the OS-independent acpica.lib produced by the
5456 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
5457 includes the debug output trace mechanism and has a much larger code and
5458 data
5459 size.
5460
5461 Previous Release:
5462 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
5463 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
5464 Current Release:
5465 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
5466 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
5467
5468 ----------------------------------------
5469 22 September 2011. Summary of changes for version 20110922:
5470
5471 0) ACPI 5.0 News:
5472
5473 Support for ACPI 5.0 in ACPICA has been underway for several months and
5474 will
5475 be released at the same time that ACPI 5.0 is officially released.
5476
5477 The ACPI 5.0 specification is on track for release in the next few
5478 months.
5479
5480 1) ACPICA Core Subsystem:
5481
5482 Fixed a problem where the maximum sleep time for the Sleep() operator was
5483 intended to be limited to two seconds, but was inadvertently limited to
5484 20
5485 seconds instead.
5486
5487 Linux and Unix makefiles: Added header file dependencies to ensure
5488 correct
5489 generation of ACPICA core code and utilities. Also simplified the
5490 makefiles
5491 considerably through the use of the vpath variable to specify search
5492 paths.
5493 ACPICA BZ 924.
5494
5495 2) iASL Compiler/Disassembler and Tools:
5496
5497 iASL: Implemented support to check the access length for all fields
5498 created to
5499 access named Resource Descriptor fields. For example, if a resource field
5500 is
5501 defined to be two bits, a warning is issued if a CreateXxxxField() is
5502 used
5503 with an incorrect bit length. This is implemented for all current
5504 resource
5505 descriptor names. ACPICA BZ 930.
5506
5507 Disassembler: Fixed a byte ordering problem with the output of 24-bit and
5508 56-
5509 bit integers.
5510
5511 iASL: Fixed a couple of issues associated with variable-length package
5512 objects. 1) properly handle constants like One, Ones, Zero -- do not make
5513 a
5514 VAR_PACKAGE when these are used as a package length. 2) Allow the
5515 VAR_PACKAGE
5516 opcode (in addition to PACKAGE) when validating object types for
5517 predefined
5518 names.
5519
5520 iASL: Emit statistics for all output files (instead of just the ASL input
5521 and
5522 AML output). Includes listings, hex files, etc.
5523
5524 iASL: Added -G option to the table compiler to allow the compilation of
5525 custom
5526 ACPI tables. The only part of a table that is required is the standard
5527 36-
5528 byte
5529 ACPI header.
5530
5531 AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
5532 headers),
5533 which also adds correct 64-bit support. Also, now all output filenames
5534 are
5535 completely lower case.
5536
5537 AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
5538 loading table files. A warning is issued for any such tables. The only
5539 exception is an FADT. This also fixes a possible fault when attempting to
5540 load
5541 non-AML tables. ACPICA BZ 932.
5542
5543 AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
5544 a
5545 missing table terminator could cause a fault when using the -p option.
5546
5547 AcpiSrc: Fixed a possible divide-by-zero fault when generating file
5548 statistics.
5549
5550 3) Example Code and Data Size
5551
5552 These are the sizes for the OS-independent acpica.lib produced by the
5553 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
5554 includes the debug output trace mechanism and has a much larger code and
5555 data
5556 size.
5557
5558 Previous Release (VC 9.0):
5559 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
5560 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
5561 Current Release (VC 9.0):
5562 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
5563 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
5564
5565
5566 ----------------------------------------
5567 23 June 2011. Summary of changes for version 20110623:
5568
5569 1) ACPI CA Core Subsystem:
5570
5571 Updated the predefined name repair mechanism to not attempt repair of a
5572 _TSS
5573 return object if a _PSS object is present. We can only sort the _TSS
5574 return
5575 package if there is no _PSS within the same scope. This is because if
5576 _PSS
5577 is
5578 present, the ACPI specification dictates that the _TSS Power Dissipation
5579 field
5580 is to be ignored, and therefore some BIOSs leave garbage values in the
5581 _TSS
5582 Power field(s). In this case, it is best to just return the _TSS package
5583 as-
5584 is. Reported by, and fixed with assistance from Fenghua Yu.
5585
5586 Added an option to globally disable the control method return value
5587 validation
5588 and repair. This runtime option can be used to disable return value
5589 repair
5590 if
5591 this is causing a problem on a particular machine. Also added an option
5592 to
5593 AcpiExec (-dr) to set this disable flag.
5594
5595 All makefiles and project files: Major changes to improve generation of
5596 ACPICA
5597 tools. ACPICA BZ 912:
5598 Reduce default optimization levels to improve compatibility
5599 For Linux, add strict-aliasing=0 for gcc 4
5600 Cleanup and simplify use of command line defines
5601 Cleanup multithread library support
5602 Improve usage messages
5603
5604 Linux-specific header: update handling of THREAD_ID and pthread. For the
5605 32-
5606 bit case, improve casting to eliminate possible warnings, especially with
5607 the
5608 acpica tools.
5609
5610 Example Code and Data Size: These are the sizes for the OS-independent
5611 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5612 debug
5613 version of the code includes the debug output trace mechanism and has a
5614 much
5615 larger code and data size.
5616
5617 Previous Release (VC 9.0):
5618 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total
5619 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
5620 Current Release (VC 9.0):
5621 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
5622 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
5623
5624 2) iASL Compiler/Disassembler and Tools:
5625
5626 With this release, a new utility named "acpihelp" has been added to the
5627 ACPICA
5628 package. This utility summarizes the ACPI specification chapters for the
5629 ASL
5630 and AML languages. It generates under Linux/Unix as well as Windows, and
5631 provides the following functionality:
5632 Find/display ASL operator(s) -- with description and syntax.
5633 Find/display ASL keyword(s) -- with exact spelling and descriptions.
5634 Find/display ACPI predefined name(s) -- with description, number
5635 of arguments, and the return value data type.
5636 Find/display AML opcode name(s) -- with opcode, arguments, and
5637 grammar.
5638 Decode/display AML opcode -- with opcode name, arguments, and
5639 grammar.
5640
5641 Service Layers: Make multi-thread support configurable. Conditionally
5642 compile
5643 the multi-thread support so that threading libraries will not be linked
5644 if
5645 not
5646 necessary. The only tool that requires multi-thread support is AcpiExec.
5647
5648 iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
5649 of
5650 Bison appear to want the interface to yyerror to be a const char * (or at
5651 least this is a problem when generating iASL on some systems.) ACPICA BZ
5652 923
5653 Pierre Lejeune.
5654
5655 Tools: Fix for systems where O_BINARY is not defined. Only used for
5656 Windows
5657 versions of the tools.
5658
5659 ----------------------------------------
5660 27 May 2011. Summary of changes for version 20110527:
5661
5662 1) ACPI CA Core Subsystem:
5663
5664 ASL Load() operator: Reinstate most restrictions on the incoming ACPI
5665 table
5666 signature. Now, only allow SSDT, OEMx, and a null signature. History:
5667 1) Originally, we checked the table signature for "SSDT" or "PSDT".
5668 (PSDT is now obsolete.)
5669 2) We added support for OEMx tables, signature "OEM" plus a fourth
5670 "don't care" character.
5671 3) Valid tables were encountered with a null signature, so we just
5672 gave up on validating the signature, (05/2008).
5673 4) We encountered non-AML tables such as the MADT, which caused
5674 interpreter errors and kernel faults. So now, we once again allow
5675 only SSDT, OEMx, and now, also a null signature. (05/2011).
5676
5677 Added the missing _TDL predefined name to the global name list in order
5678 to
5679 enable validation. Affects both the core ACPICA code and the iASL
5680 compiler.
5681
5682 Example Code and Data Size: These are the sizes for the OS-independent
5683 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5684 debug
5685 version of the code includes the debug output trace mechanism and has a
5686 much
5687 larger code and data size.
5688
5689 Previous Release (VC 9.0):
5690 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total
5691 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total
5692 Current Release (VC 9.0):
5693 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total
5694 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
5695
5696 2) iASL Compiler/Disassembler and Tools:
5697
5698 Debugger/AcpiExec: Implemented support for "complex" method arguments on
5699 the
5700 debugger command line. This adds support beyond simple integers --
5701 including
5702 Strings, Buffers, and Packages. Includes support for nested packages.
5703 Increased the default command line buffer size to accommodate these
5704 arguments.
5705 See the ACPICA reference for details and syntax. ACPICA BZ 917.
5706
5707 Debugger/AcpiExec: Implemented support for "default" method arguments for
5708 the
5709 Execute/Debug command. Now, the debugger will always invoke a control
5710 method
5711 with the required number of arguments -- even if the command line
5712 specifies
5713 none or insufficient arguments. It uses default integer values for any
5714 missing
5715 arguments. Also fixes a bug where only six method arguments maximum were
5716 supported instead of the required seven.
5717
5718 Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
5719 and
5720 also return status in order to prevent buffer overruns. See the ACPICA
5721 reference for details and syntax. ACPICA BZ 921
5722
5723 iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
5724 makefiles to simplify support for the two different but similar parser
5725 generators, bison and yacc.
5726
5727 Updated the generic unix makefile for gcc 4. The default gcc version is
5728 now
5729 expected to be 4 or greater, since options specific to gcc 4 are used.
5730
5731 ----------------------------------------
5732 13 April 2011. Summary of changes for version 20110413:
5733
5734 1) ACPI CA Core Subsystem:
5735
5736 Implemented support to execute a so-called "orphan" _REG method under the
5737 EC
5738 device. This change will force the execution of a _REG method underneath
5739 the
5740 EC
5741 device even if there is no corresponding operation region of type
5742 EmbeddedControl. Fixes a problem seen on some machines and apparently is
5743 compatible with Windows behavior. ACPICA BZ 875.
5744
5745 Added more predefined methods that are eligible for automatic NULL
5746 package
5747 element removal. This change adds another group of predefined names to
5748 the
5749 list
5750 of names that can be repaired by having NULL package elements dynamically
5751 removed. This group are those methods that return a single variable-
5752 length
5753 package containing simple data types such as integers, buffers, strings.
5754 This
5755 includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
5756 _PSL,
5757 _Sx,
5758 and _TZD. ACPICA BZ 914.
5759
5760 Split and segregated all internal global lock functions to a new file,
5761 evglock.c.
5762
5763 Updated internal address SpaceID for DataTable regions. Moved this
5764 internal
5765 space
5766 id in preparation for ACPI 5.0 changes that will include some new space
5767 IDs.
5768 This
5769 change should not affect user/host code.
5770
5771 Example Code and Data Size: These are the sizes for the OS-independent
5772 acpica.lib
5773 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
5774 version of
5775 the code includes the debug output trace mechanism and has a much larger
5776 code
5777 and
5778 data size.
5779
5780 Previous Release (VC 9.0):
5781 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total
5782 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total
5783 Current Release (VC 9.0):
5784 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total
5785 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total
5786
5787 2) iASL Compiler/Disassembler and Tools:
5788
5789 iASL/DTC: Major update for new grammar features. Allow generic data types
5790 in
5791 custom ACPI tables. Field names are now optional. Any line can be split
5792 to
5793 multiple lines using the continuation char (\). Large buffers now use
5794 line-
5795 continuation character(s) and no colon on the continuation lines. See the
5796 grammar
5797 update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
5798 Moore.
5799
5800 iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
5801 statements.
5802 Since the parser stuffs a "zero" as the return value for these statements
5803 (due
5804 to
5805 the underlying AML grammar), they were seen as "return with value" by the
5806 iASL
5807 semantic checking. They are now seen correctly as "null" return
5808 statements.
5809
5810 iASL: Check if a_REG declaration has a corresponding Operation Region.
5811 Adds a
5812 check for each _REG to ensure that there is in fact a corresponding
5813 operation
5814 region declaration in the same scope. If not, the _REG method is not very
5815 useful
5816 since it probably won't be executed. ACPICA BZ 915.
5817
5818 iASL/DTC: Finish support for expression evaluation. Added a new
5819 expression
5820 parser
5821 that implements c-style operator precedence and parenthesization. ACPICA
5822 bugzilla
5823 908.
5824
5825 Disassembler/DTC: Remove support for () and <> style comments in data
5826 tables.
5827 Now
5828 that DTC has full expression support, we don't want to have comment
5829 strings
5830 that
5831 start with a parentheses or a less-than symbol. Now, only the standard /*
5832 and
5833 //
5834 comments are supported, as well as the bracket [] comments.
5835
5836 AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
5837 "unusual"
5838 headers in the acpidump file. Update the header validation to support
5839 these
5840 tables. Problem introduced in previous AcpiXtract version in the change
5841 to
5842 support "wrong checksum" error messages emitted by acpidump utility.
5843
5844 iASL: Add a * option to generate all template files (as a synonym for
5845 ALL)
5846 as
5847 in
5848 "iasl -T *" or "iasl -T ALL".
5849
5850 iASL/DTC: Do not abort compiler on fatal errors. We do not want to
5851 completely
5852 abort the compiler on "fatal" errors, simply should abort the current
5853 compile.
5854 This allows multiple compiles with a single (possibly wildcard) compiler
5855 invocation.
5856
5857 ----------------------------------------
5858 16 March 2011. Summary of changes for version 20110316:
5859
5860 1) ACPI CA Core Subsystem:
5861
5862 Fixed a problem caused by a _PRW method appearing at the namespace root
5863 scope
5864 during the setup of wake GPEs. A fault could occur if a _PRW directly
5865 under
5866 the
5867 root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
5868
5869 Implemented support for "spurious" Global Lock interrupts. On some
5870 systems, a
5871 global lock interrupt can occur without the pending flag being set. Upon
5872 a
5873 GL
5874 interrupt, we now ensure that a thread is actually waiting for the lock
5875 before
5876 signaling GL availability. Rafael Wysocki, Bob Moore.
5877
5878 Example Code and Data Size: These are the sizes for the OS-independent
5879 acpica.lib
5880 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
5881 version of
5882 the code includes the debug output trace mechanism and has a much larger
5883 code
5884 and
5885 data size.
5886
5887 Previous Release (VC 9.0):
5888 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
5889 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
5890 Current Release (VC 9.0):
5891 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total
5892 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total
5893
5894 2) iASL Compiler/Disassembler and Tools:
5895
5896 Implemented full support for the "SLIC" ACPI table. Includes support in
5897 the
5898 header files, disassembler, table compiler, and template generator. Bob
5899 Moore,
5900 Lin Ming.
5901
5902 AcpiXtract: Correctly handle embedded comments and messages from
5903 AcpiDump.
5904 Apparently some or all versions of acpidump will occasionally emit a
5905 comment
5906 like
5907 "Wrong checksum", etc., into the dump file. This was causing problems for
5908 AcpiXtract. ACPICA BZ 905.
5909
5910 iASL: Fix the Linux makefile by removing an inadvertent double file
5911 inclusion.
5912 ACPICA BZ 913.
5913
5914 AcpiExec: Update installation of operation region handlers. Install one
5915 handler
5916 for a user-defined address space. This is used by the ASL test suite
5917 (ASLTS).
5918
5919 ----------------------------------------
5920 11 February 2011. Summary of changes for version 20110211:
5921
5922 1) ACPI CA Core Subsystem:
5923
5924 Added a mechanism to defer _REG methods for some early-installed
5925 handlers.
5926 Most user handlers should be installed before call to
5927 AcpiEnableSubsystem.
5928 However, Event handlers and region handlers should be installed after
5929 AcpiInitializeObjects. Override handlers for the "default" regions should
5930 be
5931 installed early, however. This change executes all _REG methods for the
5932 default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
5933 chicken/egg issues between them. ACPICA BZ 848.
5934
5935 Implemented an optimization for GPE detection. This optimization will
5936 simply
5937 ignore GPE registers that contain no enabled GPEs -- there is no need to
5938 read the register since this information is available internally. This
5939 becomes more important on machines with a large GPE space. ACPICA
5940 bugzilla
5941 884. Lin Ming. Suggestion from Joe Liu.
5942
5943 Removed all use of the highly unreliable FADT revision field. The
5944 revision
5945 number in the FADT has been found to be completely unreliable and cannot
5946 be
5947 trusted. Only the actual table length can be used to infer the version.
5948 This
5949 change updates the ACPICA core and the disassembler so that both no
5950 longer
5951 even look at the FADT version and instead depend solely upon the FADT
5952 length.
5953
5954 Fix an unresolved name issue for the no-debug and no-error-message source
5955 generation cases. The _AcpiModuleName was left undefined in these cases,
5956 but
5957 it is actually needed as a parameter to some interfaces. Define
5958 _AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
5959
5960 Split several large files (makefiles and project files updated)
5961 utglobal.c -> utdecode.c
5962 dbcomds.c -> dbmethod.c dbnames.c
5963 dsopcode.c -> dsargs.c dscontrol.c
5964 dsload.c -> dsload2.c
5965 aslanalyze.c -> aslbtypes.c aslwalks.c
5966
5967 Example Code and Data Size: These are the sizes for the OS-independent
5968 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5969 debug version of the code includes the debug output trace mechanism and
5970 has
5971 a much larger code and data size.
5972
5973 Previous Release (VC 9.0):
5974 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
5975 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
5976 Current Release (VC 9.0):
5977 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
5978 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
5979
5980 2) iASL Compiler/Disassembler and Tools:
5981
5982 iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
5983 These are useful C-style macros with the standard definitions. ACPICA
5984 bugzilla 898.
5985
5986 iASL/DTC: Added support for integer expressions and labels. Support for
5987 full
5988 expressions for all integer fields in all ACPI tables. Support for labels
5989 in
5990 "generic" portions of tables such as UEFI. See the iASL reference manual.
5991
5992 Debugger: Added a command to display the status of global handlers. The
5993 "handlers" command will display op region, fixed event, and miscellaneous
5994 global handlers. installation status -- and for op regions, whether
5995 default
5996 or user-installed handler will be used.
5997
5998 iASL: Warn if reserved method incorrectly returns a value. Many
5999 predefined
6000 names are defined such that they do not return a value. If implemented as
6001 a
6002 method, issue a warning if such a name explicitly returns a value. ACPICA
6003 Bugzilla 855.
6004
6005 iASL: Added detection of GPE method name conflicts. Detects a conflict
6006 where
6007 there are two GPE methods of the form _Lxy and _Exy in the same scope.
6008 (For
6009 example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
6010
6011 iASL/DTC: Fixed a couple input scanner issues with comments and line
6012 numbers. Comment remover could get confused and miss a comment ending.
6013 Fixed
6014 a problem with line counter maintenance.
6015
6016 iASL/DTC: Reduced the severity of some errors from fatal to error. There
6017 is
6018 no need to abort on simple errors within a field definition.
6019
6020 Debugger: Simplified the output of the help command. All help output now
6021 in
6022 a single screen, instead of help subcommands. ACPICA Bugzilla 897.
6023
6024 ----------------------------------------
6025 12 January 2011. Summary of changes for version 20110112:
6026
6027 1) ACPI CA Core Subsystem:
6028
6029 Fixed a race condition between method execution and namespace walks that
6030 can
6031 possibly cause a fault. The problem was apparently introduced in version
6032 20100528 as a result of a performance optimization that reduces the
6033 number
6034 of
6035 namespace walks upon method exit by using the delete_namespace_subtree
6036 function instead of the delete_namespace_by_owner function used
6037 previously.
6038 Bug is a missing namespace lock in the delete_namespace_subtree function.
6039 dana.myers (a] oracle.com
6040
6041 Fixed several issues and a possible fault with the automatic "serialized"
6042 method support. History: This support changes a method to "serialized" on
6043 the
6044 fly if the method generates an AE_ALREADY_EXISTS error, indicating the
6045 possibility that it cannot handle reentrancy. This fix repairs a couple
6046 of
6047 issues seen in the field, especially on machines with many cores:
6048
6049 1) Delete method children only upon the exit of the last thread,
6050 so as to not delete objects out from under other running threads
6051 (and possibly causing a fault.)
6052 2) Set the "serialized" bit for the method only upon the exit of the
6053 Last thread, so as to not cause deadlock when running threads
6054 attempt to exit.
6055 3) Cleanup the use of the AML "MethodFlags" and internal method flags
6056 so that there is no longer any confusion between the two.
6057
6058 Lin Ming, Bob Moore. Reported by dana.myers (a] oracle.com.
6059
6060 Debugger: Now lock the namespace for duration of a namespace dump.
6061 Prevents
6062 issues if the namespace is changing dynamically underneath the debugger.
6063 Especially affects temporary namespace nodes, since the debugger displays
6064 these also.
6065
6066 Updated the ordering of include files. The ACPICA headers should appear
6067 before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
6068 set
6069 any necessary compiler-specific defines, etc. Affects the ACPI-related
6070 tools
6071 and utilities.
6072
6073 Updated all ACPICA copyrights and signons to 2011. Added the 2011
6074 copyright
6075 to all module headers and signons, including the Linux header. This
6076 affects
6077 virtually every file in the ACPICA core subsystem, iASL compiler, and all
6078 utilities.
6079
6080 Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
6081 project files for VC++ 6.0 are now obsolete. New project files can be
6082 found
6083 under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
6084 details.
6085
6086 Example Code and Data Size: These are the sizes for the OS-independent
6087 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6088 debug version of the code includes the debug output trace mechanism and
6089 has a
6090 much larger code and data size.
6091
6092 Previous Release (VC 6.0):
6093 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total
6094 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total
6095 Current Release (VC 9.0):
6096 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
6097 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
6098
6099 2) iASL Compiler/Disassembler and Tools:
6100
6101 iASL: Added generic data types to the Data Table compiler. Add "generic"
6102 data
6103 types such as UINT32, String, Unicode, etc., to simplify the generation
6104 of
6105 platform-defined tables such as UEFI. Lin Ming.
6106
6107 iASL: Added listing support for the Data Table Compiler. Adds listing
6108 support
6109 (-l) to display actual binary output for each line of input code.
6110
6111 ----------------------------------------
6112 09 December 2010. Summary of changes for version 20101209:
6113
6114 1) ACPI CA Core Subsystem:
6115
6116 Completed the major overhaul of the GPE support code that was begun in
6117 July
6118 2010. Major features include: removal of _PRW execution in ACPICA (host
6119 executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
6120 changes to existing interfaces, simplification of GPE handler operation,
6121 and
6122 a handful of new interfaces:
6123
6124 AcpiUpdateAllGpes
6125 AcpiFinishGpe
6126 AcpiSetupGpeForWake
6127 AcpiSetGpeWakeMask
6128 One new file, evxfgpe.c to consolidate all external GPE interfaces.
6129
6130 See the ACPICA Programmer Reference for full details and programming
6131 information. See the new section 4.4 "General Purpose Event (GPE)
6132 Support"
6133 for a full overview, and section 8.7 "ACPI General Purpose Event
6134 Management"
6135 for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
6136 Ming,
6137 Bob Moore, Rafael Wysocki.
6138
6139 Implemented a new GPE feature for Windows compatibility, the "Implicit
6140 Wake
6141 GPE Notify". This feature will automatically issue a Notify(2) on a
6142 device
6143 when a Wake GPE is received if there is no corresponding GPE method or
6144 handler. ACPICA BZ 870.
6145
6146 Fixed a problem with the Scope() operator during table parse and load
6147 phase.
6148 During load phase (table load or method execution), the scope operator
6149 should
6150 not enter the target into the namespace. Instead, it should open a new
6151 scope
6152 at the target location. Linux BZ 19462, ACPICA BZ 882.
6153
6154 Example Code and Data Size: These are the sizes for the OS-independent
6155 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6156 debug version of the code includes the debug output trace mechanism and
6157 has a
6158 much larger code and data size.
6159
6160 Previous Release:
6161 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total
6162 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total
6163 Current Release:
6164 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
6165 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
6166
6167 2) iASL Compiler/Disassembler and Tools:
6168
6169 iASL: Relax the alphanumeric restriction on _CID strings. These strings
6170 are
6171 "bus-specific" per the ACPI specification, and therefore any characters
6172 are
6173 acceptable. The only checks that can be performed are for a null string
6174 and
6175 perhaps for a leading asterisk. ACPICA BZ 886.
6176
6177 iASL: Fixed a problem where a syntax error that caused a premature EOF
6178 condition on the source file emitted a very confusing error message. The
6179 premature EOF is now detected correctly. ACPICA BZ 891.
6180
6181 Disassembler: Decode the AccessSize within a Generic Address Structure
6182 (byte
6183 access, word access, etc.) Note, this field does not allow arbitrary bit
6184 access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
6185
6186 New: AcpiNames utility - Example namespace dump utility. Shows an example
6187 of
6188 ACPICA configuration for a minimal namespace dump utility. Uses table and
6189 namespace managers, but no AML interpreter. Does not add any
6190 functionality
6191 over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
6192 partition and configure ACPICA. ACPICA BZ 883.
6193
6194 AML Debugger: Increased the debugger buffer size for method return
6195 objects.
6196 Was 4K, increased to 16K. Also enhanced error messages for debugger
6197 method
6198 execution, including the buffer overflow case.
6199
6200 ----------------------------------------
6201 13 October 2010. Summary of changes for version 20101013:
6202
6203 1) ACPI CA Core Subsystem:
6204
6205 Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
6206 now
6207 clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
6208 HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
6209
6210 Changed the type of the predefined namespace object _TZ from ThermalZone
6211 to
6212 Device. This was found to be confusing to the host software that
6213 processes
6214 the various thermal zones, since _TZ is not really a ThermalZone.
6215 However,
6216 a
6217 Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
6218 Zhang.
6219
6220 Added Windows Vista SP2 to the list of supported _OSI strings. The actual
6221 string is "Windows 2006 SP2".
6222
6223 Eliminated duplicate code in AcpiUtExecute* functions. Now that the
6224 nsrepair
6225 code automatically repairs _HID-related strings, this type of code is no
6226 longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
6227 878.
6228
6229 Example Code and Data Size: These are the sizes for the OS-independent
6230 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6231 debug version of the code includes the debug output trace mechanism and
6232 has a
6233 much larger code and data size.
6234
6235 Previous Release:
6236 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
6237 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
6238 Current Release:
6239 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
6240 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
6241
6242 2) iASL Compiler/Disassembler and Tools:
6243
6244 iASL: Implemented additional compile-time validation for _HID strings.
6245 The
6246 non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
6247 length
6248 of
6249 the string must be exactly seven or eight characters. For both _HID and
6250 _CID
6251 strings, all characters must be alphanumeric. ACPICA BZ 874.
6252
6253 iASL: Allow certain "null" resource descriptors. Some BIOS code creates
6254 descriptors that are mostly or all zeros, with the expectation that they
6255 will
6256 be filled in at runtime. iASL now allows this as long as there is a
6257 "resource
6258 tag" (name) associated with the descriptor, which gives the ASL a handle
6259 needed to modify the descriptor. ACPICA BZ 873.
6260
6261 Added single-thread support to the generic Unix application OSL.
6262 Primarily
6263 for iASL support, this change removes the use of semaphores in the
6264 single-
6265 threaded ACPICA tools/applications - increasing performance. The
6266 _MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
6267 option. ACPICA BZ 879.
6268
6269 AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
6270 support
6271 for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
6272
6273 iASL: Moved all compiler messages to a new file, aslmessages.h.
6274
6275 ----------------------------------------
6276 15 September 2010. Summary of changes for version 20100915:
6277
6278 1) ACPI CA Core Subsystem:
6279
6280 Removed the AcpiOsDerivePciId OSL interface. The various host
6281 implementations
6282 of this function were not OS-dependent and are now obsolete and can be
6283 removed from all host OSLs. This function has been replaced by
6284 AcpiHwDerivePciId, which is now part of the ACPICA core code.
6285 AcpiHwDerivePciId has been implemented without recursion. Adds one new
6286 module, hwpci.c. ACPICA BZ 857.
6287
6288 Implemented a dynamic repair for _HID and _CID strings. The following
6289 problems are now repaired at runtime: 1) Remove a leading asterisk in the
6290 string, and 2) the entire string is uppercased. Both repairs are in
6291 accordance with the ACPI specification and will simplify host driver
6292 code.
6293 ACPICA BZ 871.
6294
6295 The ACPI_THREAD_ID type is no longer configurable, internally it is now
6296 always UINT64. This simplifies the ACPICA code, especially any printf
6297 output.
6298 UINT64 is the only common data type for all thread_id types across all
6299 operating systems. It is now up to the host OSL to cast the native
6300 thread_id
6301 type to UINT64 before returning the value to ACPICA (via
6302 AcpiOsGetThreadId).
6303 Lin Ming, Bob Moore.
6304
6305 Added the ACPI_INLINE type to enhance the ACPICA configuration. The
6306 "inline"
6307 keyword is not standard across compilers, and this type allows inline to
6308 be
6309 configured on a per-compiler basis. Lin Ming.
6310
6311 Made the system global AcpiGbl_SystemAwakeAndRunning publically
6312 available.
6313 Added an extern for this boolean in acpixf.h. Some hosts utilize this
6314 value
6315 during suspend/restore operations. ACPICA BZ 869.
6316
6317 All code that implements error/warning messages with the "ACPI:" prefix
6318 has
6319 been moved to a new module, utxferror.c.
6320
6321 The UINT64_OVERLAY was moved to utmath.c, which is the only module where
6322 it
6323 is used. ACPICA BZ 829. Lin Ming, Bob Moore.
6324
6325 Example Code and Data Size: These are the sizes for the OS-independent
6326 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6327 debug version of the code includes the debug output trace mechanism and
6328 has a
6329 much larger code and data size.
6330
6331 Previous Release:
6332 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total
6333 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total
6334 Current Release:
6335 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
6336 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
6337
6338 2) iASL Compiler/Disassembler and Tools:
6339
6340 iASL/Disassembler: Write ACPI errors to stderr instead of the output
6341 file.
6342 This keeps the output files free of random error messages that may
6343 originate
6344 from within the namespace/interpreter code. Used this opportunity to
6345 merge
6346 all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
6347 866. Lin Ming, Bob Moore.
6348
6349 Tools: update some printfs for ansi warnings on size_t. Handle width
6350 change
6351 of size_t on 32-bit versus 64-bit generations. Lin Ming.
6352
6353 ----------------------------------------
6354 06 August 2010. Summary of changes for version 20100806:
6355
6356 1) ACPI CA Core Subsystem:
6357
6358 Designed and implemented a new host interface to the _OSI support code.
6359 This
6360 will allow the host to dynamically add or remove multiple _OSI strings,
6361 as
6362 well as install an optional handler that is called for each _OSI
6363 invocation.
6364 Also added a new AML debugger command, 'osi' to display and modify the
6365 global
6366 _OSI string table, and test support in the AcpiExec utility. See the
6367 ACPICA
6368 reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
6369 New Functions:
6370 AcpiInstallInterface - Add an _OSI string.
6371 AcpiRemoveInterface - Delete an _OSI string.
6372 AcpiInstallInterfaceHandler - Install optional _OSI handler.
6373 Obsolete Functions:
6374 AcpiOsValidateInterface - no longer used.
6375 New Files:
6376 source/components/utilities/utosi.c
6377
6378 Re-introduced the support to enable multi-byte transfers for Embedded
6379 Controller (EC) operation regions. A reported problem was found to be a
6380 bug
6381 in the host OS, not in the multi-byte support. Previously, the maximum
6382 data
6383 size passed to the EC operation region handler was a single byte. There
6384 are
6385 often EC Fields larger than one byte that need to be transferred, and it
6386 is
6387 useful for the EC driver to lock these as a single transaction. This
6388 change
6389 enables single transfers larger than 8 bits. This effectively changes the
6390 access to the EC space from ByteAcc to AnyAcc, and will probably require
6391 changes to the host OS Embedded Controller driver to enable 16/32/64/256-
6392 bit
6393 transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
6394
6395 Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
6396 prototype in acpiosxf.h had the output value pointer as a (void *).
6397 It should be a (UINT64 *). This may affect some host OSL code.
6398
6399 Fixed a couple problems with the recently modified Linux makefiles for
6400 iASL
6401 and AcpiExec. These new makefiles place the generated object files in the
6402 local directory so that there can be no collisions between the files that
6403 are
6404 shared between them that are compiled with different options.
6405
6406 Example Code and Data Size: These are the sizes for the OS-independent
6407 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6408 debug version of the code includes the debug output trace mechanism and
6409 has a
6410 much larger code and data size.
6411
6412 Previous Release:
6413 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
6414 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total
6415 Current Release:
6416 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total
6417 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total
6418
6419 2) iASL Compiler/Disassembler and Tools:
6420
6421 iASL/Disassembler: Added a new option (-da, "disassemble all") to load
6422 the
6423 namespace from and disassemble an entire group of AML files. Useful for
6424 loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
6425 and
6426 disassembling with one simple command. ACPICA BZ 865. Lin Ming.
6427
6428 iASL: Allow multiple invocations of -e option. This change allows
6429 multiple
6430 uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
6431 834.
6432 Lin Ming.
6433
6434 ----------------------------------------
6435 02 July 2010. Summary of changes for version 20100702:
6436
6437 1) ACPI CA Core Subsystem:
6438
6439 Implemented several updates to the recently added GPE reference count
6440 support. The model for "wake" GPEs is changing to give the host OS
6441 complete
6442 control of these GPEs. Eventually, the ACPICA core will not execute any
6443 _PRW
6444 methods, since the host already must execute them. Also, additional
6445 changes
6446 were made to help ensure that the reference counts are kept in proper
6447 synchronization with reality. Rafael J. Wysocki.
6448
6449 1) Ensure that GPEs are not enabled twice during initialization.
6450 2) Ensure that GPE enable masks stay in sync with the reference count.
6451 3) Do not inadvertently enable GPEs when writing GPE registers.
6452 4) Remove the internal wake reference counter and add new AcpiGpeWakeup
6453 interface. This interface will set or clear individual GPEs for wakeup.
6454 5) Remove GpeType argument from AcpiEnable and AcpiDisable. These
6455 interfaces
6456 are now used for "runtime" GPEs only.
6457
6458 Changed the behavior of the GPE install/remove handler interfaces. The
6459 GPE
6460 is
6461 no longer disabled during this process, as it was found to cause problems
6462 on
6463 some machines. Rafael J. Wysocki.
6464
6465 Reverted a change introduced in version 20100528 to enable Embedded
6466 Controller multi-byte transfers. This change was found to cause problems
6467 with
6468 Index Fields and possibly Bank Fields. It will be reintroduced when these
6469 problems have been resolved.
6470
6471 Fixed a problem with references to Alias objects within Package Objects.
6472 A
6473 reference to an Alias within the definition of a Package was not always
6474 resolved properly. Aliases to objects like Processors, Thermal zones,
6475 etc.
6476 were resolved to the actual object instead of a reference to the object
6477 as
6478 it
6479 should be. Package objects are only allowed to contain integer, string,
6480 buffer, package, and reference objects. Redhat bugzilla 608648.
6481
6482 Example Code and Data Size: These are the sizes for the OS-independent
6483 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6484 debug version of the code includes the debug output trace mechanism and
6485 has a
6486 much larger code and data size.
6487
6488 Previous Release:
6489 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
6490 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total
6491 Current Release:
6492 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
6493 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total
6494
6495 2) iASL Compiler/Disassembler and Tools:
6496
6497 iASL: Implemented a new compiler subsystem to allow definition and
6498 compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
6499 These
6500 are called "ACPI Data Tables", and the new compiler is the "Data Table
6501 Compiler". This compiler is intended to simplify the existing error-prone
6502 process of creating these tables for the BIOS, as well as allowing the
6503 disassembly, modification, recompilation, and override of existing ACPI
6504 data
6505 tables. See the iASL User Guide for detailed information.
6506
6507 iASL: Implemented a new Template Generator option in support of the new
6508 Data
6509 Table Compiler. This option will create examples of all known ACPI tables
6510 that can be used as the basis for table development. See the iASL
6511 documentation and the -T option.
6512
6513 Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
6514 Descriptor Table).
6515
6516 Updated the Linux makefiles for iASL and AcpiExec to place the generated
6517 object files in the local directory so that there can be no collisions
6518 between the shared files between them that are generated with different
6519 options.
6520
6521 Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
6522 Use
6523 the #define __APPLE__ to enable this support.
6524
6525 ----------------------------------------
6526 28 May 2010. Summary of changes for version 20100528:
6527
6528 Note: The ACPI 4.0a specification was released on April 5, 2010 and is
6529 available at www.acpi.info. This is primarily an errata release.
6530
6531 1) ACPI CA Core Subsystem:
6532
6533 Undefined ACPI tables: We are looking for the definitions for the
6534 following
6535 ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
6536
6537 Implemented support to enable multi-byte transfers for Embedded
6538 Controller
6539 (EC) operation regions. Previously, the maximum data size passed to the
6540 EC
6541 operation region handler was a single byte. There are often EC Fields
6542 larger
6543 than one byte that need to be transferred, and it is useful for the EC
6544 driver
6545 to lock these as a single transaction. This change enables single
6546 transfers
6547 larger than 8 bits. This effectively changes the access to the EC space
6548 from
6549 ByteAcc to AnyAcc, and will probably require changes to the host OS
6550 Embedded
6551 Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
6552 bit
6553 transfers. Alexey Starikovskiy, Lin Ming
6554
6555 Implemented a performance enhancement for namespace search and access.
6556 This
6557 change enhances the performance of namespace searches and walks by adding
6558 a
6559 backpointer to the parent in each namespace node. On large namespaces,
6560 this
6561 change can improve overall ACPI performance by up to 9X. Adding a pointer
6562 to
6563 each namespace node increases the overall size of the internal namespace
6564 by
6565 about 5%, since each namespace entry usually consists of both a namespace
6566 node and an ACPI operand object. However, this is the first growth of the
6567 namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
6568
6569 Implemented a performance optimization that reduces the number of
6570 namespace
6571 walks. On control method exit, only walk the namespace if the method is
6572 known
6573 to have created namespace objects outside of its local scope. Previously,
6574 the
6575 entire namespace was traversed on each control method exit. This change
6576 can
6577 improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
6578 Moore.
6579
6580 Added support to truncate I/O addresses to 16 bits for Windows
6581 compatibility.
6582 Some ASL code has been seen in the field that inadvertently has bits set
6583 above bit 15. This feature is optional and is enabled if the BIOS
6584 requests
6585 any Windows OSI strings. It can also be enabled by the host OS. Matthew
6586 Garrett, Bob Moore.
6587
6588 Added support to limit the maximum time for the ASL Sleep() operator. To
6589 prevent accidental deep sleeps, limit the maximum time that Sleep() will
6590 actually sleep. Configurable, the default maximum is two seconds. ACPICA
6591 bugzilla 854.
6592
6593 Added run-time validation support for the _WDG and_WED Microsoft
6594 predefined
6595 methods. These objects are defined by "Windows Instrumentation", and are
6596 not
6597 part of the ACPI spec. ACPICA BZ 860.
6598
6599 Expanded all statistic counters used during namespace and device
6600 initialization from 16 to 32 bits in order to support very large
6601 namespaces.
6602
6603 Replaced all instances of %d in printf format specifiers with %u since
6604 nearly
6605 all integers in ACPICA are unsigned.
6606
6607 Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
6608 returned
6609 as AE_NO_HANDLER.
6610
6611 Example Code and Data Size: These are the sizes for the OS-independent
6612 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6613 debug version of the code includes the debug output trace mechanism and
6614 has a
6615 much larger code and data size.
6616
6617 Previous Release:
6618 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total
6619 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total
6620 Current Release:
6621 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
6622 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total
6623
6624 2) iASL Compiler/Disassembler and Tools:
6625
6626 iASL: Added compiler support for the _WDG and_WED Microsoft predefined
6627 methods. These objects are defined by "Windows Instrumentation", and are
6628 not
6629 part of the ACPI spec. ACPICA BZ 860.
6630
6631 AcpiExec: added option to disable the memory tracking mechanism. The -dt
6632 option will disable the tracking mechanism, which improves performance
6633 considerably.
6634
6635 AcpiExec: Restructured the command line options into -d (disable) and -e
6636 (enable) options.
6637
6638 ----------------------------------------
6639 28 April 2010. Summary of changes for version 20100428:
6640
6641 1) ACPI CA Core Subsystem:
6642
6643 Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
6644 including FADT-based and GPE Block Devices, execute any _PRW methods in
6645 the
6646 new table, and process any _Lxx/_Exx GPE methods in the new table. Any
6647 runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
6648 immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
6649 Devices. Provides compatibility with other ACPI implementations. Two new
6650 files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
6651 Moore.
6652
6653 Fixed a regression introduced in version 20100331 within the table
6654 manager
6655 where initial table loading could fail. This was introduced in the fix
6656 for
6657 AcpiReallocateRootTable. Also, renamed some of fields in the table
6658 manager
6659 data structures to clarify their meaning and use.
6660
6661 Fixed a possible allocation overrun during internal object copy in
6662 AcpiUtCopySimpleObject. The original code did not correctly handle the
6663 case
6664 where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
6665 847.
6666
6667 Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
6668 possible access beyond end-of-allocation. Also, now fully validate
6669 descriptor
6670 (size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
6671
6672 Example Code and Data Size: These are the sizes for the OS-independent
6673 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6674 debug version of the code includes the debug output trace mechanism and
6675 has a
6676 much larger code and data size.
6677
6678 Previous Release:
6679 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total
6680 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total
6681 Current Release:
6682 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total
6683 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total
6684
6685 2) iASL Compiler/Disassembler and Tools:
6686
6687 iASL: Implemented Min/Max/Len/Gran validation for address resource
6688 descriptors. This change implements validation for the address fields
6689 that
6690 are common to all address-type resource descriptors. These checks are
6691 implemented: Checks for valid Min/Max, length within the Min/Max window,
6692 valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
6693 per
6694 table 6-40 in the ACPI 4.0a specification. Also split the large
6695 aslrestype1.c
6696 and aslrestype2.c files into five new files. ACPICA BZ 840.
6697
6698 iASL: Added support for the _Wxx predefined names. This support was
6699 missing
6700 and these names were not recognized by the compiler as valid predefined
6701 names. ACPICA BZ 851.
6702
6703 iASL: Added an error for all predefined names that are defined to return
6704 no
6705 value and thus must be implemented as Control Methods. These include all
6706 of
6707 the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
6708 names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
6709
6710 iASL: Implemented the -ts option to emit hex AML data in ASL format, as
6711 an
6712 ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
6713 be
6714 dynamically loaded via the Load() operator. Also cleaned up output for
6715 the
6716 -
6717 ta and -tc options. ACPICA BZ 853.
6718
6719 Tests: Added a new file with examples of extended iASL error checking.
6720 Demonstrates the advanced error checking ability of the iASL compiler.
6721 Available at tests/misc/badcode.asl.
6722
6723 ----------------------------------------
6724 31 March 2010. Summary of changes for version 20100331:
6725
6726 1) ACPI CA Core Subsystem:
6727
6728 Completed a major update for the GPE support in order to improve support
6729 for
6730 shared GPEs and to simplify both host OS and ACPICA code. Added a
6731 reference
6732 count mechanism to support shared GPEs that require multiple device
6733 drivers.
6734 Several external interfaces have changed. One external interface has been
6735 removed. One new external interface was added. Most of the GPE external
6736 interfaces now use the GPE spinlock instead of the events mutex (and the
6737 Flags parameter for many GPE interfaces has been removed.) See the
6738 updated
6739 ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
6740 Rafael
6741 Wysocki. ACPICA BZ 831.
6742
6743 Changed:
6744 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
6745 Removed:
6746 AcpiSetGpeType
6747 New:
6748 AcpiSetGpe
6749
6750 Implemented write support for DataTable operation regions. These regions
6751 are
6752 defined via the DataTableRegion() operator. Previously, only read support
6753 was
6754 implemented. The ACPI specification allows DataTableRegions to be
6755 read/write,
6756 however.
6757
6758 Implemented a new subsystem option to force a copy of the DSDT to local
6759 memory. Optionally copy the entire DSDT to local memory (instead of
6760 simply
6761 mapping it.) There are some (albeit very rare) BIOSs that corrupt or
6762 replace
6763 the original DSDT, creating the need for this option. Default is FALSE,
6764 do
6765 not copy the DSDT.
6766
6767 Implemented detection of a corrupted or replaced DSDT. This change adds
6768 support to detect a DSDT that has been corrupted and/or replaced from
6769 outside
6770 the OS (by firmware). This is typically catastrophic for the system, but
6771 has
6772 been seen on some machines. Once this problem has been detected, the DSDT
6773 copy option can be enabled via system configuration. Lin Ming, Bob Moore.
6774
6775 Fixed two problems with AcpiReallocateRootTable during the root table
6776 copy.
6777 When copying the root table to the new allocation, the length used was
6778 incorrect. The new size was used instead of the current table size,
6779 meaning
6780 too much data was copied. Also, the count of available slots for ACPI
6781 tables
6782 was not set correctly. Alexey Starikovskiy, Bob Moore.
6783
6784 Example Code and Data Size: These are the sizes for the OS-independent
6785 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6786 debug version of the code includes the debug output trace mechanism and
6787 has a
6788 much larger code and data size.
6789
6790 Previous Release:
6791 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total
6792 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total
6793 Current Release:
6794 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total
6795 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total
6796
6797 2) iASL Compiler/Disassembler and Tools:
6798
6799 iASL: Implement limited typechecking for values returned from predefined
6800 control methods. The type of any returned static (unnamed) object is now
6801 validated. For example, Return(1). ACPICA BZ 786.
6802
6803 iASL: Fixed a predefined name object verification regression. Fixes a
6804 problem
6805 introduced in version 20100304. An error is incorrectly generated if a
6806 predefined name is declared as a static named object with a value defined
6807 using the keywords "Zero", "One", or "Ones". Lin Ming.
6808
6809 iASL: Added Windows 7 support for the -g option (get local ACPI tables)
6810 by
6811 reducing the requested registry access rights. ACPICA BZ 842.
6812
6813 Disassembler: fixed a possible fault when generating External()
6814 statements.
6815 Introduced in commit ae7d6fd: Properly handle externals with parent-
6816 prefix
6817 (carat). Fixes a string length allocation calculation. Lin Ming.
6818
6819 ----------------------------------------
6820 04 March 2010. Summary of changes for version 20100304:
6821
6822 1) ACPI CA Core Subsystem:
6823
6824 Fixed a possible problem with the AML Mutex handling function
6825 AcpiExReleaseMutex where the function could fault under the very rare
6826 condition when the interpreter has blocked, the interpreter lock is
6827 released,
6828 the interpreter is then reentered via the same thread, and attempts to
6829 acquire an AML mutex that was previously acquired. FreeBSD report 140979.
6830 Lin
6831 Ming.
6832
6833 Implemented additional configuration support for the AML "Debug Object".
6834 Output from the debug object can now be enabled via a global variable,
6835 AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
6836 debugging.
6837 This debug output is now available in the release version of ACPICA
6838 instead
6839 of just the debug version. Also, the entire debug output module can now
6840 be
6841 configured out of the ACPICA build if desired. One new file added,
6842 executer/exdebug.c. Lin Ming, Bob Moore.
6843
6844 Added header support for the ACPI MCHI table (Management Controller Host
6845 Interface Table). This table was added in ACPI 4.0, but the defining
6846 document
6847 has only recently become available.
6848
6849 Standardized output of integer values for ACPICA warnings/errors. Always
6850 use
6851 0x prefix for hex output, always use %u for unsigned integer decimal
6852 output.
6853 Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
6854 400
6855 invocations.) These invocations were converted from the original
6856 ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
6857
6858 Example Code and Data Size: These are the sizes for the OS-independent
6859 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6860 debug version of the code includes the debug output trace mechanism and
6861 has a
6862 much larger code and data size.
6863
6864 Previous Release:
6865 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total
6866 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total
6867 Current Release:
6868 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total
6869 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total
6870
6871 2) iASL Compiler/Disassembler and Tools:
6872
6873 iASL: Implemented typechecking support for static (non-control method)
6874 predefined named objects that are declared with the Name() operator. For
6875 example, the type of this object is now validated to be of type Integer:
6876 Name(_BBN, 1). This change migrates the compiler to using the core
6877 predefined
6878 name table instead of maintaining a local version. Added a new file,
6879 aslpredef.c. ACPICA BZ 832.
6880
6881 Disassembler: Added support for the ACPI 4.0 MCHI table.
6882
6883 ----------------------------------------
6884 21 January 2010. Summary of changes for version 20100121:
6885
6886 1) ACPI CA Core Subsystem:
6887
6888 Added the 2010 copyright to all module headers and signons. This affects
6889 virtually every file in the ACPICA core subsystem, the iASL compiler, the
6890 tools/utilities, and the test suites.
6891
6892 Implemented a change to the AcpiGetDevices interface to eliminate
6893 unnecessary
6894 invocations of the _STA method. In the case where a specific _HID is
6895 requested, do not run _STA until a _HID match is found. This eliminates
6896 potentially dozens of _STA calls during a search for a particular
6897 device/HID,
6898 which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
6899
6900 Implemented an additional repair for predefined method return values.
6901 Attempt
6902 to repair unexpected NULL elements within returned Package objects.
6903 Create
6904 an
6905 Integer of value zero, a NULL String, or a zero-length Buffer as
6906 appropriate.
6907 ACPICA BZ 818. Lin Ming, Bob Moore.
6908
6909 Removed the obsolete ACPI_INTEGER data type. This type was introduced as
6910 the
6911 code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
6912 (with
6913 64-bit AML integers). It is now obsolete and this change removes it from
6914 the
6915 ACPICA code base, replaced by UINT64. The original typedef has been
6916 retained
6917 for now for compatibility with existing device driver code. ACPICA BZ
6918 824.
6919
6920 Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
6921 in
6922 the parse tree object.
6923
6924 Added additional warning options for the gcc-4 generation. Updated the
6925 source
6926 accordingly. This includes some code restructuring to eliminate
6927 unreachable
6928 code, elimination of some gotos, elimination of unused return values,
6929 some
6930 additional casting, and removal of redundant declarations.
6931
6932 Example Code and Data Size: These are the sizes for the OS-independent
6933 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6934 debug version of the code includes the debug output trace mechanism and
6935 has a
6936 much larger code and data size.
6937
6938 Previous Release:
6939 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total
6940 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total
6941 Current Release:
6942 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total
6943 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total
6944
6945 2) iASL Compiler/Disassembler and Tools:
6946
6947 No functional changes for this release.
6948
6949 ----------------------------------------
6950 14 December 2009. Summary of changes for version 20091214:
6951
6952 1) ACPI CA Core Subsystem:
6953
6954 Enhanced automatic data type conversions for predefined name repairs.
6955 This
6956 change expands the automatic repairs/conversions for predefined name
6957 return
6958 values to make Integers, Strings, and Buffers fully interchangeable.
6959 Also,
6960 a
6961 Buffer can be converted to a Package of Integers if necessary. The
6962 nsrepair.c
6963 module was completely restructured. Lin Ming, Bob Moore.
6964
6965 Implemented automatic removal of null package elements during predefined
6966 name
6967 repairs. This change will automatically remove embedded and trailing NULL
6968 package elements from returned package objects that are defined to
6969 contain
6970 a
6971 variable number of sub-packages. The driver is then presented with a
6972 package
6973 with no null elements to deal with. ACPICA BZ 819.
6974
6975 Implemented a repair for the predefined _FDE and _GTM names. The expected
6976 return value for both names is a Buffer of 5 DWORDs. This repair fixes
6977 two
6978 possible problems (both seen in the field), where a package of integers
6979 is
6980 returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
6981 Kim.
6982
6983 Implemented additional module-level code support. This change will
6984 properly
6985 execute module-level code that is not at the root of the namespace (under
6986 a
6987 Device object, etc.). Now executes the code within the current scope
6988 instead
6989 of the root. ACPICA BZ 762. Lin Ming.
6990
6991 Fixed possible mutex acquisition errors when running _REG methods. Fixes
6992 a
6993 problem where mutex errors can occur when running a _REG method that is
6994 in
6995 the same scope as a method-defined operation region or an operation
6996 region
6997 under a module-level IF block. This type of code is rare, so the problem
6998 has
6999 not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
7000
7001 Fixed a possible memory leak during module-level code execution. An
7002 object
7003 could be leaked for each block of executed module-level code if the
7004 interpreter slack mode is enabled This change deletes any implicitly
7005 returned
7006 object from the module-level code block. Lin Ming.
7007
7008 Removed messages for successful predefined repair(s). The repair
7009 mechanism
7010 was considered too wordy. Now, messages are only unconditionally emitted
7011 if
7012 the return object cannot be repaired. Existing messages for successful
7013 repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
7014 827.
7015
7016 Example Code and Data Size: These are the sizes for the OS-independent
7017 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7018 debug version of the code includes the debug output trace mechanism and
7019 has a
7020 much larger code and data size.
7021
7022 Previous Release:
7023 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total
7024 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total
7025 Current Release:
7026 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total
7027 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total
7028
7029 2) iASL Compiler/Disassembler and Tools:
7030
7031 iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
7032 files
7033 were no longer automatically removed at the termination of the compile.
7034
7035 acpiexec: Implemented the -f option to specify default region fill value.
7036 This option specifies the value used to initialize buffers that simulate
7037 operation regions. Default value is zero. Useful for debugging problems
7038 that
7039 depend on a specific initial value for a region or field.
7040
7041 ----------------------------------------
7042 12 November 2009. Summary of changes for version 20091112:
7043
7044 1) ACPI CA Core Subsystem:
7045
7046 Implemented a post-order callback to AcpiWalkNamespace. The existing
7047 interface only has a pre-order callback. This change adds an additional
7048 parameter for a post-order callback which will be more useful for bus
7049 scans.
7050 ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
7051
7052 Modified the behavior of the operation region memory mapping cache for
7053 SystemMemory. Ensure that the memory mappings created for operation
7054 regions
7055 do not cross 4K page boundaries. Crossing a page boundary while mapping
7056 regions can cause kernel warnings on some hosts if the pages have
7057 different
7058 attributes. Such regions are probably BIOS bugs, and this is the
7059 workaround.
7060 Linux BZ 14445. Lin Ming.
7061
7062 Implemented an automatic repair for predefined methods that must return
7063 sorted lists. This change will repair (by sorting) packages returned by
7064 _ALR,
7065 _PSS, and _TSS. Drivers can now assume that the packages are correctly
7066 sorted
7067 and do not contain NULL package elements. Adds one new file,
7068 namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
7069
7070 Fixed a possible fault during predefined name validation if a return
7071 Package
7072 object contains NULL elements. Also adds a warning if a NULL element is
7073 followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
7074 may
7075 include repair or removal of all such NULL elements where possible.
7076
7077 Implemented additional module-level executable AML code support. This
7078 change
7079 will execute module-level code that is not at the root of the namespace
7080 (under a Device object, etc.) at table load time. Module-level executable
7081 AML
7082 code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
7083
7084 Implemented a new internal function to create Integer objects. This
7085 function
7086 simplifies miscellaneous object creation code. ACPICA BZ 823.
7087
7088 Reduced the severity of predefined repair messages, Warning to Info.
7089 Since
7090 the object was successfully repaired, a warning is too severe. Reduced to
7091 an
7092 info message for now. These messages may eventually be changed to debug-
7093 only.
7094 ACPICA BZ 812.
7095
7096 Example Code and Data Size: These are the sizes for the OS-independent
7097 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7098 debug version of the code includes the debug output trace mechanism and
7099 has a
7100 much larger code and data size.
7101
7102 Previous Release:
7103 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total
7104 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total
7105 Current Release:
7106 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total
7107 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total
7108
7109 2) iASL Compiler/Disassembler and Tools:
7110
7111 iASL: Implemented Switch() with While(1) so that Break works correctly.
7112 This
7113 change correctly implements the Switch operator with a surrounding
7114 While(1)
7115 so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
7116
7117 iASL: Added a message if a package initializer list is shorter than
7118 package
7119 length. Adds a new remark for a Package() declaration if an initializer
7120 list
7121 exists, but is shorter than the declared length of the package. Although
7122 technically legal, this is probably a coding error and it is seen in the
7123 field. ACPICA BZ 815. Lin Ming, Bob Moore.
7124
7125 iASL: Fixed a problem where the compiler could fault after the maximum
7126 number
7127 of errors was reached (200).
7128
7129 acpixtract: Fixed a possible warning for pointer cast if the compiler
7130 warning
7131 level set very high.
7132
7133 ----------------------------------------
7134 13 October 2009. Summary of changes for version 20091013:
7135
7136 1) ACPI CA Core Subsystem:
7137
7138 Fixed a problem where an Operation Region _REG method could be executed
7139 more
7140 than once. If a custom address space handler is installed by the host
7141 before
7142 the "initialize operation regions" phase of the ACPICA initialization,
7143 any
7144 _REG methods for that address space could be executed twice. This change
7145 fixes the problem. ACPICA BZ 427. Lin Ming.
7146
7147 Fixed a possible memory leak for the Scope() ASL operator. When the exact
7148 invocation of "Scope(\)" is executed (change scope to root), one internal
7149 operand object was leaked. Lin Ming.
7150
7151 Implemented a run-time repair for the _MAT predefined method. If the _MAT
7152 return value is defined as a Field object in the AML, and the field
7153 size is less than or equal to the default width of an integer (32 or
7154 64),_MAT
7155 can incorrectly return an Integer instead of a Buffer. ACPICA now
7156 automatically repairs this problem. ACPICA BZ 810.
7157
7158 Implemented a run-time repair for the _BIF and _BIX predefined methods.
7159 The
7160 "OEM Information" field is often incorrectly returned as an Integer with
7161 value zero if the field is not supported by the platform. This is due to
7162 an
7163 ambiguity in the ACPI specification. The field should always be a string.
7164 ACPICA now automatically repairs this problem by returning a NULL string
7165 within the returned Package. ACPICA BZ 807.
7166
7167 Example Code and Data Size: These are the sizes for the OS-independent
7168 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7169 debug version of the code includes the debug output trace mechanism and
7170 has a
7171 much larger code and data size.
7172
7173 Previous Release:
7174 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total
7175 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total
7176 Current Release:
7177 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total
7178 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total
7179
7180 2) iASL Compiler/Disassembler and Tools:
7181
7182 Disassembler: Fixed a problem where references to external symbols that
7183 contained one or more parent-prefixes (carats) were not handled
7184 correctly,
7185 possibly causing a fault. ACPICA BZ 806. Lin Ming.
7186
7187 Disassembler: Restructured the code so that all functions that handle
7188 external symbols are in a single module. One new file is added,
7189 common/dmextern.c.
7190
7191 AML Debugger: Added a max count argument for the Batch command (which
7192 executes multiple predefined methods within the namespace.)
7193
7194 iASL: Updated the compiler documentation (User Reference.) Available at
7195 http://www.acpica.org/documentation/. ACPICA BZ 750.
7196
7197 AcpiXtract: Updated for Lint and other formatting changes. Close all open
7198 files.
7199
7200 ----------------------------------------
7201 03 September 2009. Summary of changes for version 20090903:
7202
7203 1) ACPI CA Core Subsystem:
7204
7205 For Windows Vista compatibility, added the automatic execution of an _INI
7206 method located at the namespace root (\_INI). This method is executed at
7207 table load time. This support is in addition to the automatic execution
7208 of
7209 \_SB._INI. Lin Ming.
7210
7211 Fixed a possible memory leak in the interpreter for AML package objects
7212 if
7213 the package initializer list is longer than the defined size of the
7214 package.
7215 This apparently can only happen if the BIOS changes the package size on
7216 the
7217 fly (seen in a _PSS object), as ASL compilers do not allow this. The
7218 interpreter will truncate the package to the defined size (and issue an
7219 error
7220 message), but previously could leave the extra objects undeleted if they
7221 were
7222 pre-created during the argument processing (such is the case if the
7223 package
7224 consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
7225
7226 Fixed a problem seen when a Buffer or String is stored to itself via ASL.
7227 This has been reported in the field. Previously, ACPICA would zero out
7228 the
7229 buffer/string. Now, the operation is treated as a noop. Provides Windows
7230 compatibility. ACPICA BZ 803. Lin Ming.
7231
7232 Removed an extraneous error message for ASL constructs of the form
7233 Store(LocalX,LocalX) when LocalX is uninitialized. These curious
7234 statements
7235 are seen in many BIOSs and are once again treated as NOOPs and no error
7236 is
7237 emitted when they are encountered. ACPICA BZ 785.
7238
7239 Fixed an extraneous warning message if a _DSM reserved method returns a
7240 Package object. _DSM can return any type of object, so validation on the
7241 return type cannot be performed. ACPICA BZ 802.
7242
7243 Example Code and Data Size: These are the sizes for the OS-independent
7244 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7245 debug version of the code includes the debug output trace mechanism and
7246 has a
7247 much larger code and data size.
7248
7249 Previous Release:
7250 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total
7251 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total
7252 Current Release:
7253 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total
7254 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total
7255
7256 2) iASL Compiler/Disassembler and Tools:
7257
7258 iASL: Fixed a problem with the use of the Alias operator and Resource
7259 Templates. The correct alias is now constructed and no error is emitted.
7260 ACPICA BZ 738.
7261
7262 iASL: Implemented the -I option to specify additional search directories
7263 for
7264 include files. Allows multiple additional search paths for include files.
7265 Directories are searched in the order specified on the command line
7266 (after
7267 the local directory is searched.) ACPICA BZ 800.
7268
7269 iASL: Fixed a problem where the full pathname for include files was not
7270 emitted for warnings/errors. This caused the IDE support to not work
7271 properly. ACPICA BZ 765.
7272
7273 iASL: Implemented the -@ option to specify a Windows-style response file
7274 containing additional command line options. ACPICA BZ 801.
7275
7276 AcpiExec: Added support to load multiple AML files simultaneously (such
7277 as
7278 a
7279 DSDT and multiple SSDTs). Also added support for wildcards within the AML
7280 pathname. These features allow all machine tables to be easily loaded and
7281 debugged together. ACPICA BZ 804.
7282
7283 Disassembler: Added missing support for disassembly of HEST table Error
7284 Bank
7285 subtables.
7286
7287 ----------------------------------------
7288 30 July 2009. Summary of changes for version 20090730:
7289
7290 The ACPI 4.0 implementation for ACPICA is complete with this release.
7291
7292 1) ACPI CA Core Subsystem:
7293
7294 ACPI 4.0: Added header file support for all new and changed ACPI tables.
7295 Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
7296 new
7297 for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
7298 BERT,
7299 EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
7300 There
7301 have been some ACPI 4.0 changes to other existing tables. Split the large
7302 actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
7303
7304 ACPI 4.0: Implemented predefined name validation for all new names. There
7305 are
7306 31 new names in ACPI 4.0. The predefined validation module was split into
7307 two
7308 files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
7309
7310 Implemented support for so-called "module-level executable code". This is
7311 executable AML code that exists outside of any control method and is
7312 intended
7313 to be executed at table load time. Although illegal since ACPI 2.0, this
7314 type
7315 of code still exists and is apparently still being created. Blocks of
7316 this
7317 code are now detected and executed as intended. Currently, the code
7318 blocks
7319 must exist under either an If, Else, or While construct; these are the
7320 typical cases seen in the field. ACPICA BZ 762. Lin Ming.
7321
7322 Implemented an automatic dynamic repair for predefined names that return
7323 nested Package objects. This applies to predefined names that are defined
7324 to
7325 return a variable-length Package of sub-packages. If the number of sub-
7326 packages is one, BIOS code is occasionally seen that creates a simple
7327 single
7328 package with no sub-packages. This code attempts to fix the problem by
7329 wrapping a new package object around the existing package. These methods
7330 can
7331 be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
7332 BZ
7333 790.
7334
7335 Fixed a regression introduced in 20090625 for the AcpiGetDevices
7336 interface.
7337 The _HID/_CID matching was broken and no longer matched IDs correctly.
7338 ACPICA
7339 BZ 793.
7340
7341 Fixed a problem with AcpiReset where the reset would silently fail if the
7342 register was one of the protected I/O ports. AcpiReset now bypasses the
7343 port
7344 validation mechanism. This may eventually be driven into the
7345 AcpiRead/Write
7346 interfaces.
7347
7348 Fixed a regression related to the recent update of the AcpiRead/Write
7349 interfaces. A sleep/suspend could fail if the optional PM2 Control
7350 register
7351 does not exist during an attempt to write the Bus Master Arbitration bit.
7352 (However, some hosts already delete the code that writes this bit, and
7353 the
7354 code may in fact be obsolete at this date.) ACPICA BZ 799.
7355
7356 Fixed a problem where AcpiTerminate could fault if inadvertently called
7357 twice
7358 in succession. ACPICA BZ 795.
7359
7360 Example Code and Data Size: These are the sizes for the OS-independent
7361 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7362 debug version of the code includes the debug output trace mechanism and
7363 has a
7364 much larger code and data size.
7365
7366 Previous Release:
7367 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total
7368 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total
7369 Current Release:
7370 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total
7371 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total
7372
7373 2) iASL Compiler/Disassembler and Tools:
7374
7375 ACPI 4.0: Implemented disassembler support for all new ACPI tables and
7376 changes to existing tables. ACPICA BZ 775.
7377
7378 ----------------------------------------
7379 25 June 2009. Summary of changes for version 20090625:
7380
7381 The ACPI 4.0 Specification was released on June 16 and is available at
7382 www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
7383 continue for the next few releases.
7384
7385 1) ACPI CA Core Subsystem:
7386
7387 ACPI 4.0: Implemented interpreter support for the IPMI operation region
7388 address space. Includes support for bi-directional data buffers and an
7389 IPMI
7390 address space handler (to be installed by an IPMI device driver.) ACPICA
7391 BZ
7392 773. Lin Ming.
7393
7394 ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
7395 Includes
7396 support in both the header files and the disassembler.
7397
7398 Completed a major update for the AcpiGetObjectInfo external interface.
7399 Changes include:
7400 - Support for variable, unlimited length HID, UID, and CID strings.
7401 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
7402 etc.)
7403 - Call the _SxW power methods on behalf of a device object.
7404 - Determine if a device is a PCI root bridge.
7405 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
7406 These changes will require an update to all callers of this interface.
7407 See
7408 the updated ACPICA Programmer Reference for details. One new source file
7409 has
7410 been added - utilities/utids.c. ACPICA BZ 368, 780.
7411
7412 Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
7413 transfers. The Value parameter has been extended from 32 bits to 64 bits
7414 in
7415 order to support new ACPI 4.0 tables. These changes will require an
7416 update
7417 to
7418 all callers of these interfaces. See the ACPICA Programmer Reference for
7419 details. ACPICA BZ 768.
7420
7421 Fixed several problems with AcpiAttachData. The handler was not invoked
7422 when
7423 the host node was deleted. The data sub-object was not automatically
7424 deleted
7425 when the host node was deleted. The interface to the handler had an
7426 unused
7427 parameter, this was removed. ACPICA BZ 778.
7428
7429 Enhanced the function that dumps ACPI table headers. All non-printable
7430 characters in the string fields are now replaced with '?' (Signature,
7431 OemId,
7432 OemTableId, and CompilerId.) ACPI tables with non-printable characters in
7433 these fields are occasionally seen in the field. ACPICA BZ 788.
7434
7435 Fixed a problem with predefined method repair code where the code that
7436 attempts to repair/convert an object of incorrect type is only executed
7437 on
7438 the first time the predefined method is called. The mechanism that
7439 disables
7440 warnings on subsequent calls was interfering with the repair mechanism.
7441 ACPICA BZ 781.
7442
7443 Fixed a possible memory leak in the predefined validation/repair code
7444 when
7445 a
7446 buffer is automatically converted to an expected string object.
7447
7448 Removed obsolete 16-bit files from the distribution and from the current
7449 git
7450 tree head. ACPICA BZ 776.
7451
7452 Example Code and Data Size: These are the sizes for the OS-independent
7453 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7454 debug version of the code includes the debug output trace mechanism and
7455 has a
7456 much larger code and data size.
7457
7458 Previous Release:
7459 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total
7460 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total
7461 Current Release:
7462 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total
7463 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total
7464
7465 2) iASL Compiler/Disassembler and Tools:
7466
7467 ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
7468 operation region keyword. ACPICA BZ 771, 772. Lin Ming.
7469
7470 ACPI 4.0: iASL - implemented compile-time validation support for all new
7471 predefined names and control methods (31 total). ACPICA BZ 769.
7472
7473 ----------------------------------------
7474 21 May 2009. Summary of changes for version 20090521:
7475
7476 1) ACPI CA Core Subsystem:
7477
7478 Disabled the preservation of the SCI enable bit in the PM1 control
7479 register.
7480 The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
7481 to
7482 be
7483 a "preserved" bit - "OSPM always preserves this bit position", section
7484 4.7.3.2.1. However, some machines fail if this bit is in fact preserved
7485 because the bit needs to be explicitly set by the OS as a workaround. No
7486 machines fail if the bit is not preserved. Therefore, ACPICA no longer
7487 attempts to preserve this bit.
7488
7489 Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
7490 incorrectly formed _PRT package could cause a fault. Added validation to
7491 ensure that each package element is actually a sub-package.
7492
7493 Implemented a new interface to install or override a single control
7494 method,
7495 AcpiInstallMethod. This interface is useful when debugging in order to
7496 repair
7497 an existing method or to install a missing method without having to
7498 override
7499 the entire ACPI table. See the ACPICA Programmer Reference for use and
7500 examples. Lin Ming, Bob Moore.
7501
7502 Fixed several reference count issues with the DdbHandle object that is
7503 created from a Load or LoadTable operator. Prevent premature deletion of
7504 the
7505 object. Also, mark the object as invalid once the table has been
7506 unloaded.
7507 This is needed because the handle itself may not be deleted after the
7508 table
7509 unload, depending on whether it has been stored in a named object by the
7510 caller. Lin Ming.
7511
7512 Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
7513 mutexes of the same sync level are acquired but then not released in
7514 strict
7515 opposite order, the internally maintained Current Sync Level becomes
7516 confused
7517 and can cause subsequent execution errors. ACPICA BZ 471.
7518
7519 Changed the allowable release order for ASL mutex objects. The ACPI 4.0
7520 specification has been changed to make the SyncLevel for mutex objects
7521 more
7522 useful. When releasing a mutex, the SyncLevel of the mutex must now be
7523 the
7524 same as the current sync level. This makes more sense than the previous
7525 rule
7526 (SyncLevel less than or equal). This change updates the code to match the
7527 specification.
7528
7529 Fixed a problem with the local version of the AcpiOsPurgeCache function.
7530 The
7531 (local) cache must be locked during all cache object deletions. Andrew
7532 Baumann.
7533
7534 Updated the Load operator to use operation region interfaces. This
7535 replaces
7536 direct memory mapping with region access calls. Now, all region accesses
7537 go
7538 through the installed region handler as they should.
7539
7540 Simplified and optimized the NsGetNextNode function. Reduced parameter
7541 count
7542 and reduced code for this frequently used function.
7543
7544 Example Code and Data Size: These are the sizes for the OS-independent
7545 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7546 debug version of the code includes the debug output trace mechanism and
7547 has a
7548 much larger code and data size.
7549
7550 Previous Release:
7551 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total
7552 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total
7553 Current Release:
7554 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total
7555 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total
7556
7557 2) iASL Compiler/Disassembler and Tools:
7558
7559 Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
7560 problems
7561 with sub-table disassembly and handling invalid sub-tables. Attempt
7562 recovery
7563 after an invalid sub-table ID.
7564
7565 ----------------------------------------
7566 22 April 2009. Summary of changes for version 20090422:
7567
7568 1) ACPI CA Core Subsystem:
7569
7570 Fixed a compatibility issue with the recently released I/O port
7571 protection
7572 mechanism. For windows compatibility, 1) On a port protection violation,
7573 simply ignore the request and do not return an exception (allow the
7574 control
7575 method to continue execution.) 2) If only part of the request overlaps a
7576 protected port, read/write the individual ports that are not protected.
7577 Linux
7578 BZ 13036. Lin Ming
7579
7580 Enhanced the execution of the ASL/AML BreakPoint operator so that it
7581 actually
7582 breaks into the AML debugger if the debugger is present. This matches the
7583 ACPI-defined behavior.
7584
7585 Fixed several possible warnings related to the use of the configurable
7586 ACPI_THREAD_ID. This type can now be configured as either an integer or a
7587 pointer with no warnings. Also fixes several warnings in printf-like
7588 statements for the 64-bit build when the type is configured as a pointer.
7589 ACPICA BZ 766, 767.
7590
7591 Fixed a number of possible warnings when compiling with gcc 4+ (depending
7592 on
7593 warning options.) Examples include printf formats, aliasing, unused
7594 globals,
7595 missing prototypes, missing switch default statements, use of non-ANSI
7596 library functions, use of non-ANSI constructs. See generate/unix/Makefile
7597 for
7598 a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
7599
7600 Example Code and Data Size: These are the sizes for the OS-independent
7601 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7602 debug version of the code includes the debug output trace mechanism and
7603 has a
7604 much larger code and data size.
7605
7606 Previous Release:
7607 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total
7608 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total
7609 Current Release:
7610 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total
7611 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total
7612
7613 2) iASL Compiler/Disassembler and Tools:
7614
7615 iASL: Fixed a generation warning from Bison 2.3 and fixed several
7616 warnings
7617 on
7618 the 64-bit build.
7619
7620 iASL: Fixed a problem where the Unix/Linux versions of the compiler could
7621 not
7622 correctly digest Windows/DOS formatted files (with CR/LF).
7623
7624 iASL: Added a new option for "quiet mode" (-va) that produces only the
7625 compilation summary, not individual errors and warnings. Useful for large
7626 batch compilations.
7627
7628 AcpiExec: Implemented a new option (-z) to enable a forced
7629 semaphore/mutex
7630 timeout that can be used to detect hang conditions during execution of
7631 AML
7632 code (includes both internal semaphores and AML-defined mutexes and
7633 events.)
7634
7635 Added new makefiles for the generation of acpica in a generic unix-like
7636 environment. These makefiles are intended to generate the acpica tools
7637 and
7638 utilities from the original acpica git source tree structure.
7639
7640 Test Suites: Updated and cleaned up the documentation files. Updated the
7641 copyrights to 2009, affecting all source files. Use the new version of
7642 iASL
7643 with quiet mode. Increased the number of available semaphores in the
7644 Windows
7645 OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
7646 added
7647 an alternate implementation of the semaphore timeout to allow aslts to
7648 execute fully on Cygwin.
7649
7650 ----------------------------------------
7651 20 March 2009. Summary of changes for version 20090320:
7652
7653 1) ACPI CA Core Subsystem:
7654
7655 Fixed a possible race condition between AcpiWalkNamespace and dynamic
7656 table
7657 unloads. Added a reader/writer locking mechanism to allow multiple
7658 concurrent
7659 namespace walks (readers), but block a dynamic table unload until it can
7660 gain
7661 exclusive write access to the namespace. This fixes a problem where a
7662 table
7663 unload could (possibly catastrophically) delete the portion of the
7664 namespace
7665 that is currently being examined by a walk. Adds a new file, utlock.c,
7666 that
7667 implements the reader/writer lock mechanism. ACPICA BZ 749.
7668
7669 Fixed a regression introduced in version 20090220 where a change to the
7670 FADT
7671 handling could cause the ACPICA subsystem to access non-existent I/O
7672 ports.
7673
7674 Modified the handling of FADT register and table (FACS/DSDT) addresses.
7675 The
7676 FADT can contain both 32-bit and 64-bit versions of these addresses.
7677 Previously, the 64-bit versions were favored, meaning that if both 32 and
7678 64
7679 versions were valid, but not equal, the 64-bit version was used. This was
7680 found to cause some machines to fail. Now, in this case, the 32-bit
7681 version
7682 is used instead. This now matches the Windows behavior.
7683
7684 Implemented a new mechanism to protect certain I/O ports. Provides
7685 Microsoft
7686 compatibility and protects the standard PC I/O ports from access via AML
7687 code. Adds a new file, hwvalid.c
7688
7689 Fixed a possible extraneous warning message from the FADT support. The
7690 message warns of a 32/64 length mismatch between the legacy and GAS
7691 definitions for a register.
7692
7693 Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
7694 is
7695 made obsolete by the port protection mechanism above. It was previously
7696 used
7697 to validate the entire address range of an operation region, which could
7698 be
7699 incorrect if the range included illegal ports, but fields within the
7700 operation region did not actually access those ports. Validation is now
7701 performed on a per-field basis instead of the entire region.
7702
7703 Modified the handling of the PM1 Status Register ignored bit (bit 11.)
7704 Ignored bits must be "preserved" according to the ACPI spec. Usually,
7705 this
7706 means a read/modify/write when writing to the register. However, for
7707 status
7708 registers, writing a one means clear the event. Writing a zero means
7709 preserve
7710 the event (do not clear.) This behavior is clarified in the ACPI 4.0
7711 spec,
7712 and the ACPICA code now simply always writes a zero to the ignored bit.
7713
7714 Modified the handling of ignored bits for the PM1 A/B Control Registers.
7715 As
7716 per the ACPI specification, for the control registers, preserve
7717 (read/modify/write) all bits that are defined as either reserved or
7718 ignored.
7719
7720 Updated the handling of write-only bits in the PM1 A/B Control Registers.
7721 When reading the register, zero the write-only bits as per the ACPI spec.
7722 ACPICA BZ 443. Lin Ming.
7723
7724 Removed "Linux" from the list of supported _OSI strings. Linux no longer
7725 wants to reply true to this request. The Windows strings are the only
7726 paths
7727 through the AML that are tested and known to work properly.
7728
7729 Previous Release:
7730 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total
7731 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total
7732 Current Release:
7733 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total
7734 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total
7735
7736 2) iASL Compiler/Disassembler and Tools:
7737
7738 Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
7739 and
7740 aetables.c
7741
7742 ----------------------------------------
7743 20 February 2009. Summary of changes for version 20090220:
7744
7745 1) ACPI CA Core Subsystem:
7746
7747 Optimized the ACPI register locking. Removed locking for reads from the
7748 ACPI
7749 bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
7750 is
7751 not required when reading the single-bit registers. The
7752 AcpiGetRegisterUnlocked function is no longer needed and has been
7753 removed.
7754 This will improve performance for reads on these registers. ACPICA BZ
7755 760.
7756
7757 Fixed the parameter validation for AcpiRead/Write. Now return
7758 AE_BAD_PARAMETER if the input register pointer is null, and
7759 AE_BAD_ADDRESS
7760 if
7761 the register has an address of zero. Previously, these cases simply
7762 returned
7763 AE_OK. For optional registers such as PM1B status/enable/control, the
7764 caller
7765 should check for a valid register address before calling. ACPICA BZ 748.
7766
7767 Renamed the external ACPI bit register access functions. Renamed
7768 AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
7769 functions. The new names are AcpiReadBitRegister and
7770 AcpiWriteBitRegister.
7771 Also, restructured the code for these functions by simplifying the code
7772 path
7773 and condensing duplicate code to reduce code size.
7774
7775 Added new functions to transparently handle the possibly split PM1 A/B
7776 registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
7777 functions
7778 now handle the split registers for PM1 Status, Enable, and Control.
7779 ACPICA
7780 BZ
7781 746.
7782
7783 Added a function to handle the PM1 control registers,
7784 AcpiHwWritePm1Control.
7785 This function writes both of the PM1 control registers (A/B). These
7786 registers
7787 are different than the PM1 A/B status and enable registers in that
7788 different
7789 values can be written to the A/B registers. Most notably, the SLP_TYP
7790 bits
7791 can be different, as per the values returned from the _Sx predefined
7792 methods.
7793
7794 Removed an extra register write within AcpiHwClearAcpiStatus. This
7795 function
7796 was writing an optional PM1B status register twice. The existing call to
7797 the
7798 low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
7799 A/B
7800 register. ACPICA BZ 751.
7801
7802 Split out the PM1 Status registers from the FADT. Added new globals for
7803 these
7804 registers (A/B), similar to the way the PM1 Enable registers are handled.
7805 Instead of overloading the FADT Event Register blocks. This makes the
7806 code
7807 clearer and less prone to error.
7808
7809 Fixed the warning message for when the platform contains too many ACPI
7810 tables
7811 for the default size of the global root table data structure. The
7812 calculation
7813 for the truncation value was incorrect.
7814
7815 Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
7816 obsolete macro, since it is now a simple reference to ->common.type.
7817 There
7818 were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
7819
7820 Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
7821 TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
7822 simply SLEEP_TYPE. ACPICA BZ 754.
7823
7824 Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
7825 function is only needed on 64-bit host operating systems and is thus not
7826 included for 32-bit hosts.
7827
7828 Debug output: print the input and result for invocations of the _OSI
7829 reserved
7830 control method via the ACPI_LV_INFO debug level. Also, reduced some of
7831 the
7832 verbosity of this debug level. Len Brown.
7833
7834 Example Code and Data Size: These are the sizes for the OS-independent
7835 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7836 debug version of the code includes the debug output trace mechanism and
7837 has a
7838 much larger code and data size.
7839
7840 Previous Release:
7841 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total
7842 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total
7843 Current Release:
7844 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total
7845 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total
7846
7847 2) iASL Compiler/Disassembler and Tools:
7848
7849 Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
7850 various legal performance profiles.
7851
7852 ----------------------------------------
7853 23 January 2009. Summary of changes for version 20090123:
7854
7855 1) ACPI CA Core Subsystem:
7856
7857 Added the 2009 copyright to all module headers and signons. This affects
7858 virtually every file in the ACPICA core subsystem, the iASL compiler, and
7859 the tools/utilities.
7860
7861 Implemented a change to allow the host to override any ACPI table,
7862 including
7863 dynamically loaded tables. Previously, only the DSDT could be replaced by
7864 the
7865 host. With this change, the AcpiOsTableOverride interface is called for
7866 each
7867 table found in the RSDT/XSDT during ACPICA initialization, and also
7868 whenever
7869 a table is dynamically loaded via the AML Load operator.
7870
7871 Updated FADT flag definitions, especially the Boot Architecture flags.
7872
7873 Debugger: For the Find command, automatically pad the input ACPI name
7874 with
7875 underscores if the name is shorter than 4 characters. This enables a
7876 match
7877 with the actual namespace entry which is itself padded with underscores.
7878
7879 Example Code and Data Size: These are the sizes for the OS-independent
7880 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7881 debug version of the code includes the debug output trace mechanism and
7882 has a
7883 much larger code and data size.
7884
7885 Previous Release:
7886 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total
7887 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total
7888 Current Release:
7889 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total
7890 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total
7891
7892 2) iASL Compiler/Disassembler and Tools:
7893
7894 Fix build error under Bison-2.4.
7895
7896 Dissasembler: Enhanced FADT support. Added decoding of the Boot
7897 Architecture
7898 flags. Now decode all flags, regardless of the FADT version. Flag output
7899 includes the FADT version which first defined each flag.
7900
7901 The iASL -g option now dumps the RSDT to a file (in addition to the FADT
7902 and
7903 DSDT). Windows only.
7904
7905 ----------------------------------------
7906 04 December 2008. Summary of changes for version 20081204:
7907
7908 1) ACPI CA Core Subsystem:
7909
7910 The ACPICA Programmer Reference has been completely updated and revamped
7911 for
7912 this release. This includes updates to the external interfaces, OSL
7913 interfaces, the overview sections, and the debugger reference.
7914
7915 Several new ACPICA interfaces have been implemented and documented in the
7916 programmer reference:
7917 AcpiReset - Writes the reset value to the FADT-defined reset register.
7918 AcpiDisableAllGpes - Disable all available GPEs.
7919 AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
7920 AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
7921 AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
7922 AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
7923 AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
7924
7925 Most of the public ACPI hardware-related interfaces have been moved to a
7926 new
7927 file, components/hardware/hwxface.c
7928
7929 Enhanced the FADT parsing and low-level ACPI register access: The ACPI
7930 register lengths within the FADT are now used, and the low level ACPI
7931 register access no longer hardcodes the ACPI register lengths. Given that
7932 there may be some risk in actually trusting the FADT register lengths, a
7933 run-
7934 time option was added to fall back to the default hardcoded lengths if
7935 the
7936 FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
7937 option is set to true for now, and a warning is issued if a suspicious
7938 FADT
7939 register length is overridden with the default value.
7940
7941 Fixed a reference count issue in NsRepairObject. This problem was
7942 introduced
7943 in version 20081031 as part of a fix to repair Buffer objects within
7944 Packages. Lin Ming.
7945
7946 Added semaphore support to the Linux/Unix application OS-services layer
7947 (OSL). ACPICA BZ 448. Lin Ming.
7948
7949 Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
7950 will
7951 be implemented in the OSL, or will binary semaphores be used instead.
7952
7953 Example Code and Data Size: These are the sizes for the OS-independent
7954 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7955 debug version of the code includes the debug output trace mechanism and
7956 has a
7957 much larger code and data size.
7958
7959 Previous Release:
7960 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total
7961 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total
7962 Current Release:
7963 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total
7964 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total
7965
7966 2) iASL Compiler/Disassembler and Tools:
7967
7968 iASL: Completed the '-e' option to include additional ACPI tables in
7969 order
7970 to
7971 aid with disassembly and External statement generation. ACPICA BZ 742.
7972 Lin
7973 Ming.
7974
7975 iASL: Removed the "named object in while loop" error. The compiler cannot
7976 determine how many times a loop will execute. ACPICA BZ 730.
7977
7978 Disassembler: Implemented support for FADT revision 2 (MS extension).
7979 ACPICA
7980 BZ 743.
7981
7982 Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
7983 MCFG).
7984
7985 ----------------------------------------
7986 31 October 2008. Summary of changes for version 20081031:
7987
7988 1) ACPI CA Core Subsystem:
7989
7990 Restructured the ACPICA header files into public/private. acpi.h now
7991 includes
7992 only the "public" acpica headers. All other acpica headers are "private"
7993 and
7994 should not be included by acpica users. One new file, accommon.h is used
7995 to
7996 include the commonly used private headers for acpica code generation.
7997 Future
7998 plans include moving all private headers to a new subdirectory.
7999
8000 Implemented an automatic Buffer->String return value conversion for
8001 predefined ACPI methods. For these methods (such as _BIF), added
8002 automatic
8003 conversion for return objects that are required to be a String, but a
8004 Buffer
8005 was found instead. This can happen when reading string battery data from
8006 an
8007 operation region, because it used to be difficult to convert the data
8008 from
8009 buffer to string from within the ASL. Ensures that the host OS is
8010 provided
8011 with a valid null-terminated string. Linux BZ 11822.
8012
8013 Updated the FACS waking vector interfaces. Split
8014 AcpiSetFirmwareWakingVector
8015 into two: one for the 32-bit vector, another for the 64-bit vector. This
8016 is
8017 required because the host OS must setup the wake much differently for
8018 each
8019 vector (real vs. protected mode, etc.) and the interface itself should
8020 not
8021 be
8022 deciding which vector to use. Also, eliminated the
8023 GetFirmwareWakingVector
8024 interface, as it served no purpose (only the firmware reads the vector,
8025 OS
8026 only writes the vector.) ACPICA BZ 731.
8027
8028 Implemented a mechanism to escape infinite AML While() loops. Added a
8029 loop
8030 counter to force exit from AML While loops if the count becomes too
8031 large.
8032 This can occur in poorly written AML when the hardware does not respond
8033 within a while loop and the loop does not implement a timeout. The
8034 maximum
8035 loop count is configurable. A new exception code is returned when a loop
8036 is
8037 broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
8038
8039 Optimized the execution of AML While loops. Previously, a control state
8040 object was allocated and freed for each execution of the loop. The
8041 optimization is to simply reuse the control state for each iteration.
8042 This
8043 speeds up the raw loop execution time by about 5%.
8044
8045 Enhanced the implicit return mechanism. For Windows compatibility, return
8046 an
8047 implicit integer of value zero for methods that contain no executable
8048 code.
8049 Such methods are seen in the field as stubs (presumably), and can cause
8050 drivers to fail if they expect a return value. Lin Ming.
8051
8052 Allow multiple backslashes as root prefixes in namepaths. In a fully
8053 qualified namepath, allow multiple backslash prefixes. This can happen
8054 (and
8055 is seen in the field) because of the use of a double-backslash in strings
8056 (since backslash is the escape character) causing confusion. ACPICA BZ
8057 739
8058 Lin Ming.
8059
8060 Emit a warning if two different FACS or DSDT tables are discovered in the
8061 FADT. Checks if there are two valid but different addresses for the FACS
8062 and
8063 DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
8064
8065 Consolidated the method argument count validation code. Merged the code
8066 that
8067 validates control method argument counts into the predefined validation
8068 module. Eliminates possible multiple warnings for incorrect argument
8069 counts.
8070
8071 Implemented ACPICA example code. Includes code for ACPICA initialization,
8072 handler installation, and calling a control method. Available at
8073 source/tools/examples.
8074
8075 Added a global pointer for FACS table to simplify internal FACS access.
8076 Use
8077 the global pointer instead of using AcpiGetTableByIndex for each FACS
8078 access.
8079 This simplifies the code for the Global Lock and the Firmware Waking
8080 Vector(s).
8081
8082 Example Code and Data Size: These are the sizes for the OS-independent
8083 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8084 debug version of the code includes the debug output trace mechanism and
8085 has a
8086 much larger code and data size.
8087
8088 Previous Release:
8089 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total
8090 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total
8091 Current Release:
8092 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total
8093 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total
8094
8095 2) iASL Compiler/Disassembler and Tools:
8096
8097 iASL: Improved disassembly of external method calls. Added the -e option
8098 to
8099 allow the inclusion of additional ACPI tables to help with the
8100 disassembly
8101 of
8102 method invocations and the generation of external declarations during the
8103 disassembly. Certain external method invocations cannot be disassembled
8104 properly without the actual declaration of the method. Use the -e option
8105 to
8106 include the table where the external method(s) are actually declared.
8107 Most
8108 useful for disassembling SSDTs that make method calls back to the master
8109 DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl
8110 -d
8111 -e dsdt.aml ssdt1.aml
8112
8113 iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
8114 problem where the use of an alias within a namepath would result in a not
8115 found error or cause the compiler to fault. Also now allows forward
8116 references from the Alias operator itself. ACPICA BZ 738.
8117
8118 ----------------------------------------
8119 26 September 2008. Summary of changes for version 20080926:
8120
8121 1) ACPI CA Core Subsystem:
8122
8123 Designed and implemented a mechanism to validate predefined ACPI methods
8124 and
8125 objects. This code validates the predefined ACPI objects (objects whose
8126 names
8127 start with underscore) that appear in the namespace, at the time they are
8128 evaluated. The argument count and the type of the returned object are
8129 validated against the ACPI specification. The purpose of this validation
8130 is
8131 to detect problems with the BIOS-implemented predefined ACPI objects
8132 before
8133 the results are returned to the ACPI-related drivers. Future enhancements
8134 may
8135 include actual repair of incorrect return objects where possible. Two new
8136 files are nspredef.c and acpredef.h.
8137
8138 Fixed a fault in the AML parser if a memory allocation fails during the
8139 Op
8140 completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
8141
8142 Fixed an issue with implicit return compatibility. This change improves
8143 the
8144 implicit return mechanism to be more compatible with the MS interpreter.
8145 Lin
8146 Ming, ACPICA BZ 349.
8147
8148 Implemented support for zero-length buffer-to-string conversions. Allow
8149 zero
8150 length strings during interpreter buffer-to-string conversions. For
8151 example,
8152 during the ToDecimalString and ToHexString operators, as well as implicit
8153 conversions. Fiodor Suietov, ACPICA BZ 585.
8154
8155 Fixed two possible memory leaks in the error exit paths of
8156 AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
8157 are
8158 similar in that they use a stack of state objects in order to eliminate
8159 recursion. The stack must be fully unwound and deallocated if an error
8160 occurs. Lin Ming. ACPICA BZ 383.
8161
8162 Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
8163 global
8164 ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
8165 Moore ACPICA BZ 442.
8166
8167 Removed the obsolete version number in module headers. Removed the
8168 "$Revision" number that appeared in each module header. This version
8169 number
8170 was useful under SourceSafe and CVS, but has no meaning under git. It is
8171 not
8172 only incorrect, it could also be misleading.
8173
8174 Example Code and Data Size: These are the sizes for the OS-independent
8175 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8176 debug version of the code includes the debug output trace mechanism and
8177 has a
8178 much larger code and data size.
8179
8180 Previous Release:
8181 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
8182 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total
8183 Current Release:
8184 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total
8185 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total
8186
8187 ----------------------------------------
8188 29 August 2008. Summary of changes for version 20080829:
8189
8190 1) ACPI CA Core Subsystem:
8191
8192 Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
8193 Reference. Changes include the elimination of cheating on the Object
8194 field
8195 for the DdbHandle subtype, addition of a reference class field to
8196 differentiate the various reference types (instead of an AML opcode), and
8197 the
8198 cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
8199
8200 Reduce an error to a warning for an incorrect method argument count.
8201 Previously aborted with an error if too few arguments were passed to a
8202 control method via the external ACPICA interface. Now issue a warning
8203 instead
8204 and continue. Handles the case where the method inadvertently declares
8205 too
8206 many arguments, but does not actually use the extra ones. Applies mainly
8207 to
8208 the predefined methods. Lin Ming. Linux BZ 11032.
8209
8210 Disallow the evaluation of named object types with no intrinsic value.
8211 Return
8212 AE_TYPE for objects that have no value and therefore evaluation is
8213 undefined:
8214 Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
8215 of
8216 these types were allowed, but an exception would be generated at some
8217 point
8218 during the evaluation. Now, the error is generated up front.
8219
8220 Fixed a possible memory leak in the AcpiNsGetExternalPathname function
8221 (nsnames.c). Fixes a leak in the error exit path.
8222
8223 Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
8224 debug
8225 levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
8226 ACPI_EXCEPTION
8227 interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
8228 ACPI_LV_EVENTS.
8229
8230 Removed obsolete and/or unused exception codes from the acexcep.h header.
8231 There is the possibility that certain device drivers may be affected if
8232 they
8233 use any of these exceptions.
8234
8235 The ACPICA documentation has been added to the public git source tree,
8236 under
8237 acpica/documents. Included are the ACPICA programmer reference, the iASL
8238 compiler reference, and the changes.txt release logfile.
8239
8240 Example Code and Data Size: These are the sizes for the OS-independent
8241 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8242 debug version of the code includes the debug output trace mechanism and
8243 has a
8244 much larger code and data size.
8245
8246 Previous Release:
8247 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
8248 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total
8249 Current Release:
8250 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
8251 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total
8252
8253 2) iASL Compiler/Disassembler and Tools:
8254
8255 Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
8256 defines _SCP with 3 arguments. Previous versions defined it with only 1
8257 argument. iASL now allows both definitions.
8258
8259 iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
8260 zero-
8261 length subtables when disassembling ACPI tables. Also fixed a couple of
8262 errors where a full 16-bit table type field was not extracted from the
8263 input
8264 properly.
8265
8266 acpisrc: Improve comment counting mechanism for generating source code
8267 statistics. Count first and last lines of multi-line comments as
8268 whitespace,
8269 not comment lines. Handle Linux legal header in addition to standard
8270 acpica
8271 header.
8272
8273 ----------------------------------------
8274
8275 29 July 2008. Summary of changes for version 20080729:
8276
8277 1) ACPI CA Core Subsystem:
8278
8279 Fix a possible deadlock in the GPE dispatch. Remove call to
8280 AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
8281 attempt
8282 to acquire the GPE lock but can deadlock since the GPE lock is already
8283 held
8284 at dispatch time. This code was introduced in version 20060831 as a
8285 response
8286 to Linux BZ 6881 and has since been removed from Linux.
8287
8288 Add a function to dereference returned reference objects. Examines the
8289 return
8290 object from a call to AcpiEvaluateObject. Any Index or RefOf references
8291 are
8292 automatically dereferenced in an attempt to return something useful
8293 (these
8294 reference types cannot be converted into an external ACPI_OBJECT.)
8295 Provides
8296 MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
8297
8298 x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
8299 subtables for the MADT and one new subtable for the SRAT. Includes
8300 disassembler and AcpiSrc support. Data from the Intel 64 Architecture
8301 x2APIC
8302 Specification, June 2008.
8303
8304 Additional error checking for pathname utilities. Add error check after
8305 all
8306 calls to AcpiNsGetPathnameLength. Add status return from
8307 AcpiNsBuildExternalPath and check after all calls. Add parameter
8308 validation
8309 to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
8310
8311 Return status from the global init function AcpiUtGlobalInitialize. This
8312 is
8313 used by both the kernel subsystem and the utilities such as iASL
8314 compiler.
8315 The function could possibly fail when the caches are initialized. Yang
8316 Yi.
8317
8318 Add a function to decode reference object types to strings. Created for
8319 improved error messages.
8320
8321 Improve object conversion error messages. Better error messages during
8322 object
8323 conversion from internal to the external ACPI_OBJECT. Used for external
8324 calls
8325 to AcpiEvaluateObject.
8326
8327 Example Code and Data Size: These are the sizes for the OS-independent
8328 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8329 debug version of the code includes the debug output trace mechanism and
8330 has a
8331 much larger code and data size.
8332
8333 Previous Release:
8334 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total
8335 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total
8336 Current Release:
8337 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
8338 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total
8339
8340 2) iASL Compiler/Disassembler and Tools:
8341
8342 Debugger: fix a possible hang when evaluating non-methods. Fixes a
8343 problem
8344 introduced in version 20080701. If the object being evaluated (via
8345 execute
8346 command) is not a method, the debugger can hang while trying to obtain
8347 non-
8348 existent parameters.
8349
8350 iASL: relax error for using reserved "_T_x" identifiers. These names can
8351 appear in a disassembled ASL file if they were emitted by the original
8352 compiler. Instead of issuing an error or warning and forcing the user to
8353 manually change these names, issue a remark instead.
8354
8355 iASL: error if named object created in while loop. Emit an error if any
8356 named
8357 object is created within a While loop. If allowed, this code will
8358 generate
8359 a
8360 run-time error on the second iteration of the loop when an attempt is
8361 made
8362 to
8363 create the same named object twice. ACPICA bugzilla 730.
8364
8365 iASL: Support absolute pathnames for include files. Add support for
8366 absolute
8367 pathnames within the Include operator. previously, only relative
8368 pathnames
8369 were supported.
8370
8371 iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
8372 Descriptor.
8373 The ACPI spec requires one interrupt minimum. BZ 423
8374
8375 iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
8376 Handles the case for the Interrupt Resource Descriptor where
8377 the ResourceSource argument is omitted but ResourceSourceIndex
8378 is present. Now leave room for the Index. BZ 426
8379
8380 iASL: Prevent error message if CondRefOf target does not exist. Fixes
8381 cases
8382 where an error message is emitted if the target does not exist. BZ 516
8383
8384 iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
8385 (get ACPI tables on Windows). This was apparently broken in version
8386 20070919.
8387
8388 AcpiXtract: Handle EOF while extracting data. Correctly handle the case
8389 where
8390 the EOF happens immediately after the last table in the input file. Print
8391 completion message. Previously, no message was displayed in this case.
8392
8393 ----------------------------------------
8394 01 July 2008. Summary of changes for version 20080701:
8395
8396 0) Git source tree / acpica.org
8397
8398 Fixed a problem where a git-clone from http would not transfer the entire
8399 source tree.
8400
8401 1) ACPI CA Core Subsystem:
8402
8403 Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
8404 enable bit. Now performs a read-change-write of the enable register
8405 instead
8406 of simply writing out the cached enable mask. This will prevent
8407 inadvertent
8408 enabling of GPEs if a rogue GPE is received during initialization (before
8409 GPE
8410 handlers are installed.)
8411
8412 Implemented a copy for dynamically loaded tables. Previously, dynamically
8413 loaded tables were simply mapped - but on some machines this memory is
8414 corrupted after suspend. Now copy the table to a local buffer. For the
8415 OpRegion case, added checksum verify. Use the table length from the table
8416 header, not the region length. For the Buffer case, use the table length
8417 also. Dennis Noordsij, Bob Moore. BZ 10734
8418
8419 Fixed a problem where the same ACPI table could not be dynamically loaded
8420 and
8421 unloaded more than once. Without this change, a table cannot be loaded
8422 again
8423 once it has been loaded/unloaded one time. The current mechanism does not
8424 unregister a table upon an unload. During a load, if the same table is
8425 found,
8426 this no longer returns an exception. BZ 722
8427
8428 Fixed a problem where the wrong descriptor length was calculated for the
8429 EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
8430 EndTag
8431 are calculated as 12 bytes long, but the actual length in the internal
8432 descriptor is 16 because of the round-up to 8 on the 64-bit build.
8433 Reported
8434 by Linn Crosetto. BZ 728
8435
8436 Fixed a possible memory leak in the Unload operator. The DdbHandle
8437 returned
8438 by Load() did not have its reference count decremented during unload,
8439 leading
8440 to a memory leak. Lin Ming. BZ 727
8441
8442 Fixed a possible memory leak when deleting thermal/processor objects. Any
8443 associated notify handlers (and objects) were not being deleted. Fiodor
8444 Suietov. BZ 506
8445
8446 Fixed the ordering of the ASCII names in the global mutex table to match
8447 the
8448 actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
8449 only.
8450 Vegard Nossum. BZ 726
8451
8452 Enhanced the AcpiGetObjectInfo interface to return the number of required
8453 arguments if the object is a control method. Added this call to the
8454 debugger
8455 so the proper number of default arguments are passed to a method. This
8456 prevents a warning when executing methods from AcpiExec.
8457
8458 Added a check for an invalid handle in AcpiGetObjectInfo. Return
8459 AE_BAD_PARAMETER if input handle is invalid. BZ 474
8460
8461 Fixed an extraneous warning from exconfig.c on the 64-bit build.
8462
8463 Example Code and Data Size: These are the sizes for the OS-independent
8464 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8465 debug version of the code includes the debug output trace mechanism and
8466 has a
8467 much larger code and data size.
8468
8469 Previous Release:
8470 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total
8471 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total
8472 Current Release:
8473 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total
8474 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total
8475
8476 2) iASL Compiler/Disassembler and Tools:
8477
8478 iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
8479 resource descriptor names.
8480
8481 iASL: Detect invalid ASCII characters in input (windows version). Removed
8482 the
8483 "-CF" flag from the flex compile, enables correct detection of non-ASCII
8484 characters in the input. BZ 441
8485
8486 iASL: Eliminate warning when result of LoadTable is not used. Eliminate
8487 the
8488 "result of operation not used" warning when the DDB handle returned from
8489 LoadTable is not used. The warning is not needed. BZ 590
8490
8491 AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
8492 method
8493 to
8494 pass address of table to the AML. Added option to disable OpRegion
8495 simulation
8496 to allow creation of an OpRegion with a real address that was passed to
8497 _CFG.
8498 All of this allows testing of the Load and Unload operators from
8499 AcpiExec.
8500
8501 Debugger: update tables command for unloaded tables. Handle unloaded
8502 tables
8503 and use the standard table header output routine.
8504
8505 ----------------------------------------
8506 09 June 2008. Summary of changes for version 20080609:
8507
8508 1) ACPI CA Core Subsystem:
8509
8510 Implemented a workaround for reversed _PRT entries. A significant number
8511 of
8512 BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
8513 change dynamically detects and repairs this problem. Provides
8514 compatibility
8515 with MS ACPI. BZ 6859
8516
8517 Simplified the internal ACPI hardware interfaces to eliminate the locking
8518 flag parameter from Register Read/Write. Added a new external interface,
8519 AcpiGetRegisterUnlocked.
8520
8521 Fixed a problem where the invocation of a GPE control method could hang.
8522 This
8523 was a regression introduced in 20080514. The new method argument count
8524 validation mechanism can enter an infinite loop when a GPE method is
8525 dispatched. Problem fixed by removing the obsolete code that passed GPE
8526 block
8527 information to the notify handler via the control method parameter
8528 pointer.
8529
8530 Fixed a problem where the _SST execution status was incorrectly returned
8531 to
8532 the caller of AcpiEnterSleepStatePrep. This was a regression introduced
8533 in
8534 20080514. _SST is optional and a NOT_FOUND exception should never be
8535 returned. BZ 716
8536
8537 Fixed a problem where a deleted object could be accessed from within the
8538 AML
8539 parser. This was a regression introduced in version 20080123 as a fix for
8540 the
8541 Unload operator. Lin Ming. BZ 10669
8542
8543 Cleaned up the debug operand dump mechanism. Eliminated unnecessary
8544 operands
8545 and eliminated the use of a negative index in a loop. Operands are now
8546 displayed in the correct order, not backwards. This also fixes a
8547 regression
8548 introduced in 20080514 on 64-bit systems where the elimination of
8549 ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
8550 715
8551
8552 Fixed a possible memory leak in EvPciConfigRegionSetup where the error
8553 exit
8554 path did not delete a locally allocated structure.
8555
8556 Updated definitions for the DMAR and SRAT tables to synchronize with the
8557 current specifications. Includes disassembler support.
8558
8559 Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
8560 loop termination value was used. Loop terminated on iteration early,
8561 missing
8562 one mutex. Linn Crosetto
8563
8564 Example Code and Data Size: These are the sizes for the OS-independent
8565 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8566 debug version of the code includes the debug output trace mechanism and
8567 has a
8568 much larger code and data size.
8569
8570 Previous Release:
8571 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total
8572 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total
8573 Current Release:
8574 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total
8575 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total
8576
8577 2) iASL Compiler/Disassembler and Tools:
8578
8579 Disassembler: Implemented support for EisaId() within _CID objects. Now
8580 disassemble integer _CID objects back to EisaId invocations, including
8581 multiple integers within _CID packages. Includes single-step support for
8582 debugger also.
8583
8584 Disassembler: Added support for DMAR and SRAT table definition changes.
8585
8586 ----------------------------------------
8587 14 May 2008. Summary of changes for version 20080514:
8588
8589 1) ACPI CA Core Subsystem:
8590
8591 Fixed a problem where GPEs were enabled too early during the ACPICA
8592 initialization. This could lead to "handler not installed" errors on some
8593 machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
8594 This
8595 ensures that all operation regions and devices throughout the namespace
8596 have
8597 been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
8598
8599 Implemented a change to the enter sleep code. Moved execution of the _GTS
8600 method to just before setting sleep enable bit. The execution was moved
8601 from
8602 AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
8603 immediately before the SLP_EN bit is set, as per the ACPI specification.
8604 Luming Yu, BZ 1653.
8605
8606 Implemented a fix to disable unknown GPEs (2nd version). Now always
8607 disable
8608 the GPE, even if ACPICA thinks that that it is already disabled. It is
8609 possible that the AML or some other code has enabled the GPE unbeknownst
8610 to
8611 the ACPICA code.
8612
8613 Fixed a problem with the Field operator where zero-length fields would
8614 return
8615 an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
8616 ASL
8617 field declarations in Field(), BankField(), and IndexField(). BZ 10606.
8618
8619 Implemented a fix for the Load operator, now load the table at the
8620 namespace
8621 root. This reverts a change introduced in version 20071019. The table is
8622 now
8623 loaded at the namespace root even though this goes against the ACPI
8624 specification. This provides compatibility with other ACPI
8625 implementations.
8626 The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
8627 Ming.
8628
8629 Fixed a problem where ACPICA would not Load() tables with unusual
8630 signatures.
8631 Now ignore ACPI table signature for Load() operator. Only "SSDT" is
8632 acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
8633 Therefore, signature validation is worthless. Apparently MS ACPI accepts
8634 such
8635 signatures, ACPICA must be compatible. BZ 10454.
8636
8637 Fixed a possible negative array index in AcpiUtValidateException. Added
8638 NULL
8639 fields to the exception string arrays to eliminate a -1 subtraction on
8640 the
8641 SubStatus field.
8642
8643 Updated the debug tracking macros to reduce overall code and data size.
8644 Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
8645 instead of pointers to static strings. Jan Beulich and Bob Moore.
8646
8647 Implemented argument count checking in control method invocation via
8648 AcpiEvaluateObject. Now emit an error if too few arguments, warning if
8649 too
8650 many. This applies only to extern programmatic control method execution,
8651 not
8652 method-to-method calls within the AML. Lin Ming.
8653
8654 Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
8655 no
8656 longer needed, especially with the removal of 16-bit support. It was
8657 replaced
8658 mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
8659 bit
8660 on
8661 32/64-bit platforms is required.
8662
8663 Added the C const qualifier for appropriate string constants -- mostly
8664 MODULE_NAME and printf format strings. Jan Beulich.
8665
8666 Example Code and Data Size: These are the sizes for the OS-independent
8667 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8668 debug version of the code includes the debug output trace mechanism and
8669 has a
8670 much larger code and data size.
8671
8672 Previous Release:
8673 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total
8674 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total
8675 Current Release:
8676 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total
8677 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total
8678
8679 2) iASL Compiler/Disassembler and Tools:
8680
8681 Implemented ACPI table revision ID validation in the disassembler. Zero
8682 is
8683 always invalid. For DSDTs, the ID controls the interpreter integer width.
8684 1
8685 means 32-bit and this is unusual. 2 or greater is 64-bit.
8686
8687 ----------------------------------------
8688 21 March 2008. Summary of changes for version 20080321:
8689
8690 1) ACPI CA Core Subsystem:
8691
8692 Implemented an additional change to the GPE support in order to suppress
8693 spurious or stray GPEs. The AcpiEvDisableGpe function will now
8694 permanently
8695 disable incoming GPEs that are neither enabled nor disabled -- meaning
8696 that
8697 the GPE is unknown to the system. This should prevent future interrupt
8698 floods
8699 from that GPE. BZ 6217 (Zhang Rui)
8700
8701 Fixed a problem where NULL package elements were not returned to the
8702 AcpiEvaluateObject interface correctly. The element was simply ignored
8703 instead of returning a NULL ACPI_OBJECT package element, potentially
8704 causing
8705 a buffer overflow and/or confusing the caller who expected a fixed number
8706 of
8707 elements. BZ 10132 (Lin Ming, Bob Moore)
8708
8709 Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
8710 Dword,
8711 Qword), Field, BankField, and IndexField operators when invoked from
8712 inside
8713 an executing control method. In this case, these operators created
8714 namespace
8715 nodes that were incorrectly left marked as permanent nodes instead of
8716 temporary nodes. This could cause a problem if there is race condition
8717 between an exiting control method and a running namespace walk. (Reported
8718 by
8719 Linn Crosetto)
8720
8721 Fixed a problem where the CreateField and CreateXXXField operators would
8722 incorrectly allow duplicate names (the name of the field) with no
8723 exception
8724 generated.
8725
8726 Implemented several changes for Notify handling. Added support for new
8727 Notify
8728 values (ACPI 2.0+) and improved the Notify debug output. Notify on
8729 PowerResource objects is no longer allowed, as per the ACPI
8730 specification.
8731 (Bob Moore, Zhang Rui)
8732
8733 All Reference Objects returned via the AcpiEvaluateObject interface are
8734 now
8735 marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
8736 for
8737 NULL objects - either NULL package elements or unresolved named
8738 references.
8739
8740 Fixed a problem where an extraneous debug message was produced for
8741 package
8742 objects (when debugging enabled). The message "Package List length larger
8743 than NumElements count" is now produced in the correct case, and is now
8744 an
8745 error message rather than a debug message. Added a debug message for the
8746 opposite case, where NumElements is larger than the Package List (the
8747 package
8748 will be padded out with NULL elements as per the ACPI spec.)
8749
8750 Implemented several improvements for the output of the ASL "Debug" object
8751 to
8752 clarify and keep all data for a given object on one output line.
8753
8754 Fixed two size calculation issues with the variable-length Start
8755 Dependent
8756 resource descriptor.
8757
8758 Example Code and Data Size: These are the sizes for the OS-independent
8759 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8760 debug version of the code includes the debug output trace mechanism and
8761 has
8762 a much larger code and data size.
8763
8764 Previous Release:
8765 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total
8766 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total
8767 Current Release:
8768 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total
8769 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total
8770
8771 2) iASL Compiler/Disassembler and Tools:
8772
8773 Fixed a problem with the use of the Switch operator where execution of
8774 the
8775 containing method by multiple concurrent threads could cause an
8776 AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
8777 actual Switch opcode, it must be simulated with local named temporary
8778 variables and if/else pairs. The solution chosen was to mark any method
8779 that
8780 uses Switch as Serialized, thus preventing multiple thread entries. BZ
8781 469.
8782
8783 ----------------------------------------
8784 13 February 2008. Summary of changes for version 20080213:
8785
8786 1) ACPI CA Core Subsystem:
8787
8788 Implemented another MS compatibility design change for GPE/Notify
8789 handling.
8790 GPEs are now cleared/enabled asynchronously to allow all pending notifies
8791 to
8792 complete first. It is expected that the OSL will queue the enable request
8793 behind all pending notify requests (may require changes to the local host
8794 OSL
8795 in AcpiOsExecute). Alexey Starikovskiy.
8796
8797 Fixed a problem where buffer and package objects passed as arguments to a
8798 control method via the external AcpiEvaluateObject interface could cause
8799 an
8800 AE_AML_INTERNAL exception depending on the order and type of operators
8801 executed by the target control method.
8802
8803 Fixed a problem where resource descriptor size optimization could cause a
8804 problem when a _CRS resource template is passed to a _SRS method. The
8805 _SRS
8806 resource template must use the same descriptors (with the same size) as
8807 returned from _CRS. This change affects the following resource
8808 descriptors:
8809 IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
8810 9487)
8811
8812 Fixed a problem where a CopyObject to RegionField, BankField, and
8813 IndexField
8814 objects did not perform an implicit conversion as it should. These types
8815 must
8816 retain their initial type permanently as per the ACPI specification.
8817 However,
8818 a CopyObject to all other object types should not perform an implicit
8819 conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
8820
8821 Fixed a problem with the AcpiGetDevices interface where the mechanism to
8822 match device CIDs did not examine the entire list of available CIDs, but
8823 instead aborted on the first non-matching CID. Andrew Patterson.
8824
8825 Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
8826 was
8827 inadvertently changed to return a 16-bit value instead of a 32-bit value,
8828 truncating the upper dword of a 64-bit value. This macro is only used to
8829 display debug output, so no incorrect calculations were made. Also,
8830 reimplemented the macro so that a 64-bit shift is not performed by
8831 inefficient compilers.
8832
8833 Added missing va_end statements that should correspond with each va_start
8834 statement.
8835
8836 Example Code and Data Size: These are the sizes for the OS-independent
8837 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8838 debug version of the code includes the debug output trace mechanism and
8839 has
8840 a much larger code and data size.
8841
8842 Previous Release:
8843 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total
8844 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total
8845 Current Release:
8846 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total
8847 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total
8848
8849 2) iASL Compiler/Disassembler and Tools:
8850
8851 Implemented full disassembler support for the following new ACPI tables:
8852 BERT, EINJ, and ERST. Implemented partial disassembler support for the
8853 complicated HEST table. These tables support the Windows Hardware Error
8854 Architecture (WHEA).
8855
8856 ----------------------------------------
8857 23 January 2008. Summary of changes for version 20080123:
8858
8859 1) ACPI CA Core Subsystem:
8860
8861 Added the 2008 copyright to all module headers and signons. This affects
8862 virtually every file in the ACPICA core subsystem, the iASL compiler, and
8863 the tools/utilities.
8864
8865 Fixed a problem with the SizeOf operator when used with Package and
8866 Buffer
8867 objects. These objects have deferred execution for some arguments, and
8868 the
8869 execution is now completed before the SizeOf is executed. This problem
8870 caused
8871 unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
8872 BZ
8873 9558
8874
8875 Implemented an enhancement to the interpreter "slack mode". In the
8876 absence
8877 of
8878 an explicit return or an implicitly returned object from the last
8879 executed
8880 opcode, a control method will now implicitly return an integer of value 0
8881 for
8882 Microsoft compatibility. (Lin Ming) BZ 392
8883
8884 Fixed a problem with the Load operator where an exception was not
8885 returned
8886 in
8887 the case where the table is already loaded. (Lin Ming) BZ 463
8888
8889 Implemented support for the use of DDBHandles as an Indexed Reference, as
8890 per
8891 the ACPI spec. (Lin Ming) BZ 486
8892
8893 Implemented support for UserTerm (Method invocation) for the Unload
8894 operator
8895 as per the ACPI spec. (Lin Ming) BZ 580
8896
8897 Fixed a problem with the LoadTable operator where the OemId and
8898 OemTableId
8899 input strings could cause unexpected failures if they were shorter than
8900 the
8901 maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
8902
8903 Implemented support for UserTerm (Method invocation) for the Unload
8904 operator
8905 as per the ACPI spec. (Lin Ming) BZ 580
8906
8907 Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
8908 HEST,
8909 IBFT, UEFI, WDAT. Disassembler support is forthcoming.
8910
8911 Example Code and Data Size: These are the sizes for the OS-independent
8912 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8913 debug version of the code includes the debug output trace mechanism and
8914 has
8915 a much larger code and data size.
8916
8917 Previous Release:
8918 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total
8919 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total
8920 Current Release:
8921 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total
8922 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total
8923
8924 2) iASL Compiler/Disassembler and Tools:
8925
8926 Implemented support in the disassembler for checksum validation on
8927 incoming
8928 binary DSDTs and SSDTs. If incorrect, a message is displayed within the
8929 table
8930 header dump at the start of the disassembly.
8931
8932 Implemented additional debugging information in the namespace listing
8933 file
8934 created during compilation. In addition to the namespace hierarchy, the
8935 full
8936 pathname to each namespace object is displayed.
8937
8938 Fixed a problem with the disassembler where invalid ACPI tables could
8939 cause
8940 faults or infinite loops.
8941
8942 Fixed an unexpected parse error when using the optional "parameter types"
8943 list in a control method declaration. (Lin Ming) BZ 397
8944
8945 Fixed a problem where two External declarations with the same name did
8946 not
8947 cause an error (Lin Ming) BZ 509
8948
8949 Implemented support for full TermArgs (adding Argx, Localx and method
8950 invocation) for the ParameterData parameter to the LoadTable operator.
8951 (Lin
8952 Ming) BZ 583,587
8953
8954 ----------------------------------------
8955 19 December 2007. Summary of changes for version 20071219:
8956
8957 1) ACPI CA Core Subsystem:
8958
8959 Implemented full support for deferred execution for the TermArg string
8960 arguments for DataTableRegion. This enables forward references and full
8961 operand resolution for the three string arguments. Similar to
8962 OperationRegion
8963 deferred argument execution.) Lin Ming. BZ 430
8964
8965 Implemented full argument resolution support for the BankValue argument
8966 to
8967 BankField. Previously, only constants were supported, now any TermArg may
8968 be
8969 used. Lin Ming BZ 387, 393
8970
8971 Fixed a problem with AcpiGetDevices where the search of a branch of the
8972 device tree could be terminated prematurely. In accordance with the ACPI
8973 specification, the search down the current branch is terminated if a
8974 device
8975 is both not present and not functional (instead of just not present.)
8976 Yakui
8977 Zhao.
8978
8979 Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
8980 if
8981 the underlying AML code changed the GPE enable registers. Now, any
8982 unknown
8983 incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
8984 disabled
8985 instead of simply ignored. Rui Zhang.
8986
8987 Fixed a problem with Index Fields where the Index register was
8988 incorrectly
8989 limited to a maximum of 32 bits. Now any size may be used.
8990
8991 Fixed a couple memory leaks associated with "implicit return" objects
8992 when
8993 the AML Interpreter slack mode is enabled. Lin Ming BZ 349
8994
8995 Example Code and Data Size: These are the sizes for the OS-independent
8996 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8997 debug version of the code includes the debug output trace mechanism and
8998 has
8999 a much larger code and data size.
9000
9001 Previous Release:
9002 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total
9003 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total
9004 Current Release:
9005 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total
9006 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total
9007
9008 ----------------------------------------
9009 14 November 2007. Summary of changes for version 20071114:
9010
9011 1) ACPI CA Core Subsystem:
9012
9013 Implemented event counters for each of the Fixed Events, the ACPI SCI
9014 (interrupt) itself, and control methods executed. Named
9015 AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
9016 These
9017 should be useful for debugging and statistics.
9018
9019 Implemented a new external interface, AcpiGetStatistics, to retrieve the
9020 contents of the various event counters. Returns the current values for
9021 AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
9022 AcpiMethodCount. The interface can be expanded in the future if new
9023 counters
9024 are added. Device drivers should use this interface rather than access
9025 the
9026 counters directly.
9027
9028 Fixed a problem with the FromBCD and ToBCD operators. With some
9029 compilers,
9030 the ShortDivide function worked incorrectly, causing problems with the
9031 BCD
9032 functions with large input values. A truncation from 64-bit to 32-bit
9033 inadvertently occurred. Internal BZ 435. Lin Ming
9034
9035 Fixed a problem with Index references passed as method arguments.
9036 References
9037 passed as arguments to control methods were dereferenced immediately
9038 (before
9039 control was passed to the called method). The references are now
9040 correctly
9041 passed directly to the called method. BZ 5389. Lin Ming
9042
9043 Fixed a problem with CopyObject used in conjunction with the Index
9044 operator.
9045 The reference was incorrectly dereferenced before the copy. The reference
9046 is
9047 now correctly copied. BZ 5391. Lin Ming
9048
9049 Fixed a problem with Control Method references within Package objects.
9050 These
9051 references are now correctly generated. This completes the package
9052 construction overhaul that began in version 20071019.
9053
9054 Example Code and Data Size: These are the sizes for the OS-independent
9055 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9056 debug version of the code includes the debug output trace mechanism and
9057 has
9058 a much larger code and data size.
9059
9060 Previous Release:
9061 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total
9062 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total
9063 Current Release:
9064 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total
9065 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total
9066
9067
9068 2) iASL Compiler/Disassembler and Tools:
9069
9070 The AcpiExec utility now installs handlers for all of the predefined
9071 Operation Region types. New types supported are: PCI_Config, CMOS, and
9072 PCIBARTarget.
9073
9074 Fixed a problem with the 64-bit version of AcpiExec where the extended
9075 (64-
9076 bit) address fields for the DSDT and FACS within the FADT were not being
9077 used, causing truncation of the upper 32-bits of these addresses. Lin
9078 Ming
9079 and Bob Moore
9080
9081 ----------------------------------------
9082 19 October 2007. Summary of changes for version 20071019:
9083
9084 1) ACPI CA Core Subsystem:
9085
9086 Fixed a problem with the Alias operator when the target of the alias is a
9087 named ASL operator that opens a new scope -- Scope, Device,
9088 PowerResource,
9089 Processor, and ThermalZone. In these cases, any children of the original
9090 operator could not be accessed via the alias, potentially causing
9091 unexpected
9092 AE_NOT_FOUND exceptions. (BZ 9067)
9093
9094 Fixed a problem with the Package operator where all named references were
9095 created as object references and left otherwise unresolved. According to
9096 the
9097 ACPI specification, a Package can only contain Data Objects or references
9098 to
9099 control methods. The implication is that named references to Data Objects
9100 (Integer, Buffer, String, Package, BufferField, Field) should be resolved
9101 immediately upon package creation. This is the approach taken with this
9102 change. References to all other named objects (Methods, Devices, Scopes,
9103 etc.) are all now properly created as reference objects. (BZ 5328)
9104
9105 Reverted a change to Notify handling that was introduced in version
9106 20070508. This version changed the Notify handling from asynchronous to
9107 fully synchronous (Device driver Notify handling with respect to the
9108 Notify
9109 ASL operator). It was found that this change caused more problems than it
9110 solved and was removed by most users.
9111
9112 Fixed a problem with the Increment and Decrement operators where the type
9113 of
9114 the target object could be unexpectedly and incorrectly changed. (BZ 353)
9115 Lin Ming.
9116
9117 Fixed a problem with the Load and LoadTable operators where the table
9118 location within the namespace was ignored. Instead, the table was always
9119 loaded into the root or current scope. Lin Ming.
9120
9121 Fixed a problem with the Load operator when loading a table from a buffer
9122 object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
9123
9124 Fixed a problem with the Debug object where a store of a DdbHandle
9125 reference
9126 object to the Debug object could cause a fault.
9127
9128 Added a table checksum verification for the Load operator, in the case
9129 where
9130 the load is from a buffer. (BZ 578).
9131
9132 Implemented additional parameter validation for the LoadTable operator.
9133 The
9134 length of the input strings SignatureString, OemIdString, and OemTableId
9135 are
9136 now checked for maximum lengths. (BZ 582) Lin Ming.
9137
9138 Example Code and Data Size: These are the sizes for the OS-independent
9139 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9140 debug version of the code includes the debug output trace mechanism and
9141 has
9142 a much larger code and data size.
9143
9144 Previous Release:
9145 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total
9146 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total
9147 Current Release:
9148 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total
9149 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total
9150
9151
9152 2) iASL Compiler/Disassembler:
9153
9154 Fixed a problem where if a single file was specified and the file did not
9155 exist, no error message was emitted. (Introduced with wildcard support in
9156 version 20070917.)
9157
9158 ----------------------------------------
9159 19 September 2007. Summary of changes for version 20070919:
9160
9161 1) ACPI CA Core Subsystem:
9162
9163 Designed and implemented new external interfaces to install and remove
9164 handlers for ACPI table-related events. Current events that are defined
9165 are
9166 LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
9167 they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
9168 AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
9169
9170 Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
9171 (acpi_serialized option on Linux) could cause some systems to hang during
9172 initialization. (Bob Moore) BZ 8171
9173
9174 Fixed a problem where objects of certain types (Device, ThermalZone,
9175 Processor, PowerResource) can be not found if they are declared and
9176 referenced from within the same control method (Lin Ming) BZ 341
9177
9178 Example Code and Data Size: These are the sizes for the OS-independent
9179 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9180 debug version of the code includes the debug output trace mechanism and
9181 has
9182 a much larger code and data size.
9183
9184 Previous Release:
9185 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total
9186 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total
9187 Current Release:
9188 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total
9189 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total
9190
9191
9192 2) iASL Compiler/Disassembler:
9193
9194 Implemented support to allow multiple files to be compiled/disassembled
9195 in
9196 a
9197 single invocation. This includes command line wildcard support for both
9198 the
9199 Windows and Unix versions of the compiler. This feature simplifies the
9200 disassembly and compilation of multiple ACPI tables in a single
9201 directory.
9202
9203 ----------------------------------------
9204 08 May 2007. Summary of changes for version 20070508:
9205
9206 1) ACPI CA Core Subsystem:
9207
9208 Implemented a Microsoft compatibility design change for the handling of
9209 the
9210 Notify AML operator. Previously, notify handlers were dispatched and
9211 executed completely asynchronously in a deferred thread. The new design
9212 still executes the notify handlers in a different thread, but the
9213 original
9214 thread that executed the Notify() now waits at a synchronization point
9215 for
9216 the notify handler to complete. Some machines depend on a synchronous
9217 Notify
9218 operator in order to operate correctly.
9219
9220 Implemented support to allow Package objects to be passed as method
9221 arguments to the external AcpiEvaluateObject interface. Previously, this
9222 would return the AE_NOT_IMPLEMENTED exception. This feature had not been
9223 implemented since there were no reserved control methods that required it
9224 until recently.
9225
9226 Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
9227 that
9228 contained invalid non-zero values in reserved fields could cause later
9229 failures because these fields have meaning in later revisions of the
9230 FADT.
9231 For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
9232 fields
9233 are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
9234
9235 Fixed a problem where the Global Lock handle was not properly updated if
9236 a
9237 thread that acquired the Global Lock via executing AML code then
9238 attempted
9239 to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
9240 Joe
9241 Liu.
9242
9243 Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
9244 could be corrupted if the interrupt being removed was at the head of the
9245 list. Reported by Linn Crosetto.
9246
9247 Example Code and Data Size: These are the sizes for the OS-independent
9248 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9249 debug version of the code includes the debug output trace mechanism and
9250 has
9251 a much larger code and data size.
9252
9253 Previous Release:
9254 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
9255 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total
9256 Current Release:
9257 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total
9258 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total
9259
9260 ----------------------------------------
9261 20 March 2007. Summary of changes for version 20070320:
9262
9263 1) ACPI CA Core Subsystem:
9264
9265 Implemented a change to the order of interpretation and evaluation of AML
9266 operand objects within the AML interpreter. The interpreter now evaluates
9267 operands in the order that they appear in the AML stream (and the
9268 corresponding ASL code), instead of in the reverse order (after the
9269 entire
9270 operand list has been parsed). The previous behavior caused several
9271 subtle
9272 incompatibilities with the Microsoft AML interpreter as well as being
9273 somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
9274
9275 Implemented a change to the ACPI Global Lock support. All interfaces to
9276 the
9277 global lock now allow the same thread to acquire the lock multiple times.
9278 This affects the AcpiAcquireGlobalLock external interface to the global
9279 lock
9280 as well as the internal use of the global lock to support AML fields -- a
9281 control method that is holding the global lock can now simultaneously
9282 access
9283 AML fields that require global lock protection. Previously, in both
9284 cases,
9285 this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
9286 to
9287 AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
9288 Controller. There is no change to the behavior of the AML Acquire
9289 operator,
9290 as this can already be used to acquire a mutex multiple times by the same
9291 thread. BZ 8066. With assistance from Alexey Starikovskiy.
9292
9293 Fixed a problem where invalid objects could be referenced in the AML
9294 Interpreter after error conditions. During operand evaluation, ensure
9295 that
9296 the internal "Return Object" field is cleared on error and only valid
9297 pointers are stored there. Caused occasional access to deleted objects
9298 that
9299 resulted in "large reference count" warning messages. Valery Podrezov.
9300
9301 Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
9302 on
9303 deeply nested control method invocations. BZ 7873, local BZ 487. Valery
9304 Podrezov.
9305
9306 Fixed an internal problem with the handling of result objects on the
9307 interpreter result stack. BZ 7872. Valery Podrezov.
9308
9309 Removed obsolete code that handled the case where AML_NAME_OP is the
9310 target
9311 of a reference (Reference.Opcode). This code was no longer necessary. BZ
9312 7874. Valery Podrezov.
9313
9314 Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
9315 was
9316 a
9317 remnant from the previously discontinued 16-bit support.
9318
9319 Example Code and Data Size: These are the sizes for the OS-independent
9320 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9321 debug version of the code includes the debug output trace mechanism and
9322 has
9323 a much larger code and data size.
9324
9325 Previous Release:
9326 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
9327 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
9328 Current Release:
9329 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
9330 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total
9331
9332 ----------------------------------------
9333 26 January 2007. Summary of changes for version 20070126:
9334
9335 1) ACPI CA Core Subsystem:
9336
9337 Added the 2007 copyright to all module headers and signons. This affects
9338 virtually every file in the ACPICA core subsystem, the iASL compiler, and
9339 the utilities.
9340
9341 Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
9342 during a table load. A bad pointer was passed in the case where the DSDT
9343 is
9344 overridden, causing a fault in this case.
9345
9346 Example Code and Data Size: These are the sizes for the OS-independent
9347 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9348 debug version of the code includes the debug output trace mechanism and
9349 has
9350 a much larger code and data size.
9351
9352 Previous Release:
9353 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
9354 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
9355 Current Release:
9356 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
9357 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
9358
9359 ----------------------------------------
9360 15 December 2006. Summary of changes for version 20061215:
9361
9362 1) ACPI CA Core Subsystem:
9363
9364 Support for 16-bit ACPICA has been completely removed since it is no
9365 longer
9366 necessary and it clutters the code. All 16-bit macros, types, and
9367 conditional compiles have been removed, cleaning up and simplifying the
9368 code
9369 across the entire subsystem. DOS support is no longer needed since the
9370 bootable Linux firmware kit is now available.
9371
9372 The handler for the Global Lock is now removed during AcpiTerminate to
9373 enable a clean subsystem restart, via the implementation of the
9374 AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
9375 HP)
9376
9377 Implemented enhancements to the multithreading support within the
9378 debugger
9379 to enable improved multithreading debugging and evaluation of the
9380 subsystem.
9381 (Valery Podrezov)
9382
9383 Debugger: Enhanced the Statistics/Memory command to emit the total
9384 (maximum)
9385 memory used during the execution, as well as the maximum memory consumed
9386 by
9387 each of the various object types. (Valery Podrezov)
9388
9389 Example Code and Data Size: These are the sizes for the OS-independent
9390 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9391 debug version of the code includes the debug output trace mechanism and
9392 has
9393 a much larger code and data size.
9394
9395 Previous Release:
9396 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total
9397 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total
9398 Current Release:
9399 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
9400 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
9401
9402
9403 2) iASL Compiler/Disassembler and Tools:
9404
9405 AcpiExec: Implemented a new option (-m) to display full memory use
9406 statistics upon subsystem/program termination. (Valery Podrezov)
9407
9408 ----------------------------------------
9409 09 November 2006. Summary of changes for version 20061109:
9410
9411 1) ACPI CA Core Subsystem:
9412
9413 Optimized the Load ASL operator in the case where the source operand is
9414 an
9415 operation region. Simply map the operation region memory, instead of
9416 performing a bytewise read. (Region must be of type SystemMemory, see
9417 below.)
9418
9419 Fixed the Load ASL operator for the case where the source operand is a
9420 region field. A buffer object is also allowed as the source operand. BZ
9421 480
9422
9423 Fixed a problem where the Load ASL operator allowed the source operand to
9424 be
9425 an operation region of any type. It is now restricted to regions of type
9426 SystemMemory, as per the ACPI specification. BZ 481
9427
9428 Additional cleanup and optimizations for the new Table Manager code.
9429
9430 AcpiEnable will now fail if all of the required ACPI tables are not
9431 loaded
9432 (FADT, FACS, DSDT). BZ 477
9433
9434 Added #pragma pack(8/4) to acobject.h to ensure that the structures in
9435 this
9436 header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
9437 manually optimized to be aligned and will not work if it is byte-packed.
9438
9439 Example Code and Data Size: These are the sizes for the OS-independent
9440 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9441 debug version of the code includes the debug output trace mechanism and
9442 has
9443 a much larger code and data size.
9444
9445 Previous Release:
9446 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total
9447 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total
9448 Current Release:
9449 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total
9450 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total
9451
9452
9453 2) iASL Compiler/Disassembler and Tools:
9454
9455 Fixed a problem where the presence of the _OSI predefined control method
9456 within complex expressions could cause an internal compiler error.
9457
9458 AcpiExec: Implemented full region support for multiple address spaces.
9459 SpaceId is now part of the REGION object. BZ 429
9460
9461 ----------------------------------------
9462 11 October 2006. Summary of changes for version 20061011:
9463
9464 1) ACPI CA Core Subsystem:
9465
9466 Completed an AML interpreter performance enhancement for control method
9467 execution. Previously a 2-pass parse/execution, control methods are now
9468 completely parsed and executed in a single pass. This improves overall
9469 interpreter performance by ~25%, reduces code size, and reduces CPU stack
9470 use. (Valery Podrezov + interpreter changes in version 20051202 that
9471 eliminated namespace loading during the pass one parse.)
9472
9473 Implemented _CID support for PCI Root Bridge detection. If the _HID does
9474 not
9475 match the predefined PCI Root Bridge IDs, the _CID list (if present) is
9476 now
9477 obtained and also checked for an ID match.
9478
9479 Implemented additional support for the PCI _ADR execution: upsearch until
9480 a
9481 device scope is found before executing _ADR. This allows PCI_Config
9482 operation regions to be declared locally within control methods
9483 underneath
9484 PCI device objects.
9485
9486 Fixed a problem with a possible race condition between threads executing
9487 AcpiWalkNamespace and the AML interpreter. This condition was removed by
9488 modifying AcpiWalkNamespace to (by default) ignore all temporary
9489 namespace
9490 entries created during any concurrent control method execution. An
9491 additional namespace race condition is known to exist between
9492 AcpiWalkNamespace and the Load/Unload ASL operators and is still under
9493 investigation.
9494
9495 Restructured the AML ParseLoop function, breaking it into several
9496 subfunctions in order to reduce CPU stack use and improve
9497 maintainability.
9498 (Mikhail Kouzmich)
9499
9500 AcpiGetHandle: Fix for parameter validation to detect invalid
9501 combinations
9502 of prefix handle and pathname. BZ 478
9503
9504 Example Code and Data Size: These are the sizes for the OS-independent
9505 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9506 debug version of the code includes the debug output trace mechanism and
9507 has
9508 a much larger code and data size.
9509
9510 Previous Release:
9511 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
9512 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total
9513 Current Release:
9514 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total
9515 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total
9516
9517 2) iASL Compiler/Disassembler and Tools:
9518
9519 Ported the -g option (get local ACPI tables) to the new ACPICA Table
9520 Manager
9521 to restore original behavior.
9522
9523 ----------------------------------------
9524 27 September 2006. Summary of changes for version 20060927:
9525
9526 1) ACPI CA Core Subsystem:
9527
9528 Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
9529 These functions now use a spinlock for mutual exclusion and the interrupt
9530 level indication flag is not needed.
9531
9532 Fixed a problem with the Global Lock where the lock could appear to be
9533 obtained before it is actually obtained. The global lock semaphore was
9534 inadvertently created with one unit instead of zero units. (BZ 464)
9535 Fiodor
9536 Suietov.
9537
9538 Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
9539 during
9540 a read from a buffer or region field. (BZ 458) Fiodor Suietov.
9541
9542 Example Code and Data Size: These are the sizes for the OS-independent
9543 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9544 debug version of the code includes the debug output trace mechanism and
9545 has
9546 a much larger code and data size.
9547
9548 Previous Release:
9549 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
9550 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total
9551 Current Release:
9552 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
9553 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total
9554
9555
9556 2) iASL Compiler/Disassembler and Tools:
9557
9558 Fixed a compilation problem with the pre-defined Resource Descriptor
9559 field
9560 names where an "object does not exist" error could be incorrectly
9561 generated
9562 if the parent ResourceTemplate pathname places the template within a
9563 different namespace scope than the current scope. (BZ 7212)
9564
9565 Fixed a problem where the compiler could hang after syntax errors
9566 detected
9567 in an ElseIf construct. (BZ 453)
9568
9569 Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
9570 operator. An incorrect output filename was produced when this parameter
9571 was
9572 a null string (""). Now, the original input filename is used as the AML
9573 output filename, with an ".aml" extension.
9574
9575 Implemented a generic batch command mode for the AcpiExec utility
9576 (execute
9577 any AML debugger command) (Valery Podrezov).
9578
9579 ----------------------------------------
9580 12 September 2006. Summary of changes for version 20060912:
9581
9582 1) ACPI CA Core Subsystem:
9583
9584 Enhanced the implementation of the "serialized mode" of the interpreter
9585 (enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
9586 specified, instead of creating a serialization semaphore per control
9587 method,
9588 the interpreter lock is simply no longer released before a blocking
9589 operation during control method execution. This effectively makes the AML
9590 Interpreter single-threaded. The overhead of a semaphore per-method is
9591 eliminated.
9592
9593 Fixed a regression where an error was no longer emitted if a control
9594 method
9595 attempts to create 2 objects of the same name. This once again returns
9596 AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
9597 that
9598 will dynamically serialize the control method to possible prevent future
9599 errors. (BZ 440)
9600
9601 Integrated a fix for a problem with PCI Express HID detection in the PCI
9602 Config Space setup procedure. (BZ 7145)
9603
9604 Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
9605 AcpiHwInitialize function - the FADT registers are now validated when the
9606 table is loaded.
9607
9608 Added two new warnings during FADT verification - 1) if the FADT is
9609 larger
9610 than the largest known FADT version, and 2) if there is a mismatch
9611 between
9612 a
9613 32-bit block address and the 64-bit X counterpart (when both are non-
9614 zero.)
9615
9616 Example Code and Data Size: These are the sizes for the OS-independent
9617 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9618 debug version of the code includes the debug output trace mechanism and
9619 has
9620 a much larger code and data size.
9621
9622 Previous Release:
9623 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total
9624 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total
9625 Current Release:
9626 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
9627 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total
9628
9629
9630 2) iASL Compiler/Disassembler and Tools:
9631
9632 Fixed a problem with the implementation of the Switch() operator where
9633 the
9634 temporary variable was declared too close to the actual Switch, instead
9635 of
9636 at method level. This could cause a problem if the Switch() operator is
9637 within a while loop, causing an error on the second iteration. (BZ 460)
9638
9639 Disassembler - fix for error emitted for unknown type for target of scope
9640 operator. Now, ignore it and continue.
9641
9642 Disassembly of an FADT now verifies the input FADT and reports any errors
9643 found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
9644
9645 Disassembly of raw data buffers with byte initialization data now
9646 prefixes
9647 each output line with the current buffer offset.
9648
9649 Disassembly of ASF! table now includes all variable-length data fields at
9650 the end of some of the subtables.
9651
9652 The disassembler now emits a comment if a buffer appears to be a
9653 ResourceTemplate, but cannot be disassembled as such because the EndTag
9654 does
9655 not appear at the very end of the buffer.
9656
9657 AcpiExec - Added the "-t" command line option to enable the serialized
9658 mode
9659 of the AML interpreter.
9660
9661 ----------------------------------------
9662 31 August 2006. Summary of changes for version 20060831:
9663
9664 1) ACPI CA Core Subsystem:
9665
9666 Miscellaneous fixes for the Table Manager:
9667 - Correctly initialize internal common FADT for all 64-bit "X" fields
9668 - Fixed a couple table mapping issues during table load
9669 - Fixed a couple alignment issues for IA64
9670 - Initialize input array to zero in AcpiInitializeTables
9671 - Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
9672 AcpiGetTableByIndex
9673
9674 Change for GPE support: when a "wake" GPE is received, all wake GPEs are
9675 now
9676 immediately disabled to prevent the waking GPE from firing again and to
9677 prevent other wake GPEs from interrupting the wake process.
9678
9679 Added the AcpiGpeCount global that tracks the number of processed GPEs,
9680 to
9681 be used for debugging systems with a large number of ACPI interrupts.
9682
9683 Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
9684 both the ACPICA headers and the disassembler.
9685
9686 Example Code and Data Size: These are the sizes for the OS-independent
9687 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9688 debug version of the code includes the debug output trace mechanism and
9689 has
9690 a much larger code and data size.
9691
9692 Previous Release:
9693 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total
9694 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total
9695 Current Release:
9696 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total
9697 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total
9698
9699
9700 2) iASL Compiler/Disassembler and Tools:
9701
9702 Disassembler support for the DMAR ACPI table.
9703
9704 ----------------------------------------
9705 23 August 2006. Summary of changes for version 20060823:
9706
9707 1) ACPI CA Core Subsystem:
9708
9709 The Table Manager component has been completely redesigned and
9710 reimplemented. The new design is much simpler, and reduces the overall
9711 code
9712 and data size of the kernel-resident ACPICA by approximately 5%. Also, it
9713 is
9714 now possible to obtain the ACPI tables very early during kernel
9715 initialization, even before dynamic memory management is initialized.
9716 (Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
9717
9718 Obsolete ACPICA interfaces:
9719
9720 - AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
9721 init
9722 time).
9723 - AcpiLoadTable: Not needed.
9724 - AcpiUnloadTable: Not needed.
9725
9726 New ACPICA interfaces:
9727
9728 - AcpiInitializeTables: Must be called before the table manager can be
9729 used.
9730 - AcpiReallocateRootTable: Used to transfer the root table to dynamically
9731 allocated memory after it becomes available.
9732 - AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
9733 tables
9734 in the RSDT/XSDT.
9735
9736 Other ACPICA changes:
9737
9738 - AcpiGetTableHeader returns the actual mapped table header, not a copy.
9739 Use
9740 AcpiOsUnmapMemory to free this mapping.
9741 - AcpiGetTable returns the actual mapped table. The mapping is managed
9742 internally and must not be deleted by the caller. Use of this interface
9743 causes no additional dynamic memory allocation.
9744 - AcpiFindRootPointer: Support for physical addressing has been
9745 eliminated,
9746 it appeared to be unused.
9747 - The interface to AcpiOsMapMemory has changed to be consistent with the
9748 other allocation interfaces.
9749 - The interface to AcpiOsGetRootPointer has changed to eliminate
9750 unnecessary
9751 parameters.
9752 - ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
9753 64-
9754 bit platforms. Was previously 64 bits on all platforms.
9755 - The interface to the ACPI Global Lock acquire/release macros have
9756 changed
9757 slightly since ACPICA no longer keeps a local copy of the FACS with a
9758 constructed pointer to the actual global lock.
9759
9760 Porting to the new table manager:
9761
9762 - AcpiInitializeTables: Must be called once, and can be called anytime
9763 during the OS initialization process. It allows the host to specify an
9764 area
9765 of memory to be used to store the internal version of the RSDT/XSDT (root
9766 table). This allows the host to access ACPI tables before memory
9767 management
9768 is initialized and running.
9769 - AcpiReallocateRootTable: Can be called after memory management is
9770 running
9771 to copy the root table to a dynamically allocated array, freeing up the
9772 scratch memory specified in the call to AcpiInitializeTables.
9773 - AcpiSubsystemInitialize: This existing interface is independent of the
9774 Table Manager, and does not have to be called before the Table Manager
9775 can
9776 be used, it only must be called before the rest of ACPICA can be used.
9777 - ACPI Tables: Some changes have been made to the names and structure of
9778 the
9779 actbl.h and actbl1.h header files and may require changes to existing
9780 code.
9781 For example, bitfields have been completely removed because of their lack
9782 of
9783 portability across C compilers.
9784 - Update interfaces to the Global Lock acquire/release macros if local
9785 versions are used. (see acwin.h)
9786
9787 Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
9788
9789 New files: tbfind.c
9790
9791 Example Code and Data Size: These are the sizes for the OS-independent
9792 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9793 debug version of the code includes the debug output trace mechanism and
9794 has
9795 a much larger code and data size.
9796
9797 Previous Release:
9798 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
9799 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
9800 Current Release:
9801 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total
9802 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total
9803
9804
9805 2) iASL Compiler/Disassembler and Tools:
9806
9807 No changes for this release.
9808
9809 ----------------------------------------
9810 21 July 2006. Summary of changes for version 20060721:
9811
9812 1) ACPI CA Core Subsystem:
9813
9814 The full source code for the ASL test suite used to validate the iASL
9815 compiler and the ACPICA core subsystem is being released with the ACPICA
9816 source for the first time. The source is contained in a separate package
9817 and
9818 consists of over 1100 files that exercise all ASL/AML operators. The
9819 package
9820 should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
9821 Fiodor
9822 Suietov)
9823
9824 Completed a new design and implementation for support of the ACPI Global
9825 Lock. On the OS side, the global lock is now treated as a standard AML
9826 mutex. Previously, multiple OS threads could "acquire" the global lock
9827 simultaneously. However, this could cause the BIOS to be starved out of
9828 the
9829 lock - especially in cases such as the Embedded Controller driver where
9830 there is a tight coupling between the OS and the BIOS.
9831
9832 Implemented an optimization for the ACPI Global Lock interrupt mechanism.
9833 The Global Lock interrupt handler no longer queues the execution of a
9834 separate thread to signal the global lock semaphore. Instead, the
9835 semaphore
9836 is signaled directly from the interrupt handler.
9837
9838 Implemented support within the AML interpreter for package objects that
9839 contain a larger AML length (package list length) than the package
9840 element
9841 count. In this case, the length of the package is truncated to match the
9842 package element count. Some BIOS code apparently modifies the package
9843 length
9844 on the fly, and this change supports this behavior. Provides
9845 compatibility
9846 with the MS AML interpreter. (With assistance from Fiodor Suietov)
9847
9848 Implemented a temporary fix for the BankValue parameter of a Bank Field
9849 to
9850 support all constant values, now including the Zero and One opcodes.
9851 Evaluation of this parameter must eventually be converted to a full
9852 TermArg
9853 evaluation. A not-implemented error is now returned (temporarily) for
9854 non-
9855 constant values for this parameter.
9856
9857 Fixed problem reports (Fiodor Suietov) integrated:
9858 - Fix for premature object deletion after CopyObject on Operation Region
9859 (BZ
9860 350)
9861
9862 Example Code and Data Size: These are the sizes for the OS-independent
9863 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9864 debug version of the code includes the debug output trace mechanism and
9865 has
9866 a much larger code and data size.
9867
9868 Previous Release:
9869 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total
9870 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total
9871 Current Release:
9872 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
9873 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
9874
9875
9876 2) iASL Compiler/Disassembler and Tools:
9877
9878 No changes for this release.
9879
9880 ----------------------------------------
9881 07 July 2006. Summary of changes for version 20060707:
9882
9883 1) ACPI CA Core Subsystem:
9884
9885 Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
9886 that do not allow the initialization of address pointers within packed
9887 structures - even though the hardware itself may support misaligned
9888 transfers. Some of the debug data structures are packed by default to
9889 minimize size.
9890
9891 Added an error message for the case where AcpiOsGetThreadId() returns
9892 zero.
9893 A non-zero value is required by the core ACPICA code to ensure the proper
9894 operation of AML mutexes and recursive control methods.
9895
9896 The DSDT is now the only ACPI table that determines whether the AML
9897 interpreter is in 32-bit or 64-bit mode. Not really a functional change,
9898 but
9899 the hooks for per-table 32/64 switching have been removed from the code.
9900 A
9901 clarification to the ACPI specification is forthcoming in ACPI 3.0B.
9902
9903 Fixed a possible leak of an OwnerID in the error path of
9904 AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
9905 deletion to a single place in AcpiTbUninstallTable to correct possible
9906 leaks
9907 when using the AcpiTbDeleteTablesByType interface (with assistance from
9908 Lance Ortiz.)
9909
9910 Fixed a problem with Serialized control methods where the semaphore
9911 associated with the method could be over-signaled after multiple method
9912 invocations.
9913
9914 Fixed two issues with the locking of the internal namespace data
9915 structure.
9916 Both the Unload() operator and AcpiUnloadTable interface now lock the
9917 namespace during the namespace deletion associated with the table unload
9918 (with assistance from Linn Crosetto.)
9919
9920 Fixed problem reports (Valery Podrezov) integrated:
9921 - Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
9922
9923 Fixed problem reports (Fiodor Suietov) integrated:
9924 - Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
9925 - On Address Space handler deletion, needless deactivation call (BZ 374)
9926 - AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
9927 375)
9928 - Possible memory leak, Notify sub-objects of Processor, Power,
9929 ThermalZone
9930 (BZ 376)
9931 - AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
9932 - Minimum Length of RSDT should be validated (BZ 379)
9933 - AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
9934 Handler (BZ (380)
9935 - AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
9936 loaded
9937 (BZ 381)
9938
9939 Example Code and Data Size: These are the sizes for the OS-independent
9940 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9941 debug version of the code includes the debug output trace mechanism and
9942 has
9943 a much larger code and data size.
9944
9945 Previous Release:
9946 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total
9947 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total
9948 Current Release:
9949 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
9950 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
9951
9952
9953 2) iASL Compiler/Disassembler and Tools:
9954
9955 Fixed problem reports:
9956 Compiler segfault when ASL contains a long (>1024) String declaration (BZ
9957 436)
9958
9959 ----------------------------------------
9960 23 June 2006. Summary of changes for version 20060623:
9961
9962 1) ACPI CA Core Subsystem:
9963
9964 Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
9965 allows the type to be customized to the host OS for improved efficiency
9966 (since a spinlock is usually a very small object.)
9967
9968 Implemented support for "ignored" bits in the ACPI registers. According
9969 to
9970 the ACPI specification, these bits should be preserved when writing the
9971 registers via a read/modify/write cycle. There are 3 bits preserved in
9972 this
9973 manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
9974
9975 Implemented the initial deployment of new OSL mutex interfaces. Since
9976 some
9977 host operating systems have separate mutex and semaphore objects, this
9978 feature was requested. The base code now uses mutexes (and the new mutex
9979 interfaces) wherever a binary semaphore was used previously. However, for
9980 the current release, the mutex interfaces are defined as macros to map
9981 them
9982 to the existing semaphore interfaces. Therefore, no OSL changes are
9983 required
9984 at this time. (See acpiosxf.h)
9985
9986 Fixed several problems with the support for the control method SyncLevel
9987 parameter. The SyncLevel now works according to the ACPI specification
9988 and
9989 in concert with the Mutex SyncLevel parameter, since the current
9990 SyncLevel
9991 is a property of the executing thread. Mutual exclusion for control
9992 methods
9993 is now implemented with a mutex instead of a semaphore.
9994
9995 Fixed three instances of the use of the C shift operator in the bitfield
9996 support code (exfldio.c) to avoid the use of a shift value larger than
9997 the
9998 target data width. The behavior of C compilers is undefined in this case
9999 and
10000 can cause unpredictable results, and therefore the case must be detected
10001 and
10002 avoided. (Fiodor Suietov)
10003
10004 Added an info message whenever an SSDT or OEM table is loaded dynamically
10005 via the Load() or LoadTable() ASL operators. This should improve
10006 debugging
10007 capability since it will show exactly what tables have been loaded
10008 (beyond
10009 the tables present in the RSDT/XSDT.)
10010
10011 Example Code and Data Size: These are the sizes for the OS-independent
10012 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10013 debug version of the code includes the debug output trace mechanism and
10014 has
10015 a much larger code and data size.
10016
10017 Previous Release:
10018 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total
10019 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total
10020 Current Release:
10021 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total
10022 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total
10023
10024
10025 2) iASL Compiler/Disassembler and Tools:
10026
10027 No changes for this release.
10028
10029 ----------------------------------------
10030 08 June 2006. Summary of changes for version 20060608:
10031
10032 1) ACPI CA Core Subsystem:
10033
10034 Converted the locking mutex used for the ACPI hardware to a spinlock.
10035 This
10036 change should eliminate all problems caused by attempting to acquire a
10037 semaphore at interrupt level, and it means that all ACPICA external
10038 interfaces that directly access the ACPI hardware can be safely called
10039 from
10040 interrupt level. OSL code that implements the semaphore interfaces should
10041 be
10042 able to eliminate any workarounds for being called at interrupt level.
10043
10044 Fixed a regression introduced in 20060526 where the ACPI device
10045 initialization could be prematurely aborted with an AE_NOT_FOUND if a
10046 device
10047 did not have an optional _INI method.
10048
10049 Fixed an IndexField issue where a write to the Data Register should be
10050 limited in size to the AccessSize (width) of the IndexField itself. (BZ
10051 433,
10052 Fiodor Suietov)
10053
10054 Fixed problem reports (Valery Podrezov) integrated:
10055 - Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
10056
10057 Fixed problem reports (Fiodor Suietov) integrated:
10058 - AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
10059
10060 Removed four global mutexes that were obsolete and were no longer being
10061 used.
10062
10063 Example Code and Data Size: These are the sizes for the OS-independent
10064 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10065 debug version of the code includes the debug output trace mechanism and
10066 has
10067 a much larger code and data size.
10068
10069 Previous Release:
10070 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total
10071 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total
10072 Current Release:
10073 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total
10074 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total
10075
10076
10077 2) iASL Compiler/Disassembler and Tools:
10078
10079 Fixed a fault when using -g option (get tables from registry) on Windows
10080 machines.
10081
10082 Fixed problem reports integrated:
10083 - Generate error if CreateField NumBits parameter is zero. (BZ 405)
10084 - Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
10085 Suietov)
10086 - Global table revision override (-r) is ignored (BZ 413)
10087
10088 ----------------------------------------
10089 26 May 2006. Summary of changes for version 20060526:
10090
10091 1) ACPI CA Core Subsystem:
10092
10093 Restructured, flattened, and simplified the internal interfaces for
10094 namespace object evaluation - resulting in smaller code, less CPU stack
10095 use,
10096 and fewer interfaces. (With assistance from Mikhail Kouzmich)
10097
10098 Fixed a problem with the CopyObject operator where the first parameter
10099 was
10100 not typed correctly for the parser, interpreter, compiler, and
10101 disassembler.
10102 Caused various errors and unexpected behavior.
10103
10104 Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
10105 produced incorrect results with some C compilers. Since the behavior of C
10106 compilers when the shift value is larger than the datatype width is
10107 apparently not well defined, the interpreter now detects this condition
10108 and
10109 simply returns zero as expected in all such cases. (BZ 395)
10110
10111 Fixed problem reports (Valery Podrezov) integrated:
10112 - Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
10113 - Allow interpreter to handle nested method declarations (BZ 5361)
10114
10115 Fixed problem reports (Fiodor Suietov) integrated:
10116 - AcpiTerminate doesn't free debug memory allocation list objects (BZ
10117 355)
10118 - After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
10119 356)
10120 - AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
10121 - Resource Manager should return AE_TYPE for non-device objects (BZ 358)
10122 - Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
10123 - Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
10124 - Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
10125 - Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
10126 - AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
10127 365)
10128 - Status of the Global Initialization Handler call not used (BZ 366)
10129 - Incorrect object parameter to Global Initialization Handler (BZ 367)
10130
10131 Example Code and Data Size: These are the sizes for the OS-independent
10132 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10133 debug version of the code includes the debug output trace mechanism and
10134 has
10135 a much larger code and data size.
10136
10137 Previous Release:
10138 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total
10139 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total
10140 Current Release:
10141 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total
10142 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total
10143
10144
10145 2) iASL Compiler/Disassembler and Tools:
10146
10147 Modified the parser to allow the names IO, DMA, and IRQ to be used as
10148 namespace identifiers with no collision with existing resource descriptor
10149 macro names. This provides compatibility with other ASL compilers and is
10150 most useful for disassembly/recompilation of existing tables without
10151 parse
10152 errors. (With assistance from Thomas Renninger)
10153
10154 Disassembler: fixed an incorrect disassembly problem with the
10155 DataTableRegion and CopyObject operators. Fixed a possible fault during
10156 disassembly of some Alias operators.
10157
10158 ----------------------------------------
10159 12 May 2006. Summary of changes for version 20060512:
10160
10161 1) ACPI CA Core Subsystem:
10162
10163 Replaced the AcpiOsQueueForExecution interface with a new interface named
10164 AcpiOsExecute. The major difference is that the new interface does not
10165 have
10166 a Priority parameter, this appeared to be useless and has been replaced
10167 by
10168 a
10169 Type parameter. The Type tells the host what type of execution is being
10170 requested, such as global lock handler, notify handler, GPE handler, etc.
10171 This allows the host to queue and execute the request as appropriate for
10172 the
10173 request type, possibly using different work queues and different
10174 priorities
10175 for the various request types. This enables fixes for multithreading
10176 deadlock problems such as BZ #5534, and will require changes to all
10177 existing
10178 OS interface layers. (Alexey Starikovskiy and Bob Moore)
10179
10180 Fixed a possible memory leak associated with the support for the so-
10181 called
10182 "implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
10183 Suietov)
10184
10185 Fixed a problem with the Load() operator where a table load from an
10186 operation region could overwrite an internal table buffer by up to 7
10187 bytes
10188 and cause alignment faults on IPF systems. (With assistance from Luming
10189 Yu)
10190
10191 Example Code and Data Size: These are the sizes for the OS-independent
10192 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10193 debug version of the code includes the debug output trace mechanism and
10194 has
10195 a much larger code and data size.
10196
10197 Previous Release:
10198 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total
10199 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total
10200 Current Release:
10201 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total
10202 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total
10203
10204
10205
10206 2) iASL Compiler/Disassembler and Tools:
10207
10208 Disassembler: Implemented support to cross reference the internal
10209 namespace
10210 and automatically generate ASL External() statements for symbols not
10211 defined
10212 within the current table being disassembled. This will simplify the
10213 disassembly and recompilation of interdependent tables such as SSDTs
10214 since
10215 these statements will no longer have to be added manually.
10216
10217 Disassembler: Implemented experimental support to automatically detect
10218 invocations of external control methods and generate appropriate
10219 External()
10220 statements. This is problematic because the AML cannot be correctly
10221 parsed
10222 until the number of arguments for each control method is known.
10223 Currently,
10224 standalone method invocations and invocations as the source operand of a
10225 Store() statement are supported.
10226
10227 Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
10228 LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
10229 LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
10230 more readable and likely closer to the original ASL source.
10231
10232 ----------------------------------------
10233 21 April 2006. Summary of changes for version 20060421:
10234
10235 1) ACPI CA Core Subsystem:
10236
10237 Removed a device initialization optimization introduced in 20051216 where
10238 the _STA method was not run unless an _INI was also present for the same
10239 device. This optimization could cause problems because it could allow
10240 _INI
10241 methods to be run within a not-present device subtree. (If a not-present
10242 device had no _INI, _STA would not be run, the not-present status would
10243 not
10244 be discovered, and the children of the device would be incorrectly
10245 traversed.)
10246
10247 Implemented a new _STA optimization where namespace subtrees that do not
10248 contain _INI are identified and ignored during device initialization.
10249 Selectively running _STA can significantly improve boot time on large
10250 machines (with assistance from Len Brown.)
10251
10252 Implemented support for the device initialization case where the returned
10253 _STA flags indicate a device not-present but functioning. In this case,
10254 _INI
10255 is not run, but the device children are examined for presence, as per the
10256 ACPI specification.
10257
10258 Implemented an additional change to the IndexField support in order to
10259 conform to MS behavior. The value written to the Index Register is not
10260 simply a byte offset, it is a byte offset in units of the access width of
10261 the parent Index Field. (Fiodor Suietov)
10262
10263 Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
10264 interface is called during the creation of all AML operation regions, and
10265 allows the host OS to exert control over what addresses it will allow the
10266 AML code to access. Operation Regions whose addresses are disallowed will
10267 cause a runtime exception when they are actually accessed (will not
10268 affect
10269 or abort table loading.) See oswinxf or osunixxf for an example
10270 implementation.
10271
10272 Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
10273 interface allows the host OS to match the various "optional"
10274 interface/behavior strings for the _OSI predefined control method as
10275 appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
10276 for an example implementation.
10277
10278 Restructured and corrected various problems in the exception handling
10279 code
10280 paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
10281 (with assistance from Takayoshi Kochi.)
10282
10283 Modified the Linux source converter to ignore quoted string literals
10284 while
10285 converting identifiers from mixed to lower case. This will correct
10286 problems
10287 with the disassembler and other areas where such strings must not be
10288 modified.
10289
10290 The ACPI_FUNCTION_* macros no longer require quotes around the function
10291 name. This allows the Linux source converter to convert the names, now
10292 that
10293 the converter ignores quoted strings.
10294
10295 Example Code and Data Size: These are the sizes for the OS-independent
10296 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10297 debug version of the code includes the debug output trace mechanism and
10298 has
10299 a much larger code and data size.
10300
10301 Previous Release:
10302
10303 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total
10304 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total
10305 Current Release:
10306 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total
10307 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total
10308
10309
10310 2) iASL Compiler/Disassembler and Tools:
10311
10312 Implemented 3 new warnings for iASL, and implemented multiple warning
10313 levels
10314 (w2 flag).
10315
10316 1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
10317 not
10318 WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
10319 check for the possible timeout, a warning is issued.
10320
10321 2) Useless operators: If an ASL operator does not specify an optional
10322 target
10323 operand and it also does not use the function return value from the
10324 operator, a warning is issued since the operator effectively does
10325 nothing.
10326
10327 3) Unreferenced objects: If a namespace object is created, but never
10328 referenced, a warning is issued. This is a warning level 2 since there
10329 are
10330 cases where this is ok, such as when a secondary table is loaded that
10331 uses
10332 the unreferenced objects. Even so, care is taken to only flag objects
10333 that
10334 don't look like they will ever be used. For example, the reserved methods
10335 (starting with an underscore) are usually not referenced because it is
10336 expected that the OS will invoke them.
10337
10338 ----------------------------------------
10339 31 March 2006. Summary of changes for version 20060331:
10340
10341 1) ACPI CA Core Subsystem:
10342
10343 Implemented header file support for the following additional ACPI tables:
10344 ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
10345 support,
10346 all current and known ACPI tables are now defined in the ACPICA headers
10347 and
10348 are available for use by device drivers and other software.
10349
10350 Implemented support to allow tables that contain ACPI names with invalid
10351 characters to be loaded. Previously, this would cause the table load to
10352 fail, but since there are several known cases of such tables on existing
10353 machines, this change was made to enable ACPI support for them. Also,
10354 this
10355 matches the behavior of the Microsoft ACPI implementation.
10356
10357 Fixed a couple regressions introduced during the memory optimization in
10358 the
10359 20060317 release. The namespace node definition required additional
10360 reorganization and an internal datatype that had been changed to 8-bit
10361 was
10362 restored to 32-bit. (Valery Podrezov)
10363
10364 Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
10365 could be passed through to AcpiOsReleaseObject which is unexpected. Such
10366 null pointers are now trapped and ignored, matching the behavior of the
10367 previous implementation before the deployment of AcpiOsReleaseObject.
10368 (Valery Podrezov, Fiodor Suietov)
10369
10370 Fixed a memory mapping leak during the deletion of a SystemMemory
10371 operation
10372 region where a cached memory mapping was not deleted. This became a
10373 noticeable problem for operation regions that are defined within
10374 frequently
10375 used control methods. (Dana Meyers)
10376
10377 Reorganized the ACPI table header files into two main files: one for the
10378 ACPI tables consumed by the ACPICA core, and another for the
10379 miscellaneous
10380 ACPI tables that are consumed by the drivers and other software. The
10381 various
10382 FADT definitions were merged into one common section and three different
10383 tables (ACPI 1.0, 1.0+, and 2.0)
10384
10385 Example Code and Data Size: These are the sizes for the OS-independent
10386 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10387 debug version of the code includes the debug output trace mechanism and
10388 has
10389 a much larger code and data size.
10390
10391 Previous Release:
10392 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total
10393 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total
10394 Current Release:
10395 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total
10396 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total
10397
10398
10399 2) iASL Compiler/Disassembler and Tools:
10400
10401 Disassembler: Implemented support to decode and format all non-AML ACPI
10402 tables (tables other than DSDTs and SSDTs.) This includes the new tables
10403 added to the ACPICA headers, therefore all current and known ACPI tables
10404 are
10405 supported.
10406
10407 Disassembler: The change to allow ACPI names with invalid characters also
10408 enables the disassembly of such tables. Invalid characters within names
10409 are
10410 changed to '*' to make the name printable; the iASL compiler will still
10411 generate an error for such names, however, since this is an invalid ACPI
10412 character.
10413
10414 Implemented an option for AcpiXtract (-a) to extract all tables found in
10415 the
10416 input file. The default invocation extracts only the DSDTs and SSDTs.
10417
10418 Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
10419 makefile for the AcpiXtract utility.
10420
10421 ----------------------------------------
10422 17 March 2006. Summary of changes for version 20060317:
10423
10424 1) ACPI CA Core Subsystem:
10425
10426 Implemented the use of a cache object for all internal namespace nodes.
10427 Since there are about 1000 static nodes in a typical system, this will
10428 decrease memory use for cache implementations that minimize per-
10429 allocation
10430 overhead (such as a slab allocator.)
10431
10432 Removed the reference count mechanism for internal namespace nodes, since
10433 it
10434 was deemed unnecessary. This reduces the size of each namespace node by
10435 about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
10436 case,
10437 and 32 bytes for the 64-bit case.
10438
10439 Optimized several internal data structures to reduce object size on 64-
10440 bit
10441 platforms by packing data within the 64-bit alignment. This includes the
10442 frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
10443 instances corresponding to the namespace objects.
10444
10445 Added two new strings for the predefined _OSI method: "Windows 2001.1
10446 SP1"
10447 and "Windows 2006".
10448
10449 Split the allocation tracking mechanism out to a separate file, from
10450 utalloc.c to uttrack.c. This mechanism appears to be only useful for
10451 application-level code. Kernels may wish to not include uttrack.c in
10452 distributions.
10453
10454 Removed all remnants of the obsolete ACPI_REPORT_* macros and the
10455 associated
10456 code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
10457 macros.)
10458
10459 Code and Data Size: These are the sizes for the acpica.lib produced by
10460 the
10461 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
10462 ACPI
10463 driver or OSPM code. The debug version of the code includes the debug
10464 output
10465 trace mechanism and has a much larger code and data size. Note that these
10466 values will vary depending on the efficiency of the compiler and the
10467 compiler options used during generation.
10468
10469 Previous Release:
10470 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
10471 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total
10472 Current Release:
10473 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total
10474 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total
10475
10476
10477 2) iASL Compiler/Disassembler and Tools:
10478
10479 Implemented an ANSI C version of the acpixtract utility. This version
10480 will
10481 automatically extract the DSDT and all SSDTs from the input acpidump text
10482 file and dump the binary output to separate files. It can also display a
10483 summary of the input file including the headers for each table found and
10484 will extract any single ACPI table, with any signature. (See
10485 source/tools/acpixtract)
10486
10487 ----------------------------------------
10488 10 March 2006. Summary of changes for version 20060310:
10489
10490 1) ACPI CA Core Subsystem:
10491
10492 Tagged all external interfaces to the subsystem with the new
10493 ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
10494 assist
10495 kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
10496 macro. The default definition is NULL.
10497
10498 Added the ACPI_THREAD_ID type for the return value from
10499 AcpiOsGetThreadId.
10500 This allows the host to define this as necessary to simplify kernel
10501 integration. The default definition is ACPI_NATIVE_UINT.
10502
10503 Fixed two interpreter problems related to error processing, the deletion
10504 of
10505 objects, and placing invalid pointers onto the internal operator result
10506 stack. BZ 6028, 6151 (Valery Podrezov)
10507
10508 Increased the reference count threshold where a warning is emitted for
10509 large
10510 reference counts in order to eliminate unnecessary warnings on systems
10511 with
10512 large namespaces (especially 64-bit.) Increased the value from 0x400 to
10513 0x800.
10514
10515 Due to universal disagreement as to the meaning of the 'c' in the
10516 calloc()
10517 function, the ACPI_MEM_CALLOCATE macro has been renamed to
10518 ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
10519 ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
10520 ACPI_FREE.
10521
10522 Code and Data Size: These are the sizes for the acpica.lib produced by
10523 the
10524 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
10525 ACPI
10526 driver or OSPM code. The debug version of the code includes the debug
10527 output
10528 trace mechanism and has a much larger code and data size. Note that these
10529 values will vary depending on the efficiency of the compiler and the
10530 compiler options used during generation.
10531
10532 Previous Release:
10533 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total
10534 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total
10535 Current Release:
10536 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
10537 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total
10538
10539
10540 2) iASL Compiler/Disassembler:
10541
10542 Disassembler: implemented support for symbolic resource descriptor
10543 references. If a CreateXxxxField operator references a fixed offset
10544 within
10545 a
10546 resource descriptor, a name is assigned to the descriptor and the offset
10547 is
10548 translated to the appropriate resource tag and pathname. The addition of
10549 this support brings the disassembled code very close to the original ASL
10550 source code and helps eliminate run-time errors when the disassembled
10551 code
10552 is modified (and recompiled) in such a way as to invalidate the original
10553 fixed offsets.
10554
10555 Implemented support for a Descriptor Name as the last parameter to the
10556 ASL
10557 Register() macro. This parameter was inadvertently left out of the ACPI
10558 specification, and will be added for ACPI 3.0b.
10559
10560 Fixed a problem where the use of the "_OSI" string (versus the full path
10561 "\_OSI") caused an internal compiler error. ("No back ptr to op")
10562
10563 Fixed a problem with the error message that occurs when an invalid string
10564 is
10565 used for a _HID object (such as one with an embedded asterisk:
10566 "*PNP010A".)
10567 The correct message is now displayed.
10568
10569 ----------------------------------------
10570 17 February 2006. Summary of changes for version 20060217:
10571
10572 1) ACPI CA Core Subsystem:
10573
10574 Implemented a change to the IndexField support to match the behavior of
10575 the
10576 Microsoft AML interpreter. The value written to the Index register is now
10577 a
10578 byte offset, no longer an index based upon the width of the Data
10579 register.
10580 This should fix IndexField problems seen on some machines where the Data
10581 register is not exactly one byte wide. The ACPI specification will be
10582 clarified on this point.
10583
10584 Fixed a problem where several resource descriptor types could overrun the
10585 internal descriptor buffer due to size miscalculation: VendorShort,
10586 VendorLong, and Interrupt. This was noticed on IA64 machines, but could
10587 affect all platforms.
10588
10589 Fixed a problem where individual resource descriptors were misaligned
10590 within
10591 the internal buffer, causing alignment faults on IA64 platforms.
10592
10593 Code and Data Size: These are the sizes for the acpica.lib produced by
10594 the
10595 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
10596 ACPI
10597 driver or OSPM code. The debug version of the code includes the debug
10598 output
10599 trace mechanism and has a much larger code and data size. Note that these
10600 values will vary depending on the efficiency of the compiler and the
10601 compiler options used during generation.
10602
10603 Previous Release:
10604 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
10605 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total
10606 Current Release:
10607 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total
10608 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total
10609
10610
10611 2) iASL Compiler/Disassembler:
10612
10613 Implemented support for new reserved names: _WDG and _WED are Microsoft
10614 extensions for Windows Instrumentation Management, _TDL is a new ACPI-
10615 defined method (Throttling Depth Limit.)
10616
10617 Fixed a problem where a zero-length VendorShort or VendorLong resource
10618 descriptor was incorrectly emitted as a descriptor of length one.
10619
10620 ----------------------------------------
10621 10 February 2006. Summary of changes for version 20060210:
10622
10623 1) ACPI CA Core Subsystem:
10624
10625 Removed a couple of extraneous ACPI_ERROR messages that appeared during
10626 normal execution. These became apparent after the conversion from
10627 ACPI_DEBUG_PRINT.
10628
10629 Fixed a problem where the CreateField operator could hang if the BitIndex
10630 or
10631 NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
10632
10633 Fixed a problem where a DeRefOf operation on a buffer object incorrectly
10634 failed with an exception. This also fixes a couple of related RefOf and
10635 DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
10636
10637 Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
10638 of
10639 AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
10640 BZ
10641 5480)
10642
10643 Implemented a memory cleanup at the end of the execution of each
10644 iteration
10645 of an AML While() loop, preventing the accumulation of outstanding
10646 objects.
10647 (Valery Podrezov, BZ 5427)
10648
10649 Eliminated a chunk of duplicate code in the object resolution code.
10650 (Valery
10651 Podrezov, BZ 5336)
10652
10653 Fixed several warnings during the 64-bit code generation.
10654
10655 The AcpiSrc source code conversion tool now inserts one line of
10656 whitespace
10657 after an if() statement that is followed immediately by a comment,
10658 improving
10659 readability of the Linux code.
10660
10661 Code and Data Size: The current and previous library sizes for the core
10662 subsystem are shown below. These are the code and data sizes for the
10663 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10664 These
10665 values do not include any ACPI driver or OSPM code. The debug version of
10666 the
10667 code includes the debug output trace mechanism and has a much larger code
10668 and data size. Note that these values will vary depending on the
10669 efficiency
10670 of the compiler and the compiler options used during generation.
10671
10672 Previous Release:
10673 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total
10674 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total
10675 Current Release:
10676 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
10677 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total
10678
10679
10680 2) iASL Compiler/Disassembler:
10681
10682 Fixed a problem with the disassembly of a BankField operator with a
10683 complex
10684 expression for the BankValue parameter.
10685
10686 ----------------------------------------
10687 27 January 2006. Summary of changes for version 20060127:
10688
10689 1) ACPI CA Core Subsystem:
10690
10691 Implemented support in the Resource Manager to allow unresolved
10692 namestring
10693 references within resource package objects for the _PRT method. This
10694 support
10695 is in addition to the previously implemented unresolved reference support
10696 within the AML parser. If the interpreter slack mode is enabled, these
10697 unresolved references will be passed through to the caller as a NULL
10698 package
10699 entry.
10700
10701 Implemented and deployed new macros and functions for error and warning
10702 messages across the subsystem. These macros are simpler and generate less
10703 code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
10704 ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
10705 macros remain defined to allow ACPI drivers time to migrate to the new
10706 macros.
10707
10708 Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
10709 the
10710 Acquire/Release Lock OSL interfaces.
10711
10712 Fixed a problem where Alias ASL operators are sometimes not correctly
10713 resolved, in both the interpreter and the iASL compiler.
10714
10715 Fixed several problems with the implementation of the
10716 ConcatenateResTemplate
10717 ASL operator. As per the ACPI specification, zero length buffers are now
10718 treated as a single EndTag. One-length buffers always cause a fatal
10719 exception. Non-zero length buffers that do not end with a full 2-byte
10720 EndTag
10721 cause a fatal exception.
10722
10723 Fixed a possible structure overwrite in the AcpiGetObjectInfo external
10724 interface. (With assistance from Thomas Renninger)
10725
10726 Code and Data Size: The current and previous library sizes for the core
10727 subsystem are shown below. These are the code and data sizes for the
10728 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10729 These
10730 values do not include any ACPI driver or OSPM code. The debug version of
10731 the
10732 code includes the debug output trace mechanism and has a much larger code
10733 and data size. Note that these values will vary depending on the
10734 efficiency
10735 of the compiler and the compiler options used during generation.
10736
10737 Previous Release:
10738 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total
10739 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total
10740 Current Release:
10741 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total
10742 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total
10743
10744
10745 2) iASL Compiler/Disassembler:
10746
10747 Fixed an internal error that was generated for any forward references to
10748 ASL
10749 Alias objects.
10750
10751 ----------------------------------------
10752 13 January 2006. Summary of changes for version 20060113:
10753
10754 1) ACPI CA Core Subsystem:
10755
10756 Added 2006 copyright to all module headers and signons. This affects
10757 virtually every file in the ACPICA core subsystem, iASL compiler, and the
10758 utilities.
10759
10760 Enhanced the ACPICA error reporting in order to simplify user migration
10761 to
10762 the non-debug version of ACPICA. Replaced all instances of the
10763 ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
10764 debug
10765 levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
10766 respectively. This preserves all error and warning messages in the non-
10767 debug
10768 version of the ACPICA code (this has been referred to as the "debug lite"
10769 option.) Over 200 cases were converted to create a total of over 380
10770 error/warning messages across the ACPICA code. This increases the code
10771 and
10772 data size of the default non-debug version of the code somewhat (about
10773 13K),
10774 but all error/warning reporting may be disabled if desired (and code
10775 eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
10776 configuration option. The size of the debug version of ACPICA remains
10777 about
10778 the same.
10779
10780 Fixed a memory leak within the AML Debugger "Set" command. One object was
10781 not properly deleted for every successful invocation of the command.
10782
10783 Code and Data Size: The current and previous library sizes for the core
10784 subsystem are shown below. These are the code and data sizes for the
10785 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10786 These
10787 values do not include any ACPI driver or OSPM code. The debug version of
10788 the
10789 code includes the debug output trace mechanism and has a much larger code
10790 and data size. Note that these values will vary depending on the
10791 efficiency
10792 of the compiler and the compiler options used during generation.
10793
10794 Previous Release:
10795 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total
10796 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total
10797 Current Release:
10798 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total
10799 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total
10800
10801
10802 2) iASL Compiler/Disassembler:
10803
10804 The compiler now officially supports the ACPI 3.0a specification that was
10805 released on December 30, 2005. (Specification is available at
10806 www.acpi.info)
10807
10808 ----------------------------------------
10809 16 December 2005. Summary of changes for version 20051216:
10810
10811 1) ACPI CA Core Subsystem:
10812
10813 Implemented optional support to allow unresolved names within ASL Package
10814 objects. A null object is inserted in the package when a named reference
10815 cannot be located in the current namespace. Enabled via the interpreter
10816 slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
10817 machines
10818 that contain such code.
10819
10820 Implemented an optimization to the initialization sequence that can
10821 improve
10822 boot time. During ACPI device initialization, the _STA method is now run
10823 if
10824 and only if the _INI method exists. The _STA method is used to determine
10825 if
10826 the device is present; An _INI can only be run if _STA returns present,
10827 but
10828 it is a waste of time to run the _STA method if the _INI does not exist.
10829 (Prototype and assistance from Dong Wei)
10830
10831 Implemented use of the C99 uintptr_t for the pointer casting macros if it
10832 is
10833 available in the current compiler. Otherwise, the default (void *) cast
10834 is
10835 used as before.
10836
10837 Fixed some possible memory leaks found within the execution path of the
10838 Break, Continue, If, and CreateField operators. (Valery Podrezov)
10839
10840 Fixed a problem introduced in the 20051202 release where an exception is
10841 generated during method execution if a control method attempts to declare
10842 another method.
10843
10844 Moved resource descriptor string constants that are used by both the AML
10845 disassembler and AML debugger to the common utilities directory so that
10846 these components are independent.
10847
10848 Implemented support in the AcpiExec utility (-e switch) to globally
10849 ignore
10850 exceptions during control method execution (method is not aborted.)
10851
10852 Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
10853 generation.
10854
10855 Code and Data Size: The current and previous library sizes for the core
10856 subsystem are shown below. These are the code and data sizes for the
10857 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10858 These
10859 values do not include any ACPI driver or OSPM code. The debug version of
10860 the
10861 code includes the debug output trace mechanism and has a much larger code
10862 and data size. Note that these values will vary depending on the
10863 efficiency
10864 of the compiler and the compiler options used during generation.
10865
10866 Previous Release:
10867 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
10868 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total
10869 Current Release:
10870 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total
10871 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total
10872
10873
10874 2) iASL Compiler/Disassembler:
10875
10876 Fixed a problem where a CPU stack overflow fault could occur if a
10877 recursive
10878 method call was made from within a Return statement.
10879
10880 ----------------------------------------
10881 02 December 2005. Summary of changes for version 20051202:
10882
10883 1) ACPI CA Core Subsystem:
10884
10885 Modified the parsing of control methods to no longer create namespace
10886 objects during the first pass of the parse. Objects are now created only
10887 during the execute phase, at the moment the namespace creation operator
10888 is
10889 encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
10890 This
10891 should eliminate ALREADY_EXISTS exceptions seen on some machines where
10892 reentrant control methods are protected by an AML mutex. The mutex will
10893 now
10894 correctly block multiple threads from attempting to create the same
10895 object
10896 more than once.
10897
10898 Increased the number of available Owner Ids for namespace object tracking
10899 from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
10900 on
10901 some machines with a large number of ACPI tables (either static or
10902 dynamic).
10903
10904 Fixed a problem with the AcpiExec utility where a fault could occur when
10905 the
10906 -b switch (batch mode) is used.
10907
10908 Enhanced the namespace dump routine to output the owner ID for each
10909 namespace object.
10910
10911 Code and Data Size: The current and previous library sizes for the core
10912 subsystem are shown below. These are the code and data sizes for the
10913 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10914 These
10915 values do not include any ACPI driver or OSPM code. The debug version of
10916 the
10917 code includes the debug output trace mechanism and has a much larger code
10918 and data size. Note that these values will vary depending on the
10919 efficiency
10920 of the compiler and the compiler options used during generation.
10921
10922 Previous Release:
10923 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
10924 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
10925 Current Release:
10926 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
10927 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total
10928
10929
10930 2) iASL Compiler/Disassembler:
10931
10932 Fixed a parse error during compilation of certain Switch/Case constructs.
10933 To
10934 simplify the parse, the grammar now allows for multiple Default
10935 statements
10936 and this error is now detected and flagged during the analysis phase.
10937
10938 Disassembler: The disassembly now includes the contents of the original
10939 table header within a comment at the start of the file. This includes the
10940 name and version of the original ASL compiler.
10941
10942 ----------------------------------------
10943 17 November 2005. Summary of changes for version 20051117:
10944
10945 1) ACPI CA Core Subsystem:
10946
10947 Fixed a problem in the AML parser where the method thread count could be
10948 decremented below zero if any errors occurred during the method parse
10949 phase.
10950 This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
10951 machines.
10952 This also fixed a related regression with the mechanism that detects and
10953 corrects methods that cannot properly handle reentrancy (related to the
10954 deployment of the new OwnerId mechanism.)
10955
10956 Eliminated the pre-parsing of control methods (to detect errors) during
10957 table load. Related to the problem above, this was causing unwind issues
10958 if
10959 any errors occurred during the parse, and it seemed to be overkill. A
10960 table
10961 load should not be aborted if there are problems with any single control
10962 method, thus rendering this feature rather pointless.
10963
10964 Fixed a problem with the new table-driven resource manager where an
10965 internal
10966 buffer overflow could occur for small resource templates.
10967
10968 Implemented a new external interface, AcpiGetVendorResource. This
10969 interface
10970 will find and return a vendor-defined resource descriptor within a _CRS
10971 or
10972 _PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
10973 Helgaas.
10974
10975 Removed the length limit (200) on string objects as per the upcoming ACPI
10976 3.0A specification. This affects the following areas of the interpreter:
10977 1)
10978 any implicit conversion of a Buffer to a String, 2) a String object
10979 result
10980 of the ASL Concatentate operator, 3) the String object result of the ASL
10981 ToString operator.
10982
10983 Fixed a problem in the Windows OS interface layer (OSL) where a
10984 WAIT_FOREVER
10985 on a semaphore object would incorrectly timeout. This allows the
10986 multithreading features of the AcpiExec utility to work properly under
10987 Windows.
10988
10989 Updated the Linux makefiles for the iASL compiler and AcpiExec to include
10990 the recently added file named "utresrc.c".
10991
10992 Code and Data Size: The current and previous library sizes for the core
10993 subsystem are shown below. These are the code and data sizes for the
10994 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10995 These
10996 values do not include any ACPI driver or OSPM code. The debug version of
10997 the
10998 code includes the debug output trace mechanism and has a much larger code
10999 and data size. Note that these values will vary depending on the
11000 efficiency
11001 of the compiler and the compiler options used during generation.
11002
11003 Previous Release:
11004 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total
11005 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
11006 Current Release:
11007 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
11008 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
11009
11010
11011 2) iASL Compiler/Disassembler:
11012
11013 Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
11014 specification. For the iASL compiler, this means that string literals
11015 within
11016 the source ASL can be of any length.
11017
11018 Enhanced the listing output to dump the AML code for resource descriptors
11019 immediately after the ASL code for each descriptor, instead of in a block
11020 at
11021 the end of the entire resource template.
11022
11023 Enhanced the compiler debug output to dump the entire original parse tree
11024 constructed during the parse phase, before any transforms are applied to
11025 the
11026 tree. The transformed tree is dumped also.
11027
11028 ----------------------------------------
11029 02 November 2005. Summary of changes for version 20051102:
11030
11031 1) ACPI CA Core Subsystem:
11032
11033 Modified the subsystem initialization sequence to improve GPE support.
11034 The
11035 GPE initialization has been split into two parts in order to defer
11036 execution
11037 of the _PRW methods (Power Resources for Wake) until after the hardware
11038 is
11039 fully initialized and the SCI handler is installed. This allows the _PRW
11040 methods to access fields protected by the Global Lock. This will fix
11041 systems
11042 where a NO_GLOBAL_LOCK exception has been seen during initialization.
11043
11044 Converted the ACPI internal object disassemble and display code within
11045 the
11046 AML debugger to fully table-driven operation, reducing code size and
11047 increasing maintainability.
11048
11049 Fixed a regression with the ConcatenateResTemplate() ASL operator
11050 introduced
11051 in the 20051021 release.
11052
11053 Implemented support for "local" internal ACPI object types within the
11054 debugger "Object" command and the AcpiWalkNamespace external interfaces.
11055 These local types include RegionFields, BankFields, IndexFields, Alias,
11056 and
11057 reference objects.
11058
11059 Moved common AML resource handling code into a new file, "utresrc.c".
11060 This
11061 code is shared by both the Resource Manager and the AML Debugger.
11062
11063 Code and Data Size: The current and previous library sizes for the core
11064 subsystem are shown below. These are the code and data sizes for the
11065 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11066 These
11067 values do not include any ACPI driver or OSPM code. The debug version of
11068 the
11069 code includes the debug output trace mechanism and has a much larger code
11070 and data size. Note that these values will vary depending on the
11071 efficiency
11072 of the compiler and the compiler options used during generation.
11073
11074 Previous Release:
11075 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total
11076 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total
11077 Current Release:
11078 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total
11079 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
11080
11081
11082 2) iASL Compiler/Disassembler:
11083
11084 Fixed a problem with very large initializer lists (more than 4000
11085 elements)
11086 for both Buffer and Package objects where the parse stack could overflow.
11087
11088 Enhanced the pre-compile source code scan for non-ASCII characters to
11089 ignore
11090 characters within comment fields. The scan is now always performed and is
11091 no
11092 longer optional, detecting invalid characters within a source file
11093 immediately rather than during the parse phase or later.
11094
11095 Enhanced the ASL grammar definition to force early reductions on all
11096 list-
11097 style grammar elements so that the overall parse stack usage is greatly
11098 reduced. This should improve performance and reduce the possibility of
11099 parse
11100 stack overflow.
11101
11102 Eliminated all reduce/reduce conflicts in the iASL parser generation.
11103 Also,
11104 with the addition of a %expected statement, the compiler generates from
11105 source with no warnings.
11106
11107 Fixed a possible segment fault in the disassembler if the input filename
11108 does not contain a "dot" extension (Thomas Renninger).
11109
11110 ----------------------------------------
11111 21 October 2005. Summary of changes for version 20051021:
11112
11113 1) ACPI CA Core Subsystem:
11114
11115 Implemented support for the EM64T and other x86-64 processors. This
11116 essentially entails recognizing that these processors support non-aligned
11117 memory transfers. Previously, all 64-bit processors were assumed to lack
11118 hardware support for non-aligned transfers.
11119
11120 Completed conversion of the Resource Manager to nearly full table-driven
11121 operation. Specifically, the resource conversion code (convert AML to
11122 internal format and the reverse) and the debug code to dump internal
11123 resource descriptors are fully table-driven, reducing code and data size
11124 and
11125 improving maintainability.
11126
11127 The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
11128 word
11129 on 64-bit processors instead of a fixed 32-bit word. (With assistance
11130 from
11131 Alexey Starikovskiy)
11132
11133 Implemented support within the resource conversion code for the Type-
11134 Specific byte within the various ACPI 3.0 *WordSpace macros.
11135
11136 Fixed some issues within the resource conversion code for the type-
11137 specific
11138 flags for both Memory and I/O address resource descriptors. For Memory,
11139 implemented support for the MTP and TTP flags. For I/O, split the TRS and
11140 TTP flags into two separate fields.
11141
11142 Code and Data Size: The current and previous library sizes for the core
11143 subsystem are shown below. These are the code and data sizes for the
11144 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11145 These
11146 values do not include any ACPI driver or OSPM code. The debug version of
11147 the
11148 code includes the debug output trace mechanism and has a much larger code
11149 and data size. Note that these values will vary depending on the
11150 efficiency
11151 of the compiler and the compiler options used during generation.
11152
11153 Previous Release:
11154 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total
11155 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total
11156 Current Release:
11157 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total
11158 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total
11159
11160
11161
11162 2) iASL Compiler/Disassembler:
11163
11164 Relaxed a compiler restriction that disallowed a ResourceIndex byte if
11165 the
11166 corresponding ResourceSource string was not also present in a resource
11167 descriptor declaration. This restriction caused problems with existing
11168 AML/ASL code that includes the Index byte without the string. When such
11169 AML
11170 was disassembled, it could not be compiled without modification. Further,
11171 the modified code created a resource template with a different size than
11172 the
11173 original, breaking code that used fixed offsets into the resource
11174 template
11175 buffer.
11176
11177 Removed a recent feature of the disassembler to ignore a lone
11178 ResourceIndex
11179 byte. This byte is now emitted if present so that the exact AML can be
11180 reproduced when the disassembled code is recompiled.
11181
11182 Improved comments and text alignment for the resource descriptor code
11183 emitted by the disassembler.
11184
11185 Implemented disassembler support for the ACPI 3.0 AccessSize field within
11186 a
11187 Register() resource descriptor.
11188
11189 ----------------------------------------
11190 30 September 2005. Summary of changes for version 20050930:
11191
11192 1) ACPI CA Core Subsystem:
11193
11194 Completed a major overhaul of the Resource Manager code - specifically,
11195 optimizations in the area of the AML/internal resource conversion code.
11196 The
11197 code has been optimized to simplify and eliminate duplicated code, CPU
11198 stack
11199 use has been decreased by optimizing function parameters and local
11200 variables, and naming conventions across the manager have been
11201 standardized
11202 for clarity and ease of maintenance (this includes function, parameter,
11203 variable, and struct/typedef names.) The update may force changes in some
11204 driver code, depending on how resources are handled by the host OS.
11205
11206 All Resource Manager dispatch and information tables have been moved to a
11207 single location for clarity and ease of maintenance. One new file was
11208 created, named "rsinfo.c".
11209
11210 The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
11211 guarantee that the argument is not evaluated twice, making them less
11212 prone
11213 to macro side-effects. However, since there exists the possibility of
11214 additional stack use if a particular compiler cannot optimize them (such
11215 as
11216 in the debug generation case), the original macros are optionally
11217 available.
11218 Note that some invocations of the return_VALUE macro may now cause size
11219 mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
11220 to
11221 eliminate these. (From Randy Dunlap)
11222
11223 Implemented a new mechanism to enable debug tracing for individual
11224 control
11225 methods. A new external interface, AcpiDebugTrace, is provided to enable
11226 this mechanism. The intent is to allow the host OS to easily enable and
11227 disable tracing for problematic control methods. This interface can be
11228 easily exposed to a user or debugger interface if desired. See the file
11229 psxface.c for details.
11230
11231 AcpiUtCallocate will now return a valid pointer if a length of zero is
11232 specified - a length of one is used and a warning is issued. This matches
11233 the behavior of AcpiUtAllocate.
11234
11235 Code and Data Size: The current and previous library sizes for the core
11236 subsystem are shown below. These are the code and data sizes for the
11237 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11238 These
11239 values do not include any ACPI driver or OSPM code. The debug version of
11240 the
11241 code includes the debug output trace mechanism and has a much larger code
11242 and data size. Note that these values will vary depending on the
11243 efficiency
11244 of the compiler and the compiler options used during generation.
11245
11246 Previous Release:
11247 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total
11248 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total
11249 Current Release:
11250 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total
11251 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total
11252
11253
11254 2) iASL Compiler/Disassembler:
11255
11256 A remark is issued if the effective compile-time length of a package or
11257 buffer is zero. Previously, this was a warning.
11258
11259 ----------------------------------------
11260 16 September 2005. Summary of changes for version 20050916:
11261
11262 1) ACPI CA Core Subsystem:
11263
11264 Fixed a problem within the Resource Manager where support for the Generic
11265 Register descriptor was not fully implemented. This descriptor is now
11266 fully
11267 recognized, parsed, disassembled, and displayed.
11268
11269 Completely restructured the Resource Manager code to utilize table-driven
11270 dispatch and lookup, eliminating many of the large switch() statements.
11271 This
11272 reduces overall subsystem code size and code complexity. Affects the
11273 resource parsing and construction, disassembly, and debug dump output.
11274
11275 Cleaned up and restructured the debug dump output for all resource
11276 descriptors. Improved readability of the output and reduced code size.
11277
11278 Fixed a problem where changes to internal data structures caused the
11279 optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
11280
11281 Code and Data Size: The current and previous library sizes for the core
11282 subsystem are shown below. These are the code and data sizes for the
11283 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11284 These
11285 values do not include any ACPI driver or OSPM code. The debug version of
11286 the
11287 code includes the debug output trace mechanism and has a much larger code
11288 and data size. Note that these values will vary depending on the
11289 efficiency
11290 of the compiler and the compiler options used during generation.
11291
11292 Previous Release:
11293 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total
11294 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total
11295 Current Release:
11296 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total
11297 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total
11298
11299
11300 2) iASL Compiler/Disassembler:
11301
11302 Updated the disassembler to automatically insert an EndDependentFn()
11303 macro
11304 into the ASL stream if this macro is missing in the original AML code,
11305 simplifying compilation of the resulting ASL module.
11306
11307 Fixed a problem in the disassembler where a disassembled ResourceSource
11308 string (within a large resource descriptor) was not surrounded by quotes
11309 and
11310 not followed by a comma, causing errors when the resulting ASL module was
11311 compiled. Also, escape sequences within a ResourceSource string are now
11312 handled correctly (especially "\\")
11313
11314 ----------------------------------------
11315 02 September 2005. Summary of changes for version 20050902:
11316
11317 1) ACPI CA Core Subsystem:
11318
11319 Fixed a problem with the internal Owner ID allocation and deallocation
11320 mechanisms for control method execution and recursive method invocation.
11321 This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
11322 messages seen on some systems. Recursive method invocation depth is
11323 currently limited to 255. (Alexey Starikovskiy)
11324
11325 Completely eliminated all vestiges of support for the "module-level
11326 executable code" until this support is fully implemented and debugged.
11327 This
11328 should eliminate the NO_RETURN_VALUE exceptions seen during table load on
11329 some systems that invoke this support.
11330
11331 Fixed a problem within the resource manager code where the transaction
11332 flags
11333 for a 64-bit address descriptor were handled incorrectly in the type-
11334 specific flag byte.
11335
11336 Consolidated duplicate code within the address descriptor resource
11337 manager
11338 code, reducing overall subsystem code size.
11339
11340 Fixed a fault when using the AML debugger "disassemble" command to
11341 disassemble individual control methods.
11342
11343 Removed references to the "release_current" directory within the Unix
11344 release package.
11345
11346 Code and Data Size: The current and previous core subsystem library sizes
11347 are shown below. These are the code and data sizes for the acpica.lib
11348 produced by the Microsoft Visual C++ 6.0 compiler. These values do not
11349 include any ACPI driver or OSPM code. The debug version of the code
11350 includes
11351 the debug output trace mechanism and has a much larger code and data
11352 size.
11353 Note that these values will vary depending on the efficiency of the
11354 compiler
11355 and the compiler options used during generation.
11356
11357 Previous Release:
11358 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
11359 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total
11360 Current Release:
11361 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total
11362 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total
11363
11364
11365 2) iASL Compiler/Disassembler:
11366
11367 Implemented an error check for illegal duplicate values in the interrupt
11368 and
11369 dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
11370 Interrupt().
11371
11372 Implemented error checking for the Irq() and IrqNoFlags() macros to
11373 detect
11374 too many values in the interrupt list (16 max) and invalid values in the
11375 list (range 0 - 15)
11376
11377 The maximum length string literal within an ASL file is now restricted to
11378 200 characters as per the ACPI specification.
11379
11380 Fixed a fault when using the -ln option (generate namespace listing).
11381
11382 Implemented an error check to determine if a DescriptorName within a
11383 resource descriptor has already been used within the current scope.
11384
11385 ----------------------------------------
11386 15 August 2005. Summary of changes for version 20050815:
11387
11388 1) ACPI CA Core Subsystem:
11389
11390 Implemented a full bytewise compare to determine if a table load request
11391 is
11392 attempting to load a duplicate table. The compare is performed if the
11393 table
11394 signatures and table lengths match. This will allow different tables with
11395 the same OEM Table ID and revision to be loaded - probably against the
11396 ACPI
11397 specification, but discovered in the field nonetheless.
11398
11399 Added the changes.txt logfile to each of the zipped release packages.
11400
11401 Code and Data Size: Current and previous core subsystem library sizes are
11402 shown below. These are the code and data sizes for the acpica.lib
11403 produced
11404 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11405 any ACPI driver or OSPM code. The debug version of the code includes the
11406 debug output trace mechanism and has a much larger code and data size.
11407 Note
11408 that these values will vary depending on the efficiency of the compiler
11409 and
11410 the compiler options used during generation.
11411
11412 Previous Release:
11413 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
11414 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total
11415 Current Release:
11416 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
11417 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total
11418
11419
11420 2) iASL Compiler/Disassembler:
11421
11422 Fixed a problem where incorrect AML code could be generated for Package
11423 objects if optimization is disabled (via the -oa switch).
11424
11425 Fixed a problem with where incorrect AML code is generated for variable-
11426 length packages when the package length is not specified and the number
11427 of
11428 initializer values is greater than 255.
11429
11430
11431 ----------------------------------------
11432 29 July 2005. Summary of changes for version 20050729:
11433
11434 1) ACPI CA Core Subsystem:
11435
11436 Implemented support to ignore an attempt to install/load a particular
11437 ACPI
11438 table more than once. Apparently there exists BIOS code that repeatedly
11439 attempts to load the same SSDT upon certain events. With assistance from
11440 Venkatesh Pallipadi.
11441
11442 Restructured the main interface to the AML parser in order to correctly
11443 handle all exceptional conditions. This will prevent leakage of the
11444 OwnerId
11445 resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
11446 some
11447 machines. With assistance from Alexey Starikovskiy.
11448
11449 Support for "module level code" has been disabled in this version due to
11450 a
11451 number of issues that have appeared on various machines. The support can
11452 be
11453 enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
11454 compilation. When the issues are fully resolved, the code will be enabled
11455 by
11456 default again.
11457
11458 Modified the internal functions for debug print support to define the
11459 FunctionName parameter as a (const char *) for compatibility with
11460 compiler
11461 built-in macros such as __FUNCTION__, etc.
11462
11463 Linted the entire ACPICA source tree for both 32-bit and 64-bit.
11464
11465 Implemented support to display an object count summary for the AML
11466 Debugger
11467 commands Object and Methods.
11468
11469 Code and Data Size: Current and previous core subsystem library sizes are
11470 shown below. These are the code and data sizes for the acpica.lib
11471 produced
11472 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11473 any ACPI driver or OSPM code. The debug version of the code includes the
11474 debug output trace mechanism and has a much larger code and data size.
11475 Note
11476 that these values will vary depending on the efficiency of the compiler
11477 and
11478 the compiler options used during generation.
11479
11480 Previous Release:
11481 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total
11482 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total
11483 Current Release:
11484 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
11485 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total
11486
11487
11488 2) iASL Compiler/Disassembler:
11489
11490 Fixed a regression that appeared in the 20050708 version of the compiler
11491 where an error message was inadvertently emitted for invocations of the
11492 _OSI
11493 reserved control method.
11494
11495 ----------------------------------------
11496 08 July 2005. Summary of changes for version 20050708:
11497
11498 1) ACPI CA Core Subsystem:
11499
11500 The use of the CPU stack in the debug version of the subsystem has been
11501 considerably reduced. Previously, a debug structure was declared in every
11502 function that used the debug macros. This structure has been removed in
11503 favor of declaring the individual elements as parameters to the debug
11504 functions. This reduces the cumulative stack use during nested execution
11505 of
11506 ACPI function calls at the cost of a small increase in the code size of
11507 the
11508 debug version of the subsystem. With assistance from Alexey Starikovskiy
11509 and
11510 Len Brown.
11511
11512 Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
11513 headers to define a macro that will return the current function name at
11514 runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
11515 by
11516 the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
11517 compiler-dependent header, the function name is saved on the CPU stack
11518 (one
11519 pointer per function.) This mechanism is used because apparently there
11520 exists no standard ANSI-C defined macro that that returns the function
11521 name.
11522
11523 Redesigned and reimplemented the "Owner ID" mechanism used to track
11524 namespace objects created/deleted by ACPI tables and control method
11525 execution. A bitmap is now used to allocate and free the IDs, thus
11526 solving
11527 the wraparound problem present in the previous implementation. The size
11528 of
11529 the namespace node descriptor was reduced by 2 bytes as a result (Alexey
11530 Starikovskiy).
11531
11532 Removed the UINT32_BIT and UINT16_BIT types that were used for the
11533 bitfield
11534 flag definitions within the headers for the predefined ACPI tables. These
11535 have been replaced by UINT8_BIT in order to increase the code portability
11536 of
11537 the subsystem. If the use of UINT8 remains a problem, we may be forced to
11538 eliminate bitfields entirely because of a lack of portability.
11539
11540 Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
11541 This
11542 is a frequently used function and this improvement increases the
11543 performance
11544 of the entire subsystem (Alexey Starikovskiy).
11545
11546 Fixed several possible memory leaks and the inverse - premature object
11547 deletion (Alexey Starikovskiy).
11548
11549 Code and Data Size: Current and previous core subsystem library sizes are
11550 shown below. These are the code and data sizes for the acpica.lib
11551 produced
11552 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11553 any ACPI driver or OSPM code. The debug version of the code includes the
11554 debug output trace mechanism and has a much larger code and data size.
11555 Note
11556 that these values will vary depending on the efficiency of the compiler
11557 and
11558 the compiler options used during generation.
11559
11560 Previous Release:
11561 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total
11562 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total
11563 Current Release:
11564 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total
11565 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total
11566
11567 ----------------------------------------
11568 24 June 2005. Summary of changes for version 20050624:
11569
11570 1) ACPI CA Core Subsystem:
11571
11572 Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
11573 the host-defined cache object. This allows the OSL implementation to
11574 define
11575 and type this object in any manner desired, simplifying the OSL
11576 implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
11577 Linux, and should be defined in the OS-specific header file for other
11578 operating systems as required.
11579
11580 Changed the interface to AcpiOsAcquireObject to directly return the
11581 requested object as the function return (instead of ACPI_STATUS.) This
11582 change was made for performance reasons, since this is the purpose of the
11583 interface in the first place. AcpiOsAcquireObject is now similar to the
11584 AcpiOsAllocate interface.
11585
11586 Implemented a new AML debugger command named Businfo. This command
11587 displays
11588 information about all devices that have an associate _PRT object. The
11589 _ADR,
11590 _HID, _UID, and _CID are displayed for these devices.
11591
11592 Modified the initialization sequence in AcpiInitializeSubsystem to call
11593 the
11594 OSL interface AcpiOslInitialize first, before any local initialization.
11595 This
11596 change was required because the global initialization now calls OSL
11597 interfaces.
11598
11599 Enhanced the Dump command to display the entire contents of Package
11600 objects
11601 (including all sub-objects and their values.)
11602
11603 Restructured the code base to split some files because of size and/or
11604 because the code logically belonged in a separate file. New files are
11605 listed
11606 below. All makefiles and project files included in the ACPI CA release
11607 have
11608 been updated.
11609 utilities/utcache.c /* Local cache interfaces */
11610 utilities/utmutex.c /* Local mutex support */
11611 utilities/utstate.c /* State object support */
11612 interpreter/parser/psloop.c /* Main AML parse loop */
11613
11614 Code and Data Size: Current and previous core subsystem library sizes are
11615 shown below. These are the code and data sizes for the acpica.lib
11616 produced
11617 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11618 any ACPI driver or OSPM code. The debug version of the code includes the
11619 debug output trace mechanism and has a much larger code and data size.
11620 Note
11621 that these values will vary depending on the efficiency of the compiler
11622 and
11623 the compiler options used during generation.
11624
11625 Previous Release:
11626 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total
11627 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total
11628 Current Release:
11629 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total
11630 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total
11631
11632
11633 2) iASL Compiler/Disassembler:
11634
11635 Fixed a regression introduced in version 20050513 where the use of a
11636 Package
11637 object within a Case() statement caused a compile time exception. The
11638 original behavior has been restored (a Match() operator is emitted.)
11639
11640 ----------------------------------------
11641 17 June 2005. Summary of changes for version 20050617:
11642
11643 1) ACPI CA Core Subsystem:
11644
11645 Moved the object cache operations into the OS interface layer (OSL) to
11646 allow
11647 the host OS to handle these operations if desired (for example, the Linux
11648 OSL will invoke the slab allocator). This support is optional; the
11649 compile
11650 time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
11651 cache
11652 code in the ACPI CA core. The new OSL interfaces are shown below. See
11653 utalloc.c for an example implementation, and acpiosxf.h for the exact
11654 interface definitions. With assistance from Alexey Starikovskiy.
11655 AcpiOsCreateCache
11656 AcpiOsDeleteCache
11657 AcpiOsPurgeCache
11658 AcpiOsAcquireObject
11659 AcpiOsReleaseObject
11660
11661 Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
11662 return
11663 and restore a flags parameter. This fits better with many OS lock models.
11664 Note: the current execution state (interrupt handler or not) is no longer
11665 passed to these interfaces. If necessary, the OSL must determine this
11666 state
11667 by itself, a simple and fast operation. With assistance from Alexey
11668 Starikovskiy.
11669
11670 Fixed a problem in the ACPI table handling where a valid XSDT was assumed
11671 present if the revision of the RSDP was 2 or greater. According to the
11672 ACPI
11673 specification, the XSDT is optional in all cases, and the table manager
11674 therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
11675 Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
11676 contain
11677 only the RSDT.
11678
11679 Fixed an interpreter problem with the Mid() operator in the case of an
11680 input
11681 string where the resulting output string is of zero length. It now
11682 correctly
11683 returns a valid, null terminated string object instead of a string object
11684 with a null pointer.
11685
11686 Fixed a problem with the control method argument handling to allow a
11687 store
11688 to an Arg object that already contains an object of type Device. The
11689 Device
11690 object is now correctly overwritten. Previously, an error was returned.
11691
11692
11693 Enhanced the debugger Find command to emit object values in addition to
11694 the
11695 found object pathnames. The output format is the same as the dump
11696 namespace
11697 command.
11698
11699 Enhanced the debugger Set command. It now has the ability to set the
11700 value
11701 of any Named integer object in the namespace (Previously, only method
11702 locals
11703 and args could be set.)
11704
11705 Code and Data Size: Current and previous core subsystem library sizes are
11706 shown below. These are the code and data sizes for the acpica.lib
11707 produced
11708 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11709 any ACPI driver or OSPM code. The debug version of the code includes the
11710 debug output trace mechanism and has a much larger code and data size.
11711 Note
11712 that these values will vary depending on the efficiency of the compiler
11713 and
11714 the compiler options used during generation.
11715
11716 Previous Release:
11717 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total
11718 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total
11719 Current Release:
11720 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total
11721 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total
11722
11723
11724 2) iASL Compiler/Disassembler:
11725
11726 Fixed a regression in the disassembler where if/else/while constructs
11727 were
11728 output incorrectly. This problem was introduced in the previous release
11729 (20050526). This problem also affected the single-step disassembly in the
11730 debugger.
11731
11732 Fixed a problem where compiling the reserved _OSI method would randomly
11733 (but
11734 rarely) produce compile errors.
11735
11736 Enhanced the disassembler to emit compilable code in the face of
11737 incorrect
11738 AML resource descriptors. If the optional ResourceSourceIndex is present,
11739 but the ResourceSource is not, do not emit the ResourceSourceIndex in the
11740 disassembly. Otherwise, the resulting code cannot be compiled without
11741 errors.
11742
11743 ----------------------------------------
11744 26 May 2005. Summary of changes for version 20050526:
11745
11746 1) ACPI CA Core Subsystem:
11747
11748 Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
11749 the module level (not within a control method.) These opcodes are
11750 executed
11751 exactly once at the time the table is loaded. This type of code was legal
11752 up
11753 until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
11754 in
11755 order to provide backwards compatibility with earlier BIOS
11756 implementations.
11757 This eliminates the "Encountered executable code at module level" warning
11758 that was previously generated upon detection of such code.
11759
11760 Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
11761 inadvertently be generated during the lookup of namespace objects in the
11762 second pass parse of ACPI tables and control methods. It appears that
11763 this
11764 problem could occur during the resolution of forward references to
11765 namespace
11766 objects.
11767
11768 Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
11769 corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
11770 allows the deadlock detection debug code to be compiled out in the normal
11771 case, improving mutex performance (and overall subsystem performance)
11772 considerably.
11773
11774 Implemented a handful of miscellaneous fixes for possible memory leaks on
11775 error conditions and error handling control paths. These fixes were
11776 suggested by FreeBSD and the Coverity Prevent source code analysis tool.
11777
11778 Added a check for a null RSDT pointer in AcpiGetFirmwareTable
11779 (tbxfroot.c)
11780 to prevent a fault in this error case.
11781
11782 Code and Data Size: Current and previous core subsystem library sizes are
11783 shown below. These are the code and data sizes for the acpica.lib
11784 produced
11785 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11786 any ACPI driver or OSPM code. The debug version of the code includes the
11787 debug output trace mechanism and has a much larger code and data size.
11788 Note
11789 that these values will vary depending on the efficiency of the compiler
11790 and
11791 the compiler options used during generation.
11792
11793 Previous Release:
11794 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
11795 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
11796 Current Release:
11797 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total
11798 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total
11799
11800
11801 2) iASL Compiler/Disassembler:
11802
11803 Implemented support to allow Type 1 and Type 2 ASL operators to appear at
11804 the module level (not within a control method.) These operators will be
11805 executed once at the time the table is loaded. This type of code was
11806 legal
11807 up until the release of ACPI 2.0B (2002) and is now supported by the iASL
11808 compiler in order to provide backwards compatibility with earlier BIOS
11809 ASL
11810 code.
11811
11812 The ACPI integer width (specified via the table revision ID or the -r
11813 override, 32 or 64 bits) is now used internally during compile-time
11814 constant
11815 folding to ensure that constants are truncated to 32 bits if necessary.
11816 Previously, the revision ID value was only emitted in the AML table
11817 header.
11818
11819 An error message is now generated for the Mutex and Method operators if
11820 the
11821 SyncLevel parameter is outside the legal range of 0 through 15.
11822
11823 Fixed a problem with the Method operator ParameterTypes list handling
11824 (ACPI
11825 3.0). Previously, more than 2 types or 2 arguments generated a syntax
11826 error.
11827 The actual underlying implementation of method argument typechecking is
11828 still under development, however.
11829
11830 ----------------------------------------
11831 13 May 2005. Summary of changes for version 20050513:
11832
11833 1) ACPI CA Core Subsystem:
11834
11835 Implemented support for PCI Express root bridges -- added support for
11836 device
11837 PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
11838
11839 The interpreter now automatically truncates incoming 64-bit constants to
11840 32
11841 bits if currently executing out of a 32-bit ACPI table (Revision < 2).
11842 This
11843 also affects the iASL compiler constant folding. (Note: as per below, the
11844 iASL compiler no longer allows 64-bit constants within 32-bit tables.)
11845
11846 Fixed a problem where string and buffer objects with "static" pointers
11847 (pointers to initialization data within an ACPI table) were not handled
11848 consistently. The internal object copy operation now always copies the
11849 data
11850 to a newly allocated buffer, regardless of whether the source object is
11851 static or not.
11852
11853 Fixed a problem with the FromBCD operator where an implicit result
11854 conversion was improperly performed while storing the result to the
11855 target
11856 operand. Since this is an "explicit conversion" operator, the implicit
11857 conversion should never be performed on the output.
11858
11859 Fixed a problem with the CopyObject operator where a copy to an existing
11860 named object did not always completely overwrite the existing object
11861 stored
11862 at name. Specifically, a buffer-to-buffer copy did not delete the
11863 existing
11864 buffer.
11865
11866 Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
11867 and
11868 structs for consistency.
11869
11870 Code and Data Size: Current and previous core subsystem library sizes are
11871 shown below. These are the code and data sizes for the acpica.lib
11872 produced
11873 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11874 any ACPI driver or OSPM code. The debug version of the code includes the
11875 debug output trace mechanism and has a much larger code and data size.
11876 Note
11877 that these values will vary depending on the efficiency of the compiler
11878 and
11879 the compiler options used during generation.
11880
11881 Previous Release:
11882 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
11883 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
11884 Current Release: (Same sizes)
11885 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
11886 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
11887
11888
11889 2) iASL Compiler/Disassembler:
11890
11891 The compiler now emits a warning if an attempt is made to generate a 64-
11892 bit
11893 integer constant from within a 32-bit ACPI table (Revision < 2). The
11894 integer
11895 is truncated to 32 bits.
11896
11897 Fixed a problem with large package objects: if the static length of the
11898 package is greater than 255, the "variable length package" opcode is
11899 emitted. Previously, this caused an error. This requires an update to the
11900 ACPI spec, since it currently (incorrectly) states that packages larger
11901 than
11902 255 elements are not allowed.
11903
11904 The disassembler now correctly handles variable length packages and
11905 packages
11906 larger than 255 elements.
11907
11908 ----------------------------------------
11909 08 April 2005. Summary of changes for version 20050408:
11910
11911 1) ACPI CA Core Subsystem:
11912
11913 Fixed three cases in the interpreter where an "index" argument to an ASL
11914 function was still (internally) 32 bits instead of the required 64 bits.
11915 This was the Index argument to the Index, Mid, and Match operators.
11916
11917 The "strupr" function is now permanently local (AcpiUtStrupr), since this
11918 is
11919 not a POSIX-defined function and not present in most kernel-level C
11920 libraries. All references to the C library strupr function have been
11921 removed
11922 from the headers.
11923
11924 Completed the deployment of static functions/prototypes. All prototypes
11925 with
11926 the static attribute have been moved from the headers to the owning C
11927 file.
11928
11929 Implemented an extract option (-e) for the AcpiBin utility (AML binary
11930 utility). This option allows the utility to extract individual ACPI
11931 tables
11932 from the output of AcpiDmp. It provides the same functionality of the
11933 acpixtract.pl perl script without the worry of setting the correct perl
11934 options. AcpiBin runs on Windows and has not yet been generated/validated
11935 in
11936 the Linux/Unix environment (but should be soon).
11937
11938 Updated and fixed the table dump option for AcpiBin (-d). This option
11939 converts a single ACPI table to a hex/ascii file, similar to the output
11940 of
11941 AcpiDmp.
11942
11943 Code and Data Size: Current and previous core subsystem library sizes are
11944 shown below. These are the code and data sizes for the acpica.lib
11945 produced
11946 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11947 any ACPI driver or OSPM code. The debug version of the code includes the
11948 debug output trace mechanism and has a much larger code and data size.
11949 Note
11950 that these values will vary depending on the efficiency of the compiler
11951 and
11952 the compiler options used during generation.
11953
11954 Previous Release:
11955 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total
11956 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total
11957 Current Release:
11958 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
11959 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
11960
11961
11962 2) iASL Compiler/Disassembler:
11963
11964 Disassembler fix: Added a check to ensure that the table length found in
11965 the
11966 ACPI table header within the input file is not longer than the actual
11967 input
11968 file size. This indicates some kind of file or table corruption.
11969
11970 ----------------------------------------
11971 29 March 2005. Summary of changes for version 20050329:
11972
11973 1) ACPI CA Core Subsystem:
11974
11975 An error is now generated if an attempt is made to create a Buffer Field
11976 of
11977 length zero (A CreateField with a length operand of zero.)
11978
11979 The interpreter now issues a warning whenever executable code at the
11980 module
11981 level is detected during ACPI table load. This will give some idea of the
11982 prevalence of this type of code.
11983
11984 Implemented support for references to named objects (other than control
11985 methods) within package objects.
11986
11987 Enhanced package object output for the debug object. Package objects are
11988 now
11989 completely dumped, showing all elements.
11990
11991 Enhanced miscellaneous object output for the debug object. Any object can
11992 now be written to the debug object (for example, a device object can be
11993 written, and the type of the object will be displayed.)
11994
11995 The "static" qualifier has been added to all local functions across both
11996 the
11997 core subsystem and the iASL compiler.
11998
11999 The number of "long" lines (> 80 chars) within the source has been
12000 significantly reduced, by about 1/3.
12001
12002 Cleaned up all header files to ensure that all CA/iASL functions are
12003 prototyped (even static functions) and the formatting is consistent.
12004
12005 Two new header files have been added, acopcode.h and acnames.h.
12006
12007 Removed several obsolete functions that were no longer used.
12008
12009 Code and Data Size: Current and previous core subsystem library sizes are
12010 shown below. These are the code and data sizes for the acpica.lib
12011 produced
12012 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12013 any ACPI driver or OSPM code. The debug version of the code includes the
12014 debug output trace mechanism and has a much larger code and data size.
12015 Note
12016 that these values will vary depending on the efficiency of the compiler
12017 and
12018 the compiler options used during generation.
12019
12020 Previous Release:
12021 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
12022 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total
12023 Current Release:
12024 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total
12025 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total
12026
12027
12028
12029 2) iASL Compiler/Disassembler:
12030
12031 Fixed a problem with the resource descriptor generation/support. For the
12032 ResourceSourceIndex and the ResourceSource fields, both must be present,
12033 or
12034 both must be not present - can't have one without the other.
12035
12036 The compiler now returns non-zero from the main procedure if any errors
12037 have
12038 occurred during the compilation.
12039
12040
12041 ----------------------------------------
12042 09 March 2005. Summary of changes for version 20050309:
12043
12044 1) ACPI CA Core Subsystem:
12045
12046 The string-to-buffer implicit conversion code has been modified again
12047 after
12048 a change to the ACPI specification. In order to match the behavior of
12049 the
12050 other major ACPI implementation, the target buffer is no longer truncated
12051 if
12052 the source string is smaller than an existing target buffer. This change
12053 requires an update to the ACPI spec, and should eliminate the recent
12054 AE_AML_BUFFER_LIMIT issues.
12055
12056 The "implicit return" support was rewritten to a new algorithm that
12057 solves
12058 the general case. Rather than attempt to determine when a method is about
12059 to
12060 exit, the result of every ASL operator is saved momentarily until the
12061 very
12062 next ASL operator is executed. Therefore, no matter how the method exits,
12063 there will always be a saved implicit return value. This feature is only
12064 enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
12065 eliminate
12066 AE_AML_NO_RETURN_VALUE errors when enabled.
12067
12068 Implemented implicit conversion support for the predicate (operand) of
12069 the
12070 If, Else, and While operators. String and Buffer arguments are
12071 automatically
12072 converted to Integers.
12073
12074 Changed the string-to-integer conversion behavior to match the new ACPI
12075 errata: "If no integer object exists, a new integer is created. The ASCII
12076 string is interpreted as a hexadecimal constant. Each string character is
12077 interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
12078 with the first character as the most significant digit, and ending with
12079 the
12080 first non-hexadecimal character or end-of-string." This means that the
12081 first
12082 non-hex character terminates the conversion and this is the code that was
12083 changed.
12084
12085 Fixed a problem where the ObjectType operator would fail (fault) when
12086 used
12087 on an Index of a Package which pointed to a null package element. The
12088 operator now properly returns zero (Uninitialized) in this case.
12089
12090 Fixed a problem where the While operator used excessive memory by not
12091 properly popping the result stack during execution. There was no memory
12092 leak
12093 after execution, however. (Code provided by Valery Podrezov.)
12094
12095 Fixed a problem where references to control methods within Package
12096 objects
12097 caused the method to be invoked, instead of producing a reference object
12098 pointing to the method.
12099
12100 Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
12101 to
12102 improve performance and reduce code size. (Code provided by Alexey
12103 Starikovskiy.)
12104
12105 Code and Data Size: Current and previous core subsystem library sizes are
12106 shown below. These are the code and data sizes for the acpica.lib
12107 produced
12108 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12109 any ACPI driver or OSPM code. The debug version of the code includes the
12110 debug output trace mechanism and has a much larger code and data size.
12111 Note
12112 that these values will vary depending on the efficiency of the compiler
12113 and
12114 the compiler options used during generation.
12115
12116 Previous Release:
12117 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
12118 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total
12119 Current Release:
12120 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
12121 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total
12122
12123
12124 2) iASL Compiler/Disassembler:
12125
12126 Fixed a problem with the Return operator with no arguments. Since the AML
12127 grammar for the byte encoding requires an operand for the Return opcode,
12128 the
12129 compiler now emits a Return(Zero) for this case. An ACPI specification
12130 update has been written for this case.
12131
12132 For tables other than the DSDT, namepath optimization is automatically
12133 disabled. This is because SSDTs can be loaded anywhere in the namespace,
12134 the
12135 compiler has no knowledge of where, and thus cannot optimize namepaths.
12136
12137 Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
12138 inadvertently omitted from the ACPI specification, and will require an
12139 update to the spec.
12140
12141 The source file scan for ASCII characters is now optional (-a). This
12142 change
12143 was made because some vendors place non-ascii characters within comments.
12144 However, the scan is simply a brute-force byte compare to ensure all
12145 characters in the file are in the range 0x00 to 0x7F.
12146
12147 Fixed a problem with the CondRefOf operator where the compiler was
12148 inappropriately checking for the existence of the target. Since the point
12149 of
12150 the operator is to check for the existence of the target at run-time, the
12151 compiler no longer checks for the target existence.
12152
12153 Fixed a problem where errors generated from the internal AML interpreter
12154 during constant folding were not handled properly, causing a fault.
12155
12156 Fixed a problem with overly aggressive range checking for the Stall
12157 operator. The valid range (max 255) is now only checked if the operand is
12158 of
12159 type Integer. All other operand types cannot be statically checked.
12160
12161 Fixed a problem where control method references within the RefOf,
12162 DeRefOf,
12163 and ObjectType operators were not treated properly. They are now treated
12164 as
12165 actual references, not method invocations.
12166
12167 Fixed and enhanced the "list namespace" option (-ln). This option was
12168 broken
12169 a number of releases ago.
12170
12171 Improved error handling for the Field, IndexField, and BankField
12172 operators.
12173 The compiler now cleanly reports and recovers from errors in the field
12174 component (FieldUnit) list.
12175
12176 Fixed a disassembler problem where the optional ResourceDescriptor fields
12177 TRS and TTP were not always handled correctly.
12178
12179 Disassembler - Comments in output now use "//" instead of "/*"
12180
12181 ----------------------------------------
12182 28 February 2005. Summary of changes for version 20050228:
12183
12184 1) ACPI CA Core Subsystem:
12185
12186 Fixed a problem where the result of an Index() operator (an object
12187 reference) must increment the reference count on the target object for
12188 the
12189 life of the object reference.
12190
12191 Implemented AML Interpreter and Debugger support for the new ACPI 3.0
12192 Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
12193 WordSpace
12194 resource descriptors.
12195
12196 Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
12197 Space Descriptor" string, indicating interpreter support for the
12198 descriptors
12199 above.
12200
12201 Implemented header support for the new ACPI 3.0 FADT flag bits.
12202
12203 Implemented header support for the new ACPI 3.0 PCI Express bits for the
12204 PM1
12205 status/enable registers.
12206
12207 Updated header support for the MADT processor local Apic struct and MADT
12208 platform interrupt source struct for new ACPI 3.0 fields.
12209
12210 Implemented header support for the SRAT and SLIT ACPI tables.
12211
12212 Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
12213 flag
12214 at runtime.
12215
12216 Code and Data Size: Current and previous core subsystem library sizes are
12217 shown below. These are the code and data sizes for the acpica.lib
12218 produced
12219 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12220 any ACPI driver or OSPM code. The debug version of the code includes the
12221 debug output trace mechanism and has a much larger code and data size.
12222 Note
12223 that these values will vary depending on the efficiency of the compiler
12224 and
12225 the compiler options used during generation.
12226
12227 Previous Release:
12228 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total
12229 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total
12230 Current Release:
12231 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
12232 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total
12233
12234
12235 2) iASL Compiler/Disassembler:
12236
12237 Fixed a problem with the internal 64-bit String-to-integer conversion
12238 with
12239 strings less than two characters long.
12240
12241 Fixed a problem with constant folding where the result of the Index()
12242 operator can not be considered a constant. This means that Index() cannot
12243 be
12244 a type3 opcode and this will require an update to the ACPI specification.
12245
12246 Disassembler: Implemented support for the TTP, MTP, and TRS resource
12247 descriptor fields. These fields were inadvertently ignored and not output
12248 in
12249 the disassembly of the resource descriptor.
12250
12251
12252 ----------------------------------------
12253 11 February 2005. Summary of changes for version 20050211:
12254
12255 1) ACPI CA Core Subsystem:
12256
12257 Implemented ACPI 3.0 support for implicit conversion within the Match()
12258 operator. MatchObjects can now be of type integer, buffer, or string
12259 instead
12260 of just type integer. Package elements are implicitly converted to the
12261 type
12262 of the MatchObject. This change aligns the behavior of Match() with the
12263 behavior of the other logical operators (LLess(), etc.) It also requires
12264 an
12265 errata change to the ACPI specification as this support was intended for
12266 ACPI 3.0, but was inadvertently omitted.
12267
12268 Fixed a problem with the internal implicit "to buffer" conversion.
12269 Strings
12270 that are converted to buffers will cause buffer truncation if the string
12271 is
12272 smaller than the target buffer. Integers that are converted to buffers
12273 will
12274 not cause buffer truncation, only zero extension (both as per the ACPI
12275 spec.) The problem was introduced when code was added to truncate the
12276 buffer, but this should not be performed in all cases, only the string
12277 case.
12278
12279 Fixed a problem with the Buffer and Package operators where the
12280 interpreter
12281 would get confused if two such operators were used as operands to an ASL
12282 operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
12283 stack was not being popped after the execution of these operators,
12284 resulting
12285 in an AE_NO_RETURN_VALUE exception.
12286
12287 Fixed a problem with constructs of the form Store(Index(...),...). The
12288 reference object returned from Index was inadvertently resolved to an
12289 actual
12290 value. This problem was introduced in version 20050114 when the behavior
12291 of
12292 Store() was modified to restrict the object types that can be used as the
12293 source operand (to match the ACPI specification.)
12294
12295 Reduced excessive stack use within the AcpiGetObjectInfo procedure.
12296
12297 Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
12298
12299 Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
12300
12301 Code and Data Size: Current and previous core subsystem library sizes are
12302 shown below. These are the code and data sizes for the acpica.lib
12303 produced
12304 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12305 any ACPI driver or OSPM code. The debug version of the code includes the
12306 debug output trace mechanism and has a much larger code and data size.
12307 Note
12308 that these values will vary depending on the efficiency of the compiler
12309 and
12310 the compiler options used during generation.
12311
12312 Previous Release:
12313 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total
12314 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total
12315 Current Release:
12316 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total
12317 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total
12318
12319
12320 2) iASL Compiler/Disassembler:
12321
12322 Fixed a code generation problem in the constant folding optimization code
12323 where incorrect code was generated if a constant was reduced to a buffer
12324 object (i.e., a reduced type 5 opcode.)
12325
12326 Fixed a typechecking problem for the ToBuffer operator. Caused by an
12327 incorrect return type in the internal opcode information table.
12328
12329 ----------------------------------------
12330 25 January 2005. Summary of changes for version 20050125:
12331
12332 1) ACPI CA Core Subsystem:
12333
12334 Fixed a recently introduced problem with the Global Lock where the
12335 underlying semaphore was not created. This problem was introduced in
12336 version 20050114, and caused an AE_AML_NO_OPERAND exception during an
12337 Acquire() operation on _GL.
12338
12339 The local object cache is now optional, and is disabled by default. Both
12340 AcpiExec and the iASL compiler enable the cache because they run in user
12341 mode and this enhances their performance. #define
12342 ACPI_ENABLE_OBJECT_CACHE
12343 to enable the local cache.
12344
12345 Fixed an issue in the internal function AcpiUtEvaluateObject concerning
12346 the
12347 optional "implicit return" support where an error was returned if no
12348 return
12349 object was expected, but one was implicitly returned. AE_OK is now
12350 returned
12351 in this case and the implicitly returned object is deleted.
12352 AcpiUtEvaluateObject is only occasionally used, and only to execute
12353 reserved
12354 methods such as _STA and _INI where the return type is known up front.
12355
12356 Fixed a few issues with the internal convert-to-integer code. It now
12357 returns
12358 an error if an attempt is made to convert a null string, a string of only
12359 blanks/tabs, or a zero-length buffer. This affects both implicit
12360 conversion
12361 and explicit conversion via the ToInteger() operator.
12362
12363 The internal debug code in AcpiUtAcquireMutex has been commented out. It
12364 is
12365 not needed for normal operation and should increase the performance of
12366 the
12367 entire subsystem. The code remains in case it is needed for debug
12368 purposes
12369 again.
12370
12371 The AcpiExec source and makefile are included in the Unix/Linux package
12372 for
12373 the first time.
12374
12375 Code and Data Size: Current and previous core subsystem library sizes are
12376 shown below. These are the code and data sizes for the acpica.lib
12377 produced
12378 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12379 any ACPI driver or OSPM code. The debug version of the code includes the
12380 debug output trace mechanism and has a much larger code and data size.
12381 Note
12382 that these values will vary depending on the efficiency of the compiler
12383 and
12384 the compiler options used during generation.
12385
12386 Previous Release:
12387 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total
12388 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total
12389 Current Release:
12390 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total
12391 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total
12392
12393 2) iASL Compiler/Disassembler:
12394
12395 Switch/Case support: A warning is now issued if the type of the Switch
12396 value
12397 cannot be determined at compile time. For example, Switch(Arg0) will
12398 generate the warning, and the type is assumed to be an integer. As per
12399 the
12400 ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
12401 the
12402 warning.
12403
12404 Switch/Case support: Implemented support for buffer and string objects as
12405 the switch value. This is an ACPI 3.0 feature, now that LEqual supports
12406 buffers and strings.
12407
12408 Switch/Case support: The emitted code for the LEqual() comparisons now
12409 uses
12410 the switch value as the first operand, not the second. The case value is
12411 now
12412 the second operand, and this allows the case value to be implicitly
12413 converted to the type of the switch value, not the other way around.
12414
12415 Switch/Case support: Temporary variables are now emitted immediately
12416 within
12417 the control method, not at the global level. This means that there are
12418 now
12419 36 temps available per-method, not 36 temps per-module as was the case
12420 with
12421 the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
12422
12423 ----------------------------------------
12424 14 January 2005. Summary of changes for version 20050114:
12425
12426 Added 2005 copyright to all module headers. This affects every module in
12427 the core subsystem, iASL compiler, and the utilities.
12428
12429 1) ACPI CA Core Subsystem:
12430
12431 Fixed an issue with the String-to-Buffer conversion code where the string
12432 null terminator was not included in the buffer after conversion, but
12433 there
12434 is existing ASL that assumes the string null terminator is included. This
12435 is
12436 the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
12437 introduced in the previous version when the code was updated to correctly
12438 set the converted buffer size as per the ACPI specification. The ACPI
12439 spec
12440 is ambiguous and will be updated to specify that the null terminator must
12441 be
12442 included in the converted buffer. This also affects the ToBuffer() ASL
12443 operator.
12444
12445 Fixed a problem with the Mid() ASL/AML operator where it did not work
12446 correctly on Buffer objects. Newly created sub-buffers were not being
12447 marked
12448 as initialized.
12449
12450
12451 Fixed a problem in AcpiTbFindTable where incorrect string compares were
12452 performed on the OemId and OemTableId table header fields. These fields
12453 are
12454 not null terminated, so strncmp is now used instead of strcmp.
12455
12456 Implemented a restriction on the Store() ASL/AML operator to align the
12457 behavior with the ACPI specification. Previously, any object could be
12458 used
12459 as the source operand. Now, the only objects that may be used are
12460 Integers,
12461 Buffers, Strings, Packages, Object References, and DDB Handles. If
12462 necessary, the original behavior can be restored by enabling the
12463 EnableInterpreterSlack flag.
12464
12465 Enhanced the optional "implicit return" support to allow an implicit
12466 return
12467 value from methods that are invoked externally via the AcpiEvaluateObject
12468 interface. This enables implicit returns from the _STA and _INI methods,
12469 for example.
12470
12471 Changed the Revision() ASL/AML operator to return the current version of
12472 the
12473 AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
12474 returned
12475 the supported ACPI version (This is the function of the _REV method).
12476
12477 Updated the _REV predefined method to return the currently supported
12478 version
12479 of ACPI, now 3.
12480
12481 Implemented batch mode option for the AcpiExec utility (-b).
12482
12483 Code and Data Size: Current and previous core subsystem library sizes are
12484 shown below. These are the code and data sizes for the acpica.lib
12485 produced
12486 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12487 any ACPI driver or OSPM code. The debug version of the code includes the
12488 debug output trace mechanism and has a much larger code and data size.
12489 Note
12490 that these values will vary depending on the efficiency of the compiler
12491 and
12492 the compiler options used during generation.
12493
12494 Previous Release:
12495 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
12496 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total
12497 Current Release:
12498 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total
12499 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total
12500
12501 ----------------------------------------
12502 10 December 2004. Summary of changes for version 20041210:
12503
12504 ACPI 3.0 support is nearing completion in both the iASL compiler and the
12505 ACPI CA core subsystem.
12506
12507 1) ACPI CA Core Subsystem:
12508
12509 Fixed a problem in the ToDecimalString operator where the resulting
12510 string
12511 length was incorrectly calculated. The length is now calculated exactly,
12512 eliminating incorrect AE_STRING_LIMIT exceptions.
12513
12514 Fixed a problem in the ToHexString operator to allow a maximum 200
12515 character
12516 string to be produced.
12517
12518 Fixed a problem in the internal string-to-buffer and buffer-to-buffer
12519 copy
12520 routine where the length of the resulting buffer was not truncated to the
12521 new size (if the target buffer already existed).
12522
12523 Code and Data Size: Current and previous core subsystem library sizes are
12524 shown below. These are the code and data sizes for the acpica.lib
12525 produced
12526 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12527 any ACPI driver or OSPM code. The debug version of the code includes the
12528 debug output trace mechanism and has a much larger code and data size.
12529 Note
12530 that these values will vary depending on the efficiency of the compiler
12531 and
12532 the compiler options used during generation.
12533
12534 Previous Release:
12535 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
12536 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total
12537 Current Release:
12538 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
12539 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total
12540
12541
12542 2) iASL Compiler/Disassembler:
12543
12544 Implemented the new ACPI 3.0 resource template macros - DWordSpace,
12545 ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
12546 Includes support in the disassembler.
12547
12548 Implemented support for the new (ACPI 3.0) parameter to the Register
12549 macro,
12550 AccessSize.
12551
12552 Fixed a problem where the _HE resource name for the Interrupt macro was
12553 referencing bit 0 instead of bit 1.
12554
12555 Implemented check for maximum 255 interrupts in the Interrupt macro.
12556
12557 Fixed a problem with the predefined resource descriptor names where
12558 incorrect AML code was generated if the offset within the resource buffer
12559 was 0 or 1. The optimizer shortened the AML code to a single byte opcode
12560 but did not update the surrounding package lengths.
12561
12562 Changes to the Dma macro: All channels within the channel list must be
12563 in
12564 the range 0-7. Maximum 8 channels can be specified. BusMaster operand is
12565 optional (default is BusMaster).
12566
12567 Implemented check for maximum 7 data bytes for the VendorShort macro.
12568
12569 The ReadWrite parameter is now optional for the Memory32 and similar
12570 macros.
12571
12572 ----------------------------------------
12573 03 December 2004. Summary of changes for version 20041203:
12574
12575 1) ACPI CA Core Subsystem:
12576
12577 The low-level field insertion/extraction code (exfldio) has been
12578 completely
12579 rewritten to eliminate unnecessary complexity, bugs, and boundary
12580 conditions.
12581
12582 Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
12583 ToDecimalString
12584 operators where the input operand could be inadvertently deleted if no
12585 conversion was necessary (e.g., if the input to ToInteger was an Integer
12586 object.)
12587
12588 Fixed a problem with the ToDecimalString and ToHexString where an
12589 incorrect
12590 exception code was returned if the resulting string would be > 200 chars.
12591 AE_STRING_LIMIT is now returned.
12592
12593 Fixed a problem with the Concatenate operator where AE_OK was always
12594 returned, even if the operation failed.
12595
12596 Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
12597 semaphores to be allocated.
12598
12599 Code and Data Size: Current and previous core subsystem library sizes are
12600 shown below. These are the code and data sizes for the acpica.lib
12601 produced
12602 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12603 any ACPI driver or OSPM code. The debug version of the code includes the
12604 debug output trace mechanism and has a much larger code and data size.
12605 Note
12606 that these values will vary depending on the efficiency of the compiler
12607 and
12608 the compiler options used during generation.
12609
12610 Previous Release:
12611 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
12612 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
12613 Current Release:
12614 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
12615 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total
12616
12617
12618 2) iASL Compiler/Disassembler:
12619
12620 Fixed typechecking for the ObjectType and SizeOf operators. Problem was
12621 recently introduced in 20041119.
12622
12623 Fixed a problem with the ToUUID macro where the upper nybble of each
12624 buffer
12625 byte was inadvertently set to zero.
12626
12627 ----------------------------------------
12628 19 November 2004. Summary of changes for version 20041119:
12629
12630 1) ACPI CA Core Subsystem:
12631
12632 Fixed a problem in the internal ConvertToInteger routine where new
12633 integers
12634 were not truncated to 32 bits for 32-bit ACPI tables. This routine
12635 converts
12636 buffers and strings to integers.
12637
12638 Implemented support to store a value to an Index() on a String object.
12639 This
12640 is an ACPI 2.0 feature that had not yet been implemented.
12641
12642 Implemented new behavior for storing objects to individual package
12643 elements
12644 (via the Index() operator). The previous behavior was to invoke the
12645 implicit
12646 conversion rules if an object was already present at the index. The new
12647 behavior is to simply delete any existing object and directly store the
12648 new
12649 object. Although the ACPI specification seems unclear on this subject,
12650 other
12651 ACPI implementations behave in this manner. (This is the root of the
12652 AE_BAD_HEX_CONSTANT issue.)
12653
12654 Modified the RSDP memory scan mechanism to support the extended checksum
12655 for
12656 ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
12657 RSDP signature is found with a valid checksum.
12658
12659 Code and Data Size: Current and previous core subsystem library sizes are
12660 shown below. These are the code and data sizes for the acpica.lib
12661 produced
12662 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12663 any ACPI driver or OSPM code. The debug version of the code includes the
12664 debug output trace mechanism and has a much larger code and data size.
12665 Note
12666 that these values will vary depending on the efficiency of the compiler
12667 and
12668 the compiler options used during generation.
12669
12670 Previous Release:
12671 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
12672 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
12673 Current Release:
12674 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
12675 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
12676
12677
12678 2) iASL Compiler/Disassembler:
12679
12680 Fixed a missing semicolon in the aslcompiler.y file.
12681
12682 ----------------------------------------
12683 05 November 2004. Summary of changes for version 20041105:
12684
12685 1) ACPI CA Core Subsystem:
12686
12687 Implemented support for FADT revision 2. This was an interim table
12688 (between
12689 ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
12690
12691 Implemented optional support to allow uninitialized LocalX and ArgX
12692 variables in a control method. The variables are initialized to an
12693 Integer
12694 object with a value of zero. This support is enabled by setting the
12695 AcpiGbl_EnableInterpreterSlack flag to TRUE.
12696
12697 Implemented support for Integer objects for the SizeOf operator. Either
12698 4
12699 or 8 is returned, depending on the current integer size (32-bit or 64-
12700 bit,
12701 depending on the parent table revision).
12702
12703 Fixed a problem in the implementation of the SizeOf and ObjectType
12704 operators
12705 where the operand was resolved to a value too early, causing incorrect
12706 return values for some objects.
12707
12708 Fixed some possible memory leaks during exceptional conditions.
12709
12710 Code and Data Size: Current and previous core subsystem library sizes are
12711 shown below. These are the code and data sizes for the acpica.lib
12712 produced
12713 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12714 any ACPI driver or OSPM code. The debug version of the code includes the
12715 debug output trace mechanism and has a much larger code and data size.
12716 Note
12717 that these values will vary depending on the efficiency of the compiler
12718 and
12719 the compiler options used during generation.
12720
12721 Previous Release:
12722 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
12723 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total
12724 Current Release:
12725 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
12726 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
12727
12728
12729 2) iASL Compiler/Disassembler:
12730
12731 Implemented support for all ACPI 3.0 reserved names and methods.
12732
12733 Implemented all ACPI 3.0 grammar elements in the front-end, including
12734 support for semicolons.
12735
12736 Implemented the ACPI 3.0 Function() and ToUUID() macros
12737
12738 Fixed a problem in the disassembler where a Scope() operator would not be
12739 emitted properly if the target of the scope was in another table.
12740
12741 ----------------------------------------
12742 15 October 2004. Summary of changes for version 20041015:
12743
12744 Note: ACPI CA is currently undergoing an in-depth and complete formal
12745 evaluation to test/verify the following areas. Other suggestions are
12746 welcome. This will result in an increase in the frequency of releases and
12747 the number of bug fixes in the next few months.
12748 - Functional tests for all ASL/AML operators
12749 - All implicit/explicit type conversions
12750 - Bit fields and operation regions
12751 - 64-bit math support and 32-bit-only "truncated" math support
12752 - Exceptional conditions, both compiler and interpreter
12753 - Dynamic object deletion and memory leaks
12754 - ACPI 3.0 support when implemented
12755 - External interfaces to the ACPI subsystem
12756
12757
12758 1) ACPI CA Core Subsystem:
12759
12760 Fixed two alignment issues on 64-bit platforms - within debug statements
12761 in
12762 AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
12763 Address
12764 field within the non-aligned ACPI generic address structure.
12765
12766 Fixed a problem in the Increment and Decrement operators where incorrect
12767 operand resolution could result in the inadvertent modification of the
12768 original integer when the integer is passed into another method as an
12769 argument and the arg is then incremented/decremented.
12770
12771 Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
12772 bit
12773 BCD number were truncated during conversion.
12774
12775 Fixed a problem in the ToDecimal operator where the length of the
12776 resulting
12777 string could be set incorrectly too long if the input operand was a
12778 Buffer
12779 object.
12780
12781 Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
12782 (0)
12783 within a buffer would prematurely terminate a compare between buffer
12784 objects.
12785
12786 Added a check for string overflow (>200 characters as per the ACPI
12787 specification) during the Concatenate operator with two string operands.
12788
12789 Code and Data Size: Current and previous core subsystem library sizes are
12790 shown below. These are the code and data sizes for the acpica.lib
12791 produced
12792 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12793 any ACPI driver or OSPM code. The debug version of the code includes the
12794 debug output trace mechanism and has a much larger code and data size.
12795 Note
12796 that these values will vary depending on the efficiency of the compiler
12797 and
12798 the compiler options used during generation.
12799
12800 Previous Release:
12801 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
12802 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total
12803 Current Release:
12804 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
12805 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total
12806
12807
12808
12809 2) iASL Compiler/Disassembler:
12810
12811 Allow the use of the ObjectType operator on uninitialized Locals and Args
12812 (returns 0 as per the ACPI specification).
12813
12814 Fixed a problem where the compiler would fault if there was a syntax
12815 error
12816 in the FieldName of all of the various CreateXXXField operators.
12817
12818 Disallow the use of lower case letters within the EISAID macro, as per
12819 the
12820 ACPI specification. All EISAID strings must be of the form "UUUNNNN"
12821 Where
12822 U is an uppercase letter and N is a hex digit.
12823
12824
12825 ----------------------------------------
12826 06 October 2004. Summary of changes for version 20041006:
12827
12828 1) ACPI CA Core Subsystem:
12829
12830 Implemented support for the ACPI 3.0 Timer operator. This ASL function
12831 implements a 64-bit timer with 100 nanosecond granularity.
12832
12833 Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
12834 implement the ACPI 3.0 Timer operator. This allows the host OS to
12835 implement
12836 the timer with the best clock available. Also, it keeps the core
12837 subsystem
12838 out of the clock handling business, since the host OS (usually) performs
12839 this function.
12840
12841 Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
12842 functions use a 64-bit address which is part of the packed ACPI Generic
12843 Address Structure. Since the structure is non-aligned, the alignment
12844 macros
12845 are now used to extract the address to a local variable before use.
12846
12847 Fixed a problem where the ToInteger operator assumed all input strings
12848 were
12849 hexadecimal. The operator now handles both decimal strings and hex
12850 strings
12851 (prefixed with "0x").
12852
12853 Fixed a problem where the string length in the string object created as a
12854 result of the internal ConvertToString procedure could be incorrect. This
12855 potentially affected all implicit conversions and also the
12856 ToDecimalString
12857 and ToHexString operators.
12858
12859 Fixed two problems in the ToString operator. If the length parameter was
12860 zero, an incorrect string object was created and the value of the input
12861 length parameter was inadvertently changed from zero to Ones.
12862
12863 Fixed a problem where the optional ResourceSource string in the
12864 ExtendedIRQ
12865 resource macro was ignored.
12866
12867 Simplified the interfaces to the internal division functions, reducing
12868 code
12869 size and complexity.
12870
12871 Code and Data Size: Current and previous core subsystem library sizes are
12872 shown below. These are the code and data sizes for the acpica.lib
12873 produced
12874 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12875 any ACPI driver or OSPM code. The debug version of the code includes the
12876 debug output trace mechanism and has a much larger code and data size.
12877 Note
12878 that these values will vary depending on the efficiency of the compiler
12879 and
12880 the compiler options used during generation.
12881
12882 Previous Release:
12883 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total
12884 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total
12885 Current Release:
12886 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
12887 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total
12888
12889
12890 2) iASL Compiler/Disassembler:
12891
12892 Implemented support for the ACPI 3.0 Timer operator.
12893
12894 Fixed a problem where the Default() operator was inadvertently ignored in
12895 a
12896 Switch/Case block. This was a problem in the translation of the Switch
12897 statement to If...Else pairs.
12898
12899 Added support to allow a standalone Return operator, with no parentheses
12900 (or
12901 operands).
12902
12903 Fixed a problem with code generation for the ElseIf operator where the
12904 translated Else...If parse tree was improperly constructed leading to the
12905 loss of some code.
12906
12907 ----------------------------------------
12908 22 September 2004. Summary of changes for version 20040922:
12909
12910 1) ACPI CA Core Subsystem:
12911
12912 Fixed a problem with the implementation of the LNot() operator where
12913 "Ones"
12914 was not returned for the TRUE case. Changed the code to return Ones
12915 instead
12916 of (!Arg) which was usually 1. This change affects iASL constant folding
12917 for
12918 this operator also.
12919
12920 Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
12921 not
12922 initialized properly -- Now zero the entire buffer in this case where the
12923 buffer already exists.
12924
12925 Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
12926 Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
12927 related code considerably. This will require changes/updates to all OS
12928 interface layers (OSLs.)
12929
12930 Implemented a new external interface, AcpiInstallExceptionHandler, to
12931 allow
12932 a system exception handler to be installed. This handler is invoked upon
12933 any
12934 run-time exception that occurs during control method execution.
12935
12936 Added support for the DSDT in AcpiTbFindTable. This allows the
12937 DataTableRegion() operator to access the local copy of the DSDT.
12938
12939 Code and Data Size: Current and previous core subsystem library sizes are
12940 shown below. These are the code and data sizes for the acpica.lib
12941 produced
12942 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12943 any ACPI driver or OSPM code. The debug version of the code includes the
12944 debug output trace mechanism and has a much larger code and data size.
12945 Note
12946 that these values will vary depending on the efficiency of the compiler
12947 and
12948 the compiler options used during generation.
12949
12950 Previous Release:
12951 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total
12952 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total
12953 Current Release:
12954 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total
12955 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total
12956
12957
12958 2) iASL Compiler/Disassembler:
12959
12960 Fixed a problem with constant folding and the LNot operator. LNot was
12961 returning 1 in the TRUE case, not Ones as per the ACPI specification.
12962 This
12963 could result in the generation of an incorrect folded/reduced constant.
12964
12965 End-Of-File is now allowed within a "//"-style comment. A parse error no
12966 longer occurs if such a comment is at the very end of the input ASL
12967 source
12968 file.
12969
12970 Implemented the "-r" option to override the Revision in the table header.
12971 The initial use of this option will be to simplify the evaluation of the
12972 AML
12973 interpreter by allowing a single ASL source module to be compiled for
12974 either
12975 32-bit or 64-bit integers.
12976
12977
12978 ----------------------------------------
12979 27 August 2004. Summary of changes for version 20040827:
12980
12981 1) ACPI CA Core Subsystem:
12982
12983 - Implemented support for implicit object conversion in the non-numeric
12984 logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
12985 and
12986 LNotEqual.) Any combination of Integers/Strings/Buffers may now be used;
12987 the second operand is implicitly converted on the fly to match the type
12988 of
12989 the first operand. For example:
12990
12991 LEqual (Source1, Source2)
12992
12993 Source1 and Source2 must each evaluate to an integer, a string, or a
12994 buffer.
12995 The data type of Source1 dictates the required type of Source2. Source2
12996 is
12997 implicitly converted if necessary to match the type of Source1.
12998
12999 - Updated and corrected the behavior of the string conversion support.
13000 The
13001 rules concerning conversion of buffers to strings (according to the ACPI
13002 specification) are as follows:
13003
13004 ToDecimalString - explicit byte-wise conversion of buffer to string of
13005 decimal values (0-255) separated by commas. ToHexString - explicit byte-
13006 wise
13007 conversion of buffer to string of hex values (0-FF) separated by commas.
13008 ToString - explicit byte-wise conversion of buffer to string. Byte-by-
13009 byte
13010 copy with no transform except NULL terminated. Any other implicit buffer-
13011 to-
13012 string conversion - byte-wise conversion of buffer to string of hex
13013 values
13014 (0-FF) separated by spaces.
13015
13016 - Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
13017
13018 - Fixed a problem in AcpiNsGetPathnameLength where the returned length
13019 was
13020 one byte too short in the case of a node in the root scope. This could
13021 cause a fault during debug output.
13022
13023 - Code and Data Size: Current and previous core subsystem library sizes
13024 are
13025 shown below. These are the code and data sizes for the acpica.lib
13026 produced
13027 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13028 any ACPI driver or OSPM code. The debug version of the code includes the
13029 debug output trace mechanism and has a much larger code and data size.
13030 Note
13031 that these values will vary depending on the efficiency of the compiler
13032 and
13033 the compiler options used during generation.
13034
13035 Previous Release:
13036 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total
13037 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total
13038 Current Release:
13039 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total
13040 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total
13041
13042
13043 2) iASL Compiler/Disassembler:
13044
13045 - Fixed a Linux generation error.
13046
13047
13048 ----------------------------------------
13049 16 August 2004. Summary of changes for version 20040816:
13050
13051 1) ACPI CA Core Subsystem:
13052
13053 Designed and implemented support within the AML interpreter for the so-
13054 called "implicit return". This support returns the result of the last
13055 ASL
13056 operation within a control method, in the absence of an explicit Return()
13057 operator. A few machines depend on this behavior, even though it is not
13058 explicitly supported by the ASL language. It is optional support that
13059 can
13060 be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
13061
13062 Removed support for the PCI_Config address space from the internal low
13063 level
13064 hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This
13065 support was not used internally, and would not work correctly anyway
13066 because
13067 the PCI bus number and segment number were not supported. There are
13068 separate interfaces for PCI configuration space access because of the
13069 unique
13070 interface.
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.0K Code, 11.5K Data, 89.5K Total
13085 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total
13086 Current Release:
13087 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total
13088 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total
13089
13090
13091 2) iASL Compiler/Disassembler:
13092
13093 Fixed a problem where constants in ASL expressions at the root level (not
13094 within a control method) could be inadvertently truncated during code
13095 generation. This problem was introduced in the 20040715 release.
13096
13097
13098 ----------------------------------------
13099 15 July 2004. Summary of changes for version 20040715:
13100
13101 1) ACPI CA Core Subsystem:
13102
13103 Restructured the internal HW GPE interfaces to pass/track the current
13104 state
13105 of interrupts (enabled/disabled) in order to avoid possible deadlock and
13106 increase flexibility of the interfaces.
13107
13108 Implemented a "lexicographical compare" for String and Buffer objects
13109 within
13110 the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
13111 -
13112 as per further clarification to the ACPI specification. Behavior is
13113 similar
13114 to C library "strcmp".
13115
13116 Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
13117 external function. In the 32-bit non-debug case, the stack use has been
13118 reduced from 168 bytes to 32 bytes.
13119
13120 Deployed a new run-time configuration flag,
13121 AcpiGbl_EnableInterpreterSlack,
13122 whose purpose is to allow the AML interpreter to forgive certain bad AML
13123 constructs. Default setting is FALSE.
13124
13125 Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
13126 IO
13127 support code. If enabled, it allows field access to go beyond the end of
13128 a
13129 region definition if the field is within the region length rounded up to
13130 the
13131 next access width boundary (a common coding error.)
13132
13133 Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
13134 ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also,
13135 these
13136 symbols are lowercased by the latest version of the AcpiSrc tool.
13137
13138 The prototypes for the PCI interfaces in acpiosxf.h have been updated to
13139 rename "Register" to simply "Reg" to prevent certain compilers from
13140 complaining.
13141
13142 Code and Data Size: Current and previous core subsystem library sizes are
13143 shown below. These are the code and data sizes for the acpica.lib
13144 produced
13145 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13146 any ACPI driver or OSPM code. The debug version of the code includes the
13147 debug output trace mechanism and has a much larger code and data size.
13148 Note
13149 that these values will vary depending on the efficiency of the compiler
13150 and
13151 the compiler options used during generation.
13152
13153 Previous Release:
13154 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
13155 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total
13156 Current Release:
13157 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
13158 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total
13159
13160
13161 2) iASL Compiler/Disassembler:
13162
13163 Implemented full support for Package objects within the Case() operator.
13164 Note: The Break() operator is currently not supported within Case blocks
13165 (TermLists) as there is some question about backward compatibility with
13166 ACPI
13167 1.0 interpreters.
13168
13169
13170 Fixed a problem where complex terms were not supported properly within
13171 the
13172 Switch() operator.
13173
13174 Eliminated extraneous warning for compiler-emitted reserved names of the
13175 form "_T_x". (Used in Switch/Case operators.)
13176
13177 Eliminated optimization messages for "_T_x" objects and small constants
13178 within the DefinitionBlock operator.
13179
13180
13181 ----------------------------------------
13182 15 June 2004. Summary of changes for version 20040615:
13183
13184 1) ACPI CA Core Subsystem:
13185
13186 Implemented support for Buffer and String objects (as per ACPI 2.0) for
13187 the
13188 following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and
13189 LLessEqual.
13190
13191 All directory names in the entire source package are lower case, as they
13192 were in earlier releases.
13193
13194 Implemented "Disassemble" command in the AML debugger that will
13195 disassemble
13196 a single control method.
13197
13198 Code and Data Size: Current and previous core subsystem library sizes are
13199 shown below. These are the code and data sizes for the acpica.lib
13200 produced
13201 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13202 any ACPI driver or OSPM code. The debug version of the code includes the
13203 debug output trace mechanism and has a much larger code and data size.
13204 Note
13205 that these values will vary depending on the efficiency of the compiler
13206 and
13207 the compiler options used during generation.
13208
13209 Previous Release:
13210 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total
13211 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total
13212
13213 Current Release:
13214 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
13215 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total
13216
13217
13218 2) iASL Compiler/Disassembler:
13219
13220 Implemented support for Buffer and String objects (as per ACPI 2.0) for
13221 the
13222 following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and
13223 LLessEqual.
13224
13225 All directory names in the entire source package are lower case, as they
13226 were in earlier releases.
13227
13228 Fixed a fault when using the -g or -d<nofilename> options if the FADT was
13229 not found.
13230
13231 Fixed an issue with the Windows version of the compiler where later
13232 versions
13233 of Windows place the FADT in the registry under the name "FADT" and not
13234 "FACP" as earlier versions did. This applies when using the -g or -
13235 d<nofilename> options. The compiler now looks for both strings as
13236 necessary.
13237
13238 Fixed a problem with compiler namepath optimization where a namepath
13239 within
13240 the Scope() operator could not be optimized if the namepath was a subpath
13241 of
13242 the current scope path.
13243
13244 ----------------------------------------
13245 27 May 2004. Summary of changes for version 20040527:
13246
13247 1) ACPI CA Core Subsystem:
13248
13249 Completed a new design and implementation for EBDA (Extended BIOS Data
13250 Area)
13251 support in the RSDP scan code. The original code improperly scanned for
13252 the
13253 EBDA by simply scanning from memory location 0 to 0x400. The correct
13254 method
13255 is to first obtain the EBDA pointer from within the BIOS data area, then
13256 scan 1K of memory starting at the EBDA pointer. There appear to be few
13257 if
13258 any machines that place the RSDP in the EBDA, however.
13259
13260 Integrated a fix for a possible fault during evaluation of BufferField
13261 arguments. Obsolete code that was causing the problem was removed.
13262
13263 Found and fixed a problem in the Field Support Code where data could be
13264 corrupted on a bit field read that starts on an aligned boundary but does
13265 not end on an aligned boundary. Merged the read/write "datum length"
13266 calculation code into a common procedure.
13267
13268 Rolled in a couple of changes to the FreeBSD-specific header.
13269
13270
13271 Code and Data Size: Current and previous core subsystem library sizes are
13272 shown below. These are the code and data sizes for the acpica.lib
13273 produced
13274 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13275 any ACPI driver or OSPM code. The debug version of the code includes the
13276 debug output trace mechanism and has a much larger code and data size.
13277 Note
13278 that these values will vary depending on the efficiency of the compiler
13279 and
13280 the compiler options used during generation.
13281
13282 Previous Release:
13283 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
13284 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total
13285 Current Release:
13286 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total
13287 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total
13288
13289
13290 2) iASL Compiler/Disassembler:
13291
13292 Fixed a generation warning produced by some overly-verbose compilers for
13293 a
13294 64-bit constant.
13295
13296 ----------------------------------------
13297 14 May 2004. Summary of changes for version 20040514:
13298
13299 1) ACPI CA Core Subsystem:
13300
13301 Fixed a problem where hardware GPE enable bits sometimes not set properly
13302 during and after GPE method execution. Result of 04/27 changes.
13303
13304 Removed extra "clear all GPEs" when sleeping/waking.
13305
13306 Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
13307 AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
13308 to
13309 the new AcpiEv* calls as appropriate.
13310
13311 ACPI_OS_NAME was removed from the OS-specific headers. The default name
13312 is
13313 now "Microsoft Windows NT" for maximum compatibility. However this can
13314 be
13315 changed by modifying the acconfig.h file.
13316
13317 Allow a single invocation of AcpiInstallNotifyHandler for a handler that
13318 traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag.
13319
13320 Run _INI methods on ThermalZone objects. This is against the ACPI
13321 specification, but there is apparently ASL code in the field that has
13322 these
13323 _INI methods, and apparently "other" AML interpreters execute them.
13324
13325 Performed a full 16/32/64 bit lint that resulted in some small changes.
13326
13327 Added a sleep simulation command to the AML debugger to test sleep code.
13328
13329 Code and Data Size: Current and previous core subsystem library sizes are
13330 shown below. These are the code and data sizes for the acpica.lib
13331 produced
13332 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13333 any ACPI driver or OSPM code. The debug version of the code includes the
13334 debug output trace mechanism and has a much larger code and data size.
13335 Note
13336 that these values will vary depending on the efficiency of the compiler
13337 and
13338 the compiler options used during generation.
13339
13340 Previous Release:
13341 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
13342 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total
13343 Current Release:
13344 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
13345 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total
13346
13347 ----------------------------------------
13348 27 April 2004. Summary of changes for version 20040427:
13349
13350 1) ACPI CA Core Subsystem:
13351
13352 Completed a major overhaul of the GPE handling within ACPI CA. There are
13353 now three types of GPEs: wake-only, runtime-only, and combination
13354 wake/run.
13355 The only GPEs allowed to be combination wake/run are for button-style
13356 devices such as a control-method power button, control-method sleep
13357 button,
13358 or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are
13359 not
13360 referenced by any _PRW methods are marked for "runtime" and hardware
13361 enabled. Any GPE that is referenced by a _PRW method is marked for
13362 "wake"
13363 (and disabled at runtime). However, at sleep time, only those GPEs that
13364 have been specifically enabled for wake via the AcpiEnableGpe interface
13365 will
13366 actually be hardware enabled.
13367
13368 A new external interface has been added, AcpiSetGpeType(), that is meant
13369 to
13370 be used by device drivers to force a GPE to a particular type. It will
13371 be
13372 especially useful for the drivers for the button devices mentioned above.
13373
13374 Completed restructuring of the ACPI CA initialization sequence so that
13375 default operation region handlers are installed before GPEs are
13376 initialized
13377 and the _PRW methods are executed. This will prevent errors when the
13378 _PRW
13379 methods attempt to access system memory or I/O space.
13380
13381 GPE enable/disable no longer reads the GPE enable register. We now keep
13382 the
13383 enable info for runtime and wake separate and in the GPE_EVENT_INFO. We
13384 thus no longer depend on the hardware to maintain these bits.
13385
13386 Always clear the wake status and fixed/GPE status bits before sleep, even
13387 for state S5.
13388
13389 Improved the AML debugger output for displaying the GPE blocks and their
13390 current status.
13391
13392 Added new strings for the _OSI method, of the form "Windows 2001 SPx"
13393 where
13394 x = 0,1,2,3,4.
13395
13396 Fixed a problem where the physical address was incorrectly calculated
13397 when
13398 the Load() operator was used to directly load from an Operation Region
13399 (vs.
13400 loading from a Field object.) Also added check for minimum table length
13401 for
13402 this case.
13403
13404 Fix for multiple mutex acquisition. Restore original thread SyncLevel on
13405 mutex release.
13406
13407 Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
13408 consistency with the other fields returned.
13409
13410 Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such
13411 structure for each GPE in the system, so the size of this structure is
13412 important.
13413
13414 CPU stack requirement reduction: Cleaned up the method execution and
13415 object
13416 evaluation paths so that now a parameter structure is passed, instead of
13417 copying the various method parameters over and over again.
13418
13419 In evregion.c: Correctly exit and reenter the interpreter region if and
13420 only if dispatching an operation region request to a user-installed
13421 handler.
13422 Do not exit/reenter when dispatching to a default handler (e.g., default
13423 system memory or I/O handlers)
13424
13425
13426 Notes for updating drivers for the new GPE support. The following
13427 changes
13428 must be made to ACPI-related device drivers that are attached to one or
13429 more
13430 GPEs: (This information will be added to the ACPI CA Programmer
13431 Reference.)
13432
13433 1) AcpiInstallGpeHandler no longer automatically enables the GPE, you
13434 must
13435 explicitly call AcpiEnableGpe.
13436 2) There is a new interface called AcpiSetGpeType. This should be called
13437 before enabling the GPE. Also, this interface will automatically disable
13438 the GPE if it is currently enabled.
13439 3) AcpiEnableGpe no longer supports a GPE type flag.
13440
13441 Specific drivers that must be changed:
13442 1) EC driver:
13443 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
13444 AeGpeHandler, NULL);
13445 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
13446 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
13447
13448 2) Button Drivers (Power, Lid, Sleep):
13449 Run _PRW method under parent device
13450 If _PRW exists: /* This is a control-method button */
13451 Extract GPE number and possibly GpeDevice
13452 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
13453 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
13454
13455 For all other devices that have _PRWs, we automatically set the GPE type
13456 to
13457 ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
13458 This
13459 must be done on a selective basis, usually requiring some kind of user
13460 app
13461 to allow the user to pick the wake devices.
13462
13463
13464 Code and Data Size: Current and previous core subsystem library sizes are
13465 shown below. These are the code and data sizes for the acpica.lib
13466 produced
13467 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13468 any ACPI driver or OSPM code. The debug version of the code includes the
13469 debug output trace mechanism and has a much larger code and data size.
13470 Note
13471 that these values will vary depending on the efficiency of the compiler
13472 and
13473 the compiler options used during generation.
13474
13475 Previous Release:
13476 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total
13477 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total
13478 Current Release:
13479
13480 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
13481 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total
13482
13483
13484
13485 ----------------------------------------
13486 02 April 2004. Summary of changes for version 20040402:
13487
13488 1) ACPI CA Core Subsystem:
13489
13490 Fixed an interpreter problem where an indirect store through an ArgX
13491 parameter was incorrectly applying the "implicit conversion rules" during
13492 the store. From the ACPI specification: "If the target is a method local
13493 or
13494 argument (LocalX or ArgX), no conversion is performed and the result is
13495 stored directly to the target". The new behavior is to disable implicit
13496 conversion during ALL stores to an ArgX.
13497
13498 Changed the behavior of the _PRW method scan to ignore any and all errors
13499 returned by a given _PRW. This prevents the scan from aborting from the
13500 failure of any single _PRW.
13501
13502 Moved the runtime configuration parameters from the global init procedure
13503 to
13504 static variables in acglobal.h. This will allow the host to override the
13505 default values easily.
13506
13507 Code and Data Size: Current and previous core subsystem library sizes are
13508 shown below. These are the code and data sizes for the acpica.lib
13509 produced
13510 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13511 any ACPI driver or OSPM code. The debug version of the code includes the
13512 debug output trace mechanism and has a much larger code and data size.
13513 Note
13514 that these values will vary depending on the efficiency of the compiler
13515 and
13516 the compiler options used during generation.
13517
13518 Previous Release:
13519 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total
13520 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total
13521 Current Release:
13522 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total
13523 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total
13524
13525
13526 2) iASL Compiler/Disassembler:
13527
13528 iASL now fully disassembles SSDTs. However, External() statements are
13529 not
13530 generated automatically for unresolved symbols at this time. This is a
13531 planned feature for future implementation.
13532
13533 Fixed a scoping problem in the disassembler that occurs when the type of
13534 the
13535 target of a Scope() operator is overridden. This problem caused an
13536 incorrectly nested internal namespace to be constructed.
13537
13538 Any warnings or errors that are emitted during disassembly are now
13539 commented
13540 out automatically so that the resulting file can be recompiled without
13541 any
13542 hand editing.
13543
13544 ----------------------------------------
13545 26 March 2004. Summary of changes for version 20040326:
13546
13547 1) ACPI CA Core Subsystem:
13548
13549 Implemented support for "wake" GPEs via interaction between GPEs and the
13550 _PRW methods. Every GPE that is pointed to by one or more _PRWs is
13551 identified as a WAKE GPE and by default will no longer be enabled at
13552 runtime. Previously, we were blindly enabling all GPEs with a
13553 corresponding
13554 _Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
13555 We
13556 believe this has been the cause of thousands of "spurious" GPEs on some
13557 systems.
13558
13559 This new GPE behavior is can be reverted to the original behavior (enable
13560 ALL GPEs at runtime) via a runtime flag.
13561
13562 Fixed a problem where aliased control methods could not access objects
13563 properly. The proper scope within the namespace was not initialized
13564 (transferred to the target of the aliased method) before executing the
13565 target method.
13566
13567 Fixed a potential race condition on internal object deletion on the
13568 return
13569 object in AcpiEvaluateObject.
13570
13571 Integrated a fix for resource descriptors where both _MEM and _MTP were
13572 being extracted instead of just _MEM. (i.e. bitmask was incorrectly too
13573 wide, 0x0F instead of 0x03.)
13574
13575 Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
13576 preventing
13577 a
13578 fault in some cases.
13579
13580 Updated Notify() values for debug statements in evmisc.c
13581
13582 Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
13583
13584 Code and Data Size: Current and previous core subsystem library sizes are
13585 shown below. These are the code and data sizes for the acpica.lib
13586 produced
13587 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13588 any ACPI driver or OSPM code. The debug version of the code includes the
13589 debug output trace mechanism and has a much larger code and data size.
13590 Note
13591 that these values will vary depending on the efficiency of the compiler
13592 and
13593 the compiler options used during generation.
13594
13595 Previous Release:
13596
13597 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total
13598 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total
13599 Current Release:
13600 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total
13601 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total
13602
13603 ----------------------------------------
13604 11 March 2004. Summary of changes for version 20040311:
13605
13606 1) ACPI CA Core Subsystem:
13607
13608 Fixed a problem where errors occurring during the parse phase of control
13609 method execution did not abort cleanly. For example, objects created and
13610 installed in the namespace were not deleted. This caused all subsequent
13611 invocations of the method to return the AE_ALREADY_EXISTS exception.
13612
13613 Implemented a mechanism to force a control method to "Serialized"
13614 execution
13615 if the method attempts to create namespace objects. (The root of the
13616 AE_ALREADY_EXISTS problem.)
13617
13618 Implemented support for the predefined _OSI "internal" control method.
13619 Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
13620 and
13621 "Windows 2001.1", and can be easily upgraded for new strings as
13622 necessary.
13623 This feature will allow "other" operating systems to execute the fully
13624 tested, "Windows" code path through the ASL code
13625
13626 Global Lock Support: Now allows multiple acquires and releases with any
13627 internal thread. Removed concept of "owning thread" for this special
13628 mutex.
13629
13630 Fixed two functions that were inappropriately declaring large objects on
13631 the
13632 CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage
13633 during
13634 method execution considerably.
13635
13636 Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
13637 S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
13638
13639 Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
13640 defined on the machine.
13641
13642 Implemented two runtime options: One to force all control method
13643 execution
13644 to "Serialized" to mimic Windows behavior, another to disable _OSI
13645 support
13646 if it causes problems on a given machine.
13647
13648 Code and Data Size: Current and previous core subsystem library sizes are
13649 shown below. These are the code and data sizes for the acpica.lib
13650 produced
13651 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13652 any ACPI driver or OSPM code. The debug version of the code includes the
13653 debug output trace mechanism and has a much larger code and data size.
13654 Note
13655 that these values will vary depending on the efficiency of the compiler
13656 and
13657 the compiler options used during generation.
13658
13659 Previous Release:
13660 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total
13661 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total
13662 Current Release:
13663 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total
13664 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total
13665
13666 2) iASL Compiler/Disassembler:
13667
13668 Fixed an array size problem for FreeBSD that would cause the compiler to
13669 fault.
13670
13671 ----------------------------------------
13672 20 February 2004. Summary of changes for version 20040220:
13673
13674
13675 1) ACPI CA Core Subsystem:
13676
13677 Implemented execution of _SxD methods for Device objects in the
13678 GetObjectInfo interface.
13679
13680 Fixed calls to _SST method to pass the correct arguments.
13681
13682 Added a call to _SST on wake to restore to "working" state.
13683
13684 Check for End-Of-Buffer failure case in the WalkResources interface.
13685
13686 Integrated fix for 64-bit alignment issue in acglobal.h by moving two
13687 structures to the beginning of the file.
13688
13689 After wake, clear GPE status register(s) before enabling GPEs.
13690
13691 After wake, clear/enable power button. (Perhaps we should clear/enable
13692 all
13693 fixed events upon wake.)
13694
13695 Fixed a couple of possible memory leaks in the Namespace manager.
13696
13697 Integrated latest acnetbsd.h file.
13698
13699 ----------------------------------------
13700 11 February 2004. Summary of changes for version 20040211:
13701
13702
13703 1) ACPI CA Core Subsystem:
13704
13705 Completed investigation and implementation of the call-by-reference
13706 mechanism for control method arguments.
13707
13708 Fixed a problem where a store of an object into an indexed package could
13709 fail if the store occurs within a different method than the method that
13710 created the package.
13711
13712 Fixed a problem where the ToDecimal operator could return incorrect
13713 results.
13714
13715 Fixed a problem where the CopyObject operator could fail on some of the
13716 more
13717 obscure objects (e.g., Reference objects.)
13718
13719 Improved the output of the Debug object to display buffer, package, and
13720 index objects.
13721
13722 Fixed a problem where constructs of the form "RefOf (ArgX)" did not
13723 return
13724 the expected result.
13725
13726 Added permanent ACPI_REPORT_ERROR macros for all instances of the
13727 ACPI_AML_INTERNAL exception.
13728
13729 Integrated latest version of acfreebsd.h
13730
13731 ----------------------------------------
13732 16 January 2004. Summary of changes for version 20040116:
13733
13734 The purpose of this release is primarily to update the copyright years in
13735 each module, thus causing a huge number of diffs. There are a few small
13736 functional changes, however.
13737
13738 1) ACPI CA Core Subsystem:
13739
13740 Improved error messages when there is a problem finding one or more of
13741 the
13742 required base ACPI tables
13743
13744 Reintroduced the definition of APIC_HEADER in actbl.h
13745
13746 Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
13747
13748 Removed extraneous reference to NewObj in dsmthdat.c
13749
13750 2) iASL compiler
13751
13752 Fixed a problem introduced in December that disabled the correct
13753 disassembly
13754 of Resource Templates
13755
13756
13757 ----------------------------------------
13758 03 December 2003. Summary of changes for version 20031203:
13759
13760 1) ACPI CA Core Subsystem:
13761
13762 Changed the initialization of Operation Regions during subsystem
13763 init to perform two entire walks of the ACPI namespace; The first
13764 to initialize the regions themselves, the second to execute the
13765 _REG methods. This fixed some interdependencies across _REG
13766 methods found on some machines.
13767
13768 Fixed a problem where a Store(Local0, Local1) could simply update
13769 the object reference count, and not create a new copy of the
13770 object if the Local1 is uninitialized.
13771
13772 Implemented support for the _SST reserved method during sleep
13773 transitions.
13774
13775 Implemented support to clear the SLP_TYP and SLP_EN bits when
13776 waking up, this is apparently required by some machines.
13777
13778 When sleeping, clear the wake status only if SleepState is not S5.
13779
13780 Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
13781 pointer arithmetic advanced a string pointer too far.
13782
13783 Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
13784 could be returned if the requested table has not been loaded.
13785
13786 Within the support for IRQ resources, restructured the handling of
13787 the active and edge/level bits.
13788
13789 Fixed a few problems in AcpiPsxExecute() where memory could be
13790 leaked under certain error conditions.
13791
13792 Improved error messages for the cases where the ACPI mode could
13793 not be entered.
13794
13795 Code and Data Size: Current and previous core subsystem library
13796 sizes are shown below. These are the code and data sizes for the
13797 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13798 these values do not include any ACPI driver or OSPM code. The
13799 debug version of the code includes the debug output trace
13800 mechanism and has a much larger code and data size. Note that
13801 these values will vary depending on the efficiency of the compiler
13802 and the compiler options used during generation.
13803
13804 Previous Release (20031029):
13805 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total
13806 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total
13807 Current Release:
13808 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total
13809 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total
13810
13811 2) iASL Compiler/Disassembler:
13812
13813 Implemented a fix for the iASL disassembler where a bad index was
13814 generated. This was most noticeable on 64-bit platforms
13815
13816
13817 ----------------------------------------
13818 29 October 2003. Summary of changes for version 20031029:
13819
13820 1) ACPI CA Core Subsystem:
13821
13822
13823 Fixed a problem where a level-triggered GPE with an associated
13824 _Lxx control method was incorrectly cleared twice.
13825
13826 Fixed a problem with the Field support code where an access can
13827 occur beyond the end-of-region if the field is non-aligned but
13828 extends to the very end of the parent region (resulted in an
13829 AE_AML_REGION_LIMIT exception.)
13830
13831 Fixed a problem with ACPI Fixed Events where an RT Clock handler
13832 would not get invoked on an RTC event. The RTC event bitmasks for
13833 the PM1 registers were not being initialized properly.
13834
13835 Implemented support for executing _STA and _INI methods for
13836 Processor objects. Although this is currently not part of the
13837 ACPI specification, there is existing ASL code that depends on the
13838 init-time execution of these methods.
13839
13840 Implemented and deployed a GetDescriptorName function to decode
13841 the various types of internal descriptors. Guards against null
13842 descriptors during debug output also.
13843
13844 Implemented and deployed a GetNodeName function to extract the 4-
13845 character namespace node name. This function simplifies the debug
13846 and error output, as well as guarding against null pointers during
13847 output.
13848
13849 Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
13850 simplify the debug and error output of 64-bit integers. This
13851 macro replaces the HIDWORD and LODWORD macros for dumping these
13852 integers.
13853
13854 Updated the implementation of the Stall() operator to only call
13855 AcpiOsStall(), and also return an error if the operand is larger
13856 than 255. This preserves the required behavior of not
13857 relinquishing the processor, as would happen if AcpiOsSleep() was
13858 called for "long stalls".
13859
13860 Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
13861 initialized are now treated as NOOPs.
13862
13863 Cleaned up a handful of warnings during 64-bit generation.
13864
13865 Fixed a reported error where and incorrect GPE number was passed
13866 to the GPE dispatch handler. This value is only used for error
13867 output, however. Used this opportunity to clean up and streamline
13868 the GPE dispatch code.
13869
13870 Code and Data Size: Current and previous core subsystem library
13871 sizes are shown below. These are the code and data sizes for the
13872 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13873 these values do not include any ACPI driver or OSPM code. The
13874
13875 debug version of the code includes the debug output trace
13876 mechanism and has a much larger code and data size. Note that
13877 these values will vary depending on the efficiency of the compiler
13878 and the compiler options used during generation.
13879
13880 Previous Release (20031002):
13881 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total
13882 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total
13883 Current Release:
13884 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total
13885 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total
13886
13887
13888 2) iASL Compiler/Disassembler:
13889
13890 Updated the iASL compiler to return an error if the operand to the
13891 Stall() operator is larger than 255.
13892
13893
13894 ----------------------------------------
13895 02 October 2003. Summary of changes for version 20031002:
13896
13897
13898 1) ACPI CA Core Subsystem:
13899
13900 Fixed a problem with Index Fields where the index was not
13901 incremented for fields that require multiple writes to the
13902 index/data registers (Fields that are wider than the data
13903 register.)
13904
13905 Fixed a problem with all Field objects where a write could go
13906 beyond the end-of-field if the field was larger than the access
13907 granularity and therefore required multiple writes to complete the
13908 request. An extra write beyond the end of the field could happen
13909 inadvertently.
13910
13911 Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
13912 would incorrectly be returned if the width of the Data Register
13913 was larger than the specified field access width.
13914
13915 Completed fixes for LoadTable() and Unload() and verified their
13916 operation. Implemented full support for the "DdbHandle" object
13917 throughout the ACPI CA subsystem.
13918
13919 Implemented full support for the MADT and ECDT tables in the ACPI
13920 CA header files. Even though these tables are not directly
13921 consumed by ACPI CA, the header definitions are useful for ACPI
13922 device drivers.
13923
13924 Integrated resource descriptor fixes posted to the Linux ACPI
13925 list. This included checks for minimum descriptor length, and
13926 support for trailing NULL strings within descriptors that have
13927 optional string elements.
13928
13929 Code and Data Size: Current and previous core subsystem library
13930 sizes are shown below. These are the code and data sizes for the
13931 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13932 these values do not include any ACPI driver or OSPM code. The
13933 debug version of the code includes the debug output trace
13934 mechanism and has a much larger code and data size. Note that
13935 these values will vary depending on the efficiency of the compiler
13936 and the compiler options used during generation.
13937
13938 Previous Release (20030918):
13939 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total
13940 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total
13941 Current Release:
13942 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total
13943 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total
13944
13945
13946 2) iASL Compiler:
13947
13948 Implemented detection of non-ASCII characters within the input
13949 source ASL file. This catches attempts to compile binary (AML)
13950 files early in the compile, with an informative error message.
13951
13952 Fixed a problem where the disassembler would fault if the output
13953 filename could not be generated or if the output file could not be
13954 opened.
13955
13956 ----------------------------------------
13957 18 September 2003. Summary of changes for version 20030918:
13958
13959
13960 1) ACPI CA Core Subsystem:
13961
13962 Found and fixed a longstanding problem with the late execution of
13963 the various deferred AML opcodes (such as Operation Regions,
13964 Buffer Fields, Buffers, and Packages). If the name string
13965 specified for the name of the new object placed the object in a
13966 scope other than the current scope, the initialization/execution
13967 of the opcode failed. The solution to this problem was to
13968 implement a mechanism where the late execution of such opcodes
13969 does not attempt to lookup/create the name a second time in an
13970 incorrect scope. This fixes the "region size computed
13971 incorrectly" problem.
13972
13973 Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
13974 Global Lock AE_BAD_PARAMETER error.
13975
13976 Fixed several 64-bit issues with prototypes, casting and data
13977 types.
13978
13979 Removed duplicate prototype from acdisasm.h
13980
13981 Fixed an issue involving EC Operation Region Detach (Shaohua Li)
13982
13983 Code and Data Size: Current and previous core subsystem library
13984 sizes are shown below. These are the code and data sizes for the
13985 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13986 these values do not include any ACPI driver or OSPM code. The
13987 debug version of the code includes the debug output trace
13988 mechanism and has a much larger code and data size. Note that
13989 these values will vary depending on the efficiency of the compiler
13990 and the compiler options used during generation.
13991
13992 Previous Release:
13993
13994 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total
13995 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total
13996 Current Release:
13997 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total
13998 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total
13999
14000
14001 2) Linux:
14002
14003 Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
14004 correct sleep time in seconds.
14005
14006 ----------------------------------------
14007 14 July 2003. Summary of changes for version 20030619:
14008
14009 1) ACPI CA Core Subsystem:
14010
14011 Parse SSDTs in order discovered, as opposed to reverse order
14012 (Hrvoje Habjanic)
14013
14014 Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
14015 Klausner,
14016 Nate Lawson)
14017
14018
14019 2) Linux:
14020
14021 Dynamically allocate SDT list (suggested by Andi Kleen)
14022
14023 proc function return value cleanups (Andi Kleen)
14024
14025 Correctly handle NMI watchdog during long stalls (Andrew Morton)
14026
14027 Make it so acpismp=force works (reported by Andrew Morton)
14028
14029
14030 ----------------------------------------
14031 19 June 2003. Summary of changes for version 20030619:
14032
14033 1) ACPI CA Core Subsystem:
14034
14035 Fix To/FromBCD, eliminating the need for an arch-specific #define.
14036
14037 Do not acquire a semaphore in the S5 shutdown path.
14038
14039 Fix ex_digits_needed for 0. (Takayoshi Kochi)
14040
14041 Fix sleep/stall code reversal. (Andi Kleen)
14042
14043 Revert a change having to do with control method calling
14044 semantics.
14045
14046 2) Linux:
14047
14048 acpiphp update (Takayoshi Kochi)
14049
14050 Export acpi_disabled for sonypi (Stelian Pop)
14051
14052 Mention acpismp=force in config help
14053
14054 Re-add acpitable.c and acpismp=force. This improves backwards
14055
14056 compatibility and also cleans up the code to a significant degree.
14057
14058 Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
14059
14060 ----------------------------------------
14061 22 May 2003. Summary of changes for version 20030522:
14062
14063 1) ACPI CA Core Subsystem:
14064
14065 Found and fixed a reported problem where an AE_NOT_FOUND error
14066 occurred occasionally during _BST evaluation. This turned out to
14067 be an Owner ID allocation issue where a called method did not get
14068 a new ID assigned to it. Eventually, (after 64k calls), the Owner
14069 ID UINT16 would wraparound so that the ID would be the same as the
14070 caller's and the called method would delete the caller's
14071 namespace.
14072
14073 Implemented extended error reporting for control methods that are
14074 aborted due to a run-time exception. Output includes the exact
14075 AML instruction that caused the method abort, a dump of the method
14076 locals and arguments at the time of the abort, and a trace of all
14077 nested control method calls.
14078
14079 Modified the interpreter to allow the creation of buffers of zero
14080 length from the AML code. Implemented new code to ensure that no
14081 attempt is made to actually allocate a memory buffer (of length
14082 zero) - instead, a simple buffer object with a NULL buffer pointer
14083 and length zero is created. A warning is no longer issued when
14084 the AML attempts to create a zero-length buffer.
14085
14086 Implemented a workaround for the "leading asterisk issue" in
14087 _HIDs, _UIDs, and _CIDs in the AML interpreter. One leading
14088 asterisk is automatically removed if present in any HID, UID, or
14089 CID strings. The iASL compiler will still flag this asterisk as
14090 an error, however.
14091
14092 Implemented full support for _CID methods that return a package of
14093 multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface
14094 now additionally returns a device _CID list if present. This
14095 required a change to the external interface in order to pass an
14096 ACPI_BUFFER object as a parameter since the _CID list is of
14097 variable length.
14098
14099 Fixed a problem with the new AE_SAME_HANDLER exception where
14100 handler initialization code did not know about this exception.
14101
14102 Code and Data Size: Current and previous core subsystem library
14103 sizes are shown below. These are the code and data sizes for the
14104 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14105 these values do not include any ACPI driver or OSPM code. The
14106 debug version of the code includes the debug output trace
14107 mechanism and has a much larger code and data size. Note that
14108 these values will vary depending on the efficiency of the compiler
14109 and the compiler options used during generation.
14110
14111 Previous Release (20030509):
14112 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total
14113 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total
14114 Current Release:
14115 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total
14116 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total
14117
14118
14119 2) Linux:
14120
14121 Fixed a bug in which we would reinitialize the ACPI interrupt
14122 after it was already working, thus disabling all ACPI and the IRQs
14123 for any other device sharing the interrupt. (Thanks to Stian
14124 Jordet)
14125
14126 Toshiba driver update (John Belmonte)
14127
14128 Return only 0 or 1 for our interrupt handler status (Andrew
14129 Morton)
14130
14131
14132 3) iASL Compiler:
14133
14134 Fixed a reported problem where multiple (nested) ElseIf()
14135 statements were not handled correctly by the compiler, resulting
14136 in incorrect warnings and incorrect AML code. This was a problem
14137 in both the ASL parser and the code generator.
14138
14139
14140 4) Documentation:
14141
14142 Added changes to existing interfaces, new exception codes, and new
14143 text concerning reference count object management versus garbage
14144 collection.
14145
14146 ----------------------------------------
14147 09 May 2003. Summary of changes for version 20030509.
14148
14149
14150 1) ACPI CA Core Subsystem:
14151
14152 Changed the subsystem initialization sequence to hold off
14153 installation of address space handlers until the hardware has been
14154 initialized and the system has entered ACPI mode. This is because
14155 the installation of space handlers can cause _REG methods to be
14156 run. Previously, the _REG methods could potentially be run before
14157 ACPI mode was enabled.
14158
14159 Fixed some memory leak issues related to address space handler and
14160 notify handler installation. There were some problems with the
14161 reference count mechanism caused by the fact that the handler
14162 objects are shared across several namespace objects.
14163
14164 Fixed a reported problem where reference counts within the
14165 namespace were not properly updated when named objects created by
14166 method execution were deleted.
14167
14168 Fixed a reported problem where multiple SSDTs caused a deletion
14169 issue during subsystem termination. Restructured the table data
14170 structures to simplify the linked lists and the related code.
14171
14172 Fixed a problem where the table ID associated with secondary
14173 tables (SSDTs) was not being propagated into the namespace objects
14174 created by those tables. This would only present a problem for
14175 tables that are unloaded at run-time, however.
14176
14177 Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
14178 type as the length parameter (instead of UINT32).
14179
14180 Solved a long-standing problem where an ALREADY_EXISTS error
14181 appears on various systems. This problem could happen when there
14182 are multiple PCI_Config operation regions under a single PCI root
14183 bus. This doesn't happen very frequently, but there are some
14184 systems that do this in the ASL.
14185
14186 Fixed a reported problem where the internal DeleteNode function
14187 was incorrectly handling the case where a namespace node was the
14188 first in the parent's child list, and had additional peers (not
14189 the only child, but first in the list of children.)
14190
14191 Code and Data Size: Current core subsystem library sizes are shown
14192 below. These are the code and data sizes for the acpica.lib
14193 produced by the Microsoft Visual C++ 6.0 compiler, and these
14194 values do not include any ACPI driver or OSPM code. The debug
14195 version of the code includes the debug output trace mechanism and
14196 has a much larger code and data size. Note that these values will
14197 vary depending on the efficiency of the compiler and the compiler
14198 options used during generation.
14199
14200 Previous Release
14201 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total
14202 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total
14203 Current Release:
14204 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total
14205 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total
14206
14207
14208 2) Linux:
14209
14210 Allow ":" in OS override string (Ducrot Bruno)
14211
14212 Kobject fix (Greg KH)
14213
14214
14215 3 iASL Compiler/Disassembler:
14216
14217 Fixed a problem in the generation of the C source code files (AML
14218 is emitted in C source statements for BIOS inclusion) where the
14219 Ascii dump that appears within a C comment at the end of each line
14220 could cause a compile time error if the AML sequence happens to
14221 have an open comment or close comment sequence embedded.
14222
14223
14224 ----------------------------------------
14225 24 April 2003. Summary of changes for version 20030424.
14226
14227
14228 1) ACPI CA Core Subsystem:
14229
14230 Support for big-endian systems has been implemented. Most of the
14231 support has been invisibly added behind big-endian versions of the
14232 ACPI_MOVE_* macros.
14233
14234 Fixed a problem in AcpiHwDisableGpeBlock() and
14235 AcpiHwClearGpeBlock() where an incorrect offset was passed to the
14236 low level hardware write routine. The offset parameter was
14237 actually eliminated from the low level read/write routines because
14238 they had become obsolete.
14239
14240 Fixed a problem where a handler object was deleted twice during
14241 the removal of a fixed event handler.
14242
14243
14244 2) Linux:
14245
14246 A fix for SMP systems with link devices was contributed by
14247
14248 Compaq's Dan Zink.
14249
14250 (2.5) Return whether we handled the interrupt in our IRQ handler.
14251 (Linux ISRs no longer return void, so we can propagate the handler
14252 return value from the ACPI CA core back to the OS.)
14253
14254
14255
14256 3) Documentation:
14257
14258 The ACPI CA Programmer Reference has been updated to reflect new
14259 interfaces and changes to existing interfaces.
14260
14261 ----------------------------------------
14262 28 March 2003. Summary of changes for version 20030328.
14263
14264 1) ACPI CA Core Subsystem:
14265
14266 The GPE Block Device support has been completed. New interfaces
14267 are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event
14268 interfaces (enable, disable, clear, getstatus) have been split
14269 into separate interfaces for Fixed Events and General Purpose
14270 Events (GPEs) in order to support GPE Block Devices properly.
14271
14272 Fixed a problem where the error message "Failed to acquire
14273 semaphore" would appear during operations on the embedded
14274 controller (EC).
14275
14276 Code and Data Size: Current core subsystem library sizes are shown
14277 below. These are the code and data sizes for the acpica.lib
14278 produced by the Microsoft Visual C++ 6.0 compiler, and these
14279 values do not include any ACPI driver or OSPM code. The debug
14280 version of the code includes the debug output trace mechanism and
14281 has a much larger code and data size. Note that these values will
14282 vary depending on the efficiency of the compiler and the compiler
14283 options used during generation.
14284
14285 Previous Release
14286 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total
14287 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total
14288 Current Release:
14289 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total
14290 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total
14291
14292
14293 ----------------------------------------
14294 28 February 2003. Summary of changes for version 20030228.
14295
14296
14297 1) ACPI CA Core Subsystem:
14298
14299 The GPE handling and dispatch code has been completely overhauled
14300 in preparation for support of GPE Block Devices (ID ACPI0006).
14301 This affects internal data structures and code only; there should
14302 be no differences visible externally. One new file has been
14303 added, evgpeblk.c
14304
14305 The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
14306 fields that are used to determine the GPE block lengths. The
14307 REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
14308 structures are ignored. This is per the ACPI specification but it
14309 isn't very clear. The full 256 Block 0/1 GPEs are now supported
14310 (the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
14311
14312 In the SCI interrupt handler, removed the read of the PM1_CONTROL
14313 register to look at the SCI_EN bit. On some machines, this read
14314 causes an SMI event and greatly slows down SCI events. (This may
14315 in fact be the cause of slow battery status response on some
14316 systems.)
14317
14318 Fixed a problem where a store of a NULL string to a package object
14319 could cause the premature deletion of the object. This was seen
14320 during execution of the battery _BIF method on some systems,
14321 resulting in no battery data being returned.
14322
14323 Added AcpiWalkResources interface to simplify parsing of resource
14324 lists.
14325
14326 Code and Data Size: Current core subsystem library sizes are shown
14327 below. These are the code and data sizes for the acpica.lib
14328 produced by the Microsoft Visual C++ 6.0 compiler, and these
14329 values do not include any ACPI driver or OSPM code. The debug
14330 version of the code includes the debug output trace mechanism and
14331 has a much larger code and data size. Note that these values will
14332 vary depending on the efficiency of the compiler and the compiler
14333 options used during generation.
14334
14335 Previous Release
14336 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
14337 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
14338 Current Release:
14339 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total
14340 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total
14341
14342
14343 2) Linux
14344
14345 S3 fixes (Ole Rohne)
14346
14347 Update ACPI PHP driver with to use new acpi_walk_resource API
14348 (Bjorn Helgaas)
14349
14350 Add S4BIOS support (Pavel Machek)
14351
14352 Map in entire table before performing checksum (John Stultz)
14353
14354 Expand the mem= cmdline to allow the specification of reserved and
14355 ACPI DATA blocks (Pavel Machek)
14356
14357 Never use ACPI on VISWS
14358
14359 Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
14360
14361 Revert a change that allowed P_BLK lengths to be 4 or 5. This is
14362 causing us to think that some systems support C2 when they really
14363 don't.
14364
14365 Do not count processor objects for non-present CPUs (Thanks to
14366 Dominik Brodowski)
14367
14368
14369 3) iASL Compiler:
14370
14371 Fixed a problem where ASL include files could not be found and
14372 opened.
14373
14374 Added support for the _PDC reserved name.
14375
14376
14377 ----------------------------------------
14378 22 January 2003. Summary of changes for version 20030122.
14379
14380
14381 1) ACPI CA Core Subsystem:
14382
14383 Added a check for constructs of the form: Store (Local0, Local0)
14384 where Local0 is not initialized. Apparently, some BIOS
14385 programmers believe that this is a NOOP. Since this store doesn't
14386 do anything anyway, the new prototype behavior will ignore this
14387 error. This is a case where we can relax the strict checking in
14388 the interpreter in the name of compatibility.
14389
14390
14391 2) Linux
14392
14393 The AcpiSrc Source Conversion Utility has been released with the
14394 Linux package for the first time. This is the utility that is
14395 used to convert the ACPI CA base source code to the Linux version.
14396
14397 (Both) Handle P_BLK lengths shorter than 6 more gracefully
14398
14399 (Both) Move more headers to include/acpi, and delete an unused
14400 header.
14401
14402 (Both) Move drivers/acpi/include directory to include/acpi
14403
14404 (Both) Boot functions don't use cmdline, so don't pass it around
14405
14406 (Both) Remove include of unused header (Adrian Bunk)
14407
14408 (Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
14409 the
14410 former now also includes the latter, acpiphp.h only needs the one,
14411 now.
14412
14413 (2.5) Make it possible to select method of bios restoring after S3
14414 resume. [=> no more ugly ifdefs] (Pavel Machek)
14415
14416 (2.5) Make proc write interfaces work (Pavel Machek)
14417
14418 (2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
14419
14420 (2.5) Break out ACPI Perf code into its own module, under cpufreq
14421 (Dominik Brodowski)
14422
14423 (2.4) S4BIOS support (Ducrot Bruno)
14424
14425 (2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
14426 Visinoni)
14427
14428
14429 3) iASL Compiler:
14430
14431 Added support to disassemble SSDT and PSDTs.
14432
14433 Implemented support to obtain SSDTs from the Windows registry if
14434 available.
14435
14436
14437 ----------------------------------------
14438 09 January 2003. Summary of changes for version 20030109.
14439
14440 1) ACPI CA Core Subsystem:
14441
14442 Changed the behavior of the internal Buffer-to-String conversion
14443 function. The current ACPI specification states that the contents
14444 of the buffer are "converted to a string of two-character
14445 hexadecimal numbers, each separated by a space". Unfortunately,
14446 this definition is not backwards compatible with existing ACPI 1.0
14447 implementations (although the behavior was not defined in the ACPI
14448 1.0 specification). The new behavior simply copies data from the
14449 buffer to the string until a null character is found or the end of
14450 the buffer is reached. The new String object is always null
14451 terminated. This problem was seen during the generation of _BIF
14452 battery data where incorrect strings were returned for battery
14453 type, etc. This will also require an errata to the ACPI
14454 specification.
14455
14456 Renamed all instances of NATIVE_UINT and NATIVE_INT to
14457 ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
14458
14459 Copyright in all module headers (both Linux and non-Linux) has be
14460 updated to 2003.
14461
14462 Code and Data Size: Current core subsystem library sizes are shown
14463 below. These are the code and data sizes for the acpica.lib
14464 produced by the Microsoft Visual C++ 6.0 compiler, and these
14465 values do not include any ACPI driver or OSPM code. The debug
14466 version of the code includes the debug output trace mechanism and
14467 has a much larger code and data size. Note that these values will
14468 vary depending on the efficiency of the compiler and the compiler
14469 options used during generation.
14470
14471 Previous Release
14472 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
14473 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
14474 Current Release:
14475 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
14476 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
14477
14478
14479 2) Linux
14480
14481 Fixed an oops on module insertion/removal (Matthew Tippett)
14482
14483 (2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
14484
14485 (2.5) Replace pr_debug (Randy Dunlap)
14486
14487 (2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
14488
14489 (Both) Eliminate spawning of thread from timer callback, in favor
14490 of schedule_work()
14491
14492 (Both) Show Lid status in /proc (Zdenek OGAR Skalak)
14493
14494 (Both) Added define for Fixed Function HW region (Matthew Wilcox)
14495
14496 (Both) Add missing statics to button.c (Pavel Machek)
14497
14498 Several changes have been made to the source code translation
14499 utility that generates the Linux Code in order to make the code
14500 more "Linux-like":
14501
14502 All typedefs on structs and unions have been removed in keeping
14503 with the Linux coding style.
14504
14505 Removed the non-Linux SourceSafe module revision number from each
14506 module header.
14507
14508 Completed major overhaul of symbols to be lowercased for linux.
14509 Doubled the number of symbols that are lowercased.
14510
14511 Fixed a problem where identifiers within procedure headers and
14512 within quotes were not fully lower cased (they were left with a
14513 starting capital.)
14514
14515 Some C macros whose only purpose is to allow the generation of 16-
14516 bit code are now completely removed in the Linux code, increasing
14517 readability and maintainability.
14518
14519 ----------------------------------------
14520
14521 12 December 2002. Summary of changes for version 20021212.
14522
14523
14524 1) ACPI CA Core Subsystem:
14525
14526 Fixed a problem where the creation of a zero-length AML Buffer
14527 would cause a fault.
14528
14529 Fixed a problem where a Buffer object that pointed to a static AML
14530 buffer (in an ACPI table) could inadvertently be deleted, causing
14531 memory corruption.
14532
14533 Fixed a problem where a user buffer (passed in to the external
14534 ACPI CA interfaces) could be overwritten if the buffer was too
14535 small to complete the operation, causing memory corruption.
14536
14537 Fixed a problem in the Buffer-to-String conversion code where a
14538 string of length one was always returned, regardless of the size
14539 of the input Buffer object.
14540
14541 Removed the NATIVE_CHAR data type across the entire source due to
14542 lack of need and lack of consistent use.
14543
14544 Code and Data Size: Current core subsystem library sizes are shown
14545 below. These are the code and data sizes for the acpica.lib
14546 produced by the Microsoft Visual C++ 6.0 compiler, and these
14547 values do not include any ACPI driver or OSPM code. The debug
14548 version of the code includes the debug output trace mechanism and
14549 has a much larger code and data size. Note that these values will
14550 vary depending on the efficiency of the compiler and the compiler
14551 options used during generation.
14552
14553 Previous Release
14554 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total
14555 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total
14556 Current Release:
14557 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
14558 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
14559
14560
14561 ----------------------------------------
14562 05 December 2002. Summary of changes for version 20021205.
14563
14564 1) ACPI CA Core Subsystem:
14565
14566 Fixed a problem where a store to a String or Buffer object could
14567 cause corruption of the DSDT if the object type being stored was
14568 the same as the target object type and the length of the object
14569 being stored was equal to or smaller than the original (existing)
14570 target object. This was seen to cause corruption of battery _BIF
14571 buffers if the _BIF method modified the buffer on the fly.
14572
14573 Fixed a problem where an internal error was generated if a control
14574 method invocation was used in an OperationRegion, Buffer, or
14575 Package declaration. This was caused by the deferred parsing of
14576 the control method and thus the deferred creation of the internal
14577 method object. The solution to this problem was to create the
14578 internal method object at the moment the method is encountered in
14579 the first pass - so that subsequent references to the method will
14580 able to obtain the required parameter count and thus properly
14581 parse the method invocation. This problem presented itself as an
14582 AE_AML_INTERNAL during the pass 1 parse phase during table load.
14583
14584 Fixed a problem where the internal String object copy routine did
14585 not always allocate sufficient memory for the target String object
14586 and caused memory corruption. This problem was seen to cause
14587 "Allocation already present in list!" errors as memory allocation
14588 became corrupted.
14589
14590 Implemented a new function for the evaluation of namespace objects
14591 that allows the specification of the allowable return object
14592 types. This simplifies a lot of code that checks for a return
14593 object of one or more specific objects returned from the
14594 evaluation (such as _STA, etc.) This may become and external
14595 function if it would be useful to ACPI-related drivers.
14596
14597 Completed another round of prefixing #defines with "ACPI_" for
14598 clarity.
14599
14600 Completed additional code restructuring to allow more modular
14601 linking for iASL compiler and AcpiExec. Several files were split
14602 creating new files. New files: nsparse.c dsinit.c evgpe.c
14603
14604 Implemented an abort mechanism to terminate an executing control
14605 method via the AML debugger. This feature is useful for debugging
14606 control methods that depend (wait) for specific hardware
14607 responses.
14608
14609 Code and Data Size: Current core subsystem library sizes are shown
14610 below. These are the code and data sizes for the acpica.lib
14611 produced by the Microsoft Visual C++ 6.0 compiler, and these
14612 values do not include any ACPI driver or OSPM code. The debug
14613 version of the code includes the debug output trace mechanism and
14614 has a much larger code and data size. Note that these values will
14615 vary depending on the efficiency of the compiler and the compiler
14616 options used during generation.
14617
14618 Previous Release
14619 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
14620 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total
14621 Current Release:
14622 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total
14623 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total
14624
14625
14626 2) iASL Compiler/Disassembler
14627
14628 Fixed a compiler code generation problem for "Interrupt" Resource
14629 Descriptors. If specified in the ASL, the optional "Resource
14630 Source Index" and "Resource Source" fields were not inserted into
14631 the correct location within the AML resource descriptor, creating
14632 an invalid descriptor.
14633
14634 Fixed a disassembler problem for "Interrupt" resource descriptors.
14635 The optional "Resource Source Index" and "Resource Source" fields
14636 were ignored.
14637
14638
14639 ----------------------------------------
14640 22 November 2002. Summary of changes for version 20021122.
14641
14642
14643 1) ACPI CA Core Subsystem:
14644
14645 Fixed a reported problem where an object stored to a Method Local
14646 or Arg was not copied to a new object during the store - the
14647 object pointer was simply copied to the Local/Arg. This caused
14648 all subsequent operations on the Local/Arg to also affect the
14649 original source of the store operation.
14650
14651 Fixed a problem where a store operation to a Method Local or Arg
14652 was not completed properly if the Local/Arg contained a reference
14653 (from RefOf) to a named field. The general-purpose store-to-
14654 namespace-node code is now used so that this case is handled
14655 automatically.
14656
14657 Fixed a problem where the internal object copy routine would cause
14658 a protection fault if the object being copied was a Package and
14659 contained either 1) a NULL package element or 2) a nested sub-
14660 package.
14661
14662 Fixed a problem with the GPE initialization that resulted from an
14663 ambiguity in the ACPI specification. One section of the
14664 specification states that both the address and length of the GPE
14665 block must be zero if the block is not supported. Another section
14666 implies that only the address need be zero if the block is not
14667 supported. The code has been changed so that both the address and
14668 the length must be non-zero to indicate a valid GPE block (i.e.,
14669 if either the address or the length is zero, the GPE block is
14670 invalid.)
14671
14672 Code and Data Size: Current core subsystem library sizes are shown
14673 below. These are the code and data sizes for the acpica.lib
14674 produced by the Microsoft Visual C++ 6.0 compiler, and these
14675 values do not include any ACPI driver or OSPM code. The debug
14676 version of the code includes the debug output trace mechanism and
14677 has a much larger code and data size. Note that these values will
14678 vary depending on the efficiency of the compiler and the compiler
14679 options used during generation.
14680
14681 Previous Release
14682 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total
14683 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total
14684 Current Release:
14685 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
14686 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total
14687
14688
14689 2) Linux
14690
14691 Cleaned up EC driver. Exported an external EC read/write
14692 interface. By going through this, other drivers (most notably
14693 sonypi) will be able to serialize access to the EC.
14694
14695
14696 3) iASL Compiler/Disassembler
14697
14698 Implemented support to optionally generate include files for both
14699 ASM and C (the -i switch). This simplifies BIOS development by
14700 automatically creating include files that contain external
14701 declarations for the symbols that are created within the
14702
14703 (optionally generated) ASM and C AML source files.
14704
14705
14706 ----------------------------------------
14707 15 November 2002. Summary of changes for version 20021115.
14708
14709 1) ACPI CA Core Subsystem:
14710
14711 Fixed a memory leak problem where an error during resolution of
14712
14713 method arguments during a method invocation from another method
14714 failed to cleanup properly by deleting all successfully resolved
14715 argument objects.
14716
14717 Fixed a problem where the target of the Index() operator was not
14718 correctly constructed if the source object was a package. This
14719 problem has not been detected because the use of a target operand
14720 with Index() is very rare.
14721
14722 Fixed a problem with the Index() operator where an attempt was
14723 made to delete the operand objects twice.
14724
14725 Fixed a problem where an attempt was made to delete an operand
14726 twice during execution of the CondRefOf() operator if the target
14727 did not exist.
14728
14729 Implemented the first of perhaps several internal create object
14730 functions that create and initialize a specific object type. This
14731 consolidates duplicated code wherever the object is created, thus
14732 shrinking the size of the subsystem.
14733
14734 Implemented improved debug/error messages for errors that occur
14735 during nested method invocations. All executing method pathnames
14736 are displayed (with the error) as the call stack is unwound - thus
14737 simplifying debug.
14738
14739 Fixed a problem introduced in the 10/02 release that caused
14740 premature deletion of a buffer object if a buffer was used as an
14741 ASL operand where an integer operand is required (Thus causing an
14742 implicit object conversion from Buffer to Integer.) The change in
14743 the 10/02 release was attempting to fix a memory leak (albeit
14744 incorrectly.)
14745
14746 Code and Data Size: Current core subsystem library sizes are shown
14747 below. These are the code and data sizes for the acpica.lib
14748 produced by the Microsoft Visual C++ 6.0 compiler, and these
14749 values do not include any ACPI driver or OSPM code. The debug
14750 version of the code includes the debug output trace mechanism and
14751 has a much larger code and data size. Note that these values will
14752 vary depending on the efficiency of the compiler and the compiler
14753 options used during generation.
14754
14755 Previous Release
14756 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total
14757 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total
14758 Current Release:
14759 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total
14760 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total
14761
14762
14763 2) Linux
14764
14765 Changed the implementation of the ACPI semaphores to use down()
14766 instead of down_interruptable(). It is important that the
14767 execution of ACPI control methods not be interrupted by signals.
14768 Methods must run to completion, or the system may be left in an
14769 unknown/unstable state.
14770
14771 Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
14772 (Shawn Starr)
14773
14774
14775 3) iASL Compiler/Disassembler
14776
14777
14778 Changed the default location of output files. All output files
14779 are now placed in the current directory by default instead of in
14780 the directory of the source file. This change may affect some
14781 existing makefiles, but it brings the behavior of the compiler in
14782 line with other similar tools. The location of the output files
14783 can be overridden with the -p command line switch.
14784
14785
14786 ----------------------------------------
14787 11 November 2002. Summary of changes for version 20021111.
14788
14789
14790 0) ACPI Specification 2.0B is released and is now available at:
14791 http://www.acpi.info/index.html
14792
14793
14794 1) ACPI CA Core Subsystem:
14795
14796 Implemented support for the ACPI 2.0 SMBus Operation Regions.
14797 This includes the early detection and handoff of the request to
14798 the SMBus region handler (avoiding all of the complex field
14799 support code), and support for the bidirectional return packet
14800 from an SMBus write operation. This paves the way for the
14801 development of SMBus drivers in each host operating system.
14802
14803 Fixed a problem where the semaphore WAIT_FOREVER constant was
14804 defined as 32 bits, but must be 16 bits according to the ACPI
14805 specification. This had the side effect of causing ASL
14806 Mutex/Event timeouts even though the ASL code requested a wait
14807 forever. Changed all internal references to the ACPI timeout
14808 parameter to 16 bits to prevent future problems. Changed the name
14809 of WAIT_FOREVER to ACPI_WAIT_FOREVER.
14810
14811 Code and Data Size: Current core subsystem library sizes are shown
14812 below. These are the code and data sizes for the acpica.lib
14813 produced by the Microsoft Visual C++ 6.0 compiler, and these
14814 values do not include any ACPI driver or OSPM code. The debug
14815 version of the code includes the debug output trace mechanism and
14816 has a much larger code and data size. Note that these values will
14817 vary depending on the efficiency of the compiler and the compiler
14818 options used during generation.
14819
14820 Previous Release
14821 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
14822 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total
14823 Current Release:
14824 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total
14825 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total
14826
14827
14828 2) Linux
14829
14830 Module loading/unloading fixes (John Cagle)
14831
14832
14833 3) iASL Compiler/Disassembler
14834
14835 Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
14836
14837 Implemented support for the disassembly of all SMBus protocol
14838 keywords (SMBQuick, SMBWord, etc.)
14839
14840 ----------------------------------------
14841 01 November 2002. Summary of changes for version 20021101.
14842
14843
14844 1) ACPI CA Core Subsystem:
14845
14846 Fixed a problem where platforms that have a GPE1 block but no GPE0
14847 block were not handled correctly. This resulted in a "GPE
14848 overlap" error message. GPE0 is no longer required.
14849
14850 Removed code added in the previous release that inserted nodes
14851 into the namespace in alphabetical order. This caused some side-
14852 effects on various machines. The root cause of the problem is
14853 still under investigation since in theory, the internal ordering
14854 of the namespace nodes should not matter.
14855
14856
14857 Enhanced error reporting for the case where a named object is not
14858 found during control method execution. The full ACPI namepath
14859 (name reference) of the object that was not found is displayed in
14860 this case.
14861
14862 Note: as a result of the overhaul of the namespace object types in
14863 the previous release, the namespace nodes for the predefined
14864 scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
14865 instead of ACPI_TYPE_ANY. This simplifies the namespace
14866 management code but may affect code that walks the namespace tree
14867 looking for specific object types.
14868
14869 Code and Data Size: Current core subsystem library sizes are shown
14870 below. These are the code and data sizes for the acpica.lib
14871 produced by the Microsoft Visual C++ 6.0 compiler, and these
14872 values do not include any ACPI driver or OSPM code. The debug
14873 version of the code includes the debug output trace mechanism and
14874 has a much larger code and data size. Note that these values will
14875 vary depending on the efficiency of the compiler and the compiler
14876 options used during generation.
14877
14878 Previous Release
14879 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total
14880 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total
14881 Current Release:
14882 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
14883 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total
14884
14885
14886 2) Linux
14887
14888 Fixed a problem introduced in the previous release where the
14889 Processor and Thermal objects were not recognized and installed in
14890 /proc. This was related to the scope type change described above.
14891
14892
14893 3) iASL Compiler/Disassembler
14894
14895 Implemented the -g option to get all of the required ACPI tables
14896 from the registry and save them to files (Windows version of the
14897 compiler only.) The required tables are the FADT, FACS, and DSDT.
14898
14899 Added ACPI table checksum validation during table disassembly in
14900 order to catch corrupted tables.
14901
14902
14903 ----------------------------------------
14904 22 October 2002. Summary of changes for version 20021022.
14905
14906 1) ACPI CA Core Subsystem:
14907
14908 Implemented a restriction on the Scope operator that the target
14909 must already exist in the namespace at the time the operator is
14910 encountered (during table load or method execution). In other
14911 words, forward references are not allowed and Scope() cannot
14912 create a new object. This changes the previous behavior where the
14913 interpreter would create the name if not found. This new behavior
14914 correctly enables the search-to-root algorithm during namespace
14915 lookup of the target name. Because of this upsearch, this fixes
14916 the known Compaq _SB_.OKEC problem and makes both the AML
14917 interpreter and iASL compiler compatible with other ACPI
14918 implementations.
14919
14920 Completed a major overhaul of the internal ACPI object types for
14921 the ACPI Namespace and the associated operand objects. Many of
14922 these types had become obsolete with the introduction of the two-
14923 pass namespace load. This cleanup simplifies the code and makes
14924 the entire namespace load mechanism much clearer and easier to
14925 understand.
14926
14927 Improved debug output for tracking scope opening/closing to help
14928 diagnose scoping issues. The old scope name as well as the new
14929 scope name are displayed. Also improved error messages for
14930 problems with ASL Mutex objects and error messages for GPE
14931 problems.
14932
14933 Cleaned up the namespace dump code, removed obsolete code.
14934
14935 All string output (for all namespace/object dumps) now uses the
14936 common ACPI string output procedure which handles escapes properly
14937 and does not emit non-printable characters.
14938
14939 Fixed some issues with constants in the 64-bit version of the
14940 local C library (utclib.c)
14941
14942
14943 2) Linux
14944
14945 EC Driver: No longer attempts to acquire the Global Lock at
14946 interrupt level.
14947
14948
14949 3) iASL Compiler/Disassembler
14950
14951 Implemented ACPI 2.0B grammar change that disallows all Type 1 and
14952 2 opcodes outside of a control method. This means that the
14953 "executable" operators (versus the "namespace" operators) cannot
14954 be used at the table level; they can only be used within a control
14955 method.
14956
14957 Implemented the restriction on the Scope() operator where the
14958 target must already exist in the namespace at the time the
14959 operator is encountered (during ASL compilation). In other words,
14960 forward references are not allowed and Scope() cannot create a new
14961 object. This makes the iASL compiler compatible with other ACPI
14962 implementations and makes the Scope() implementation adhere to the
14963 ACPI specification.
14964
14965 Fixed a problem where namepath optimization for the Alias operator
14966 was optimizing the wrong path (of the two namepaths.) This caused
14967 a "Missing alias link" error message.
14968
14969 Fixed a problem where an "unknown reserved name" warning could be
14970 incorrectly generated for names like "_SB" when the trailing
14971 underscore is not used in the original ASL.
14972
14973 Fixed a problem where the reserved name check did not handle
14974 NamePaths with multiple NameSegs correctly. The first nameseg of
14975 the NamePath was examined instead of the last NameSeg.
14976
14977
14978 ----------------------------------------
14979
14980 02 October 2002. Summary of changes for this release.
14981
14982
14983 1) ACPI CA Core Subsystem version 20021002:
14984
14985 Fixed a problem where a store/copy of a string to an existing
14986 string did not always set the string length properly in the String
14987 object.
14988
14989 Fixed a reported problem with the ToString operator where the
14990 behavior was identical to the ToHexString operator instead of just
14991 simply converting a raw buffer to a string data type.
14992
14993 Fixed a problem where CopyObject and the other "explicit"
14994 conversion operators were not updating the internal namespace node
14995 type as part of the store operation.
14996
14997 Fixed a memory leak during implicit source operand conversion
14998 where the original object was not deleted if it was converted to a
14999 new object of a different type.
15000
15001 Enhanced error messages for all problems associated with namespace
15002 lookups. Common procedure generates and prints the lookup name as
15003 well as the formatted status.
15004
15005 Completed implementation of a new design for the Alias support
15006 within the namespace. The existing design did not handle the case
15007 where a new object was assigned to one of the two names due to the
15008 use of an explicit conversion operator, resulting in the two names
15009 pointing to two different objects. The new design simply points
15010 the Alias name to the original name node - not to the object.
15011 This results in a level of indirection that must be handled in the
15012 name resolution mechanism.
15013
15014 Code and Data Size: Current core subsystem library sizes are shown
15015 below. These are the code and data sizes for the acpica.lib
15016 produced by the Microsoft Visual C++ 6.0 compiler, and these
15017 values do not include any ACPI driver or OSPM code. The debug
15018 version of the code includes the debug output trace mechanism and
15019 has a larger code and data size. Note that these values will vary
15020 depending on the efficiency of the compiler and the compiler
15021 options used during generation.
15022
15023 Previous Release
15024 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total
15025 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total
15026 Current Release:
15027 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total
15028 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total
15029
15030
15031 2) Linux
15032
15033 Initialize thermal driver's timer before it is used. (Knut
15034 Neumann)
15035
15036 Allow handling negative celsius values. (Kochi Takayoshi)
15037
15038 Fix thermal management and make trip points. R/W (Pavel Machek)
15039
15040 Fix /proc/acpi/sleep. (P. Christeas)
15041
15042 IA64 fixes. (David Mosberger)
15043
15044 Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
15045
15046 Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
15047 Brodowski)
15048
15049
15050 3) iASL Compiler/Disassembler
15051
15052 Clarified some warning/error messages.
15053
15054
15055 ----------------------------------------
15056 18 September 2002. Summary of changes for this release.
15057
15058
15059 1) ACPI CA Core Subsystem version 20020918:
15060
15061 Fixed a reported problem with reference chaining (via the Index()
15062 and RefOf() operators) in the ObjectType() and SizeOf() operators.
15063 The definition of these operators includes the dereferencing of
15064 all chained references to return information on the base object.
15065
15066 Fixed a problem with stores to indexed package elements - the
15067 existing code would not complete the store if an "implicit
15068 conversion" was not performed. In other words, if the existing
15069 object (package element) was to be replaced completely, the code
15070 didn't handle this case.
15071
15072 Relaxed typechecking on the ASL "Scope" operator to allow the
15073 target name to refer to an object of type Integer, String, or
15074 Buffer, in addition to the scoping object types (Device,
15075 predefined Scopes, Processor, PowerResource, and ThermalZone.)
15076 This allows existing AML code that has workarounds for a bug in
15077 Windows to function properly. A warning is issued, however. This
15078 affects both the AML interpreter and the iASL compiler. Below is
15079 an example of this type of ASL code:
15080
15081 Name(DEB,0x00)
15082 Scope(DEB)
15083 {
15084
15085 Fixed some reported problems with 64-bit integer support in the
15086 local implementation of C library functions (clib.c)
15087
15088
15089 2) Linux
15090
15091 Use ACPI fix map region instead of IOAPIC region, since it is
15092 undefined in non-SMP.
15093
15094 Ensure that the SCI has the proper polarity and trigger, even on
15095 systems that do not have an interrupt override entry in the MADT.
15096
15097 2.5 big driver reorganization (Pat Mochel)
15098
15099 Use early table mapping code from acpitable.c (Andi Kleen)
15100
15101 New blacklist entries (Andi Kleen)
15102
15103 Blacklist improvements. Split blacklist code out into a separate
15104 file. Move checking the blacklist to very early. Previously, we
15105 would use ACPI tables, and then halfway through init, check the
15106 blacklist -- too late. Now, it's early enough to completely fall-
15107 back to non-ACPI.
15108
15109
15110 3) iASL Compiler/Disassembler version 20020918:
15111
15112 Fixed a problem where the typechecking code didn't know that an
15113 alias could point to a method. In other words, aliases were not
15114 being dereferenced during typechecking.
15115
15116
15117 ----------------------------------------
15118 29 August 2002. Summary of changes for this release.
15119
15120 1) ACPI CA Core Subsystem Version 20020829:
15121
15122 If the target of a Scope() operator already exists, it must be an
15123 object type that actually opens a scope -- such as a Device,
15124 Method, Scope, etc. This is a fatal runtime error. Similar error
15125 check has been added to the iASL compiler also.
15126
15127 Tightened up the namespace load to disallow multiple names in the
15128 same scope. This previously was allowed if both objects were of
15129 the same type. (i.e., a lookup was the same as entering a new
15130 name).
15131
15132
15133 2) Linux
15134
15135 Ensure that the ACPI interrupt has the proper trigger and
15136 polarity.
15137
15138 local_irq_disable is extraneous. (Matthew Wilcox)
15139
15140 Make "acpi=off" actually do what it says, and not use the ACPI
15141 interpreter *or* the tables.
15142
15143 Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
15144 Takayoshi)
15145
15146
15147 3) iASL Compiler/Disassembler Version 20020829:
15148
15149 Implemented namepath optimization for name declarations. For
15150 example, a declaration like "Method (\_SB_.ABCD)" would get
15151 optimized to "Method (ABCD)" if the declaration is within the
15152 \_SB_ scope. This optimization is in addition to the named
15153 reference path optimization first released in the previous
15154 version. This would seem to complete all possible optimizations
15155 for namepaths within the ASL/AML.
15156
15157 If the target of a Scope() operator already exists, it must be an
15158 object type that actually opens a scope -- such as a Device,
15159 Method, Scope, etc.
15160
15161 Implemented a check and warning for unreachable code in the same
15162 block below a Return() statement.
15163
15164 Fixed a problem where the listing file was not generated if the
15165 compiler aborted if the maximum error count was exceeded (200).
15166
15167 Fixed a problem where the typechecking of method return values was
15168 broken. This includes the check for a return value when the
15169 method is invoked as a TermArg (a return value is expected.)
15170
15171 Fixed a reported problem where EOF conditions during a quoted
15172 string or comment caused a fault.
15173
15174
15175 ----------------------------------------
15176 15 August 2002. Summary of changes for this release.
15177
15178 1) ACPI CA Core Subsystem Version 20020815:
15179
15180 Fixed a reported problem where a Store to a method argument that
15181 contains a reference did not perform the indirect store correctly.
15182 This problem was created during the conversion to the new
15183 reference object model - the indirect store to a method argument
15184 code was not updated to reflect the new model.
15185
15186 Reworked the ACPI mode change code to better conform to ACPI 2.0,
15187 handle corner cases, and improve code legibility (Kochi Takayoshi)
15188
15189 Fixed a problem with the pathname parsing for the carat (^)
15190 prefix. The heavy use of the carat operator by the new namepath
15191 optimization in the iASL compiler uncovered a problem with the AML
15192 interpreter handling of this prefix. In the case where one or
15193 more carats precede a single nameseg, the nameseg was treated as
15194 standalone and the search rule (to root) was inadvertently
15195 applied. This could cause both the iASL compiler and the
15196 interpreter to find the wrong object or to miss the error that
15197 should occur if the object does not exist at that exact pathname.
15198
15199 Found and fixed the problem where the HP Pavilion DSDT would not
15200 load. This was a relatively minor tweak to the table loading code
15201 (a problem caused by the unexpected encounter with a method
15202 invocation not within a control method), but it does not solve the
15203 overall issue of the execution of AML code at the table level.
15204 This investigation is still ongoing.
15205
15206 Code and Data Size: Current core subsystem library sizes are shown
15207 below. These are the code and data sizes for the acpica.lib
15208 produced by the Microsoft Visual C++ 6.0 compiler, and these
15209 values do not include any ACPI driver or OSPM code. The debug
15210 version of the code includes the debug output trace mechanism and
15211 has a larger code and data size. Note that these values will vary
15212 depending on the efficiency of the compiler and the compiler
15213 options used during generation.
15214
15215 Previous Release
15216 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total
15217 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total
15218 Current Release:
15219 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total
15220 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total
15221
15222
15223 2) Linux
15224
15225 Remove redundant slab.h include (Brad Hards)
15226
15227 Fix several bugs in thermal.c (Herbert Nachtnebel)
15228
15229 Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
15230
15231 Change acpi_system_suspend to use updated irq functions (Pavel
15232 Machek)
15233
15234 Export acpi_get_firmware_table (Matthew Wilcox)
15235
15236 Use proper root proc entry for ACPI (Kochi Takayoshi)
15237
15238 Fix early-boot table parsing (Bjorn Helgaas)
15239
15240
15241 3) iASL Compiler/Disassembler
15242
15243 Reworked the compiler options to make them more consistent and to
15244 use two-letter options where appropriate. We were running out of
15245 sensible letters. This may break some makefiles, so check the
15246 current options list by invoking the compiler with no parameters.
15247
15248 Completed the design and implementation of the ASL namepath
15249 optimization option for the compiler. This option optimizes all
15250 references to named objects to the shortest possible path. The
15251 first attempt tries to utilize a single nameseg (4 characters) and
15252 the "search-to-root" algorithm used by the interpreter. If that
15253 cannot be used (because either the name is not in the search path
15254 or there is a conflict with another object with the same name),
15255 the pathname is optimized using the carat prefix (usually a
15256 shorter string than specifying the entire path from the root.)
15257
15258 Implemented support to obtain the DSDT from the Windows registry
15259 (when the disassembly option is specified with no input file).
15260 Added this code as the implementation for AcpiOsTableOverride in
15261 the Windows OSL. Migrated the 16-bit code (used in the AcpiDump
15262 utility) to scan memory for the DSDT to the AcpiOsTableOverride
15263 function in the DOS OSL to make the disassembler truly OS
15264 independent.
15265
15266 Implemented a new option to disassemble and compile in one step.
15267 When used without an input filename, this option will grab the
15268 DSDT from the local machine, disassemble it, and compile it in one
15269 step.
15270
15271 Added a warning message for invalid escapes (a backslash followed
15272 by any character other than the allowable escapes). This catches
15273 the quoted string error "\_SB_" (which should be "\\_SB_" ).
15274
15275 Also, there are numerous instances in the ACPI specification where
15276 this error occurs.
15277
15278 Added a compiler option to disable all optimizations. This is
15279 basically the "compatibility mode" because by using this option,
15280 the AML code will come out exactly the same as other ASL
15281 compilers.
15282
15283 Added error messages for incorrectly ordered dependent resource
15284 functions. This includes: missing EndDependentFn macro at end of
15285 dependent resource list, nested dependent function macros (both
15286 start and end), and missing StartDependentFn macro. These are
15287 common errors that should be caught at compile time.
15288
15289 Implemented _OSI support for the disassembler and compiler. _OSI
15290 must be included in the namespace for proper disassembly (because
15291 the disassembler must know the number of arguments.)
15292
15293 Added an "optimization" message type that is optional (off by
15294 default). This message is used for all optimizations - including
15295 constant folding, integer optimization, and namepath optimization.
15296
15297 ----------------------------------------
15298 25 July 2002. Summary of changes for this release.
15299
15300
15301 1) ACPI CA Core Subsystem Version 20020725:
15302
15303 The AML Disassembler has been enhanced to produce compilable ASL
15304 code and has been integrated into the iASL compiler (see below) as
15305 well as the single-step disassembly for the AML debugger and the
15306 disassembler for the AcpiDump utility. All ACPI 2.0A opcodes,
15307 resource templates and macros are fully supported. The
15308 disassembler has been tested on over 30 different AML files,
15309 producing identical AML when the resulting disassembled ASL file
15310 is recompiled with the same ASL compiler.
15311
15312 Modified the Resource Manager to allow zero interrupts and zero
15313 dma channels during the GetCurrentResources call. This was
15314 causing problems on some platforms.
15315
15316 Added the AcpiOsRedirectOutput interface to the OSL to simplify
15317 output redirection for the AcpiOsPrintf and AcpiOsVprintf
15318 interfaces.
15319
15320 Code and Data Size: Current core subsystem library sizes are shown
15321 below. These are the code and data sizes for the acpica.lib
15322 produced by the Microsoft Visual C++ 6.0 compiler, and these
15323 values do not include any ACPI driver or OSPM code. The debug
15324 version of the code includes the debug output trace mechanism and
15325 has a larger code and data size. Note that these values will vary
15326 depending on the efficiency of the compiler and the compiler
15327 options used during generation.
15328
15329 Previous Release
15330 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total
15331 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total
15332 Current Release:
15333 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total
15334 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total
15335
15336
15337 2) Linux
15338
15339 Fixed a panic in the EC driver (Dominik Brodowski)
15340
15341 Implemented checksum of the R/XSDT itself during Linux table scan
15342 (Richard Schaal)
15343
15344
15345 3) iASL compiler
15346
15347 The AML disassembler is integrated into the compiler. The "-d"
15348 option invokes the disassembler to completely disassemble an
15349 input AML file, producing as output a text ASL file with the
15350 extension ".dsl" (to avoid name collisions with existing .asl
15351 source files.) A future enhancement will allow the disassembler
15352 to obtain the BIOS DSDT from the registry under Windows.
15353
15354 Fixed a problem with the VendorShort and VendorLong resource
15355 descriptors where an invalid AML sequence was created.
15356
15357 Implemented a fix for BufferData term in the ASL parser. It was
15358 inadvertently defined twice, allowing invalid syntax to pass and
15359 causing reduction conflicts.
15360
15361 Fixed a problem where the Ones opcode could get converted to a
15362 value of zero if "Ones" was used where a byte, word or dword value
15363 was expected. The 64-bit value is now truncated to the correct
15364 size with the correct value.
15365
15366
15367
15368 ----------------------------------------
15369 02 July 2002. Summary of changes for this release.
15370
15371
15372 1) ACPI CA Core Subsystem Version 20020702:
15373
15374 The Table Manager code has been restructured to add several new
15375 features. Tables that are not required by the core subsystem
15376 (other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
15377 validated in any way and are returned from AcpiGetFirmwareTable if
15378 requested. The AcpiOsTableOverride interface is now called for
15379 each table that is loaded by the subsystem in order to allow the
15380 host to override any table it chooses. Previously, only the DSDT
15381 could be overridden. Added one new files, tbrsdt.c and
15382 tbgetall.c.
15383
15384 Fixed a problem with the conversion of internal package objects to
15385 external objects (when a package is returned from a control
15386 method.) The return buffer length was set to zero instead of the
15387 proper length of the package object.
15388
15389 Fixed a reported problem with the use of the RefOf and DeRefOf
15390 operators when passing reference arguments to control methods. A
15391 new type of Reference object is used internally for references
15392 produced by the RefOf operator.
15393
15394 Added additional error messages in the Resource Manager to explain
15395 AE_BAD_DATA errors when they occur during resource parsing.
15396
15397 Split the AcpiEnableSubsystem into two primitives to enable a
15398 finer granularity initialization sequence. These two calls should
15399 be called in this order: AcpiEnableSubsystem (flags),
15400 AcpiInitializeObjects (flags). The flags parameter remains the
15401 same.
15402
15403
15404 2) Linux
15405
15406 Updated the ACPI utilities module to understand the new style of
15407 fully resolved package objects that are now returned from the core
15408 subsystem. This eliminates errors of the form:
15409
15410 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
15411 acpi_utils-0430 [145] acpi_evaluate_reference:
15412 Invalid element in package (not a device reference)
15413
15414 The method evaluation utility uses the new buffer allocation
15415 scheme instead of calling AcpiEvaluate Object twice.
15416
15417 Added support for ECDT. This allows the use of the Embedded
15418
15419 Controller before the namespace has been fully initialized, which
15420 is necessary for ACPI 2.0 support, and for some laptops to
15421 initialize properly. (Laptops using ECDT are still rare, so only
15422 limited testing was performed of the added functionality.)
15423
15424 Fixed memory leaks in the EC driver.
15425
15426 Eliminated a brittle code structure in acpi_bus_init().
15427
15428 Eliminated the acpi_evaluate() helper function in utils.c. It is
15429 no longer needed since acpi_evaluate_object can optionally
15430 allocate memory for the return object.
15431
15432 Implemented fix for keyboard hang when getting battery readings on
15433 some systems (Stephen White)
15434
15435 PCI IRQ routing update (Dominik Brodowski)
15436
15437 Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
15438 support
15439
15440 ----------------------------------------
15441 11 June 2002. Summary of changes for this release.
15442
15443
15444 1) ACPI CA Core Subsystem Version 20020611:
15445
15446 Fixed a reported problem where constants such as Zero and One
15447 appearing within _PRT packages were not handled correctly within
15448 the resource manager code. Originally reported against the ASL
15449 compiler because the code generator now optimizes integers to
15450 their minimal AML representation (i.e. AML constants if possible.)
15451 The _PRT code now handles all AML constant opcodes correctly
15452 (Zero, One, Ones, Revision).
15453
15454 Fixed a problem with the Concatenate operator in the AML
15455 interpreter where a buffer result object was incorrectly marked as
15456 not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
15457
15458 All package sub-objects are now fully resolved before they are
15459 returned from the external ACPI interfaces. This means that name
15460 strings are resolved to object handles, and constant operators
15461 (Zero, One, Ones, Revision) are resolved to Integers.
15462
15463 Implemented immediate resolution of the AML Constant opcodes
15464 (Zero, One, Ones, Revision) to Integer objects upon detection
15465 within the AML stream. This has simplified and reduced the
15466 generated code size of the subsystem by eliminating about 10
15467 switch statements for these constants (which previously were
15468 contained in Reference objects.) The complicating issues are that
15469 the Zero opcode is used as a "placeholder" for unspecified
15470 optional target operands and stores to constants are defined to be
15471 no-ops.
15472
15473 Code and Data Size: Current core subsystem library sizes are shown
15474 below. These are the code and data sizes for the acpica.lib
15475 produced by the Microsoft Visual C++ 6.0 compiler, and these
15476 values do not include any ACPI driver or OSPM code. The debug
15477 version of the code includes the debug output trace mechanism and
15478 has a larger code and data size. Note that these values will vary
15479 depending on the efficiency of the compiler and the compiler
15480 options used during generation.
15481
15482 Previous Release
15483 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total
15484 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total
15485 Current Release:
15486 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total
15487 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total
15488
15489
15490 2) Linux
15491
15492
15493 Added preliminary support for obtaining _TRA data for PCI root
15494 bridges (Bjorn Helgaas).
15495
15496
15497 3) iASL Compiler Version X2046:
15498
15499 Fixed a problem where the "_DDN" reserved name was defined to be a
15500 control method with one argument. There are no arguments, and
15501 _DDN does not have to be a control method.
15502
15503 Fixed a problem with the Linux version of the compiler where the
15504 source lines printed with error messages were the wrong lines.
15505 This turned out to be the "LF versus CR/LF" difference between
15506 Windows and Unix. This appears to be the longstanding issue
15507 concerning listing output and error messages.
15508
15509 Fixed a problem with the Linux version of compiler where opcode
15510 names within error messages were wrong. This was caused by a
15511 slight difference in the output of the Flex tool on Linux versus
15512 Windows.
15513
15514 Fixed a problem with the Linux compiler where the hex output files
15515 contained some garbage data caused by an internal buffer overrun.
15516
15517
15518 ----------------------------------------
15519 17 May 2002. Summary of changes for this release.
15520
15521
15522 1) ACPI CA Core Subsystem Version 20020517:
15523
15524 Implemented a workaround to an BIOS bug discovered on the HP
15525 OmniBook where the FADT revision number and the table size are
15526 inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new
15527 behavior is to fallback to using only the ACPI 1.0 fields of the
15528 FADT if the table is too small to be a ACPI 2.0 table as claimed
15529 by the revision number. Although this is a BIOS bug, this is a
15530 case where the workaround is simple enough and with no side
15531 effects, so it seemed prudent to add it. A warning message is
15532 issued, however.
15533
15534 Implemented minimum size checks for the fixed-length ACPI tables -
15535 - the FADT and FACS, as well as consistency checks between the
15536 revision number and the table size.
15537
15538 Fixed a reported problem in the table override support where the
15539 new table pointer was incorrectly treated as a physical address
15540 instead of a logical address.
15541
15542 Eliminated the use of the AE_AML_ERROR exception and replaced it
15543 with more descriptive codes.
15544
15545 Fixed a problem where an exception would occur if an ASL Field was
15546 defined with no named Field Units underneath it (used by some
15547 index fields).
15548
15549 Code and Data Size: Current core subsystem library sizes are shown
15550 below. These are the code and data sizes for the acpica.lib
15551 produced by the Microsoft Visual C++ 6.0 compiler, and these
15552 values do not include any ACPI driver or OSPM code. The debug
15553 version of the code includes the debug output trace mechanism and
15554 has a larger code and data size. Note that these values will vary
15555 depending on the efficiency of the compiler and the compiler
15556 options used during generation.
15557
15558 Previous Release
15559 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total
15560 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total
15561 Current Release:
15562 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total
15563 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total
15564
15565
15566
15567 2) Linux
15568
15569 Much work done on ACPI init (MADT and PCI IRQ routing support).
15570 (Paul D. and Dominik Brodowski)
15571
15572 Fix PCI IRQ-related panic on boot (Sam Revitch)
15573
15574 Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
15575
15576 Fix "MHz" typo (Dominik Brodowski)
15577
15578 Fix RTC year 2000 issue (Dominik Brodowski)
15579
15580 Preclude multiple button proc entries (Eric Brunet)
15581
15582 Moved arch-specific code out of include/platform/aclinux.h
15583
15584 3) iASL Compiler Version X2044:
15585
15586 Implemented error checking for the string used in the EISAID macro
15587 (Usually used in the definition of the _HID object.) The code now
15588 strictly enforces the PnP format - exactly 7 characters, 3
15589 uppercase letters and 4 hex digits.
15590
15591 If a raw string is used in the definition of the _HID object
15592 (instead of the EISAID macro), the string must contain all
15593 alphanumeric characters (e.g., "*PNP0011" is not allowed because
15594 of the asterisk.)
15595
15596 Implemented checking for invalid use of ACPI reserved names for
15597 most of the name creation operators (Name, Device, Event, Mutex,
15598 OperationRegion, PowerResource, Processor, and ThermalZone.)
15599 Previously, this check was only performed for control methods.
15600
15601 Implemented an additional check on the Name operator to emit an
15602 error if a reserved name that must be implemented in ASL as a
15603 control method is used. We know that a reserved name must be a
15604 method if it is defined with input arguments.
15605
15606 The warning emitted when a namespace object reference is not found
15607 during the cross reference phase has been changed into an error.
15608 The "External" directive should be used for names defined in other
15609 modules.
15610
15611
15612 4) Tools and Utilities
15613
15614 The 16-bit tools (adump16 and aexec16) have been regenerated and
15615 tested.
15616
15617 Fixed a problem with the output of both acpidump and adump16 where
15618 the indentation of closing parentheses and brackets was not
15619
15620 aligned properly with the parent block.
15621
15622
15623 ----------------------------------------
15624 03 May 2002. Summary of changes for this release.
15625
15626
15627 1) ACPI CA Core Subsystem Version 20020503:
15628
15629 Added support a new OSL interface that allows the host operating
15630
15631 system software to override the DSDT found in the firmware -
15632 AcpiOsTableOverride. With this interface, the OSL can examine the
15633 version of the firmware DSDT and replace it with a different one
15634 if desired.
15635
15636 Added new external interfaces for accessing ACPI registers from
15637 device drivers and other system software - AcpiGetRegister and
15638 AcpiSetRegister. This was simply an externalization of the
15639 existing AcpiHwBitRegister interfaces.
15640
15641 Fixed a regression introduced in the previous build where the
15642 ASL/AML CreateField operator always returned an error,
15643 "destination must be a NS Node".
15644
15645 Extended the maximum time (before failure) to successfully enable
15646 ACPI mode to 3 seconds.
15647
15648 Code and Data Size: Current core subsystem library sizes are shown
15649 below. These are the code and data sizes for the acpica.lib
15650 produced by the Microsoft Visual C++ 6.0 compiler, and these
15651 values do not include any ACPI driver or OSPM code. The debug
15652 version of the code includes the debug output trace mechanism and
15653 has a larger code and data size. Note that these values will vary
15654 depending on the efficiency of the compiler and the compiler
15655 options used during generation.
15656
15657 Previous Release
15658 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total
15659 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total
15660 Current Release:
15661 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total
15662 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total
15663
15664
15665 2) Linux
15666
15667 Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
15668 free. While 3 out of 4 of our in-house systems work fine, the last
15669 one still hangs when testing the LAPIC timer.
15670
15671 Renamed many files in 2.5 kernel release to omit "acpi_" from the
15672 name.
15673
15674 Added warning on boot for Presario 711FR.
15675
15676 Sleep improvements (Pavel Machek)
15677
15678 ACPI can now be built without CONFIG_PCI enabled.
15679
15680 IA64: Fixed memory map functions (JI Lee)
15681
15682
15683 3) iASL Compiler Version X2043:
15684
15685 Added support to allow the compiler to be integrated into the MS
15686 VC++ development environment for one-button compilation of single
15687 files or entire projects -- with error-to-source-line mapping.
15688
15689 Implemented support for compile-time constant folding for the
15690 Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
15691 specification. This allows the ASL writer to use expressions
15692 instead of Integer/Buffer/String constants in terms that must
15693 evaluate to constants at compile time and will also simplify the
15694 emitted AML in any such sub-expressions that can be folded
15695 (evaluated at compile-time.) This increases the size of the
15696 compiler significantly because a portion of the ACPI CA AML
15697 interpreter is included within the compiler in order to pre-
15698 evaluate constant expressions.
15699
15700
15701 Fixed a problem with the "Unicode" ASL macro that caused the
15702 compiler to fault. (This macro is used in conjunction with the
15703 _STR reserved name.)
15704
15705 Implemented an AML opcode optimization to use the Zero, One, and
15706 Ones opcodes where possible to further reduce the size of integer
15707 constants and thus reduce the overall size of the generated AML
15708 code.
15709
15710 Implemented error checking for new reserved terms for ACPI version
15711 2.0A.
15712
15713 Implemented the -qr option to display the current list of ACPI
15714 reserved names known to the compiler.
15715
15716 Implemented the -qc option to display the current list of ASL
15717 operators that are allowed within constant expressions and can
15718 therefore be folded at compile time if the operands are constants.
15719
15720
15721 4) Documentation
15722
15723 Updated the Programmer's Reference for new interfaces, data types,
15724 and memory allocation model options.
15725
15726 Updated the iASL Compiler User Reference to apply new format and
15727 add information about new features and options.
15728
15729 ----------------------------------------
15730 19 April 2002. Summary of changes for this release.
15731
15732 1) ACPI CA Core Subsystem Version 20020419:
15733
15734 The source code base for the Core Subsystem has been completely
15735 cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
15736 versions. The Lint option files used are included in the
15737 /acpi/generate/lint directory.
15738
15739 Implemented enhanced status/error checking across the entire
15740 Hardware manager subsystem. Any hardware errors (reported from
15741 the OSL) are now bubbled up and will abort a running control
15742 method.
15743
15744
15745 Fixed a problem where the per-ACPI-table integer width (32 or 64)
15746 was stored only with control method nodes, causing a fault when
15747 non-control method code was executed during table loading. The
15748 solution implemented uses a global variable to indicate table
15749 width across the entire ACPI subsystem. Therefore, ACPI CA does
15750 not support mixed integer widths across different ACPI tables
15751 (DSDT, SSDT).
15752
15753 Fixed a problem where NULL extended fields (X fields) in an ACPI
15754 2.0 ACPI FADT caused the table load to fail. Although the
15755 existing ACPI specification is a bit fuzzy on this topic, the new
15756 behavior is to fall back on a ACPI 1.0 field if the corresponding
15757 ACPI 2.0 X field is zero (even though the table revision indicates
15758 a full ACPI 2.0 table.) The ACPI specification will be updated to
15759 clarify this issue.
15760
15761 Fixed a problem with the SystemMemory operation region handler
15762 where memory was always accessed byte-wise even if the AML-
15763 specified access width was larger than a byte. This caused
15764 problems on systems with memory-mapped I/O. Memory is now
15765 accessed with the width specified. On systems that do not support
15766 non-aligned transfers, a check is made to guarantee proper address
15767 alignment before proceeding in order to avoid an AML-caused
15768 alignment fault within the kernel.
15769
15770
15771 Fixed a problem with the ExtendedIrq resource where only one byte
15772 of the 4-byte Irq field was extracted.
15773
15774 Fixed the AcpiExDigitsNeeded() procedure to support _UID. This
15775 function was out of date and required a rewrite.
15776
15777 Code and Data Size: Current core subsystem library sizes are shown
15778 below. These are the code and data sizes for the acpica.lib
15779 produced by the Microsoft Visual C++ 6.0 compiler, and these
15780 values do not include any ACPI driver or OSPM code. The debug
15781 version of the code includes the debug output trace mechanism and
15782 has a larger code and data size. Note that these values will vary
15783 depending on the efficiency of the compiler and the compiler
15784 options used during generation.
15785
15786 Previous Release
15787 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total
15788 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total
15789 Current Release:
15790 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total
15791 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total
15792
15793
15794 2) Linux
15795
15796 PCI IRQ routing fixes (Dominik Brodowski)
15797
15798
15799 3) iASL Compiler Version X2042:
15800
15801 Implemented an additional compile-time error check for a field
15802 unit whose size + minimum access width would cause a run-time
15803 access beyond the end-of-region. Previously, only the field size
15804 itself was checked.
15805
15806 The Core subsystem and iASL compiler now share a common parse
15807 object in preparation for compile-time evaluation of the type
15808 3/4/5 ASL operators.
15809
15810
15811 ----------------------------------------
15812 Summary of changes for this release: 03_29_02
15813
15814 1) ACPI CA Core Subsystem Version 20020329:
15815
15816 Implemented support for late evaluation of TermArg operands to
15817 Buffer and Package objects. This allows complex expressions to be
15818 used in the declarations of these object types.
15819
15820 Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
15821 1.0, if the field was larger than 32 bits, it was returned as a
15822 buffer - otherwise it was returned as an integer. In ACPI 2.0,
15823 the field is returned as a buffer only if the field is larger than
15824 64 bits. The TableRevision is now considered when making this
15825 conversion to avoid incompatibility with existing ASL code.
15826
15827 Implemented logical addressing for AcpiOsGetRootPointer. This
15828 allows an RSDP with either a logical or physical address. With
15829 this support, the host OS can now override all ACPI tables with
15830 one logical RSDP. Includes implementation of "typed" pointer
15831 support to allow a common data type for both physical and logical
15832 pointers internally. This required a change to the
15833 AcpiOsGetRootPointer interface.
15834
15835 Implemented the use of ACPI 2.0 Generic Address Structures for all
15836 GPE, Fixed Event, and PM Timer I/O. This allows the use of memory
15837 mapped I/O for these ACPI features.
15838
15839 Initialization now ignores not only non-required tables (All
15840 tables other than the FADT, FACS, DSDT, and SSDTs), but also does
15841 not validate the table headers of unrecognized tables.
15842
15843 Fixed a problem where a notify handler could only be
15844 installed/removed on an object of type Device. All "notify"
15845
15846 objects are now supported -- Devices, Processor, Power, and
15847 Thermal.
15848
15849 Removed most verbosity from the ACPI_DB_INFO debug level. Only
15850 critical information is returned when this debug level is enabled.
15851
15852 Code and Data Size: Current core subsystem library sizes are shown
15853 below. These are the code and data sizes for the acpica.lib
15854 produced by the Microsoft Visual C++ 6.0 compiler, and these
15855 values do not include any ACPI driver or OSPM code. The debug
15856 version of the code includes the debug output trace mechanism and
15857 has a larger code and data size. Note that these values will vary
15858 depending on the efficiency of the compiler and the compiler
15859 options used during generation.
15860
15861 Previous Release
15862 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total
15863 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total
15864 Current Release:
15865 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total
15866 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total
15867
15868
15869 2) Linux:
15870
15871 The processor driver (acpi_processor.c) now fully supports ACPI
15872 2.0-based processor performance control (e.g. Intel(R)
15873 SpeedStep(TM) technology) Note that older laptops that only have
15874 the Intel "applet" interface are not supported through this. The
15875 'limit' and 'performance' interface (/proc) are fully functional.
15876 [Note that basic policy for controlling performance state
15877 transitions will be included in the next version of ospmd.] The
15878 idle handler was modified to more aggressively use C2, and PIIX4
15879 errata handling underwent a complete overhaul (big thanks to
15880 Dominik Brodowski).
15881
15882 Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
15883 based devices in the ACPI namespace are now dynamically bound
15884 (associated) with their PCI counterparts (e.g. PCI1->01:00.0).
15885 This allows, among other things, ACPI to resolve bus numbers for
15886 subordinate PCI bridges.
15887
15888 Enhanced PCI IRQ routing to get the proper bus number for _PRT
15889 entries defined underneath PCI bridges.
15890
15891 Added IBM 600E to bad bios list due to invalid _ADR value for
15892 PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
15893
15894 In the process of adding full MADT support (e.g. IOAPIC) for IA32
15895 (acpi.c, mpparse.c) -- stay tuned.
15896
15897 Added back visual differentiation between fixed-feature and
15898 control-method buttons in dmesg. Buttons are also subtyped (e.g.
15899 button/power/PWRF) to simplify button identification.
15900
15901 We no longer use -Wno-unused when compiling debug. Please ignore
15902 any "_THIS_MODULE defined but not used" messages.
15903
15904 Can now shut down the system using "magic sysrq" key.
15905
15906
15907 3) iASL Compiler version 2041:
15908
15909 Fixed a problem where conversion errors for hex/octal/decimal
15910 constants were not reported.
15911
15912 Implemented a fix for the General Register template Address field.
15913 This field was 8 bits when it should be 64.
15914
15915 Fixed a problem where errors/warnings were no longer being emitted
15916 within the listing output file.
15917
15918 Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
15919 exactly 4 characters, alphanumeric only.
15920
15921
15922
15923
15924 ----------------------------------------
15925 Summary of changes for this release: 03_08_02
15926
15927
15928 1) ACPI CA Core Subsystem Version 20020308:
15929
15930 Fixed a problem with AML Fields where the use of the "AccessAny"
15931 keyword could cause an interpreter error due to attempting to read
15932 or write beyond the end of the parent Operation Region.
15933
15934 Fixed a problem in the SystemMemory Operation Region handler where
15935 an attempt was made to map memory beyond the end of the region.
15936 This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
15937 errors on some Linux systems.
15938
15939 Fixed a problem where the interpreter/namespace "search to root"
15940 algorithm was not functioning for some object types. Relaxed the
15941 internal restriction on the search to allow upsearches for all
15942 external object types as well as most internal types.
15943
15944
15945 2) Linux:
15946
15947 We now use safe_halt() macro versus individual calls to sti | hlt.
15948
15949 Writing to the processor limit interface should now work. "echo 1"
15950 will increase the limit, 2 will decrease, and 0 will reset to the
15951
15952 default.
15953
15954
15955 3) ASL compiler:
15956
15957 Fixed segfault on Linux version.
15958
15959
15960 ----------------------------------------
15961 Summary of changes for this release: 02_25_02
15962
15963 1) ACPI CA Core Subsystem:
15964
15965
15966 Fixed a problem where the GPE bit masks were not initialized
15967 properly, causing erratic GPE behavior.
15968
15969 Implemented limited support for multiple calling conventions. The
15970 code can be generated with either the VPL (variable parameter
15971 list, or "C") convention, or the FPL (fixed parameter list, or
15972 "Pascal") convention. The core subsystem is about 3.4% smaller
15973 when generated with FPL.
15974
15975
15976 2) Linux
15977
15978 Re-add some /proc/acpi/event functionality that was lost during
15979 the rewrite
15980
15981 Resolved issue with /proc events for fixed-feature buttons showing
15982 up as the system device.
15983
15984 Fixed checks on C2/C3 latencies to be inclusive of maximum values.
15985
15986 Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
15987
15988 Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
15989
15990 Fixed limit interface & usage to fix bugs with passive cooling
15991 hysterisis.
15992
15993 Restructured PRT support.
15994
15995
15996 ----------------------------------------
15997 Summary of changes for this label: 02_14_02
15998
15999
16000 1) ACPI CA Core Subsystem:
16001
16002 Implemented support in AcpiLoadTable to allow loading of FACS and
16003 FADT tables.
16004
16005 Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
16006 been removed. All 64-bit platforms should be migrated to the ACPI
16007 2.0 tables. The actbl71.h header has been removed from the source
16008 tree.
16009
16010 All C macros defined within the subsystem have been prefixed with
16011 "ACPI_" to avoid collision with other system include files.
16012
16013 Removed the return value for the two AcpiOsPrint interfaces, since
16014 it is never used and causes lint warnings for ignoring the return
16015 value.
16016
16017 Added error checking to all internal mutex acquire and release
16018 calls. Although a failure from one of these interfaces is
16019 probably a fatal system error, these checks will cause the
16020 immediate abort of the currently executing method or interface.
16021
16022 Fixed a problem where the AcpiSetCurrentResources interface could
16023 fault. This was a side effect of the deployment of the new memory
16024 allocation model.
16025
16026 Fixed a couple of problems with the Global Lock support introduced
16027 in the last major build. The "common" (1.0/2.0) internal FACS was
16028 being overwritten with the FACS signature and clobbering the
16029 Global Lock pointer. Also, the actual firmware FACS was being
16030 unmapped after construction of the "common" FACS, preventing
16031 access to the actual Global Lock field within it. The "common"
16032 internal FACS is no longer installed as an actual ACPI table; it
16033 is used simply as a global.
16034
16035 Code and Data Size: Current core subsystem library sizes are shown
16036 below. These are the code and data sizes for the acpica.lib
16037 produced by the Microsoft Visual C++ 6.0 compiler, and these
16038 values do not include any ACPI driver or OSPM code. The debug
16039 version of the code includes the debug output trace mechanism and
16040 has a larger code and data size. Note that these values will vary
16041 depending on the efficiency of the compiler and the compiler
16042 options used during generation.
16043
16044 Previous Release (02_07_01)
16045 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total
16046 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total
16047 Current Release:
16048 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total
16049 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total
16050
16051
16052 2) Linux
16053
16054 Updated Linux-specific code for core macro and OSL interface
16055 changes described above.
16056
16057 Improved /proc/acpi/event. It now can be opened only once and has
16058 proper poll functionality.
16059
16060 Fixed and restructured power management (acpi_bus).
16061
16062 Only create /proc "view by type" when devices of that class exist.
16063
16064 Fixed "charging/discharging" bug (and others) in acpi_battery.
16065
16066 Improved thermal zone code.
16067
16068
16069 3) ASL Compiler, version X2039:
16070
16071
16072 Implemented the new compiler restriction on ASL String hex/octal
16073 escapes to non-null, ASCII values. An error results if an invalid
16074 value is used. (This will require an ACPI 2.0 specification
16075 change.)
16076
16077 AML object labels that are output to the optional C and ASM source
16078 are now prefixed with both the ACPI table signature and table ID
16079 to help guarantee uniqueness within a large BIOS project.
16080
16081
16082 ----------------------------------------
16083 Summary of changes for this label: 02_01_02
16084
16085 1) ACPI CA Core Subsystem:
16086
16087 ACPI 2.0 support is complete in the entire Core Subsystem and the
16088 ASL compiler. All new ACPI 2.0 operators are implemented and all
16089 other changes for ACPI 2.0 support are complete. With
16090 simultaneous code and data optimizations throughout the subsystem,
16091 ACPI 2.0 support has been implemented with almost no additional
16092 cost in terms of code and data size.
16093
16094 Implemented a new mechanism for allocation of return buffers. If
16095 the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
16096 be allocated on behalf of the caller. Consolidated all return
16097 buffer validation and allocation to a common procedure. Return
16098 buffers will be allocated via the primary OSL allocation interface
16099 since it appears that a separate pool is not needed by most users.
16100 If a separate pool is required for these buffers, the caller can
16101 still use the original mechanism and pre-allocate the buffer(s).
16102
16103 Implemented support for string operands within the DerefOf
16104 operator.
16105
16106 Restructured the Hardware and Event managers to be table driven,
16107 simplifying the source code and reducing the amount of generated
16108 code.
16109
16110 Split the common read/write low-level ACPI register bitfield
16111 procedure into a separate read and write, simplifying the code
16112 considerably.
16113
16114 Obsoleted the AcpiOsCallocate OSL interface. This interface was
16115 used only a handful of times and didn't have enough critical mass
16116 for a separate interface. Replaced with a common calloc procedure
16117 in the core.
16118
16119 Fixed a reported problem with the GPE number mapping mechanism
16120 that allows GPE1 numbers to be non-contiguous with GPE0.
16121 Reorganized the GPE information and shrunk a large array that was
16122 originally large enough to hold info for all possible GPEs (256)
16123 to simply large enough to hold all GPEs up to the largest GPE
16124 number on the machine.
16125
16126 Fixed a reported problem with resource structure alignment on 64-
16127 bit platforms.
16128
16129 Changed the AcpiEnableEvent and AcpiDisableEvent external
16130 interfaces to not require any flags for the common case of
16131 enabling/disabling a GPE.
16132
16133 Implemented support to allow a "Notify" on a Processor object.
16134
16135 Most TBDs in comments within the source code have been resolved
16136 and eliminated.
16137
16138
16139 Fixed a problem in the interpreter where a standalone parent
16140 prefix (^) was not handled correctly in the interpreter and
16141 debugger.
16142
16143 Removed obsolete and unnecessary GPE save/restore code.
16144
16145 Implemented Field support in the ASL Load operator. This allows a
16146 table to be loaded from a named field, in addition to loading a
16147 table directly from an Operation Region.
16148
16149 Implemented timeout and handle support in the external Global Lock
16150 interfaces.
16151
16152 Fixed a problem in the AcpiDump utility where pathnames were no
16153 longer being generated correctly during the dump of named objects.
16154
16155 Modified the AML debugger to give a full display of if/while
16156 predicates instead of just one AML opcode at a time. (The
16157 predicate can have several nested ASL statements.) The old method
16158 was confusing during single stepping.
16159
16160 Code and Data Size: Current core subsystem library sizes are shown
16161 below. These are the code and data sizes for the acpica.lib
16162 produced by the Microsoft Visual C++ 6.0 compiler, and these
16163 values do not include any ACPI driver or OSPM code. The debug
16164 version of the code includes the debug output trace mechanism and
16165 has a larger code and data size. Note that these values will vary
16166 depending on the efficiency of the compiler and the compiler
16167 options used during generation.
16168
16169 Previous Release (12_18_01)
16170 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total
16171 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total
16172 Current Release:
16173 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total
16174 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total
16175
16176 2) Linux
16177
16178 Implemented fix for PIIX reverse throttling errata (Processor
16179 driver)
16180
16181 Added new Limit interface (Processor and Thermal drivers)
16182
16183 New thermal policy (Thermal driver)
16184
16185 Many updates to /proc
16186
16187 Battery "low" event support (Battery driver)
16188
16189 Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
16190
16191 IA32 - IA64 initialization unification, no longer experimental
16192
16193 Menuconfig options redesigned
16194
16195 3) ASL Compiler, version X2037:
16196
16197 Implemented several new output features to simplify integration of
16198 AML code into firmware: 1) Output the AML in C source code with
16199 labels for each named ASL object. The original ASL source code
16200 is interleaved as C comments. 2) Output the AML in ASM source code
16201 with labels and interleaved ASL source. 3) Output the AML in
16202 raw hex table form, in either C or ASM.
16203
16204 Implemented support for optional string parameters to the
16205 LoadTable operator.
16206
16207 Completed support for embedded escape sequences within string
16208 literals. The compiler now supports all single character escapes
16209 as well as the Octal and Hex escapes. Note: the insertion of a
16210 null byte into a string literal (via the hex/octal escape) causes
16211 the string to be immediately terminated. A warning is issued.
16212
16213 Fixed a problem where incorrect AML was generated for the case
16214 where an ASL namepath consists of a single parent prefix (
16215
16216 ) with no trailing name segments.
16217
16218 The compiler has been successfully generated with a 64-bit C
16219 compiler.
16220
16221
16222
16223
16224 ----------------------------------------
16225 Summary of changes for this label: 12_18_01
16226
16227 1) Linux
16228
16229 Enhanced blacklist with reason and severity fields. Any table's
16230 signature may now be used to identify a blacklisted system.
16231
16232 Call _PIC control method to inform the firmware which interrupt
16233 model the OS is using. Turn on any disabled link devices.
16234
16235 Cleaned up busmgr /proc error handling (Andreas Dilger)
16236
16237 2) ACPI CA Core Subsystem:
16238
16239 Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
16240 while loop)
16241
16242 Completed implementation of the ACPI 2.0 "Continue",
16243 "ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
16244 operators. All new ACPI 2.0 operators are now implemented in both
16245 the ASL compiler and the AML interpreter. The only remaining ACPI
16246 2.0 task is support for the String data type in the DerefOf
16247 operator. Fixed a problem with AcquireMutex where the status code
16248 was lost if the caller had to actually wait for the mutex.
16249
16250 Increased the maximum ASL Field size from 64K bits to 4G bits.
16251
16252 Completed implementation of the external Global Lock interfaces --
16253 AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and
16254 Handler parameters were added.
16255
16256 Completed another pass at removing warnings and issues when
16257 compiling with 64-bit compilers. The code now compiles cleanly
16258 with the Intel 64-bit C/C++ compiler. Most notably, the pointer
16259 add and subtract (diff) macros have changed considerably.
16260
16261
16262 Created and deployed a new ACPI_SIZE type that is 64-bits wide on
16263 64-bit platforms, 32-bits on all others. This type is used
16264 wherever memory allocation and/or the C sizeof() operator is used,
16265 and affects the OSL memory allocation interfaces AcpiOsAllocate
16266 and AcpiOsCallocate.
16267
16268 Implemented sticky user breakpoints in the AML debugger.
16269
16270 Code and Data Size: Current core subsystem library sizes are shown
16271 below. These are the code and data sizes for the acpica.lib
16272 produced by the Microsoft Visual C++ 6.0 compiler, and these
16273 values do not include any ACPI driver or OSPM code. The debug
16274 version of the code includes the debug output trace mechanism and
16275 has a larger code and data size. Note that these values will vary
16276 depending on the efficiency of the compiler and the compiler
16277 options used during generation.
16278
16279 Previous Release (12_05_01)
16280 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total
16281 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total
16282 Current Release:
16283 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total
16284 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total
16285
16286 3) ASL Compiler, version X2034:
16287
16288 Now checks for (and generates an error if detected) the use of a
16289 Break or Continue statement without an enclosing While statement.
16290
16291
16292 Successfully generated the compiler with the Intel 64-bit C
16293 compiler.
16294
16295 ----------------------------------------
16296 Summary of changes for this label: 12_05_01
16297
16298 1) ACPI CA Core Subsystem:
16299
16300 The ACPI 2.0 CopyObject operator is fully implemented. This
16301 operator creates a new copy of an object (and is also used to
16302 bypass the "implicit conversion" mechanism of the Store operator.)
16303
16304 The ACPI 2.0 semantics for the SizeOf operator are fully
16305 implemented. The change is that performing a SizeOf on a
16306 reference object causes an automatic dereference of the object to
16307 tha actual value before the size is evaluated. This behavior was
16308 undefined in ACPI 1.0.
16309
16310 The ACPI 2.0 semantics for the Extended IRQ resource descriptor
16311 have been implemented. The interrupt polarity and mode are now
16312 independently set.
16313
16314 Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
16315 appearing in Package objects were not properly converted to
16316 integers when the internal Package was converted to an external
16317 object (via the AcpiEvaluateObject interface.)
16318
16319 Fixed a problem with the namespace object deletion mechanism for
16320 objects created by control methods. There were two parts to this
16321 problem: 1) Objects created during the initialization phase method
16322 parse were not being deleted, and 2) The object owner ID mechanism
16323 to track objects was broken.
16324
16325 Fixed a problem where the use of the ASL Scope operator within a
16326 control method would result in an invalid opcode exception.
16327
16328 Fixed a problem introduced in the previous label where the buffer
16329 length required for the _PRT structure was not being returned
16330 correctly.
16331
16332 Code and Data Size: Current core subsystem library sizes are shown
16333 below. These are the code and data sizes for the acpica.lib
16334 produced by the Microsoft Visual C++ 6.0 compiler, and these
16335 values do not include any ACPI driver or OSPM code. The debug
16336 version of the code includes the debug output trace mechanism and
16337 has a larger code and data size. Note that these values will vary
16338 depending on the efficiency of the compiler and the compiler
16339 options used during generation.
16340
16341 Previous Release (11_20_01)
16342 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total
16343 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total
16344
16345 Current Release:
16346 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total
16347 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total
16348
16349 2) Linux:
16350
16351 Updated all files to apply cleanly against 2.4.16.
16352
16353 Added basic PCI Interrupt Routing Table (PRT) support for IA32
16354 (acpi_pci.c), and unified the PRT code for IA32 and IA64. This
16355 version supports both static and dyanmic PRT entries, but dynamic
16356 entries are treated as if they were static (not yet
16357 reconfigurable). Architecture- specific code to use this data is
16358 absent on IA32 but should be available shortly.
16359
16360 Changed the initialization sequence to start the ACPI interpreter
16361 (acpi_init) prior to initialization of the PCI driver (pci_init)
16362 in init/main.c. This ordering is required to support PRT and
16363 facilitate other (future) enhancement. A side effect is that the
16364 ACPI bus driver and certain device drivers can no longer be loaded
16365 as modules.
16366
16367 Modified the 'make menuconfig' options to allow PCI Interrupt
16368 Routing support to be included without the ACPI Bus and other
16369 device drivers.
16370
16371 3) ASL Compiler, version X2033:
16372
16373 Fixed some issues with the use of the new CopyObject and
16374 DataTableRegion operators. Both are fully functional.
16375
16376 ----------------------------------------
16377 Summary of changes for this label: 11_20_01
16378
16379 20 November 2001. Summary of changes for this release.
16380
16381 1) ACPI CA Core Subsystem:
16382
16383 Updated Index support to match ACPI 2.0 semantics. Storing a
16384 Integer, String, or Buffer to an Index of a Buffer will store only
16385 the least-significant byte of the source to the Indexed buffer
16386 byte. Multiple writes are not performed.
16387
16388 Fixed a problem where the access type used in an AccessAs ASL
16389 operator was not recorded correctly into the field object.
16390
16391 Fixed a problem where ASL Event objects were created in a
16392 signalled state. Events are now created in an unsignalled state.
16393
16394 The internal object cache is now purged after table loading and
16395 initialization to reduce the use of dynamic kernel memory -- on
16396 the assumption that object use is greatest during the parse phase
16397 of the entire table (versus the run-time use of individual control
16398 methods.)
16399
16400 ACPI 2.0 variable-length packages are now fully operational.
16401
16402 Code and Data Size: Code and Data optimizations have permitted new
16403 feature development with an actual reduction in the library size.
16404 Current core subsystem library sizes are shown below. These are
16405 the code and data sizes for the acpica.lib produced by the
16406 Microsoft Visual C++ 6.0 compiler, and these values do not include
16407 any ACPI driver or OSPM code. The debug version of the code
16408 includes the debug output trace mechanism and has a larger code
16409 and data size. Note that these values will vary depending on the
16410 efficiency of the compiler and the compiler options used during
16411 generation.
16412
16413 Previous Release (11_09_01):
16414 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total
16415 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total
16416
16417 Current Release:
16418 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total
16419 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total
16420
16421 2) Linux:
16422
16423 Enhanced the ACPI boot-time initialization code to allow the use
16424 of Local APIC tables for processor enumeration on IA-32, and to
16425 pave the way for a fully MPS-free boot (on SMP systems) in the
16426 near future. This functionality replaces
16427 arch/i386/kernel/acpitables.c, which was introduced in an earlier
16428 2.4.15-preX release. To enable this feature you must add
16429 "acpi_boot=on" to the kernel command line -- see the help entry
16430 for CONFIG_ACPI_BOOT for more information. An IA-64 release is in
16431 the works...
16432
16433 Restructured the configuration options to allow boot-time table
16434 parsing support without inclusion of the ACPI Interpreter (and
16435 other) code.
16436
16437 NOTE: This release does not include fixes for the reported events,
16438 power-down, and thermal passive cooling issues (coming soon).
16439
16440 3) ASL Compiler:
16441
16442 Added additional typechecking for Fields within restricted access
16443 Operation Regions. All fields within EC and CMOS regions must be
16444 declared with ByteAcc. All fields withing SMBus regions must be
16445 declared with the BufferAcc access type.
16446
16447 Fixed a problem where the listing file output of control methods
16448 no longer interleaved the actual AML code with the ASL source
16449 code.
16450
16451
16452
16453
16454 ----------------------------------------
16455 Summary of changes for this label: 11_09_01
16456
16457 1) ACPI CA Core Subsystem:
16458
16459 Implemented ACPI 2.0-defined support for writes to fields with a
16460 Buffer, String, or Integer source operand that is smaller than the
16461 target field. In these cases, the source operand is zero-extended
16462 to fill the target field.
16463
16464 Fixed a problem where a Field starting bit offset (within the
16465 parent operation region) was calculated incorrectly if the
16466
16467 alignment of the field differed from the access width. This
16468 affected CreateWordField, CreateDwordField, CreateQwordField, and
16469 possibly other fields that use the "AccessAny" keyword.
16470
16471 Fixed a problem introduced in the 11_02_01 release where indirect
16472 stores through method arguments did not operate correctly.
16473
16474 2) Linux:
16475
16476 Implemented boot-time ACPI table parsing support
16477 (CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code
16478 facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
16479 legacy BIOS interfaces (e.g. MPS) for the configuration of system
16480 processors, memory, and interrupts during setup_arch(). Note that
16481 this patch does not include the required architecture-specific
16482 changes required to apply this information -- subsequent patches
16483 will be posted for both IA32 and IA64 to achieve this.
16484
16485 Added low-level sleep support for IA32 platforms, courtesy of Pat
16486 Mochel. This allows IA32 systems to transition to/from various
16487 sleeping states (e.g. S1, S3), although the lack of a centralized
16488 driver model and power-manageable drivers will prevent its
16489 (successful) use on most systems.
16490
16491 Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
16492 submenu, unified IA32 and IA64 options, added new "Boot using ACPI
16493 tables" option, etc.
16494
16495 Increased the default timeout for the EC driver from 1ms to 10ms
16496 (1000 cycles of 10us) to try to address AE_TIME errors during EC
16497 transactions.
16498
16499 ----------------------------------------
16500 Summary of changes for this label: 11_02_01
16501
16502 1) ACPI CA Core Subsystem:
16503
16504 ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
16505 (QWordAcc keyword). All ACPI 2.0 64-bit support is now
16506 implemented.
16507
16508 OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
16509 changes to support ACPI 2.0 Qword field access. Read/Write
16510 PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
16511 accept an ACPI_INTEGER (64 bits) as the value parameter. Also,
16512 the value parameter for the address space handler interface is now
16513 an ACPI_INTEGER. OSL implementations of these interfaces must now
16514 handle the case where the Width parameter is 64.
16515
16516 Index Fields: Fixed a problem where unaligned bit assembly and
16517 disassembly for IndexFields was not supported correctly.
16518
16519 Index and Bank Fields: Nested Index and Bank Fields are now
16520 supported. During field access, a check is performed to ensure
16521 that the value written to an Index or Bank register is not out of
16522 the range of the register. The Index (or Bank) register is
16523 written before each access to the field data. Future support will
16524 include allowing individual IndexFields to be wider than the
16525 DataRegister width.
16526
16527 Fields: Fixed a problem where the AML interpreter was incorrectly
16528 attempting to write beyond the end of a Field/OpRegion. This was
16529 a boundary case that occurred when a DWORD field was written to a
16530 BYTE access OpRegion, forcing multiple writes and causing the
16531 interpreter to write one datum too many.
16532
16533 Fields: Fixed a problem with Field/OpRegion access where the
16534 starting bit address of a field was incorrectly calculated if the
16535 current access type was wider than a byte (WordAcc, DwordAcc, or
16536 QwordAcc).
16537
16538 Fields: Fixed a problem where forward references to individual
16539 FieldUnits (individual Field names within a Field definition) were
16540 not resolved during the AML table load.
16541
16542 Fields: Fixed a problem where forward references from a Field
16543 definition to the parent Operation Region definition were not
16544 resolved during the AML table load.
16545
16546 Fields: Duplicate FieldUnit names within a scope are now detected
16547 during AML table load.
16548
16549 Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
16550 returned an incorrect name for the root node.
16551
16552 Code and Data Size: Code and Data optimizations have permitted new
16553 feature development with an actual reduction in the library size.
16554 Current core subsystem library sizes are shown below. These are
16555 the code and data sizes for the acpica.lib produced by the
16556 Microsoft Visual C++ 6.0 compiler, and these values do not include
16557 any ACPI driver or OSPM code. The debug version of the code
16558 includes the debug output trace mechanism and has a larger code
16559 and data size. Note that these values will vary depending on the
16560 efficiency of the compiler and the compiler options used during
16561 generation.
16562
16563 Previous Release (10_18_01):
16564 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total
16565 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total
16566
16567 Current Release:
16568 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total
16569 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total
16570
16571 2) Linux:
16572
16573 Improved /proc processor output (Pavel Machek) Re-added
16574 MODULE_LICENSE("GPL") to all modules.
16575
16576 3) ASL Compiler version X2030:
16577
16578 Duplicate FieldUnit names within a scope are now detected and
16579 flagged as errors.
16580
16581 4) Documentation:
16582
16583 Programmer Reference updated to reflect OSL and address space
16584 handler interface changes described above.
16585
16586 ----------------------------------------
16587 Summary of changes for this label: 10_18_01
16588
16589 ACPI CA Core Subsystem:
16590
16591 Fixed a problem with the internal object reference count mechanism
16592 that occasionally caused premature object deletion. This resolves
16593 all of the outstanding problem reports where an object is deleted
16594 in the middle of an interpreter evaluation. Although this problem
16595 only showed up in rather obscure cases, the solution to the
16596 problem involved an adjustment of all reference counts involving
16597 objects attached to namespace nodes.
16598
16599 Fixed a problem with Field support in the interpreter where
16600 writing to an aligned field whose length is an exact multiple (2
16601 or greater) of the field access granularity would cause an attempt
16602 to write beyond the end of the field.
16603
16604 The top level AML opcode execution functions within the
16605 interpreter have been renamed with a more meaningful and
16606 consistent naming convention. The modules exmonad.c and
16607 exdyadic.c were eliminated. New modules are exoparg1.c,
16608 exoparg2.c, exoparg3.c, and exoparg6.c.
16609
16610 Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
16611
16612 Fixed a problem where the AML debugger was causing some internal
16613 objects to not be deleted during subsystem termination.
16614
16615 Fixed a problem with the external AcpiEvaluateObject interface
16616 where the subsystem would fault if the named object to be
16617 evaluated refered to a constant such as Zero, Ones, etc.
16618
16619 Fixed a problem with IndexFields and BankFields where the
16620 subsystem would fault if the index, data, or bank registers were
16621 not defined in the same scope as the field itself.
16622
16623 Added printf format string checking for compilers that support
16624 this feature. Corrected more than 50 instances of issues with
16625 format specifiers within invocations of ACPI_DEBUG_PRINT
16626 throughout the core subsystem code.
16627
16628 The ASL "Revision" operator now returns the ACPI support level
16629 implemented in the core - the value "2" since the ACPI 2.0 support
16630 is more than 50% implemented.
16631
16632 Enhanced the output of the AML debugger "dump namespace" command
16633 to output in a more human-readable form.
16634
16635 Current core subsystem library code sizes are shown below. These
16636
16637 are the code and data sizes for the acpica.lib produced by the
16638 Microsoft Visual C++ 6.0 compiler, and these values do not include
16639 any ACPI driver or OSPM code. The debug version of the code
16640 includes the full debug trace mechanism -- leading to a much
16641
16642 larger code and data size. Note that these values will vary
16643 depending on the efficiency of the compiler and the compiler
16644 options used during generation.
16645
16646 Previous Label (09_20_01):
16647 Non-Debug Version: 65K Code, 5K Data, 70K Total
16648 Debug Version: 138K Code, 58K Data, 196K Total
16649
16650 This Label:
16651
16652 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total
16653 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total
16654
16655 Linux:
16656
16657 Implemented a "Bad BIOS Blacklist" to track machines that have
16658 known ASL/AML problems.
16659
16660 Enhanced the /proc interface for the thermal zone driver and added
16661 support for _HOT (the critical suspend trip point). The 'info'
16662 file now includes threshold/policy information, and allows setting
16663 of _SCP (cooling preference) and _TZP (polling frequency) values
16664 to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
16665 frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
16666 preference to the passive/quiet mode (if supported by the ASL).
16667
16668 Implemented a workaround for a gcc bug that resuted in an OOPs
16669 when loading the control method battery driver.
16670
16671 ----------------------------------------
16672 Summary of changes for this label: 09_20_01
16673
16674 ACPI CA Core Subsystem:
16675
16676 The AcpiEnableEvent and AcpiDisableEvent interfaces have been
16677 modified to allow individual GPE levels to be flagged as wake-
16678 enabled (i.e., these GPEs are to remain enabled when the platform
16679 sleeps.)
16680
16681 The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
16682 support wake-enabled GPEs. This means that upon entering the
16683 sleep state, all GPEs that are not wake-enabled are disabled.
16684 When leaving the sleep state, these GPEs are reenabled.
16685
16686 A local double-precision divide/modulo module has been added to
16687 enhance portability to OS kernels where a 64-bit math library is
16688 not available. The new module is "utmath.c".
16689
16690 Several optimizations have been made to reduce the use of CPU
16691 stack. Originally over 2K, the maximum stack usage is now below
16692 2K at 1860 bytes (1.82k)
16693
16694 Fixed a problem with the AcpiGetFirmwareTable interface where the
16695 root table pointer was not mapped into a logical address properly.
16696
16697 Fixed a problem where a NULL pointer was being dereferenced in the
16698 interpreter code for the ASL Notify operator.
16699
16700 Fixed a problem where the use of the ASL Revision operator
16701 returned an error. This operator now returns the current version
16702 of the ACPI CA core subsystem.
16703
16704 Fixed a problem where objects passed as control method parameters
16705 to AcpiEvaluateObject were always deleted at method termination.
16706 However, these objects may end up being stored into the namespace
16707 by the called method. The object reference count mechanism was
16708 applied to these objects instead of a force delete.
16709
16710 Fixed a problem where static strings or buffers (contained in the
16711 AML code) that are declared as package elements within the ASL
16712 code could cause a fault because the interpreter would attempt to
16713 delete them. These objects are now marked with the "static
16714 object" flag to prevent any attempt to delete them.
16715
16716 Implemented an interpreter optimization to use operands directly
16717 from the state object instead of extracting the operands to local
16718 variables. This reduces stack use and code size, and improves
16719 performance.
16720
16721 The module exxface.c was eliminated as it was an unnecessary extra
16722 layer of code.
16723
16724 Current core subsystem library code sizes are shown below. These
16725 are the code and data sizes for the acpica.lib produced by the
16726 Microsoft Visual C++ 6.0 compiler, and these values do not include
16727 any ACPI driver or OSPM code. The debug version of the code
16728 includes the full debug trace mechanism -- leading to a much
16729 larger code and data size. Note that these values will vary
16730 depending on the efficiency of the compiler and the compiler
16731 options used during generation.
16732
16733 Non-Debug Version: 65K Code, 5K Data, 70K Total
16734 (Previously 69K) Debug Version: 138K Code, 58K Data, 196K
16735 Total (Previously 195K)
16736
16737 Linux:
16738
16739 Support for ACPI 2.0 64-bit integers has been added. All ACPI
16740 Integer objects are now 64 bits wide
16741
16742 All Acpi data types and structures are now in lower case. Only
16743 Acpi macros are upper case for differentiation.
16744
16745 Documentation:
16746
16747 Changes to the external interfaces as described above.
16748
16749 ----------------------------------------
16750 Summary of changes for this label: 08_31_01
16751
16752 ACPI CA Core Subsystem:
16753
16754 A bug with interpreter implementation of the ASL Divide operator
16755 was found and fixed. The implicit function return value (not the
16756 explicit store operands) was returning the remainder instead of
16757 the quotient. This was a longstanding bug and it fixes several
16758 known outstanding issues on various platforms.
16759
16760 The ACPI_DEBUG_PRINT and function trace entry/exit macros have
16761 been further optimized for size. There are 700 invocations of the
16762 DEBUG_PRINT macro alone, so each optimization reduces the size of
16763 the debug version of the subsystem significantly.
16764
16765 A stack trace mechanism has been implemented. The maximum stack
16766 usage is about 2K on 32-bit platforms. The debugger command "stat
16767 stack" will display the current maximum stack usage.
16768
16769 All public symbols and global variables within the subsystem are
16770 now prefixed with the string "Acpi". This keeps all of the
16771 symbols grouped together in a kernel map, and avoids conflicts
16772 with other kernel subsystems.
16773
16774 Most of the internal fixed lookup tables have been moved into the
16775 code segment via the const operator.
16776
16777 Several enhancements have been made to the interpreter to both
16778 reduce the code size and improve performance.
16779
16780 Current core subsystem library code sizes are shown below. These
16781 are the code and data sizes for the acpica.lib produced by the
16782 Microsoft Visual C++ 6.0 compiler, and these values do not include
16783 any ACPI driver or OSPM code. The debug version of the code
16784 includes the full debug trace mechanism which contains over 700
16785 invocations of the DEBUG_PRINT macro, 500 function entry macro
16786 invocations, and over 900 function exit macro invocations --
16787 leading to a much larger code and data size. Note that these
16788 values will vary depending on the efficiency of the compiler and
16789 the compiler options used during generation.
16790
16791 Non-Debug Version: 64K Code, 5K Data, 69K Total
16792 Debug Version: 137K Code, 58K Data, 195K Total
16793
16794 Linux:
16795
16796 Implemented wbinvd() macro, pending a kernel-wide definition.
16797
16798 Fixed /proc/acpi/event to handle poll() and short reads.
16799
16800 ASL Compiler, version X2026:
16801
16802 Fixed a problem introduced in the previous label where the AML
16803
16804 code emitted for package objects produced packages with zero
16805 length.
16806
16807 ----------------------------------------
16808 Summary of changes for this label: 08_16_01
16809
16810 ACPI CA Core Subsystem:
16811
16812 The following ACPI 2.0 ASL operators have been implemented in the
16813 AML interpreter (These are already supported by the Intel ASL
16814 compiler): ToDecimalString, ToHexString, ToString, ToInteger, and
16815 ToBuffer. Support for 64-bit AML constants is implemented in the
16816 AML parser, debugger, and disassembler.
16817
16818 The internal memory tracking mechanism (leak detection code) has
16819 been upgraded to reduce the memory overhead (a separate tracking
16820 block is no longer allocated for each memory allocation), and now
16821 supports all of the internal object caches.
16822
16823 The data structures and code for the internal object caches have
16824 been coelesced and optimized so that there is a single cache and
16825 memory list data structure and a single group of functions that
16826 implement generic cache management. This has reduced the code
16827 size in both the debug and release versions of the subsystem.
16828
16829 The DEBUG_PRINT macro(s) have been optimized for size and replaced
16830 by ACPI_DEBUG_PRINT. The syntax for this macro is slightly
16831 different, because it generates a single call to an internal
16832 function. This results in a savings of about 90 bytes per
16833 invocation, resulting in an overall code and data savings of about
16834 16% in the debug version of the subsystem.
16835
16836 Linux:
16837
16838 Fixed C3 disk corruption problems and re-enabled C3 on supporting
16839 machines.
16840
16841 Integrated low-level sleep code by Patrick Mochel.
16842
16843 Further tweaked source code Linuxization.
16844
16845 Other minor fixes.
16846
16847 ASL Compiler:
16848
16849 Support for ACPI 2.0 variable length packages is fixed/completed.
16850
16851 Fixed a problem where the optional length parameter for the ACPI
16852 2.0 ToString operator.
16853
16854 Fixed multiple extraneous error messages when a syntax error is
16855 detected within the declaration line of a control method.
16856
16857 ----------------------------------------
16858 Summary of changes for this label: 07_17_01
16859
16860 ACPI CA Core Subsystem:
16861
16862 Added a new interface named AcpiGetFirmwareTable to obtain any
16863 ACPI table via the ACPI signature. The interface can be called at
16864 any time during kernel initialization, even before the kernel
16865 virtual memory manager is initialized and paging is enabled. This
16866 allows kernel subsystems to obtain ACPI tables very early, even
16867 before the ACPI CA subsystem is initialized.
16868
16869 Fixed a problem where Fields defined with the AnyAcc attribute
16870 could be resolved to the incorrect address under the following
16871 conditions: 1) the field width is larger than 8 bits and 2) the
16872 parent operation region is not defined on a DWORD boundary.
16873
16874 Fixed a problem where the interpreter is not being locked during
16875 namespace initialization (during execution of the _INI control
16876 methods), causing an error when an attempt is made to release it
16877 later.
16878
16879 ACPI 2.0 support in the AML Interpreter has begun and will be
16880 ongoing throughout the rest of this year. In this label, The Mod
16881 operator is implemented.
16882
16883 Added a new data type to contain full PCI addresses named
16884 ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
16885 and Function values.
16886
16887 Linux:
16888
16889 Enhanced the Linux version of the source code to change most
16890 capitalized ACPI type names to lowercase. For example, all
16891 instances of ACPI_STATUS are changed to acpi_status. This will
16892 result in a large diff, but the change is strictly cosmetic and
16893 aligns the CA code closer to the Linux coding standard.
16894
16895 OSL Interfaces:
16896
16897 The interfaces to the PCI configuration space have been changed to
16898 add the PCI Segment number and to split the single 32-bit combined
16899 DeviceFunction field into two 16-bit fields. This was
16900 accomplished by moving the four values that define an address in
16901 PCI configuration space (segment, bus, device, and function) to
16902 the new ACPI_PCI_ID structure.
16903
16904 The changes to the PCI configuration space interfaces led to a
16905 reexamination of the complete set of address space access
16906 interfaces for PCI, I/O, and Memory. The previously existing 18
16907 interfaces have proven difficult to maintain (any small change
16908 must be propagated across at least 6 interfaces) and do not easily
16909 allow for future expansion to 64 bits if necessary. Also, on some
16910 systems, it would not be appropriate to demultiplex the access
16911 width (8, 16, 32,or 64) before calling the OSL if the
16912 corresponding native OS interfaces contain a similar access width
16913 parameter. For these reasons, the 18 address space interfaces
16914 have been replaced by these 6 new ones:
16915
16916 AcpiOsReadPciConfiguration
16917 AcpiOsWritePciConfiguration
16918 AcpiOsReadMemory
16919 AcpiOsWriteMemory
16920 AcpiOsReadPort
16921 AcpiOsWritePort
16922
16923 Added a new interface named AcpiOsGetRootPointer to allow the OSL
16924 to perform the platform and/or OS-specific actions necessary to
16925 obtain the ACPI RSDP table pointer. On IA-32 platforms, this
16926 interface will simply call down to the CA core to perform the low-
16927 memory search for the table. On IA-64, the RSDP is obtained from
16928 EFI. Migrating this interface to the OSL allows the CA core to
16929
16930 remain OS and platform independent.
16931
16932 Added a new interface named AcpiOsSignal to provide a generic
16933 "function code and pointer" interface for various miscellaneous
16934 signals and notifications that must be made to the host OS. The
16935 first such signals are intended to support the ASL Fatal and
16936 Breakpoint operators. In the latter case, the AcpiOsBreakpoint
16937 interface has been obsoleted.
16938
16939 The definition of the AcpiFormatException interface has been
16940 changed to simplify its use. The caller no longer must supply a
16941 buffer to the call; A pointer to a const string is now returned
16942 directly. This allows the call to be easily used in printf
16943 statements, etc. since the caller does not have to manage a local
16944 buffer.
16945
16946
16947 ASL Compiler, Version X2025:
16948
16949 The ACPI 2.0 Switch/Case/Default operators have been implemented
16950 and are fully functional. They will work with all ACPI 1.0
16951 interpreters, since the operators are simply translated to If/Else
16952 pairs.
16953
16954 The ACPI 2.0 ElseIf operator is implemented and will also work
16955 with 1.0 interpreters, for the same reason.
16956
16957 Implemented support for ACPI 2.0 variable-length packages. These
16958 packages have a separate opcode, and their size is determined by
16959 the interpreter at run-time.
16960
16961 Documentation The ACPI CA Programmer Reference has been updated to
16962 reflect the new interfaces and changes to existing interfaces.
16963
16964 ------------------------------------------
16965 Summary of changes for this label: 06_15_01
16966
16967 ACPI CA Core Subsystem:
16968
16969 Fixed a problem where a DWORD-accessed field within a Buffer
16970 object would get its byte address inadvertently rounded down to
16971 the nearest DWORD. Buffers are always Byte-accessible.
16972
16973 ASL Compiler, version X2024:
16974
16975 Fixed a problem where the Switch() operator would either fault or
16976 hang the compiler. Note however, that the AML code for this ACPI
16977 2.0 operator is not yet implemented.
16978
16979 Compiler uses the new AcpiOsGetTimer interface to obtain compile
16980 timings.
16981
16982 Implementation of the CreateField operator automatically converts
16983 a reference to a named field within a resource descriptor from a
16984 byte offset to a bit offset if required.
16985
16986 Added some missing named fields from the resource descriptor
16987 support. These are the names that are automatically created by the
16988 compiler to reference fields within a descriptor. They are only
16989 valid at compile time and are not passed through to the AML
16990 interpreter.
16991
16992 Resource descriptor named fields are now typed as Integers and
16993 subject to compile-time typechecking when used in expressions.
16994
16995 ------------------------------------------
16996 Summary of changes for this label: 05_18_01
16997
16998 ACPI CA Core Subsystem:
16999
17000 Fixed a couple of problems in the Field support code where bits
17001 from adjacent fields could be returned along with the proper field
17002 bits. Restructured the field support code to improve performance,
17003 readability and maintainability.
17004
17005 New DEBUG_PRINTP macro automatically inserts the procedure name
17006 into the output, saving hundreds of copies of procedure name
17007 strings within the source, shrinking the memory footprint of the
17008 debug version of the core subsystem.
17009
17010 Source Code Structure:
17011
17012 The source code directory tree was restructured to reflect the
17013 current organization of the component architecture. Some files
17014 and directories have been moved and/or renamed.
17015
17016 Linux:
17017
17018 Fixed leaking kacpidpc processes.
17019
17020 Fixed queueing event data even when /proc/acpi/event is not
17021 opened.
17022
17023 ASL Compiler, version X2020:
17024
17025 Memory allocation performance enhancement - over 24X compile time
17026 improvement on large ASL files. Parse nodes and namestring
17027 buffers are now allocated from a large internal compiler buffer.
17028
17029 The temporary .SRC file is deleted unless the "-s" option is
17030 specified
17031
17032 The "-d" debug output option now sends all output to the .DBG file
17033 instead of the console.
17034
17035 "External" second parameter is now optional
17036
17037 "ElseIf" syntax now properly allows the predicate
17038
17039 Last operand to "Load" now recognized as a Target operand
17040
17041 Debug object can now be used anywhere as a normal object.
17042
17043 ResourceTemplate now returns an object of type BUFFER
17044
17045 EISAID now returns an object of type INTEGER
17046
17047 "Index" now works with a STRING operand
17048
17049 "LoadTable" now accepts optional parameters
17050
17051 "ToString" length parameter is now optional
17052
17053 "Interrupt (ResourceType," parse error fixed.
17054
17055 "Register" with a user-defined region space parse error fixed
17056
17057 Escaped backslash at the end of a string ("\\") scan/parse error
17058 fixed
17059
17060 "Revision" is now an object of type INTEGER.
17061
17062
17063
17064 ------------------------------------------
17065 Summary of changes for this label: 05_02_01
17066
17067 Linux:
17068
17069 /proc/acpi/event now blocks properly.
17070
17071 Removed /proc/sys/acpi. You can still dump your DSDT from
17072 /proc/acpi/dsdt.
17073
17074 ACPI CA Core Subsystem:
17075
17076 Fixed a problem introduced in the previous label where some of the
17077 "small" resource descriptor types were not recognized.
17078
17079 Improved error messages for the case where an ASL Field is outside
17080 the range of the parent operation region.
17081
17082 ASL Compiler, version X2018:
17083
17084
17085 Added error detection for ASL Fields that extend beyond the length
17086 of the parent operation region (only if the length of the region
17087 is known at compile time.) This includes fields that have a
17088 minimum access width that is smaller than the parent region, and
17089 individual field units that are partially or entirely beyond the
17090 extent of the parent.
17091
17092
17093
17094 ------------------------------------------
17095 Summary of changes for this label: 04_27_01
17096
17097 ACPI CA Core Subsystem:
17098
17099 Fixed a problem where the namespace mutex could be released at the
17100 wrong time during execution of AcpiRemoveAddressSpaceHandler.
17101
17102 Added optional thread ID output for debug traces, to simplify
17103 debugging of multiple threads. Added context switch notification
17104 when the debug code realizes that a different thread is now
17105 executing ACPI code.
17106
17107 Some additional external data types have been prefixed with the
17108 string "ACPI_" for consistency. This may effect existing code.
17109 The data types affected are the external callback typedefs - e.g.,
17110
17111 WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
17112
17113 Linux:
17114
17115 Fixed an issue with the OSL semaphore implementation where a
17116 thread was waking up with an error from receiving a SIGCHLD
17117 signal.
17118
17119 Linux version of ACPI CA now uses the system C library for string
17120 manipulation routines instead of a local implementation.
17121
17122 Cleaned up comments and removed TBDs.
17123
17124 ASL Compiler, version X2017:
17125
17126 Enhanced error detection and reporting for all file I/O
17127 operations.
17128
17129 Documentation:
17130
17131 Programmer Reference updated to version 1.06.
17132
17133
17134
17135 ------------------------------------------
17136 Summary of changes for this label: 04_13_01
17137
17138 ACPI CA Core Subsystem:
17139
17140 Restructured support for BufferFields and RegionFields.
17141 BankFields support is now fully operational. All known 32-bit
17142 limitations on field sizes have been removed. Both BufferFields
17143 and (Operation) RegionFields are now supported by the same field
17144 management code.
17145
17146 Resource support now supports QWORD address and IO resources. The
17147 16/32/64 bit address structures and the Extended IRQ structure
17148 have been changed to properly handle Source Resource strings.
17149
17150 A ThreadId of -1 is now used to indicate a "mutex not acquired"
17151 condition internally and must never be returned by AcpiOsThreadId.
17152 This reserved value was changed from 0 since Unix systems allow a
17153 thread ID of 0.
17154
17155 Linux:
17156
17157 Driver code reorganized to enhance portability
17158
17159 Added a kernel configuration option to control ACPI_DEBUG
17160
17161 Fixed the EC driver to honor _GLK.
17162
17163 ASL Compiler, version X2016:
17164
17165 Fixed support for the "FixedHw" keyword. Previously, the FixedHw
17166 address space was set to 0, not 0x7f as it should be.
17167
17168 ------------------------------------------
17169 Summary of changes for this label: 03_13_01
17170
17171 ACPI CA Core Subsystem:
17172
17173 During ACPI initialization, the _SB_._INI method is now run if
17174 present.
17175
17176 Notify handler fix - notifies are deferred until the parent method
17177 completes execution. This fixes the "mutex already acquired"
17178 issue seen occasionally.
17179
17180 Part of the "implicit conversion" rules in ACPI 2.0 have been
17181 found to cause compatibility problems with existing ASL/AML. The
17182 convert "result-to-target-type" implementation has been removed
17183 for stores to method Args and Locals. Source operand conversion
17184 is still fully implemented. Possible changes to ACPI 2.0
17185 specification pending.
17186
17187 Fix to AcpiRsCalculatePciRoutingTableLength to return correct
17188 length.
17189
17190 Fix for compiler warnings for 64-bit compiles.
17191
17192 Linux:
17193
17194 /proc output aligned for easier parsing.
17195
17196 Release-version compile problem fixed.
17197
17198 New kernel configuration options documented in Configure.help.
17199
17200 IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
17201 context" message.
17202
17203 OSPM:
17204
17205 Power resource driver integrated with bus manager.
17206
17207 Fixed kernel fault during active cooling for thermal zones.
17208
17209 Source Code:
17210
17211 The source code tree has been restructured.
17212
17213
17214
17215 ------------------------------------------
17216 Summary of changes for this label: 03_02_01
17217
17218 Linux OS Services Layer (OSL):
17219
17220 Major revision of all Linux-specific code.
17221
17222 Modularized all ACPI-specific drivers.
17223
17224 Added new thermal zone and power resource drivers.
17225
17226 Revamped /proc interface (new functionality is under /proc/acpi).
17227
17228 New kernel configuration options.
17229
17230 Linux known issues:
17231
17232 New kernel configuration options not documented in Configure.help
17233 yet.
17234
17235
17236 Module dependencies not currently implemented. If used, they
17237 should be loaded in this order: busmgr, power, ec, system,
17238 processor, battery, ac_adapter, button, thermal.
17239
17240 Modules will not load if CONFIG_MODVERSION is set.
17241
17242 IBM 600E - entering S5 may reboot instead of shutting down.
17243
17244 IBM 600E - Sleep button may generate "Invalid <NULL> context"
17245 message.
17246
17247 Some systems may fail with "execution mutex already acquired"
17248 message.
17249
17250 ACPI CA Core Subsystem:
17251
17252 Added a new OSL Interface, AcpiOsGetThreadId. This was required
17253 for the deadlock detection code. Defined to return a non-zero, 32-
17254 bit thread ID for the currently executing thread. May be a non-
17255 zero constant integer on single-thread systems.
17256
17257 Implemented deadlock detection for internal subsystem mutexes. We
17258 may add conditional compilation for this code (debug only) later.
17259
17260 ASL/AML Mutex object semantics are now fully supported. This
17261 includes multiple acquires/releases by owner and support for the
17262
17263 Mutex SyncLevel parameter.
17264
17265 A new "Force Release" mechanism automatically frees all ASL
17266 Mutexes that have been acquired but not released when a thread
17267 exits the interpreter. This forces conformance to the ACPI spec
17268 ("All mutexes must be released when an invocation exits") and
17269 prevents deadlocked ASL threads. This mechanism can be expanded
17270 (later) to monitor other resource acquisitions if OEM ASL code
17271 continues to misbehave (which it will).
17272
17273 Several new ACPI exception codes have been added for the Mutex
17274 support.
17275
17276 Recursive method calls are now allowed and supported (the ACPI
17277 spec does in fact allow recursive method calls.) The number of
17278 recursive calls is subject to the restrictions imposed by the
17279 SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
17280 parameter.
17281
17282 Implemented support for the SyncLevel parameter for control
17283 methods (ACPI 2.0 feature)
17284
17285 Fixed a deadlock problem when multiple threads attempted to use
17286 the interpreter.
17287
17288 Fixed a problem where the string length of a String package
17289 element was not always set in a package returned from
17290 AcpiEvaluateObject.
17291
17292 Fixed a problem where the length of a String package element was
17293 not always included in the length of the overall package returned
17294 from AcpiEvaluateObject.
17295
17296 Added external interfaces (Acpi*) to the ACPI debug memory
17297 manager. This manager keeps a list of all outstanding
17298 allocations, and can therefore detect memory leaks and attempts to
17299 free memory blocks more than once. Useful for code such as the
17300 power manager, etc. May not be appropriate for device drivers.
17301 Performance with the debug code enabled is slow.
17302
17303 The ACPI Global Lock is now an optional hardware element.
17304
17305 ASL Compiler Version X2015:
17306
17307 Integrated changes to allow the compiler to be generated on
17308 multiple platforms.
17309
17310 Linux makefile added to generate the compiler on Linux
17311
17312 Source Code:
17313
17314 All platform-specific headers have been moved to their own
17315 subdirectory, Include/Platform.
17316
17317 New source file added, Interpreter/ammutex.c
17318
17319 New header file, Include/acstruct.h
17320
17321 Documentation:
17322
17323 The programmer reference has been updated for the following new
17324 interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
17325
17326 ------------------------------------------
17327 Summary of changes for this label: 02_08_01
17328
17329 Core ACPI CA Subsystem: Fixed a problem where an error was
17330 incorrectly returned if the return resource buffer was larger than
17331 the actual data (in the resource interfaces).
17332
17333 References to named objects within packages are resolved to the
17334
17335 full pathname string before packages are returned directly (via
17336 the AcpiEvaluateObject interface) or indirectly via the resource
17337 interfaces.
17338
17339 Linux OS Services Layer (OSL):
17340
17341 Improved /proc battery interface.
17342
17343
17344 Added C-state debugging output and other miscellaneous fixes.
17345
17346 ASL Compiler Version X2014:
17347
17348 All defined method arguments can now be used as local variables,
17349 including the ones that are not actually passed in as parameters.
17350 The compiler tracks initialization of the arguments and issues an
17351 exception if they are used without prior assignment (just like
17352 locals).
17353
17354 The -o option now specifies a filename prefix that is used for all
17355 output files, including the AML output file. Otherwise, the
17356 default behavior is as follows: 1) the AML goes to the file
17357 specified in the DSDT. 2) all other output files use the input
17358 source filename as the base.
17359
17360 ------------------------------------------
17361 Summary of changes for this label: 01_25_01
17362
17363 Core ACPI CA Subsystem: Restructured the implementation of object
17364 store support within the interpreter. This includes support for
17365 the Store operator as well as any ASL operators that include a
17366 target operand.
17367
17368 Partially implemented support for Implicit Result-to-Target
17369 conversion. This is when a result object is converted on the fly
17370 to the type of an existing target object. Completion of this
17371 support is pending further analysis of the ACPI specification
17372 concerning this matter.
17373
17374 CPU-specific code has been removed from the subsystem (hardware
17375 directory).
17376
17377 New Power Management Timer functions added
17378
17379 Linux OS Services Layer (OSL): Moved system state transition code
17380 to the core, fixed it, and modified Linux OSL accordingly.
17381
17382 Fixed C2 and C3 latency calculations.
17383
17384
17385 We no longer use the compilation date for the version message on
17386 initialization, but retrieve the version from AcpiGetSystemInfo().
17387
17388 Incorporated for fix Sony VAIO machines.
17389
17390 Documentation: The Programmer Reference has been updated and
17391 reformatted.
17392
17393
17394 ASL Compiler: Version X2013: Fixed a problem where the line
17395 numbering and error reporting could get out of sync in the
17396 presence of multiple include files.
17397
17398 ------------------------------------------
17399 Summary of changes for this label: 01_15_01
17400
17401 Core ACPI CA Subsystem:
17402
17403 Implemented support for type conversions in the execution of the
17404 ASL Concatenate operator (The second operand is converted to
17405 match the type of the first operand before concatenation.)
17406
17407 Support for implicit source operand conversion is partially
17408 implemented. The ASL source operand types Integer, Buffer, and
17409 String are freely interchangeable for most ASL operators and are
17410 converted by the interpreter on the fly as required. Implicit
17411 Target operand conversion (where the result is converted to the
17412 target type before storing) is not yet implemented.
17413
17414 Support for 32-bit and 64-bit BCD integers is implemented.
17415
17416 Problem fixed where a field read on an aligned field could cause a
17417 read past the end of the field.
17418
17419 New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
17420 does not return a value, but the caller expects one. (The ASL
17421 compiler flags this as a warning.)
17422
17423 ASL Compiler:
17424
17425 Version X2011:
17426 1. Static typechecking of all operands is implemented. This
17427 prevents the use of invalid objects (such as using a Package where
17428 an Integer is required) at compile time instead of at interpreter
17429 run-time.
17430 2. The ASL source line is printed with ALL errors and warnings.
17431 3. Bug fix for source EOF without final linefeed.
17432 4. Debug option is split into a parse trace and a namespace trace.
17433 5. Namespace output option (-n) includes initial values for
17434 integers and strings.
17435 6. Parse-only option added for quick syntax checking.
17436 7. Compiler checks for duplicate ACPI name declarations
17437
17438 Version X2012:
17439 1. Relaxed typechecking to allow interchangeability between
17440 strings, integers, and buffers. These types are now converted by
17441 the interpreter at runtime.
17442 2. Compiler reports time taken by each internal subsystem in the
17443 debug output file.
17444
17445
17446 ------------------------------------------
17447 Summary of changes for this label: 12_14_00
17448
17449 ASL Compiler:
17450
17451 This is the first official release of the compiler. Since the
17452 compiler requires elements of the Core Subsystem, this label
17453 synchronizes everything.
17454
17455 ------------------------------------------
17456 Summary of changes for this label: 12_08_00
17457
17458
17459 Fixed a problem where named references within the ASL definition
17460 of both OperationRegions and CreateXXXFields did not work
17461 properly. The symptom was an AE_AML_OPERAND_TYPE during
17462 initialization of the region/field. This is similar (but not
17463 related internally) to the problem that was fixed in the last
17464 label.
17465
17466 Implemented both 32-bit and 64-bit support for the BCD ASL
17467 functions ToBCD and FromBCD.
17468
17469 Updated all legal headers to include "2000" in the copyright
17470 years.
17471
17472 ------------------------------------------
17473 Summary of changes for this label: 12_01_00
17474
17475 Fixed a problem where method invocations within the ASL definition
17476 of both OperationRegions and CreateXXXFields did not work
17477 properly. The symptom was an AE_AML_OPERAND_TYPE during
17478 initialization of the region/field:
17479
17480 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
17481 [DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
17482 (0x3005)
17483
17484 Fixed a problem where operators with more than one nested
17485 subexpression would fail. The symptoms were varied, by mostly
17486 AE_AML_OPERAND_TYPE errors. This was actually a rather serious
17487 problem that has gone unnoticed until now.
17488
17489 Subtract (Add (1,2), Multiply (3,4))
17490
17491 Fixed a problem where AcpiGetHandle didn't quite get fixed in the
17492 previous build (The prefix part of a relative path was handled
17493 incorrectly).
17494
17495 Fixed a problem where Operation Region initialization failed if
17496 the operation region name was a "namepath" instead of a simple
17497 "nameseg". Symptom was an AE_NO_OPERAND error.
17498
17499 Fixed a problem where an assignment to a local variable via the
17500 indirect RefOf mechanism only worked for the first such
17501 assignment. Subsequent assignments were ignored.
17502
17503 ------------------------------------------
17504 Summary of changes for this label: 11_15_00
17505
17506 ACPI 2.0 table support with backwards support for ACPI 1.0 and the
17507 0.71 extensions. Note: although we can read ACPI 2.0 BIOS tables,
17508 the AML interpreter does NOT have support for the new 2.0 ASL
17509 grammar terms at this time.
17510
17511 All ACPI hardware access is via the GAS structures in the ACPI 2.0
17512 FADT.
17513
17514 All physical memory addresses across all platforms are now 64 bits
17515 wide. Logical address width remains dependent on the platform
17516 (i.e., "void *").
17517
17518 AcpiOsMapMemory interface changed to a 64-bit physical address.
17519
17520 The AML interpreter integer size is now 64 bits, as per the ACPI
17521 2.0 specification.
17522
17523 For backwards compatibility with ACPI 1.0, ACPI tables with a
17524 revision number less than 2 use 32-bit integers only.
17525
17526 Fixed a problem where the evaluation of OpRegion operands did not
17527 always resolve them to numbers properly.
17528
17529 ------------------------------------------
17530 Summary of changes for this label: 10_20_00
17531
17532 Fix for CBN_._STA issue. This fix will allow correct access to
17533 CBN_ OpRegions when the _STA returns 0x8.
17534
17535 Support to convert ACPI constants (Ones, Zeros, One) to actual
17536 values before a package object is returned
17537
17538 Fix for method call as predicate to if/while construct causing
17539 incorrect if/while behavior
17540
17541 Fix for Else block package lengths sometimes calculated wrong (if
17542 block > 63 bytes)
17543
17544 Fix for Processor object length field, was always zero
17545
17546 Table load abort if FACP sanity check fails
17547
17548 Fix for problem with Scope(name) if name already exists
17549
17550 Warning emitted if a named object referenced cannot be found
17551 (resolved) during method execution.
17552
17553
17554
17555
17556
17557 ------------------------------------------
17558 Summary of changes for this label: 9_29_00
17559
17560 New table initialization interfaces: AcpiInitializeSubsystem no
17561 longer has any parameters AcpiFindRootPointer - Find the RSDP (if
17562 necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
17563 >RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
17564 AcpiLoadTables
17565
17566 Note: These interface changes require changes to all existing OSDs
17567
17568 The PCI_Config default address space handler is always installed
17569 at the root namespace object.
17570
17571 -------------------------------------------
17572 Summary of changes for this label: 09_15_00
17573
17574 The new initialization architecture is implemented. New
17575 interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
17576 AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
17577
17578 (Namespace is automatically loaded when a table is loaded)
17579
17580 The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
17581 52 bytes to 32 bytes. There is usually one of these for every
17582 namespace object, so the memory savings is significant.
17583
17584 Implemented just-in-time evaluation of the CreateField operators.
17585
17586 Bug fixes for IA-64 support have been integrated.
17587
17588 Additional code review comments have been implemented
17589
17590 The so-called "third pass parse" has been replaced by a final walk
17591 through the namespace to initialize all operation regions (address
17592 spaces) and fields that have not yet been initialized during the
17593 execution of the various _INI and REG methods.
17594
17595 New file - namespace/nsinit.c
17596
17597 -------------------------------------------
17598 Summary of changes for this label: 09_01_00
17599
17600 Namespace manager data structures have been reworked to change the
17601 primary object from a table to a single object. This has
17602 resulted in dynamic memory savings of 3X within the namespace and
17603 2X overall in the ACPI CA subsystem.
17604
17605 Fixed problem where the call to AcpiEvFindPciRootBuses was
17606 inadvertently left commented out.
17607
17608 Reduced the warning count when generating the source with the GCC
17609 compiler.
17610
17611 Revision numbers added to each module header showing the
17612 SourceSafe version of the file. Please refer to this version
17613 number when giving us feedback or comments on individual modules.
17614
17615 The main object types within the subsystem have been renamed to
17616 clarify their purpose:
17617
17618 ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
17619 ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
17620 ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
17621
17622 NOTE: no changes to the initialization sequence are included in
17623 this label.
17624
17625 -------------------------------------------
17626 Summary of changes for this label: 08_23_00
17627
17628 Fixed problem where TerminateControlMethod was being called
17629 multiple times per method
17630
17631 Fixed debugger problem where single stepping caused a semaphore to
17632 be oversignalled
17633
17634 Improved performance through additional parse object caching -
17635 added ACPI_EXTENDED_OP type
17636
17637 -------------------------------------------
17638 Summary of changes for this label: 08_10_00
17639
17640 Parser/Interpreter integration: Eliminated the creation of
17641 complete parse trees for ACPI tables and control methods.
17642 Instead, parse subtrees are created and then deleted as soon as
17643 they are processed (Either entered into the namespace or executed
17644 by the interpreter). This reduces the use of dynamic kernel
17645 memory significantly. (about 10X)
17646
17647 Exception codes broken into classes and renumbered. Be sure to
17648 recompile all code that includes acexcep.h. Hopefully we won't
17649 have to renumber the codes again now that they are split into
17650 classes (environment, programmer, AML code, ACPI table, and
17651 internal).
17652
17653 Fixed some additional alignment issues in the Resource Manager
17654 subcomponent
17655
17656 Implemented semaphore tracking in the AcpiExec utility, and fixed
17657 several places where mutexes/semaphores were being unlocked
17658 without a corresponding lock operation. There are no known
17659 semaphore or mutex "leaks" at this time.
17660
17661 Fixed the case where an ASL Return operator is used to return an
17662 unnamed package.
17663
17664 -------------------------------------------
17665 Summary of changes for this label: 07_28_00
17666
17667 Fixed a problem with the way addresses were calculated in
17668 AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem
17669 manifested itself when a Field was created with WordAccess or
17670 DwordAccess, but the field unit defined within the Field was less
17671
17672 than a Word or Dword.
17673
17674 Fixed a problem in AmlDumpOperands() module's loop to pull
17675 operands off of the operand stack to display information. The
17676 problem manifested itself as a TLB error on 64-bit systems when
17677 accessing an operand stack with two or more operands.
17678
17679 Fixed a problem with the PCI configuration space handlers where
17680 context was getting confused between accesses. This required a
17681 change to the generic address space handler and address space
17682 setup definitions. Handlers now get both a global handler context
17683 (this is the one passed in by the user when executing
17684 AcpiInstallAddressSpaceHandler() and a specific region context
17685 that is unique to each region (For example, the _ADR, _SEG and
17686 _BBN values associated with a specific region). The generic
17687 function definitions have changed to the following:
17688
17689 typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
17690 UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
17691 *HandlerContext, // This used to be void *Context void
17692 *RegionContext); // This is an additional parameter
17693
17694 typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
17695 RegionHandle, UINT32 Function, void *HandlerContext, void
17696 **RegionContext); // This used to be **ReturnContext
17697
17698 -------------------------------------------
17699 Summary of changes for this label: 07_21_00
17700
17701 Major file consolidation and rename. All files within the
17702 interpreter have been renamed as well as most header files. This
17703 was done to prevent collisions with existing files in the host
17704 OSs -- filenames such as "config.h" and "global.h" seem to be
17705 quite common. The VC project files have been updated. All
17706 makefiles will require modification.
17707
17708 The parser/interpreter integration continues in Phase 5 with the
17709 implementation of a complete 2-pass parse (the AML is parsed
17710 twice) for each table; This avoids the construction of a huge
17711 parse tree and therefore reduces the amount of dynamic memory
17712 required by the subsystem. Greater use of the parse object cache
17713 means that performance is unaffected.
17714
17715 Many comments from the two code reviews have been rolled in.
17716
17717 The 64-bit alignment support is complete.
17718
17719 -------------------------------------------
17720 Summary of changes for this label: 06_30_00
17721
17722 With a nod and a tip of the hat to the technology of yesteryear,
17723 we've added support in the source code for 80 column output
17724 devices. The code is now mostly constrained to 80 columns or
17725 less to support environments and editors that 1) cannot display
17726 or print more than 80 characters on a single line, and 2) cannot
17727 disable line wrapping.
17728
17729 A major restructuring of the namespace data structure has been
17730 completed. The result is 1) cleaner and more
17731 understandable/maintainable code, and 2) a significant reduction
17732 in the dynamic memory requirement for each named ACPI object
17733 (almost half).
17734
17735 -------------------------------------------
17736 Summary of changes for this label: 06_23_00
17737
17738 Linux support has been added. In order to obtain approval to get
17739 the ACPI CA subsystem into the Linux kernel, we've had to make
17740 quite a few changes to the base subsystem that will affect all
17741 users (all the changes are generic and OS- independent). The
17742 effects of these global changes have been somewhat far reaching.
17743 Files have been merged and/or renamed and interfaces have been
17744 renamed. The major changes are described below.
17745
17746 Osd* interfaces renamed to AcpiOs* to eliminate namespace
17747 pollution/confusion within our target kernels. All OSD
17748 interfaces must be modified to match the new naming convention.
17749
17750 Files merged across the subsystem. A number of the smaller source
17751 and header files have been merged to reduce the file count and
17752 increase the density of the existing files. There are too many
17753 to list here. In general, makefiles that call out individual
17754 files will require rebuilding.
17755
17756 Interpreter files renamed. All interpreter files now have the
17757 prefix am* instead of ie* and is*.
17758
17759 Header files renamed: The acapi.h file is now acpixf.h. The
17760 acpiosd.h file is now acpiosxf.h. We are removing references to
17761 the acronym "API" since it is somewhat windowsy. The new name is
17762 "external interface" or xface or xf in the filenames.j
17763
17764
17765 All manifest constants have been forced to upper case (some were
17766 mixed case.) Also, the string "ACPI_" has been prepended to many
17767 (not all) of the constants, typedefs, and structs.
17768
17769 The globals "DebugLevel" and "DebugLayer" have been renamed
17770 "AcpiDbgLevel" and "AcpiDbgLayer" respectively.
17771
17772 All other globals within the subsystem are now prefixed with
17773 "AcpiGbl_" Internal procedures within the subsystem are now
17774 prefixed with "Acpi" (with only a few exceptions). The original
17775 two-letter abbreviation for the subcomponent remains after "Acpi"
17776 - for example, CmCallocate became AcpiCmCallocate.
17777
17778 Added a source code translation/conversion utility. Used to
17779 generate the Linux source code, it can be modified to generate
17780 other types of source as well. Can also be used to cleanup
17781 existing source by removing extraneous spaces and blank lines.
17782 Found in tools/acpisrc/*
17783
17784 OsdUnMapMemory was renamed to OsdUnmapMemory and then
17785 AcpiOsUnmapMemory. (UnMap became Unmap).
17786
17787 A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
17788 When set to one, this indicates that the caller wants to use the
17789
17790 semaphore as a mutex, not a counting semaphore. ACPI CA uses
17791 both types. However, implementers of this call may want to use
17792 different OS primitives depending on the type of semaphore
17793 requested. For example, some operating systems provide separate
17794
17795 "mutex" and "semaphore" interfaces - where the mutex interface is
17796 much faster because it doesn't have all the overhead of a full
17797 semaphore implementation.
17798
17799 Fixed a deadlock problem where a method that accesses the PCI
17800 address space can block forever if it is the first access to the
17801 space.
17802
17803 -------------------------------------------
17804 Summary of changes for this label: 06_02_00
17805
17806 Support for environments that cannot handle unaligned data
17807 accesses (e.g. firmware and OS environments devoid of alignment
17808 handler technology namely SAL/EFI and the IA-64 Linux kernel) has
17809 been added (via configurable macros) in these three areas: -
17810 Transfer of data from the raw AML byte stream is done via byte
17811 moves instead of word/dword/qword moves. - External objects are
17812 aligned within the user buffer, including package elements (sub-
17813 objects). - Conversion of name strings to UINT32 Acpi Names is now
17814 done byte-wise.
17815
17816 The Store operator was modified to mimic Microsoft's
17817 implementation when storing to a Buffer Field.
17818
17819 Added a check of the BM_STS bit before entering C3.
17820
17821 The methods subdirectory has been obsoleted and removed. A new
17822 file, cmeval.c subsumes the functionality.
17823
17824 A 16-bit (DOS) version of AcpiExec has been developed. The
17825 makefile is under the acpiexec directory.
17826