xref: /freebsd/sys/contrib/dev/acpica/changes.txt (revision 60fde7ce5d7bf5d94290720ea53db5701ab406a8)
1----------------------------------------
213 March 2018. Summary of changes for version 20180313:
3
4
51) ACPICA kernel-resident subsystem:
6
7Implemented various improvements to the GPE support:
8
91) Dispatch all active GPEs at initialization time so that no GPEs are
10lost.
112) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
12before devices are enumerated.
133) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
14IRQs are not lost.
154) Add parallel GPE handling to eliminate the possibility of dispatching
16the same GPE twice.
175) Dispatch any pending GPEs after enabling for the first time.
18
19AcpiGetObjectInfo - removed support for the _STA method. This was causing
20problems on some platforms.
21
22Added a new _OSI string, "Windows 2017.2".
23
24Cleaned up and simplified the module-level code support. These changes
25are in preparation for the eventual removal of the legacy MLC support
26(deferred execution), replaced by the new MLC architecture which executes
27the MLC as a table is loaded (DSDT/SSDTs).
28
29Changed a compile-time option to a runtime option. Changes the option to
30ignore ACPI table load-time package resolution errors into a runtime
31option. Used only for platforms that generate many AE_NOT_FOUND errors
32during boot. AcpiGbl_IgnorePackageResolutionErrors.
33
34Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
35ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
36compilation errors from unused variables (seen with some compilers).
37
38
392) iASL Compiler/Disassembler and Tools:
40
41ASLTS: parallelized execution in order to achieve an (approximately) 2X
42performance increase.
43
44ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
45error reporting.
46
47----------------------------------------
4809 February 2018. Summary of changes for version 20180209:
49
50
511) ACPICA kernel-resident subsystem:
52
53Completed the final integration of the recent changes to Package Object
54handling and the module-level AML code support. This allows forward
55references from individual package elements when the package object is
56declared from within module-level code blocks. Provides compatibility
57with other ACPI implementations.
58
59The new architecture for the AML module-level code has been completed and
60is now the default for the ACPICA code. This new architecture executes
61the module-level code in-line as the ACPI table is loaded/parsed instead
62of the previous architecture which deferred this code until after the
63table was fully loaded. This solves some ASL code ordering issues and
64provides compatibility with other ACPI implementations. At this time,
65there is an option to fallback to the earlier architecture, but this
66support is deprecated and is planned to be completely removed later this
67year.
68
69Added a compile-time option to ignore AE_NOT_FOUND exceptions during
70resolution of named reference elements within Package objects. Although
71this is potentially a serious problem, it can generate a lot of
72noise/errors on platforms whose firmware carries around a bunch of unused
73Package objects. To disable these errors, define
74ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
75errors are always reported for ACPICA applications such as AcpiExec.
76
77Fixed a regression related to the explicit type-conversion AML operators
78(ToXXXX). The regression was introduced early in 2017 but was not seen
79until recently because these operators are not fully supported by other
80ACPI implementations and are thus rarely used by firmware developers. The
81operators are defined by the ACPI specification to not implement the
82"implicit result object conversion". The regression incorrectly
83introduced this object conversion for the following explicit conversion
84operators:
85    ToInteger
86    ToString
87    ToBuffer
88    ToDecimalString
89    ToHexString
90    ToBCD
91    FromBCD
92
93
942) iASL Compiler/Disassembler and Tools:
95
96iASL: Fixed a problem with the compiler constant folding feature as
97related to the ToXXXX explicit conversion operators. These operators do
98not support the "implicit result object conversion" by definition. Thus,
99ASL expressions that use these operators cannot be folded to a simple
100Store operator because Store implements the implicit conversion. This
101change uses the CopyObject operator for the ToXXXX operator folding
102instead. CopyObject is defined to not implement implicit result
103conversions and is thus appropriate for folding the ToXXXX operators.
104
105iASL: Changed the severity of an error condition to a simple warning for
106the case where a symbol is declared both locally and as an external
107symbol. This accommodates existing ASL code.
108
109AcpiExec: The -ep option to enable the new architecture for module-level
110code has been removed. It is replaced by the -dp option which instead has
111the opposite effect: it disables the new architecture (the default) and
112enables the legacy architecture. When the legacy code is removed in the
113future, the -dp option will be removed also.
114
115----------------------------------------
11605 January 2018. Summary of changes for version 20180105:
117
118
1191) ACPICA kernel-resident subsystem:
120
121Updated all copyrights to 2018. This affects all source code modules.
122
123Fixed a possible build error caused by an unresolved reference to the
124AcpiUtSafeStrncpy function.
125
126Removed NULL pointer arithmetic in the various pointer manipulation
127macros. All "(void *) NULL" constructs are converted to "(void *) 0".
128This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
129
130Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
131Mittal.
132
133
1342) iASL Compiler/Disassembler and Tools:
135
136ASLTS: Updated all copyrights to 2018.
137
138Tools: Updated all signon copyrights to 2018.
139
140AcpiXtract: Fixed a regression related to ACPI table signatures where the
141signature was truncated to 3 characters (instead of 4).
142
143AcpiExec: Restore the original terminal mode after the use of the -v and
144-vd options.
145
146ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
147
148----------------------------------------
14914 December 2017. Summary of changes for version 20171214:
150
151
1521) ACPICA kernel-resident subsystem:
153
154Fixed a regression in the external (public) AcpiEvaluateObjectTyped
155interface where the optional "pathname" argument had inadvertently become
156a required argument returning an error if omitted (NULL pointer
157argument).
158
159Fixed two possible memory leaks related to the recently developed "late
160resolution" of reference objects within ASL Package Object definitions.
161
162Added two recently defined _OSI strings: "Windows 2016" and "Windows
1632017". Mario Limonciello.
164
165Implemented and deployed a safer version of the C library function
166strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
167creation of unterminated strings as a possible result of a standard
168strncpy.
169
170Cleaned up and restructured the global variable file (acglobal.h). There
171are many changes, but no functional changes.
172
173
1742) iASL Compiler/Disassembler and Tools:
175
176iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
177optional OemData field at the end of the table was incorrectly required
178for proper compilation. It is now correctly an optional field.
179
180ASLTS: The entire suite was converted from standard ASL to the ASL+
181language, using the ASL-to-ASL+ converter which is integrated into the
182iASL compiler. A binary compare of all output files has verified the
183correctness of the conversion.
184
185iASL: Fixed the source code build for platforms where "char" is unsigned.
186This affected the iASL lexer only. Jung-uk Kim.
187
188----------------------------------------
18910 November 2017. Summary of changes for version 20171110:
190
191
1921) ACPICA kernel-resident subsystem:
193
194This release implements full support for ACPI 6.2A:
195    NFIT - Added a new subtable, "Platform Capabilities Structure"
196No other changes to ACPICA were required, since ACPI 6.2A is primarily an
197errata release of the specification.
198
199Other ACPI table changes:
200    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
201    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
202Linton
203
204Utilities: Modified the string/integer conversion functions to use
205internal 64-bit divide support instead of a native divide. On 32-bit
206platforms, a 64-bit divide typically requires a library function which
207may not be present in the build (kernel or otherwise).
208
209Implemented a targeted error message for timeouts returned from the
210Embedded Controller device driver. This is seen frequently enough to
211special-case an AE_TIME returned from an EC operation region access:
212    "Timeout from EC hardware or EC device driver"
213
214Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
215runtime error messages have the identical prefix.
216
217
2182) iASL Compiler/Disassembler and Tools:
219
220AcpiXtract: Fixed a problem with table header detection within the
221acpidump file. Processing a table could be ended early if a 0x40 (@)
222appears in the original binary table, resulting in the @ symbol appearing
223in the decoded ASCII field at the end of the acpidump text line. The
224symbol caused acpixtract to incorrectly think it had reached the end of
225the current table and the beginning of a new table.
226
227AcpiXtract: Added an option (-f) to ignore some errors during table
228extraction. This initial implementation ignores non-ASCII and non-
229printable characters found in the acpidump text file.
230
231TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
232for ASLTS. This feature is used to track memory allocations from
233different memory caches within the ACPICA code. At the end of an ASLTS
234run, these memory statistics are recorded and stored in a log file.
235
236Debugger (user-space version): Implemented a simple "Background" command.
237Creates a new thread to execute a control method in the background, while
238control returns to the debugger prompt to allow additional commands.
239    Syntax: Background <Namepath> [Arguments]
240
241----------------------------------------
24229 September 2017. Summary of changes for version 20170929:
243
244
2451) ACPICA kernel-resident subsystem:
246
247Redesigned and implemented an improved ASL While() loop timeout
248mechanism. This mechanism is used to prevent infinite loops in the kernel
249AML interpreter caused by either non-responsive hardware or incorrect AML
250code. The new implementation uses AcpiOsGetTimer instead of a simple
251maximum loop count, and is thus more accurate and constant across
252different machines. The default timeout is currently 30 seconds, but this
253may be adjusted later.
254
255Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
256better reflect the new implementation of the loop timeout mechanism.
257
258Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
259and to fix an off-by-one error. Jung-uk Kim.
260
261Fixed an EFI build problem by updating the makefiles to for a new file
262that was added, utstrsuppt.c
263
264
2652) iASL Compiler/Disassembler and Tools:
266
267Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
268includes support in the table disassembler, compiler, and template
269generator.
270
271iASL: Added an exception for an illegal type of recursive method
272invocation. If a method creates named objects, the first recursive call
273will fail at runtime. This change adds an error detection at compile time
274to catch the problem up front. Note: Marking such a method as
275"serialized" will not help with this problem, because the same thread can
276acquire the method mutex more than once. Example compiler and runtime
277output:
278
279    Method (MTH1)
280    {
281        Name (INT1, 1)
282        MTH1 ()
283    }
284
285    dsdt.asl     22: MTH1 ()
286    Error    6152 -  ^ Illegal recursive call to method
287                       that creates named objects (MTH1)
288
289Previous runtime exception:
290    ACPI Error: [INT1] Namespace lookup failure,
291    AE_ALREADY_EXISTS (20170831/dswload2-465)
292
293iASL: Updated support for External() opcodes to improve namespace
294management and error detection. These changes are related to issues seen
295with multiple-segment namespace pathnames within External declarations,
296such as below:
297
298    External(\_SB.PCI0.GFX0, DeviceObj)
299    External(\_SB.PCI0.GFX0.ALSI)
300
301iASL: Implemented support for multi-line error/warning messages. This
302enables more detailed and helpful error messages as below, from the
303initial deployment for the duplicate names error:
304
305    DSDT.iiii   1692:       Device(PEG2) {
306    Error    6074 -                  ^ Name already exists in scope
307(PEG2)
308
309        Original name creation/declaration below:
310        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
311
312AcpiXtract: Added additional flexibility to support differing input hex
313dump formats. Specifically, hex dumps that contain partial disassembly
314and/or comments within the ACPI table data definition. There exist some
315dump utilities seen in the field that create this type of hex dump (such
316as Simics). For example:
317
318    DSDT @ 0xdfffd0c0 (10999 bytes)
319        Signature DSDT
320        Length 10999
321        Revision 1
322        Checksum 0xf3 (Ok)
323        OEM_ID BXPC
324        OEM_table_id BXDSDT
325        OEM_revision 1
326        Creator_id 1280593481
327        Creator_revision 537399345
328      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
329      ...
330      2af0: 5f 4c 30 46 00 a4 01
331
332Test suite: Miscellaneous changes/fixes:
333    More cleanup and simplification of makefiles
334    Continue compilation of test cases after a compile failure
335    Do not perform binary compare unless both files actually exist
336
337iASL: Performed some code/module restructuring. Moved all memory
338allocation functions to new modules. Two new files, aslallocate.c and
339aslcache.c
340
341----------------------------------------
34231 August 2017. Summary of changes for version 20170831:
343
344
3451) ACPICA kernel-resident subsystem:
346
347Implemented internal support for full 64-bit addresses that appear in all
348Generic Address Structure (GAS) structures. Previously, only the lower 32
349bits were used. Affects the use of GAS structures in the FADT and other
350tables, as well as the GAS structures passed to the AcpiRead and
351AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
352
353Added header support for the PDTT ACPI table (Processor Debug Trigger
354Table). Full support in the iASL Data Table Compiler and disassembler is
355forthcoming.
356
357
3582) iASL Compiler/Disassembler and Tools:
359
360iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
361Properties Topology Table) where a flag bit was specified in the wrong
362bit position ("Line Size Valid", bit 6).
363
364iASL: Implemented support for Octal integer constants as defined by the
365ASL language grammar, per the ACPI specification. Any integer constant
366that starts with a zero is an octal constant. For example,
367    Store (037777, Local0) /* Octal constant */
368    Store (0x3FFF, Local0) /* Hex equivalent */
369    Store (16383,  Local0) /* Decimal equivalent */
370
371iASL: Improved overflow detection for 64-bit string conversions during
372compilation of integer constants. "Overflow" in this case means a string
373that represents an integer that is too large to fit into a 64-bit value.
374Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
375the low-order 32 bits with a warning, as previously implemented. Several
376new exceptions are defined that indicate a 64-bit overflow, as well as
377the base (radix) that was used during the attempted conversion. Examples:
378    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
379    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
380    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
381
382iASL: Added a warning for the case where a ResourceTemplate is declared
383with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
384this case, the resulting template is created with a single END_TAG
385descriptor, which is essentially useless.
386
387iASL: Expanded the -vw option (ignore specific warnings/remarks) to
388include compilation error codes as well.
389
390----------------------------------------
39128 July 2017. Summary of changes for version 20170728:
392
393
3941) ACPICA kernel-resident subsystem:
395
396Fixed a regression seen with small resource descriptors that could cause
397an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
398
399AML interpreter: Implemented a new feature that allows forward references
400from individual named references within package objects that are
401contained within blocks of "module-level code". This provides
402compatibility with other ACPI implementations and supports existing
403firmware that depends on this feature. Example:
404
405    Name (ABCD, 1)
406    If (ABCD)                       /* An If() at module-level */
407    {
408        Name (PKG1, Package()
409        {
410            INT1                    /* Forward reference to object INT1
411*/
412        })
413        Name (INT1, 0x1234)
414    }
415
416AML Interpreter: Fixed a problem with the Alias() operator where aliases
417to some ASL objects were not handled properly. Objects affected are:
418Mutex, Event, and OperationRegion.
419
420AML Debugger: Enhanced to properly handle AML Alias objects. These
421objects have one level of indirection which was not fully supported by
422the debugger.
423
424Table Manager: Added support to detect and ignore duplicate SSDTs within
425the XSDT/RSDT. This error in the XSDT has been seen in the field.
426
427EFI and EDK2 support:
428    Enabled /WX flag for MSVC builds
429    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
430    Added local support for 64-bit multiply and shift operations
431    Added support to compile acpidump.efi on Windows
432    Added OSL function stubs for interfaces not used under EFI
433
434Added additional support for the _DMA predefined name. _DMA returns a
435buffer containing a resource template. This change add support within the
436resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
437resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
438
439
4402) iASL Compiler/Disassembler and Tools:
441
442iASL: Fixed a problem where the internal input line buffer(s) could
443overflow if there are very long lines in the input ASL source code file.
444Implemented buffer management that automatically increases the size of
445the buffers as necessary.
446
447iASL: Added an option (-vx) to "expect" particular remarks, warnings and
448errors. If the specified exception is not raised during compilation, the
449compiler emits an error. This is intended to support the ASL test suite,
450but may be useful in other contexts.
451
452iASL: Implemented a new predefined macro, __METHOD__, which returns a
453string containing the name of the current control method that is being
454compiled.
455
456iASL: Implemented debugger and table compiler support for the SDEI ACPI
457table (Software Delegated Exception Interface). James Morse
458<james.morse@arm.com>
459
460Unix/Linux makefiles: Added an option to disable compile optimizations.
461The disable occurs when the NOOPT flag is set to TRUE.
462theracermaster@gmail.com
463
464Acpidump: Added support for multiple DSDT and FACS tables. This can occur
465when there are different tables for 32-bit versus 64-bit.
466
467Enhanced error reporting for the ASL test suite (ASLTS) by removing
468unnecessary/verbose text, and emit the actual line number where an error
469has occurred. These changes are intended to improve the usefulness of the
470test suite.
471
472----------------------------------------
47329 June 2017. Summary of changes for version 20170629:
474
475
4761) ACPICA kernel-resident subsystem:
477
478Tables: Implemented a deferred ACPI table verification. This is useful
479for operating systems where the tables cannot be verified in the early
480initialization stage due to early memory mapping limitations on some
481architectures. Lv Zheng.
482
483Tables: Removed the signature validation for dynamically loaded tables.
484Provides compatibility with other ACPI implementations. Previously, only
485SSDT tables were allowed, as per the ACPI specification. Now, any table
486signature can be used via the Load() operator. Lv Zheng.
487
488Tables: Fixed several mutex issues that could cause errors during table
489acquisition. Lv Zheng.
490
491Tables: Fixed a problem where an ACPI warning could be generated if a
492null pointer was passed to the AcpiPutTable interface. Lv Zheng.
493
494Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
495AcpiPutTable interfaces. This applies to the "late stage" table loading
496when the use of AcpiPutTable is no longer required (since the system
497memory manager is fully running and available). Lv Zheng.
498
499Fixed/Reverted a regression during processing of resource descriptors
500that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
501exception in this case.
502
503Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
504I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
505
506Interpreter: Fixed a possible fault if an Alias operator with an invalid
507or duplicate target is encountered during Alias creation in
508AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
509
510Added an option to use designated initializers for function pointers.
511Kees Cook <keescook@google.com>
512
513
5142) iASL Compiler/Disassembler and Tools:
515
516iASL: Allow compilation of External declarations with target pathnames
517that refer to existing named objects within the table. Erik Schmauss.
518
519iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
520FieldUnit name also is declared via External in the same table. Erik
521Schmauss.
522
523iASL: Allow existing scope names within pathnames used in External
524statements. For example:
525    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
526    Device (ABCD)
527
528iASL: IORT ACPI table: Implemented changes required to decode the new
529Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
530compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
531
532Disassembler: Don't abort disassembly on errors from External()
533statements. Erik Schmauss.
534
535Disassembler: fixed a possible fault when one of the Create*Field
536operators references a Resource Template. ACPICA Bugzilla 1396.
537
538iASL: In the source code, resolved some naming inconsistences across the
539parsing support. Fixes confusion between "Parse Op" and "Parse Node".
540Adds a new file, aslparseop.c
541
542----------------------------------------
54331 May 2017. Summary of changes for version 20170531:
544
545
5460) ACPI 6.2 support:
547
548The ACPI specification version 6.2 has been released and is available at
549http://uefi.org/specifications
550
551This version of ACPICA fully supports the ACPI 6.2 specification. Changes
552are summarized below.
553
554New ACPI tables (Table Compiler/Disassembler/Templates):
555    HMAT (Heterogeneous Memory Attributes Table)
556    WSMT (Windows SMM Security Mitigation Table)
557    PPTT (Processor Properties Topology Table)
558
559New subtables for existing ACPI tables:
560    HEST (New subtable, Arch-deferred machine check)
561    SRAT (New subtable, Arch-specific affinity structure)
562    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
563
564Simple updates for existing ACPI tables:
565    BGRT (two new flag bits)
566    HEST (New bit defined for several subtables, GHES_ASSIST)
567
568New Resource Descriptors and Resource macros (Compiler/Disassembler):
569    PinConfig()
570    PinFunction()
571    PinGroup()
572    PinGroupConfig()
573    PinGroupFunction()
574    New type for hardware error notification (section 18.3.2.9)
575
576New predefined names/methods (Compiler/Interpreter):
577    _HMA (Heterogeneous Memory Attributes)
578    _LSI (Label Storage Information)
579    _LSR (Label Storage Read)
580    _LSW (Label Storage Write)
581
582ASL grammar/macro changes (Compiler):
583    For() ASL macro, implemented with the AML while operator
584    Extensions to Concatenate operator
585    Support for multiple definition blocks in same ASL file
586    Clarification for Buffer operator
587    Allow executable AML code underneath all scopes (Devices, etc.)
588    Clarification/change for the _OSI return value
589    ASL grammar update for reference operators
590    Allow a zero-length string for AML filename in DefinitionBlock
591
592Miscellaneous:
593    New device object notification value
594    Remove a notify value (0x0C) for graceful shutdown
595    New UUIDs for processor/cache properties and
596        physical package property
597    New _HID, ACPI0014 (Wireless Power Calibration Device)
598
599
6001) ACPICA kernel-resident subsystem:
601
602Added support to disable ACPI events on hardware-reduced platforms.
603Eliminates error messages of the form "Could not enable fixed event". Lv
604Zheng
605
606Fixed a problem using Device/Thermal objects with the ObjectType and
607DerefOf ASL operators. This support had not been fully/properly
608implemented.
609
610Fixed a problem where if a Buffer object containing a resource template
611was longer than the actual resource template, an error was generated --
612even though the AML is legal. This case has been seen in the field.
613
614Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
615The values for DUAL_PIC and MULTIPLE_APIC were reversed.
616
617Added header file changes for the TPM2 ACPI table. Update to new version
618of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
619
620Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
621These interfaces are intended to be used only in conjunction with the
622predefined _DLM method (Device Lock Method). "This object appears in a
623device scope when AML access to the device must be synchronized with the
624OS environment".
625
626Example Code and Data Size: These are the sizes for the OS-independent
627acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
628debug version of the code includes the debug output trace mechanism and
629has a much larger code and data size.
630
631  Current Release:
632    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
633    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
634  Previous Release:
635    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
636    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
637
638
6392) iASL Compiler/Disassembler and Tools:
640
641iASL: Fixed a problem where an External() declaration could not refer to
642a Field Unit. Erik Schmauss.
643
644Disassembler: Improved support for the Switch/Case operators. This
645feature will disassemble AML code back to the original Switch operators
646when possible, instead of an If..Else sequence. David Box
647
648iASL and disassembler: Improved the handling of multiple extraneous
649parentheses for both ASL input and disassembled ASL output.
650
651Improved the behavior of the iASL compiler and disassembler to detect
652improper use of external declarations
653
654Disassembler: Now aborts immediately upon detection of an unknown AML
655opcode. The AML parser has no real way to recover from this, and can
656result in the creation of an ill-formed parse tree that causes errors
657later during the disassembly.
658
659All tools: Fixed a problem where the Unix application OSL did not handle
660control-c correctly. For example, a control-c could incorrectly wake the
661debugger.
662
663AcpiExec: Improved the Control-C handling and added a handler for
664segmentation faults (SIGSEGV). Supports both Windows and Unix-like
665environments.
666
667Reduced the verbosity of the generic unix makefiles. Previously, each
668compilation displayed the full set of compiler options. This has been
669eliminated as the options are easily inspected within the makefiles. Each
670compilation now results in a single line of output.
671
672----------------------------------------
67303 March 2017. Summary of changes for version 20170303:
674
675
6760) ACPICA licensing:
677
678The licensing information at the start of each source code module has
679been updated. In addition to the Intel license, the dual GPLv2/BSD
680license has been added for completeness. Now, a single version of the
681source code should be suitable for all ACPICA customers. This is the
682major change for this release since it affects all source code modules.
683
684
6851) ACPICA kernel-resident subsystem:
686
687Fixed two issues with the common asltypes.h header that could cause
688problems in some environments: (Kim Jung-uk)
689    Removed typedef for YY_BUFFER_STATE ?
690       Fixes an error with earlier versions of Flex.
691    Removed use of FILE typedef (which is only defined in stdio.h)
692
693
6942) iASL Compiler/Disassembler and Tools:
695
696Disassembler: fixed a regression introduced in 20170224. A fix for a
697memory leak related to resource descriptor tags (names) could fault when
698the disassembler was generated with 64-bit compilers.
699
700The ASLTS test suite has been updated to implement a new testing
701architecture. During generation of the suite from ASL source, both the
702ASL and ASL+ compilers are now validated, as well as the disassembler
703itself (Erik Schmauss). The architecture executes as follows:
704
705    For every ASL source module:
706        Compile (legacy ASL compilation)
707        Disassemble the resulting AML to ASL+ source code
708        Compile the new ASL+ module
709        Perform a binary compare on the legacy AML and the new ASL+ AML
710    The ASLTS suite then executes normally using the AML binaries.
711
712----------------------------------------
71324 February 2017. Summary of changes for version 20170224:
714
715
7161) ACPICA kernel-resident subsystem:
717
718Interpreter: Fixed two issues with the control method return value auto-
719repair feature, where an attempt to double-delete an internal object
720could result in an ACPICA warning (for _CID repair and others). No fault
721occurs, however, because the attempted deletion (actually a release to an
722internal cache) is detected and ignored via object poisoning.
723
724Debugger: Fixed an AML interpreter mutex issue during the single stepping
725of control methods. If certain debugger commands are executed during
726stepping, a mutex aquire/release error could occur. Lv Zheng.
727
728Fixed some issues generating ACPICA with the Intel C compiler by
729restoring the original behavior and compiler-specific include file in
730acenv.h. Lv Zheng.
731
732Example Code and Data Size: These are the sizes for the OS-independent
733acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
734debug version of the code includes the debug output trace mechanism and
735has a much larger code and data size.
736
737  Current Release:
738    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
739    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
740  Previous Release:
741    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
742    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
743
744
7452) iASL Compiler/Disassembler and Tools:
746
747iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
748tool has been designed, implemented, and included in this release. The
749key feature of this utility is that the original comments within the
750input ASL file are preserved during the conversion process, and included
751within the converted ASL+ file -- thus creating a transparent conversion
752of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
753
754    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
755converted code
756
757iASL/Disassembler: Improved the detection and correct disassembly of
758Switch/Case operators. This feature detects sequences of if/elseif/else
759operators that originated from ASL Switch/Case/Default operators and
760emits the original operators. David Box.
761
762iASL: Improved the IORT ACPI table support in the following areas. Lv
763Zheng:
764    Clear MappingOffset if the MappingCount is zero.
765    Fix the disassembly of the SMMU GSU interrupt offset.
766    Update the template file for the IORT table.
767
768Disassembler: Enhanced the detection and disassembly of resource
769template/descriptor within a Buffer object. An EndTag descriptor is now
770required to have a zero second byte, since all known ASL compilers emit
771this. This helps eliminate incorrect decisions when a buffer is
772disassembled (false positives on resource templates).
773
774----------------------------------------
77519 January 2017. Summary of changes for version 20170119:
776
777
7781) General ACPICA software:
779
780Entire source code base: Added the 2017 copyright to all source code
781legal/licensing module headers and utility/tool signons. This includes
782the standard Linux dual-license header. This affects virtually every file
783in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
784the ACPICA test suite.
785
786
7872) iASL Compiler/Disassembler and Tools:
788
789iASL: Removed/fixed an inadvertent remark when a method argument
790containing a reference is used as a target operand within the method (and
791never used as a simple argument), as in the example below. Jeffrey Hugo.
792
793    dsdt.asl   1507:    Store(0x1, Arg0)
794    Remark   2146 -                ^ Method Argument is never used (Arg0)
795
796All tools: Removed the bit width of the compiler that generated the tool
797from the common signon for all user space tools. This proved to be
798confusing and unnecessary. This includes similar removal of HARDWARE_NAME
799from the generic makefiles (Thomas Petazzoni). Example below.
800
801    Old:
802    ASL+ Optimizing Compiler version 20170119-32
803    ASL+ Optimizing Compiler version 20170119-64
804
805    New:
806    ASL+ Optimizing Compiler version 20170119
807
808----------------------------------------
80922 December 2016. Summary of changes for version 20161222:
810
811
8121) ACPICA kernel-resident subsystem:
813
814AML Debugger: Implemented a new mechanism to simplify and enhance
815debugger integration into all environments, including kernel debuggers
816and user-space utilities, as well as remote debug services. This
817mechanism essentially consists of new OSL interfaces to support debugger
818initialization/termination, as well as wait/notify interfaces to perform
819the debugger handshake with the host. Lv Zheng.
820
821    New OSL interfaces:
822        AcpiOsInitializeDebugger (void)
823        AcpiOsTerminateDebugger (void)
824        AcpiOsWaitCommandReady (void)
825        AcpiOsNotifyCommandComplete (void)
826
827    New OS services layer:
828        osgendbg.c -- Example implementation, and used for AcpiExec
829
830Update for Generic Address Space (GAS) support: Although the AccessWidth
831and/or BitOffset fields of the GAS are not often used, this change now
832fully supports these fields. This affects the internal support for FADT
833registers, registers in other ACPI data tables, and the AcpiRead and
834AcpiWrite public interfaces. Lv Zheng.
835
836Sleep support: In order to simplify integration of ACPI sleep for the
837various host operating systems, a new OSL interface has been introduced.
838AcpiOsEnterSleep allows the host to perform any required operations
839before the final write to the sleep control register(s) is performed by
840ACPICA. Lv Zheng.
841
842    New OSL interface:
843        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
844
845    Called from these internal interfaces:
846        AcpiHwLegacySleep
847        AcpiHwExtendedSleep
848
849EFI support: Added a very small EFI/ACPICA example application. Provides
850a simple demo for EFI integration, as well as assisting with resolution
851of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
852
853    source/tools/efihello/efihello.c
854
855Local C library: Implemented several new functions to enhance ACPICA
856portability, for environments where these clib functions are not
857available (such as EFI). Lv Zheng:
858    putchar
859    getchar
860    strpbrk
861    strtok
862    memmove
863
864Fixed a regression where occasionally a valid resource descriptor was
865incorrectly detected as invalid at runtime, and a
866AE_AML_NO_RESOURCE_END_TAG was returned.
867
868Fixed a problem with the recently implemented support that enables
869control method invocations as Target operands to many ASL operators.
870Warnings of this form: "Needed type [Reference], found [Processor]" were
871seen at runtime for some method invocations.
872
873Example Code and Data Size: These are the sizes for the OS-independent
874acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
875debug version of the code includes the debug output trace mechanism and
876has a much larger code and data size.
877
878  Current Release:
879    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
880    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
881  Previous Release:
882    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
883    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
884
885
8862) iASL Compiler/Disassembler and Tools:
887
888Disassembler: Enhanced output by adding the capability to detect and
889disassemble ASL Switch/Case statements back to the original ASL source
890code instead of if/else blocks. David Box.
891
892AcpiHelp: Split a large file into separate files based upon
893functionality/purpose. New files are:
894    ahaml.c
895    ahasl.c
896
897----------------------------------------
89817 November 2016. Summary of changes for version 20161117:
899
900
9011) ACPICA kernel-resident subsystem:
902
903Table Manager: Fixed a regression introduced in 20160729, "FADT support
904cleanup". This was an attempt to remove all references in the source to
905the FADT version 2, which never was a legal version number. It was
906skipped because it was an early version of 64-bit support that was
907eventually abandoned for the current 64-bit support.
908
909Interpreter: Fixed a problem where runtime implicit conversion was
910incorrectly disabled for the ASL operators below. This brings the
911behavior into compliance with the ACPI specification:
912    FromBCD
913    ToBCD
914    ToDecimalString
915    ToHexString
916    ToInteger
917    ToBuffer
918
919Table Manager: Added a new public interface, AcpiPutTable, used to
920release and free an ACPI table returned by AcpiGetTable and related
921interfaces. Lv Zheng.
922
923Example Code and Data Size: These are the sizes for the OS-independent
924acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
925debug version of the code includes the debug output trace mechanism and
926has a much larger code and data size.
927
928  Current Release:
929    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
930    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
931  Previous Release:
932    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
933    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
934
935
9362) iASL Compiler/Disassembler and Tools:
937
938Disassembler: Fixed a regression for disassembly of Resource Template.
939Detection of templates in the AML stream missed some types of templates.
940
941iASL: Fixed a problem where an Access Size error was returned for the PCC
942address space when the AccessSize of the GAS register is greater than a
943DWORD. Hoan Tran.
944
945iASL: Implemented several grammar changes for the operators below. These
946changes are slated for the next version of the ACPI specification:
947    RefOf        - Disallow method invocation as an operand
948    CondRefOf    - Disallow method invocation as an operand
949    DerefOf      - Disallow operands that use the result from operators
950that
951                   do not return a reference (Changed TermArg to
952SuperName).
953
954iASL: Control method invocations are now allowed for Target operands, as
955per the ACPI specification. Removed error for using a control method
956invocation as a Target operand.
957
958Disassembler: Improved detection of Resource Templates, Unicode, and
959Strings within Buffer objects. These subtypes do not contain a specific
960opcode to indicate the originating ASL code, and they must be detected by
961other means within the disassembler.
962
963iASL: Implemented an optimization improvement for 32-bit ACPI tables
964(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
965only after 64-bit to 32-bit truncation. A truncation warning message is
966still emitted, however.
967
968AcpiXtract: Implemented handling for both types of line terminators (LF
969or CR/LF) so that it can accept AcpiDump output files from any system.
970Peter Wu.
971
972AcpiBin: Added two new options for comparing AML files:
973    -a: compare and display ALL mismatches
974    -o: start compare at this offset into the second file
975
976----------------------------------------
97730 September 2016. Summary of changes for version 20160930:
978
979
9801) ACPICA kernel-resident subsystem:
981
982Fixed a regression in the internal AcpiTbFindTable function where a non
983AE_OK exception could inadvertently be returned even if the function did
984not fail. This problem affects the following operators:
985    DataTableRegion
986    LoadTable
987
988Fixed a regression in the LoadTable operator where a load to any
989namespace location other than the root no longer worked properly.
990
991Increased the maximum loop count value that will result in the
992AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
993prevent infinite loops within the AML interpreter and thus the host OS
994kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
9951,048,575).
996
997Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
998acpixf.h file. This allows hosts to easily configure the maximum loop
999count at runtime.
1000
1001Removed an illegal character in the strtoul64.c file. This character
1002caused errors with some C compilers.
1003
1004Example Code and Data Size: These are the sizes for the OS-independent
1005acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1006debug version of the code includes the debug output trace mechanism and
1007has a much larger code and data size.
1008
1009  Current Release:
1010    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
1011    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
1012  Previous Release:
1013    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
1014    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
1015
1016
10172) iASL Compiler/Disassembler and Tools:
1018
1019Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
1020the simpler ASL ElseIf keyword. During the conversion, a trailing If
1021block could be lost and missing from the disassembled output.
1022
1023iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
1024the missing rule caused a parse error when using the Index operator as an
1025operand to ObjectType. This construct now compiles properly. Example:
1026    ObjectType(PKG1[4]).
1027
1028iASL: Correctly handle unresolved symbols in the hardware map file (-lm
1029option). Previously, unresolved symbols could cause a protection fault.
1030Such symbols are now marked as unresolved in the map file.
1031
1032iASL: Implemented support to allow control method invocations as an
1033operand to the ASL DeRefOf operator. Example:
1034    DeRefOf(MTH1(Local0))
1035
1036Disassembler: Improved support for the ToPLD ASL macro. Detection of a
1037possible _PLD buffer now includes examination of both the normal buffer
1038length (16 or 20) as well as the surrounding AML package length.
1039
1040Disassembler: Fixed a problem with the decoding of complex expressions
1041within the Divide operator for ASL+. For the case where both the quotient
1042and remainder targets are specified, the entire statement cannot be
1043disassembled. Previously, the output incorrectly contained a mix of ASL-
1044and ASL+ operators. This mixed statement causes a syntax error when
1045compiled. Example:
1046    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
1047disassembled to:
1048    Divide (INT1 + 6, 128, RSLT, QUOT)
1049
1050iASL/Tools: Added support to process AML and non-AML ACPI tables
1051consistently. For the disassembler and AcpiExec, allow all types of ACPI
1052tables (AML and data tables). For the iASL -e option, allow only AML
1053tables (DSDT/SSDT).
1054
1055----------------------------------------
105631 August 2016. Summary of changes for version 20160831:
1057
1058
10591) ACPICA kernel-resident subsystem:
1060
1061Improve support for the so-called "module-level code", which is defined
1062to be math, logical and control AML opcodes that appear outside of any
1063control method. This change improves the support by adding more opcodes
1064that can be executed in the manner. Some other issues have been solved,
1065and the ASL grammar changes to support such code under all scope
1066operators (Device, etc.) are complete. Lv Zheng.
1067
1068UEFI support: these OSL functions have been implemented. This is an
1069additional step toward supporting the AcpiExec utility natively (with
1070full hardware access) under UEFI. Marcelo Ferreira.
1071    AcpiOsReadPciConfiguration
1072    AcpiOsWritePciConfiguration
1073
1074Fixed a possible mutex error during control method auto-serialization. Lv
1075Zheng.
1076
1077Updated support for the Generic Address Structure by fully implementing
1078all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
1079Zheng.
1080
1081Updated the return value for the internal _OSI method. Instead of
10820xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
1083for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
1084implementations, and will be reflected and clarified in the next version
1085of the ACPI specification.
1086
1087Implemented two new table events that can be passed to an ACPICA table
1088handler. These events are used to indicate a table installation or
1089uninstallation. These events are used in addition to existed table load
1090and unload events. Lv Zheng.
1091
1092Implemented a cleanup for all internal string-to-integer conversions.
1093Consolidate multiple versions of this functionality and limit possible
1094bases to either 10 or 16 to simplify the code. Adds a new file,
1095utstrtoul64.
1096
1097Cleanup the inclusion order of the various compiler-specific headers.
1098This simplifies build configuration management. The compiler-specific
1099headers are now split out from the host-specific headers. Lv Zheng.
1100
1101Example Code and Data Size: These are the sizes for the OS-independent
1102acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1103debug version of the code includes the debug output trace mechanism and
1104has a much larger code and data size.
1105
1106  Current Release:
1107    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
1108    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
1109
1110
11112) iASL Compiler/Disassembler and Tools:
1112
1113iASL/AcpiExec: Added a command line option to display the build date/time
1114of the tool (-vd). This can be useful to verify that the correct version
1115of the tools are being used.
1116
1117AML Debugger: Implemented a new subcommand ("execute predef") to execute
1118all predefined control methods and names within the current namespace.
1119This can be useful for debugging problems with ACPI tables and the ACPI
1120namespace.
1121
1122----------------------------------------
112329 July 2016. Summary of changes for version 20160729:
1124
1125
11261) ACPICA kernel-resident subsystem:
1127
1128Implemented basic UEFI support for the various ACPICA tools. This
1129includes:
11301) An OSL to implement the various AcpiOs* interfaces on UEFI.
11312) Support to obtain the ACPI tables on UEFI.
11323) Local implementation of required C library functions not available on
1133UEFI.
11344) A front-end (main) function for the tools for UEFI-related
1135initialization.
1136
1137The initial deployment of this support is the AcpiDump utility executing
1138as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
1139Current environments supported are Linux/Unix. MSVC generation is not
1140supported at this time. See the generate/efi/README file for build
1141instructions. Lv Zheng.
1142
1143Future plans include porting the AcpiExec utility to execute natively on
1144the platform with I/O and memory access. This will allow viewing/dump of
1145the platform namespace and native execution of ACPI control methods that
1146access the actual hardware. To fully implement this support, the OSL
1147functions below must be implemented with UEFI interfaces. Any community
1148help in the implementation of these functions would be appreciated:
1149    AcpiOsReadPort
1150    AcpiOsWritePort
1151    AcpiOsReadMemory
1152    AcpiOsWriteMemory
1153    AcpiOsReadPciConfiguration
1154    AcpiOsWritePciConfiguration
1155
1156Restructured and standardized the C library configuration for ACPICA,
1157resulting in the various configuration options below. This includes a
1158global restructuring of the compiler-dependent and platform-dependent
1159include files. These changes may affect the existing platform-dependent
1160configuration files on some hosts. Lv Zheng.
1161
1162The current C library configuration options appear below. For any issues,
1163it may be helpful to examine the existing compiler-dependent and
1164platform-dependent files as examples. Lv Zheng.
1165
11661) Linux kernel:
1167    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
1168library.
1169    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
11702) Unix/Windows/BSD applications:
1171    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
1172library.
1173    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
11743) UEFI applications:
1175    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
1176library.
1177    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
11784) UEFI applications (EDK2/StdLib):
1179    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
1180    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
1181
1182
1183AML interpreter: "module-level code" support. Allows for execution of so-
1184called "executable" AML code (math/logical operations, etc.) outside of
1185control methods not just at the module level (top level) but also within
1186any scope declared outside of a control method - Scope{}, Device{},
1187Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
1188
1189Simplified the configuration of the "maximum AML loops" global option by
1190adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
1191modified at runtime.
1192
1193
1194Example Code and Data Size: These are the sizes for the OS-independent
1195acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1196debug version of the code includes the debug output trace mechanism and
1197has a much larger code and data size.
1198
1199  Current Release:
1200    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
1201    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
1202
1203
12042) iASL Compiler/Disassembler and Tools:
1205
1206iASL: Add full support for the RASF ACPI table (RAS Features Table).
1207Includes disassembler, data table compiler, and header support.
1208
1209iASL Expand "module-level code" support. Allows for
1210compilation/disassembly of so-called "executable" AML code (math/logical
1211operations, etc.) outside of control methods not just at the module level
1212(top level) but also within any scope declared outside of a control
1213method - Scope{}, Device{}, Processor{}, PowerResource{}, and
1214ThermalZone{}.
1215
1216AcpiDump: Added support for dumping all SSDTs on newer versions of
1217Windows. These tables are now easily available -- SSDTs are not available
1218through the registry on older versions.
1219
1220----------------------------------------
122127 May 2016. Summary of changes for version 20160527:
1222
1223
12241) ACPICA kernel-resident subsystem:
1225
1226Temporarily reverted the new arbitrary bit length/alignment support in
1227AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
1228a number of regressions with the new code that need to be fully resolved
1229and tested before this support can be finally integrated into ACPICA.
1230Apologies for any inconveniences these issues may have caused.
1231
1232The ACPI message macros are not configurable (ACPI_MSG_ERROR,
1233ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
1234and ACPI_MSG_BIOS_WARNING). Lv Zheng.
1235
1236Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
1237option. Adds a new return macro, return_STR. Junk-uk Kim.
1238
1239Example Code and Data Size: These are the sizes for the OS-independent
1240acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1241debug version of the code includes the debug output trace mechanism and
1242has a much larger code and data size.
1243
1244  Current Release:
1245    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
1246    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
1247  Previous Release:
1248    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1249    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
1250
1251----------------------------------------
125222 April 2016. Summary of changes for version 20160422:
1253
12541) ACPICA kernel-resident subsystem:
1255
1256Fixed a regression in the GAS (generic address structure) arbitrary bit
1257support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
1258and incorrect return values. Lv Zheng. ACPICA BZ 1270.
1259
1260ACPI 6.0: Added support for new/renamed resource macros. One new argument
1261was added to each of these macros, and the original name has been
1262deprecated. The AML disassembler will always disassemble to the new
1263names. Support for the new macros was added to iASL, disassembler,
1264resource manager, and the acpihelp utility. ACPICA BZ 1274.
1265
1266    I2cSerialBus  -> I2cSerialBusV2
1267    SpiSerialBus  -> SpiSerialBusV2
1268    UartSerialBus -> UartSerialBusV2
1269
1270ACPI 6.0: Added support for a new integer field that was appended to the
1271package object returned by the _BIX method. This adds iASL compile-time
1272and AML runtime error checking. ACPICA BZ 1273.
1273
1274ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
1275Subspace Type2" (Headers, Disassembler, and data table compiler).
1276
1277Example Code and Data Size: These are the sizes for the OS-independent
1278acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1279debug version of the code includes the debug output trace mechanism and
1280has a much larger code and data size.
1281
1282  Current Release:
1283    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1284    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
1285  Previous Release:
1286    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
1287    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
1288
1289
12902) iASL Compiler/Disassembler and Tools:
1291
1292iASL: Implemented an ASL grammar extension to allow/enable executable
1293"module-level code" to be created and executed under the various
1294operators that create new scopes. This type of AML code is already
1295supported in all known AML interpreters, and the grammar change will
1296appear in the next version of the ACPI specification. Simplifies the
1297conditional runtime creation of named objects under these object types:
1298
1299    Device
1300    PowerResource
1301    Processor
1302    Scope
1303    ThermalZone
1304
1305iASL: Implemented a new ASL extension, a "For" loop macro to add greater
1306ease-of-use to the ASL language. The syntax is similar to the
1307corresponding C operator, and is implemented with the existing AML While
1308opcode -- thus requiring no changes to existing AML interpreters.
1309
1310    For (Initialize, Predicate, Update) {TermList}
1311
1312Grammar:
1313    ForTerm :=
1314        For (
1315            Initializer    // Nothing | TermArg => ComputationalData
1316            Predicate      // Nothing | TermArg => ComputationalData
1317            Update         // Nothing | TermArg => ComputationalData
1318        ) {TermList}
1319
1320
1321iASL: The _HID/_ADR detection and validation has been enhanced to search
1322under conditionals in order to allow these objects to be conditionally
1323created at runtime.
1324
1325iASL: Fixed several issues with the constant folding feature. The
1326improvement allows better detection and resolution of statements that can
1327be folded at compile time. ACPICA BZ 1266.
1328
1329iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
1330conversion to the ASL ElseIf operator where incorrect ASL code could be
1331generated.
1332
1333iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
1334sometimes an extra (and extraneous) set of parentheses were emitted for
1335some combinations of operators. Although this did not cause any problems
1336with recompilation of the disassembled code, it made the code more
1337difficult to read. David Box. ACPICA BZ 1231.
1338
1339iASL: Changed to ignore the unreferenced detection for predefined names
1340of resource descriptor elements, when the resource descriptor is
1341created/defined within a control method.
1342
1343iASL: Disassembler: Fix a possible fault with externally declared Buffer
1344objects.
1345
1346----------------------------------------
134718 March 2016. Summary of changes for version 20160318:
1348
13491) ACPICA kernel-resident subsystem:
1350
1351Added support for arbitrary bit lengths and bit offsets for registers
1352defined by the Generic Address Structure. Previously, only aligned bit
1353lengths of 8/16/32/64 were supported. This was sufficient for many years,
1354but recently some machines have been seen that require arbitrary bit-
1355level support. ACPICA BZ 1240. Lv Zheng.
1356
1357Fixed an issue where the \_SB._INI method sometimes must be evaluated
1358before any _REG methods are evaluated. Lv Zheng.
1359
1360Implemented several changes related to ACPI table support
1361(Headers/Disassembler/TableCompiler):
1362NFIT: For ACPI 6.1, updated to add some additional new fields and
1363constants.
1364FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
13656).
1366DMAR: Added new constants per the 10/2014 DMAR spec.
1367IORT: Added new subtable per the 10/2015 IORT spec.
1368HEST: For ACPI 6.1, added new constants and new subtable.
1369DBG2: Added new constants per the 12/2015 DBG2 spec.
1370FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
1371ACPICA BZ 1249.
1372ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
1373
1374Updated header support for the DMAR table to match the current version of
1375the related spec.
1376
1377Added extensions to the ASL Concatenate operator to allow any ACPI object
1378to be passed as an operand. Any object other than Integer/String/Buffer
1379simply returns a string containing the object type. This extends the
1380usefulness of the Printf macros. Previously, Concatenate would abort the
1381control method if a non-data object was encountered.
1382
1383ACPICA source code: Deployed the C "const" keyword across the source code
1384where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
1385
1386Example Code and Data Size: These are the sizes for the OS-independent
1387acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1388debug version of the code includes the debug output trace mechanism and
1389has a much larger code and data size.
1390
1391  Current Release:
1392    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
1393    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
1394  Previous Release:
1395    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
1396    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
1397
1398
13992) iASL Compiler/Disassembler and Tools:
1400
1401iASL/Disassembler: Improved the heuristic used to determine the number of
1402arguments for an externally defined control method (a method in another
1403table). Although this is an improvement, there is no deterministic way to
1404"guess" the number of method arguments. Only the ACPI 6.0 External opcode
1405will completely solve this problem as it is deployed (automatically) in
1406newer BIOS code.
1407
1408iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
1409statements that could cause errors when the disassembled file is
1410compiled. ACPICA BZ 1243. David Box.
1411
1412iASL: Fixed a regression caused by the merger of the two versions of the
1413local strtoul64. Because of a dependency on a global variable, strtoul64
1414could return an error for integers greater than a 32-bit value. ACPICA BZ
14151260.
1416
1417iASL: Fixed a regression where a fault could occur for an ASL Return
1418statement if it invokes a control method that is not resolved. ACPICA BZ
14191264.
1420
1421AcpiXtract: Improved input file validation: detection of binary files and
1422non-acpidump text files.
1423
1424----------------------------------------
142512 February 2016. Summary of changes for version 20160212:
1426
14271) ACPICA kernel-resident subsystem:
1428
1429Implemented full support for the ACPI 6.1 specification (released in
1430January). This version of the specification is available at:
1431http://www.uefi.org/specifications
1432
1433Only a relatively small number of changes were required in ACPICA to
1434support ACPI 6.1, in these areas:
1435- New predefined names
1436- New _HID values
1437- A new subtable for HEST
1438- A few other header changes for new values
1439
1440Ensure \_SB_._INI is executed before any _REG methods are executed. There
1441appears to be existing BIOS code that relies on this behavior. Lv Zheng.
1442
1443Reverted a change made in version 20151218 which enabled method
1444invocations to be targets of various ASL operators (SuperName and Target
1445grammar elements). While the new behavior is supported by the ACPI
1446specification, other AML interpreters do not support this behavior and
1447never will. The ACPI specification will be updated for ACPI 6.2 to remove
1448this support. Therefore, the change was reverted to the original ACPICA
1449behavior.
1450
1451ACPICA now supports the GCC 6 compiler.
1452
1453Current Release: (Note: build changes increased sizes)
1454    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
1455    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
1456Previous Release:
1457    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
1458    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
1459
1460
14612) iASL Compiler/Disassembler and Tools:
1462
1463Completed full support for the ACPI 6.0 External() AML opcode. The
1464compiler emits an external AML opcode for each ASL External statement.
1465This opcode is used by the disassembler to assist with the disassembly of
1466external control methods by specifying the required number of arguments
1467for the method. AML interpreters do not use this opcode. To ensure that
1468interpreters do not even see the opcode, a block of one or more external
1469opcodes is surrounded by an "If(0)" construct. As this feature becomes
1470commonly deployed in BIOS code, the ability of disassemblers to correctly
1471disassemble AML code will be greatly improved. David Box.
1472
1473iASL: Implemented support for an optional cross-reference output file.
1474The -lx option will create a the cross-reference file with the suffix
1475"xrf". Three different types of cross-reference are created in this file:
1476- List of object references made from within each control method
1477- Invocation (caller) list for each user-defined control method
1478- List of references to each non-method object in the namespace
1479
1480iASL: Method invocations as ASL Target operands are now disallowed and
1481flagged as errors in preparation for ACPI 6.2 (see the description of the
1482problem above).
1483
1484----------------------------------------
14858 January 2016. Summary of changes for version 20160108:
1486
14871) ACPICA kernel-resident subsystem:
1488
1489Updated all ACPICA copyrights and signons to 2016: Added the 2016
1490copyright to all source code module headers and utility/tool signons.
1491This includes the standard Linux dual-license header. This affects
1492virtually every file in the ACPICA core subsystem, iASL compiler, all
1493ACPICA utilities, and the ACPICA test suite.
1494
1495Fixed a regression introduced in version 20151218 concerning the
1496execution of so-called module-level ASL/AML code. Namespace objects
1497created under a module-level If() construct were not properly/fully
1498entered into the namespace and could cause an interpreter fault when
1499accessed.
1500
1501Example Code and Data Size: These are the sizes for the OS-independent
1502acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1503debug version of the code includes the debug output trace mechanism and
1504has a much larger code and data size.
1505
1506Current Release:
1507    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
1508    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
1509  Previous Release:
1510    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
1511    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
1512
1513
15142) iASL Compiler/Disassembler and Tools:
1515
1516Fixed a problem with the compilation of the GpioIo and GpioInt resource
1517descriptors. The _PIN field name was incorrectly defined to be an array
1518of 32-bit values, but the _PIN values are in fact 16 bits each. This
1519would cause incorrect bit width warnings when using Word (16-bit) fields
1520to access the descriptors.
1521
1522
1523----------------------------------------
152418 December 2015. Summary of changes for version 20151218:
1525
15261) ACPICA kernel-resident subsystem:
1527
1528Implemented per-AML-table execution of "module-level code" as individual
1529ACPI tables are loaded into the namespace during ACPICA initialization.
1530In other words, any module-level code within an AML table is executed
1531immediately after the table is loaded, instead of batched and executed
1532after all of the tables have been loaded. This provides compatibility
1533with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
1534David Box.
1535
1536To fully support the feature above, the default operation region handlers
1537for the SystemMemory, SystemIO, and PCI_Config address spaces are now
1538installed before any ACPI tables are loaded. This enables module-level
1539code to access these address spaces during the table load and module-
1540level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
1541Box.
1542
1543Implemented several changes to the internal _REG support in conjunction
1544with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
1545utilities for the changes above. Although these tools were changed, host
1546operating systems that simply use the default handlers for SystemMemory,
1547SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
1548
1549For example, in the code below, DEV1 is conditionally added to the
1550namespace by the DSDT via module-level code that accesses an operation
1551region. The SSDT references DEV1 via the Scope operator. DEV1 must be
1552created immediately after the DSDT is loaded in order for the SSDT to
1553successfully reference DEV1. Previously, this code would cause an
1554AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
1555fully supported by ACPICA.
1556
1557    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
1558    {
1559        OperationRegion (OPR1, SystemMemory, 0x400, 32)
1560        Field (OPR1, AnyAcc, NoLock, Preserve)
1561        {
1562            FLD1, 1
1563        }
1564        If (FLD1)
1565        {
1566            Device (\DEV1)
1567            {
1568            }
1569        }
1570    }
1571    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
1572    {
1573        External (\DEV1, DeviceObj)
1574        Scope (\DEV1)
1575        {
1576        }
1577    }
1578
1579Fixed an AML interpreter problem where control method invocations were
1580not handled correctly when the invocation was itself a SuperName argument
1581to another ASL operator. In these cases, the method was not invoked.
1582ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
1583argument:
1584    Store
1585    Acquire, Wait
1586    CondRefOf, RefOf
1587    Decrement, Increment
1588    Load, Unload
1589    Notify
1590    Signal, Release, Reset
1591    SizeOf
1592
1593Implemented automatic String-to-ObjectReference conversion support for
1594packages returned by predefined names (such as _DEP). A common BIOS error
1595is to add double quotes around an ObjectReference namepath, which turns
1596the reference into an unexpected string object. This support detects the
1597problem and corrects it before the package is returned to the caller that
1598invoked the method. Lv Zheng.
1599
1600Implemented extensions to the Concatenate operator. Concatenate now
1601accepts any type of object, it is not restricted to simply
1602Integer/String/Buffer. For objects other than these 3 basic data types,
1603the argument is treated as a string containing the name of the object
1604type. This expands the utility of Concatenate and the Printf/Fprintf
1605macros. ACPICA BZ 1222.
1606
1607Cleaned up the output of the ASL Debug object. The timer() value is now
1608optional and no longer emitted by default. Also, the basic data types of
1609Integer/String/Buffer are simply emitted as their values, without a data
1610type string -- since the data type is obvious from the output. ACPICA BZ
16111221.
1612
1613Example Code and Data Size: These are the sizes for the OS-independent
1614acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1615debug version of the code includes the debug output trace mechanism and
1616has a much larger code and data size.
1617
1618  Current Release:
1619    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
1620    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
1621  Previous Release:
1622    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
1623    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
1624
1625
16262) iASL Compiler/Disassembler and Tools:
1627
1628iASL: Fixed some issues with the ASL Include() operator. This operator
1629was incorrectly defined in the iASL parser rules, causing a new scope to
1630be opened for the code within the include file. This could lead to
1631several issues, including allowing ASL code that is technically illegal
1632and not supported by AML interpreters. Note, this does not affect the
1633related #include preprocessor operator. ACPICA BZ 1212.
1634
1635iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
1636operator is essentially an ASL macro since there is no AML opcode
1637associated with it. The code emitted by the iASL compiler for ElseIf is
1638an Else opcode followed immediately by an If opcode. The disassembler
1639will now emit an ElseIf if it finds an Else immediately followed by an
1640If. This simplifies the decoded ASL, especially for deeply nested
1641If..Else and large Switch constructs. Thus, the disassembled code more
1642closely follows the original source ASL. ACPICA BZ 1211. Example:
1643
1644    Old disassembly:
1645        Else
1646        {
1647            If (Arg0 == 0x02)
1648            {
1649                Local0 = 0x05
1650            }
1651        }
1652
1653    New disassembly:
1654        ElseIf (Arg0 == 0x02)
1655        {
1656            Local0 = 0x05
1657        }
1658
1659AcpiExec: Added support for the new module level code behavior and the
1660early region installation. This required a small change to the
1661initialization, since AcpiExec must install its own operation region
1662handlers.
1663
1664AcpiExec: Added support to make the debug object timer optional. Default
1665is timer disabled. This cleans up the debug object output -- the timer
1666data is rarely used.
1667
1668AcpiExec: Multiple ACPI tables are now loaded in the order that they
1669appear on the command line. This can be important when there are
1670interdependencies/references between the tables.
1671
1672iASL/Templates. Add support to generate template files with multiple
1673SSDTs within a single output file. Also added ommand line support to
1674specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
16751223, 1225.
1676
1677
1678----------------------------------------
167924 November 2015. Summary of changes for version 20151124:
1680
16811) ACPICA kernel-resident subsystem:
1682
1683Fixed a possible regression for a previous update to FADT handling. The
1684FADT no longer has a fixed table ID, causing some issues with code that
1685was hardwired to a specific ID. Lv Zheng.
1686
1687Fixed a problem where the method auto-serialization could interfere with
1688the current SyncLevel. This change makes the auto-serialization support
1689transparent to the SyncLevel support and management.
1690
1691Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
1692interface is intended for early access to the namespace during the
1693initial namespace device discovery walk. The _SUB method has been seen to
1694access operation regions in some cases, causing errors because the
1695operation regions are not fully initialized.
1696
1697AML Debugger: Fixed some issues with the terminate/quit/exit commands
1698that can cause faults. Lv Zheng.
1699
1700AML Debugger: Add thread ID support so that single-step mode only applies
1701to the AML Debugger thread. This prevents runtime errors within some
1702kernels. Lv Zheng.
1703
1704Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
1705methods that are invoked by this interface are optional, removed warnings
1706emitted for the case where one or more of these methods do not exist.
1707ACPICA BZ 1208, original change by Prarit Bhargava.
1708
1709Made a major pass through the entire ACPICA source code base to
1710standardize formatting that has diverged a bit over time. There are no
1711functional changes, but this will of course cause quite a few code
1712differences from the previous ACPICA release.
1713
1714Example Code and Data Size: These are the sizes for the OS-independent
1715acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1716debug version of the code includes the debug output trace mechanism and
1717has a much larger code and data size.
1718
1719  Current Release:
1720    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
1721    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
1722  Previous Release:
1723    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
1724    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
1725
1726
17272) iASL Compiler/Disassembler and Tools:
1728
1729iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
1730definition blocks within a single ASL file and the resulting AML file.
1731Support for this type of file was also added to the various tools that
1732use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
1733example code below shows two definition blocks within the same file:
1734
1735    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
17360x12345678)
1737    {
1738    }
1739    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
1740    {
1741    }
1742
1743iASL: Enhanced typechecking for the Name() operator. All expressions for
1744the value of the named object must be reduced/folded to a single constant
1745at compile time, as per the ACPI specification (the AML definition of
1746Name()).
1747
1748iASL: Fixed some code indentation issues for the -ic and -ia options (C
1749and assembly headers). Now all emitted code correctly begins in column 1.
1750
1751iASL: Added an error message for an attempt to open a Scope() on an
1752object defined in an SSDT. The DSDT is always loaded into the namespace
1753first, so any attempt to open a Scope on an SSDT object will fail at
1754runtime.
1755
1756
1757----------------------------------------
175830 September 2015. Summary of changes for version 20150930:
1759
17601) ACPICA kernel-resident subsystem:
1761
1762Debugger: Implemented several changes and bug fixes to assist support for
1763the in-kernel version of the AML debugger. Lv Zheng.
1764- Fix the "predefined" command for in-kernel debugger.
1765- Do not enter debug command loop for the help and version commands.
1766- Disallow "execute" command during execution/single-step of a method.
1767
1768Interpreter: Updated runtime typechecking for all operators that have
1769target operands. The operand is resolved and validated that it is legal.
1770For example, the target cannot be a non-data object such as a Device,
1771Mutex, ThermalZone, etc., as per the ACPI specification.
1772
1773Debugger: Fixed the double-mutex user I/O handshake to work when local
1774deadlock detection is enabled.
1775
1776Debugger: limited display of method locals and arguments (LocalX and
1777ArgX) to only those that have actually been initialized. This prevents
1778lines of extraneous output.
1779
1780Updated the definition of the NFIT table to correct the bit polarity of
1781one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
1782
1783Example Code and Data Size: These are the sizes for the OS-independent
1784acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1785debug version of the code includes the debug output trace mechanism and
1786has a much larger code and data size.
1787
1788  Current Release:
1789    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
1790    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
1791  Previous Release:
1792    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
1793    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
1794
1795
17962) iASL Compiler/Disassembler and Tools:
1797
1798iASL: Improved the compile-time typechecking for operands of many of the
1799ASL operators:
1800
1801-- Added an option to disable compiler operand/operator typechecking (-
1802ot).
1803
1804-- For the following operators, the TermArg operands are now validated
1805when possible to be Integer data objects: BankField, OperationRegion,
1806DataTableRegion, Buffer, and Package.
1807
1808-- Store (Source, Target): Both the source and target operands are
1809resolved and checked that the operands are both legal. For example,
1810neither operand can be a non-data object such as a Device, Mutex,
1811ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
1812operator can be used to store an object to any type of target object.
1813
1814-- Store (Source, Target): If the source is a Package object, the target
1815must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
1816is a Package, the source must also be a Package.
1817
1818-- Store (Source, Target): A warning is issued if the source and target
1819resolve to the identical named object.
1820
1821-- Store (Source, <method invocation>): An error is generated for the
1822target method invocation, as this construct is not supported by the AML
1823interpreter.
1824
1825-- For all ASL math and logic operators, the target operand must be a
1826data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
1827includes the function return value also.
1828
1829-- External declarations are also included in the typechecking where
1830possible. External objects defined using the UnknownObj keyword cannot be
1831typechecked, however.
1832
1833iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
1834operator:
1835- Legacy code: Index(PKG1, 3)
1836- New ASL+ code: PKG1[3]
1837This completes the ACPI 6.0 ASL+ support as it was the only operator not
1838supported.
1839
1840iASL: Fixed the file suffix for the preprocessor output file (.i). Two
1841spaces were inadvertently appended to the filename, causing file access
1842and deletion problems on some systems.
1843
1844ASL Test Suite (ASLTS): Updated the master makefile to generate all
1845possible compiler output files when building the test suite -- thus
1846exercising these features of the compiler. These files are automatically
1847deleted when the test suite exits.
1848
1849
1850----------------------------------------
185118 August 2015. Summary of changes for version 20150818:
1852
18531) ACPICA kernel-resident subsystem:
1854
1855Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
1856Zheng. ACPICA BZ 1186.
1857
1858Completed development to ensure that the ACPICA Disassembler and Debugger
1859are fully standalone components of ACPICA. Removed cross-component
1860dependences. Lv Zheng.
1861
1862The max-number-of-AML-loops is now runtime configurable (previously was
1863compile-time only). This is essentially a loop timeout to force-abort
1864infinite AML loops. ACPCIA BZ 1192.
1865
1866Debugger: Cleanup output to dump ACPI names and namepaths without any
1867trailing underscores. Lv Zheng. ACPICA BZ 1135.
1868
1869Removed unnecessary conditional compilations across the Debugger and
1870Disassembler components where entire modules could be left uncompiled.
1871
1872The aapits test is deprecated and has been removed from the ACPICA git
1873tree. The test has never been completed and has not been maintained, thus
1874becoming rather useless. ACPICA BZ 1015, 794.
1875
1876A batch of small changes to close bugzilla and other reports:
1877- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
1878- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
1879- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
1880- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
1881Moore.
1882- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
1883ACPICA BZ 1184.
1884- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
1885operators.
1886- Debugger: Split debugger initialization/termination interfaces. Lv
1887Zheng.
1888- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
1889identification.
1890- AcpiExec: Add debug message during _REG method phase during table
1891load/init.
1892- AcpiNames: Fix a regression where some output was missing and no longer
1893emitted.
1894- Debugger: General cleanup and simplification. Lv Zheng.
1895- Disassembler: Cleanup use of several global option variables. Lv Zheng.
1896
1897Example Code and Data Size: These are the sizes for the OS-independent
1898acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1899debug version of the code includes the debug output trace mechanism and
1900has a much larger code and data size.
1901
1902  Current Release:
1903    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
1904    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
1905  Previous Release:
1906    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
1907    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
1908
1909
19102) iASL Compiler/Disassembler and Tools:
1911
1912AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
1913were not handled properly and caused load errors. Now, properly invoke
1914and use the ACPICA auto-reallocate mechanism for ACPI table data
1915structures. ACPICA BZ 1188
1916
1917AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
1918BZ 1190.
1919
1920AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
1921AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
1922executed during initialization. ACPICA BZ 1187, 1189.
1923
1924iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
1925that corresponds to each disassembled ASL statement, to simplify
1926debugging. ACPICA BZ 1191.
1927
1928Debugger: Add option to the "objects" command to display a summary of the
1929current namespace objects (Object type and count). This is displayed if
1930the command is entered with no arguments.
1931
1932AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
1933
1934
1935----------------------------------------
193617 July 2015. Summary of changes for version 20150717:
1937
19381) ACPICA kernel-resident subsystem:
1939
1940Improved the partitioning between the Debugger and Disassembler
1941components. This allows the Debugger to be used standalone within kernel
1942code without the Disassembler (which is used for single stepping also).
1943This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
1944
1945Debugger: Implemented a new command to trace the execution of control
1946methods (Trace). This is especially useful for the in-kernel version of
1947the debugger when file I/O may not be available for method trace output.
1948See the ACPICA reference for more information. Lv Zheng.
1949
1950Moved all C library prototypes (used for the local versions of these
1951functions when requested) to a new header, acclib.h
1952Cleaned up the use of non-ANSI C library functions. These functions are
1953implemented locally in ACPICA. Moved all such functions to a common
1954source file, utnonansi.c
1955
1956Debugger: Fixed a problem with the "!!" command (get last command
1957executed) where the debugger could enter an infinite loop and eventually
1958crash.
1959
1960Removed the use of local macros that were used for some of the standard C
1961library functions to automatically cast input parameters. This mostly
1962affected the is* functions where the input parameter is defined to be an
1963int. This required a few modifications to the main ACPICA source code to
1964provide casting for these functions and eliminate possible compiler
1965warnings for these parameters.
1966
1967Across the source code, added additional status/error checking to resolve
1968issues discovered by static source code analysis tools such as Coverity.
1969
1970Example Code and Data Size: These are the sizes for the OS-independent
1971acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1972debug version of the code includes the debug output trace mechanism and
1973has a much larger code and data size.
1974
1975  Current Release:
1976    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
1977    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
1978  Previous Release:
1979    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
1980    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
1981
1982
19832) iASL Compiler/Disassembler and Tools:
1984
1985iASL: Fixed a regression where the device map file feature no longer
1986worked properly when used in conjunction with the disassembler. It only
1987worked properly with the compiler itself.
1988
1989iASL: Implemented a new warning for method LocalX variables that are set
1990but never used (similar to a C compiler such as gcc). This also applies
1991to ArgX variables that are not defined by the parent method, and are
1992instead (legally) used as local variables.
1993
1994iASL/Preprocessor: Finished the pass-through of line numbers from the
1995preprocessor to the compiler. This ensures that compiler errors/warnings
1996have the correct original line numbers and filenames, regardless of any
1997#include files.
1998
1999iASL/Preprocessor: Fixed a couple of issues with comment handling and the
2000pass-through of comments to the preprocessor output file (which becomes
2001the compiler input file). Also fixed a problem with // comments that
2002appear after a math expression.
2003
2004iASL: Added support for the TCPA server table to the table compiler and
2005template generator. (The client table was already previously supported)
2006
2007iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
2008identify the iASL compiler.
2009
2010Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
2011multiple times. The new names are ACPI_SIGN_NEGATIVE and
2012ACPI_SIGN_POSITIVE.
2013
2014AcpiHelp: Update to expand help messages for the iASL preprocessor
2015directives.
2016
2017
2018----------------------------------------
201919 June 2015. Summary of changes for version 20150619:
2020
2021Two regressions in version 20150616 have been addressed:
2022
2023Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
2024etc.) This update changes ACPICA to only use the standard headers for
2025functions, or the prototypes for the local versions of the C library
2026functions. Across the source code, this required some additional casts
2027for some Clib invocations for portability. Moved all local prototypes to
2028a new file, acclib.h
2029
2030Fixes several problems with recent changes to the handling of the FACS
2031table that could cause some systems not to boot.
2032
2033
2034----------------------------------------
203516 June 2015. Summary of changes for version 20150616:
2036
2037
20381) ACPICA kernel-resident subsystem:
2039
2040Across the entire ACPICA source code base, the various macros for the C
2041library functions (such as ACPI_STRLEN, etc.) have been removed and
2042replaced by the standard C library names (strlen, etc.) The original
2043purpose for these macros is no longer applicable. This simplification
2044reduces the number of macros used in the ACPICA source code
2045significantly, improving readability and maintainability.
2046
2047Implemented support for a new ACPI table, the OSDT. This table, the
2048"override" SDT, can be loaded directly by the host OS at boot time. It
2049enables the replacement of existing namespace objects that were installed
2050via the DSDT and/or SSDTs. The primary purpose for this is to replace
2051buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
2052for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
2053Moore.
2054
2055Added support for systems with (improperly) two FACS tables -- a "32-bit"
2056table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
2057X field). This change will support both automatically. There continues to
2058be systems found with this issue. This support requires a change to the
2059AcpiSetFirmwareWakingVector interface. Also, a public global variable has
2060been added to allow the host to select which FACS is desired
2061(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
2062details Lv Zheng.
2063
2064Added a new feature to allow for systems that do not contain an FACS.
2065Although this is already supported on hardware-reduced platforms, the
2066feature has been extended for all platforms. The reasoning is that we do
2067not want to abort the entire ACPICA initialization just because the
2068system is seriously buggy and has no FACS.
2069
2070Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
2071not correctly transcribed from the ACPI specification in ACPICA version
207220150515.
2073
2074Implemented support for the _CLS object in the AcpiGetObjectInfo external
2075interface.
2076
2077Updated the definitions of the TCPA and TPM2 ACPI tables to the more
2078recent TCG ACPI Specification, December 14, 2014. Table disassembler and
2079compiler also updated. Note: The TCPA "server" table is not supported by
2080the disassembler/table-compiler at this time.
2081
2082ACPI 6.0: Added definitions for the new GIC version field in the MADT.
2083
2084Example Code and Data Size: These are the sizes for the OS-independent
2085acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2086debug version of the code includes the debug output trace mechanism and
2087has a much larger code and data size.
2088
2089  Current Release:
2090    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
2091    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
2092  Previous Release:
2093    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
2094    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
2095
2096
20972) iASL Compiler/Disassembler and Tools:
2098
2099Disassembler: Fixed a problem with the new symbolic operator disassembler
2100where incorrect ASL code could be emitted in some cases for the "non-
2101commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
2102ShiftRight. The actual problem cases seem to be rather unusual in common
2103ASL code, however. David Box.
2104
2105Modified the linux version of acpidump to obtain ACPI tables from not
2106just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
2107Zheng.
2108
2109iASL: Fixed a problem where the user preprocessor output file (.i)
2110contained extra data that was not expected. The compiler was using this
2111file as a temporary file and passed through #line directives in order to
2112keep compiler error messages in sync with the input file and line number
2113across multiple include files. The (.i) is no longer a temporary file as
2114the compiler uses a new, different file for the original purpose.
2115
2116iASL: Fixed a problem where comments within the original ASL source code
2117file were not passed through to the preprocessor output file, nor any
2118listing files.
2119
2120iASL: Fixed some issues for the handling of the "#include" preprocessor
2121directive and the similar (but not the same) "Include" ASL operator.
2122
2123iASL: Add support for the new OSDT in both the disassembler and compiler.
2124
2125iASL: Fixed a problem with the constant folding support where a Buffer
2126object could be incorrectly generated (incorrectly formed) during a
2127conversion to a Store() operator.
2128
2129AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
2130description text for the _REV predefined name. _REV now permanently
2131returns 2, as per the ACPI 6.0 specification.
2132
2133Debugger: Enhanced the output of the Debug ASL object for references
2134produced by the Index operator. For Buffers and strings, only output the
2135actual byte pointed to by the index. For packages, only print the single
2136package element decoded by the index. Previously, the entire
2137buffer/string/package was emitted.
2138
2139iASL/Table-compiler: Fixed a regression where the "generic" data types
2140were no longer recognized, causing errors.
2141
2142
2143----------------------------------------
214415 May 2015. Summary of changes for version 20150515:
2145
2146This release implements most of ACPI 6.0 as described below.
2147
21481) ACPICA kernel-resident subsystem:
2149
2150Implemented runtime argument checking and return value checking for all
2151new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
2152_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
2153
2154Example Code and Data Size: These are the sizes for the OS-independent
2155acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2156debug version of the code includes the debug output trace mechanism and
2157has a much larger code and data size.
2158
2159  Current Release:
2160    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
2161    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
2162  Previous Release:
2163    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
2164    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
2165
2166
21672) iASL Compiler/Disassembler and Tools:
2168
2169iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
2170names (argument count validation and return value typechecking.)
2171
2172iASL disassembler and table compiler: implemented support for all new
2173ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
2174
2175iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
2176tables: FADT, MADT.
2177
2178iASL preprocessor: Added a new directive to enable inclusion of binary
2179blobs into ASL code. The new directive is #includebuffer. It takes a
2180binary file as input and emits a named ascii buffer object into the ASL
2181code.
2182
2183AcpiHelp: Added support for all new ACPI 6.0 predefined names.
2184
2185AcpiHelp: Added a new option, -d, to display all iASL preprocessor
2186directives.
2187
2188AcpiHelp: Added a new option, -t, to display all known/supported ACPI
2189tables.
2190
2191
2192----------------------------------------
219310 April 2015. Summary of changes for version 20150410:
2194
2195Reverted a change introduced in version 20150408 that caused
2196a regression in the disassembler where incorrect operator
2197symbols could be emitted.
2198
2199
2200----------------------------------------
220108 April 2015. Summary of changes for version 20150408:
2202
2203
22041) ACPICA kernel-resident subsystem:
2205
2206Permanently set the return value for the _REV predefined name. It now
2207returns 2 (was 5). This matches other ACPI implementations. _REV will be
2208deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
2209for ACPI 2.0 and later. It should never be used to differentiate or
2210identify operating systems.
2211
2212Added the "Windows 2015" string to the _OSI support. ACPICA will now
2213return TRUE to a query with this string.
2214
2215Fixed several issues with the local version of the printf function.
2216
2217Added the C99 compiler option (-std=c99) to the Unix makefiles.
2218
2219  Current Release:
2220    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
2221    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
2222  Previous Release:
2223    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
2224    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
2225
2226
22272) iASL Compiler/Disassembler and Tools:
2228
2229iASL: Implemented an enhancement to the constant folding feature to
2230transform the parse tree to a simple Store operation whenever possible:
2231    Add (2, 3, X) ==> is converted to: Store (5, X)
2232    X = 2 + 3     ==> is converted to: Store (5, X)
2233
2234Updated support for the SLIC table (Software Licensing Description Table)
2235in both the Data Table compiler and the disassembler. The SLIC table
2236support now conforms to "Microsoft Software Licensing Tables (SLIC and
2237MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
2238following the ACPI header is now defined to be "Proprietary Data", and as
2239such, can only be entered or displayed as a hex data block.
2240
2241Implemented full support for the MSDM table as described in the document
2242above. Note: The format of MSDM is similar to SLIC. Any MSDM data
2243following the ACPI header is defined to be "Proprietary Data", and can
2244only be entered or displayed as a hex data block.
2245
2246Implemented the -Pn option for the iASL Table Compiler (was only
2247implemented for the ASL compiler). This option disables the iASL
2248preprocessor.
2249
2250Disassembler: For disassembly of Data Tables, added a comment field
2251around the Ascii equivalent data that is emitted as part of the "Raw
2252Table Data" block. This prevents the iASL Preprocessor from possible
2253confusion if/when the table is compiled.
2254
2255Disassembler: Added an option (-df) to force the disassembler to assume
2256that the table being disassembled contains valid AML. This feature is
2257useful for disassembling AML files that contain ACPI signatures other
2258than DSDT or SSDT (such as OEMx or other signatures).
2259
2260Changes for the EFI version of the tools:
22611) Fixed a build error/issue
22622) Fixed a cast warning
2263
2264iASL: Fixed a path issue with the __FILE__ operator by making the
2265directory prefix optional within the internal SplitInputFilename
2266function.
2267
2268Debugger: Removed some unused global variables.
2269
2270Tests: Updated the makefile for proper generation of the AAPITS suite.
2271
2272
2273----------------------------------------
227404 February 2015. Summary of changes for version 20150204:
2275
2276ACPICA kernel-resident subsystem:
2277
2278Updated all ACPICA copyrights and signons to 2014. Added the 2014
2279copyright to all module headers and signons, including the standard Linux
2280header. This affects virtually every file in the ACPICA core subsystem,
2281iASL compiler, all ACPICA utilities, and the test suites.
2282
2283Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
2284A raw gpe handling mechanism was created to allow better handling of GPE
2285storms that aren't easily managed by the normal handler. The raw handler
2286allows disabling/renabling of the the GPE so that interrupt storms can be
2287avoided in cases where events cannot be timely serviced. In this
2288scenario, handlers should use the AcpiSetGpe() API to disable/enable the
2289GPE. This API will leave the reference counts undisturbed, thereby
2290preventing unintentional clearing of the GPE when the intent in only to
2291temporarily disable it. Raw handlers allow enabling and disabling of a
2292GPE by removing GPE register locking. As such, raw handlers much provide
2293their own locks while using GPE API's to protect access to GPE data
2294structures.
2295Lv Zheng
2296
2297Events: Always modify GPE registers under the GPE lock.
2298Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
2299values. Reported as bug by joe.liu@apple.com.
2300
2301Unix makefiles: Separate option to disable optimizations and
2302_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
2303NOOPT disable option and creates a separate flag (NOFORTIFY) for this
2304purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
2305errors when building ACPICA. This allows disabling the option without
2306also having to disable optimazations.
2307David Box
2308
2309  Current Release:
2310    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2311    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
2312
2313--
2314--------------------------------------
231507 November 2014. Summary of changes for version 20141107:
2316
2317This release is available at https://acpica.org/downloads
2318
2319This release introduces and implements language extensions to ASL that
2320provide support for symbolic ("C-style") operators and expressions. These
2321language extensions are known collectively as ASL+.
2322
2323
23241) iASL Compiler/Disassembler and Tools:
2325
2326Disassembler: Fixed a problem with disassembly of the UartSerialBus
2327macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
2328Box.
2329
2330Disassembler: Fixed the Unicode macro support to add escape sequences.
2331All non-printable ASCII values are emitted as escape sequences, as well
2332as the standard escapes for quote and backslash. Ensures that the
2333disassembled macro can be correctly recompiled.
2334
2335iASL: Added Printf/Fprintf macros for formatted output. These macros are
2336translated to existing AML Concatenate and Store operations. Printf
2337writes to the ASL Debug object. Fprintf allows the specification of an
2338ASL name as the target. Only a single format specifier is required, %o,
2339since the AML interpreter dynamically converts objects to the required
2340type. David E. Box.
2341
2342    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
2343                 (Concatenate (Concatenate (Concatenate ("", Arg0),
2344                 ": Unexpected value for "), Arg1), ", "), Arg2),
2345                 " at line "), Arg3), Debug)
2346
2347    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
2348                 Arg0, Arg1, Arg2, Arg3)
2349
2350    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
2351                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
2352
2353    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
2354
2355iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
2356ASL parse tree before the AML code is generated. This allows blocks of
2357ASL code to be removed in order to help locate and identify problem
2358devices and/or code. David E. Box.
2359
2360AcpiExec: Added support (-fi) for an optional namespace object
2361initialization file. This file specifies initial values for namespace
2362objects as necessary for debugging and testing different ASL code paths
2363that may be taken as a result of BIOS options.
2364
2365
23662) Overview of symbolic operator support for ASL (ASL+)
2367-------------------------------------------------------
2368
2369As an extension to the ASL language, iASL implements support for symbolic
2370(C-style) operators for math and logical expressions. This can greatly
2371simplify ASL code as well as improve both readability and
2372maintainability. These language extensions can exist concurrently with
2373all legacy ASL code and expressions.
2374
2375The symbolic extensions are 100% compatible with existing AML
2376interpreters, since no new AML opcodes are created. To implement the
2377extensions, the iASL compiler transforms the symbolic expressions into
2378the legacy ASL/AML equivalents at compile time.
2379
2380Full symbolic expressions are supported, along with the standard C
2381precedence and associativity rules.
2382
2383Full disassembler support for the symbolic expressions is provided, and
2384creates an automatic migration path for existing ASL code to ASL+ code
2385via the disassembly process. By default, the disassembler now emits ASL+
2386code with symbolic expressions. An option (-dl) is provided to force the
2387disassembler to emit legacy ASL code if desired.
2388
2389Below is the complete list of the currently supported symbolic operators
2390with examples. See the iASL User Guide for additional information.
2391
2392
2393ASL+ Syntax      Legacy ASL Equivalent
2394-----------      ---------------------
2395
2396    // Math operators
2397
2398Z = X + Y        Add (X, Y, Z)
2399Z = X - Y        Subtract (X, Y, Z)
2400Z = X * Y        Multiply (X, Y, Z)
2401Z = X / Y        Divide (X, Y, , Z)
2402Z = X % Y        Mod (X, Y, Z)
2403Z = X << Y       ShiftLeft (X, Y, Z)
2404Z = X >> Y       ShiftRight (X, Y, Z)
2405Z = X & Y        And (X, Y, Z)
2406Z = X | Y        Or (X, Y, Z)
2407Z = X ^ Y        Xor (X, Y, Z)
2408Z = ~X           Not (X, Z)
2409X++              Increment (X)
2410X--              Decrement (X)
2411
2412    // Logical operators
2413
2414(X == Y)         LEqual (X, Y)
2415(X != Y)         LNotEqual (X, Y)
2416(X < Y)          LLess (X, Y)
2417(X > Y)          LGreater (X, Y)
2418(X <= Y)         LLessEqual (X, Y)
2419(X >= Y)         LGreaterEqual (X, Y)
2420(X && Y)         LAnd (X, Y)
2421(X || Y)         LOr (X, Y)
2422(!X)             LNot (X)
2423
2424    // Assignment and compound assignment operations
2425
2426X = Y           Store (Y, X)
2427X += Y          Add (X, Y, X)
2428X -= Y          Subtract (X, Y, X)
2429X *= Y          Multiply (X, Y, X)
2430X /= Y          Divide (X, Y, , X)
2431X %= Y          Mod (X, Y, X)
2432X <<= Y         ShiftLeft (X, Y, X)
2433X >>= Y         ShiftRight (X, Y, X)
2434X &= Y          And (X, Y, X)
2435X |= Y          Or (X, Y, X)
2436X ^= Y          Xor (X, Y, X)
2437
2438
24393) ASL+ Examples:
2440-----------------
2441
2442Legacy ASL:
2443        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
2444            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
24450x03FB),
2446            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
2447        {
2448            And (MEMB, 0xFFFFFFF0, SRMB)
2449            Store (MEMB, Local2)
2450            Store (PDBM, Local1)
2451            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
2452            Store (SRMB, MEMB)
2453            Or (PDBM, 0x02, PDBM)
2454        }
2455
2456ASL+ version:
2457        If (((R510 & 0x03FB) == 0x02E0) ||
2458            ((R520 & 0x03FB) == 0x02E0) ||
2459            ((R530 & 0x03FB) == 0x02E0) ||
2460            ((R540 & 0x03FB) == 0x02E0))
2461        {
2462            SRMB = (MEMB & 0xFFFFFFF0)
2463            Local2 = MEMB
2464            Local1 = PDBM
2465            PDBM &= 0xFFFFFFFFFFFFFFF9
2466            MEMB = SRMB
2467            PDBM |= 0x02
2468        }
2469
2470Legacy ASL:
2471        Store (0x1234, Local1)
2472        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
2473        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
2474        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
2475        Store (Index (PKG1, 0x03), Local6)
2476        Store (Add (Local3, Local2), Debug)
2477        Add (Local1, 0x0F, Local2)
2478        Add (Local1, Multiply (Local2, Local3), Local2)
2479        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
2480
2481ASL+ version:
2482        Local1 = 0x1234
2483        Local3 = (((Local1 + TEST) + 0x20) * Local2)
2484        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
2485        Local3 = (Local1 + (TEST + (0x20 * Local2)))
2486        Local6 = Index (PKG1, 0x03)
2487        Debug = (Local3 + Local2)
2488        Local2 = (Local1 + 0x0F)
2489        Local2 = (Local1 + (Local2 * Local3))
2490        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
2491
2492
2493----------------------------------------
249426 September 2014. Summary of changes for version 20140926:
2495
24961) ACPICA kernel-resident subsystem:
2497
2498Updated the GPIO operation region handler interface (GeneralPurposeIo).
2499In order to support GPIO Connection objects with multiple pins, along
2500with the related Field objects, the following changes to the interface
2501have been made: The Address is now defined to be the offset in bits of
2502the field unit from the previous invocation of a Connection. It can be
2503viewed as a "Pin Number Index" into the connection resource descriptor.
2504The BitWidth is the exact bit width of the field. It is usually one bit,
2505but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
2506additional information and examples.
2507
2508GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
2509corresponding _Lxx/_Exx methods are disabled (they may have been enabled
2510by the firmware), so that they cannot fire until they are enabled via
2511AcpiUpdateAllGpes. Rafael J. Wysocki.
2512
2513Added a new return flag for the Event/GPE status interfaces --
2514AcpiGetEventStatus and AcpiGetGpeStatus. The new
2515ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
2516GPE currently has a handler associated with it, and can thus actually
2517affect the system. Lv Zheng.
2518
2519Example Code and Data Size: These are the sizes for the OS-independent
2520acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2521debug version of the code includes the debug output trace mechanism and
2522has a much larger code and data size.
2523
2524  Current Release:
2525    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
2526    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
2527  Previous Release:
2528    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
2529    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
2530
25312) iASL Compiler/Disassembler and Tools:
2532
2533iASL: Fixed a memory allocation/free regression introduced in 20140828
2534that could cause the compiler to crash. This was introduced inadvertently
2535during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
25361113.
2537
2538iASL: Removed two error messages that have been found to create false
2539positives, until they can be fixed and fully validated (ACPICA BZ 1112):
25401) Illegal forward reference within a method
25412) Illegal reference across two methods
2542
2543iASL: Implemented a new option (-lm) to create a hardware mapping file
2544that summarizes all GPIO, I2C, SPI, and UART connections. This option
2545works for both the compiler and disassembler. See the iASL compiler user
2546guide for additional information and examples (section 6.4.6).
2547
2548AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
2549version 2. This corrects the AE_BAD_HEADER exception seen on systems with
2550a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
2551
2552AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
2553unless STDIN is actually a terminal. Assists with batch-mode processing.
2554ACPICA BZ 1114.
2555
2556Disassembler/AcpiHelp: Added another large group of recognized _HID
2557values.
2558
2559
2560----------------------------------------
256128 August 2014. Summary of changes for version 20140828:
2562
25631) ACPICA kernel-resident subsystem:
2564
2565Fixed a problem related to the internal use of the Timer() operator where
2566a 64-bit divide could cause an attempted link to a double-precision math
2567library. This divide is not actually necessary, so the code was
2568restructured to eliminate it. Lv Zheng.
2569
2570ACPI 5.1: Added support for the runtime validation of the _DSD package
2571(similar to the iASL support).
2572
2573ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
2574SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
2575
2576Example Code and Data Size: These are the sizes for the OS-independent
2577acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2578debug version of the code includes the debug output trace mechanism and
2579has a much larger code and data size.
2580
2581  Current Release:
2582    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
2583    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
2584  Previous Release:
2585    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
2586    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
2587
25882) iASL Compiler/Disassembler and Tools:
2589
2590AcpiExec: Fixed a problem on unix systems where the original terminal
2591state was not always properly restored upon exit. Seen when using the -v
2592option. ACPICA BZ 1104.
2593
2594iASL: Fixed a problem with the validation of the ranges/length within the
2595Memory24 resource descriptor. There was a boundary condition when the
2596range was equal to the (length -1) caused by the fact that these values
2597are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
2598
2599Disassembler: Fixed a problem with the GpioInt descriptor interrupt
2600polarity
2601flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
2602is
2603now supported properly.
2604
2605ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
2606in the disassembler, data table compiler, and table template generator.
2607
2608iASL: Added a requirement for Device() objects that one of either a _HID
2609or _ADR must exist within the scope of a Device, as per the ACPI
2610specification. Remove a similar requirement that was incorrectly in place
2611for the _DSD object.
2612
2613iASL: Added error detection for illegal named references within control
2614methods that would cause runtime failures. Now trapped as errors are: 1)
2615References to objects within a non-parent control method. 2) Forward
2616references (within a method) -- for control methods, AML interpreters use
2617a one-pass parse of control methods. ACPICA BZ 1008.
2618
2619iASL: Added error checking for dependencies related to the _PSx power
2620methods. ACPICA BZ 1029.
26211) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
2622_PS3.
26232) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
2624scope.
2625
2626iASL and table compiler: Cleanup miscellaneous memory leaks by fully
2627deploying the existing object and string caches and adding new caches for
2628the table compiler.
2629
2630iASL: Split the huge parser source file into multiple subfiles to improve
2631manageability. Generation now requires the M4 macro preprocessor, which
2632is part of the Bison distribution on both unix and windows platforms.
2633
2634AcpiSrc: Fixed and removed all extraneous warnings generated during
2635entire ACPICA source code scan and/or conversion.
2636
2637
2638----------------------------------------
2639
264024 July 2014. Summary of changes for version 20140724:
2641
2642The ACPI 5.1 specification has been released and is available at:
2643http://uefi.org/specs/access
2644
2645
26460) ACPI 5.1 support in ACPICA:
2647
2648ACPI 5.1 is fully supported in ACPICA as of this release.
2649
2650New predefined names. Support includes iASL and runtime ACPICA
2651validation.
2652    _CCA (Cache Coherency Attribute).
2653    _DSD (Device-Specific Data). David Box.
2654
2655Modifications to existing ACPI tables. Support includes headers, iASL
2656Data Table compiler, disassembler, and the template generator.
2657    FADT - New fields and flags. Graeme Gregory.
2658    GTDT - One new subtable and new fields. Tomasz Nowicki.
2659    MADT - Two new subtables. Tomasz Nowicki.
2660    PCCT - One new subtable.
2661
2662Miscellaneous.
2663    New notification type for System Resource Affinity change events.
2664
2665
26661) ACPICA kernel-resident subsystem:
2667
2668Fixed a regression introduced in 20140627 where a fault can happen during
2669the deletion of Alias AML namespace objects. The problem affected both
2670the core ACPICA and the ACPICA tools including iASL and AcpiExec.
2671
2672Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
2673simple mechanism to enable wake GPEs that have no associated handler or
2674control method. Rafael Wysocki.
2675
2676Updated the AcpiEnableGpe interface to disallow the enable if there is no
2677handler or control method associated with the particular GPE. This will
2678help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
2679
2680Updated GPE handling and dispatch by disabling the GPE before clearing
2681the status bit for edge-triggered GPEs. Lv Zheng.
2682
2683Added Timer() support to the AML Debug object. The current timer value is
2684now displayed with each invocation of (Store to) the debug object to
2685enable simple generation of execution times for AML code (method
2686execution for example.) ACPICA BZ 1093.
2687
2688Example Code and Data Size: These are the sizes for the OS-independent
2689acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2690debug version of the code includes the debug output trace mechanism and
2691has a much larger code and data size.
2692
2693  Current Release:
2694    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
2695    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
2696  Previous Release:
2697    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
2698    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
2699
2700
27012) iASL Compiler/Disassembler and Tools:
2702
2703Fixed an issue with the recently added local printf implementation,
2704concerning width/precision specifiers that could cause incorrect output.
2705Lv Zheng. ACPICA BZ 1094.
2706
2707Disassembler: Added support to detect buffers that contain UUIDs and
2708disassemble them to an invocation of the ToUUID operator. Also emit
2709commented descriptions of known ACPI-related UUIDs.
2710
2711AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
2712-u. Adds three new files.
2713
2714iASL: Update table compiler and disassembler for DMAR table changes that
2715were introduced in September 2013. With assistance by David Woodhouse.
2716
2717----------------------------------------
271827 June 2014. Summary of changes for version 20140627:
2719
27201) ACPICA kernel-resident subsystem:
2721
2722Formatted Output: Implemented local versions of standard formatted output
2723utilities such as printf, etc. Over time, it has been discovered that
2724there are in fact many portability issues with printf, and the addition
2725of this feature will fix/prevent these issues once and for all. Some
2726known issues are summarized below:
2727
27281) Output of 64-bit values is not portable. For example, UINT64 is %ull
2729for the Linux kernel and is %uI64 for some MSVC versions.
27302) Invoking printf consistently in a manner that is portable across both
273132-bit and 64-bit platforms is difficult at best in many situations.
27323) The output format for pointers varies from system to system (leading
2733zeros especially), and leads to inconsistent output from ACPICA across
2734platforms.
27354) Certain platform-specific printf formats may conflict with ACPICA use.
27365) If there is no local C library available, ACPICA now has local support
2737for printf.
2738
2739-- To address these printf issues in a complete manner, ACPICA now
2740directly implements a small subset of printf format specifiers, only
2741those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
2742
2743Implemented support for ACPICA generation within the EFI environment.
2744Initially, the AcpiDump utility is supported in the UEFI shell
2745environment. Lv Zheng.
2746
2747Added a new external interface, AcpiLogError, to improve ACPICA
2748portability. This allows the host to redirect error messages from the
2749ACPICA utilities. Lv Zheng.
2750
2751Added and deployed new OSL file I/O interfaces to improve ACPICA
2752portability:
2753  AcpiOsOpenFile
2754  AcpiOsCloseFile
2755  AcpiOsReadFile
2756  AcpiOsWriteFile
2757  AcpiOsGetFileOffset
2758  AcpiOsSetFileOffset
2759There are C library implementations of these functions in the new file
2760service_layers/oslibcfs.c -- however, the functions can be implemented by
2761the local host in any way necessary. Lv Zheng.
2762
2763Implemented a mechanism to disable/enable ACPI table checksum validation
2764at runtime. This can be useful when loading tables very early during OS
2765initialization when it may not be possible to map the entire table in
2766order to compute the checksum. Lv Zheng.
2767
2768Fixed a buffer allocation issue for the Generic Serial Bus support.
2769Originally, a fixed buffer length was used. This change allows for
2770variable-length buffers based upon the protocol indicated by the field
2771access attributes. Reported by Lan Tianyu. Lv Zheng.
2772
2773Fixed a problem where an object detached from a namespace node was not
2774properly terminated/cleared and could cause a circular list problem if
2775reattached. ACPICA BZ 1063. David Box.
2776
2777Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
2778
2779Fixed a possible memory leak in an error return path within the function
2780AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
2781
2782Example Code and Data Size: These are the sizes for the OS-independent
2783acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2784debug version of the code includes the debug output trace mechanism and
2785has a much larger code and data size.
2786
2787  Current Release:
2788    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
2789    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
2790  Previous Release:
2791    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
2792    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
2793
2794
27952) iASL Compiler/Disassembler and Tools:
2796
2797Disassembler: Add dump of ASCII equivalent text within a comment at the
2798end of each line of the output for the Buffer() ASL operator.
2799
2800AcpiDump: Miscellaneous changes:
2801  Fixed repetitive table dump in -n mode.
2802  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
2803the ACPI 2.0 GUID fails.
2804
2805iASL: Fixed a problem where the compiler could fault if incorrectly given
2806an acpidump output file as input. ACPICA BZ 1088. David Box.
2807
2808AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
2809they are invoked without any arguments.
2810
2811Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
28121086. Colin Ian King.
2813
2814Disassembler: Cleaned up a block of code that extracts a parent Op
2815object. Added a comment that explains that the parent is guaranteed to be
2816valid in this case. ACPICA BZ 1069.
2817
2818
2819----------------------------------------
282024 April 2014. Summary of changes for version 20140424:
2821
28221) ACPICA kernel-resident subsystem:
2823
2824Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
2825Some of these tables are known to contain a trailing NULL entry. Lv
2826Zheng.
2827
2828Removed an extraneous error message for the case where there are a large
2829number of system GPEs (> 124). This was the "32-bit FADT register is too
2830long to convert to GAS struct" message, which is irrelevant for GPEs
2831since the GPEx_BLK_LEN fields of the FADT are always used instead of the
2832(limited capacity) GAS bit length. Also, several changes to ensure proper
2833support for GPE numbers > 255, where some "GPE number" fields were 8-bits
2834internally.
2835
2836Implemented and deployed additional configuration support for the public
2837ACPICA external interfaces. Entire classes of interfaces can now be
2838easily modified or configured out, replaced by stubbed inline functions
2839by default. Lv Zheng.
2840
2841Moved all public ACPICA runtime configuration globals to the public
2842ACPICA external interface file for convenience. Also, removed some
2843obsolete/unused globals. See the file acpixf.h. Lv Zheng.
2844
2845Documentation: Added a new section to the ACPICA reference describing the
2846maximum number of GPEs that can be supported by the FADT-defined GPEs in
2847block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
2848reference.
2849
2850Example Code and Data Size: These are the sizes for the OS-independent
2851acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2852debug version of the code includes the debug output trace mechanism and
2853has a much larger code and data size.
2854
2855  Current Release:
2856    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
2857    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
2858  Previous Release:
2859    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
2860    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
2861
2862
28632) iASL Compiler/Disassembler and Tools:
2864
2865iASL and disassembler: Add full support for the LPIT table (Low Power
2866Idle Table). Includes support in the disassembler, data table compiler,
2867and template generator.
2868
2869AcpiDump utility:
28701) Add option to force the use of the RSDT (over the XSDT).
28712) Improve validation of the RSDP signature (use 8 chars instead of 4).
2872
2873iASL: Add check for predefined packages that are too large.  For
2874predefined names that contain subpackages, check if each subpackage is
2875too large. (Check for too small already exists.)
2876
2877Debugger: Updated the GPE command (which simulates a GPE by executing the
2878GPE code paths in ACPICA). The GPE device is now optional, and defaults
2879to the GPE 0/1 FADT-defined blocks.
2880
2881Unix application OSL: Update line-editing support. Add additional error
2882checking and take care not to reset terminal attributes on exit if they
2883were never set. This should help guarantee that the terminal is always
2884left in the previous state on program exit.
2885
2886
2887----------------------------------------
288825 March 2014. Summary of changes for version 20140325:
2889
28901) ACPICA kernel-resident subsystem:
2891
2892Updated the auto-serialize feature for control methods. This feature
2893automatically serializes all methods that create named objects in order
2894to prevent runtime errors. The update adds support to ignore the
2895currently executing AML SyncLevel when invoking such a method, in order
2896to prevent disruption of any existing SyncLevel priorities that may exist
2897in the AML code. Although the use of SyncLevels is relatively rare, this
2898change fixes a regression where an AE_AML_MUTEX_ORDER exception can
2899appear on some machines starting with the 20140214 release.
2900
2901Added a new external interface to allow the host to install ACPI tables
2902very early, before the namespace is even created. AcpiInstallTable gives
2903the host additional flexibility for ACPI table management. Tables can be
2904installed directly by the host as if they had originally appeared in the
2905XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
2906(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
2907with additional internal restructuring and cleanup. See the ACPICA
2908Reference for interface details. Lv Zheng.
2909
2910Added validation of the checksum for all incoming dynamically loaded
2911tables (via external interfaces or via AML Load/LoadTable operators). Lv
2912Zheng.
2913
2914Updated the use of the AcpiOsWaitEventsComplete interface during Notify
2915and GPE handler removal. Restructured calls to eliminate possible race
2916conditions. Lv Zheng.
2917
2918Added a warning for the use/execution of the ASL/AML Unload (table)
2919operator. This will help detect and identify machines that use this
2920operator if and when it is ever used. This operator has never been seen
2921in the field and the usage model and possible side-effects of the drastic
2922runtime action of a full table removal are unknown.
2923
2924Reverted the use of #pragma push/pop which was introduced in the 20140214
2925release. It appears that push and pop are not implemented by enough
2926compilers to make the use of this feature feasible for ACPICA at this
2927time. However, these operators may be deployed in a future ACPICA
2928release.
2929
2930Added the missing EXPORT_SYMBOL macros for the install and remove SCI
2931handler interfaces.
2932
2933Source code generation:
29341) Disabled the use of the "strchr" macro for the gcc-specific
2935generation. For some versions of gcc, this macro can periodically expose
2936a compiler bug which in turn causes compile-time error(s).
29372) Added support for PPC64 compilation. Colin Ian King.
2938
2939Example Code and Data Size: These are the sizes for the OS-independent
2940acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2941debug version of the code includes the debug output trace mechanism and
2942has a much larger code and data size.
2943
2944  Current Release:
2945    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
2946    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
2947  Previous Release:
2948    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
2949    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
2950
2951
29522) iASL Compiler/Disassembler and Tools:
2953
2954Disassembler: Added several new features to improve the readability of
2955the resulting ASL code. Extra information is emitted within comment
2956fields in the ASL code:
29571) Known _HID/_CID values are decoded to descriptive text.
29582) Standard values for the Notify() operator are decoded to descriptive
2959text.
29603) Target operands are expanded to full pathnames (in a comment) when
2961possible.
2962
2963Disassembler: Miscellaneous updates for extern() handling:
29641) Abort compiler if file specified by -fe option does not exist.
29652) Silence unnecessary warnings about argument count mismatches.
29663) Update warning messages concerning unresolved method externals.
29674) Emit "UnknownObj" keyword for externals whose type cannot be
2968determined.
2969
2970AcpiHelp utility:
29711) Added the -a option to display both the ASL syntax and the AML
2972encoding for an input ASL operator. This effectively displays all known
2973information about an ASL operator with one AcpiHelp invocation.
29742) Added substring match support (similar to a wildcard) for the -i
2975(_HID/PNP IDs) option.
2976
2977iASL/Disassembler: Since this tool does not yet support execution on big-
2978endian machines, added detection of endianness and an error message if
2979execution is attempted on big-endian. Support for big-endian within iASL
2980is a feature that is on the ACPICA to-be-done list.
2981
2982AcpiBin utility:
29831) Remove option to extract binary files from an acpidump; this function
2984is made obsolete by the AcpiXtract utility.
29852) General cleanup of open files and allocated buffers.
2986
2987
2988----------------------------------------
298914 February 2014. Summary of changes for version 20140214:
2990
29911) ACPICA kernel-resident subsystem:
2992
2993Implemented a new mechanism to proactively prevent problems with ill-
2994behaved reentrant control methods that create named ACPI objects. This
2995behavior is illegal as per the ACPI specification, but is nonetheless
2996frequently seen in the field. Previously, this could lead to an
2997AE_ALREADY_EXISTS exception if the method was actually entered by more
2998than one thread. This new mechanism detects such methods at table load
2999time and marks them "serialized" to prevent reentrancy. A new global
3000option, AcpiGbl_AutoSerializeMethods, has been added to disable this
3001feature if desired. This mechanism and global option obsoletes and
3002supersedes the previous AcpiGbl_SerializeAllMethods option.
3003
3004Added the "Windows 2013" string to the _OSI support. ACPICA will now
3005respond TRUE to _OSI queries with this string. It is the stated policy of
3006ACPICA to add new strings to the _OSI support as soon as possible after
3007they are defined. See the full ACPICA _OSI policy which has been added to
3008the utilities/utosi.c file.
3009
3010Hardened/updated the _PRT return value auto-repair code:
30111) Do not abort the repair on a single subpackage failure, continue to
3012check all subpackages.
30132) Add check for the minimum subpackage length (4).
30143) Properly handle extraneous NULL package elements.
3015
3016Added support to avoid the possibility of infinite loops when traversing
3017object linked lists. Never allow an infinite loop, even in the face of
3018corrupted object lists.
3019
3020ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
3021pack(pop) directives to ensure that the ACPICA headers are independent of
3022compiler settings or other host headers.
3023
3024Example Code and Data Size: These are the sizes for the OS-independent
3025acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3026debug version of the code includes the debug output trace mechanism and
3027has a much larger code and data size.
3028
3029  Current Release:
3030    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
3031    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
3032  Previous Release:
3033    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
3034    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
3035
3036
30372) iASL Compiler/Disassembler and Tools:
3038
3039iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
3040first reserved field was incorrectly forced to have a value of zero. This
3041change correctly forces the field to have a value of one. ACPICA BZ 1081.
3042
3043Debugger: Added missing support for the "Extra" and "Data" subobjects
3044when displaying object data.
3045
3046Debugger: Added support to display entire object linked lists when
3047displaying object data.
3048
3049iASL: Removed the obsolete -g option to obtain ACPI tables from the
3050Windows registry. This feature has been superseded by the acpidump
3051utility.
3052
3053
3054----------------------------------------
305514 January 2014. Summary of changes for version 20140114:
3056
30571) ACPICA kernel-resident subsystem:
3058
3059Updated all ACPICA copyrights and signons to 2014. Added the 2014
3060copyright to all module headers and signons, including the standard Linux
3061header. This affects virtually every file in the ACPICA core subsystem,
3062iASL compiler, all ACPICA utilities, and the test suites.
3063
3064Improved parameter validation for AcpiInstallGpeBlock. Added the
3065following checks:
30661) The incoming device handle refers to type ACPI_TYPE_DEVICE.
30672) There is not already a GPE block attached to the device.
3068Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
3069device.
3070
3071Correctly support "references" in the ACPI_OBJECT. This change fixes the
3072support to allow references (namespace nodes) to be passed as arguments
3073to control methods via the evaluate object interface. This is probably
3074most useful for testing purposes, however.
3075
3076Improved support for 32/64 bit physical addresses in printf()-like
3077output. This change improves the support for physical addresses in printf
3078debug statements and other output on both 32-bit and 64-bit hosts. It
3079consistently outputs the appropriate number of bytes for each host. The
3080%p specifier is unsatisfactory since it does not emit uniform output on
3081all hosts/clib implementations (on some, leading zeros are not supported,
3082leading to difficult-to-read output).
3083
3084Example Code and Data Size: These are the sizes for the OS-independent
3085acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3086debug version of the code includes the debug output trace mechanism and
3087has a much larger code and data size.
3088
3089  Current Release:
3090    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
3091    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
3092  Previous Release:
3093    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
3094    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
3095
3096
30972) iASL Compiler/Disassembler and Tools:
3098
3099iASL: Fix a possible fault when using the Connection() operator. Fixes a
3100problem if the parent Field definition for the Connection operator refers
3101to an operation region that does not exist. ACPICA BZ 1064.
3102
3103AcpiExec: Load of local test tables is now optional. The utility has the
3104capability to load some various tables to test features of ACPICA.
3105However, there are enough of them that the output of the utility became
3106confusing. With this change, only the required local tables are displayed
3107(RSDP, XSDT, etc.) along with the actual tables loaded via the command
3108line specification. This makes the default output simler and easier to
3109understand. The -el command line option restores the original behavior
3110for testing purposes.
3111
3112AcpiExec: Added support for overlapping operation regions. This change
3113expands the simulation of operation regions by supporting regions that
3114overlap within the given address space. Supports SystemMemory and
3115SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
3116
3117AcpiExec: Added region handler support for PCI_Config and EC spaces. This
3118allows AcpiExec to simulate these address spaces, similar to the current
3119support for SystemMemory and SystemIO.
3120
3121Debugger: Added new command to read/write/compare all namespace objects.
3122The command "test objects" will exercise the entire namespace by writing
3123new values to each data object, and ensuring that the write was
3124successful. The original value is then restored and verified.
3125
3126Debugger: Added the "test predefined" command. This change makes this
3127test public and puts it under the new "test" command. The test executes
3128each and every predefined name within the current namespace.
3129
3130
3131----------------------------------------
313218 December 2013. Summary of changes for version 20131218:
3133
3134Global note: The ACPI 5.0A specification was released this month. There
3135are no changes needed for ACPICA since this release of ACPI is an
3136errata/clarification release. The specification is available at
3137acpi.info.
3138
3139
31401) ACPICA kernel-resident subsystem:
3141
3142Added validation of the XSDT root table if it is present. Some older
3143platforms contain an XSDT that is ill-formed or otherwise invalid (such
3144as containing some or all entries that are NULL pointers). This change
3145adds a new function to validate the XSDT before actually using it. If the
3146XSDT is found to be invalid, ACPICA will now automatically fall back to
3147using the RSDT instead. Original implementation by Zhao Yakui. Ported to
3148ACPICA and enhanced by Lv Zheng and Bob Moore.
3149
3150Added a runtime option to ignore the XSDT and force the use of the RSDT.
3151This change adds a runtime option that will force ACPICA to use the RSDT
3152instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
3153requires that an XSDT be used instead of the RSDT, the XSDT has been
3154found to be corrupt or ill-formed on some machines. Lv Zheng.
3155
3156Added a runtime option to favor 32-bit FADT register addresses over the
315764-bit addresses. This change adds an option to favor 32-bit FADT
3158addresses when there is a conflict between the 32-bit and 64-bit versions
3159of the same register. The default behavior is to use the 64-bit version
3160in accordance with the ACPI specification. This can now be overridden via
3161the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
3162
3163During the change above, the internal "Convert FADT" and "Verify FADT"
3164functions have been merged to simplify the code, making it easier to
3165understand and maintain. ACPICA BZ 933.
3166
3167Improve exception reporting and handling for GPE block installation.
3168Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
3169status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
3170
3171Added helper macros to extract bus/segment numbers from the HEST table.
3172This change adds two macros to extract the encoded bus and segment
3173numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
3174Betty Dall <betty.dall@hp.com>
3175
3176Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
3177by ACPICA. It is not a public macro, so it should have no effect on
3178existing OSV code. Lv Zheng.
3179
3180Example Code and Data Size: These are the sizes for the OS-independent
3181acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3182debug version of the code includes the debug output trace mechanism and
3183has a much larger code and data size.
3184
3185  Current Release:
3186    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
3187    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
3188  Previous Release:
3189    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
3190    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
3191
3192
31932) iASL Compiler/Disassembler and Tools:
3194
3195Disassembler: Improved pathname support for emitted External()
3196statements. This change adds full pathname support for external names
3197that have been resolved internally by the inclusion of additional ACPI
3198tables (via the iASL -e option). Without this change, the disassembler
3199can emit multiple externals for the same object, or it become confused
3200when the Scope() operator is used on an external object. Overall, greatly
3201improves the ability to actually recompile the emitted ASL code when
3202objects a referenced across multiple ACPI tables. Reported by Michael
3203Tsirkin (mst@redhat.com).
3204
3205Tests/ASLTS: Updated functional control suite to execute with no errors.
3206David Box. Fixed several errors related to the testing of the interpreter
3207slack mode. Lv Zheng.
3208
3209iASL: Added support to detect names that are declared within a control
3210method, but are unused (these are temporary names that are only valid
3211during the time the method is executing). A remark is issued for these
3212cases. ACPICA BZ 1022.
3213
3214iASL: Added full support for the DBG2 table. Adds full disassembler,
3215table compiler, and template generator support for the DBG2 table (Debug
3216Port 2 table).
3217
3218iASL: Added full support for the PCCT table, update the table definition.
3219Updates the PCCT table definition in the actbl3.h header and adds table
3220compiler and template generator support.
3221
3222iASL: Added an option to emit only error messages (no warnings/remarks).
3223The -ve option will enable only error messages, warnings and remarks are
3224suppressed. This can simplify debugging when only the errors are
3225important, such as when an ACPI table is disassembled and there are many
3226warnings and remarks -- but only the actual errors are of real interest.
3227
3228Example ACPICA code (source/tools/examples): Updated the example code so
3229that it builds to an actual working program, not just example code. Added
3230ACPI tables and execution of an example control method in the DSDT. Added
3231makefile support for Unix generation.
3232
3233
3234----------------------------------------
323515 November 2013. Summary of changes for version 20131115:
3236
3237This release is available at https://acpica.org/downloads
3238
3239
32401) ACPICA kernel-resident subsystem:
3241
3242Resource Manager: Fixed loop termination for the "get AML length"
3243function. The loop previously had an error termination on a NULL resource
3244pointer, which can never happen since the loop simply increments a valid
3245resource pointer. This fix changes the loop to terminate with an error on
3246an invalid end-of-buffer condition. The problem can be seen as an
3247infinite loop by callers to AcpiSetCurrentResources with an invalid or
3248corrupted resource descriptor, or a resource descriptor that is missing
3249an END_TAG descriptor. Reported by Dan Carpenter
3250<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
3251
3252Table unload and ACPICA termination: Delete all attached data objects
3253during namespace node deletion. This fix updates namespace node deletion
3254to delete the entire list of attached objects (attached via
3255AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
32561024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
3257
3258ACPICA termination: Added support to delete all objects attached to the
3259root namespace node. This fix deletes any and all objects that have been
3260attached to the root node via AcpiAttachData. Previously, none of these
3261objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
3262
3263Debug output: Do not emit the function nesting level for the in-kernel
3264build. The nesting level is really only useful during a single-thread
3265execution. Therefore, only enable this output for the AcpiExec utility.
3266Also, only emit the thread ID when executing under AcpiExec (Context
3267switches are still always detected and a message is emitted). ACPICA BZ
3268972.
3269
3270Example Code and Data Size: These are the sizes for the OS-independent
3271acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3272debug version of the code includes the debug output trace mechanism and
3273has a much larger code and data size.
3274
3275  Current Release:
3276    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
3277    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
3278  Previous Release:
3279    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
3280    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
3281
3282
32832) iASL Compiler/Disassembler and Tools:
3284
3285AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
3286correct portable POSIX header for terminal control functions.
3287
3288Disassembler: Fixed control method invocation issues related to the use
3289of the CondRefOf() operator. The problem is seen in the disassembly where
3290control method invocations may not be disassembled properly if the
3291control method name has been used previously as an argument to CondRefOf.
3292The solution is to not attempt to emit an external declaration for the
3293CondRefOf target (it is not necessary in the first place). This prevents
3294disassembler object type confusion. ACPICA BZ 988.
3295
3296Unix Makefiles: Added an option to disable compiler optimizations and the
3297_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
3298with optimizations (reportedly, gcc 4.4 for example). This change adds a
3299command line option for make (NOOPT) that disables all compiler
3300optimizations and the _FORTIFY_SOURCE compiler flag. The default
3301optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
33021034. Lv Zheng, Bob Moore.
3303
3304Tests/ASLTS: Added options to specify individual test cases and modes.
3305This allows testers running aslts.sh to optionally specify individual
3306test modes and test cases. Also added an option to disable the forced
3307generation of the ACPICA tools from source if desired. Lv Zheng.
3308
3309----------------------------------------
331027 September 2013. Summary of changes for version 20130927:
3311
3312This release is available at https://acpica.org/downloads
3313
3314
33151) ACPICA kernel-resident subsystem:
3316
3317Fixed a problem with store operations to reference objects. This change
3318fixes a problem where a Store operation to an ArgX object that contained
3319a
3320reference to a field object did not complete the automatic dereference
3321and
3322then write to the actual field object. Instead, the object type of the
3323field object was inadvertently changed to match the type of the source
3324operand. The new behavior will actually write to the field object (buffer
3325field or field unit), thus matching the correct ACPI-defined behavior.
3326
3327Implemented support to allow the host to redefine individual OSL
3328prototypes. This change enables the host to redefine OSL prototypes found
3329in the acpiosxf.h file. This allows the host to implement OSL interfaces
3330with a macro or inlined function. Further, it allows the host to add any
3331additional required modifiers such as __iomem, __init, __exit, etc., as
3332necessary on a per-interface basis. Enables maximum flexibility for the
3333OSL interfaces. Lv Zheng.
3334
3335Hardcoded the access width for the FADT-defined reset register. The ACPI
3336specification requires the reset register width to be 8 bits. ACPICA now
3337hardcodes the width to 8 and ignores the FADT width value. This provides
3338compatibility with other ACPI implementations that have allowed BIOS code
3339with bad register width values to go unnoticed. Matthew Garett, Bob
3340Moore,
3341Lv Zheng.
3342
3343Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
3344used
3345in the OSL header (acpiosxf). The change modifies the position of this
3346macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
3347build issues if the OSL defines the implementation of the interface to be
3348an inline stub function. Lv Zheng.
3349
3350Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
3351initialization interfaces. This change adds a new macro for the main init
3352and terminate external interfaces in order to support hosts that require
3353additional or different processing for these functions. Changed from
3354ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
3355Zheng, Bob Moore.
3356
3357Cleaned up the memory allocation macros for configurability. In the
3358common
3359case, the ACPI_ALLOCATE and related macros now resolve directly to their
3360respective AcpiOs* OSL interfaces. Two options:
33611) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
3362default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
33632) For AcpiExec (and for debugging), the macros can optionally be
3364resolved
3365to the local ACPICA interfaces that track each allocation (local tracking
3366is used to immediately detect memory leaks).
3367Lv Zheng.
3368
3369Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
3370to predefine this macro to either TRUE or FALSE during the system build.
3371
3372Replaced __FUNCTION_ with __func__ in the gcc-specific header.
3373
3374Example Code and Data Size: These are the sizes for the OS-independent
3375acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3376debug version of the code includes the debug output trace mechanism and
3377has a much larger code and data size.
3378
3379  Current Release:
3380    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
3381    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
3382  Previous Release:
3383    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
3384    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
3385
3386
33872) iASL Compiler/Disassembler and Tools:
3388
3389iASL: Implemented wildcard support for the -e option. This simplifies use
3390when there are many SSDTs that must be included to resolve external
3391method
3392declarations. ACPICA BZ 1041. Example:
3393    iasl -e ssdt*.dat -d dsdt.dat
3394
3395AcpiExec: Add history/line-editing for Unix/Linux systems. This change
3396adds a portable module that implements full history and limited line
3397editing for Unix and Linux systems. It does not use readline() due to
3398portability issues. Instead it uses the POSIX termio interface to put the
3399terminal in raw input mode so that the various special keys can be
3400trapped
3401(such as up/down-arrow for history support and left/right-arrow for line
3402editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
3403
3404AcpiXtract: Add support to handle (ignore) "empty" lines containing only
3405one or more spaces. This provides compatible with early or different
3406versions of the AcpiDump utility. ACPICA BZ 1044.
3407
3408AcpiDump: Do not ignore tables that contain only an ACPI table header.
3409Apparently, some BIOSs create SSDTs that contain an ACPI table header but
3410no other data. This change adds support to dump these tables. Any tables
3411shorter than the length of an ACPI table header remain in error (an error
3412message is emitted). Reported by Yi Li.
3413
3414Debugger: Echo actual command along with the "unknown command" message.
3415
3416----------------------------------------
341723 August 2013. Summary of changes for version 20130823:
3418
34191) ACPICA kernel-resident subsystem:
3420
3421Implemented support for host-installed System Control Interrupt (SCI)
3422handlers. Certain ACPI functionality requires the host to handle raw
3423SCIs. For example, the "SCI Doorbell" that is defined for memory power
3424state support requires the host device driver to handle SCIs to examine
3425if the doorbell has been activated. Multiple SCI handlers can be
3426installed to allow for future expansion. New external interfaces are
3427AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
3428details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
3429
3430Operation region support: Never locally free the handler "context"
3431pointer. This change removes some dangerous code that attempts to free
3432the handler context pointer in some (rare) circumstances. The owner of
3433the handler owns this pointer and the ACPICA code should never touch it.
3434Although not seen to be an issue in any kernel, it did show up as a
3435problem (fault) under AcpiExec. Also, set the internal storage field for
3436the context pointer to zero when the region is deactivated, simply for
3437sanity. David Box. ACPICA BZ 1039.
3438
3439AcpiRead: On error, do not modify the return value target location. If an
3440error happens in the middle of a split 32/32 64-bit I/O operation, do not
3441modify the target of the return value pointer. Makes the code consistent
3442with the rest of ACPICA. Bjorn Helgaas.
3443
3444Example Code and Data Size: These are the sizes for the OS-independent
3445acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3446debug version of the code includes the debug output trace mechanism and
3447has a much larger code and data size.
3448
3449  Current Release:
3450    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
3451    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
3452  Previous Release:
3453    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
3454    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
3455
3456
34572) iASL Compiler/Disassembler and Tools:
3458
3459AcpiDump: Implemented several new features and fixed some problems:
34601) Added support to dump the RSDP, RSDT, and XSDT tables.
34612) Added support for multiple table instances (SSDT, UEFI).
34623) Added option to dump "customized" (overridden) tables (-c).
34634) Fixed a problem where some table filenames were improperly
3464constructed.
34655) Improved some error messages, removed some unnecessary messages.
3466
3467iASL: Implemented additional support for disassembly of ACPI tables that
3468contain invocations of external control methods. The -fe<file> option
3469allows the import of a file that specifies the external methods along
3470with the required number of arguments for each -- allowing for the
3471correct disassembly of the table. This is a workaround for a limitation
3472of AML code where the disassembler often cannot determine the number of
3473arguments required for an external control method and generates incorrect
3474ASL code. See the iASL reference for details. ACPICA BZ 1030.
3475
3476Debugger: Implemented a new command (paths) that displays the full
3477pathnames (namepaths) and object types of all objects in the namespace.
3478This is an alternative to the namespace command.
3479
3480Debugger: Implemented a new command (sci) that invokes the SCI dispatch
3481mechanism and any installed handlers.
3482
3483iASL: Fixed a possible segfault for "too many parent prefixes" condition.
3484This can occur if there are too many parent prefixes in a namepath (for
3485example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
3486
3487Application OSLs: Set the return value for the PCI read functions. These
3488functions simply return AE_OK, but should set the return value to zero
3489also. This change implements this. ACPICA BZ 1038.
3490
3491Debugger: Prevent possible command line buffer overflow. Increase the
3492size of a couple of the debugger line buffers, and ensure that overflow
3493cannot happen. ACPICA BZ 1037.
3494
3495iASL: Changed to abort immediately on serious errors during the parsing
3496phase. Due to the nature of ASL, there is no point in attempting to
3497compile these types of errors, and they typically end up causing a
3498cascade of hundreds of errors which obscure the original problem.
3499
3500----------------------------------------
350125 July 2013. Summary of changes for version 20130725:
3502
35031) ACPICA kernel-resident subsystem:
3504
3505Fixed a problem with the DerefOf operator where references to FieldUnits
3506and BufferFields incorrectly returned the parent object, not the actual
3507value of the object. After this change, a dereference of a FieldUnit
3508reference results in a read operation on the field to get the value, and
3509likewise, the appropriate BufferField value is extracted from the target
3510buffer.
3511
3512Fixed a problem where the _WAK method could cause a fault under these
3513circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
3514method returned no value. The problem is rarely seen because most kernels
3515run ACPICA in slack mode.
3516
3517For the DerefOf operator, a fatal error now results if an attempt is made
3518to dereference a reference (created by the Index operator) to a NULL
3519package element. Provides compatibility with other ACPI implementations,
3520and this behavior will be added to a future version of the ACPI
3521specification.
3522
3523The ACPI Power Management Timer (defined in the FADT) is now optional.
3524This provides compatibility with other ACPI implementations and will
3525appear in the next version of the ACPI specification. If there is no PM
3526Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
3527zero in the FADT indicates no PM timer.
3528
3529Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
3530allows the host to globally enable/disable all vendor strings, all
3531feature strings, or both. Intended to be primarily used for debugging
3532purposes only. Lv Zheng.
3533
3534Expose the collected _OSI data to the host via a global variable. This
3535data tracks the highest level vendor ID that has been invoked by the BIOS
3536so that the host (and potentially ACPICA itself) can change behaviors
3537based upon the age of the BIOS.
3538
3539Example Code and Data Size: These are the sizes for the OS-independent
3540acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3541debug version of the code includes the debug output trace mechanism and
3542has a much larger code and data size.
3543
3544  Current Release:
3545    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
3546    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
3547  Previous Release:
3548    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
3549    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
3550
3551
35522) iASL Compiler/Disassembler and Tools:
3553
3554iASL: Created the following enhancements for the -so option (create
3555offset table):
35561)Add offsets for the last nameseg in each namepath for every supported
3557object type
35582)Add support for Processor, Device, Thermal Zone, and Scope objects
35593)Add the actual AML opcode for the parent object of every supported
3560object type
35614)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
3562
3563Disassembler: Emit all unresolved external symbols in a single block.
3564These are external references to control methods that could not be
3565resolved, and thus, the disassembler had to make a guess at the number of
3566arguments to parse.
3567
3568iASL: The argument to the -T option (create table template) is now
3569optional. If not specified, the default table is a DSDT, typically the
3570most common case.
3571
3572----------------------------------------
357326 June 2013. Summary of changes for version 20130626:
3574
35751) ACPICA kernel-resident subsystem:
3576
3577Fixed an issue with runtime repair of the _CST object. Null or invalid
3578elements were not always removed properly. Lv Zheng.
3579
3580Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
3581FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
3582the maximum number of GPEs is 1016. Use of multiple GPE block devices
3583makes the system-wide number of GPEs essentially unlimited.
3584
3585Example Code and Data Size: These are the sizes for the OS-independent
3586acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3587debug version of the code includes the debug output trace mechanism and
3588has a much larger code and data size.
3589
3590  Current 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  Previous Release:
3594    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
3595    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
3596
3597
35982) iASL Compiler/Disassembler and Tools:
3599
3600Portable AcpiDump: Implemented full support for the Linux and FreeBSD
3601hosts. Now supports Linux, FreeBSD, and Windows.
3602
3603Disassembler: Added some missing types for the HEST and EINJ tables: "Set
3604Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
3605
3606iASL/Preprocessor: Implemented full support for nested
3607#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
3608
3609Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
3610max. The original purpose of this constraint was to limit the amount of
3611debug output. However, the string function in question (UtPrintString) is
3612now used for the disassembler also, where 256 bytes is insufficient.
3613Reported by RehabMan@GitHub.
3614
3615iASL/DataTables: Fixed some problems and issues with compilation of DMAR
3616tables. ACPICA BZ 999. Lv Zheng.
3617
3618iASL: Fixed a couple of error exit issues that could result in a "Could
3619not delete <file>" message during ASL compilation.
3620
3621AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
3622the actual signatures for these tables are "FACP" and "APIC",
3623respectively.
3624
3625AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
3626tables are allowed to have multiple instances.
3627
3628----------------------------------------
362917 May 2013. Summary of changes for version 20130517:
3630
36311) ACPICA kernel-resident subsystem:
3632
3633Fixed a regression introduced in version 20130328 for _INI methods. This
3634change fixes a problem introduced in 20130328 where _INI methods are no
3635longer executed properly because of a memory block that was not
3636initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
3637<tomasz.nowicki@linaro.org>.
3638
3639Fixed a possible problem with the new extended sleep registers in the
3640ACPI
36415.0 FADT. Do not use these registers (even if populated) unless the HW-
3642reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
36431020. Lv Zheng.
3644
3645Implemented return value repair code for _CST predefined objects: Sort
3646the
3647list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
3648
3649Implemented a debug-only option to disable loading of SSDTs from the
3650RSDT/XSDT during ACPICA initialization. This can be useful for debugging
3651ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
3652acglobal.h - ACPICA BZ 1005. Lv Zheng.
3653
3654Fixed some issues in the ACPICA initialization and termination code:
3655Tomasz Nowicki <tomasz.nowicki@linaro.org>
36561) Clear events initialized flag upon event component termination. ACPICA
3657BZ 1013.
36582) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
36593) Delete global lock pending lock during termination. ACPICA BZ 1012.
36604) Clear debug buffer global on termination to prevent possible multiple
3661delete. ACPICA BZ 1010.
3662
3663Standardized all switch() blocks across the entire source base. After
3664many
3665years, different formatting for switch() had crept in. This change makes
3666the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
3667
3668Split some files to enhance ACPICA modularity and configurability:
36691) Split buffer dump routines into utilities/utbuffer.c
36702) Split internal error message routines into utilities/uterror.c
36713) Split table print utilities into tables/tbprint.c
36724) Split iASL command-line option processing into asloptions.c
3673
3674Makefile enhancements:
36751) Support for all new files above.
36762) Abort make on errors from any subcomponent. Chao Guan.
36773) Add build support for Apple Mac OS X. Liang Qi.
3678
3679Example Code and Data Size: These are the sizes for the OS-independent
3680acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3681debug version of the code includes the debug output trace mechanism and
3682has a much larger code and data size.
3683
3684  Current Release:
3685    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
3686    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
3687  Previous Release:
3688    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
3689    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
3690
3691
36922) iASL Compiler/Disassembler and Tools:
3693
3694New utility: Implemented an easily portable version of the acpidump
3695utility to extract ACPI tables from the system (or a file) in an ASCII
3696hex
3697dump format. The top-level code implements the various command line
3698options, file I/O, and table dump routines. To port to a new host, only
3699three functions need to be implemented to get tables -- since this
3700functionality is OS-dependent. See the tools/acpidump/apmain.c module and
3701the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
37021) The Windows version obtains the ACPI tables from the Registry.
37032) The Linux version is under development.
37043) Other hosts - If an OS-dependent module is submitted, it will be
3705distributed with ACPICA.
3706
3707iASL: Fixed a regression for -D preprocessor option (define symbol). A
3708restructuring/change to the initialization sequence caused this option to
3709no longer work properly.
3710
3711iASL: Implemented a mechanism to disable specific warnings and remarks.
3712Adds a new command line option, "-vw <messageid> as well as "#pragma
3713disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
3714
3715iASL: Fix for too-strict package object validation. The package object
3716validation for return values from the predefined names is a bit too
3717strict, it does not allow names references within the package (which will
3718be resolved at runtime.) These types of references cannot be validated at
3719compile time. This change ignores named references within package objects
3720for names that return or define static packages.
3721
3722Debugger: Fixed the 80-character command line limitation for the History
3723command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
3724
3725iASL: Added control method and package support for the -so option
3726(generates AML offset table for BIOS support.)
3727
3728iASL: issue a remark if a non-serialized method creates named objects. If
3729a thread blocks within the method for any reason, and another thread
3730enters the method, the method will fail because an attempt will be made
3731to
3732create the same (named) object twice. In this case, issue a remark that
3733the method should be marked serialized. NOTE: may become a warning later.
3734ACPICA BZ 909.
3735
3736----------------------------------------
373718 April 2013. Summary of changes for version 20130418:
3738
37391) ACPICA kernel-resident subsystem:
3740
3741Fixed a possible buffer overrun during some rare but specific field unit
3742read operations. This overrun can only happen if the DSDT version is 1 --
3743meaning that all AML integers are 32 bits -- and the field length is
3744between 33 and 55 bits long. During the read, an internal buffer object
3745is
3746created for the field unit because the field is larger than an integer
3747(32
3748bits). However, in this case, the buffer will be incorrectly written
3749beyond the end because the buffer length is less than the internal
3750minimum
3751of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
3752long, but a full 8 bytes will be written.
3753
3754Updated the Embedded Controller "orphan" _REG method support. This refers
3755to _REG methods under the EC device that have no corresponding operation
3756region. This is allowed by the ACPI specification. This update removes a
3757dependency on the existence an ECDT table. It will execute an orphan _REG
3758method as long as the operation region handler for the EC is installed at
3759the EC device node and not the namespace root. Rui Zhang (original
3760update), Bob Moore (update/integrate).
3761
3762Implemented run-time argument typechecking for all predefined ACPI names
3763(_STA, _BIF, etc.) This change performs object typechecking on all
3764incoming arguments for all predefined names executed via
3765AcpiEvaluateObject. This ensures that ACPI-related device drivers are
3766passing correct object types as well as the correct number of arguments
3767(therefore identifying any issues immediately). Also, the ASL/namespace
3768definition of the predefined name is checked against the ACPI
3769specification for the proper argument count. Adds one new file,
3770nsarguments.c
3771
3772Changed an exception code for the ASL UnLoad() operator. Changed the
3773exception code for the case where the input DdbHandle is invalid, from
3774AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
3775
3776Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
3777global makefile. The use of this flag causes compiler errors on earlier
3778versions of GCC, so it has been removed for compatibility.
3779
3780Miscellaneous cleanup:
37811) Removed some unused/obsolete macros
37822) Fixed a possible memory leak in the _OSI support
37833) Removed an unused variable in the predefined name support
37844) Windows OSL: remove obsolete reference to a memory list field
3785
3786Example Code and Data Size: These are the sizes for the OS-independent
3787acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3788debug version of the code includes the debug output trace mechanism and
3789has a much larger code and data size.
3790
3791  Current Release:
3792    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
3793    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
3794  Previous Release:
3795    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
3796    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
3797
3798
37992) iASL Compiler/Disassembler and Tools:
3800
3801AcpiExec: Added installation of a handler for the SystemCMOS address
3802space. This prevents control method abort if a method accesses this
3803space.
3804
3805AcpiExec: Added support for multiple EC devices, and now install EC
3806operation region handler(s) at the actual EC device instead of the
3807namespace root. This reflects the typical behavior of host operating
3808systems.
3809
3810AcpiExec: Updated to ensure that all operation region handlers are
3811installed before the _REG methods are executed. This prevents a _REG
3812method from aborting if it accesses an address space has no handler.
3813AcpiExec installs a handler for every possible address space.
3814
3815Debugger: Enhanced the "handlers" command to display non-root handlers.
3816This change enhances the handlers command to display handlers associated
3817with individual devices throughout the namespace, in addition to the
3818currently supported display of handlers associated with the root
3819namespace
3820node.
3821
3822ASL Test Suite: Several test suite errors have been identified and
3823resolved, reducing the total error count during execution. Chao Guan.
3824
3825----------------------------------------
382628 March 2013. Summary of changes for version 20130328:
3827
38281) ACPICA kernel-resident subsystem:
3829
3830Fixed several possible race conditions with the internal object reference
3831counting mechanism. Some of the external ACPICA interfaces update object
3832reference counts without holding the interpreter or namespace lock. This
3833change adds a spinlock to protect reference count updates on the internal
3834ACPICA objects. Reported by and with assistance from Andriy Gapon
3835(avg@FreeBSD.org).
3836
3837FADT support: Removed an extraneous warning for very large GPE register
3838sets. This change removes a size mismatch warning if the legacy length
3839field for a GPE register set is larger than the 64-bit GAS structure can
3840accommodate. GPE register sets can be larger than the 255-bit width
3841limitation of the GAS structure. Linn Crosetto (linn@hp.com).
3842
3843_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
3844return from this interface. Handles a possible timeout case if
3845ACPI_WAIT_FOREVER is modified by the host to be a value less than
3846"forever". Jung-uk Kim.
3847
3848Predefined name support: Add allowed/required argument type information
3849to
3850the master predefined info table. This change adds the infrastructure to
3851enable typechecking on incoming arguments for all predefined
3852methods/objects. It does not actually contain the code that will fully
3853utilize this information, this is still under development. Also condenses
3854some duplicate code for the predefined names into a new module,
3855utilities/utpredef.c
3856
3857Example Code and Data Size: These are the sizes for the OS-independent
3858acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3859debug version of the code includes the debug output trace mechanism and
3860has a much larger code and data size.
3861
3862  Previous Release:
3863    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
3864    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
3865  Current Release:
3866    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
3867    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
3868
3869
38702) iASL Compiler/Disassembler and Tools:
3871
3872iASL: Implemented a new option to simplify the development of ACPI-
3873related
3874BIOS code. Adds support for a new "offset table" output file. The -so
3875option will create a C table containing the AML table offsets of various
3876named objects in the namespace so that BIOS code can modify them easily
3877at
3878boot time. This can simplify BIOS runtime code by eliminating expensive
3879searches for "magic values", enhancing boot times and adding greater
3880reliability. With assistance from Lee Hamel.
3881
3882iASL: Allow additional predefined names to return zero-length packages.
3883Now, all predefined names that are defined by the ACPI specification to
3884return a "variable-length package of packages" are allowed to return a
3885zero length top-level package. This allows the BIOS to tell the host that
3886the requested feature is not supported, and supports existing BIOS/ASL
3887code and practices.
3888
3889iASL: Changed the "result not used" warning to an error. This is the case
3890where an ASL operator is effectively a NOOP because the result of the
3891operation is not stored anywhere. For example:
3892    Add (4, Local0)
3893There is no target (missing 3rd argument), nor is the function return
3894value used. This is potentially a very serious problem -- since the code
3895was probably intended to do something, but for whatever reason, the value
3896was not stored. Therefore, this issue has been upgraded from a warning to
3897an error.
3898
3899AcpiHelp: Added allowable/required argument types to the predefined names
3900info display. This feature utilizes the recent update to the predefined
3901names table (above).
3902
3903----------------------------------------
390414 February 2013. Summary of changes for version 20130214:
3905
39061) ACPICA Kernel-resident Subsystem:
3907
3908Fixed a possible regression on some hosts: Reinstated the safe return
3909macros (return_ACPI_STATUS, etc.) that ensure that the argument is
3910evaluated only once. Although these macros are not needed for the ACPICA
3911code itself, they are often used by ACPI-related host device drivers
3912where
3913the safe feature may be necessary.
3914
3915Fixed several issues related to the ACPI 5.0 reduced hardware support
3916(SOC): Now ensure that if the platform declares itself as hardware-
3917reduced
3918via the FADT, the following functions become NOOPs (and always return
3919AE_OK) because ACPI is always enabled by definition on these machines:
3920  AcpiEnable
3921  AcpiDisable
3922  AcpiHwGetMode
3923  AcpiHwSetMode
3924
3925Dynamic Object Repair: Implemented additional runtime repairs for
3926predefined name return values. Both of these repairs can simplify code in
3927the related device drivers that invoke these methods:
39281) For the _STR and _MLS names, automatically repair/convert an ASCII
3929string to a Unicode buffer.
39302) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
3931a
3932lone end tag descriptor in the following cases: A Return(0) was executed,
3933a null buffer was returned, or no object at all was returned (non-slack
3934mode only). Adds a new file, nsconvert.c
3935ACPICA BZ 998. Bob Moore, Lv Zheng.
3936
3937Resource Manager: Added additional code to prevent possible infinite
3938loops
3939while traversing corrupted or ill-formed resource template buffers. Check
3940for zero-length resource descriptors in all code that loops through
3941resource templates (the length field is used to index through the
3942template). This change also hardens the external AcpiWalkResources and
3943AcpiWalkResourceBuffer interfaces.
3944
3945Local Cache Manager: Enhanced the main data structure to eliminate an
3946unnecessary mechanism to access the next object in the list. Actually
3947provides a small performance enhancement for hosts that use the local
3948ACPICA cache manager. Jung-uk Kim.
3949
3950Example Code and Data Size: These are the sizes for the OS-independent
3951acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3952debug version of the code includes the debug output trace mechanism and
3953has a much larger code and data size.
3954
3955  Previous Release:
3956    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
3957    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
3958  Current Release:
3959    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
3960    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
3961
3962
39632) iASL Compiler/Disassembler and Tools:
3964
3965iASL/Disassembler: Fixed several issues with the definition of the ACPI
39665.0 RASF table (RAS Feature Table). This change incorporates late changes
3967that were made to the ACPI 5.0 specification.
3968
3969iASL/Disassembler: Added full support for the following new ACPI tables:
3970  1) The MTMR table (MID Timer Table)
3971  2) The VRTC table (Virtual Real Time Clock Table).
3972Includes header file, disassembler, table compiler, and template support
3973for both tables.
3974
3975iASL: Implemented compile-time validation of package objects returned by
3976predefined names. This new feature validates static package objects
3977returned by the various predefined names defined to return packages. Both
3978object types and package lengths are validated, for both parent packages
3979and sub-packages, if any. The code is similar in structure and behavior
3980to
3981the runtime repair mechanism within the AML interpreter and uses the
3982existing predefined name information table. Adds a new file, aslprepkg.c.
3983ACPICA BZ 938.
3984
3985iASL: Implemented auto-detection of binary ACPI tables for disassembly.
3986This feature detects a binary file with a valid ACPI table header and
3987invokes the disassembler automatically. Eliminates the need to
3988specifically invoke the disassembler with the -d option. ACPICA BZ 862.
3989
3990iASL/Disassembler: Added several warnings for the case where there are
3991unresolved control methods during the disassembly. This can potentially
3992cause errors when the output file is compiled, because the disassembler
3993assumes zero method arguments in these cases (it cannot determine the
3994actual number of arguments without resolution/definition of the method).
3995
3996Debugger: Added support to display all resources with a single command.
3997Invocation of the resources command with no arguments will now display
3998all
3999resources within the current namespace.
4000
4001AcpiHelp: Added descriptive text for each ACPICA exception code displayed
4002via the -e option.
4003
4004----------------------------------------
400517 January 2013. Summary of changes for version 20130117:
4006
40071) ACPICA Kernel-resident Subsystem:
4008
4009Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
4010return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
4011objects to return a package containing one integer, most BIOS code
4012returns
4013two integers and the previous code reflects that. However, we also need
4014to
4015support BIOS code that actually implements to the ACPI spec, and this
4016change reflects this.
4017
4018Fixed two issues with the ACPI_DEBUG_PRINT macros:
40191) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
4020C compilers that require this support.
40212) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
4022ACPI_DEBUG is already used by many of the various hosts.
4023
4024Updated all ACPICA copyrights and signons to 2013. Added the 2013
4025copyright to all module headers and signons, including the standard Linux
4026header. This affects virtually every file in the ACPICA core subsystem,
4027iASL compiler, all ACPICA utilities, and the test suites.
4028
4029Example Code and Data Size: These are the sizes for the OS-independent
4030acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4031debug version of the code includes the debug output trace mechanism and
4032has a much larger code and data size.
4033
4034  Previous Release:
4035    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
4036    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
4037  Current Release:
4038    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
4039    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
4040
4041
40422) iASL Compiler/Disassembler and Tools:
4043
4044Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
4045prevent a possible fault on some hosts. Some C libraries modify the arg
4046pointer parameter to vfprintf making it difficult to call it twice in the
4047AcpiOsVprintf function. Use a local buffer to workaround this issue. This
4048does not affect the Windows OSL since the Win C library does not modify
4049the arg pointer. Chao Guan, Bob Moore.
4050
4051iASL: Fixed a possible infinite loop when the maximum error count is
4052reached. If an output file other than the .AML file is specified (such as
4053a listing file), and the maximum number of errors is reached, do not
4054attempt to flush data to the output file(s) as the compiler is aborting.
4055This can cause an infinite loop as the max error count code essentially
4056keeps calling itself.
4057
4058iASL/Disassembler: Added an option (-in) to ignore NOOP
4059opcodes/operators.
4060Implemented for both the compiler and the disassembler. Often, the NOOP
4061opcode is used as padding for packages that are changed dynamically by
4062the
4063BIOS. When disassembled and recompiled, these NOOPs will cause syntax
4064errors. This option causes the disassembler to ignore all NOOP opcodes
4065(0xA3), and it also causes the compiler to ignore all ASL source code
4066NOOP
4067statements as well.
4068
4069Debugger: Enhanced the Sleep command to execute all sleep states. This
4070change allows Sleep to be invoked with no arguments and causes the
4071debugger to execute all of the sleep states, 0-5, automatically.
4072
4073----------------------------------------
407420 December 2012. Summary of changes for version 20121220:
4075
40761) ACPICA Kernel-resident Subsystem:
4077
4078Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
4079alternate entry point for AcpiWalkResources and improves the usability of
4080the resource manager by accepting as input a buffer containing the output
4081of either a _CRS, _PRS, or _AEI method. The key functionality is that the
4082input buffer is not deleted by this interface so that it can be used by
4083the host later. See the ACPICA reference for details.
4084
4085Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
4086(DSDT version < 2). The constant will be truncated and this warning
4087reflects that behavior.
4088
4089Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
4090ExtendedInterrupt, and GpioInt descriptors. This change adds support to
4091both get and set the new wake bit in these descriptors, separately from
4092the existing share bit. Reported by Aaron Lu.
4093
4094Interpreter: Fix Store() when an implicit conversion is not possible. For
4095example, in the cases such as a store of a string to an existing package
4096object, implement the store as a CopyObject(). This is a small departure
4097from the ACPI specification which states that the control method should
4098be
4099aborted in this case. However, the ASLTS suite depends on this behavior.
4100
4101Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
4102macros: check if debug output is currently enabled as soon as possible to
4103minimize performance impact if debug is in fact not enabled.
4104
4105Source code restructuring: Cleanup to improve modularity. The following
4106new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
4107psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
4108Associated makefiles and project files have been updated.
4109
4110Changed an exception code for LoadTable operator. For the case where one
4111of the input strings is too long, change the returned exception code from
4112AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
4113
4114Fixed a possible memory leak in dispatcher error path. On error, delete
4115the mutex object created during method mutex creation. Reported by
4116tim.gardner@canonical.com.
4117
4118Example Code and Data Size: These are the sizes for the OS-independent
4119acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4120debug version of the code includes the debug output trace mechanism and
4121has a much larger code and data size.
4122
4123  Previous Release:
4124    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
4125    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
4126  Current Release:
4127    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
4128    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
4129
4130
41312) iASL Compiler/Disassembler and Tools:
4132
4133iASL: Disallow a method call as argument to the ObjectType ASL operator.
4134This change tracks an errata to the ACPI 5.0 document. The AML grammar
4135will not allow the interpreter to differentiate between a method and a
4136method invocation when these are used as an argument to the ObjectType
4137operator. The ACPI specification change is to disallow a method
4138invocation
4139(UserTerm) for the ObjectType operator.
4140
4141Finish support for the TPM2 and CSRT tables in the headers, table
4142compiler, and disassembler.
4143
4144Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
4145always expires immediately if the semaphore is not available. The
4146original
4147code was using a relative-time timeout, but sem_timedwait requires the
4148use
4149of an absolute time.
4150
4151iASL: Added a remark if the Timer() operator is used within a 32-bit
4152table. This operator returns a 64-bit time value that will be truncated
4153within a 32-bit table.
4154
4155iASL Source code restructuring: Cleanup to improve modularity. The
4156following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
4157aslmethod.c, and aslfileio.c. Associated makefiles and project files have
4158been updated.
4159
4160
4161----------------------------------------
416214 November 2012. Summary of changes for version 20121114:
4163
41641) ACPICA Kernel-resident Subsystem:
4165
4166Implemented a performance enhancement for ACPI/AML Package objects. This
4167change greatly increases the performance of Package objects within the
4168interpreter. It changes the processing of reference counts for packages
4169by
4170optimizing for the most common case where the package sub-objects are
4171either Integers, Strings, or Buffers. Increases the overall performance
4172of
4173the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
41742X.)
4175Chao Guan. ACPICA BZ 943.
4176
4177Implemented and deployed common macros to extract flag bits from resource
4178descriptors. Improves readability and maintainability of the code. Fixes
4179a
4180problem with the UART serial bus descriptor for the number of data bits
4181flags (was incorrectly 2 bits, should be 3).
4182
4183Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
4184of the macros and changed the SETx macros to the style of (destination,
4185source). Also added ACPI_CASTx companion macros. Lv Zheng.
4186
4187Example Code and Data Size: These are the sizes for the OS-independent
4188acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4189debug version of the code includes the debug output trace mechanism and
4190has a much larger code and data size.
4191
4192  Previous Release:
4193    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
4194    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
4195  Current Release:
4196    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
4197    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
4198
4199
42002) iASL Compiler/Disassembler and Tools:
4201
4202Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
4203adds the ShareAndWake and ExclusiveAndWake flags which were added to the
4204Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
4205
4206Disassembler: Fixed a problem with external declaration generation. Fixes
4207a problem where an incorrect pathname could be generated for an external
4208declaration if the original reference to the object includes leading
4209carats (^). ACPICA BZ 984.
4210
4211Debugger: Completed a major update for the Disassemble<method> command.
4212This command was out-of-date and did not properly disassemble control
4213methods that had any reasonable complexity. This fix brings the command
4214up
4215to the same level as the rest of the disassembler. Adds one new file,
4216dmdeferred.c, which is existing code that is now common with the main
4217disassembler and the debugger disassemble command. ACPICA MZ 978.
4218
4219iASL: Moved the parser entry prototype to avoid a duplicate declaration.
4220Newer versions of Bison emit this prototype, so moved the prototype out
4221of
4222the iASL header to where it is actually used in order to avoid a
4223duplicate
4224declaration.
4225
4226iASL/Tools: Standardized use of the stream I/O functions:
4227  1) Ensure check for I/O error after every fopen/fread/fwrite
4228  2) Ensure proper order of size/count arguments for fread/fwrite
4229  3) Use test of (Actual != Requested) after all fwrite, and most fread
4230  4) Standardize I/O error messages
4231Improves reliability and maintainability of the code. Bob Moore, Lv
4232Zheng.
4233ACPICA BZ 981.
4234
4235Disassembler: Prevent duplicate External() statements. During generation
4236of external statements, detect similar pathnames that are actually
4237duplicates such as these:
4238  External (\ABCD)
4239  External (ABCD)
4240Remove all leading '\' characters from pathnames during the external
4241statement generation so that duplicates will be detected and tossed.
4242ACPICA BZ 985.
4243
4244Tools: Replace low-level I/O with stream I/O functions. Replace
4245open/read/write/close with the stream I/O equivalents
4246fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
4247Moore.
4248
4249AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
4250name header so that AcpiXtract recognizes the output file/table.
4251
4252iASL: Remove obsolete -2 option flag. Originally intended to force the
4253compiler/disassembler into an ACPI 2.0 mode, this was never implemented
4254and the entire concept is now obsolete.
4255
4256----------------------------------------
425718 October 2012. Summary of changes for version 20121018:
4258
4259
42601) ACPICA Kernel-resident Subsystem:
4261
4262Updated support for the ACPI 5.0 MPST table. Fixes some problems
4263introduced by late changes to the table as it was added to the ACPI 5.0
4264specification. Includes header, disassembler, and data table compiler
4265support as well as a new version of the MPST template.
4266
4267AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
42685.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
4269methods: _HID, _CID, and _UID.
4270
4271Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
4272ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
4273name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
4274names for their various drivers. Affects the AcpiGetObjectInfo external
4275interface, and other internal interfaces as well.
4276
4277Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
4278This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
4279on machines that support non-aligned transfers. Optimizes for this case
4280rather than using a strncpy. With assistance from Zheng Lv.
4281
4282Resource Manager: Small fix for buffer size calculation. Fixed a one byte
4283error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
4284
4285Added a new debug print message for AML mutex objects that are force-
4286released. At control method termination, any currently acquired mutex
4287objects are force-released. Adds a new debug-only message for each one
4288that is released.
4289
4290Audited/updated all ACPICA return macros and the function debug depth
4291counter: 1) Ensure that all functions that use the various TRACE macros
4292also use the appropriate ACPICA return macros. 2) Ensure that all normal
4293return statements surround the return expression (value) with parens to
4294ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
4295Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
4296
4297Global source code changes/maintenance: All extra lines at the start and
4298end of each source file have been removed for consistency. Also, within
4299comments, all new sentences start with a single space instead of a double
4300space, again for consistency across the code base.
4301
4302Example Code and Data Size: These are the sizes for the OS-independent
4303acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4304debug version of the code includes the debug output trace mechanism and
4305has a much larger code and data size.
4306
4307  Previous Release:
4308    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
4309    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
4310  Current Release:
4311    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
4312    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
4313
4314
43152) iASL Compiler/Disassembler and Tools:
4316
4317AcpiExec: Improved the algorithm used for memory leak/corruption
4318detection. Added some intelligence to the code that maintains the global
4319list of allocated memory. The list is now ordered by allocated memory
4320address, significantly improving performance. When running AcpiExec on
4321the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
4322on the platform and/or the environment. Note, this performance
4323enhancement affects the AcpiExec utility only, not the kernel-resident
4324ACPICA code.
4325
4326Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
4327the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
4328incorrect table offset reported for invalid opcodes. Report the original
432932-bit value for bad ACPI_NAMEs (as well as the repaired name.)
4330
4331Disassembler: Enhanced the -vt option to emit the binary table data in
4332hex format to assist with debugging.
4333
4334Fixed a potential filename buffer overflow in osunixdir.c. Increased the
4335size of file structure. Colin Ian King.
4336
4337----------------------------------------
433813 September 2012. Summary of changes for version 20120913:
4339
4340
43411) ACPICA Kernel-resident Subsystem:
4342
4343ACPI 5.0: Added two new notify types for the Hardware Error Notification
4344Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
4345and
4346MCE(6).
4347
4348Table Manager: Merged/removed duplicate code in the root table resize
4349functions. One function is external, the other is internal. Lv Zheng,
4350ACPICA
4351BZ 846.
4352
4353Makefiles: Completely removed the obsolete "Linux" makefiles under
4354acpica/generate/linux. These makefiles are obsolete and have been
4355replaced
4356by
4357the generic unix makefiles under acpica/generate/unix.
4358
4359Makefiles: Ensure that binary files always copied properly. Minor rule
4360change
4361to ensure that the final binary output files are always copied up to the
4362appropriate binary directory (bin32 or bin64.)
4363
4364Example Code and Data Size: These are the sizes for the OS-independent
4365acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4366debug
4367version of the code includes the debug output trace mechanism and has a
4368much
4369larger code and data size.
4370
4371  Previous Release:
4372    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
4373    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
4374  Current Release:
4375    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
4376    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
4377
4378
43792) iASL Compiler/Disassembler and Tools:
4380
4381Disassembler: Fixed a possible fault during the disassembly of resource
4382descriptors when a second parse is required because of the invocation of
4383external control methods within the table. With assistance from
4384adq@lidskialf.net. ACPICA BZ 976.
4385
4386iASL: Fixed a namepath optimization problem. An error can occur if the
4387parse
4388node that contains the namepath to be optimized does not have a parent
4389node
4390that is a named object. This change fixes the problem.
4391
4392iASL: Fixed a regression where the AML file is not deleted on errors. The
4393AML
4394output file should be deleted if there are any errors during the
4395compiler.
4396The
4397only exception is if the -f (force output) option is used. ACPICA BZ 974.
4398
4399iASL: Added a feature to automatically increase internal line buffer
4400sizes.
4401Via realloc(), automatically increase the internal line buffer sizes as
4402necessary to support very long source code lines. The current version of
4403the
4404preprocessor requires a buffer long enough to contain full source code
4405lines.
4406This change increases the line buffer(s) if the input lines go beyond the
4407current buffer size. This eliminates errors that occurred when a source
4408code
4409line was longer than the buffer.
4410
4411iASL: Fixed a problem with constant folding in method declarations. The
4412SyncLevel term is a ByteConstExpr, and incorrect code would be generated
4413if a
4414Type3 opcode was used.
4415
4416Debugger: Improved command help support. For incorrect argument count,
4417display
4418full help for the command. For help command itself, allow an argument to
4419specify a command.
4420
4421Test Suites: Several bug fixes for the ASLTS suite reduces the number of
4422errors during execution of the suite. Guan Chao.
4423
4424----------------------------------------
442516 August 2012. Summary of changes for version 20120816:
4426
4427
44281) ACPICA Kernel-resident Subsystem:
4429
4430Removed all use of the deprecated _GTS and _BFS predefined methods. The
4431_GTS
4432(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
4433deprecated and will probably be removed from the ACPI specification.
4434Windows
4435does not invoke them, and reportedly never will. The final nail in the
4436coffin
4437is that the ACPI specification states that these methods must be run with
4438interrupts off, which is not going to happen in a kernel interpreter.
4439Note:
4440Linux has removed all use of the methods also. It was discovered that
4441invoking these functions caused failures on some machines, probably
4442because
4443they were never tested since Windows does not call them. Affects two
4444external
4445interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
4446ACPICA BZ 969.
4447
4448Implemented support for complex bit-packed buffers returned from the _PLD
4449(Physical Location of Device) predefined method. Adds a new external
4450interface, AcpiDecodePldBuffer that parses the buffer into a more usable
4451C
4452structure. Note: C Bitfields cannot be used for this type of predefined
4453structure since the memory layout of individual bitfields is not defined
4454by
4455the C language. In addition, there are endian concerns where a compiler
4456will
4457change the bitfield ordering based on the machine type. The new ACPICA
4458interface eliminates these issues, and should be called after _PLD is
4459executed. ACPICA BZ 954.
4460
4461Implemented a change to allow a scope change to root (via "Scope (\)")
4462during
4463execution of module-level ASL code (code that is executed at table load
4464time.) Lin Ming.
4465
4466Added the Windows8/Server2012 string for the _OSI method. This change
4467adds
4468a
4469new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
44702012.
4471
4472Added header support for the new ACPI tables DBG2 (Debug Port Table Type
44732)
4474and CSRT (Core System Resource Table).
4475
4476Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
4477names. This simplifies access to the buffers returned by these predefined
4478names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
4479
4480GPE support: Removed an extraneous parameter from the various low-level
4481internal GPE functions. Tang Feng.
4482
4483Removed the linux makefiles from the unix packages. The generate/linux
4484makefiles are obsolete and have been removed from the unix tarball
4485release
4486packages. The replacement makefiles are under generate/unix, and there is
4487a
4488top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
4489
4490Updates for Unix makefiles:
44911) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
44922) Update linker flags (move to end of command line) for AcpiExec
4493utility.
4494Guan Chao.
4495
4496Split ACPICA initialization functions to new file, utxfinit.c. Split from
4497utxface.c to improve modularity and reduce file size.
4498
4499Example Code and Data Size: These are the sizes for the OS-independent
4500acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4501debug version of the code includes the debug output trace mechanism and
4502has a
4503much larger code and data size.
4504
4505  Previous Release:
4506    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
4507    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
4508  Current Release:
4509    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
4510    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
4511
4512
45132) iASL Compiler/Disassembler and Tools:
4514
4515iASL: Fixed a problem with constant folding for fixed-length constant
4516expressions. The constant-folding code was not being invoked for constant
4517expressions that allow the use of type 3/4/5 opcodes to generate
4518constants
4519for expressions such as ByteConstExpr, WordConstExpr, etc. This could
4520result
4521in the generation of invalid AML bytecode. ACPICA BZ 970.
4522
4523iASL: Fixed a generation issue on newer versions of Bison. Newer versions
4524apparently automatically emit some of the necessary externals. This
4525change
4526handles these versions in order to eliminate generation warnings.
4527
4528Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
4529
4530Disassembler: Add support to decode _PLD buffers. The decoded buffer
4531appears
4532within comments in the output file.
4533
4534Debugger: Fixed a regression with the "Threads" command where
4535AE_BAD_PARAMETER was always returned.
4536
4537----------------------------------------
453811 July 2012. Summary of changes for version 20120711:
4539
45401) ACPICA Kernel-resident Subsystem:
4541
4542Fixed a possible fault in the return package object repair code. Fixes a
4543problem that can occur when a lone package object is wrapped with an
4544outer
4545package object in order to force conformance to the ACPI specification.
4546Can
4547affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
4548_DLM,
4549_CSD, _PSD, _TSD.
4550
4551Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
4552PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
4553ARB_DIS bit must be implemented in the host-dependent C3 processor power
4554state
4555support. Note, ARB_DIS is obsolete and only applies to older chipsets,
4556both
4557Intel and other vendors. (for Intel: ICH4-M and earlier)
4558
4559This change removes the code to disable/enable bus master arbitration
4560during
4561suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
4562causes
4563resume problems on some machines. The change has been in use for over
4564seven
4565years within Linux.
4566
4567Implemented two new external interfaces to support host-directed dynamic
4568ACPI
4569table load and unload. They are intended to simplify the host
4570implementation
4571of hot-plug support:
4572  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
4573  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
4574table.
4575See the ACPICA reference for additional details. Adds one new file,
4576components/tables/tbxfload.c
4577
4578Implemented and deployed two new interfaces for errors and warnings that
4579are
4580known to be caused by BIOS/firmware issues:
4581  AcpiBiosError: Prints "ACPI Firmware Error" message.
4582  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
4583Deployed these new interfaces in the ACPICA Table Manager code for ACPI
4584table
4585and FADT errors. Additional deployment to be completed as appropriate in
4586the
4587future. The associated conditional macros are ACPI_BIOS_ERROR and
4588ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
4589ACPICA
4590BZ
4591843.
4592
4593Implicit notify support: ensure that no memory allocation occurs within a
4594critical region. This fix moves a memory allocation outside of the time
4595that a
4596spinlock is held. Fixes issues on systems that do not allow this
4597behavior.
4598Jung-uk Kim.
4599
4600Split exception code utilities and tables into a new file,
4601utilities/utexcep.c
4602
4603Example Code and Data Size: These are the sizes for the OS-independent
4604acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4605debug
4606version of the code includes the debug output trace mechanism and has a
4607much
4608larger code and data size.
4609
4610  Previous Release:
4611    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
4612    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
4613  Current Release:
4614    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
4615    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
4616
4617
46182) iASL Compiler/Disassembler and Tools:
4619
4620iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
4621of
46220. Jung-uk Kim.
4623
4624Debugger: Enhanced the "tables" command to emit additional information
4625about
4626the current set of ACPI tables, including the owner ID and flags decode.
4627
4628Debugger: Reimplemented the "unload" command to use the new
4629AcpiUnloadParentTable external interface. This command was disable
4630previously
4631due to need for an unload interface.
4632
4633AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
4634option
4635will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
4636
4637----------------------------------------
463820 June 2012. Summary of changes for version 20120620:
4639
4640
46411) ACPICA Kernel-resident Subsystem:
4642
4643Implemented support to expand the "implicit notify" feature to allow
4644multiple
4645devices to be notified by a single GPE. This feature automatically
4646generates a
4647runtime device notification in the absence of a BIOS-provided GPE control
4648method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
4649notify is
4650provided by ACPICA for Windows compatibility, and is a workaround for
4651BIOS
4652AML
4653code errors. See the description of the AcpiSetupGpeForWake interface in
4654the
4655APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
4656
4657Changed some comments and internal function names to simplify and ensure
4658correctness of the Linux code translation. No functional changes.
4659
4660Example Code and Data Size: These are the sizes for the OS-independent
4661acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4662debug
4663version of the code includes the debug output trace mechanism and has a
4664much
4665larger code and data size.
4666
4667  Previous Release:
4668    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
4669    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
4670  Current Release:
4671    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
4672    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
4673
4674
46752) iASL Compiler/Disassembler and Tools:
4676
4677Disassembler: Added support to emit short, commented descriptions for the
4678ACPI
4679predefined names in order to improve the readability of the disassembled
4680output. ACPICA BZ 959. Changes include:
4681  1) Emit descriptions for all standard predefined names (_INI, _STA,
4682_PRW,
4683etc.)
4684  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
4685  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
4686etc.)
4687
4688AcpiSrc: Fixed several long-standing Linux code translation issues.
4689Argument
4690descriptions in function headers are now translated properly to lower
4691case
4692and
4693underscores. ACPICA BZ 961. Also fixes translation problems such as
4694these:
4695(old -> new)
4696  i_aSL -> iASL
4697  00-7_f -> 00-7F
4698  16_k -> 16K
4699  local_fADT -> local_FADT
4700  execute_oSI -> execute_OSI
4701
4702iASL: Fixed a problem where null bytes were inadvertently emitted into
4703some
4704listing files.
4705
4706iASL: Added the existing debug options to the standard help screen. There
4707are
4708no longer two different help screens. ACPICA BZ 957.
4709
4710AcpiHelp: Fixed some typos in the various predefined name descriptions.
4711Also
4712expand some of the descriptions where appropriate.
4713
4714iASL: Fixed the -ot option (display compile times/statistics). Was not
4715working
4716properly for standard output; only worked for the debug file case.
4717
4718----------------------------------------
471918 May 2012. Summary of changes for version 20120518:
4720
4721
47221) ACPICA Core Subsystem:
4723
4724Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
4725defined
4726to block until asynchronous events such as notifies and GPEs have
4727completed.
4728Within ACPICA, it is only called before a notify or GPE handler is
4729removed/uninstalled. It also may be useful for the host OS within related
4730drivers such as the Embedded Controller driver. See the ACPICA reference
4731for
4732additional information. ACPICA BZ 868.
4733
4734ACPI Tables: Added a new error message for a possible overflow failure
4735during
4736the conversion of FADT 32-bit legacy register addresses to internal
4737common
473864-
4739bit GAS structure representation. The GAS has a one-byte "bit length"
4740field,
4741thus limiting the register length to 255 bits. ACPICA BZ 953.
4742
4743Example Code and Data Size: These are the sizes for the OS-independent
4744acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4745debug
4746version of the code includes the debug output trace mechanism and has a
4747much
4748larger code and data size.
4749
4750  Previous Release:
4751    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
4752    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
4753  Current Release:
4754    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
4755    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
4756
4757
47582) iASL Compiler/Disassembler and Tools:
4759
4760iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
4761macro.
4762This keyword was added late in the ACPI 5.0 release cycle and was not
4763implemented until now.
4764
4765Disassembler: Added support for Operation Region externals. Adds missing
4766support for operation regions that are defined in another table, and
4767referenced locally via a Field or BankField ASL operator. Now generates
4768the
4769correct External statement.
4770
4771Disassembler: Several additional fixes for the External() statement
4772generation
4773related to some ASL operators. Also, order the External() statements
4774alphabetically in the disassembler output. Fixes the External()
4775generation
4776for
4777the Create* field, Alias, and Scope operators:
4778 1) Create* buffer field operators - fix type mismatch warning on
4779disassembly
4780 2) Alias - implement missing External support
4781 3) Scope - fix to make sure all necessary externals are emitted.
4782
4783iASL: Improved pathname support. For include files, merge the prefix
4784pathname
4785with the file pathname and eliminate unnecessary components. Convert
4786backslashes in all pathnames to forward slashes, for readability. Include
4787file
4788pathname changes affect both #include and Include() type operators.
4789
4790iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
4791end
4792of a valid line by inserting a newline and then returning the EOF during
4793the
4794next call to GetNextLine. Prevents the line from being ignored due to EOF
4795condition.
4796
4797iASL: Implemented some changes to enhance the IDE support (-vi option.)
4798Error
4799and Warning messages are now correctly recognized for both the source
4800code
4801browser and the global error and warning counts.
4802
4803----------------------------------------
480420 April 2012. Summary of changes for version 20120420:
4805
4806
48071) ACPICA Core Subsystem:
4808
4809Implemented support for multiple notify handlers. This change adds
4810support
4811to
4812allow multiple system and device notify handlers on Device, Thermal Zone,
4813and
4814Processor objects. This can simplify the host OS notification
4815implementation.
4816Also re-worked and restructured the entire notify support code to
4817simplify
4818handler installation, handler removal, notify event queuing, and notify
4819dispatch to handler(s). Note: there can still only be two global notify
4820handlers - one for system notifies and one for device notifies. There are
4821no
4822changes to the existing handler install/remove interfaces. Lin Ming, Bob
4823Moore, Rafael Wysocki.
4824
4825Fixed a regression in the package repair code where the object reference
4826count was calculated incorrectly. Regression was introduced in the commit
4827"Support to add Package wrappers".
4828
4829Fixed a couple possible memory leaks in the AML parser, in the error
4830recovery
4831path. Jesper Juhl, Lin Ming.
4832
4833Example Code and Data Size: These are the sizes for the OS-independent
4834acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4835debug version of the code includes the debug output trace mechanism and
4836has a
4837much larger code and data size.
4838
4839  Previous Release:
4840    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
4841    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4842  Current Release:
4843    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
4844    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
4845
4846
48472) iASL Compiler/Disassembler and Tools:
4848
4849iASL: Fixed a problem with the resource descriptor support where the
4850length
4851of the StartDependentFn and StartDependentFnNoPrio descriptors were not
4852included in cumulative descriptor offset, resulting in incorrect values
4853for
4854resource tags within resource descriptors appearing after a
4855StartDependent*
4856descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
4857
4858iASL and Preprocessor: Implemented full support for the #line directive
4859to
4860correctly track original source file line numbers through the .i
4861preprocessor
4862output file - for error and warning messages.
4863
4864iASL: Expand the allowable byte constants for address space IDs.
4865Previously,
4866the allowable range was 0x80-0xFF (user-defined spaces), now the range is
48670x0A-0xFF to allow for custom and new IDs without changing the compiler.
4868
4869iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
4870
4871iASL: Add option to completely disable the preprocessor (-Pn).
4872
4873iASL: Now emit all error/warning messages to standard error (stderr) by
4874default (instead of the previous stdout).
4875
4876ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
4877Update
4878for resource descriptor offset fix above. Update/cleanup error output
4879routines. Enable and send iASL errors/warnings to an error logfile
4880(error.txt). Send all other iASL output to a logfile (compiler.txt).
4881Fixed
4882several extraneous "unrecognized operator" messages.
4883
4884----------------------------------------
488520 March 2012. Summary of changes for version 20120320:
4886
4887
48881) ACPICA Core Subsystem:
4889
4890Enhanced the sleep/wake interfaces to optionally execute the _GTS method
4891(Going To Sleep) and the _BFS method (Back From Sleep). Windows
4892apparently
4893does not execute these methods, and therefore these methods are often
4894untested. It has been seen on some systems where the execution of these
4895methods causes errors and also prevents the machine from entering S5. It
4896is
4897therefore suggested that host operating systems do not execute these
4898methods
4899by default. In the future, perhaps these methods can be optionally
4900executed
4901based on the age of the system and/or what is the newest version of
4902Windows
4903that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
4904and
4905AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
4906Ming.
4907
4908Fixed a problem where the length of the local/common FADT was set too
4909early.
4910The local FADT table length cannot be set to the common length until the
4911original length has been examined. There is code that checks the table
4912length
4913and sets various fields appropriately. This can affect older machines
4914with
4915early FADT versions. For example, this can cause inadvertent writes to
4916the
4917CST_CNT register. Julian Anastasov.
4918
4919Fixed a mapping issue related to a physical table override. Use the
4920deferred
4921mapping mechanism for tables loaded via the physical override OSL
4922interface.
4923This allows for early mapping before the virtual memory manager is
4924available.
4925Thomas Renninger, Bob Moore.
4926
4927Enhanced the automatic return-object repair code: Repair a common problem
4928with
4929predefined methods that are defined to return a variable-length Package
4930of
4931sub-objects. If there is only one sub-object, some BIOS ASL code
4932mistakenly
4933simply returns the single object instead of a Package with one sub-
4934object.
4935This new support will repair this error by wrapping a Package object
4936around
4937the original object, creating the correct and expected Package with one
4938sub-
4939object. Names that can be repaired in this manner include: _ALR, _CSD,
4940_HPX,
4941_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
4942939.
4943
4944Changed the exception code returned for invalid ACPI paths passed as
4945parameters to external interfaces such as AcpiEvaluateObject. Was
4946AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
4947
4948Example Code and Data Size: These are the sizes for the OS-independent
4949acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4950debug
4951version of the code includes the debug output trace mechanism and has a
4952much
4953larger code and data size.
4954
4955  Previous Release:
4956    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
4957    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4958  Current Release:
4959    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
4960    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
4961
4962
49632) iASL Compiler/Disassembler and Tools:
4964
4965iASL: Added the infrastructure and initial implementation of a integrated
4966C-
4967like preprocessor. This will simplify BIOS development process by
4968eliminating
4969the need for a separate preprocessing step during builds. On Windows, it
4970also
4971eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
4972features including full #define() macro support are still under
4973development.
4974These preprocessor directives are supported:
4975    #define
4976    #elif
4977    #else
4978    #endif
4979    #error
4980    #if
4981    #ifdef
4982    #ifndef
4983    #include
4984    #pragma message
4985    #undef
4986    #warning
4987In addition, these new command line options are supported:
4988    -D <symbol> Define symbol for preprocessor use
4989    -li         Create preprocessed output file (*.i)
4990    -P          Preprocess only and create preprocessor output file (*.i)
4991
4992Table Compiler: Fixed a problem where the equals operator within an
4993expression
4994did not work properly.
4995
4996Updated iASL to use the current versions of Bison/Flex. Updated the
4997Windows
4998project file to invoke these tools from the standard location. ACPICA BZ
4999904.
5000Versions supported:
5001    Flex for Windows:  V2.5.4
5002    Bison for Windows: V2.4.1
5003
5004----------------------------------------
500515 February 2012. Summary of changes for version 20120215:
5006
5007
50081) ACPICA Core Subsystem:
5009
5010There have been some major changes to the sleep/wake support code, as
5011described below (a - e).
5012
5013a) The AcpiLeaveSleepState has been split into two interfaces, similar to
5014AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
5015AcpiLeaveSleepStatePrep. This allows the host to perform actions between
5016the
5017time the _BFS method is called and the _WAK method is called. NOTE: all
5018hosts
5019must update their wake/resume code or else sleep/wake will not work
5020properly.
5021Rafael Wysocki.
5022
5023b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
5024_WAK
5025method. Some machines require that the GPEs are enabled before the _WAK
5026method
5027is executed. Thomas Renninger.
5028
5029c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
5030bit.
5031Some BIOS code assumes that WAK_STS will be cleared on resume and use it
5032to
5033determine whether the system is rebooting or resuming. Matthew Garrett.
5034
5035d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
5036Sleep) to
5037match the ACPI specification requirement. Rafael Wysocki.
5038
5039e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
5040registers within the V5 FADT. This support adds two new files:
5041hardware/hwesleep.c implements the support for the new registers. Moved
5042all
5043sleep/wake external interfaces to hardware/hwxfsleep.c.
5044
5045
5046Added a new OSL interface for ACPI table overrides,
5047AcpiOsPhysicalTableOverride. This interface allows the host to override a
5048table via a physical address, instead of the logical address required by
5049AcpiOsTableOverride. This simplifies the host implementation. Initial
5050implementation by Thomas Renninger. The ACPICA implementation creates a
5051single
5052shared function for table overrides that attempts both a logical and a
5053physical override.
5054
5055Expanded the OSL memory read/write interfaces to 64-bit data
5056(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
5057transfer support for GAS register structures passed to AcpiRead and
5058AcpiWrite.
5059
5060Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
5061custom
5062build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
5063model.
5064See the ACPICA reference for details. ACPICA BZ 942. This option removes
5065about
506610% of the code and 5% of the static data, and the following hardware
5067ACPI
5068features become unavailable:
5069    PM Event and Control registers
5070    SCI interrupt (and handler)
5071    Fixed Events
5072    General Purpose Events (GPEs)
5073    Global Lock
5074    ACPI PM timer
5075    FACS table (Waking vectors and Global Lock)
5076
5077Updated the unix tarball directory structure to match the ACPICA git
5078source
5079tree. This ensures that the generic unix makefiles work properly (in
5080generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
5081867.
5082
5083Updated the return value of the _REV predefined method to integer value 5
5084to
5085reflect ACPI 5.0 support.
5086
5087Moved the external ACPI PM timer interface prototypes to the public
5088acpixf.h
5089file where they belong.
5090
5091Example Code and Data Size: These are the sizes for the OS-independent
5092acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5093debug
5094version of the code includes the debug output trace mechanism and has a
5095much
5096larger code and data size.
5097
5098  Previous Release:
5099    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
5100    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
5101  Current Release:
5102    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
5103    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5104
5105
51062) iASL Compiler/Disassembler and Tools:
5107
5108Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
5109descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
5110incorrectly displayed.
5111
5112AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
5113specification.
5114
5115----------------------------------------
511611 January 2012. Summary of changes for version 20120111:
5117
5118
51191) ACPICA Core Subsystem:
5120
5121Implemented a new mechanism to allow host device drivers to check for
5122address
5123range conflicts with ACPI Operation Regions. Both SystemMemory and
5124SystemIO
5125address spaces are supported. A new external interface,
5126AcpiCheckAddressRange,
5127allows drivers to check an address range against the ACPI namespace. See
5128the
5129ACPICA reference for additional details. Adds one new file,
5130utilities/utaddress.c. Lin Ming, Bob Moore.
5131
5132Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
5133Control
5134and
5135Status registers, update the ACPI 5.0 flags, and update internal data
5136structures to handle an FADT larger than 256 bytes. The size of the ACPI
51375.0
5138FADT is 268 bytes.
5139
5140Updated all ACPICA copyrights and signons to 2012. Added the 2012
5141copyright to
5142all module headers and signons, including the standard Linux header. This
5143affects virtually every file in the ACPICA core subsystem, iASL compiler,
5144and
5145all ACPICA utilities.
5146
5147Example Code and Data Size: These are the sizes for the OS-independent
5148acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5149debug
5150version of the code includes the debug output trace mechanism and has a
5151much
5152larger code and data size.
5153
5154  Previous Release:
5155    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
5156    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
5157  Current Release:
5158    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
5159    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
5160
5161
51622) iASL Compiler/Disassembler and Tools:
5163
5164Disassembler: fixed a problem with the automatic resource tag generation
5165support. Fixes a problem where the resource tags are inadvertently not
5166constructed if the table being disassembled contains external references
5167to
5168control methods. Moved the actual construction of the tags to after the
5169final
5170namespace is constructed (after 2nd parse is invoked due to external
5171control
5172method references.) ACPICA BZ 941.
5173
5174Table Compiler: Make all "generic" operators caseless. These are the
5175operators
5176like UINT8, String, etc. Making these caseless improves ease-of-use.
5177ACPICA BZ
5178934.
5179
5180----------------------------------------
518123 November 2011. Summary of changes for version 20111123:
5182
51830) ACPI 5.0 Support:
5184
5185This release contains full support for the ACPI 5.0 specification, as
5186summarized below.
5187
5188Reduced Hardware Support:
5189-------------------------
5190
5191This support allows for ACPI systems without the usual ACPI hardware.
5192This
5193support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
5194will
5195not attempt to initialize or use any of the usual ACPI hardware. Note,
5196when
5197this flag is set, all of the following ACPI hardware is assumed to be not
5198present and is not initialized or accessed:
5199
5200    General Purpose Events (GPEs)
5201    Fixed Events (PM1a/PM1b and PM Control)
5202    Power Management Timer and Console Buttons (power/sleep)
5203    Real-time Clock Alarm
5204    Global Lock
5205    System Control Interrupt (SCI)
5206    The FACS is assumed to be non-existent
5207
5208ACPI Tables:
5209------------
5210
5211All new tables and updates to existing tables are fully supported in the
5212ACPICA headers (for use by device drivers), the disassembler, and the
5213iASL
5214Data Table Compiler. ACPI 5.0 defines these new tables:
5215
5216    BGRT        /* Boot Graphics Resource Table */
5217    DRTM        /* Dynamic Root of Trust for Measurement table */
5218    FPDT        /* Firmware Performance Data Table */
5219    GTDT        /* Generic Timer Description Table */
5220    MPST        /* Memory Power State Table */
5221    PCCT        /* Platform Communications Channel Table */
5222    PMTT        /* Platform Memory Topology Table */
5223    RASF        /* RAS Feature table */
5224
5225Operation Regions/SpaceIDs:
5226---------------------------
5227
5228All new operation regions are fully supported by the iASL compiler, the
5229disassembler, and the ACPICA runtime code (for dispatch to region
5230handlers.)
5231The new operation region Space IDs are:
5232
5233    GeneralPurposeIo
5234    GenericSerialBus
5235
5236Resource Descriptors:
5237---------------------
5238
5239All new ASL resource descriptors are fully supported by the iASL
5240compiler,
5241the
5242ASL/AML disassembler, and the ACPICA runtime Resource Manager code
5243(including
5244all new predefined resource tags). New descriptors are:
5245
5246    FixedDma
5247    GpioIo
5248    GpioInt
5249    I2cSerialBus
5250    SpiSerialBus
5251    UartSerialBus
5252
5253ASL/AML Operators, New and Modified:
5254------------------------------------
5255
5256One new operator is added, the Connection operator, which is used to
5257associate
5258a GeneralPurposeIo or GenericSerialBus resource descriptor with
5259individual
5260field objects within an operation region. Several new protocols are
5261associated
5262with the AccessAs operator. All are fully supported by the iASL compiler,
5263disassembler, and runtime ACPICA AML interpreter:
5264
5265    Connection                      // Declare Field Connection
5266attributes
5267    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
5268    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
5269Protocol
5270    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
5271    RawDataBuffer                       // Data type for Vendor Data
5272fields
5273
5274Predefined ASL/AML Objects:
5275---------------------------
5276
5277All new predefined objects/control-methods are supported by the iASL
5278compiler
5279and the ACPICA runtime validation/repair (arguments and return values.)
5280New
5281predefined names include the following:
5282
5283Standard Predefined Names (Objects or Control Methods):
5284    _AEI, _CLS, _CPC, _CWS, _DEP,
5285    _DLM, _EVT, _GCP, _CRT, _GWS,
5286    _HRV, _PRE, _PSE, _SRT, _SUB.
5287
5288Resource Tags (Names used to access individual fields within resource
5289descriptors):
5290    _DBT, _DPL, _DRS, _END, _FLC,
5291    _IOR, _LIN, _MOD, _PAR, _PHA,
5292    _PIN, _PPI, _POL, _RXL, _SLV,
5293    _SPE, _STB, _TXL, _VEN.
5294
5295ACPICA External Interfaces:
5296---------------------------
5297
5298Several new interfaces have been defined for use by ACPI-related device
5299drivers and other host OS services:
5300
5301AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
5302to
5303acquire and release AML mutexes that are defined in the DSDT/SSDT tables
5304provided by the BIOS. They are intended to be used in conjunction with
5305the
5306ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
5307mutual exclusion with the AML code/interpreter.
5308
5309AcpiGetEventResources: Returns the (formatted) resource descriptors as
5310defined
5311by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
5312provides
5313resource descriptors associated with hardware-reduced platform events,
5314similar
5315to the AcpiGetCurrentResources interface.
5316
5317Operation Region Handlers: For General Purpose IO and Generic Serial Bus
5318operation regions, information about the Connection() object and any
5319optional
5320length information is passed to the region handler within the Context
5321parameter.
5322
5323AcpiBufferToResource: This interface converts a raw AML buffer containing
5324a
5325resource template or resource descriptor to the ACPI_RESOURCE internal
5326format
5327suitable for use by device drivers. Can be used by an operation region
5328handler
5329to convert the Connection() buffer object into a ACPI_RESOURCE.
5330
5331Miscellaneous/Tools/TestSuites:
5332-------------------------------
5333
5334Support for extended _HID names (Four alpha characters instead of three).
5335Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
5336Support for ACPI 5.0 features in the ASLTS test suite.
5337Fully updated documentation (ACPICA and iASL reference documents.)
5338
5339ACPI Table Definition Language:
5340-------------------------------
5341
5342Support for this language was implemented and released as a subsystem of
5343the
5344iASL compiler in 2010. (See the iASL compiler User Guide.)
5345
5346
5347Non-ACPI 5.0 changes for this release:
5348--------------------------------------
5349
53501) ACPICA Core Subsystem:
5351
5352Fix a problem with operation region declarations where a failure can
5353occur
5354if
5355the region name and an argument that evaluates to an object (such as the
5356region address) are in different namespace scopes. Lin Ming, ACPICA BZ
5357937.
5358
5359Do not abort an ACPI table load if an invalid space ID is found within.
5360This
5361will be caught later if the offending method is executed. ACPICA BZ 925.
5362
5363Fixed an issue with the FFixedHW space ID where the ID was not always
5364recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
5365
5366Fixed a problem with the 32-bit generation of the unix-specific OSL
5367(osunixxf.c). Lin Ming, ACPICA BZ 936.
5368
5369Several changes made to enable generation with the GCC 4.6 compiler.
5370ACPICA BZ
5371935.
5372
5373New error messages: Unsupported I/O requests (not 8/16/32 bit), and
5374Index/Bank
5375field registers out-of-range.
5376
53772) iASL Compiler/Disassembler and Tools:
5378
5379iASL: Implemented the __PATH__ operator, which returns the full pathname
5380of
5381the current source file.
5382
5383AcpiHelp: Automatically display expanded keyword information for all ASL
5384operators.
5385
5386Debugger: Add "Template" command to disassemble/dump resource template
5387buffers.
5388
5389Added a new master script to generate and execute the ASLTS test suite.
5390Automatically handles 32- and 64-bit generation. See tests/aslts.sh
5391
5392iASL: Fix problem with listing generation during processing of the
5393Switch()
5394operator where AML listing was disabled until the entire Switch block was
5395completed.
5396
5397iASL: Improve support for semicolon statement terminators. Fix "invalid
5398character" message for some cases when the semicolon is used. Semicolons
5399are
5400now allowed after every <Term> grammar element. ACPICA BZ 927.
5401
5402iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
5403923.
5404
5405Disassembler: Fix problem with disassembly of the DataTableRegion
5406operator
5407where an inadvertent "Unhandled deferred opcode" message could be
5408generated.
5409
54103) Example Code and Data Size
5411
5412These are the sizes for the OS-independent acpica.lib produced by the
5413Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
5414includes the debug output trace mechanism and has a much larger code and
5415data
5416size.
5417
5418  Previous Release:
5419    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
5420    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5421  Current Release:
5422    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
5423    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
5424
5425----------------------------------------
542622 September 2011. Summary of changes for version 20110922:
5427
54280) ACPI 5.0 News:
5429
5430Support for ACPI 5.0 in ACPICA has been underway for several months and
5431will
5432be released at the same time that ACPI 5.0 is officially released.
5433
5434The ACPI 5.0 specification is on track for release in the next few
5435months.
5436
54371) ACPICA Core Subsystem:
5438
5439Fixed a problem where the maximum sleep time for the Sleep() operator was
5440intended to be limited to two seconds, but was inadvertently limited to
544120
5442seconds instead.
5443
5444Linux and Unix makefiles: Added header file dependencies to ensure
5445correct
5446generation of ACPICA core code and utilities. Also simplified the
5447makefiles
5448considerably through the use of the vpath variable to specify search
5449paths.
5450ACPICA BZ 924.
5451
54522) iASL Compiler/Disassembler and Tools:
5453
5454iASL: Implemented support to check the access length for all fields
5455created to
5456access named Resource Descriptor fields. For example, if a resource field
5457is
5458defined to be two bits, a warning is issued if a CreateXxxxField() is
5459used
5460with an incorrect bit length. This is implemented for all current
5461resource
5462descriptor names. ACPICA BZ 930.
5463
5464Disassembler: Fixed a byte ordering problem with the output of 24-bit and
546556-
5466bit integers.
5467
5468iASL: Fixed a couple of issues associated with variable-length package
5469objects. 1) properly handle constants like One, Ones, Zero -- do not make
5470a
5471VAR_PACKAGE when these are used as a package length. 2) Allow the
5472VAR_PACKAGE
5473opcode (in addition to PACKAGE) when validating object types for
5474predefined
5475names.
5476
5477iASL: Emit statistics for all output files (instead of just the ASL input
5478and
5479AML output). Includes listings, hex files, etc.
5480
5481iASL: Added -G option to the table compiler to allow the compilation of
5482custom
5483ACPI tables. The only part of a table that is required is the standard
548436-
5485byte
5486ACPI header.
5487
5488AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
5489headers),
5490which also adds correct 64-bit support. Also, now all output filenames
5491are
5492completely lower case.
5493
5494AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
5495loading table files. A warning is issued for any such tables. The only
5496exception is an FADT. This also fixes a possible fault when attempting to
5497load
5498non-AML tables. ACPICA BZ 932.
5499
5500AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
5501a
5502missing table terminator could cause a fault when using the -p option.
5503
5504AcpiSrc: Fixed a possible divide-by-zero fault when generating file
5505statistics.
5506
55073) Example Code and Data Size
5508
5509These are the sizes for the OS-independent acpica.lib produced by the
5510Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
5511includes the debug output trace mechanism and has a much larger code and
5512data
5513size.
5514
5515  Previous Release (VC 9.0):
5516    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
5517    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5518  Current Release (VC 9.0):
5519    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
5520    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5521
5522
5523----------------------------------------
552423 June 2011. Summary of changes for version 20110623:
5525
55261) ACPI CA Core Subsystem:
5527
5528Updated the predefined name repair mechanism to not attempt repair of a
5529_TSS
5530return object if a _PSS object is present. We can only sort the _TSS
5531return
5532package if there is no _PSS within the same scope. This is because if
5533_PSS
5534is
5535present, the ACPI specification dictates that the _TSS Power Dissipation
5536field
5537is to be ignored, and therefore some BIOSs leave garbage values in the
5538_TSS
5539Power field(s). In this case, it is best to just return the _TSS package
5540as-
5541is. Reported by, and fixed with assistance from Fenghua Yu.
5542
5543Added an option to globally disable the control method return value
5544validation
5545and repair. This runtime option can be used to disable return value
5546repair
5547if
5548this is causing a problem on a particular machine. Also added an option
5549to
5550AcpiExec (-dr) to set this disable flag.
5551
5552All makefiles and project files: Major changes to improve generation of
5553ACPICA
5554tools. ACPICA BZ 912:
5555    Reduce default optimization levels to improve compatibility
5556    For Linux, add strict-aliasing=0 for gcc 4
5557    Cleanup and simplify use of command line defines
5558    Cleanup multithread library support
5559    Improve usage messages
5560
5561Linux-specific header: update handling of THREAD_ID and pthread. For the
556232-
5563bit case, improve casting to eliminate possible warnings, especially with
5564the
5565acpica tools.
5566
5567Example Code and Data Size: These are the sizes for the OS-independent
5568acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5569debug
5570version of the code includes the debug output trace mechanism and has a
5571much
5572larger code and data size.
5573
5574  Previous Release (VC 9.0):
5575    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
5576    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5577  Current Release (VC 9.0):
5578    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
5579    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5580
55812) iASL Compiler/Disassembler and Tools:
5582
5583With this release, a new utility named "acpihelp" has been added to the
5584ACPICA
5585package. This utility summarizes the ACPI specification chapters for the
5586ASL
5587and AML languages. It generates under Linux/Unix as well as Windows, and
5588provides the following functionality:
5589    Find/display ASL operator(s) -- with description and syntax.
5590    Find/display ASL keyword(s) -- with exact spelling and descriptions.
5591    Find/display ACPI predefined name(s) -- with description, number
5592        of arguments, and the return value data type.
5593    Find/display AML opcode name(s) -- with opcode, arguments, and
5594grammar.
5595    Decode/display AML opcode -- with opcode name, arguments, and
5596grammar.
5597
5598Service Layers: Make multi-thread support configurable. Conditionally
5599compile
5600the multi-thread support so that threading libraries will not be linked
5601if
5602not
5603necessary. The only tool that requires multi-thread support is AcpiExec.
5604
5605iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
5606of
5607Bison appear to want the interface to yyerror to be a const char * (or at
5608least this is a problem when generating iASL on some systems.) ACPICA BZ
5609923
5610Pierre Lejeune.
5611
5612Tools: Fix for systems where O_BINARY is not defined. Only used for
5613Windows
5614versions of the tools.
5615
5616----------------------------------------
561727 May 2011. Summary of changes for version 20110527:
5618
56191) ACPI CA Core Subsystem:
5620
5621ASL Load() operator: Reinstate most restrictions on the incoming ACPI
5622table
5623signature. Now, only allow SSDT, OEMx, and a null signature. History:
5624    1) Originally, we checked the table signature for "SSDT" or "PSDT".
5625       (PSDT is now obsolete.)
5626    2) We added support for OEMx tables, signature "OEM" plus a fourth
5627       "don't care" character.
5628    3) Valid tables were encountered with a null signature, so we just
5629       gave up on validating the signature, (05/2008).
5630    4) We encountered non-AML tables such as the MADT, which caused
5631       interpreter errors and kernel faults. So now, we once again allow
5632       only SSDT, OEMx, and now, also a null signature. (05/2011).
5633
5634Added the missing _TDL predefined name to the global name list in order
5635to
5636enable validation. Affects both the core ACPICA code and the iASL
5637compiler.
5638
5639Example Code and Data Size: These are the sizes for the OS-independent
5640acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5641debug
5642version of the code includes the debug output trace mechanism and has a
5643much
5644larger code and data size.
5645
5646  Previous Release (VC 9.0):
5647    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
5648    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
5649  Current Release (VC 9.0):
5650    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
5651    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
5652
56532) iASL Compiler/Disassembler and Tools:
5654
5655Debugger/AcpiExec: Implemented support for "complex" method arguments on
5656the
5657debugger command line. This adds support beyond simple integers --
5658including
5659Strings, Buffers, and Packages. Includes support for nested packages.
5660Increased the default command line buffer size to accommodate these
5661arguments.
5662See the ACPICA reference for details and syntax. ACPICA BZ 917.
5663
5664Debugger/AcpiExec: Implemented support for "default" method arguments for
5665the
5666Execute/Debug command. Now, the debugger will always invoke a control
5667method
5668with the required number of arguments -- even if the command line
5669specifies
5670none or insufficient arguments. It uses default integer values for any
5671missing
5672arguments. Also fixes a bug where only six method arguments maximum were
5673supported instead of the required seven.
5674
5675Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
5676and
5677also return status in order to prevent buffer overruns. See the ACPICA
5678reference for details and syntax. ACPICA BZ 921
5679
5680iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
5681makefiles to simplify support for the two different but similar parser
5682generators, bison and yacc.
5683
5684Updated the generic unix makefile for gcc 4. The default gcc version is
5685now
5686expected to be 4 or greater, since options specific to gcc 4 are used.
5687
5688----------------------------------------
568913 April 2011. Summary of changes for version 20110413:
5690
56911) ACPI CA Core Subsystem:
5692
5693Implemented support to execute a so-called "orphan" _REG method under the
5694EC
5695device. This change will force the execution of a _REG method underneath
5696the
5697EC
5698device even if there is no corresponding operation region of type
5699EmbeddedControl. Fixes a problem seen on some machines and apparently is
5700compatible with Windows behavior. ACPICA BZ 875.
5701
5702Added more predefined methods that are eligible for automatic NULL
5703package
5704element removal. This change adds another group of predefined names to
5705the
5706list
5707of names that can be repaired by having NULL package elements dynamically
5708removed. This group are those methods that return a single variable-
5709length
5710package containing simple data types such as integers, buffers, strings.
5711This
5712includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
5713_PSL,
5714_Sx,
5715and _TZD. ACPICA BZ 914.
5716
5717Split and segregated all internal global lock functions to a new file,
5718evglock.c.
5719
5720Updated internal address SpaceID for DataTable regions. Moved this
5721internal
5722space
5723id in preparation for ACPI 5.0 changes that will include some new space
5724IDs.
5725This
5726change should not affect user/host code.
5727
5728Example Code and Data Size: These are the sizes for the OS-independent
5729acpica.lib
5730produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
5731version of
5732the code includes the debug output trace mechanism and has a much larger
5733code
5734and
5735data size.
5736
5737  Previous Release (VC 9.0):
5738    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
5739    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
5740  Current Release (VC 9.0):
5741    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
5742    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
5743
57442) iASL Compiler/Disassembler and Tools:
5745
5746iASL/DTC: Major update for new grammar features. Allow generic data types
5747in
5748custom ACPI tables. Field names are now optional. Any line can be split
5749to
5750multiple lines using the continuation char (\). Large buffers now use
5751line-
5752continuation character(s) and no colon on the continuation lines. See the
5753grammar
5754update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
5755Moore.
5756
5757iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
5758statements.
5759Since the parser stuffs a "zero" as the return value for these statements
5760(due
5761to
5762the underlying AML grammar), they were seen as "return with value" by the
5763iASL
5764semantic checking. They are now seen correctly as "null" return
5765statements.
5766
5767iASL: Check if a_REG declaration has a corresponding Operation Region.
5768Adds a
5769check for each _REG to ensure that there is in fact a corresponding
5770operation
5771region declaration in the same scope. If not, the _REG method is not very
5772useful
5773since it probably won't be executed. ACPICA BZ 915.
5774
5775iASL/DTC: Finish support for expression evaluation. Added a new
5776expression
5777parser
5778that implements c-style operator precedence and parenthesization. ACPICA
5779bugzilla
5780908.
5781
5782Disassembler/DTC: Remove support for () and <> style comments in data
5783tables.
5784Now
5785that DTC has full expression support, we don't want to have comment
5786strings
5787that
5788start with a parentheses or a less-than symbol. Now, only the standard /*
5789and
5790//
5791comments are supported, as well as the bracket [] comments.
5792
5793AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
5794"unusual"
5795headers in the acpidump file. Update the header validation to support
5796these
5797tables. Problem introduced in previous AcpiXtract version in the change
5798to
5799support "wrong checksum" error messages emitted by acpidump utility.
5800
5801iASL: Add a * option to generate all template files (as a synonym for
5802ALL)
5803as
5804in
5805"iasl -T *" or "iasl -T ALL".
5806
5807iASL/DTC: Do not abort compiler on fatal errors. We do not want to
5808completely
5809abort the compiler on "fatal" errors, simply should abort the current
5810compile.
5811This allows multiple compiles with a single (possibly wildcard) compiler
5812invocation.
5813
5814----------------------------------------
581516 March 2011. Summary of changes for version 20110316:
5816
58171) ACPI CA Core Subsystem:
5818
5819Fixed a problem caused by a _PRW method appearing at the namespace root
5820scope
5821during the setup of wake GPEs. A fault could occur if a _PRW directly
5822under
5823the
5824root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
5825
5826Implemented support for "spurious" Global Lock interrupts. On some
5827systems, a
5828global lock interrupt can occur without the pending flag being set. Upon
5829a
5830GL
5831interrupt, we now ensure that a thread is actually waiting for the lock
5832before
5833signaling GL availability. Rafael Wysocki, Bob Moore.
5834
5835Example Code and Data Size: These are the sizes for the OS-independent
5836acpica.lib
5837produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
5838version of
5839the code includes the debug output trace mechanism and has a much larger
5840code
5841and
5842data size.
5843
5844  Previous Release (VC 9.0):
5845    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5846    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5847  Current Release (VC 9.0):
5848    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
5849    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
5850
58512) iASL Compiler/Disassembler and Tools:
5852
5853Implemented full support for the "SLIC" ACPI table. Includes support in
5854the
5855header files, disassembler, table compiler, and template generator. Bob
5856Moore,
5857Lin Ming.
5858
5859AcpiXtract: Correctly handle embedded comments and messages from
5860AcpiDump.
5861Apparently some or all versions of acpidump will occasionally emit a
5862comment
5863like
5864"Wrong checksum", etc., into the dump file. This was causing problems for
5865AcpiXtract. ACPICA BZ 905.
5866
5867iASL: Fix the Linux makefile by removing an inadvertent double file
5868inclusion.
5869ACPICA BZ 913.
5870
5871AcpiExec: Update installation of operation region handlers. Install one
5872handler
5873for a user-defined address space. This is used by the ASL test suite
5874(ASLTS).
5875
5876----------------------------------------
587711 February 2011. Summary of changes for version 20110211:
5878
58791) ACPI CA Core Subsystem:
5880
5881Added a mechanism to defer _REG methods for some early-installed
5882handlers.
5883Most user handlers should be installed before call to
5884AcpiEnableSubsystem.
5885However, Event handlers and region handlers should be installed after
5886AcpiInitializeObjects. Override handlers for the "default" regions should
5887be
5888installed early, however. This change executes all _REG methods for the
5889default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
5890chicken/egg issues between them. ACPICA BZ 848.
5891
5892Implemented an optimization for GPE detection. This optimization will
5893simply
5894ignore GPE registers that contain no enabled GPEs -- there is no need to
5895read the register since this information is available internally. This
5896becomes more important on machines with a large GPE space. ACPICA
5897bugzilla
5898884. Lin Ming. Suggestion from Joe Liu.
5899
5900Removed all use of the highly unreliable FADT revision field. The
5901revision
5902number in the FADT has been found to be completely unreliable and cannot
5903be
5904trusted. Only the actual table length can be used to infer the version.
5905This
5906change updates the ACPICA core and the disassembler so that both no
5907longer
5908even look at the FADT version and instead depend solely upon the FADT
5909length.
5910
5911Fix an unresolved name issue for the no-debug and no-error-message source
5912generation cases. The _AcpiModuleName was left undefined in these cases,
5913but
5914it is actually needed as a parameter to some interfaces. Define
5915_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
5916
5917Split several large files (makefiles and project files updated)
5918  utglobal.c   -> utdecode.c
5919  dbcomds.c    -> dbmethod.c dbnames.c
5920  dsopcode.c   -> dsargs.c dscontrol.c
5921  dsload.c     -> dsload2.c
5922  aslanalyze.c -> aslbtypes.c aslwalks.c
5923
5924Example Code and Data Size: These are the sizes for the OS-independent
5925acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5926debug version of the code includes the debug output trace mechanism and
5927has
5928a much larger code and data size.
5929
5930  Previous Release (VC 9.0):
5931    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5932    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5933  Current Release (VC 9.0):
5934    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
5935    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
5936
59372) iASL Compiler/Disassembler and Tools:
5938
5939iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
5940These are useful C-style macros with the standard definitions. ACPICA
5941bugzilla 898.
5942
5943iASL/DTC: Added support for integer expressions and labels. Support for
5944full
5945expressions for all integer fields in all ACPI tables. Support for labels
5946in
5947"generic" portions of tables such as UEFI. See the iASL reference manual.
5948
5949Debugger: Added a command to display the status of global handlers. The
5950"handlers" command will display op region, fixed event, and miscellaneous
5951global handlers. installation status -- and for op regions, whether
5952default
5953or user-installed handler will be used.
5954
5955iASL: Warn if reserved method incorrectly returns a value. Many
5956predefined
5957names are defined such that they do not return a value. If implemented as
5958a
5959method, issue a warning if such a name explicitly returns a value. ACPICA
5960Bugzilla 855.
5961
5962iASL: Added detection of GPE method name conflicts. Detects a conflict
5963where
5964there are two GPE methods of the form _Lxy and _Exy in the same scope.
5965(For
5966example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
5967
5968iASL/DTC: Fixed a couple input scanner issues with comments and line
5969numbers. Comment remover could get confused and miss a comment ending.
5970Fixed
5971a problem with line counter maintenance.
5972
5973iASL/DTC: Reduced the severity of some errors from fatal to error. There
5974is
5975no need to abort on simple errors within a field definition.
5976
5977Debugger: Simplified the output of the help command. All help output now
5978in
5979a single screen, instead of help subcommands. ACPICA Bugzilla 897.
5980
5981----------------------------------------
598212 January 2011. Summary of changes for version 20110112:
5983
59841) ACPI CA Core Subsystem:
5985
5986Fixed a race condition between method execution and namespace walks that
5987can
5988possibly cause a fault. The problem was apparently introduced in version
598920100528 as a result of a performance optimization that reduces the
5990number
5991of
5992namespace walks upon method exit by using the delete_namespace_subtree
5993function instead of the delete_namespace_by_owner function used
5994previously.
5995Bug is a missing namespace lock in the delete_namespace_subtree function.
5996dana.myers@oracle.com
5997
5998Fixed several issues and a possible fault with the automatic "serialized"
5999method support. History: This support changes a method to "serialized" on
6000the
6001fly if the method generates an AE_ALREADY_EXISTS error, indicating the
6002possibility that it cannot handle reentrancy. This fix repairs a couple
6003of
6004issues seen in the field, especially on machines with many cores:
6005
6006    1) Delete method children only upon the exit of the last thread,
6007       so as to not delete objects out from under other running threads
6008      (and possibly causing a fault.)
6009    2) Set the "serialized" bit for the method only upon the exit of the
6010       Last thread, so as to not cause deadlock when running threads
6011       attempt to exit.
6012    3) Cleanup the use of the AML "MethodFlags" and internal method flags
6013       so that there is no longer any confusion between the two.
6014
6015    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
6016
6017Debugger: Now lock the namespace for duration of a namespace dump.
6018Prevents
6019issues if the namespace is changing dynamically underneath the debugger.
6020Especially affects temporary namespace nodes, since the debugger displays
6021these also.
6022
6023Updated the ordering of include files. The ACPICA headers should appear
6024before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
6025set
6026any necessary compiler-specific defines, etc. Affects the ACPI-related
6027tools
6028and utilities.
6029
6030Updated all ACPICA copyrights and signons to 2011. Added the 2011
6031copyright
6032to all module headers and signons, including the Linux header. This
6033affects
6034virtually every file in the ACPICA core subsystem, iASL compiler, and all
6035utilities.
6036
6037Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
6038project files for VC++ 6.0 are now obsolete. New project files can be
6039found
6040under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
6041details.
6042
6043Example Code and Data Size: These are the sizes for the OS-independent
6044acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6045debug version of the code includes the debug output trace mechanism and
6046has a
6047much larger code and data size.
6048
6049  Previous Release (VC 6.0):
6050    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
6051    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
6052  Current Release (VC 9.0):
6053    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6054    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6055
60562) iASL Compiler/Disassembler and Tools:
6057
6058iASL: Added generic data types to the Data Table compiler. Add "generic"
6059data
6060types such as UINT32, String, Unicode, etc., to simplify the generation
6061of
6062platform-defined tables such as UEFI. Lin Ming.
6063
6064iASL: Added listing support for the Data Table Compiler. Adds listing
6065support
6066(-l) to display actual binary output for each line of input code.
6067
6068----------------------------------------
606909 December 2010. Summary of changes for version 20101209:
6070
60711) ACPI CA Core Subsystem:
6072
6073Completed the major overhaul of the GPE support code that was begun in
6074July
60752010. Major features include: removal of _PRW execution in ACPICA (host
6076executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
6077changes to existing interfaces, simplification of GPE handler operation,
6078and
6079a handful of new interfaces:
6080
6081    AcpiUpdateAllGpes
6082    AcpiFinishGpe
6083    AcpiSetupGpeForWake
6084    AcpiSetGpeWakeMask
6085    One new file, evxfgpe.c to consolidate all external GPE interfaces.
6086
6087See the ACPICA Programmer Reference for full details and programming
6088information. See the new section 4.4 "General Purpose Event (GPE)
6089Support"
6090for a full overview, and section 8.7 "ACPI General Purpose Event
6091Management"
6092for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
6093Ming,
6094Bob Moore, Rafael Wysocki.
6095
6096Implemented a new GPE feature for Windows compatibility, the "Implicit
6097Wake
6098GPE Notify". This feature will automatically issue a Notify(2) on a
6099device
6100when a Wake GPE is received if there is no corresponding GPE method or
6101handler. ACPICA BZ 870.
6102
6103Fixed a problem with the Scope() operator during table parse and load
6104phase.
6105During load phase (table load or method execution), the scope operator
6106should
6107not enter the target into the namespace. Instead, it should open a new
6108scope
6109at the target location. Linux BZ 19462, ACPICA BZ 882.
6110
6111Example Code and Data Size: These are the sizes for the OS-independent
6112acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6113debug version of the code includes the debug output trace mechanism and
6114has a
6115much larger code and data size.
6116
6117  Previous Release:
6118    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
6119    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
6120  Current Release:
6121    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
6122    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
6123
61242) iASL Compiler/Disassembler and Tools:
6125
6126iASL: Relax the alphanumeric restriction on _CID strings. These strings
6127are
6128"bus-specific" per the ACPI specification, and therefore any characters
6129are
6130acceptable. The only checks that can be performed are for a null string
6131and
6132perhaps for a leading asterisk. ACPICA BZ 886.
6133
6134iASL: Fixed a problem where a syntax error that caused a premature EOF
6135condition on the source file emitted a very confusing error message. The
6136premature EOF is now detected correctly. ACPICA BZ 891.
6137
6138Disassembler: Decode the AccessSize within a Generic Address Structure
6139(byte
6140access, word access, etc.) Note, this field does not allow arbitrary bit
6141access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
6142
6143New: AcpiNames utility - Example namespace dump utility. Shows an example
6144of
6145ACPICA configuration for a minimal namespace dump utility. Uses table and
6146namespace managers, but no AML interpreter. Does not add any
6147functionality
6148over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
6149partition and configure ACPICA. ACPICA BZ 883.
6150
6151AML Debugger: Increased the debugger buffer size for method return
6152objects.
6153Was 4K, increased to 16K. Also enhanced error messages for debugger
6154method
6155execution, including the buffer overflow case.
6156
6157----------------------------------------
615813 October 2010. Summary of changes for version 20101013:
6159
61601) ACPI CA Core Subsystem:
6161
6162Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
6163now
6164clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
6165HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
6166
6167Changed the type of the predefined namespace object _TZ from ThermalZone
6168to
6169Device. This was found to be confusing to the host software that
6170processes
6171the various thermal zones, since _TZ is not really a ThermalZone.
6172However,
6173a
6174Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
6175Zhang.
6176
6177Added Windows Vista SP2 to the list of supported _OSI strings. The actual
6178string is "Windows 2006 SP2".
6179
6180Eliminated duplicate code in AcpiUtExecute* functions. Now that the
6181nsrepair
6182code automatically repairs _HID-related strings, this type of code is no
6183longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
6184878.
6185
6186Example Code and Data Size: These are the sizes for the OS-independent
6187acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6188debug version of the code includes the debug output trace mechanism and
6189has a
6190much larger code and data size.
6191
6192  Previous Release:
6193    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
6194    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
6195  Current Release:
6196    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
6197    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
6198
61992) iASL Compiler/Disassembler and Tools:
6200
6201iASL: Implemented additional compile-time validation for _HID strings.
6202The
6203non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
6204length
6205of
6206the string must be exactly seven or eight characters. For both _HID and
6207_CID
6208strings, all characters must be alphanumeric. ACPICA BZ 874.
6209
6210iASL: Allow certain "null" resource descriptors. Some BIOS code creates
6211descriptors that are mostly or all zeros, with the expectation that they
6212will
6213be filled in at runtime. iASL now allows this as long as there is a
6214"resource
6215tag" (name) associated with the descriptor, which gives the ASL a handle
6216needed to modify the descriptor. ACPICA BZ 873.
6217
6218Added single-thread support to the generic Unix application OSL.
6219Primarily
6220for iASL support, this change removes the use of semaphores in the
6221single-
6222threaded ACPICA tools/applications - increasing performance. The
6223_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
6224option. ACPICA BZ 879.
6225
6226AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
6227support
6228for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
6229
6230iASL: Moved all compiler messages to a new file, aslmessages.h.
6231
6232----------------------------------------
623315 September 2010. Summary of changes for version 20100915:
6234
62351) ACPI CA Core Subsystem:
6236
6237Removed the AcpiOsDerivePciId OSL interface. The various host
6238implementations
6239of this function were not OS-dependent and are now obsolete and can be
6240removed from all host OSLs. This function has been replaced by
6241AcpiHwDerivePciId, which is now part of the ACPICA core code.
6242AcpiHwDerivePciId has been implemented without recursion. Adds one new
6243module, hwpci.c. ACPICA BZ 857.
6244
6245Implemented a dynamic repair for _HID and _CID strings. The following
6246problems are now repaired at runtime: 1) Remove a leading asterisk in the
6247string, and 2) the entire string is uppercased. Both repairs are in
6248accordance with the ACPI specification and will simplify host driver
6249code.
6250ACPICA BZ 871.
6251
6252The ACPI_THREAD_ID type is no longer configurable, internally it is now
6253always UINT64. This simplifies the ACPICA code, especially any printf
6254output.
6255UINT64 is the only common data type for all thread_id types across all
6256operating systems. It is now up to the host OSL to cast the native
6257thread_id
6258type to UINT64 before returning the value to ACPICA (via
6259AcpiOsGetThreadId).
6260Lin Ming, Bob Moore.
6261
6262Added the ACPI_INLINE type to enhance the ACPICA configuration. The
6263"inline"
6264keyword is not standard across compilers, and this type allows inline to
6265be
6266configured on a per-compiler basis. Lin Ming.
6267
6268Made the system global AcpiGbl_SystemAwakeAndRunning publically
6269available.
6270Added an extern for this boolean in acpixf.h. Some hosts utilize this
6271value
6272during suspend/restore operations. ACPICA BZ 869.
6273
6274All code that implements error/warning messages with the "ACPI:" prefix
6275has
6276been moved to a new module, utxferror.c.
6277
6278The UINT64_OVERLAY was moved to utmath.c, which is the only module where
6279it
6280is used. ACPICA BZ 829. Lin Ming, Bob Moore.
6281
6282Example Code and Data Size: These are the sizes for the OS-independent
6283acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6284debug version of the code includes the debug output trace mechanism and
6285has a
6286much larger code and data size.
6287
6288  Previous Release:
6289    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
6290    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
6291  Current Release:
6292    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
6293    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
6294
62952) iASL Compiler/Disassembler and Tools:
6296
6297iASL/Disassembler: Write ACPI errors to stderr instead of the output
6298file.
6299This keeps the output files free of random error messages that may
6300originate
6301from within the namespace/interpreter code. Used this opportunity to
6302merge
6303all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
6304866. Lin Ming, Bob Moore.
6305
6306Tools: update some printfs for ansi warnings on size_t. Handle width
6307change
6308of size_t on 32-bit versus 64-bit generations. Lin Ming.
6309
6310----------------------------------------
631106 August 2010. Summary of changes for version 20100806:
6312
63131) ACPI CA Core Subsystem:
6314
6315Designed and implemented a new host interface to the _OSI support code.
6316This
6317will allow the host to dynamically add or remove multiple _OSI strings,
6318as
6319well as install an optional handler that is called for each _OSI
6320invocation.
6321Also added a new AML debugger command, 'osi' to display and modify the
6322global
6323_OSI string table, and test support in the AcpiExec utility. See the
6324ACPICA
6325reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
6326New Functions:
6327    AcpiInstallInterface - Add an _OSI string.
6328    AcpiRemoveInterface - Delete an _OSI string.
6329    AcpiInstallInterfaceHandler - Install optional _OSI handler.
6330Obsolete Functions:
6331    AcpiOsValidateInterface - no longer used.
6332New Files:
6333    source/components/utilities/utosi.c
6334
6335Re-introduced the support to enable multi-byte transfers for Embedded
6336Controller (EC) operation regions. A reported problem was found to be a
6337bug
6338in the host OS, not in the multi-byte support. Previously, the maximum
6339data
6340size passed to the EC operation region handler was a single byte. There
6341are
6342often EC Fields larger than one byte that need to be transferred, and it
6343is
6344useful for the EC driver to lock these as a single transaction. This
6345change
6346enables single transfers larger than 8 bits. This effectively changes the
6347access to the EC space from ByteAcc to AnyAcc, and will probably require
6348changes to the host OS Embedded Controller driver to enable 16/32/64/256-
6349bit
6350transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
6351
6352Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
6353prototype in acpiosxf.h had the output value pointer as a (void *).
6354It should be a (UINT64 *). This may affect some host OSL code.
6355
6356Fixed a couple problems with the recently modified Linux makefiles for
6357iASL
6358and AcpiExec. These new makefiles place the generated object files in the
6359local directory so that there can be no collisions between the files that
6360are
6361shared between them that are compiled with different options.
6362
6363Example Code and Data Size: These are the sizes for the OS-independent
6364acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6365debug version of the code includes the debug output trace mechanism and
6366has a
6367much larger code and data size.
6368
6369  Previous Release:
6370    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
6371    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
6372  Current Release:
6373    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
6374    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
6375
63762) iASL Compiler/Disassembler and Tools:
6377
6378iASL/Disassembler: Added a new option (-da, "disassemble all") to load
6379the
6380namespace from and disassemble an entire group of AML files. Useful for
6381loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
6382and
6383disassembling with one simple command. ACPICA BZ 865. Lin Ming.
6384
6385iASL: Allow multiple invocations of -e option. This change allows
6386multiple
6387uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
6388834.
6389Lin Ming.
6390
6391----------------------------------------
639202 July 2010. Summary of changes for version 20100702:
6393
63941) ACPI CA Core Subsystem:
6395
6396Implemented several updates to the recently added GPE reference count
6397support. The model for "wake" GPEs is changing to give the host OS
6398complete
6399control of these GPEs. Eventually, the ACPICA core will not execute any
6400_PRW
6401methods, since the host already must execute them. Also, additional
6402changes
6403were made to help ensure that the reference counts are kept in proper
6404synchronization with reality. Rafael J. Wysocki.
6405
64061) Ensure that GPEs are not enabled twice during initialization.
64072) Ensure that GPE enable masks stay in sync with the reference count.
64083) Do not inadvertently enable GPEs when writing GPE registers.
64094) Remove the internal wake reference counter and add new AcpiGpeWakeup
6410interface. This interface will set or clear individual GPEs for wakeup.
64115) Remove GpeType argument from AcpiEnable and AcpiDisable. These
6412interfaces
6413are now used for "runtime" GPEs only.
6414
6415Changed the behavior of the GPE install/remove handler interfaces. The
6416GPE
6417is
6418no longer disabled during this process, as it was found to cause problems
6419on
6420some machines. Rafael J. Wysocki.
6421
6422Reverted a change introduced in version 20100528 to enable Embedded
6423Controller multi-byte transfers. This change was found to cause problems
6424with
6425Index Fields and possibly Bank Fields. It will be reintroduced when these
6426problems have been resolved.
6427
6428Fixed a problem with references to Alias objects within Package Objects.
6429A
6430reference to an Alias within the definition of a Package was not always
6431resolved properly. Aliases to objects like Processors, Thermal zones,
6432etc.
6433were resolved to the actual object instead of a reference to the object
6434as
6435it
6436should be. Package objects are only allowed to contain integer, string,
6437buffer, package, and reference objects. Redhat bugzilla 608648.
6438
6439Example Code and Data Size: These are the sizes for the OS-independent
6440acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6441debug version of the code includes the debug output trace mechanism and
6442has a
6443much larger code and data size.
6444
6445  Previous Release:
6446    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
6447    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
6448  Current Release:
6449    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
6450    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
6451
64522) iASL Compiler/Disassembler and Tools:
6453
6454iASL: Implemented a new compiler subsystem to allow definition and
6455compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
6456These
6457are called "ACPI Data Tables", and the new compiler is the "Data Table
6458Compiler". This compiler is intended to simplify the existing error-prone
6459process of creating these tables for the BIOS, as well as allowing the
6460disassembly, modification, recompilation, and override of existing ACPI
6461data
6462tables. See the iASL User Guide for detailed information.
6463
6464iASL: Implemented a new Template Generator option in support of the new
6465Data
6466Table Compiler. This option will create examples of all known ACPI tables
6467that can be used as the basis for table development. See the iASL
6468documentation and the -T option.
6469
6470Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
6471Descriptor Table).
6472
6473Updated the Linux makefiles for iASL and AcpiExec to place the generated
6474object files in the local directory so that there can be no collisions
6475between the shared files between them that are generated with different
6476options.
6477
6478Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
6479Use
6480the #define __APPLE__ to enable this support.
6481
6482----------------------------------------
648328 May 2010. Summary of changes for version 20100528:
6484
6485Note: The ACPI 4.0a specification was released on April 5, 2010 and is
6486available at www.acpi.info. This is primarily an errata release.
6487
64881) ACPI CA Core Subsystem:
6489
6490Undefined ACPI tables: We are looking for the definitions for the
6491following
6492ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
6493
6494Implemented support to enable multi-byte transfers for Embedded
6495Controller
6496(EC) operation regions. Previously, the maximum data size passed to the
6497EC
6498operation region handler was a single byte. There are often EC Fields
6499larger
6500than one byte that need to be transferred, and it is useful for the EC
6501driver
6502to lock these as a single transaction. This change enables single
6503transfers
6504larger than 8 bits. This effectively changes the access to the EC space
6505from
6506ByteAcc to AnyAcc, and will probably require changes to the host OS
6507Embedded
6508Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
6509bit
6510transfers. Alexey Starikovskiy, Lin Ming
6511
6512Implemented a performance enhancement for namespace search and access.
6513This
6514change enhances the performance of namespace searches and walks by adding
6515a
6516backpointer to the parent in each namespace node. On large namespaces,
6517this
6518change can improve overall ACPI performance by up to 9X. Adding a pointer
6519to
6520each namespace node increases the overall size of the internal namespace
6521by
6522about 5%, since each namespace entry usually consists of both a namespace
6523node and an ACPI operand object. However, this is the first growth of the
6524namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
6525
6526Implemented a performance optimization that reduces the number of
6527namespace
6528walks. On control method exit, only walk the namespace if the method is
6529known
6530to have created namespace objects outside of its local scope. Previously,
6531the
6532entire namespace was traversed on each control method exit. This change
6533can
6534improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
6535Moore.
6536
6537Added support to truncate I/O addresses to 16 bits for Windows
6538compatibility.
6539Some ASL code has been seen in the field that inadvertently has bits set
6540above bit 15. This feature is optional and is enabled if the BIOS
6541requests
6542any Windows OSI strings. It can also be enabled by the host OS. Matthew
6543Garrett, Bob Moore.
6544
6545Added support to limit the maximum time for the ASL Sleep() operator. To
6546prevent accidental deep sleeps, limit the maximum time that Sleep() will
6547actually sleep. Configurable, the default maximum is two seconds. ACPICA
6548bugzilla 854.
6549
6550Added run-time validation support for the _WDG and_WED Microsoft
6551predefined
6552methods. These objects are defined by "Windows Instrumentation", and are
6553not
6554part of the ACPI spec. ACPICA BZ 860.
6555
6556Expanded all statistic counters used during namespace and device
6557initialization from 16 to 32 bits in order to support very large
6558namespaces.
6559
6560Replaced all instances of %d in printf format specifiers with %u since
6561nearly
6562all integers in ACPICA are unsigned.
6563
6564Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
6565returned
6566as AE_NO_HANDLER.
6567
6568Example Code and Data Size: These are the sizes for the OS-independent
6569acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6570debug version of the code includes the debug output trace mechanism and
6571has a
6572much larger code and data size.
6573
6574  Previous Release:
6575    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
6576    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
6577  Current Release:
6578    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
6579    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
6580
65812) iASL Compiler/Disassembler and Tools:
6582
6583iASL: Added compiler support for the _WDG and_WED Microsoft predefined
6584methods. These objects are defined by "Windows Instrumentation", and are
6585not
6586part of the ACPI spec. ACPICA BZ 860.
6587
6588AcpiExec: added option to disable the memory tracking mechanism. The -dt
6589option will disable the tracking mechanism, which improves performance
6590considerably.
6591
6592AcpiExec: Restructured the command line options into -d (disable) and -e
6593(enable) options.
6594
6595----------------------------------------
659628 April 2010. Summary of changes for version 20100428:
6597
65981) ACPI CA Core Subsystem:
6599
6600Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
6601including FADT-based and GPE Block Devices, execute any _PRW methods in
6602the
6603new table, and process any _Lxx/_Exx GPE methods in the new table. Any
6604runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
6605immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
6606Devices. Provides compatibility with other ACPI implementations. Two new
6607files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
6608Moore.
6609
6610Fixed a regression introduced in version 20100331 within the table
6611manager
6612where initial table loading could fail. This was introduced in the fix
6613for
6614AcpiReallocateRootTable. Also, renamed some of fields in the table
6615manager
6616data structures to clarify their meaning and use.
6617
6618Fixed a possible allocation overrun during internal object copy in
6619AcpiUtCopySimpleObject. The original code did not correctly handle the
6620case
6621where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
6622847.
6623
6624Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
6625possible access beyond end-of-allocation. Also, now fully validate
6626descriptor
6627(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
6628
6629Example Code and Data Size: These are the sizes for the OS-independent
6630acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6631debug version of the code includes the debug output trace mechanism and
6632has a
6633much larger code and data size.
6634
6635  Previous Release:
6636    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
6637    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
6638  Current Release:
6639    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
6640    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
6641
66422) iASL Compiler/Disassembler and Tools:
6643
6644iASL: Implemented Min/Max/Len/Gran validation for address resource
6645descriptors. This change implements validation for the address fields
6646that
6647are common to all address-type resource descriptors. These checks are
6648implemented: Checks for valid Min/Max, length within the Min/Max window,
6649valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
6650per
6651table 6-40 in the ACPI 4.0a specification. Also split the large
6652aslrestype1.c
6653and aslrestype2.c files into five new files. ACPICA BZ 840.
6654
6655iASL: Added support for the _Wxx predefined names. This support was
6656missing
6657and these names were not recognized by the compiler as valid predefined
6658names. ACPICA BZ 851.
6659
6660iASL: Added an error for all predefined names that are defined to return
6661no
6662value and thus must be implemented as Control Methods. These include all
6663of
6664the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
6665names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
6666
6667iASL: Implemented the -ts option to emit hex AML data in ASL format, as
6668an
6669ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
6670be
6671dynamically loaded via the Load() operator. Also cleaned up output for
6672the
6673-
6674ta and -tc options. ACPICA BZ 853.
6675
6676Tests: Added a new file with examples of extended iASL error checking.
6677Demonstrates the advanced error checking ability of the iASL compiler.
6678Available at tests/misc/badcode.asl.
6679
6680----------------------------------------
668131 March 2010. Summary of changes for version 20100331:
6682
66831) ACPI CA Core Subsystem:
6684
6685Completed a major update for the GPE support in order to improve support
6686for
6687shared GPEs and to simplify both host OS and ACPICA code. Added a
6688reference
6689count mechanism to support shared GPEs that require multiple device
6690drivers.
6691Several external interfaces have changed. One external interface has been
6692removed. One new external interface was added. Most of the GPE external
6693interfaces now use the GPE spinlock instead of the events mutex (and the
6694Flags parameter for many GPE interfaces has been removed.) See the
6695updated
6696ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
6697Rafael
6698Wysocki. ACPICA BZ 831.
6699
6700Changed:
6701    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
6702Removed:
6703    AcpiSetGpeType
6704New:
6705    AcpiSetGpe
6706
6707Implemented write support for DataTable operation regions. These regions
6708are
6709defined via the DataTableRegion() operator. Previously, only read support
6710was
6711implemented. The ACPI specification allows DataTableRegions to be
6712read/write,
6713however.
6714
6715Implemented a new subsystem option to force a copy of the DSDT to local
6716memory. Optionally copy the entire DSDT to local memory (instead of
6717simply
6718mapping it.) There are some (albeit very rare) BIOSs that corrupt or
6719replace
6720the original DSDT, creating the need for this option. Default is FALSE,
6721do
6722not copy the DSDT.
6723
6724Implemented detection of a corrupted or replaced DSDT. This change adds
6725support to detect a DSDT that has been corrupted and/or replaced from
6726outside
6727the OS (by firmware). This is typically catastrophic for the system, but
6728has
6729been seen on some machines. Once this problem has been detected, the DSDT
6730copy option can be enabled via system configuration. Lin Ming, Bob Moore.
6731
6732Fixed two problems with AcpiReallocateRootTable during the root table
6733copy.
6734When copying the root table to the new allocation, the length used was
6735incorrect. The new size was used instead of the current table size,
6736meaning
6737too much data was copied. Also, the count of available slots for ACPI
6738tables
6739was not set correctly. Alexey Starikovskiy, Bob Moore.
6740
6741Example Code and Data Size: These are the sizes for the OS-independent
6742acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6743debug version of the code includes the debug output trace mechanism and
6744has a
6745much larger code and data size.
6746
6747  Previous Release:
6748    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
6749    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
6750  Current Release:
6751    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
6752    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
6753
67542) iASL Compiler/Disassembler and Tools:
6755
6756iASL: Implement limited typechecking for values returned from predefined
6757control methods. The type of any returned static (unnamed) object is now
6758validated. For example, Return(1). ACPICA BZ 786.
6759
6760iASL: Fixed a predefined name object verification regression. Fixes a
6761problem
6762introduced in version 20100304. An error is incorrectly generated if a
6763predefined name is declared as a static named object with a value defined
6764using the keywords "Zero", "One", or "Ones". Lin Ming.
6765
6766iASL: Added Windows 7 support for the -g option (get local ACPI tables)
6767by
6768reducing the requested registry access rights. ACPICA BZ 842.
6769
6770Disassembler: fixed a possible fault when generating External()
6771statements.
6772Introduced in commit ae7d6fd: Properly handle externals with parent-
6773prefix
6774(carat). Fixes a string length allocation calculation. Lin Ming.
6775
6776----------------------------------------
677704 March 2010. Summary of changes for version 20100304:
6778
67791) ACPI CA Core Subsystem:
6780
6781Fixed a possible problem with the AML Mutex handling function
6782AcpiExReleaseMutex where the function could fault under the very rare
6783condition when the interpreter has blocked, the interpreter lock is
6784released,
6785the interpreter is then reentered via the same thread, and attempts to
6786acquire an AML mutex that was previously acquired. FreeBSD report 140979.
6787Lin
6788Ming.
6789
6790Implemented additional configuration support for the AML "Debug Object".
6791Output from the debug object can now be enabled via a global variable,
6792AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
6793debugging.
6794This debug output is now available in the release version of ACPICA
6795instead
6796of just the debug version. Also, the entire debug output module can now
6797be
6798configured out of the ACPICA build if desired. One new file added,
6799executer/exdebug.c. Lin Ming, Bob Moore.
6800
6801Added header support for the ACPI MCHI table (Management Controller Host
6802Interface Table). This table was added in ACPI 4.0, but the defining
6803document
6804has only recently become available.
6805
6806Standardized output of integer values for ACPICA warnings/errors. Always
6807use
68080x prefix for hex output, always use %u for unsigned integer decimal
6809output.
6810Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
6811400
6812invocations.) These invocations were converted from the original
6813ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
6814
6815Example Code and Data Size: These are the sizes for the OS-independent
6816acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6817debug version of the code includes the debug output trace mechanism and
6818has a
6819much larger code and data size.
6820
6821  Previous Release:
6822    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
6823    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
6824  Current Release:
6825    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
6826    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
6827
68282) iASL Compiler/Disassembler and Tools:
6829
6830iASL: Implemented typechecking support for static (non-control method)
6831predefined named objects that are declared with the Name() operator. For
6832example, the type of this object is now validated to be of type Integer:
6833Name(_BBN, 1). This change migrates the compiler to using the core
6834predefined
6835name table instead of maintaining a local version. Added a new file,
6836aslpredef.c. ACPICA BZ 832.
6837
6838Disassembler: Added support for the ACPI 4.0 MCHI table.
6839
6840----------------------------------------
684121 January 2010. Summary of changes for version 20100121:
6842
68431) ACPI CA Core Subsystem:
6844
6845Added the 2010 copyright to all module headers and signons. This affects
6846virtually every file in the ACPICA core subsystem, the iASL compiler, the
6847tools/utilities, and the test suites.
6848
6849Implemented a change to the AcpiGetDevices interface to eliminate
6850unnecessary
6851invocations of the _STA method. In the case where a specific _HID is
6852requested, do not run _STA until a _HID match is found. This eliminates
6853potentially dozens of _STA calls during a search for a particular
6854device/HID,
6855which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
6856
6857Implemented an additional repair for predefined method return values.
6858Attempt
6859to repair unexpected NULL elements within returned Package objects.
6860Create
6861an
6862Integer of value zero, a NULL String, or a zero-length Buffer as
6863appropriate.
6864ACPICA BZ 818. Lin Ming, Bob Moore.
6865
6866Removed the obsolete ACPI_INTEGER data type. This type was introduced as
6867the
6868code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
6869(with
687064-bit AML integers). It is now obsolete and this change removes it from
6871the
6872ACPICA code base, replaced by UINT64. The original typedef has been
6873retained
6874for now for compatibility with existing device driver code. ACPICA BZ
6875824.
6876
6877Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
6878in
6879the parse tree object.
6880
6881Added additional warning options for the gcc-4 generation. Updated the
6882source
6883accordingly. This includes some code restructuring to eliminate
6884unreachable
6885code, elimination of some gotos, elimination of unused return values,
6886some
6887additional casting, and removal of redundant declarations.
6888
6889Example Code and Data Size: These are the sizes for the OS-independent
6890acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6891debug version of the code includes the debug output trace mechanism and
6892has a
6893much larger code and data size.
6894
6895  Previous Release:
6896    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
6897    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
6898  Current Release:
6899    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
6900    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
6901
69022) iASL Compiler/Disassembler and Tools:
6903
6904No functional changes for this release.
6905
6906----------------------------------------
690714 December 2009. Summary of changes for version 20091214:
6908
69091) ACPI CA Core Subsystem:
6910
6911Enhanced automatic data type conversions for predefined name repairs.
6912This
6913change expands the automatic repairs/conversions for predefined name
6914return
6915values to make Integers, Strings, and Buffers fully interchangeable.
6916Also,
6917a
6918Buffer can be converted to a Package of Integers if necessary. The
6919nsrepair.c
6920module was completely restructured. Lin Ming, Bob Moore.
6921
6922Implemented automatic removal of null package elements during predefined
6923name
6924repairs. This change will automatically remove embedded and trailing NULL
6925package elements from returned package objects that are defined to
6926contain
6927a
6928variable number of sub-packages. The driver is then presented with a
6929package
6930with no null elements to deal with. ACPICA BZ 819.
6931
6932Implemented a repair for the predefined _FDE and _GTM names. The expected
6933return value for both names is a Buffer of 5 DWORDs. This repair fixes
6934two
6935possible problems (both seen in the field), where a package of integers
6936is
6937returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
6938Kim.
6939
6940Implemented additional module-level code support. This change will
6941properly
6942execute module-level code that is not at the root of the namespace (under
6943a
6944Device object, etc.). Now executes the code within the current scope
6945instead
6946of the root. ACPICA BZ 762. Lin Ming.
6947
6948Fixed possible mutex acquisition errors when running _REG methods. Fixes
6949a
6950problem where mutex errors can occur when running a _REG method that is
6951in
6952the same scope as a method-defined operation region or an operation
6953region
6954under a module-level IF block. This type of code is rare, so the problem
6955has
6956not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
6957
6958Fixed a possible memory leak during module-level code execution. An
6959object
6960could be leaked for each block of executed module-level code if the
6961interpreter slack mode is enabled This change deletes any implicitly
6962returned
6963object from the module-level code block. Lin Ming.
6964
6965Removed messages for successful predefined repair(s). The repair
6966mechanism
6967was considered too wordy. Now, messages are only unconditionally emitted
6968if
6969the return object cannot be repaired. Existing messages for successful
6970repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
6971827.
6972
6973Example Code and Data Size: These are the sizes for the OS-independent
6974acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6975debug version of the code includes the debug output trace mechanism and
6976has a
6977much larger code and data size.
6978
6979  Previous Release:
6980    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
6981    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
6982  Current Release:
6983    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
6984    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
6985
69862) iASL Compiler/Disassembler and Tools:
6987
6988iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
6989files
6990were no longer automatically removed at the termination of the compile.
6991
6992acpiexec: Implemented the -f option to specify default region fill value.
6993This option specifies the value used to initialize buffers that simulate
6994operation regions. Default value is zero. Useful for debugging problems
6995that
6996depend on a specific initial value for a region or field.
6997
6998----------------------------------------
699912 November 2009. Summary of changes for version 20091112:
7000
70011) ACPI CA Core Subsystem:
7002
7003Implemented a post-order callback to AcpiWalkNamespace. The existing
7004interface only has a pre-order callback. This change adds an additional
7005parameter for a post-order callback which will be more useful for bus
7006scans.
7007ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
7008
7009Modified the behavior of the operation region memory mapping cache for
7010SystemMemory. Ensure that the memory mappings created for operation
7011regions
7012do not cross 4K page boundaries. Crossing a page boundary while mapping
7013regions can cause kernel warnings on some hosts if the pages have
7014different
7015attributes. Such regions are probably BIOS bugs, and this is the
7016workaround.
7017Linux BZ 14445. Lin Ming.
7018
7019Implemented an automatic repair for predefined methods that must return
7020sorted lists. This change will repair (by sorting) packages returned by
7021_ALR,
7022_PSS, and _TSS. Drivers can now assume that the packages are correctly
7023sorted
7024and do not contain NULL package elements. Adds one new file,
7025namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
7026
7027Fixed a possible fault during predefined name validation if a return
7028Package
7029object contains NULL elements. Also adds a warning if a NULL element is
7030followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
7031may
7032include repair or removal of all such NULL elements where possible.
7033
7034Implemented additional module-level executable AML code support. This
7035change
7036will execute module-level code that is not at the root of the namespace
7037(under a Device object, etc.) at table load time. Module-level executable
7038AML
7039code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
7040
7041Implemented a new internal function to create Integer objects. This
7042function
7043simplifies miscellaneous object creation code. ACPICA BZ 823.
7044
7045Reduced the severity of predefined repair messages, Warning to Info.
7046Since
7047the object was successfully repaired, a warning is too severe. Reduced to
7048an
7049info message for now. These messages may eventually be changed to debug-
7050only.
7051ACPICA BZ 812.
7052
7053Example Code and Data Size: These are the sizes for the OS-independent
7054acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7055debug version of the code includes the debug output trace mechanism and
7056has a
7057much larger code and data size.
7058
7059  Previous Release:
7060    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
7061    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
7062  Current Release:
7063    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
7064    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
7065
70662) iASL Compiler/Disassembler and Tools:
7067
7068iASL: Implemented Switch() with While(1) so that Break works correctly.
7069This
7070change correctly implements the Switch operator with a surrounding
7071While(1)
7072so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
7073
7074iASL: Added a message if a package initializer list is shorter than
7075package
7076length. Adds a new remark for a Package() declaration if an initializer
7077list
7078exists, but is shorter than the declared length of the package. Although
7079technically legal, this is probably a coding error and it is seen in the
7080field. ACPICA BZ 815. Lin Ming, Bob Moore.
7081
7082iASL: Fixed a problem where the compiler could fault after the maximum
7083number
7084of errors was reached (200).
7085
7086acpixtract: Fixed a possible warning for pointer cast if the compiler
7087warning
7088level set very high.
7089
7090----------------------------------------
709113 October 2009. Summary of changes for version 20091013:
7092
70931) ACPI CA Core Subsystem:
7094
7095Fixed a problem where an Operation Region _REG method could be executed
7096more
7097than once. If a custom address space handler is installed by the host
7098before
7099the "initialize operation regions" phase of the ACPICA initialization,
7100any
7101_REG methods for that address space could be executed twice. This change
7102fixes the problem. ACPICA BZ 427. Lin Ming.
7103
7104Fixed a possible memory leak for the Scope() ASL operator. When the exact
7105invocation of "Scope(\)" is executed (change scope to root), one internal
7106operand object was leaked. Lin Ming.
7107
7108Implemented a run-time repair for the _MAT predefined method. If the _MAT
7109return value is defined as a Field object in the AML, and the field
7110size is less than or equal to the default width of an integer (32 or
711164),_MAT
7112can incorrectly return an Integer instead of a Buffer. ACPICA now
7113automatically repairs this problem. ACPICA BZ 810.
7114
7115Implemented a run-time repair for the _BIF and _BIX predefined methods.
7116The
7117"OEM Information" field is often incorrectly returned as an Integer with
7118value zero if the field is not supported by the platform. This is due to
7119an
7120ambiguity in the ACPI specification. The field should always be a string.
7121ACPICA now automatically repairs this problem by returning a NULL string
7122within the returned Package. ACPICA BZ 807.
7123
7124Example Code and Data Size: These are the sizes for the OS-independent
7125acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7126debug version of the code includes the debug output trace mechanism and
7127has a
7128much larger code and data size.
7129
7130  Previous Release:
7131    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
7132    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
7133  Current Release:
7134    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
7135    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
7136
71372) iASL Compiler/Disassembler and Tools:
7138
7139Disassembler: Fixed a problem where references to external symbols that
7140contained one or more parent-prefixes (carats) were not handled
7141correctly,
7142possibly causing a fault. ACPICA BZ 806. Lin Ming.
7143
7144Disassembler: Restructured the code so that all functions that handle
7145external symbols are in a single module. One new file is added,
7146common/dmextern.c.
7147
7148AML Debugger: Added a max count argument for the Batch command (which
7149executes multiple predefined methods within the namespace.)
7150
7151iASL: Updated the compiler documentation (User Reference.) Available at
7152http://www.acpica.org/documentation/. ACPICA BZ 750.
7153
7154AcpiXtract: Updated for Lint and other formatting changes. Close all open
7155files.
7156
7157----------------------------------------
715803 September 2009. Summary of changes for version 20090903:
7159
71601) ACPI CA Core Subsystem:
7161
7162For Windows Vista compatibility, added the automatic execution of an _INI
7163method located at the namespace root (\_INI). This method is executed at
7164table load time. This support is in addition to the automatic execution
7165of
7166\_SB._INI. Lin Ming.
7167
7168Fixed a possible memory leak in the interpreter for AML package objects
7169if
7170the package initializer list is longer than the defined size of the
7171package.
7172This apparently can only happen if the BIOS changes the package size on
7173the
7174fly (seen in a _PSS object), as ASL compilers do not allow this. The
7175interpreter will truncate the package to the defined size (and issue an
7176error
7177message), but previously could leave the extra objects undeleted if they
7178were
7179pre-created during the argument processing (such is the case if the
7180package
7181consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
7182
7183Fixed a problem seen when a Buffer or String is stored to itself via ASL.
7184This has been reported in the field. Previously, ACPICA would zero out
7185the
7186buffer/string. Now, the operation is treated as a noop. Provides Windows
7187compatibility. ACPICA BZ 803. Lin Ming.
7188
7189Removed an extraneous error message for ASL constructs of the form
7190Store(LocalX,LocalX) when LocalX is uninitialized. These curious
7191statements
7192are seen in many BIOSs and are once again treated as NOOPs and no error
7193is
7194emitted when they are encountered. ACPICA BZ 785.
7195
7196Fixed an extraneous warning message if a _DSM reserved method returns a
7197Package object. _DSM can return any type of object, so validation on the
7198return type cannot be performed. ACPICA BZ 802.
7199
7200Example Code and Data Size: These are the sizes for the OS-independent
7201acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7202debug version of the code includes the debug output trace mechanism and
7203has a
7204much larger code and data size.
7205
7206  Previous Release:
7207    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
7208    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
7209  Current Release:
7210    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
7211    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
7212
72132) iASL Compiler/Disassembler and Tools:
7214
7215iASL: Fixed a problem with the use of the Alias operator and Resource
7216Templates. The correct alias is now constructed and no error is emitted.
7217ACPICA BZ 738.
7218
7219iASL: Implemented the -I option to specify additional search directories
7220for
7221include files. Allows multiple additional search paths for include files.
7222Directories are searched in the order specified on the command line
7223(after
7224the local directory is searched.) ACPICA BZ 800.
7225
7226iASL: Fixed a problem where the full pathname for include files was not
7227emitted for warnings/errors. This caused the IDE support to not work
7228properly. ACPICA BZ 765.
7229
7230iASL: Implemented the -@ option to specify a Windows-style response file
7231containing additional command line options. ACPICA BZ 801.
7232
7233AcpiExec: Added support to load multiple AML files simultaneously (such
7234as
7235a
7236DSDT and multiple SSDTs). Also added support for wildcards within the AML
7237pathname. These features allow all machine tables to be easily loaded and
7238debugged together. ACPICA BZ 804.
7239
7240Disassembler: Added missing support for disassembly of HEST table Error
7241Bank
7242subtables.
7243
7244----------------------------------------
724530 July 2009. Summary of changes for version 20090730:
7246
7247The ACPI 4.0 implementation for ACPICA is complete with this release.
7248
72491) ACPI CA Core Subsystem:
7250
7251ACPI 4.0: Added header file support for all new and changed ACPI tables.
7252Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
7253new
7254for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
7255BERT,
7256EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
7257There
7258have been some ACPI 4.0 changes to other existing tables. Split the large
7259actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
7260
7261ACPI 4.0: Implemented predefined name validation for all new names. There
7262are
726331 new names in ACPI 4.0. The predefined validation module was split into
7264two
7265files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
7266
7267Implemented support for so-called "module-level executable code". This is
7268executable AML code that exists outside of any control method and is
7269intended
7270to be executed at table load time. Although illegal since ACPI 2.0, this
7271type
7272of code still exists and is apparently still being created. Blocks of
7273this
7274code are now detected and executed as intended. Currently, the code
7275blocks
7276must exist under either an If, Else, or While construct; these are the
7277typical cases seen in the field. ACPICA BZ 762. Lin Ming.
7278
7279Implemented an automatic dynamic repair for predefined names that return
7280nested Package objects. This applies to predefined names that are defined
7281to
7282return a variable-length Package of sub-packages. If the number of sub-
7283packages is one, BIOS code is occasionally seen that creates a simple
7284single
7285package with no sub-packages. This code attempts to fix the problem by
7286wrapping a new package object around the existing package. These methods
7287can
7288be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
7289BZ
7290790.
7291
7292Fixed a regression introduced in 20090625 for the AcpiGetDevices
7293interface.
7294The _HID/_CID matching was broken and no longer matched IDs correctly.
7295ACPICA
7296BZ 793.
7297
7298Fixed a problem with AcpiReset where the reset would silently fail if the
7299register was one of the protected I/O ports. AcpiReset now bypasses the
7300port
7301validation mechanism. This may eventually be driven into the
7302AcpiRead/Write
7303interfaces.
7304
7305Fixed a regression related to the recent update of the AcpiRead/Write
7306interfaces. A sleep/suspend could fail if the optional PM2 Control
7307register
7308does not exist during an attempt to write the Bus Master Arbitration bit.
7309(However, some hosts already delete the code that writes this bit, and
7310the
7311code may in fact be obsolete at this date.) ACPICA BZ 799.
7312
7313Fixed a problem where AcpiTerminate could fault if inadvertently called
7314twice
7315in succession. ACPICA BZ 795.
7316
7317Example Code and Data Size: These are the sizes for the OS-independent
7318acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7319debug version of the code includes the debug output trace mechanism and
7320has a
7321much larger code and data size.
7322
7323  Previous Release:
7324    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
7325    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
7326  Current Release:
7327    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
7328    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
7329
73302) iASL Compiler/Disassembler and Tools:
7331
7332ACPI 4.0: Implemented disassembler support for all new ACPI tables and
7333changes to existing tables. ACPICA BZ 775.
7334
7335----------------------------------------
733625 June 2009. Summary of changes for version 20090625:
7337
7338The ACPI 4.0 Specification was released on June 16 and is available at
7339www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
7340continue for the next few releases.
7341
73421) ACPI CA Core Subsystem:
7343
7344ACPI 4.0: Implemented interpreter support for the IPMI operation region
7345address space. Includes support for bi-directional data buffers and an
7346IPMI
7347address space handler (to be installed by an IPMI device driver.) ACPICA
7348BZ
7349773. Lin Ming.
7350
7351ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
7352Includes
7353support in both the header files and the disassembler.
7354
7355Completed a major update for the AcpiGetObjectInfo external interface.
7356Changes include:
7357 - Support for variable, unlimited length HID, UID, and CID strings.
7358 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
7359etc.)
7360 - Call the _SxW power methods on behalf of a device object.
7361 - Determine if a device is a PCI root bridge.
7362 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
7363These changes will require an update to all callers of this interface.
7364See
7365the updated ACPICA Programmer Reference for details. One new source file
7366has
7367been added - utilities/utids.c. ACPICA BZ 368, 780.
7368
7369Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
7370transfers. The Value parameter has been extended from 32 bits to 64 bits
7371in
7372order to support new ACPI 4.0 tables. These changes will require an
7373update
7374to
7375all callers of these interfaces. See the ACPICA Programmer Reference for
7376details. ACPICA BZ 768.
7377
7378Fixed several problems with AcpiAttachData. The handler was not invoked
7379when
7380the host node was deleted. The data sub-object was not automatically
7381deleted
7382when the host node was deleted. The interface to the handler had an
7383unused
7384parameter, this was removed. ACPICA BZ 778.
7385
7386Enhanced the function that dumps ACPI table headers. All non-printable
7387characters in the string fields are now replaced with '?' (Signature,
7388OemId,
7389OemTableId, and CompilerId.) ACPI tables with non-printable characters in
7390these fields are occasionally seen in the field. ACPICA BZ 788.
7391
7392Fixed a problem with predefined method repair code where the code that
7393attempts to repair/convert an object of incorrect type is only executed
7394on
7395the first time the predefined method is called. The mechanism that
7396disables
7397warnings on subsequent calls was interfering with the repair mechanism.
7398ACPICA BZ 781.
7399
7400Fixed a possible memory leak in the predefined validation/repair code
7401when
7402a
7403buffer is automatically converted to an expected string object.
7404
7405Removed obsolete 16-bit files from the distribution and from the current
7406git
7407tree head. ACPICA BZ 776.
7408
7409Example Code and Data Size: These are the sizes for the OS-independent
7410acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7411debug version of the code includes the debug output trace mechanism and
7412has a
7413much larger code and data size.
7414
7415  Previous Release:
7416    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
7417    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
7418  Current Release:
7419    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
7420    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
7421
74222) iASL Compiler/Disassembler and Tools:
7423
7424ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
7425operation region keyword. ACPICA BZ 771, 772. Lin Ming.
7426
7427ACPI 4.0: iASL - implemented compile-time validation support for all new
7428predefined names and control methods (31 total). ACPICA BZ 769.
7429
7430----------------------------------------
743121 May 2009. Summary of changes for version 20090521:
7432
74331) ACPI CA Core Subsystem:
7434
7435Disabled the preservation of the SCI enable bit in the PM1 control
7436register.
7437The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
7438to
7439be
7440a "preserved" bit - "OSPM always preserves this bit position", section
74414.7.3.2.1. However, some machines fail if this bit is in fact preserved
7442because the bit needs to be explicitly set by the OS as a workaround. No
7443machines fail if the bit is not preserved. Therefore, ACPICA no longer
7444attempts to preserve this bit.
7445
7446Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
7447incorrectly formed _PRT package could cause a fault. Added validation to
7448ensure that each package element is actually a sub-package.
7449
7450Implemented a new interface to install or override a single control
7451method,
7452AcpiInstallMethod. This interface is useful when debugging in order to
7453repair
7454an existing method or to install a missing method without having to
7455override
7456the entire ACPI table. See the ACPICA Programmer Reference for use and
7457examples. Lin Ming, Bob Moore.
7458
7459Fixed several reference count issues with the DdbHandle object that is
7460created from a Load or LoadTable operator. Prevent premature deletion of
7461the
7462object. Also, mark the object as invalid once the table has been
7463unloaded.
7464This is needed because the handle itself may not be deleted after the
7465table
7466unload, depending on whether it has been stored in a named object by the
7467caller. Lin Ming.
7468
7469Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
7470mutexes of the same sync level are acquired but then not released in
7471strict
7472opposite order, the internally maintained Current Sync Level becomes
7473confused
7474and can cause subsequent execution errors. ACPICA BZ 471.
7475
7476Changed the allowable release order for ASL mutex objects. The ACPI 4.0
7477specification has been changed to make the SyncLevel for mutex objects
7478more
7479useful. When releasing a mutex, the SyncLevel of the mutex must now be
7480the
7481same as the current sync level. This makes more sense than the previous
7482rule
7483(SyncLevel less than or equal). This change updates the code to match the
7484specification.
7485
7486Fixed a problem with the local version of the AcpiOsPurgeCache function.
7487The
7488(local) cache must be locked during all cache object deletions. Andrew
7489Baumann.
7490
7491Updated the Load operator to use operation region interfaces. This
7492replaces
7493direct memory mapping with region access calls. Now, all region accesses
7494go
7495through the installed region handler as they should.
7496
7497Simplified and optimized the NsGetNextNode function. Reduced parameter
7498count
7499and reduced code for this frequently used function.
7500
7501Example Code and Data Size: These are the sizes for the OS-independent
7502acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7503debug version of the code includes the debug output trace mechanism and
7504has a
7505much larger code and data size.
7506
7507  Previous Release:
7508    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
7509    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
7510  Current Release:
7511    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
7512    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
7513
75142) iASL Compiler/Disassembler and Tools:
7515
7516Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
7517problems
7518with sub-table disassembly and handling invalid sub-tables. Attempt
7519recovery
7520after an invalid sub-table ID.
7521
7522----------------------------------------
752322 April 2009. Summary of changes for version 20090422:
7524
75251) ACPI CA Core Subsystem:
7526
7527Fixed a compatibility issue with the recently released I/O port
7528protection
7529mechanism. For windows compatibility, 1) On a port protection violation,
7530simply ignore the request and do not return an exception (allow the
7531control
7532method to continue execution.) 2) If only part of the request overlaps a
7533protected port, read/write the individual ports that are not protected.
7534Linux
7535BZ 13036. Lin Ming
7536
7537Enhanced the execution of the ASL/AML BreakPoint operator so that it
7538actually
7539breaks into the AML debugger if the debugger is present. This matches the
7540ACPI-defined behavior.
7541
7542Fixed several possible warnings related to the use of the configurable
7543ACPI_THREAD_ID. This type can now be configured as either an integer or a
7544pointer with no warnings. Also fixes several warnings in printf-like
7545statements for the 64-bit build when the type is configured as a pointer.
7546ACPICA BZ 766, 767.
7547
7548Fixed a number of possible warnings when compiling with gcc 4+ (depending
7549on
7550warning options.) Examples include printf formats, aliasing, unused
7551globals,
7552missing prototypes, missing switch default statements, use of non-ANSI
7553library functions, use of non-ANSI constructs. See generate/unix/Makefile
7554for
7555a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
7556
7557Example Code and Data Size: These are the sizes for the OS-independent
7558acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7559debug version of the code includes the debug output trace mechanism and
7560has a
7561much larger code and data size.
7562
7563  Previous Release:
7564    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
7565    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
7566  Current Release:
7567    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
7568    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
7569
75702) iASL Compiler/Disassembler and Tools:
7571
7572iASL: Fixed a generation warning from Bison 2.3 and fixed several
7573warnings
7574on
7575the 64-bit build.
7576
7577iASL: Fixed a problem where the Unix/Linux versions of the compiler could
7578not
7579correctly digest Windows/DOS formatted files (with CR/LF).
7580
7581iASL: Added a new option for "quiet mode" (-va) that produces only the
7582compilation summary, not individual errors and warnings. Useful for large
7583batch compilations.
7584
7585AcpiExec: Implemented a new option (-z) to enable a forced
7586semaphore/mutex
7587timeout that can be used to detect hang conditions during execution of
7588AML
7589code (includes both internal semaphores and AML-defined mutexes and
7590events.)
7591
7592Added new makefiles for the generation of acpica in a generic unix-like
7593environment. These makefiles are intended to generate the acpica tools
7594and
7595utilities from the original acpica git source tree structure.
7596
7597Test Suites: Updated and cleaned up the documentation files. Updated the
7598copyrights to 2009, affecting all source files. Use the new version of
7599iASL
7600with quiet mode. Increased the number of available semaphores in the
7601Windows
7602OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
7603added
7604an alternate implementation of the semaphore timeout to allow aslts to
7605execute fully on Cygwin.
7606
7607----------------------------------------
760820 March 2009. Summary of changes for version 20090320:
7609
76101) ACPI CA Core Subsystem:
7611
7612Fixed a possible race condition between AcpiWalkNamespace and dynamic
7613table
7614unloads. Added a reader/writer locking mechanism to allow multiple
7615concurrent
7616namespace walks (readers), but block a dynamic table unload until it can
7617gain
7618exclusive write access to the namespace. This fixes a problem where a
7619table
7620unload could (possibly catastrophically) delete the portion of the
7621namespace
7622that is currently being examined by a walk. Adds a new file, utlock.c,
7623that
7624implements the reader/writer lock mechanism. ACPICA BZ 749.
7625
7626Fixed a regression introduced in version 20090220 where a change to the
7627FADT
7628handling could cause the ACPICA subsystem to access non-existent I/O
7629ports.
7630
7631Modified the handling of FADT register and table (FACS/DSDT) addresses.
7632The
7633FADT can contain both 32-bit and 64-bit versions of these addresses.
7634Previously, the 64-bit versions were favored, meaning that if both 32 and
763564
7636versions were valid, but not equal, the 64-bit version was used. This was
7637found to cause some machines to fail. Now, in this case, the 32-bit
7638version
7639is used instead. This now matches the Windows behavior.
7640
7641Implemented a new mechanism to protect certain I/O ports. Provides
7642Microsoft
7643compatibility and protects the standard PC I/O ports from access via AML
7644code. Adds a new file, hwvalid.c
7645
7646Fixed a possible extraneous warning message from the FADT support. The
7647message warns of a 32/64 length mismatch between the legacy and GAS
7648definitions for a register.
7649
7650Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
7651is
7652made obsolete by the port protection mechanism above. It was previously
7653used
7654to validate the entire address range of an operation region, which could
7655be
7656incorrect if the range included illegal ports, but fields within the
7657operation region did not actually access those ports. Validation is now
7658performed on a per-field basis instead of the entire region.
7659
7660Modified the handling of the PM1 Status Register ignored bit (bit 11.)
7661Ignored bits must be "preserved" according to the ACPI spec. Usually,
7662this
7663means a read/modify/write when writing to the register. However, for
7664status
7665registers, writing a one means clear the event. Writing a zero means
7666preserve
7667the event (do not clear.) This behavior is clarified in the ACPI 4.0
7668spec,
7669and the ACPICA code now simply always writes a zero to the ignored bit.
7670
7671Modified the handling of ignored bits for the PM1 A/B Control Registers.
7672As
7673per the ACPI specification, for the control registers, preserve
7674(read/modify/write) all bits that are defined as either reserved or
7675ignored.
7676
7677Updated the handling of write-only bits in the PM1 A/B Control Registers.
7678When reading the register, zero the write-only bits as per the ACPI spec.
7679ACPICA BZ 443. Lin Ming.
7680
7681Removed "Linux" from the list of supported _OSI strings. Linux no longer
7682wants to reply true to this request. The Windows strings are the only
7683paths
7684through the AML that are tested and known to work properly.
7685
7686  Previous Release:
7687    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
7688    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
7689  Current Release:
7690    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
7691    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
7692
76932) iASL Compiler/Disassembler and Tools:
7694
7695Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
7696and
7697aetables.c
7698
7699----------------------------------------
770020 February 2009. Summary of changes for version 20090220:
7701
77021) ACPI CA Core Subsystem:
7703
7704Optimized the ACPI register locking. Removed locking for reads from the
7705ACPI
7706bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
7707is
7708not required when reading the single-bit registers. The
7709AcpiGetRegisterUnlocked function is no longer needed and has been
7710removed.
7711This will improve performance for reads on these registers. ACPICA BZ
7712760.
7713
7714Fixed the parameter validation for AcpiRead/Write. Now return
7715AE_BAD_PARAMETER if the input register pointer is null, and
7716AE_BAD_ADDRESS
7717if
7718the register has an address of zero. Previously, these cases simply
7719returned
7720AE_OK. For optional registers such as PM1B status/enable/control, the
7721caller
7722should check for a valid register address before calling. ACPICA BZ 748.
7723
7724Renamed the external ACPI bit register access functions. Renamed
7725AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
7726functions. The new names are AcpiReadBitRegister and
7727AcpiWriteBitRegister.
7728Also, restructured the code for these functions by simplifying the code
7729path
7730and condensing duplicate code to reduce code size.
7731
7732Added new functions to transparently handle the possibly split PM1 A/B
7733registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
7734functions
7735now handle the split registers for PM1 Status, Enable, and Control.
7736ACPICA
7737BZ
7738746.
7739
7740Added a function to handle the PM1 control registers,
7741AcpiHwWritePm1Control.
7742This function writes both of the PM1 control registers (A/B). These
7743registers
7744are different than the PM1 A/B status and enable registers in that
7745different
7746values can be written to the A/B registers. Most notably, the SLP_TYP
7747bits
7748can be different, as per the values returned from the _Sx predefined
7749methods.
7750
7751Removed an extra register write within AcpiHwClearAcpiStatus. This
7752function
7753was writing an optional PM1B status register twice. The existing call to
7754the
7755low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
7756A/B
7757register. ACPICA BZ 751.
7758
7759Split out the PM1 Status registers from the FADT. Added new globals for
7760these
7761registers (A/B), similar to the way the PM1 Enable registers are handled.
7762Instead of overloading the FADT Event Register blocks. This makes the
7763code
7764clearer and less prone to error.
7765
7766Fixed the warning message for when the platform contains too many ACPI
7767tables
7768for the default size of the global root table data structure. The
7769calculation
7770for the truncation value was incorrect.
7771
7772Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
7773obsolete macro, since it is now a simple reference to ->common.type.
7774There
7775were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
7776
7777Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
7778TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
7779simply SLEEP_TYPE. ACPICA BZ 754.
7780
7781Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
7782function is only needed on 64-bit host operating systems and is thus not
7783included for 32-bit hosts.
7784
7785Debug output: print the input and result for invocations of the _OSI
7786reserved
7787control method via the ACPI_LV_INFO debug level. Also, reduced some of
7788the
7789verbosity of this debug level. Len Brown.
7790
7791Example Code and Data Size: These are the sizes for the OS-independent
7792acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7793debug version of the code includes the debug output trace mechanism and
7794has a
7795much larger code and data size.
7796
7797  Previous Release:
7798    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
7799    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
7800  Current Release:
7801    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
7802    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
7803
78042) iASL Compiler/Disassembler and Tools:
7805
7806Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
7807various legal performance profiles.
7808
7809----------------------------------------
781023 January 2009. Summary of changes for version 20090123:
7811
78121) ACPI CA Core Subsystem:
7813
7814Added the 2009 copyright to all module headers and signons. This affects
7815virtually every file in the ACPICA core subsystem, the iASL compiler, and
7816the tools/utilities.
7817
7818Implemented a change to allow the host to override any ACPI table,
7819including
7820dynamically loaded tables. Previously, only the DSDT could be replaced by
7821the
7822host. With this change, the AcpiOsTableOverride interface is called for
7823each
7824table found in the RSDT/XSDT during ACPICA initialization, and also
7825whenever
7826a table is dynamically loaded via the AML Load operator.
7827
7828Updated FADT flag definitions, especially the Boot Architecture flags.
7829
7830Debugger: For the Find command, automatically pad the input ACPI name
7831with
7832underscores if the name is shorter than 4 characters. This enables a
7833match
7834with the actual namespace entry which is itself padded with underscores.
7835
7836Example Code and Data Size: These are the sizes for the OS-independent
7837acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7838debug version of the code includes the debug output trace mechanism and
7839has a
7840much larger code and data size.
7841
7842  Previous Release:
7843    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
7844    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
7845  Current Release:
7846    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
7847    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
7848
78492) iASL Compiler/Disassembler and Tools:
7850
7851Fix build error under Bison-2.4.
7852
7853Dissasembler: Enhanced FADT support. Added decoding of the Boot
7854Architecture
7855flags. Now decode all flags, regardless of the FADT version. Flag output
7856includes the FADT version which first defined each flag.
7857
7858The iASL -g option now dumps the RSDT to a file (in addition to the FADT
7859and
7860DSDT). Windows only.
7861
7862----------------------------------------
786304 December 2008. Summary of changes for version 20081204:
7864
78651) ACPI CA Core Subsystem:
7866
7867The ACPICA Programmer Reference has been completely updated and revamped
7868for
7869this release. This includes updates to the external interfaces, OSL
7870interfaces, the overview sections, and the debugger reference.
7871
7872Several new ACPICA interfaces have been implemented and documented in the
7873programmer reference:
7874AcpiReset - Writes the reset value to the FADT-defined reset register.
7875AcpiDisableAllGpes - Disable all available GPEs.
7876AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
7877AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
7878AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
7879AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
7880AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
7881
7882Most of the public ACPI hardware-related interfaces have been moved to a
7883new
7884file, components/hardware/hwxface.c
7885
7886Enhanced the FADT parsing and low-level ACPI register access: The ACPI
7887register lengths within the FADT are now used, and the low level ACPI
7888register access no longer hardcodes the ACPI register lengths. Given that
7889there may be some risk in actually trusting the FADT register lengths, a
7890run-
7891time option was added to fall back to the default hardcoded lengths if
7892the
7893FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
7894option is set to true for now, and a warning is issued if a suspicious
7895FADT
7896register length is overridden with the default value.
7897
7898Fixed a reference count issue in NsRepairObject. This problem was
7899introduced
7900in version 20081031 as part of a fix to repair Buffer objects within
7901Packages. Lin Ming.
7902
7903Added semaphore support to the Linux/Unix application OS-services layer
7904(OSL). ACPICA BZ 448. Lin Ming.
7905
7906Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
7907will
7908be implemented in the OSL, or will binary semaphores be used instead.
7909
7910Example Code and Data Size: These are the sizes for the OS-independent
7911acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7912debug version of the code includes the debug output trace mechanism and
7913has a
7914much larger code and data size.
7915
7916  Previous Release:
7917    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
7918    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
7919  Current Release:
7920    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
7921    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
7922
79232) iASL Compiler/Disassembler and Tools:
7924
7925iASL: Completed the '-e' option to include additional ACPI tables in
7926order
7927to
7928aid with disassembly and External statement generation. ACPICA BZ 742.
7929Lin
7930Ming.
7931
7932iASL: Removed the "named object in while loop" error. The compiler cannot
7933determine how many times a loop will execute. ACPICA BZ 730.
7934
7935Disassembler: Implemented support for FADT revision 2 (MS extension).
7936ACPICA
7937BZ 743.
7938
7939Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
7940MCFG).
7941
7942----------------------------------------
794331 October 2008. Summary of changes for version 20081031:
7944
79451) ACPI CA Core Subsystem:
7946
7947Restructured the ACPICA header files into public/private. acpi.h now
7948includes
7949only the "public" acpica headers. All other acpica headers are "private"
7950and
7951should not be included by acpica users. One new file, accommon.h is used
7952to
7953include the commonly used private headers for acpica code generation.
7954Future
7955plans include moving all private headers to a new subdirectory.
7956
7957Implemented an automatic Buffer->String return value conversion for
7958predefined ACPI methods. For these methods (such as _BIF), added
7959automatic
7960conversion for return objects that are required to be a String, but a
7961Buffer
7962was found instead. This can happen when reading string battery data from
7963an
7964operation region, because it used to be difficult to convert the data
7965from
7966buffer to string from within the ASL. Ensures that the host OS is
7967provided
7968with a valid null-terminated string. Linux BZ 11822.
7969
7970Updated the FACS waking vector interfaces. Split
7971AcpiSetFirmwareWakingVector
7972into two: one for the 32-bit vector, another for the 64-bit vector. This
7973is
7974required because the host OS must setup the wake much differently for
7975each
7976vector (real vs. protected mode, etc.) and the interface itself should
7977not
7978be
7979deciding which vector to use. Also, eliminated the
7980GetFirmwareWakingVector
7981interface, as it served no purpose (only the firmware reads the vector,
7982OS
7983only writes the vector.) ACPICA BZ 731.
7984
7985Implemented a mechanism to escape infinite AML While() loops. Added a
7986loop
7987counter to force exit from AML While loops if the count becomes too
7988large.
7989This can occur in poorly written AML when the hardware does not respond
7990within a while loop and the loop does not implement a timeout. The
7991maximum
7992loop count is configurable. A new exception code is returned when a loop
7993is
7994broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
7995
7996Optimized the execution of AML While loops. Previously, a control state
7997object was allocated and freed for each execution of the loop. The
7998optimization is to simply reuse the control state for each iteration.
7999This
8000speeds up the raw loop execution time by about 5%.
8001
8002Enhanced the implicit return mechanism. For Windows compatibility, return
8003an
8004implicit integer of value zero for methods that contain no executable
8005code.
8006Such methods are seen in the field as stubs (presumably), and can cause
8007drivers to fail if they expect a return value. Lin Ming.
8008
8009Allow multiple backslashes as root prefixes in namepaths. In a fully
8010qualified namepath, allow multiple backslash prefixes. This can happen
8011(and
8012is seen in the field) because of the use of a double-backslash in strings
8013(since backslash is the escape character) causing confusion. ACPICA BZ
8014739
8015Lin Ming.
8016
8017Emit a warning if two different FACS or DSDT tables are discovered in the
8018FADT. Checks if there are two valid but different addresses for the FACS
8019and
8020DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
8021
8022Consolidated the method argument count validation code. Merged the code
8023that
8024validates control method argument counts into the predefined validation
8025module. Eliminates possible multiple warnings for incorrect argument
8026counts.
8027
8028Implemented ACPICA example code. Includes code for ACPICA initialization,
8029handler installation, and calling a control method. Available at
8030source/tools/examples.
8031
8032Added a global pointer for FACS table to simplify internal FACS access.
8033Use
8034the global pointer instead of using AcpiGetTableByIndex for each FACS
8035access.
8036This simplifies the code for the Global Lock and the Firmware Waking
8037Vector(s).
8038
8039Example Code and Data Size: These are the sizes for the OS-independent
8040acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8041debug version of the code includes the debug output trace mechanism and
8042has a
8043much larger code and data size.
8044
8045  Previous Release:
8046    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
8047    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
8048  Current Release:
8049    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
8050    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
8051
80522) iASL Compiler/Disassembler and Tools:
8053
8054iASL: Improved disassembly of external method calls. Added the -e option
8055to
8056allow the inclusion of additional ACPI tables to help with the
8057disassembly
8058of
8059method invocations and the generation of external declarations during the
8060disassembly. Certain external method invocations cannot be disassembled
8061properly without the actual declaration of the method. Use the -e option
8062to
8063include the table where the external method(s) are actually declared.
8064Most
8065useful for disassembling SSDTs that make method calls back to the master
8066DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
8067-d
8068-e dsdt.aml ssdt1.aml
8069
8070iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
8071problem where the use of an alias within a namepath would result in a not
8072found error or cause the compiler to fault. Also now allows forward
8073references from the Alias operator itself. ACPICA BZ 738.
8074
8075----------------------------------------
807626 September 2008. Summary of changes for version 20080926:
8077
80781) ACPI CA Core Subsystem:
8079
8080Designed and implemented a mechanism to validate predefined ACPI methods
8081and
8082objects. This code validates the predefined ACPI objects (objects whose
8083names
8084start with underscore) that appear in the namespace, at the time they are
8085evaluated. The argument count and the type of the returned object are
8086validated against the ACPI specification. The purpose of this validation
8087is
8088to detect problems with the BIOS-implemented predefined ACPI objects
8089before
8090the results are returned to the ACPI-related drivers. Future enhancements
8091may
8092include actual repair of incorrect return objects where possible. Two new
8093files are nspredef.c and acpredef.h.
8094
8095Fixed a fault in the AML parser if a memory allocation fails during the
8096Op
8097completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
8098
8099Fixed an issue with implicit return compatibility. This change improves
8100the
8101implicit return mechanism to be more compatible with the MS interpreter.
8102Lin
8103Ming, ACPICA BZ 349.
8104
8105Implemented support for zero-length buffer-to-string conversions. Allow
8106zero
8107length strings during interpreter buffer-to-string conversions. For
8108example,
8109during the ToDecimalString and ToHexString operators, as well as implicit
8110conversions. Fiodor Suietov, ACPICA BZ 585.
8111
8112Fixed two possible memory leaks in the error exit paths of
8113AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
8114are
8115similar in that they use a stack of state objects in order to eliminate
8116recursion. The stack must be fully unwound and deallocated if an error
8117occurs. Lin Ming. ACPICA BZ 383.
8118
8119Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
8120global
8121ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
8122Moore ACPICA BZ 442.
8123
8124Removed the obsolete version number in module headers. Removed the
8125"$Revision" number that appeared in each module header. This version
8126number
8127was useful under SourceSafe and CVS, but has no meaning under git. It is
8128not
8129only incorrect, it could also be misleading.
8130
8131Example Code and Data Size: These are the sizes for the OS-independent
8132acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8133debug version of the code includes the debug output trace mechanism and
8134has a
8135much larger code and data size.
8136
8137  Previous Release:
8138    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
8139    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
8140  Current Release:
8141    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
8142    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
8143
8144----------------------------------------
814529 August 2008. Summary of changes for version 20080829:
8146
81471) ACPI CA Core Subsystem:
8148
8149Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
8150Reference. Changes include the elimination of cheating on the Object
8151field
8152for the DdbHandle subtype, addition of a reference class field to
8153differentiate the various reference types (instead of an AML opcode), and
8154the
8155cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
8156
8157Reduce an error to a warning for an incorrect method argument count.
8158Previously aborted with an error if too few arguments were passed to a
8159control method via the external ACPICA interface. Now issue a warning
8160instead
8161and continue. Handles the case where the method inadvertently declares
8162too
8163many arguments, but does not actually use the extra ones. Applies mainly
8164to
8165the predefined methods. Lin Ming. Linux BZ 11032.
8166
8167Disallow the evaluation of named object types with no intrinsic value.
8168Return
8169AE_TYPE for objects that have no value and therefore evaluation is
8170undefined:
8171Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
8172of
8173these types were allowed, but an exception would be generated at some
8174point
8175during the evaluation. Now, the error is generated up front.
8176
8177Fixed a possible memory leak in the AcpiNsGetExternalPathname function
8178(nsnames.c). Fixes a leak in the error exit path.
8179
8180Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
8181debug
8182levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
8183ACPI_EXCEPTION
8184interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
8185ACPI_LV_EVENTS.
8186
8187Removed obsolete and/or unused exception codes from the acexcep.h header.
8188There is the possibility that certain device drivers may be affected if
8189they
8190use any of these exceptions.
8191
8192The ACPICA documentation has been added to the public git source tree,
8193under
8194acpica/documents. Included are the ACPICA programmer reference, the iASL
8195compiler reference, and the changes.txt release logfile.
8196
8197Example Code and Data Size: These are the sizes for the OS-independent
8198acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8199debug version of the code includes the debug output trace mechanism and
8200has a
8201much larger code and data size.
8202
8203  Previous Release:
8204    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
8205    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
8206  Current Release:
8207    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
8208    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
8209
82102) iASL Compiler/Disassembler and Tools:
8211
8212Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
8213defines _SCP with 3 arguments. Previous versions defined it with only 1
8214argument. iASL now allows both definitions.
8215
8216iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
8217zero-
8218length subtables when disassembling ACPI tables. Also fixed a couple of
8219errors where a full 16-bit table type field was not extracted from the
8220input
8221properly.
8222
8223acpisrc: Improve comment counting mechanism for generating source code
8224statistics. Count first and last lines of multi-line comments as
8225whitespace,
8226not comment lines. Handle Linux legal header in addition to standard
8227acpica
8228header.
8229
8230----------------------------------------
8231
823229 July 2008. Summary of changes for version 20080729:
8233
82341) ACPI CA Core Subsystem:
8235
8236Fix a possible deadlock in the GPE dispatch. Remove call to
8237AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
8238attempt
8239to acquire the GPE lock but can deadlock since the GPE lock is already
8240held
8241at dispatch time. This code was introduced in version 20060831 as a
8242response
8243to Linux BZ 6881 and has since been removed from Linux.
8244
8245Add a function to dereference returned reference objects. Examines the
8246return
8247object from a call to AcpiEvaluateObject. Any Index or RefOf references
8248are
8249automatically dereferenced in an attempt to return something useful
8250(these
8251reference types cannot be converted into an external ACPI_OBJECT.)
8252Provides
8253MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
8254
8255x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
8256subtables for the MADT and one new subtable for the SRAT. Includes
8257disassembler and AcpiSrc support. Data from the Intel 64 Architecture
8258x2APIC
8259Specification, June 2008.
8260
8261Additional error checking for pathname utilities. Add error check after
8262all
8263calls to AcpiNsGetPathnameLength. Add status return from
8264AcpiNsBuildExternalPath and check after all calls. Add parameter
8265validation
8266to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
8267
8268Return status from the global init function AcpiUtGlobalInitialize. This
8269is
8270used by both the kernel subsystem and the utilities such as iASL
8271compiler.
8272The function could possibly fail when the caches are initialized. Yang
8273Yi.
8274
8275Add a function to decode reference object types to strings. Created for
8276improved error messages.
8277
8278Improve object conversion error messages. Better error messages during
8279object
8280conversion from internal to the external ACPI_OBJECT. Used for external
8281calls
8282to AcpiEvaluateObject.
8283
8284Example Code and Data Size: These are the sizes for the OS-independent
8285acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8286debug version of the code includes the debug output trace mechanism and
8287has a
8288much larger code and data size.
8289
8290  Previous Release:
8291    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
8292    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
8293  Current Release:
8294    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
8295    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
8296
82972) iASL Compiler/Disassembler and Tools:
8298
8299Debugger: fix a possible hang when evaluating non-methods. Fixes a
8300problem
8301introduced in version 20080701. If the object being evaluated (via
8302execute
8303command) is not a method, the debugger can hang while trying to obtain
8304non-
8305existent parameters.
8306
8307iASL: relax error for using reserved "_T_x" identifiers. These names can
8308appear in a disassembled ASL file if they were emitted by the original
8309compiler. Instead of issuing an error or warning and forcing the user to
8310manually change these names, issue a remark instead.
8311
8312iASL: error if named object created in while loop. Emit an error if any
8313named
8314object is created within a While loop. If allowed, this code will
8315generate
8316a
8317run-time error on the second iteration of the loop when an attempt is
8318made
8319to
8320create the same named object twice. ACPICA bugzilla 730.
8321
8322iASL: Support absolute pathnames for include files. Add support for
8323absolute
8324pathnames within the Include operator. previously, only relative
8325pathnames
8326were supported.
8327
8328iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
8329Descriptor.
8330The ACPI spec requires one interrupt minimum. BZ 423
8331
8332iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
8333Handles the case for the Interrupt Resource Descriptor where
8334the ResourceSource argument is omitted but ResourceSourceIndex
8335is present. Now leave room for the Index. BZ 426
8336
8337iASL: Prevent error message if CondRefOf target does not exist. Fixes
8338cases
8339where an error message is emitted if the target does not exist. BZ 516
8340
8341iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
8342(get ACPI tables on Windows). This was apparently broken in version
834320070919.
8344
8345AcpiXtract: Handle EOF while extracting data. Correctly handle the case
8346where
8347the EOF happens immediately after the last table in the input file. Print
8348completion message. Previously, no message was displayed in this case.
8349
8350----------------------------------------
835101 July 2008. Summary of changes for version 20080701:
8352
83530) Git source tree / acpica.org
8354
8355Fixed a problem where a git-clone from http would not transfer the entire
8356source tree.
8357
83581) ACPI CA Core Subsystem:
8359
8360Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
8361enable bit. Now performs a read-change-write of the enable register
8362instead
8363of simply writing out the cached enable mask. This will prevent
8364inadvertent
8365enabling of GPEs if a rogue GPE is received during initialization (before
8366GPE
8367handlers are installed.)
8368
8369Implemented a copy for dynamically loaded tables. Previously, dynamically
8370loaded tables were simply mapped - but on some machines this memory is
8371corrupted after suspend. Now copy the table to a local buffer. For the
8372OpRegion case, added checksum verify. Use the table length from the table
8373header, not the region length. For the Buffer case, use the table length
8374also. Dennis Noordsij, Bob Moore. BZ 10734
8375
8376Fixed a problem where the same ACPI table could not be dynamically loaded
8377and
8378unloaded more than once. Without this change, a table cannot be loaded
8379again
8380once it has been loaded/unloaded one time. The current mechanism does not
8381unregister a table upon an unload. During a load, if the same table is
8382found,
8383this no longer returns an exception. BZ 722
8384
8385Fixed a problem where the wrong descriptor length was calculated for the
8386EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
8387EndTag
8388are calculated as 12 bytes long, but the actual length in the internal
8389descriptor is 16 because of the round-up to 8 on the 64-bit build.
8390Reported
8391by Linn Crosetto. BZ 728
8392
8393Fixed a possible memory leak in the Unload operator. The DdbHandle
8394returned
8395by Load() did not have its reference count decremented during unload,
8396leading
8397to a memory leak. Lin Ming. BZ 727
8398
8399Fixed a possible memory leak when deleting thermal/processor objects. Any
8400associated notify handlers (and objects) were not being deleted. Fiodor
8401Suietov. BZ 506
8402
8403Fixed the ordering of the ASCII names in the global mutex table to match
8404the
8405actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
8406only.
8407Vegard Nossum. BZ 726
8408
8409Enhanced the AcpiGetObjectInfo interface to return the number of required
8410arguments if the object is a control method. Added this call to the
8411debugger
8412so the proper number of default arguments are passed to a method. This
8413prevents a warning when executing methods from AcpiExec.
8414
8415Added a check for an invalid handle in AcpiGetObjectInfo. Return
8416AE_BAD_PARAMETER if input handle is invalid. BZ 474
8417
8418Fixed an extraneous warning from exconfig.c on the 64-bit build.
8419
8420Example Code and Data Size: These are the sizes for the OS-independent
8421acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8422debug version of the code includes the debug output trace mechanism and
8423has a
8424much larger code and data size.
8425
8426  Previous Release:
8427    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
8428    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
8429  Current Release:
8430    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
8431    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
8432
84332) iASL Compiler/Disassembler and Tools:
8434
8435iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
8436resource descriptor names.
8437
8438iASL: Detect invalid ASCII characters in input (windows version). Removed
8439the
8440"-CF" flag from the flex compile, enables correct detection of non-ASCII
8441characters in the input. BZ 441
8442
8443iASL: Eliminate warning when result of LoadTable is not used. Eliminate
8444the
8445"result of operation not used" warning when the DDB handle returned from
8446LoadTable is not used. The warning is not needed. BZ 590
8447
8448AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
8449method
8450to
8451pass address of table to the AML. Added option to disable OpRegion
8452simulation
8453to allow creation of an OpRegion with a real address that was passed to
8454_CFG.
8455All of this allows testing of the Load and Unload operators from
8456AcpiExec.
8457
8458Debugger: update tables command for unloaded tables. Handle unloaded
8459tables
8460and use the standard table header output routine.
8461
8462----------------------------------------
846309 June 2008. Summary of changes for version 20080609:
8464
84651) ACPI CA Core Subsystem:
8466
8467Implemented a workaround for reversed _PRT entries. A significant number
8468of
8469BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
8470change dynamically detects and repairs this problem. Provides
8471compatibility
8472with MS ACPI. BZ 6859
8473
8474Simplified the internal ACPI hardware interfaces to eliminate the locking
8475flag parameter from Register Read/Write. Added a new external interface,
8476AcpiGetRegisterUnlocked.
8477
8478Fixed a problem where the invocation of a GPE control method could hang.
8479This
8480was a regression introduced in 20080514. The new method argument count
8481validation mechanism can enter an infinite loop when a GPE method is
8482dispatched. Problem fixed by removing the obsolete code that passed GPE
8483block
8484information to the notify handler via the control method parameter
8485pointer.
8486
8487Fixed a problem where the _SST execution status was incorrectly returned
8488to
8489the caller of AcpiEnterSleepStatePrep. This was a regression introduced
8490in
849120080514. _SST is optional and a NOT_FOUND exception should never be
8492returned. BZ 716
8493
8494Fixed a problem where a deleted object could be accessed from within the
8495AML
8496parser. This was a regression introduced in version 20080123 as a fix for
8497the
8498Unload operator. Lin Ming. BZ 10669
8499
8500Cleaned up the debug operand dump mechanism. Eliminated unnecessary
8501operands
8502and eliminated the use of a negative index in a loop. Operands are now
8503displayed in the correct order, not backwards. This also fixes a
8504regression
8505introduced in 20080514 on 64-bit systems where the elimination of
8506ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
8507715
8508
8509Fixed a possible memory leak in EvPciConfigRegionSetup where the error
8510exit
8511path did not delete a locally allocated structure.
8512
8513Updated definitions for the DMAR and SRAT tables to synchronize with the
8514current specifications. Includes disassembler support.
8515
8516Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
8517loop termination value was used. Loop terminated on iteration early,
8518missing
8519one mutex. Linn Crosetto
8520
8521Example Code and Data Size: These are the sizes for the OS-independent
8522acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8523debug version of the code includes the debug output trace mechanism and
8524has a
8525much larger code and data size.
8526
8527  Previous Release:
8528    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
8529    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
8530  Current Release:
8531    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
8532    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
8533
85342) iASL Compiler/Disassembler and Tools:
8535
8536Disassembler: Implemented support for EisaId() within _CID objects. Now
8537disassemble integer _CID objects back to EisaId invocations, including
8538multiple integers within _CID packages. Includes single-step support for
8539debugger also.
8540
8541Disassembler: Added support for DMAR and SRAT table definition changes.
8542
8543----------------------------------------
854414 May 2008. Summary of changes for version 20080514:
8545
85461) ACPI CA Core Subsystem:
8547
8548Fixed a problem where GPEs were enabled too early during the ACPICA
8549initialization. This could lead to "handler not installed" errors on some
8550machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
8551This
8552ensures that all operation regions and devices throughout the namespace
8553have
8554been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
8555
8556Implemented a change to the enter sleep code. Moved execution of the _GTS
8557method to just before setting sleep enable bit. The execution was moved
8558from
8559AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
8560immediately before the SLP_EN bit is set, as per the ACPI specification.
8561Luming Yu, BZ 1653.
8562
8563Implemented a fix to disable unknown GPEs (2nd version). Now always
8564disable
8565the GPE, even if ACPICA thinks that that it is already disabled. It is
8566possible that the AML or some other code has enabled the GPE unbeknownst
8567to
8568the ACPICA code.
8569
8570Fixed a problem with the Field operator where zero-length fields would
8571return
8572an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
8573ASL
8574field declarations in Field(), BankField(), and IndexField(). BZ 10606.
8575
8576Implemented a fix for the Load operator, now load the table at the
8577namespace
8578root. This reverts a change introduced in version 20071019. The table is
8579now
8580loaded at the namespace root even though this goes against the ACPI
8581specification. This provides compatibility with other ACPI
8582implementations.
8583The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
8584Ming.
8585
8586Fixed a problem where ACPICA would not Load() tables with unusual
8587signatures.
8588Now ignore ACPI table signature for Load() operator. Only "SSDT" is
8589acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
8590Therefore, signature validation is worthless. Apparently MS ACPI accepts
8591such
8592signatures, ACPICA must be compatible. BZ 10454.
8593
8594Fixed a possible negative array index in AcpiUtValidateException. Added
8595NULL
8596fields to the exception string arrays to eliminate a -1 subtraction on
8597the
8598SubStatus field.
8599
8600Updated the debug tracking macros to reduce overall code and data size.
8601Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
8602instead of pointers to static strings. Jan Beulich and Bob Moore.
8603
8604Implemented argument count checking in control method invocation via
8605AcpiEvaluateObject. Now emit an error if too few arguments, warning if
8606too
8607many. This applies only to extern programmatic control method execution,
8608not
8609method-to-method calls within the AML. Lin Ming.
8610
8611Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
8612no
8613longer needed, especially with the removal of 16-bit support. It was
8614replaced
8615mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
8616bit
8617on
861832/64-bit platforms is required.
8619
8620Added the C const qualifier for appropriate string constants -- mostly
8621MODULE_NAME and printf format strings. Jan Beulich.
8622
8623Example Code and Data Size: These are the sizes for the OS-independent
8624acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8625debug version of the code includes the debug output trace mechanism and
8626has a
8627much larger code and data size.
8628
8629  Previous Release:
8630    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
8631    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
8632  Current Release:
8633    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
8634    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
8635
86362) iASL Compiler/Disassembler and Tools:
8637
8638Implemented ACPI table revision ID validation in the disassembler. Zero
8639is
8640always invalid. For DSDTs, the ID controls the interpreter integer width.
86411
8642means 32-bit and this is unusual. 2 or greater is 64-bit.
8643
8644----------------------------------------
864521 March 2008. Summary of changes for version 20080321:
8646
86471) ACPI CA Core Subsystem:
8648
8649Implemented an additional change to the GPE support in order to suppress
8650spurious or stray GPEs. The AcpiEvDisableGpe function will now
8651permanently
8652disable incoming GPEs that are neither enabled nor disabled -- meaning
8653that
8654the GPE is unknown to the system. This should prevent future interrupt
8655floods
8656from that GPE. BZ 6217 (Zhang Rui)
8657
8658Fixed a problem where NULL package elements were not returned to the
8659AcpiEvaluateObject interface correctly. The element was simply ignored
8660instead of returning a NULL ACPI_OBJECT package element, potentially
8661causing
8662a buffer overflow and/or confusing the caller who expected a fixed number
8663of
8664elements. BZ 10132 (Lin Ming, Bob Moore)
8665
8666Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
8667Dword,
8668Qword), Field, BankField, and IndexField operators when invoked from
8669inside
8670an executing control method. In this case, these operators created
8671namespace
8672nodes that were incorrectly left marked as permanent nodes instead of
8673temporary nodes. This could cause a problem if there is race condition
8674between an exiting control method and a running namespace walk. (Reported
8675by
8676Linn Crosetto)
8677
8678Fixed a problem where the CreateField and CreateXXXField operators would
8679incorrectly allow duplicate names (the name of the field) with no
8680exception
8681generated.
8682
8683Implemented several changes for Notify handling. Added support for new
8684Notify
8685values (ACPI 2.0+) and improved the Notify debug output. Notify on
8686PowerResource objects is no longer allowed, as per the ACPI
8687specification.
8688(Bob Moore, Zhang Rui)
8689
8690All Reference Objects returned via the AcpiEvaluateObject interface are
8691now
8692marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
8693for
8694NULL objects - either NULL package elements or unresolved named
8695references.
8696
8697Fixed a problem where an extraneous debug message was produced for
8698package
8699objects (when debugging enabled). The message "Package List length larger
8700than NumElements count" is now produced in the correct case, and is now
8701an
8702error message rather than a debug message. Added a debug message for the
8703opposite case, where NumElements is larger than the Package List (the
8704package
8705will be padded out with NULL elements as per the ACPI spec.)
8706
8707Implemented several improvements for the output of the ASL "Debug" object
8708to
8709clarify and keep all data for a given object on one output line.
8710
8711Fixed two size calculation issues with the variable-length Start
8712Dependent
8713resource descriptor.
8714
8715Example Code and Data Size: These are the sizes for the OS-independent
8716acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8717debug version of the code includes the debug output trace mechanism and
8718has
8719a much larger code and data size.
8720
8721  Previous Release:
8722    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
8723    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
8724  Current Release:
8725    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
8726    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
8727
87282) iASL Compiler/Disassembler and Tools:
8729
8730Fixed a problem with the use of the Switch operator where execution of
8731the
8732containing method by multiple concurrent threads could cause an
8733AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
8734actual Switch opcode, it must be simulated with local named temporary
8735variables and if/else pairs. The solution chosen was to mark any method
8736that
8737uses Switch as Serialized, thus preventing multiple thread entries. BZ
8738469.
8739
8740----------------------------------------
874113 February 2008. Summary of changes for version 20080213:
8742
87431) ACPI CA Core Subsystem:
8744
8745Implemented another MS compatibility design change for GPE/Notify
8746handling.
8747GPEs are now cleared/enabled asynchronously to allow all pending notifies
8748to
8749complete first. It is expected that the OSL will queue the enable request
8750behind all pending notify requests (may require changes to the local host
8751OSL
8752in AcpiOsExecute). Alexey Starikovskiy.
8753
8754Fixed a problem where buffer and package objects passed as arguments to a
8755control method via the external AcpiEvaluateObject interface could cause
8756an
8757AE_AML_INTERNAL exception depending on the order and type of operators
8758executed by the target control method.
8759
8760Fixed a problem where resource descriptor size optimization could cause a
8761problem when a _CRS resource template is passed to a _SRS method. The
8762_SRS
8763resource template must use the same descriptors (with the same size) as
8764returned from _CRS. This change affects the following resource
8765descriptors:
8766IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
87679487)
8768
8769Fixed a problem where a CopyObject to RegionField, BankField, and
8770IndexField
8771objects did not perform an implicit conversion as it should. These types
8772must
8773retain their initial type permanently as per the ACPI specification.
8774However,
8775a CopyObject to all other object types should not perform an implicit
8776conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
8777
8778Fixed a problem with the AcpiGetDevices interface where the mechanism to
8779match device CIDs did not examine the entire list of available CIDs, but
8780instead aborted on the first non-matching CID. Andrew Patterson.
8781
8782Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
8783was
8784inadvertently changed to return a 16-bit value instead of a 32-bit value,
8785truncating the upper dword of a 64-bit value. This macro is only used to
8786display debug output, so no incorrect calculations were made. Also,
8787reimplemented the macro so that a 64-bit shift is not performed by
8788inefficient compilers.
8789
8790Added missing va_end statements that should correspond with each va_start
8791statement.
8792
8793Example Code and Data Size: These are the sizes for the OS-independent
8794acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8795debug version of the code includes the debug output trace mechanism and
8796has
8797a much larger code and data size.
8798
8799  Previous Release:
8800    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
8801    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
8802  Current Release:
8803    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
8804    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
8805
88062) iASL Compiler/Disassembler and Tools:
8807
8808Implemented full disassembler support for the following new ACPI tables:
8809BERT, EINJ, and ERST. Implemented partial disassembler support for the
8810complicated HEST table. These tables support the Windows Hardware Error
8811Architecture (WHEA).
8812
8813----------------------------------------
881423 January 2008. Summary of changes for version 20080123:
8815
88161) ACPI CA Core Subsystem:
8817
8818Added the 2008 copyright to all module headers and signons. This affects
8819virtually every file in the ACPICA core subsystem, the iASL compiler, and
8820the tools/utilities.
8821
8822Fixed a problem with the SizeOf operator when used with Package and
8823Buffer
8824objects. These objects have deferred execution for some arguments, and
8825the
8826execution is now completed before the SizeOf is executed. This problem
8827caused
8828unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
8829BZ
88309558
8831
8832Implemented an enhancement to the interpreter "slack mode". In the
8833absence
8834of
8835an explicit return or an implicitly returned object from the last
8836executed
8837opcode, a control method will now implicitly return an integer of value 0
8838for
8839Microsoft compatibility. (Lin Ming) BZ 392
8840
8841Fixed a problem with the Load operator where an exception was not
8842returned
8843in
8844the case where the table is already loaded. (Lin Ming) BZ 463
8845
8846Implemented support for the use of DDBHandles as an Indexed Reference, as
8847per
8848the ACPI spec. (Lin Ming) BZ 486
8849
8850Implemented support for UserTerm (Method invocation) for the Unload
8851operator
8852as per the ACPI spec. (Lin Ming) BZ 580
8853
8854Fixed a problem with the LoadTable operator where the OemId and
8855OemTableId
8856input strings could cause unexpected failures if they were shorter than
8857the
8858maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
8859
8860Implemented support for UserTerm (Method invocation) for the Unload
8861operator
8862as per the ACPI spec. (Lin Ming) BZ 580
8863
8864Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
8865HEST,
8866IBFT, UEFI, WDAT. Disassembler support is forthcoming.
8867
8868Example Code and Data Size: These are the sizes for the OS-independent
8869acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8870debug version of the code includes the debug output trace mechanism and
8871has
8872a much larger code and data size.
8873
8874  Previous Release:
8875    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
8876    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
8877  Current Release:
8878    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
8879    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
8880
88812) iASL Compiler/Disassembler and Tools:
8882
8883Implemented support in the disassembler for checksum validation on
8884incoming
8885binary DSDTs and SSDTs. If incorrect, a message is displayed within the
8886table
8887header dump at the start of the disassembly.
8888
8889Implemented additional debugging information in the namespace listing
8890file
8891created during compilation. In addition to the namespace hierarchy, the
8892full
8893pathname to each namespace object is displayed.
8894
8895Fixed a problem with the disassembler where invalid ACPI tables could
8896cause
8897faults or infinite loops.
8898
8899Fixed an unexpected parse error when using the optional "parameter types"
8900list in a control method declaration. (Lin Ming) BZ 397
8901
8902Fixed a problem where two External declarations with the same name did
8903not
8904cause an error (Lin Ming) BZ 509
8905
8906Implemented support for full TermArgs (adding Argx, Localx and method
8907invocation) for the ParameterData parameter to the LoadTable operator.
8908(Lin
8909Ming) BZ 583,587
8910
8911----------------------------------------
891219 December 2007. Summary of changes for version 20071219:
8913
89141) ACPI CA Core Subsystem:
8915
8916Implemented full support for deferred execution for the TermArg string
8917arguments for DataTableRegion. This enables forward references and full
8918operand resolution for the three string arguments. Similar to
8919OperationRegion
8920deferred argument execution.) Lin Ming. BZ 430
8921
8922Implemented full argument resolution support for the BankValue argument
8923to
8924BankField. Previously, only constants were supported, now any TermArg may
8925be
8926used. Lin Ming BZ 387, 393
8927
8928Fixed a problem with AcpiGetDevices where the search of a branch of the
8929device tree could be terminated prematurely. In accordance with the ACPI
8930specification, the search down the current branch is terminated if a
8931device
8932is both not present and not functional (instead of just not present.)
8933Yakui
8934Zhao.
8935
8936Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
8937if
8938the underlying AML code changed the GPE enable registers. Now, any
8939unknown
8940incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
8941disabled
8942instead of simply ignored. Rui Zhang.
8943
8944Fixed a problem with Index Fields where the Index register was
8945incorrectly
8946limited to a maximum of 32 bits. Now any size may be used.
8947
8948Fixed a couple memory leaks associated with "implicit return" objects
8949when
8950the AML Interpreter slack mode is enabled. Lin Ming BZ 349
8951
8952Example Code and Data Size: These are the sizes for the OS-independent
8953acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8954debug version of the code includes the debug output trace mechanism and
8955has
8956a much larger code and data size.
8957
8958  Previous Release:
8959    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
8960    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
8961  Current Release:
8962    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
8963    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
8964
8965----------------------------------------
896614 November 2007. Summary of changes for version 20071114:
8967
89681) ACPI CA Core Subsystem:
8969
8970Implemented event counters for each of the Fixed Events, the ACPI SCI
8971(interrupt) itself, and control methods executed. Named
8972AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
8973These
8974should be useful for debugging and statistics.
8975
8976Implemented a new external interface, AcpiGetStatistics, to retrieve the
8977contents of the various event counters. Returns the current values for
8978AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
8979AcpiMethodCount. The interface can be expanded in the future if new
8980counters
8981are added. Device drivers should use this interface rather than access
8982the
8983counters directly.
8984
8985Fixed a problem with the FromBCD and ToBCD operators. With some
8986compilers,
8987the ShortDivide function worked incorrectly, causing problems with the
8988BCD
8989functions with large input values. A truncation from 64-bit to 32-bit
8990inadvertently occurred. Internal BZ 435. Lin Ming
8991
8992Fixed a problem with Index references passed as method arguments.
8993References
8994passed as arguments to control methods were dereferenced immediately
8995(before
8996control was passed to the called method). The references are now
8997correctly
8998passed directly to the called method. BZ 5389. Lin Ming
8999
9000Fixed a problem with CopyObject used in conjunction with the Index
9001operator.
9002The reference was incorrectly dereferenced before the copy. The reference
9003is
9004now correctly copied. BZ 5391. Lin Ming
9005
9006Fixed a problem with Control Method references within Package objects.
9007These
9008references are now correctly generated. This completes the package
9009construction overhaul that began in version 20071019.
9010
9011Example Code and Data Size: These are the sizes for the OS-independent
9012acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9013debug version of the code includes the debug output trace mechanism and
9014has
9015a much larger code and data size.
9016
9017  Previous Release:
9018    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
9019    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
9020  Current Release:
9021    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
9022    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
9023
9024
90252) iASL Compiler/Disassembler and Tools:
9026
9027The AcpiExec utility now installs handlers for all of the predefined
9028Operation Region types. New types supported are: PCI_Config, CMOS, and
9029PCIBARTarget.
9030
9031Fixed a problem with the 64-bit version of AcpiExec where the extended
9032(64-
9033bit) address fields for the DSDT and FACS within the FADT were not being
9034used, causing truncation of the upper 32-bits of these addresses. Lin
9035Ming
9036and Bob Moore
9037
9038----------------------------------------
903919 October 2007. Summary of changes for version 20071019:
9040
90411) ACPI CA Core Subsystem:
9042
9043Fixed a problem with the Alias operator when the target of the alias is a
9044named ASL operator that opens a new scope -- Scope, Device,
9045PowerResource,
9046Processor, and ThermalZone. In these cases, any children of the original
9047operator could not be accessed via the alias, potentially causing
9048unexpected
9049AE_NOT_FOUND exceptions. (BZ 9067)
9050
9051Fixed a problem with the Package operator where all named references were
9052created as object references and left otherwise unresolved. According to
9053the
9054ACPI specification, a Package can only contain Data Objects or references
9055to
9056control methods. The implication is that named references to Data Objects
9057(Integer, Buffer, String, Package, BufferField, Field) should be resolved
9058immediately upon package creation. This is the approach taken with this
9059change. References to all other named objects (Methods, Devices, Scopes,
9060etc.) are all now properly created as reference objects. (BZ 5328)
9061
9062Reverted a change to Notify handling that was introduced in version
906320070508. This version changed the Notify handling from asynchronous to
9064fully synchronous (Device driver Notify handling with respect to the
9065Notify
9066ASL operator). It was found that this change caused more problems than it
9067solved and was removed by most users.
9068
9069Fixed a problem with the Increment and Decrement operators where the type
9070of
9071the target object could be unexpectedly and incorrectly changed. (BZ 353)
9072Lin Ming.
9073
9074Fixed a problem with the Load and LoadTable operators where the table
9075location within the namespace was ignored. Instead, the table was always
9076loaded into the root or current scope. Lin Ming.
9077
9078Fixed a problem with the Load operator when loading a table from a buffer
9079object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
9080
9081Fixed a problem with the Debug object where a store of a DdbHandle
9082reference
9083object to the Debug object could cause a fault.
9084
9085Added a table checksum verification for the Load operator, in the case
9086where
9087the load is from a buffer. (BZ 578).
9088
9089Implemented additional parameter validation for the LoadTable operator.
9090The
9091length of the input strings SignatureString, OemIdString, and OemTableId
9092are
9093now checked for maximum lengths. (BZ 582) Lin Ming.
9094
9095Example Code and Data Size: These are the sizes for the OS-independent
9096acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9097debug version of the code includes the debug output trace mechanism and
9098has
9099a much larger code and data size.
9100
9101  Previous Release:
9102    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
9103    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
9104  Current Release:
9105    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
9106    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
9107
9108
91092) iASL Compiler/Disassembler:
9110
9111Fixed a problem where if a single file was specified and the file did not
9112exist, no error message was emitted. (Introduced with wildcard support in
9113version 20070917.)
9114
9115----------------------------------------
911619 September 2007. Summary of changes for version 20070919:
9117
91181) ACPI CA Core Subsystem:
9119
9120Designed and implemented new external interfaces to install and remove
9121handlers for ACPI table-related events. Current events that are defined
9122are
9123LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
9124they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
9125AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
9126
9127Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
9128(acpi_serialized option on Linux) could cause some systems to hang during
9129initialization. (Bob Moore) BZ 8171
9130
9131Fixed a problem where objects of certain types (Device, ThermalZone,
9132Processor, PowerResource) can be not found if they are declared and
9133referenced from within the same control method (Lin Ming) BZ 341
9134
9135Example Code and Data Size: These are the sizes for the OS-independent
9136acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9137debug version of the code includes the debug output trace mechanism and
9138has
9139a much larger code and data size.
9140
9141  Previous Release:
9142    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
9143    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
9144  Current 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
9148
91492) iASL Compiler/Disassembler:
9150
9151Implemented support to allow multiple files to be compiled/disassembled
9152in
9153a
9154single invocation. This includes command line wildcard support for both
9155the
9156Windows and Unix versions of the compiler. This feature simplifies the
9157disassembly and compilation of multiple ACPI tables in a single
9158directory.
9159
9160----------------------------------------
916108 May 2007. Summary of changes for version 20070508:
9162
91631) ACPI CA Core Subsystem:
9164
9165Implemented a Microsoft compatibility design change for the handling of
9166the
9167Notify AML operator. Previously, notify handlers were dispatched and
9168executed completely asynchronously in a deferred thread. The new design
9169still executes the notify handlers in a different thread, but the
9170original
9171thread that executed the Notify() now waits at a synchronization point
9172for
9173the notify handler to complete. Some machines depend on a synchronous
9174Notify
9175operator in order to operate correctly.
9176
9177Implemented support to allow Package objects to be passed as method
9178arguments to the external AcpiEvaluateObject interface. Previously, this
9179would return the AE_NOT_IMPLEMENTED exception. This feature had not been
9180implemented since there were no reserved control methods that required it
9181until recently.
9182
9183Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
9184that
9185contained invalid non-zero values in reserved fields could cause later
9186failures because these fields have meaning in later revisions of the
9187FADT.
9188For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
9189fields
9190are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
9191
9192Fixed a problem where the Global Lock handle was not properly updated if
9193a
9194thread that acquired the Global Lock via executing AML code then
9195attempted
9196to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
9197Joe
9198Liu.
9199
9200Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
9201could be corrupted if the interrupt being removed was at the head of the
9202list. Reported by Linn Crosetto.
9203
9204Example Code and Data Size: These are the sizes for the OS-independent
9205acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9206debug version of the code includes the debug output trace mechanism and
9207has
9208a much larger code and data size.
9209
9210  Previous Release:
9211    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9212    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
9213  Current Release:
9214    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
9215    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
9216
9217----------------------------------------
921820 March 2007. Summary of changes for version 20070320:
9219
92201) ACPI CA Core Subsystem:
9221
9222Implemented a change to the order of interpretation and evaluation of AML
9223operand objects within the AML interpreter. The interpreter now evaluates
9224operands in the order that they appear in the AML stream (and the
9225corresponding ASL code), instead of in the reverse order (after the
9226entire
9227operand list has been parsed). The previous behavior caused several
9228subtle
9229incompatibilities with the Microsoft AML interpreter as well as being
9230somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
9231
9232Implemented a change to the ACPI Global Lock support. All interfaces to
9233the
9234global lock now allow the same thread to acquire the lock multiple times.
9235This affects the AcpiAcquireGlobalLock external interface to the global
9236lock
9237as well as the internal use of the global lock to support AML fields -- a
9238control method that is holding the global lock can now simultaneously
9239access
9240AML fields that require global lock protection. Previously, in both
9241cases,
9242this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
9243to
9244AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
9245Controller. There is no change to the behavior of the AML Acquire
9246operator,
9247as this can already be used to acquire a mutex multiple times by the same
9248thread. BZ 8066. With assistance from Alexey Starikovskiy.
9249
9250Fixed a problem where invalid objects could be referenced in the AML
9251Interpreter after error conditions. During operand evaluation, ensure
9252that
9253the internal "Return Object" field is cleared on error and only valid
9254pointers are stored there. Caused occasional access to deleted objects
9255that
9256resulted in "large reference count" warning messages. Valery Podrezov.
9257
9258Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
9259on
9260deeply nested control method invocations. BZ 7873, local BZ 487. Valery
9261Podrezov.
9262
9263Fixed an internal problem with the handling of result objects on the
9264interpreter result stack. BZ 7872. Valery Podrezov.
9265
9266Removed obsolete code that handled the case where AML_NAME_OP is the
9267target
9268of a reference (Reference.Opcode). This code was no longer necessary. BZ
92697874. Valery Podrezov.
9270
9271Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
9272was
9273a
9274remnant from the previously discontinued 16-bit support.
9275
9276Example Code and Data Size: These are the sizes for the OS-independent
9277acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9278debug version of the code includes the debug output trace mechanism and
9279has
9280a much larger code and data size.
9281
9282  Previous Release:
9283    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9284    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
9285  Current Release:
9286    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9287    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
9288
9289----------------------------------------
929026 January 2007. Summary of changes for version 20070126:
9291
92921) ACPI CA Core Subsystem:
9293
9294Added the 2007 copyright to all module headers and signons. This affects
9295virtually every file in the ACPICA core subsystem, the iASL compiler, and
9296the utilities.
9297
9298Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
9299during a table load. A bad pointer was passed in the case where the DSDT
9300is
9301overridden, causing a fault in this case.
9302
9303Example Code and Data Size: These are the sizes for the OS-independent
9304acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9305debug version of the code includes the debug output trace mechanism and
9306has
9307a much larger code and data size.
9308
9309  Previous Release:
9310    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9311    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
9312  Current Release:
9313    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
9314    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
9315
9316----------------------------------------
931715 December 2006. Summary of changes for version 20061215:
9318
93191) ACPI CA Core Subsystem:
9320
9321Support for 16-bit ACPICA has been completely removed since it is no
9322longer
9323necessary and it clutters the code. All 16-bit macros, types, and
9324conditional compiles have been removed, cleaning up and simplifying the
9325code
9326across the entire subsystem. DOS support is no longer needed since the
9327bootable Linux firmware kit is now available.
9328
9329The handler for the Global Lock is now removed during AcpiTerminate to
9330enable a clean subsystem restart, via the implementation of the
9331AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
9332HP)
9333
9334Implemented enhancements to the multithreading support within the
9335debugger
9336to enable improved multithreading debugging and evaluation of the
9337subsystem.
9338(Valery Podrezov)
9339
9340Debugger: Enhanced the Statistics/Memory command to emit the total
9341(maximum)
9342memory used during the execution, as well as the maximum memory consumed
9343by
9344each of the various object types. (Valery Podrezov)
9345
9346Example Code and Data Size: These are the sizes for the OS-independent
9347acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9348debug version of the code includes the debug output trace mechanism and
9349has
9350a much larger code and data size.
9351
9352  Previous Release:
9353    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
9354    Debug Version:     155.2K Code, 63.1K Data, 218.3K 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
93602) iASL Compiler/Disassembler and Tools:
9361
9362AcpiExec: Implemented a new option (-m) to display full memory use
9363statistics upon subsystem/program termination. (Valery Podrezov)
9364
9365----------------------------------------
936609 November 2006. Summary of changes for version 20061109:
9367
93681) ACPI CA Core Subsystem:
9369
9370Optimized the Load ASL operator in the case where the source operand is
9371an
9372operation region. Simply map the operation region memory, instead of
9373performing a bytewise read. (Region must be of type SystemMemory, see
9374below.)
9375
9376Fixed the Load ASL operator for the case where the source operand is a
9377region field. A buffer object is also allowed as the source operand. BZ
9378480
9379
9380Fixed a problem where the Load ASL operator allowed the source operand to
9381be
9382an operation region of any type. It is now restricted to regions of type
9383SystemMemory, as per the ACPI specification. BZ 481
9384
9385Additional cleanup and optimizations for the new Table Manager code.
9386
9387AcpiEnable will now fail if all of the required ACPI tables are not
9388loaded
9389(FADT, FACS, DSDT). BZ 477
9390
9391Added #pragma pack(8/4) to acobject.h to ensure that the structures in
9392this
9393header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
9394manually optimized to be aligned and will not work if it is byte-packed.
9395
9396Example Code and Data Size: These are the sizes for the OS-independent
9397acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9398debug version of the code includes the debug output trace mechanism and
9399has
9400a much larger code and data size.
9401
9402  Previous Release:
9403    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
9404    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
9405  Current Release:
9406    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
9407    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
9408
9409
94102) iASL Compiler/Disassembler and Tools:
9411
9412Fixed a problem where the presence of the _OSI predefined control method
9413within complex expressions could cause an internal compiler error.
9414
9415AcpiExec: Implemented full region support for multiple address spaces.
9416SpaceId is now part of the REGION object. BZ 429
9417
9418----------------------------------------
941911 October 2006. Summary of changes for version 20061011:
9420
94211) ACPI CA Core Subsystem:
9422
9423Completed an AML interpreter performance enhancement for control method
9424execution. Previously a 2-pass parse/execution, control methods are now
9425completely parsed and executed in a single pass. This improves overall
9426interpreter performance by ~25%, reduces code size, and reduces CPU stack
9427use. (Valery Podrezov + interpreter changes in version 20051202 that
9428eliminated namespace loading during the pass one parse.)
9429
9430Implemented _CID support for PCI Root Bridge detection. If the _HID does
9431not
9432match the predefined PCI Root Bridge IDs, the _CID list (if present) is
9433now
9434obtained and also checked for an ID match.
9435
9436Implemented additional support for the PCI _ADR execution: upsearch until
9437a
9438device scope is found before executing _ADR. This allows PCI_Config
9439operation regions to be declared locally within control methods
9440underneath
9441PCI device objects.
9442
9443Fixed a problem with a possible race condition between threads executing
9444AcpiWalkNamespace and the AML interpreter. This condition was removed by
9445modifying AcpiWalkNamespace to (by default) ignore all temporary
9446namespace
9447entries created during any concurrent control method execution. An
9448additional namespace race condition is known to exist between
9449AcpiWalkNamespace and the Load/Unload ASL operators and is still under
9450investigation.
9451
9452Restructured the AML ParseLoop function, breaking it into several
9453subfunctions in order to reduce CPU stack use and improve
9454maintainability.
9455(Mikhail Kouzmich)
9456
9457AcpiGetHandle: Fix for parameter validation to detect invalid
9458combinations
9459of prefix handle and pathname. BZ 478
9460
9461Example Code and Data Size: These are the sizes for the OS-independent
9462acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9463debug version of the code includes the debug output trace mechanism and
9464has
9465a much larger code and data size.
9466
9467  Previous Release:
9468    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
9469    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
9470  Current Release:
9471    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
9472    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
9473
94742) iASL Compiler/Disassembler and Tools:
9475
9476Ported the -g option (get local ACPI tables) to the new ACPICA Table
9477Manager
9478to restore original behavior.
9479
9480----------------------------------------
948127 September 2006. Summary of changes for version 20060927:
9482
94831) ACPI CA Core Subsystem:
9484
9485Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
9486These functions now use a spinlock for mutual exclusion and the interrupt
9487level indication flag is not needed.
9488
9489Fixed a problem with the Global Lock where the lock could appear to be
9490obtained before it is actually obtained. The global lock semaphore was
9491inadvertently created with one unit instead of zero units. (BZ 464)
9492Fiodor
9493Suietov.
9494
9495Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
9496during
9497a read from a buffer or region field. (BZ 458) Fiodor Suietov.
9498
9499Example Code and Data Size: These are the sizes for the OS-independent
9500acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9501debug version of the code includes the debug output trace mechanism and
9502has
9503a much larger code and data size.
9504
9505  Previous Release:
9506    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
9507    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
9508  Current Release:
9509    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
9510    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
9511
9512
95132) iASL Compiler/Disassembler and Tools:
9514
9515Fixed a compilation problem with the pre-defined Resource Descriptor
9516field
9517names where an "object does not exist" error could be incorrectly
9518generated
9519if the parent ResourceTemplate pathname places the template within a
9520different namespace scope than the current scope. (BZ 7212)
9521
9522Fixed a problem where the compiler could hang after syntax errors
9523detected
9524in an ElseIf construct. (BZ 453)
9525
9526Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
9527operator. An incorrect output filename was produced when this parameter
9528was
9529a null string (""). Now, the original input filename is used as the AML
9530output filename, with an ".aml" extension.
9531
9532Implemented a generic batch command mode for the AcpiExec utility
9533(execute
9534any AML debugger command) (Valery Podrezov).
9535
9536----------------------------------------
953712 September 2006. Summary of changes for version 20060912:
9538
95391) ACPI CA Core Subsystem:
9540
9541Enhanced the implementation of the "serialized mode" of the interpreter
9542(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
9543specified, instead of creating a serialization semaphore per control
9544method,
9545the interpreter lock is simply no longer released before a blocking
9546operation during control method execution. This effectively makes the AML
9547Interpreter single-threaded. The overhead of a semaphore per-method is
9548eliminated.
9549
9550Fixed a regression where an error was no longer emitted if a control
9551method
9552attempts to create 2 objects of the same name. This once again returns
9553AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
9554that
9555will dynamically serialize the control method to possible prevent future
9556errors. (BZ 440)
9557
9558Integrated a fix for a problem with PCI Express HID detection in the PCI
9559Config Space setup procedure. (BZ 7145)
9560
9561Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
9562AcpiHwInitialize function - the FADT registers are now validated when the
9563table is loaded.
9564
9565Added two new warnings during FADT verification - 1) if the FADT is
9566larger
9567than the largest known FADT version, and 2) if there is a mismatch
9568between
9569a
957032-bit block address and the 64-bit X counterpart (when both are non-
9571zero.)
9572
9573Example Code and Data Size: These are the sizes for the OS-independent
9574acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9575debug version of the code includes the debug output trace mechanism and
9576has
9577a much larger code and data size.
9578
9579  Previous Release:
9580    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
9581    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
9582  Current Release:
9583    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
9584    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
9585
9586
95872) iASL Compiler/Disassembler and Tools:
9588
9589Fixed a problem with the implementation of the Switch() operator where
9590the
9591temporary variable was declared too close to the actual Switch, instead
9592of
9593at method level. This could cause a problem if the Switch() operator is
9594within a while loop, causing an error on the second iteration. (BZ 460)
9595
9596Disassembler - fix for error emitted for unknown type for target of scope
9597operator. Now, ignore it and continue.
9598
9599Disassembly of an FADT now verifies the input FADT and reports any errors
9600found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
9601
9602Disassembly of raw data buffers with byte initialization data now
9603prefixes
9604each output line with the current buffer offset.
9605
9606Disassembly of ASF! table now includes all variable-length data fields at
9607the end of some of the subtables.
9608
9609The disassembler now emits a comment if a buffer appears to be a
9610ResourceTemplate, but cannot be disassembled as such because the EndTag
9611does
9612not appear at the very end of the buffer.
9613
9614AcpiExec - Added the "-t" command line option to enable the serialized
9615mode
9616of the AML interpreter.
9617
9618----------------------------------------
961931 August 2006. Summary of changes for version 20060831:
9620
96211) ACPI CA Core Subsystem:
9622
9623Miscellaneous fixes for the Table Manager:
9624- Correctly initialize internal common FADT for all 64-bit "X" fields
9625- Fixed a couple table mapping issues during table load
9626- Fixed a couple alignment issues for IA64
9627- Initialize input array to zero in AcpiInitializeTables
9628- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
9629AcpiGetTableByIndex
9630
9631Change for GPE support: when a "wake" GPE is received, all wake GPEs are
9632now
9633immediately disabled to prevent the waking GPE from firing again and to
9634prevent other wake GPEs from interrupting the wake process.
9635
9636Added the AcpiGpeCount global that tracks the number of processed GPEs,
9637to
9638be used for debugging systems with a large number of ACPI interrupts.
9639
9640Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
9641both the ACPICA headers and the disassembler.
9642
9643Example Code and Data Size: These are the sizes for the OS-independent
9644acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9645debug version of the code includes the debug output trace mechanism and
9646has
9647a much larger code and data size.
9648
9649  Previous Release:
9650    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
9651    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
9652  Current Release:
9653    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
9654    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
9655
9656
96572) iASL Compiler/Disassembler and Tools:
9658
9659Disassembler support for the DMAR ACPI table.
9660
9661----------------------------------------
966223 August 2006. Summary of changes for version 20060823:
9663
96641) ACPI CA Core Subsystem:
9665
9666The Table Manager component has been completely redesigned and
9667reimplemented. The new design is much simpler, and reduces the overall
9668code
9669and data size of the kernel-resident ACPICA by approximately 5%. Also, it
9670is
9671now possible to obtain the ACPI tables very early during kernel
9672initialization, even before dynamic memory management is initialized.
9673(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
9674
9675Obsolete ACPICA interfaces:
9676
9677- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
9678init
9679time).
9680- AcpiLoadTable: Not needed.
9681- AcpiUnloadTable: Not needed.
9682
9683New ACPICA interfaces:
9684
9685- AcpiInitializeTables: Must be called before the table manager can be
9686used.
9687- AcpiReallocateRootTable: Used to transfer the root table to dynamically
9688allocated memory after it becomes available.
9689- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
9690tables
9691in the RSDT/XSDT.
9692
9693Other ACPICA changes:
9694
9695- AcpiGetTableHeader returns the actual mapped table header, not a copy.
9696Use
9697AcpiOsUnmapMemory to free this mapping.
9698- AcpiGetTable returns the actual mapped table. The mapping is managed
9699internally and must not be deleted by the caller. Use of this interface
9700causes no additional dynamic memory allocation.
9701- AcpiFindRootPointer: Support for physical addressing has been
9702eliminated,
9703it appeared to be unused.
9704- The interface to AcpiOsMapMemory has changed to be consistent with the
9705other allocation interfaces.
9706- The interface to AcpiOsGetRootPointer has changed to eliminate
9707unnecessary
9708parameters.
9709- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
971064-
9711bit platforms. Was previously 64 bits on all platforms.
9712- The interface to the ACPI Global Lock acquire/release macros have
9713changed
9714slightly since ACPICA no longer keeps a local copy of the FACS with a
9715constructed pointer to the actual global lock.
9716
9717Porting to the new table manager:
9718
9719- AcpiInitializeTables: Must be called once, and can be called anytime
9720during the OS initialization process. It allows the host to specify an
9721area
9722of memory to be used to store the internal version of the RSDT/XSDT (root
9723table). This allows the host to access ACPI tables before memory
9724management
9725is initialized and running.
9726- AcpiReallocateRootTable: Can be called after memory management is
9727running
9728to copy the root table to a dynamically allocated array, freeing up the
9729scratch memory specified in the call to AcpiInitializeTables.
9730- AcpiSubsystemInitialize: This existing interface is independent of the
9731Table Manager, and does not have to be called before the Table Manager
9732can
9733be used, it only must be called before the rest of ACPICA can be used.
9734- ACPI Tables: Some changes have been made to the names and structure of
9735the
9736actbl.h and actbl1.h header files and may require changes to existing
9737code.
9738For example, bitfields have been completely removed because of their lack
9739of
9740portability across C compilers.
9741- Update interfaces to the Global Lock acquire/release macros if local
9742versions are used. (see acwin.h)
9743
9744Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
9745
9746New files: tbfind.c
9747
9748Example Code and Data Size: These are the sizes for the OS-independent
9749acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9750debug version of the code includes the debug output trace mechanism and
9751has
9752a much larger code and data size.
9753
9754  Previous Release:
9755    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
9756    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
9757  Current Release:
9758    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
9759    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
9760
9761
97622) iASL Compiler/Disassembler and Tools:
9763
9764No changes for this release.
9765
9766----------------------------------------
976721 July 2006. Summary of changes for version 20060721:
9768
97691) ACPI CA Core Subsystem:
9770
9771The full source code for the ASL test suite used to validate the iASL
9772compiler and the ACPICA core subsystem is being released with the ACPICA
9773source for the first time. The source is contained in a separate package
9774and
9775consists of over 1100 files that exercise all ASL/AML operators. The
9776package
9777should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
9778Fiodor
9779Suietov)
9780
9781Completed a new design and implementation for support of the ACPI Global
9782Lock. On the OS side, the global lock is now treated as a standard AML
9783mutex. Previously, multiple OS threads could "acquire" the global lock
9784simultaneously. However, this could cause the BIOS to be starved out of
9785the
9786lock - especially in cases such as the Embedded Controller driver where
9787there is a tight coupling between the OS and the BIOS.
9788
9789Implemented an optimization for the ACPI Global Lock interrupt mechanism.
9790The Global Lock interrupt handler no longer queues the execution of a
9791separate thread to signal the global lock semaphore. Instead, the
9792semaphore
9793is signaled directly from the interrupt handler.
9794
9795Implemented support within the AML interpreter for package objects that
9796contain a larger AML length (package list length) than the package
9797element
9798count. In this case, the length of the package is truncated to match the
9799package element count. Some BIOS code apparently modifies the package
9800length
9801on the fly, and this change supports this behavior. Provides
9802compatibility
9803with the MS AML interpreter. (With assistance from Fiodor Suietov)
9804
9805Implemented a temporary fix for the BankValue parameter of a Bank Field
9806to
9807support all constant values, now including the Zero and One opcodes.
9808Evaluation of this parameter must eventually be converted to a full
9809TermArg
9810evaluation. A not-implemented error is now returned (temporarily) for
9811non-
9812constant values for this parameter.
9813
9814Fixed problem reports (Fiodor Suietov) integrated:
9815- Fix for premature object deletion after CopyObject on Operation Region
9816(BZ
9817350)
9818
9819Example Code and Data Size: These are the sizes for the OS-independent
9820acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9821debug version of the code includes the debug output trace mechanism and
9822has
9823a much larger code and data size.
9824
9825  Previous Release:
9826    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
9827    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
9828  Current Release:
9829    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
9830    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
9831
9832
98332) iASL Compiler/Disassembler and Tools:
9834
9835No changes for this release.
9836
9837----------------------------------------
983807 July 2006. Summary of changes for version 20060707:
9839
98401) ACPI CA Core Subsystem:
9841
9842Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
9843that do not allow the initialization of address pointers within packed
9844structures - even though the hardware itself may support misaligned
9845transfers. Some of the debug data structures are packed by default to
9846minimize size.
9847
9848Added an error message for the case where AcpiOsGetThreadId() returns
9849zero.
9850A non-zero value is required by the core ACPICA code to ensure the proper
9851operation of AML mutexes and recursive control methods.
9852
9853The DSDT is now the only ACPI table that determines whether the AML
9854interpreter is in 32-bit or 64-bit mode. Not really a functional change,
9855but
9856the hooks for per-table 32/64 switching have been removed from the code.
9857A
9858clarification to the ACPI specification is forthcoming in ACPI 3.0B.
9859
9860Fixed a possible leak of an OwnerID in the error path of
9861AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
9862deletion to a single place in AcpiTbUninstallTable to correct possible
9863leaks
9864when using the AcpiTbDeleteTablesByType interface (with assistance from
9865Lance Ortiz.)
9866
9867Fixed a problem with Serialized control methods where the semaphore
9868associated with the method could be over-signaled after multiple method
9869invocations.
9870
9871Fixed two issues with the locking of the internal namespace data
9872structure.
9873Both the Unload() operator and AcpiUnloadTable interface now lock the
9874namespace during the namespace deletion associated with the table unload
9875(with assistance from Linn Crosetto.)
9876
9877Fixed problem reports (Valery Podrezov) integrated:
9878- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
9879
9880Fixed problem reports (Fiodor Suietov) integrated:
9881- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
9882- On Address Space handler deletion, needless deactivation call (BZ 374)
9883- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
9884375)
9885- Possible memory leak, Notify sub-objects of Processor, Power,
9886ThermalZone
9887(BZ 376)
9888- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
9889- Minimum Length of RSDT should be validated (BZ 379)
9890- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
9891Handler (BZ (380)
9892- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
9893loaded
9894(BZ 381)
9895
9896Example Code and Data Size: These are the sizes for the OS-independent
9897acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9898debug version of the code includes the debug output trace mechanism and
9899has
9900a much larger code and data size.
9901
9902  Previous Release:
9903    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
9904    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
9905  Current Release:
9906    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
9907    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
9908
9909
99102) iASL Compiler/Disassembler and Tools:
9911
9912Fixed problem reports:
9913Compiler segfault when ASL contains a long (>1024) String declaration (BZ
9914436)
9915
9916----------------------------------------
991723 June 2006. Summary of changes for version 20060623:
9918
99191) ACPI CA Core Subsystem:
9920
9921Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
9922allows the type to be customized to the host OS for improved efficiency
9923(since a spinlock is usually a very small object.)
9924
9925Implemented support for "ignored" bits in the ACPI registers. According
9926to
9927the ACPI specification, these bits should be preserved when writing the
9928registers via a read/modify/write cycle. There are 3 bits preserved in
9929this
9930manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
9931
9932Implemented the initial deployment of new OSL mutex interfaces. Since
9933some
9934host operating systems have separate mutex and semaphore objects, this
9935feature was requested. The base code now uses mutexes (and the new mutex
9936interfaces) wherever a binary semaphore was used previously. However, for
9937the current release, the mutex interfaces are defined as macros to map
9938them
9939to the existing semaphore interfaces. Therefore, no OSL changes are
9940required
9941at this time. (See acpiosxf.h)
9942
9943Fixed several problems with the support for the control method SyncLevel
9944parameter. The SyncLevel now works according to the ACPI specification
9945and
9946in concert with the Mutex SyncLevel parameter, since the current
9947SyncLevel
9948is a property of the executing thread. Mutual exclusion for control
9949methods
9950is now implemented with a mutex instead of a semaphore.
9951
9952Fixed three instances of the use of the C shift operator in the bitfield
9953support code (exfldio.c) to avoid the use of a shift value larger than
9954the
9955target data width. The behavior of C compilers is undefined in this case
9956and
9957can cause unpredictable results, and therefore the case must be detected
9958and
9959avoided. (Fiodor Suietov)
9960
9961Added an info message whenever an SSDT or OEM table is loaded dynamically
9962via the Load() or LoadTable() ASL operators. This should improve
9963debugging
9964capability since it will show exactly what tables have been loaded
9965(beyond
9966the tables present in the RSDT/XSDT.)
9967
9968Example Code and Data Size: These are the sizes for the OS-independent
9969acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9970debug version of the code includes the debug output trace mechanism and
9971has
9972a much larger code and data size.
9973
9974  Previous Release:
9975    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
9976    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
9977  Current Release:
9978    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
9979    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
9980
9981
99822) iASL Compiler/Disassembler and Tools:
9983
9984No changes for this release.
9985
9986----------------------------------------
998708 June 2006. Summary of changes for version 20060608:
9988
99891) ACPI CA Core Subsystem:
9990
9991Converted the locking mutex used for the ACPI hardware to a spinlock.
9992This
9993change should eliminate all problems caused by attempting to acquire a
9994semaphore at interrupt level, and it means that all ACPICA external
9995interfaces that directly access the ACPI hardware can be safely called
9996from
9997interrupt level. OSL code that implements the semaphore interfaces should
9998be
9999able to eliminate any workarounds for being called at interrupt level.
10000
10001Fixed a regression introduced in 20060526 where the ACPI device
10002initialization could be prematurely aborted with an AE_NOT_FOUND if a
10003device
10004did not have an optional _INI method.
10005
10006Fixed an IndexField issue where a write to the Data Register should be
10007limited in size to the AccessSize (width) of the IndexField itself. (BZ
10008433,
10009Fiodor Suietov)
10010
10011Fixed problem reports (Valery Podrezov) integrated:
10012- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
10013
10014Fixed problem reports (Fiodor Suietov) integrated:
10015- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
10016
10017Removed four global mutexes that were obsolete and were no longer being
10018used.
10019
10020Example Code and Data Size: These are the sizes for the OS-independent
10021acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10022debug version of the code includes the debug output trace mechanism and
10023has
10024a much larger code and data size.
10025
10026  Previous Release:
10027    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
10028    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
10029  Current Release:
10030    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
10031    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
10032
10033
100342) iASL Compiler/Disassembler and Tools:
10035
10036Fixed a fault when using -g option (get tables from registry) on Windows
10037machines.
10038
10039Fixed problem reports integrated:
10040- Generate error if CreateField NumBits parameter is zero. (BZ 405)
10041- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
10042Suietov)
10043- Global table revision override (-r) is ignored (BZ 413)
10044
10045----------------------------------------
1004626 May 2006. Summary of changes for version 20060526:
10047
100481) ACPI CA Core Subsystem:
10049
10050Restructured, flattened, and simplified the internal interfaces for
10051namespace object evaluation - resulting in smaller code, less CPU stack
10052use,
10053and fewer interfaces. (With assistance from Mikhail Kouzmich)
10054
10055Fixed a problem with the CopyObject operator where the first parameter
10056was
10057not typed correctly for the parser, interpreter, compiler, and
10058disassembler.
10059Caused various errors and unexpected behavior.
10060
10061Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
10062produced incorrect results with some C compilers. Since the behavior of C
10063compilers when the shift value is larger than the datatype width is
10064apparently not well defined, the interpreter now detects this condition
10065and
10066simply returns zero as expected in all such cases. (BZ 395)
10067
10068Fixed problem reports (Valery Podrezov) integrated:
10069- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
10070- Allow interpreter to handle nested method declarations (BZ 5361)
10071
10072Fixed problem reports (Fiodor Suietov) integrated:
10073- AcpiTerminate doesn't free debug memory allocation list objects (BZ
10074355)
10075- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
10076356)
10077- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
10078- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
10079- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
10080- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
10081- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
10082- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
10083- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
10084365)
10085- Status of the Global Initialization Handler call not used (BZ 366)
10086- Incorrect object parameter to Global Initialization Handler (BZ 367)
10087
10088Example Code and Data Size: These are the sizes for the OS-independent
10089acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10090debug version of the code includes the debug output trace mechanism and
10091has
10092a much larger code and data size.
10093
10094  Previous Release:
10095    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
10096    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
10097  Current Release:
10098    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
10099    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
10100
10101
101022) iASL Compiler/Disassembler and Tools:
10103
10104Modified the parser to allow the names IO, DMA, and IRQ to be used as
10105namespace identifiers with no collision with existing resource descriptor
10106macro names. This provides compatibility with other ASL compilers and is
10107most useful for disassembly/recompilation of existing tables without
10108parse
10109errors. (With assistance from Thomas Renninger)
10110
10111Disassembler: fixed an incorrect disassembly problem with the
10112DataTableRegion and CopyObject operators. Fixed a possible fault during
10113disassembly of some Alias operators.
10114
10115----------------------------------------
1011612 May 2006. Summary of changes for version 20060512:
10117
101181) ACPI CA Core Subsystem:
10119
10120Replaced the AcpiOsQueueForExecution interface with a new interface named
10121AcpiOsExecute. The major difference is that the new interface does not
10122have
10123a Priority parameter, this appeared to be useless and has been replaced
10124by
10125a
10126Type parameter. The Type tells the host what type of execution is being
10127requested, such as global lock handler, notify handler, GPE handler, etc.
10128This allows the host to queue and execute the request as appropriate for
10129the
10130request type, possibly using different work queues and different
10131priorities
10132for the various request types. This enables fixes for multithreading
10133deadlock problems such as BZ #5534, and will require changes to all
10134existing
10135OS interface layers. (Alexey Starikovskiy and Bob Moore)
10136
10137Fixed a possible memory leak associated with the support for the so-
10138called
10139"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
10140Suietov)
10141
10142Fixed a problem with the Load() operator where a table load from an
10143operation region could overwrite an internal table buffer by up to 7
10144bytes
10145and cause alignment faults on IPF systems. (With assistance from Luming
10146Yu)
10147
10148Example Code and Data Size: These are the sizes for the OS-independent
10149acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10150debug version of the code includes the debug output trace mechanism and
10151has
10152a much larger code and data size.
10153
10154  Previous Release:
10155    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
10156    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
10157  Current Release:
10158    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
10159    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
10160
10161
10162
101632) iASL Compiler/Disassembler and Tools:
10164
10165Disassembler: Implemented support to cross reference the internal
10166namespace
10167and automatically generate ASL External() statements for symbols not
10168defined
10169within the current table being disassembled. This will simplify the
10170disassembly and recompilation of interdependent tables such as SSDTs
10171since
10172these statements will no longer have to be added manually.
10173
10174Disassembler: Implemented experimental support to automatically detect
10175invocations of external control methods and generate appropriate
10176External()
10177statements. This is problematic because the AML cannot be correctly
10178parsed
10179until the number of arguments for each control method is known.
10180Currently,
10181standalone method invocations and invocations as the source operand of a
10182Store() statement are supported.
10183
10184Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
10185LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
10186LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
10187more readable and likely closer to the original ASL source.
10188
10189----------------------------------------
1019021 April 2006. Summary of changes for version 20060421:
10191
101921) ACPI CA Core Subsystem:
10193
10194Removed a device initialization optimization introduced in 20051216 where
10195the _STA method was not run unless an _INI was also present for the same
10196device. This optimization could cause problems because it could allow
10197_INI
10198methods to be run within a not-present device subtree. (If a not-present
10199device had no _INI, _STA would not be run, the not-present status would
10200not
10201be discovered, and the children of the device would be incorrectly
10202traversed.)
10203
10204Implemented a new _STA optimization where namespace subtrees that do not
10205contain _INI are identified and ignored during device initialization.
10206Selectively running _STA can significantly improve boot time on large
10207machines (with assistance from Len Brown.)
10208
10209Implemented support for the device initialization case where the returned
10210_STA flags indicate a device not-present but functioning. In this case,
10211_INI
10212is not run, but the device children are examined for presence, as per the
10213ACPI specification.
10214
10215Implemented an additional change to the IndexField support in order to
10216conform to MS behavior. The value written to the Index Register is not
10217simply a byte offset, it is a byte offset in units of the access width of
10218the parent Index Field. (Fiodor Suietov)
10219
10220Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
10221interface is called during the creation of all AML operation regions, and
10222allows the host OS to exert control over what addresses it will allow the
10223AML code to access. Operation Regions whose addresses are disallowed will
10224cause a runtime exception when they are actually accessed (will not
10225affect
10226or abort table loading.) See oswinxf or osunixxf for an example
10227implementation.
10228
10229Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
10230interface allows the host OS to match the various "optional"
10231interface/behavior strings for the _OSI predefined control method as
10232appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
10233for an example implementation.
10234
10235Restructured and corrected various problems in the exception handling
10236code
10237paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
10238(with assistance from Takayoshi Kochi.)
10239
10240Modified the Linux source converter to ignore quoted string literals
10241while
10242converting identifiers from mixed to lower case. This will correct
10243problems
10244with the disassembler and other areas where such strings must not be
10245modified.
10246
10247The ACPI_FUNCTION_* macros no longer require quotes around the function
10248name. This allows the Linux source converter to convert the names, now
10249that
10250the converter ignores quoted strings.
10251
10252Example Code and Data Size: These are the sizes for the OS-independent
10253acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10254debug version of the code includes the debug output trace mechanism and
10255has
10256a much larger code and data size.
10257
10258  Previous Release:
10259
10260    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
10261    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
10262  Current Release:
10263    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
10264    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
10265
10266
102672) iASL Compiler/Disassembler and Tools:
10268
10269Implemented 3 new warnings for iASL, and implemented multiple warning
10270levels
10271(w2 flag).
10272
102731) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
10274not
10275WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
10276check for the possible timeout, a warning is issued.
10277
102782) Useless operators: If an ASL operator does not specify an optional
10279target
10280operand and it also does not use the function return value from the
10281operator, a warning is issued since the operator effectively does
10282nothing.
10283
102843) Unreferenced objects: If a namespace object is created, but never
10285referenced, a warning is issued. This is a warning level 2 since there
10286are
10287cases where this is ok, such as when a secondary table is loaded that
10288uses
10289the unreferenced objects. Even so, care is taken to only flag objects
10290that
10291don't look like they will ever be used. For example, the reserved methods
10292(starting with an underscore) are usually not referenced because it is
10293expected that the OS will invoke them.
10294
10295----------------------------------------
1029631 March 2006. Summary of changes for version 20060331:
10297
102981) ACPI CA Core Subsystem:
10299
10300Implemented header file support for the following additional ACPI tables:
10301ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
10302support,
10303all current and known ACPI tables are now defined in the ACPICA headers
10304and
10305are available for use by device drivers and other software.
10306
10307Implemented support to allow tables that contain ACPI names with invalid
10308characters to be loaded. Previously, this would cause the table load to
10309fail, but since there are several known cases of such tables on existing
10310machines, this change was made to enable ACPI support for them. Also,
10311this
10312matches the behavior of the Microsoft ACPI implementation.
10313
10314Fixed a couple regressions introduced during the memory optimization in
10315the
1031620060317 release. The namespace node definition required additional
10317reorganization and an internal datatype that had been changed to 8-bit
10318was
10319restored to 32-bit. (Valery Podrezov)
10320
10321Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
10322could be passed through to AcpiOsReleaseObject which is unexpected. Such
10323null pointers are now trapped and ignored, matching the behavior of the
10324previous implementation before the deployment of AcpiOsReleaseObject.
10325(Valery Podrezov, Fiodor Suietov)
10326
10327Fixed a memory mapping leak during the deletion of a SystemMemory
10328operation
10329region where a cached memory mapping was not deleted. This became a
10330noticeable problem for operation regions that are defined within
10331frequently
10332used control methods. (Dana Meyers)
10333
10334Reorganized the ACPI table header files into two main files: one for the
10335ACPI tables consumed by the ACPICA core, and another for the
10336miscellaneous
10337ACPI tables that are consumed by the drivers and other software. The
10338various
10339FADT definitions were merged into one common section and three different
10340tables (ACPI 1.0, 1.0+, and 2.0)
10341
10342Example Code and Data Size: These are the sizes for the OS-independent
10343acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10344debug version of the code includes the debug output trace mechanism and
10345has
10346a much larger code and data size.
10347
10348  Previous Release:
10349    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
10350    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
10351  Current Release:
10352    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
10353    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
10354
10355
103562) iASL Compiler/Disassembler and Tools:
10357
10358Disassembler: Implemented support to decode and format all non-AML ACPI
10359tables (tables other than DSDTs and SSDTs.) This includes the new tables
10360added to the ACPICA headers, therefore all current and known ACPI tables
10361are
10362supported.
10363
10364Disassembler: The change to allow ACPI names with invalid characters also
10365enables the disassembly of such tables. Invalid characters within names
10366are
10367changed to '*' to make the name printable; the iASL compiler will still
10368generate an error for such names, however, since this is an invalid ACPI
10369character.
10370
10371Implemented an option for AcpiXtract (-a) to extract all tables found in
10372the
10373input file. The default invocation extracts only the DSDTs and SSDTs.
10374
10375Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
10376makefile for the AcpiXtract utility.
10377
10378----------------------------------------
1037917 March 2006. Summary of changes for version 20060317:
10380
103811) ACPI CA Core Subsystem:
10382
10383Implemented the use of a cache object for all internal namespace nodes.
10384Since there are about 1000 static nodes in a typical system, this will
10385decrease memory use for cache implementations that minimize per-
10386allocation
10387overhead (such as a slab allocator.)
10388
10389Removed the reference count mechanism for internal namespace nodes, since
10390it
10391was deemed unnecessary. This reduces the size of each namespace node by
10392about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
10393case,
10394and 32 bytes for the 64-bit case.
10395
10396Optimized several internal data structures to reduce object size on 64-
10397bit
10398platforms by packing data within the 64-bit alignment. This includes the
10399frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
10400instances corresponding to the namespace objects.
10401
10402Added two new strings for the predefined _OSI method: "Windows 2001.1
10403SP1"
10404and "Windows 2006".
10405
10406Split the allocation tracking mechanism out to a separate file, from
10407utalloc.c to uttrack.c. This mechanism appears to be only useful for
10408application-level code. Kernels may wish to not include uttrack.c in
10409distributions.
10410
10411Removed all remnants of the obsolete ACPI_REPORT_* macros and the
10412associated
10413code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
10414macros.)
10415
10416Code and Data Size: These are the sizes for the acpica.lib produced by
10417the
10418Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
10419ACPI
10420driver or OSPM code. The debug version of the code includes the debug
10421output
10422trace mechanism and has a much larger code and data size. Note that these
10423values will vary depending on the efficiency of the compiler and the
10424compiler options used during generation.
10425
10426  Previous Release:
10427    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
10428    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
10429  Current Release:
10430    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
10431    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
10432
10433
104342) iASL Compiler/Disassembler and Tools:
10435
10436Implemented an ANSI C version of the acpixtract utility. This version
10437will
10438automatically extract the DSDT and all SSDTs from the input acpidump text
10439file and dump the binary output to separate files. It can also display a
10440summary of the input file including the headers for each table found and
10441will extract any single ACPI table, with any signature. (See
10442source/tools/acpixtract)
10443
10444----------------------------------------
1044510 March 2006. Summary of changes for version 20060310:
10446
104471) ACPI CA Core Subsystem:
10448
10449Tagged all external interfaces to the subsystem with the new
10450ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
10451assist
10452kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
10453macro. The default definition is NULL.
10454
10455Added the ACPI_THREAD_ID type for the return value from
10456AcpiOsGetThreadId.
10457This allows the host to define this as necessary to simplify kernel
10458integration. The default definition is ACPI_NATIVE_UINT.
10459
10460Fixed two interpreter problems related to error processing, the deletion
10461of
10462objects, and placing invalid pointers onto the internal operator result
10463stack. BZ 6028, 6151 (Valery Podrezov)
10464
10465Increased the reference count threshold where a warning is emitted for
10466large
10467reference counts in order to eliminate unnecessary warnings on systems
10468with
10469large namespaces (especially 64-bit.) Increased the value from 0x400 to
104700x800.
10471
10472Due to universal disagreement as to the meaning of the 'c' in the
10473calloc()
10474function, the ACPI_MEM_CALLOCATE macro has been renamed to
10475ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
10476ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
10477ACPI_FREE.
10478
10479Code and Data Size: These are the sizes for the acpica.lib produced by
10480the
10481Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
10482ACPI
10483driver or OSPM code. The debug version of the code includes the debug
10484output
10485trace mechanism and has a much larger code and data size. Note that these
10486values will vary depending on the efficiency of the compiler and the
10487compiler options used during generation.
10488
10489  Previous Release:
10490    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
10491    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
10492  Current Release:
10493    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
10494    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
10495
10496
104972) iASL Compiler/Disassembler:
10498
10499Disassembler: implemented support for symbolic resource descriptor
10500references. If a CreateXxxxField operator references a fixed offset
10501within
10502a
10503resource descriptor, a name is assigned to the descriptor and the offset
10504is
10505translated to the appropriate resource tag and pathname. The addition of
10506this support brings the disassembled code very close to the original ASL
10507source code and helps eliminate run-time errors when the disassembled
10508code
10509is modified (and recompiled) in such a way as to invalidate the original
10510fixed offsets.
10511
10512Implemented support for a Descriptor Name as the last parameter to the
10513ASL
10514Register() macro. This parameter was inadvertently left out of the ACPI
10515specification, and will be added for ACPI 3.0b.
10516
10517Fixed a problem where the use of the "_OSI" string (versus the full path
10518"\_OSI") caused an internal compiler error. ("No back ptr to op")
10519
10520Fixed a problem with the error message that occurs when an invalid string
10521is
10522used for a _HID object (such as one with an embedded asterisk:
10523"*PNP010A".)
10524The correct message is now displayed.
10525
10526----------------------------------------
1052717 February 2006. Summary of changes for version 20060217:
10528
105291) ACPI CA Core Subsystem:
10530
10531Implemented a change to the IndexField support to match the behavior of
10532the
10533Microsoft AML interpreter. The value written to the Index register is now
10534a
10535byte offset, no longer an index based upon the width of the Data
10536register.
10537This should fix IndexField problems seen on some machines where the Data
10538register is not exactly one byte wide. The ACPI specification will be
10539clarified on this point.
10540
10541Fixed a problem where several resource descriptor types could overrun the
10542internal descriptor buffer due to size miscalculation: VendorShort,
10543VendorLong, and Interrupt. This was noticed on IA64 machines, but could
10544affect all platforms.
10545
10546Fixed a problem where individual resource descriptors were misaligned
10547within
10548the internal buffer, causing alignment faults on IA64 platforms.
10549
10550Code and Data Size: These are the sizes for the acpica.lib produced by
10551the
10552Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
10553ACPI
10554driver or OSPM code. The debug version of the code includes the debug
10555output
10556trace mechanism and has a much larger code and data size. Note that these
10557values will vary depending on the efficiency of the compiler and the
10558compiler options used during generation.
10559
10560  Previous Release:
10561    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
10562    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
10563  Current Release:
10564    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
10565    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
10566
10567
105682) iASL Compiler/Disassembler:
10569
10570Implemented support for new reserved names: _WDG and _WED are Microsoft
10571extensions for Windows Instrumentation Management, _TDL is a new ACPI-
10572defined method (Throttling Depth Limit.)
10573
10574Fixed a problem where a zero-length VendorShort or VendorLong resource
10575descriptor was incorrectly emitted as a descriptor of length one.
10576
10577----------------------------------------
1057810 February 2006. Summary of changes for version 20060210:
10579
105801) ACPI CA Core Subsystem:
10581
10582Removed a couple of extraneous ACPI_ERROR messages that appeared during
10583normal execution. These became apparent after the conversion from
10584ACPI_DEBUG_PRINT.
10585
10586Fixed a problem where the CreateField operator could hang if the BitIndex
10587or
10588NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
10589
10590Fixed a problem where a DeRefOf operation on a buffer object incorrectly
10591failed with an exception. This also fixes a couple of related RefOf and
10592DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
10593
10594Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
10595of
10596AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
10597BZ
105985480)
10599
10600Implemented a memory cleanup at the end of the execution of each
10601iteration
10602of an AML While() loop, preventing the accumulation of outstanding
10603objects.
10604(Valery Podrezov, BZ 5427)
10605
10606Eliminated a chunk of duplicate code in the object resolution code.
10607(Valery
10608Podrezov, BZ 5336)
10609
10610Fixed several warnings during the 64-bit code generation.
10611
10612The AcpiSrc source code conversion tool now inserts one line of
10613whitespace
10614after an if() statement that is followed immediately by a comment,
10615improving
10616readability of the Linux code.
10617
10618Code and Data Size: The current and previous library sizes for the core
10619subsystem are shown below. These are the code and data sizes for the
10620acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10621These
10622values do not include any ACPI driver or OSPM code. The debug version of
10623the
10624code includes the debug output trace mechanism and has a much larger code
10625and data size. Note that these values will vary depending on the
10626efficiency
10627of the compiler and the compiler options used during generation.
10628
10629  Previous Release:
10630    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
10631    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
10632  Current Release:
10633    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
10634    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
10635
10636
106372) iASL Compiler/Disassembler:
10638
10639Fixed a problem with the disassembly of a BankField operator with a
10640complex
10641expression for the BankValue parameter.
10642
10643----------------------------------------
1064427 January 2006. Summary of changes for version 20060127:
10645
106461) ACPI CA Core Subsystem:
10647
10648Implemented support in the Resource Manager to allow unresolved
10649namestring
10650references within resource package objects for the _PRT method. This
10651support
10652is in addition to the previously implemented unresolved reference support
10653within the AML parser. If the interpreter slack mode is enabled, these
10654unresolved references will be passed through to the caller as a NULL
10655package
10656entry.
10657
10658Implemented and deployed new macros and functions for error and warning
10659messages across the subsystem. These macros are simpler and generate less
10660code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
10661ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
10662macros remain defined to allow ACPI drivers time to migrate to the new
10663macros.
10664
10665Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
10666the
10667Acquire/Release Lock OSL interfaces.
10668
10669Fixed a problem where Alias ASL operators are sometimes not correctly
10670resolved, in both the interpreter and the iASL compiler.
10671
10672Fixed several problems with the implementation of the
10673ConcatenateResTemplate
10674ASL operator. As per the ACPI specification, zero length buffers are now
10675treated as a single EndTag. One-length buffers always cause a fatal
10676exception. Non-zero length buffers that do not end with a full 2-byte
10677EndTag
10678cause a fatal exception.
10679
10680Fixed a possible structure overwrite in the AcpiGetObjectInfo external
10681interface. (With assistance from Thomas Renninger)
10682
10683Code and Data Size: The current and previous library sizes for the core
10684subsystem are shown below. These are the code and data sizes for the
10685acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10686These
10687values do not include any ACPI driver or OSPM code. The debug version of
10688the
10689code includes the debug output trace mechanism and has a much larger code
10690and data size. Note that these values will vary depending on the
10691efficiency
10692of the compiler and the compiler options used during generation.
10693
10694  Previous Release:
10695    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
10696    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
10697  Current Release:
10698    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
10699    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
10700
10701
107022) iASL Compiler/Disassembler:
10703
10704Fixed an internal error that was generated for any forward references to
10705ASL
10706Alias objects.
10707
10708----------------------------------------
1070913 January 2006. Summary of changes for version 20060113:
10710
107111) ACPI CA Core Subsystem:
10712
10713Added 2006 copyright to all module headers and signons. This affects
10714virtually every file in the ACPICA core subsystem, iASL compiler, and the
10715utilities.
10716
10717Enhanced the ACPICA error reporting in order to simplify user migration
10718to
10719the non-debug version of ACPICA. Replaced all instances of the
10720ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
10721debug
10722levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
10723respectively. This preserves all error and warning messages in the non-
10724debug
10725version of the ACPICA code (this has been referred to as the "debug lite"
10726option.) Over 200 cases were converted to create a total of over 380
10727error/warning messages across the ACPICA code. This increases the code
10728and
10729data size of the default non-debug version of the code somewhat (about
1073013K),
10731but all error/warning reporting may be disabled if desired (and code
10732eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
10733configuration option. The size of the debug version of ACPICA remains
10734about
10735the same.
10736
10737Fixed a memory leak within the AML Debugger "Set" command. One object was
10738not properly deleted for every successful invocation of the command.
10739
10740Code and Data Size: The current and previous library sizes for the core
10741subsystem are shown below. These are the code and data sizes for the
10742acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10743These
10744values do not include any ACPI driver or OSPM code. The debug version of
10745the
10746code includes the debug output trace mechanism and has a much larger code
10747and data size. Note that these values will vary depending on the
10748efficiency
10749of the compiler and the compiler options used during generation.
10750
10751  Previous Release:
10752    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
10753    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
10754  Current Release:
10755    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
10756    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
10757
10758
107592) iASL Compiler/Disassembler:
10760
10761The compiler now officially supports the ACPI 3.0a specification that was
10762released on December 30, 2005. (Specification is available at
10763www.acpi.info)
10764
10765----------------------------------------
1076616 December 2005. Summary of changes for version 20051216:
10767
107681) ACPI CA Core Subsystem:
10769
10770Implemented optional support to allow unresolved names within ASL Package
10771objects. A null object is inserted in the package when a named reference
10772cannot be located in the current namespace. Enabled via the interpreter
10773slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
10774machines
10775that contain such code.
10776
10777Implemented an optimization to the initialization sequence that can
10778improve
10779boot time. During ACPI device initialization, the _STA method is now run
10780if
10781and only if the _INI method exists. The _STA method is used to determine
10782if
10783the device is present; An _INI can only be run if _STA returns present,
10784but
10785it is a waste of time to run the _STA method if the _INI does not exist.
10786(Prototype and assistance from Dong Wei)
10787
10788Implemented use of the C99 uintptr_t for the pointer casting macros if it
10789is
10790available in the current compiler. Otherwise, the default (void *) cast
10791is
10792used as before.
10793
10794Fixed some possible memory leaks found within the execution path of the
10795Break, Continue, If, and CreateField operators. (Valery Podrezov)
10796
10797Fixed a problem introduced in the 20051202 release where an exception is
10798generated during method execution if a control method attempts to declare
10799another method.
10800
10801Moved resource descriptor string constants that are used by both the AML
10802disassembler and AML debugger to the common utilities directory so that
10803these components are independent.
10804
10805Implemented support in the AcpiExec utility (-e switch) to globally
10806ignore
10807exceptions during control method execution (method is not aborted.)
10808
10809Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
10810generation.
10811
10812Code and Data Size: The current and previous library sizes for the core
10813subsystem are shown below. These are the code and data sizes for the
10814acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10815These
10816values do not include any ACPI driver or OSPM code. The debug version of
10817the
10818code includes the debug output trace mechanism and has a much larger code
10819and data size. Note that these values will vary depending on the
10820efficiency
10821of the compiler and the compiler options used during generation.
10822
10823  Previous Release:
10824    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
10825    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
10826  Current Release:
10827    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
10828    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
10829
10830
108312) iASL Compiler/Disassembler:
10832
10833Fixed a problem where a CPU stack overflow fault could occur if a
10834recursive
10835method call was made from within a Return statement.
10836
10837----------------------------------------
1083802 December 2005. Summary of changes for version 20051202:
10839
108401) ACPI CA Core Subsystem:
10841
10842Modified the parsing of control methods to no longer create namespace
10843objects during the first pass of the parse. Objects are now created only
10844during the execute phase, at the moment the namespace creation operator
10845is
10846encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
10847This
10848should eliminate ALREADY_EXISTS exceptions seen on some machines where
10849reentrant control methods are protected by an AML mutex. The mutex will
10850now
10851correctly block multiple threads from attempting to create the same
10852object
10853more than once.
10854
10855Increased the number of available Owner Ids for namespace object tracking
10856from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
10857on
10858some machines with a large number of ACPI tables (either static or
10859dynamic).
10860
10861Fixed a problem with the AcpiExec utility where a fault could occur when
10862the
10863-b switch (batch mode) is used.
10864
10865Enhanced the namespace dump routine to output the owner ID for each
10866namespace object.
10867
10868Code and Data Size: The current and previous library sizes for the core
10869subsystem are shown below. These are the code and data sizes for the
10870acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10871These
10872values do not include any ACPI driver or OSPM code. The debug version of
10873the
10874code includes the debug output trace mechanism and has a much larger code
10875and data size. Note that these values will vary depending on the
10876efficiency
10877of the compiler and the compiler options used during generation.
10878
10879  Previous Release:
10880    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
10881    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10882  Current Release:
10883    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
10884    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
10885
10886
108872) iASL Compiler/Disassembler:
10888
10889Fixed a parse error during compilation of certain Switch/Case constructs.
10890To
10891simplify the parse, the grammar now allows for multiple Default
10892statements
10893and this error is now detected and flagged during the analysis phase.
10894
10895Disassembler: The disassembly now includes the contents of the original
10896table header within a comment at the start of the file. This includes the
10897name and version of the original ASL compiler.
10898
10899----------------------------------------
1090017 November 2005. Summary of changes for version 20051117:
10901
109021) ACPI CA Core Subsystem:
10903
10904Fixed a problem in the AML parser where the method thread count could be
10905decremented below zero if any errors occurred during the method parse
10906phase.
10907This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
10908machines.
10909This also fixed a related regression with the mechanism that detects and
10910corrects methods that cannot properly handle reentrancy (related to the
10911deployment of the new OwnerId mechanism.)
10912
10913Eliminated the pre-parsing of control methods (to detect errors) during
10914table load. Related to the problem above, this was causing unwind issues
10915if
10916any errors occurred during the parse, and it seemed to be overkill. A
10917table
10918load should not be aborted if there are problems with any single control
10919method, thus rendering this feature rather pointless.
10920
10921Fixed a problem with the new table-driven resource manager where an
10922internal
10923buffer overflow could occur for small resource templates.
10924
10925Implemented a new external interface, AcpiGetVendorResource. This
10926interface
10927will find and return a vendor-defined resource descriptor within a _CRS
10928or
10929_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
10930Helgaas.
10931
10932Removed the length limit (200) on string objects as per the upcoming ACPI
109333.0A specification. This affects the following areas of the interpreter:
109341)
10935any implicit conversion of a Buffer to a String, 2) a String object
10936result
10937of the ASL Concatentate operator, 3) the String object result of the ASL
10938ToString operator.
10939
10940Fixed a problem in the Windows OS interface layer (OSL) where a
10941WAIT_FOREVER
10942on a semaphore object would incorrectly timeout. This allows the
10943multithreading features of the AcpiExec utility to work properly under
10944Windows.
10945
10946Updated the Linux makefiles for the iASL compiler and AcpiExec to include
10947the recently added file named "utresrc.c".
10948
10949Code and Data Size: The current and previous library sizes for the core
10950subsystem are shown below. These are the code and data sizes for the
10951acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
10952These
10953values do not include any ACPI driver or OSPM code. The debug version of
10954the
10955code includes the debug output trace mechanism and has a much larger code
10956and data size. Note that these values will vary depending on the
10957efficiency
10958of the compiler and the compiler options used during generation.
10959
10960  Previous Release:
10961    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
10962    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10963  Current Release:
10964    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
10965    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
10966
10967
109682) iASL Compiler/Disassembler:
10969
10970Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
10971specification. For the iASL compiler, this means that string literals
10972within
10973the source ASL can be of any length.
10974
10975Enhanced the listing output to dump the AML code for resource descriptors
10976immediately after the ASL code for each descriptor, instead of in a block
10977at
10978the end of the entire resource template.
10979
10980Enhanced the compiler debug output to dump the entire original parse tree
10981constructed during the parse phase, before any transforms are applied to
10982the
10983tree. The transformed tree is dumped also.
10984
10985----------------------------------------
1098602 November 2005. Summary of changes for version 20051102:
10987
109881) ACPI CA Core Subsystem:
10989
10990Modified the subsystem initialization sequence to improve GPE support.
10991The
10992GPE initialization has been split into two parts in order to defer
10993execution
10994of the _PRW methods (Power Resources for Wake) until after the hardware
10995is
10996fully initialized and the SCI handler is installed. This allows the _PRW
10997methods to access fields protected by the Global Lock. This will fix
10998systems
10999where a NO_GLOBAL_LOCK exception has been seen during initialization.
11000
11001Converted the ACPI internal object disassemble and display code within
11002the
11003AML debugger to fully table-driven operation, reducing code size and
11004increasing maintainability.
11005
11006Fixed a regression with the ConcatenateResTemplate() ASL operator
11007introduced
11008in the 20051021 release.
11009
11010Implemented support for "local" internal ACPI object types within the
11011debugger "Object" command and the AcpiWalkNamespace external interfaces.
11012These local types include RegionFields, BankFields, IndexFields, Alias,
11013and
11014reference objects.
11015
11016Moved common AML resource handling code into a new file, "utresrc.c".
11017This
11018code is shared by both the Resource Manager and the AML Debugger.
11019
11020Code and Data Size: The current and previous library sizes for the core
11021subsystem are shown below. These are the code and data sizes for the
11022acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11023These
11024values do not include any ACPI driver or OSPM code. The debug version of
11025the
11026code includes the debug output trace mechanism and has a much larger code
11027and data size. Note that these values will vary depending on the
11028efficiency
11029of the compiler and the compiler options used during generation.
11030
11031  Previous Release:
11032    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
11033    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
11034  Current Release:
11035    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
11036    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11037
11038
110392) iASL Compiler/Disassembler:
11040
11041Fixed a problem with very large initializer lists (more than 4000
11042elements)
11043for both Buffer and Package objects where the parse stack could overflow.
11044
11045Enhanced the pre-compile source code scan for non-ASCII characters to
11046ignore
11047characters within comment fields. The scan is now always performed and is
11048no
11049longer optional, detecting invalid characters within a source file
11050immediately rather than during the parse phase or later.
11051
11052Enhanced the ASL grammar definition to force early reductions on all
11053list-
11054style grammar elements so that the overall parse stack usage is greatly
11055reduced. This should improve performance and reduce the possibility of
11056parse
11057stack overflow.
11058
11059Eliminated all reduce/reduce conflicts in the iASL parser generation.
11060Also,
11061with the addition of a %expected statement, the compiler generates from
11062source with no warnings.
11063
11064Fixed a possible segment fault in the disassembler if the input filename
11065does not contain a "dot" extension (Thomas Renninger).
11066
11067----------------------------------------
1106821 October 2005. Summary of changes for version 20051021:
11069
110701) ACPI CA Core Subsystem:
11071
11072Implemented support for the EM64T and other x86-64 processors. This
11073essentially entails recognizing that these processors support non-aligned
11074memory transfers. Previously, all 64-bit processors were assumed to lack
11075hardware support for non-aligned transfers.
11076
11077Completed conversion of the Resource Manager to nearly full table-driven
11078operation. Specifically, the resource conversion code (convert AML to
11079internal format and the reverse) and the debug code to dump internal
11080resource descriptors are fully table-driven, reducing code and data size
11081and
11082improving maintainability.
11083
11084The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
11085word
11086on 64-bit processors instead of a fixed 32-bit word. (With assistance
11087from
11088Alexey Starikovskiy)
11089
11090Implemented support within the resource conversion code for the Type-
11091Specific byte within the various ACPI 3.0 *WordSpace macros.
11092
11093Fixed some issues within the resource conversion code for the type-
11094specific
11095flags for both Memory and I/O address resource descriptors. For Memory,
11096implemented support for the MTP and TTP flags. For I/O, split the TRS and
11097TTP flags into two separate fields.
11098
11099Code and Data Size: The current and previous library sizes for the core
11100subsystem are shown below. These are the code and data sizes for the
11101acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11102These
11103values do not include any ACPI driver or OSPM code. The debug version of
11104the
11105code includes the debug output trace mechanism and has a much larger code
11106and data size. Note that these values will vary depending on the
11107efficiency
11108of the compiler and the compiler options used during generation.
11109
11110  Previous Release:
11111    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
11112    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
11113  Current Release:
11114    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
11115    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
11116
11117
11118
111192) iASL Compiler/Disassembler:
11120
11121Relaxed a compiler restriction that disallowed a ResourceIndex byte if
11122the
11123corresponding ResourceSource string was not also present in a resource
11124descriptor declaration. This restriction caused problems with existing
11125AML/ASL code that includes the Index byte without the string. When such
11126AML
11127was disassembled, it could not be compiled without modification. Further,
11128the modified code created a resource template with a different size than
11129the
11130original, breaking code that used fixed offsets into the resource
11131template
11132buffer.
11133
11134Removed a recent feature of the disassembler to ignore a lone
11135ResourceIndex
11136byte. This byte is now emitted if present so that the exact AML can be
11137reproduced when the disassembled code is recompiled.
11138
11139Improved comments and text alignment for the resource descriptor code
11140emitted by the disassembler.
11141
11142Implemented disassembler support for the ACPI 3.0 AccessSize field within
11143a
11144Register() resource descriptor.
11145
11146----------------------------------------
1114730 September 2005. Summary of changes for version 20050930:
11148
111491) ACPI CA Core Subsystem:
11150
11151Completed a major overhaul of the Resource Manager code - specifically,
11152optimizations in the area of the AML/internal resource conversion code.
11153The
11154code has been optimized to simplify and eliminate duplicated code, CPU
11155stack
11156use has been decreased by optimizing function parameters and local
11157variables, and naming conventions across the manager have been
11158standardized
11159for clarity and ease of maintenance (this includes function, parameter,
11160variable, and struct/typedef names.) The update may force changes in some
11161driver code, depending on how resources are handled by the host OS.
11162
11163All Resource Manager dispatch and information tables have been moved to a
11164single location for clarity and ease of maintenance. One new file was
11165created, named "rsinfo.c".
11166
11167The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
11168guarantee that the argument is not evaluated twice, making them less
11169prone
11170to macro side-effects. However, since there exists the possibility of
11171additional stack use if a particular compiler cannot optimize them (such
11172as
11173in the debug generation case), the original macros are optionally
11174available.
11175Note that some invocations of the return_VALUE macro may now cause size
11176mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
11177to
11178eliminate these. (From Randy Dunlap)
11179
11180Implemented a new mechanism to enable debug tracing for individual
11181control
11182methods. A new external interface, AcpiDebugTrace, is provided to enable
11183this mechanism. The intent is to allow the host OS to easily enable and
11184disable tracing for problematic control methods. This interface can be
11185easily exposed to a user or debugger interface if desired. See the file
11186psxface.c for details.
11187
11188AcpiUtCallocate will now return a valid pointer if a length of zero is
11189specified - a length of one is used and a warning is issued. This matches
11190the behavior of AcpiUtAllocate.
11191
11192Code and Data Size: The current and previous library sizes for the core
11193subsystem are shown below. These are the code and data sizes for the
11194acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11195These
11196values do not include any ACPI driver or OSPM code. The debug version of
11197the
11198code includes the debug output trace mechanism and has a much larger code
11199and data size. Note that these values will vary depending on the
11200efficiency
11201of the compiler and the compiler options used during generation.
11202
11203  Previous Release:
11204    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
11205    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
11206  Current Release:
11207    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
11208    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
11209
11210
112112) iASL Compiler/Disassembler:
11212
11213A remark is issued if the effective compile-time length of a package or
11214buffer is zero. Previously, this was a warning.
11215
11216----------------------------------------
1121716 September 2005. Summary of changes for version 20050916:
11218
112191) ACPI CA Core Subsystem:
11220
11221Fixed a problem within the Resource Manager where support for the Generic
11222Register descriptor was not fully implemented. This descriptor is now
11223fully
11224recognized, parsed, disassembled, and displayed.
11225
11226Completely restructured the Resource Manager code to utilize table-driven
11227dispatch and lookup, eliminating many of the large switch() statements.
11228This
11229reduces overall subsystem code size and code complexity. Affects the
11230resource parsing and construction, disassembly, and debug dump output.
11231
11232Cleaned up and restructured the debug dump output for all resource
11233descriptors. Improved readability of the output and reduced code size.
11234
11235Fixed a problem where changes to internal data structures caused the
11236optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
11237
11238Code and Data Size: The current and previous library sizes for the core
11239subsystem are shown below. These are the code and data sizes for the
11240acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11241These
11242values do not include any ACPI driver or OSPM code. The debug version of
11243the
11244code includes the debug output trace mechanism and has a much larger code
11245and data size. Note that these values will vary depending on the
11246efficiency
11247of the compiler and the compiler options used during generation.
11248
11249  Previous Release:
11250    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
11251    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
11252  Current Release:
11253    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
11254    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
11255
11256
112572) iASL Compiler/Disassembler:
11258
11259Updated the disassembler to automatically insert an EndDependentFn()
11260macro
11261into the ASL stream if this macro is missing in the original AML code,
11262simplifying compilation of the resulting ASL module.
11263
11264Fixed a problem in the disassembler where a disassembled ResourceSource
11265string (within a large resource descriptor) was not surrounded by quotes
11266and
11267not followed by a comma, causing errors when the resulting ASL module was
11268compiled. Also, escape sequences within a ResourceSource string are now
11269handled correctly (especially "\\")
11270
11271----------------------------------------
1127202 September 2005. Summary of changes for version 20050902:
11273
112741) ACPI CA Core Subsystem:
11275
11276Fixed a problem with the internal Owner ID allocation and deallocation
11277mechanisms for control method execution and recursive method invocation.
11278This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
11279messages seen on some systems. Recursive method invocation depth is
11280currently limited to 255. (Alexey Starikovskiy)
11281
11282Completely eliminated all vestiges of support for the "module-level
11283executable code" until this support is fully implemented and debugged.
11284This
11285should eliminate the NO_RETURN_VALUE exceptions seen during table load on
11286some systems that invoke this support.
11287
11288Fixed a problem within the resource manager code where the transaction
11289flags
11290for a 64-bit address descriptor were handled incorrectly in the type-
11291specific flag byte.
11292
11293Consolidated duplicate code within the address descriptor resource
11294manager
11295code, reducing overall subsystem code size.
11296
11297Fixed a fault when using the AML debugger "disassemble" command to
11298disassemble individual control methods.
11299
11300Removed references to the "release_current" directory within the Unix
11301release package.
11302
11303Code and Data Size: The current and previous core subsystem library sizes
11304are shown below. These are the code and data sizes for the acpica.lib
11305produced by the Microsoft Visual C++ 6.0 compiler. These values do not
11306include any ACPI driver or OSPM code. The debug version of the code
11307includes
11308the debug output trace mechanism and has a much larger code and data
11309size.
11310Note that these values will vary depending on the efficiency of the
11311compiler
11312and the compiler options used during generation.
11313
11314  Previous Release:
11315    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
11316    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
11317  Current Release:
11318    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
11319    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
11320
11321
113222) iASL Compiler/Disassembler:
11323
11324Implemented an error check for illegal duplicate values in the interrupt
11325and
11326dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
11327Interrupt().
11328
11329Implemented error checking for the Irq() and IrqNoFlags() macros to
11330detect
11331too many values in the interrupt list (16 max) and invalid values in the
11332list (range 0 - 15)
11333
11334The maximum length string literal within an ASL file is now restricted to
11335200 characters as per the ACPI specification.
11336
11337Fixed a fault when using the -ln option (generate namespace listing).
11338
11339Implemented an error check to determine if a DescriptorName within a
11340resource descriptor has already been used within the current scope.
11341
11342----------------------------------------
1134315 August 2005.  Summary of changes for version 20050815:
11344
113451) ACPI CA Core Subsystem:
11346
11347Implemented a full bytewise compare to determine if a table load request
11348is
11349attempting to load a duplicate table. The compare is performed if the
11350table
11351signatures and table lengths match. This will allow different tables with
11352the same OEM Table ID and revision to be loaded - probably against the
11353ACPI
11354specification, but discovered in the field nonetheless.
11355
11356Added the changes.txt logfile to each of the zipped release packages.
11357
11358Code and Data Size: Current and previous core subsystem library sizes are
11359shown below. These are the code and data sizes for the acpica.lib
11360produced
11361by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11362any ACPI driver or OSPM code. The debug version of the code includes the
11363debug output trace mechanism and has a much larger code and data size.
11364Note
11365that these values will vary depending on the efficiency of the compiler
11366and
11367the compiler options used during generation.
11368
11369  Previous Release:
11370    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
11371    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
11372  Current Release:
11373    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
11374    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
11375
11376
113772) iASL Compiler/Disassembler:
11378
11379Fixed a problem where incorrect AML code could be generated for Package
11380objects if optimization is disabled (via the -oa switch).
11381
11382Fixed a problem with where incorrect AML code is generated for variable-
11383length packages when the package length is not specified and the number
11384of
11385initializer values is greater than 255.
11386
11387
11388----------------------------------------
1138929 July 2005.  Summary of changes for version 20050729:
11390
113911) ACPI CA Core Subsystem:
11392
11393Implemented support to ignore an attempt to install/load a particular
11394ACPI
11395table more than once. Apparently there exists BIOS code that repeatedly
11396attempts to load the same SSDT upon certain events. With assistance from
11397Venkatesh Pallipadi.
11398
11399Restructured the main interface to the AML parser in order to correctly
11400handle all exceptional conditions. This will prevent leakage of the
11401OwnerId
11402resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
11403some
11404machines. With assistance from Alexey Starikovskiy.
11405
11406Support for "module level code" has been disabled in this version due to
11407a
11408number of issues that have appeared on various machines. The support can
11409be
11410enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
11411compilation. When the issues are fully resolved, the code will be enabled
11412by
11413default again.
11414
11415Modified the internal functions for debug print support to define the
11416FunctionName parameter as a (const char *) for compatibility with
11417compiler
11418built-in macros such as __FUNCTION__, etc.
11419
11420Linted the entire ACPICA source tree for both 32-bit and 64-bit.
11421
11422Implemented support to display an object count summary for the AML
11423Debugger
11424commands Object and Methods.
11425
11426Code and Data Size: Current and previous core subsystem library sizes are
11427shown below. These are the code and data sizes for the acpica.lib
11428produced
11429by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11430any ACPI driver or OSPM code. The debug version of the code includes the
11431debug output trace mechanism and has a much larger code and data size.
11432Note
11433that these values will vary depending on the efficiency of the compiler
11434and
11435the compiler options used during generation.
11436
11437  Previous Release:
11438    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
11439    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
11440  Current Release:
11441    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
11442    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
11443
11444
114452) iASL Compiler/Disassembler:
11446
11447Fixed a regression that appeared in the 20050708 version of the compiler
11448where an error message was inadvertently emitted for invocations of the
11449_OSI
11450reserved control method.
11451
11452----------------------------------------
1145308 July 2005.  Summary of changes for version 20050708:
11454
114551) ACPI CA Core Subsystem:
11456
11457The use of the CPU stack in the debug version of the subsystem has been
11458considerably reduced. Previously, a debug structure was declared in every
11459function that used the debug macros. This structure has been removed in
11460favor of declaring the individual elements as parameters to the debug
11461functions. This reduces the cumulative stack use during nested execution
11462of
11463ACPI function calls at the cost of a small increase in the code size of
11464the
11465debug version of the subsystem. With assistance from Alexey Starikovskiy
11466and
11467Len Brown.
11468
11469Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
11470headers to define a macro that will return the current function name at
11471runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
11472by
11473the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
11474compiler-dependent header, the function name is saved on the CPU stack
11475(one
11476pointer per function.) This mechanism is used because apparently there
11477exists no standard ANSI-C defined macro that that returns the function
11478name.
11479
11480Redesigned and reimplemented the "Owner ID" mechanism used to track
11481namespace objects created/deleted by ACPI tables and control method
11482execution. A bitmap is now used to allocate and free the IDs, thus
11483solving
11484the wraparound problem present in the previous implementation. The size
11485of
11486the namespace node descriptor was reduced by 2 bytes as a result (Alexey
11487Starikovskiy).
11488
11489Removed the UINT32_BIT and UINT16_BIT types that were used for the
11490bitfield
11491flag definitions within the headers for the predefined ACPI tables. These
11492have been replaced by UINT8_BIT in order to increase the code portability
11493of
11494the subsystem. If the use of UINT8 remains a problem, we may be forced to
11495eliminate bitfields entirely because of a lack of portability.
11496
11497Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
11498This
11499is a frequently used function and this improvement increases the
11500performance
11501of the entire subsystem (Alexey Starikovskiy).
11502
11503Fixed several possible memory leaks and the inverse - premature object
11504deletion (Alexey Starikovskiy).
11505
11506Code and Data Size: Current and previous core subsystem library sizes are
11507shown below. These are the code and data sizes for the acpica.lib
11508produced
11509by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11510any ACPI driver or OSPM code. The debug version of the code includes the
11511debug output trace mechanism and has a much larger code and data size.
11512Note
11513that these values will vary depending on the efficiency of the compiler
11514and
11515the compiler options used during generation.
11516
11517  Previous Release:
11518    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
11519    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
11520  Current Release:
11521    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
11522    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
11523
11524----------------------------------------
1152524 June 2005.  Summary of changes for version 20050624:
11526
115271) ACPI CA Core Subsystem:
11528
11529Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
11530the host-defined cache object. This allows the OSL implementation to
11531define
11532and type this object in any manner desired, simplifying the OSL
11533implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
11534Linux, and should be defined in the OS-specific header file for other
11535operating systems as required.
11536
11537Changed the interface to AcpiOsAcquireObject to directly return the
11538requested object as the function return (instead of ACPI_STATUS.) This
11539change was made for performance reasons, since this is the purpose of the
11540interface in the first place. AcpiOsAcquireObject is now similar to the
11541AcpiOsAllocate interface.
11542
11543Implemented a new AML debugger command named Businfo. This command
11544displays
11545information about all devices that have an associate _PRT object. The
11546_ADR,
11547_HID, _UID, and _CID are displayed for these devices.
11548
11549Modified the initialization sequence in AcpiInitializeSubsystem to call
11550the
11551OSL interface AcpiOslInitialize first, before any local initialization.
11552This
11553change was required because the global initialization now calls OSL
11554interfaces.
11555
11556Enhanced the Dump command to display the entire contents of Package
11557objects
11558(including all sub-objects and their values.)
11559
11560Restructured the code base to split some files because of size and/or
11561because the code logically belonged in a separate file. New files are
11562listed
11563below. All makefiles and project files included in the ACPI CA release
11564have
11565been updated.
11566    utilities/utcache.c           /* Local cache interfaces */
11567    utilities/utmutex.c           /* Local mutex support */
11568    utilities/utstate.c           /* State object support */
11569    interpreter/parser/psloop.c   /* Main AML parse loop */
11570
11571Code and Data Size: Current and previous core subsystem library sizes are
11572shown below. These are the code and data sizes for the acpica.lib
11573produced
11574by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11575any ACPI driver or OSPM code. The debug version of the code includes the
11576debug output trace mechanism and has a much larger code and data size.
11577Note
11578that these values will vary depending on the efficiency of the compiler
11579and
11580the compiler options used during generation.
11581
11582  Previous Release:
11583    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
11584    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
11585  Current Release:
11586    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
11587    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
11588
11589
115902) iASL Compiler/Disassembler:
11591
11592Fixed a regression introduced in version 20050513 where the use of a
11593Package
11594object within a Case() statement caused a compile time exception. The
11595original behavior has been restored (a Match() operator is emitted.)
11596
11597----------------------------------------
1159817 June 2005.  Summary of changes for version 20050617:
11599
116001) ACPI CA Core Subsystem:
11601
11602Moved the object cache operations into the OS interface layer (OSL) to
11603allow
11604the host OS to handle these operations if desired (for example, the Linux
11605OSL will invoke the slab allocator). This support is optional; the
11606compile
11607time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
11608cache
11609code in the ACPI CA core. The new OSL interfaces are shown below. See
11610utalloc.c for an example implementation, and acpiosxf.h for the exact
11611interface definitions. With assistance from Alexey Starikovskiy.
11612    AcpiOsCreateCache
11613    AcpiOsDeleteCache
11614    AcpiOsPurgeCache
11615    AcpiOsAcquireObject
11616    AcpiOsReleaseObject
11617
11618Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
11619return
11620and restore a flags parameter. This fits better with many OS lock models.
11621Note: the current execution state (interrupt handler or not) is no longer
11622passed to these interfaces. If necessary, the OSL must determine this
11623state
11624by itself, a simple and fast operation. With assistance from Alexey
11625Starikovskiy.
11626
11627Fixed a problem in the ACPI table handling where a valid XSDT was assumed
11628present if the revision of the RSDP was 2 or greater. According to the
11629ACPI
11630specification, the XSDT is optional in all cases, and the table manager
11631therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
11632Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
11633contain
11634only the RSDT.
11635
11636Fixed an interpreter problem with the Mid() operator in the case of an
11637input
11638string where the resulting output string is of zero length. It now
11639correctly
11640returns a valid, null terminated string object instead of a string object
11641with a null pointer.
11642
11643Fixed a problem with the control method argument handling to allow a
11644store
11645to an Arg object that already contains an object of type Device. The
11646Device
11647object is now correctly overwritten. Previously, an error was returned.
11648
11649
11650Enhanced the debugger Find command to emit object values in addition to
11651the
11652found object pathnames. The output format is the same as the dump
11653namespace
11654command.
11655
11656Enhanced the debugger Set command. It now has the ability to set the
11657value
11658of any Named integer object in the namespace (Previously, only method
11659locals
11660and args could be set.)
11661
11662Code and Data Size: Current and previous core subsystem library sizes are
11663shown below. These are the code and data sizes for the acpica.lib
11664produced
11665by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11666any ACPI driver or OSPM code. The debug version of the code includes the
11667debug output trace mechanism and has a much larger code and data size.
11668Note
11669that these values will vary depending on the efficiency of the compiler
11670and
11671the compiler options used during generation.
11672
11673  Previous Release:
11674    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
11675    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
11676  Current Release:
11677    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
11678    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
11679
11680
116812) iASL Compiler/Disassembler:
11682
11683Fixed a regression in the disassembler where if/else/while constructs
11684were
11685output incorrectly. This problem was introduced in the previous release
11686(20050526). This problem also affected the single-step disassembly in the
11687debugger.
11688
11689Fixed a problem where compiling the reserved _OSI method would randomly
11690(but
11691rarely) produce compile errors.
11692
11693Enhanced the disassembler to emit compilable code in the face of
11694incorrect
11695AML resource descriptors. If the optional ResourceSourceIndex is present,
11696but the ResourceSource is not, do not emit the ResourceSourceIndex in the
11697disassembly. Otherwise, the resulting code cannot be compiled without
11698errors.
11699
11700----------------------------------------
1170126 May 2005.  Summary of changes for version 20050526:
11702
117031) ACPI CA Core Subsystem:
11704
11705Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
11706the module level (not within a control method.) These opcodes are
11707executed
11708exactly once at the time the table is loaded. This type of code was legal
11709up
11710until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
11711in
11712order to provide backwards compatibility with earlier BIOS
11713implementations.
11714This eliminates the "Encountered executable code at module level" warning
11715that was previously generated upon detection of such code.
11716
11717Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
11718inadvertently be generated during the lookup of namespace objects in the
11719second pass parse of ACPI tables and control methods. It appears that
11720this
11721problem could occur during the resolution of forward references to
11722namespace
11723objects.
11724
11725Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
11726corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
11727allows the deadlock detection debug code to be compiled out in the normal
11728case, improving mutex performance (and overall subsystem performance)
11729considerably.
11730
11731Implemented a handful of miscellaneous fixes for possible memory leaks on
11732error conditions and error handling control paths. These fixes were
11733suggested by FreeBSD and the Coverity Prevent source code analysis tool.
11734
11735Added a check for a null RSDT pointer in AcpiGetFirmwareTable
11736(tbxfroot.c)
11737to prevent a fault in this error case.
11738
11739Code and Data Size: Current and previous core subsystem library sizes are
11740shown below. These are the code and data sizes for the acpica.lib
11741produced
11742by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11743any ACPI driver or OSPM code. The debug version of the code includes the
11744debug output trace mechanism and has a much larger code and data size.
11745Note
11746that these values will vary depending on the efficiency of the compiler
11747and
11748the compiler options used during generation.
11749
11750  Previous Release:
11751    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
11752    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
11753  Current Release:
11754    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
11755    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
11756
11757
117582) iASL Compiler/Disassembler:
11759
11760Implemented support to allow Type 1 and Type 2 ASL operators to appear at
11761the module level (not within a control method.) These operators will be
11762executed once at the time the table is loaded. This type of code was
11763legal
11764up until the release of ACPI 2.0B (2002) and is now supported by the iASL
11765compiler in order to provide backwards compatibility with earlier BIOS
11766ASL
11767code.
11768
11769The ACPI integer width (specified via the table revision ID or the -r
11770override, 32 or 64 bits) is now used internally during compile-time
11771constant
11772folding to ensure that constants are truncated to 32 bits if necessary.
11773Previously, the revision ID value was only emitted in the AML table
11774header.
11775
11776An error message is now generated for the Mutex and Method operators if
11777the
11778SyncLevel parameter is outside the legal range of 0 through 15.
11779
11780Fixed a problem with the Method operator ParameterTypes list handling
11781(ACPI
117823.0). Previously, more than 2 types or 2 arguments generated a syntax
11783error.
11784The actual underlying implementation of method argument typechecking is
11785still under development, however.
11786
11787----------------------------------------
1178813 May 2005.  Summary of changes for version 20050513:
11789
117901) ACPI CA Core Subsystem:
11791
11792Implemented support for PCI Express root bridges -- added support for
11793device
11794PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
11795
11796The interpreter now automatically truncates incoming 64-bit constants to
1179732
11798bits if currently executing out of a 32-bit ACPI table (Revision < 2).
11799This
11800also affects the iASL compiler constant folding. (Note: as per below, the
11801iASL compiler no longer allows 64-bit constants within 32-bit tables.)
11802
11803Fixed a problem where string and buffer objects with "static" pointers
11804(pointers to initialization data within an ACPI table) were not handled
11805consistently. The internal object copy operation now always copies the
11806data
11807to a newly allocated buffer, regardless of whether the source object is
11808static or not.
11809
11810Fixed a problem with the FromBCD operator where an implicit result
11811conversion was improperly performed while storing the result to the
11812target
11813operand. Since this is an "explicit conversion" operator, the implicit
11814conversion should never be performed on the output.
11815
11816Fixed a problem with the CopyObject operator where a copy to an existing
11817named object did not always completely overwrite the existing object
11818stored
11819at name. Specifically, a buffer-to-buffer copy did not delete the
11820existing
11821buffer.
11822
11823Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
11824and
11825structs for consistency.
11826
11827Code and Data Size: Current and previous core subsystem library sizes are
11828shown below. These are the code and data sizes for the acpica.lib
11829produced
11830by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11831any ACPI driver or OSPM code. The debug version of the code includes the
11832debug output trace mechanism and has a much larger code and data size.
11833Note
11834that these values will vary depending on the efficiency of the compiler
11835and
11836the compiler options used during generation.
11837
11838  Previous Release:
11839    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
11840    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
11841  Current Release: (Same sizes)
11842    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
11843    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
11844
11845
118462) iASL Compiler/Disassembler:
11847
11848The compiler now emits a warning if an attempt is made to generate a 64-
11849bit
11850integer constant from within a 32-bit ACPI table (Revision < 2). The
11851integer
11852is truncated to 32 bits.
11853
11854Fixed a problem with large package objects: if the static length of the
11855package is greater than 255, the "variable length package" opcode is
11856emitted. Previously, this caused an error. This requires an update to the
11857ACPI spec, since it currently (incorrectly) states that packages larger
11858than
11859255 elements are not allowed.
11860
11861The disassembler now correctly handles variable length packages and
11862packages
11863larger than 255 elements.
11864
11865----------------------------------------
1186608 April 2005.  Summary of changes for version 20050408:
11867
118681) ACPI CA Core Subsystem:
11869
11870Fixed three cases in the interpreter where an "index" argument to an ASL
11871function was still (internally) 32 bits instead of the required 64 bits.
11872This was the Index argument to the Index, Mid, and Match operators.
11873
11874The "strupr" function is now permanently local (AcpiUtStrupr), since this
11875is
11876not a POSIX-defined function and not present in most kernel-level C
11877libraries. All references to the C library strupr function have been
11878removed
11879from the headers.
11880
11881Completed the deployment of static functions/prototypes. All prototypes
11882with
11883the static attribute have been moved from the headers to the owning C
11884file.
11885
11886Implemented an extract option (-e) for the AcpiBin utility (AML binary
11887utility). This option allows the utility to extract individual ACPI
11888tables
11889from the output of AcpiDmp. It provides the same functionality of the
11890acpixtract.pl perl script without the worry of setting the correct perl
11891options. AcpiBin runs on Windows and has not yet been generated/validated
11892in
11893the Linux/Unix environment (but should be soon).
11894
11895Updated and fixed the table dump option for AcpiBin (-d). This option
11896converts a single ACPI table to a hex/ascii file, similar to the output
11897of
11898AcpiDmp.
11899
11900Code and Data Size: Current and previous core subsystem library sizes are
11901shown below. These are the code and data sizes for the acpica.lib
11902produced
11903by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11904any ACPI driver or OSPM code. The debug version of the code includes the
11905debug output trace mechanism and has a much larger code and data size.
11906Note
11907that these values will vary depending on the efficiency of the compiler
11908and
11909the compiler options used during generation.
11910
11911  Previous Release:
11912    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
11913    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
11914  Current Release:
11915    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
11916    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
11917
11918
119192) iASL Compiler/Disassembler:
11920
11921Disassembler fix: Added a check to ensure that the table length found in
11922the
11923ACPI table header within the input file is not longer than the actual
11924input
11925file size. This indicates some kind of file or table corruption.
11926
11927----------------------------------------
1192829 March 2005.  Summary of changes for version 20050329:
11929
119301) ACPI CA Core Subsystem:
11931
11932An error is now generated if an attempt is made to create a Buffer Field
11933of
11934length zero (A CreateField with a length operand of zero.)
11935
11936The interpreter now issues a warning whenever executable code at the
11937module
11938level is detected during ACPI table load. This will give some idea of the
11939prevalence of this type of code.
11940
11941Implemented support for references to named objects (other than control
11942methods) within package objects.
11943
11944Enhanced package object output for the debug object. Package objects are
11945now
11946completely dumped, showing all elements.
11947
11948Enhanced miscellaneous object output for the debug object. Any object can
11949now be written to the debug object (for example, a device object can be
11950written, and the type of the object will be displayed.)
11951
11952The "static" qualifier has been added to all local functions across both
11953the
11954core subsystem and the iASL compiler.
11955
11956The number of "long" lines (> 80 chars) within the source has been
11957significantly reduced, by about 1/3.
11958
11959Cleaned up all header files to ensure that all CA/iASL functions are
11960prototyped (even static functions) and the formatting is consistent.
11961
11962Two new header files have been added, acopcode.h and acnames.h.
11963
11964Removed several obsolete functions that were no longer used.
11965
11966Code and Data Size: Current and previous core subsystem library sizes are
11967shown below. These are the code and data sizes for the acpica.lib
11968produced
11969by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11970any ACPI driver or OSPM code. The debug version of the code includes the
11971debug output trace mechanism and has a much larger code and data size.
11972Note
11973that these values will vary depending on the efficiency of the compiler
11974and
11975the compiler options used during generation.
11976
11977  Previous Release:
11978    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
11979    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
11980  Current Release:
11981    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
11982    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
11983
11984
11985
119862) iASL Compiler/Disassembler:
11987
11988Fixed a problem with the resource descriptor generation/support. For the
11989ResourceSourceIndex and the ResourceSource fields, both must be present,
11990or
11991both must be not present - can't have one without the other.
11992
11993The compiler now returns non-zero from the main procedure if any errors
11994have
11995occurred during the compilation.
11996
11997
11998----------------------------------------
1199909 March 2005.  Summary of changes for version 20050309:
12000
120011) ACPI CA Core Subsystem:
12002
12003The string-to-buffer implicit conversion code has been modified again
12004after
12005a change to the ACPI specification.  In order to match the behavior of
12006the
12007other major ACPI implementation, the target buffer is no longer truncated
12008if
12009the source string is smaller than an existing target buffer. This change
12010requires an update to the ACPI spec, and should eliminate the recent
12011AE_AML_BUFFER_LIMIT issues.
12012
12013The "implicit return" support was rewritten to a new algorithm that
12014solves
12015the general case. Rather than attempt to determine when a method is about
12016to
12017exit, the result of every ASL operator is saved momentarily until the
12018very
12019next ASL operator is executed. Therefore, no matter how the method exits,
12020there will always be a saved implicit return value. This feature is only
12021enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
12022eliminate
12023AE_AML_NO_RETURN_VALUE errors when enabled.
12024
12025Implemented implicit conversion support for the predicate (operand) of
12026the
12027If, Else, and While operators. String and Buffer arguments are
12028automatically
12029converted to Integers.
12030
12031Changed the string-to-integer conversion behavior to match the new ACPI
12032errata: "If no integer object exists, a new integer is created. The ASCII
12033string is interpreted as a hexadecimal constant. Each string character is
12034interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
12035with the first character as the most significant digit, and ending with
12036the
12037first non-hexadecimal character or end-of-string." This means that the
12038first
12039non-hex character terminates the conversion and this is the code that was
12040changed.
12041
12042Fixed a problem where the ObjectType operator would fail (fault) when
12043used
12044on an Index of a Package which pointed to a null package element. The
12045operator now properly returns zero (Uninitialized) in this case.
12046
12047Fixed a problem where the While operator used excessive memory by not
12048properly popping the result stack during execution. There was no memory
12049leak
12050after execution, however. (Code provided by Valery Podrezov.)
12051
12052Fixed a problem where references to control methods within Package
12053objects
12054caused the method to be invoked, instead of producing a reference object
12055pointing to the method.
12056
12057Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
12058to
12059improve performance and reduce code size. (Code provided by Alexey
12060Starikovskiy.)
12061
12062Code and Data Size: Current and previous core subsystem library sizes are
12063shown below. These are the code and data sizes for the acpica.lib
12064produced
12065by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12066any ACPI driver or OSPM code. The debug version of the code includes the
12067debug output trace mechanism and has a much larger code and data size.
12068Note
12069that these values will vary depending on the efficiency of the compiler
12070and
12071the compiler options used during generation.
12072
12073  Previous Release:
12074    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
12075    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
12076  Current Release:
12077    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
12078    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
12079
12080
120812) iASL Compiler/Disassembler:
12082
12083Fixed a problem with the Return operator with no arguments. Since the AML
12084grammar for the byte encoding requires an operand for the Return opcode,
12085the
12086compiler now emits a Return(Zero) for this case.  An ACPI specification
12087update has been written for this case.
12088
12089For tables other than the DSDT, namepath optimization is automatically
12090disabled. This is because SSDTs can be loaded anywhere in the namespace,
12091the
12092compiler has no knowledge of where, and thus cannot optimize namepaths.
12093
12094Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
12095inadvertently omitted from the ACPI specification, and will require an
12096update to the spec.
12097
12098The source file scan for ASCII characters is now optional (-a). This
12099change
12100was made because some vendors place non-ascii characters within comments.
12101However, the scan is simply a brute-force byte compare to ensure all
12102characters in the file are in the range 0x00 to 0x7F.
12103
12104Fixed a problem with the CondRefOf operator where the compiler was
12105inappropriately checking for the existence of the target. Since the point
12106of
12107the operator is to check for the existence of the target at run-time, the
12108compiler no longer checks for the target existence.
12109
12110Fixed a problem where errors generated from the internal AML interpreter
12111during constant folding were not handled properly, causing a fault.
12112
12113Fixed a problem with overly aggressive range checking for the Stall
12114operator. The valid range (max 255) is now only checked if the operand is
12115of
12116type Integer. All other operand types cannot be statically checked.
12117
12118Fixed a problem where control method references within the RefOf,
12119DeRefOf,
12120and ObjectType operators were not treated properly. They are now treated
12121as
12122actual references, not method invocations.
12123
12124Fixed and enhanced the "list namespace" option (-ln). This option was
12125broken
12126a number of releases ago.
12127
12128Improved error handling for the Field, IndexField, and BankField
12129operators.
12130The compiler now cleanly reports and recovers from errors in the field
12131component (FieldUnit) list.
12132
12133Fixed a disassembler problem where the optional ResourceDescriptor fields
12134TRS and TTP were not always handled correctly.
12135
12136Disassembler - Comments in output now use "//" instead of "/*"
12137
12138----------------------------------------
1213928 February 2005.  Summary of changes for version 20050228:
12140
121411) ACPI CA Core Subsystem:
12142
12143Fixed a problem where the result of an Index() operator (an object
12144reference) must increment the reference count on the target object for
12145the
12146life of the object reference.
12147
12148Implemented AML Interpreter and Debugger support for the new ACPI 3.0
12149Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
12150WordSpace
12151resource descriptors.
12152
12153Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
12154Space Descriptor" string, indicating interpreter support for the
12155descriptors
12156above.
12157
12158Implemented header support for the new ACPI 3.0 FADT flag bits.
12159
12160Implemented header support for the new ACPI 3.0 PCI Express bits for the
12161PM1
12162status/enable registers.
12163
12164Updated header support for the MADT processor local Apic struct and MADT
12165platform interrupt source struct for new ACPI 3.0 fields.
12166
12167Implemented header support for the SRAT and SLIT ACPI tables.
12168
12169Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
12170flag
12171at runtime.
12172
12173Code and Data Size: Current and previous core subsystem library sizes are
12174shown below. These are the code and data sizes for the acpica.lib
12175produced
12176by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12177any ACPI driver or OSPM code. The debug version of the code includes the
12178debug output trace mechanism and has a much larger code and data size.
12179Note
12180that these values will vary depending on the efficiency of the compiler
12181and
12182the compiler options used during generation.
12183
12184  Previous Release:
12185    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
12186    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
12187  Current Release:
12188    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
12189    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
12190
12191
121922) iASL Compiler/Disassembler:
12193
12194Fixed a problem with the internal 64-bit String-to-integer conversion
12195with
12196strings less than two characters long.
12197
12198Fixed a problem with constant folding where the result of the Index()
12199operator can not be considered a constant. This means that Index() cannot
12200be
12201a type3 opcode and this will require an update to the ACPI specification.
12202
12203Disassembler: Implemented support for the TTP, MTP, and TRS resource
12204descriptor fields. These fields were inadvertently ignored and not output
12205in
12206the disassembly of the resource descriptor.
12207
12208
12209 ----------------------------------------
1221011 February 2005.  Summary of changes for version 20050211:
12211
122121) ACPI CA Core Subsystem:
12213
12214Implemented ACPI 3.0 support for implicit conversion within the Match()
12215operator. MatchObjects can now be of type integer, buffer, or string
12216instead
12217of just type integer.  Package elements are implicitly converted to the
12218type
12219of the MatchObject. This change aligns the behavior of Match() with the
12220behavior of the other logical operators (LLess(), etc.) It also requires
12221an
12222errata change to the ACPI specification as this support was intended for
12223ACPI 3.0, but was inadvertently omitted.
12224
12225Fixed a problem with the internal implicit "to buffer" conversion.
12226Strings
12227that are converted to buffers will cause buffer truncation if the string
12228is
12229smaller than the target buffer. Integers that are converted to buffers
12230will
12231not cause buffer truncation, only zero extension (both as per the ACPI
12232spec.) The problem was introduced when code was added to truncate the
12233buffer, but this should not be performed in all cases, only the string
12234case.
12235
12236Fixed a problem with the Buffer and Package operators where the
12237interpreter
12238would get confused if two such operators were used as operands to an ASL
12239operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
12240stack was not being popped after the execution of these operators,
12241resulting
12242in an AE_NO_RETURN_VALUE exception.
12243
12244Fixed a problem with constructs of the form Store(Index(...),...). The
12245reference object returned from Index was inadvertently resolved to an
12246actual
12247value. This problem was introduced in version 20050114 when the behavior
12248of
12249Store() was modified to restrict the object types that can be used as the
12250source operand (to match the ACPI specification.)
12251
12252Reduced excessive stack use within the AcpiGetObjectInfo procedure.
12253
12254Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
12255
12256Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
12257
12258Code and Data Size: Current and previous core subsystem library sizes are
12259shown below. These are the code and data sizes for the acpica.lib
12260produced
12261by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12262any ACPI driver or OSPM code. The debug version of the code includes the
12263debug output trace mechanism and has a much larger code and data size.
12264Note
12265that these values will vary depending on the efficiency of the compiler
12266and
12267the compiler options used during generation.
12268
12269  Previous Release:
12270    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
12271    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
12272  Current Release:
12273    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
12274    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
12275
12276
122772) iASL Compiler/Disassembler:
12278
12279Fixed a code generation problem in the constant folding optimization code
12280where incorrect code was generated if a constant was reduced to a buffer
12281object (i.e., a reduced type 5 opcode.)
12282
12283Fixed a typechecking problem for the ToBuffer operator. Caused by an
12284incorrect return type in the internal opcode information table.
12285
12286----------------------------------------
1228725 January 2005.  Summary of changes for version 20050125:
12288
122891) ACPI CA Core Subsystem:
12290
12291Fixed a recently introduced problem with the Global Lock where the
12292underlying semaphore was not created.  This problem was introduced in
12293version 20050114, and caused an AE_AML_NO_OPERAND exception during an
12294Acquire() operation on _GL.
12295
12296The local object cache is now optional, and is disabled by default. Both
12297AcpiExec and the iASL compiler enable the cache because they run in user
12298mode and this enhances their performance. #define
12299ACPI_ENABLE_OBJECT_CACHE
12300to enable the local cache.
12301
12302Fixed an issue in the internal function AcpiUtEvaluateObject concerning
12303the
12304optional "implicit return" support where an error was returned if no
12305return
12306object was expected, but one was implicitly returned. AE_OK is now
12307returned
12308in this case and the implicitly returned object is deleted.
12309AcpiUtEvaluateObject is only occasionally used, and only to execute
12310reserved
12311methods such as _STA and _INI where the return type is known up front.
12312
12313Fixed a few issues with the internal convert-to-integer code. It now
12314returns
12315an error if an attempt is made to convert a null string, a string of only
12316blanks/tabs, or a zero-length buffer. This affects both implicit
12317conversion
12318and explicit conversion via the ToInteger() operator.
12319
12320The internal debug code in AcpiUtAcquireMutex has been commented out. It
12321is
12322not needed for normal operation and should increase the performance of
12323the
12324entire subsystem. The code remains in case it is needed for debug
12325purposes
12326again.
12327
12328The AcpiExec source and makefile are included in the Unix/Linux package
12329for
12330the first time.
12331
12332Code and Data Size: Current and previous core subsystem library sizes are
12333shown below. These are the code and data sizes for the acpica.lib
12334produced
12335by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12336any ACPI driver or OSPM code. The debug version of the code includes the
12337debug output trace mechanism and has a much larger code and data size.
12338Note
12339that these values will vary depending on the efficiency of the compiler
12340and
12341the compiler options used during generation.
12342
12343  Previous Release:
12344    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
12345    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
12346  Current Release:
12347    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
12348    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
12349
123502) iASL Compiler/Disassembler:
12351
12352Switch/Case support: A warning is now issued if the type of the Switch
12353value
12354cannot be determined at compile time. For example, Switch(Arg0) will
12355generate the warning, and the type is assumed to be an integer. As per
12356the
12357ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
12358the
12359warning.
12360
12361Switch/Case support: Implemented support for buffer and string objects as
12362the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
12363buffers and strings.
12364
12365Switch/Case support: The emitted code for the LEqual() comparisons now
12366uses
12367the switch value as the first operand, not the second. The case value is
12368now
12369the second operand, and this allows the case value to be implicitly
12370converted to the type of the switch value, not the other way around.
12371
12372Switch/Case support: Temporary variables are now emitted immediately
12373within
12374the control method, not at the global level. This means that there are
12375now
1237636 temps available per-method, not 36 temps per-module as was the case
12377with
12378the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
12379
12380----------------------------------------
1238114 January 2005.  Summary of changes for version 20050114:
12382
12383Added 2005 copyright to all module headers.  This affects every module in
12384the core subsystem, iASL compiler, and the utilities.
12385
123861) ACPI CA Core Subsystem:
12387
12388Fixed an issue with the String-to-Buffer conversion code where the string
12389null terminator was not included in the buffer after conversion, but
12390there
12391is existing ASL that assumes the string null terminator is included. This
12392is
12393the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
12394introduced in the previous version when the code was updated to correctly
12395set the converted buffer size as per the ACPI specification. The ACPI
12396spec
12397is ambiguous and will be updated to specify that the null terminator must
12398be
12399included in the converted buffer. This also affects the ToBuffer() ASL
12400operator.
12401
12402Fixed a problem with the Mid() ASL/AML operator where it did not work
12403correctly on Buffer objects. Newly created sub-buffers were not being
12404marked
12405as initialized.
12406
12407
12408Fixed a problem in AcpiTbFindTable where incorrect string compares were
12409performed on the OemId and OemTableId table header fields.  These fields
12410are
12411not null terminated, so strncmp is now used instead of strcmp.
12412
12413Implemented a restriction on the Store() ASL/AML operator to align the
12414behavior with the ACPI specification.  Previously, any object could be
12415used
12416as the source operand.  Now, the only objects that may be used are
12417Integers,
12418Buffers, Strings, Packages, Object References, and DDB Handles.  If
12419necessary, the original behavior can be restored by enabling the
12420EnableInterpreterSlack flag.
12421
12422Enhanced the optional "implicit return" support to allow an implicit
12423return
12424value from methods that are invoked externally via the AcpiEvaluateObject
12425interface.  This enables implicit returns from the _STA and _INI methods,
12426for example.
12427
12428Changed the Revision() ASL/AML operator to return the current version of
12429the
12430AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
12431returned
12432the supported ACPI version (This is the function of the _REV method).
12433
12434Updated the _REV predefined method to return the currently supported
12435version
12436of ACPI, now 3.
12437
12438Implemented batch mode option for the AcpiExec utility (-b).
12439
12440Code and Data Size: Current and previous core subsystem library sizes are
12441shown below. These are the code and data sizes for the acpica.lib
12442produced
12443by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12444any ACPI driver or OSPM code. The debug version of the code includes the
12445debug output trace mechanism and has a much larger code and data size.
12446Note
12447that these values will vary depending on the efficiency of the compiler
12448and
12449the compiler options used during generation.
12450
12451  Previous Release:
12452    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
12453    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
12454  Current Release:
12455    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
12456    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
12457
12458----------------------------------------
1245910 December 2004.  Summary of changes for version 20041210:
12460
12461ACPI 3.0 support is nearing completion in both the iASL compiler and the
12462ACPI CA core subsystem.
12463
124641) ACPI CA Core Subsystem:
12465
12466Fixed a problem in the ToDecimalString operator where the resulting
12467string
12468length was incorrectly calculated. The length is now calculated exactly,
12469eliminating incorrect AE_STRING_LIMIT exceptions.
12470
12471Fixed a problem in the ToHexString operator to allow a maximum 200
12472character
12473string to be produced.
12474
12475Fixed a problem in the internal string-to-buffer and buffer-to-buffer
12476copy
12477routine where the length of the resulting buffer was not truncated to the
12478new size (if the target buffer already existed).
12479
12480Code and Data Size: Current and previous core subsystem library sizes are
12481shown below. These are the code and data sizes for the acpica.lib
12482produced
12483by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12484any ACPI driver or OSPM code. The debug version of the code includes the
12485debug output trace mechanism and has a much larger code and data size.
12486Note
12487that these values will vary depending on the efficiency of the compiler
12488and
12489the compiler options used during generation.
12490
12491  Previous Release:
12492    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
12493    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
12494  Current 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
12498
124992) iASL Compiler/Disassembler:
12500
12501Implemented the new ACPI 3.0 resource template macros - DWordSpace,
12502ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
12503Includes support in the disassembler.
12504
12505Implemented support for the new (ACPI 3.0) parameter to the Register
12506macro,
12507AccessSize.
12508
12509Fixed a problem where the _HE resource name for the Interrupt macro was
12510referencing bit 0 instead of bit 1.
12511
12512Implemented check for maximum 255 interrupts in the Interrupt macro.
12513
12514Fixed a problem with the predefined resource descriptor names where
12515incorrect AML code was generated if the offset within the resource buffer
12516was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
12517but did not update the surrounding package lengths.
12518
12519Changes to the Dma macro:  All channels within the channel list must be
12520in
12521the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
12522optional (default is BusMaster).
12523
12524Implemented check for maximum 7 data bytes for the VendorShort macro.
12525
12526The ReadWrite parameter is now optional for the Memory32 and similar
12527macros.
12528
12529----------------------------------------
1253003 December 2004.  Summary of changes for version 20041203:
12531
125321) ACPI CA Core Subsystem:
12533
12534The low-level field insertion/extraction code (exfldio) has been
12535completely
12536rewritten to eliminate unnecessary complexity, bugs, and boundary
12537conditions.
12538
12539Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
12540ToDecimalString
12541operators where the input operand could be inadvertently deleted if no
12542conversion was necessary (e.g., if the input to ToInteger was an Integer
12543object.)
12544
12545Fixed a problem with the ToDecimalString and ToHexString where an
12546incorrect
12547exception code was returned if the resulting string would be > 200 chars.
12548AE_STRING_LIMIT is now returned.
12549
12550Fixed a problem with the Concatenate operator where AE_OK was always
12551returned, even if the operation failed.
12552
12553Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
12554semaphores to be allocated.
12555
12556Code and Data Size: Current and previous core subsystem library sizes are
12557shown below. These are the code and data sizes for the acpica.lib
12558produced
12559by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12560any ACPI driver or OSPM code. The debug version of the code includes the
12561debug output trace mechanism and has a much larger code and data size.
12562Note
12563that these values will vary depending on the efficiency of the compiler
12564and
12565the compiler options used during generation.
12566
12567  Previous Release:
12568    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
12569    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
12570  Current Release:
12571    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
12572    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
12573
12574
125752) iASL Compiler/Disassembler:
12576
12577Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
12578recently introduced in 20041119.
12579
12580Fixed a problem with the ToUUID macro where the upper nybble of each
12581buffer
12582byte was inadvertently set to zero.
12583
12584----------------------------------------
1258519 November 2004.  Summary of changes for version 20041119:
12586
125871) ACPI CA Core Subsystem:
12588
12589Fixed a problem in the internal ConvertToInteger routine where new
12590integers
12591were not truncated to 32 bits for 32-bit ACPI tables. This routine
12592converts
12593buffers and strings to integers.
12594
12595Implemented support to store a value to an Index() on a String object.
12596This
12597is an ACPI 2.0 feature that had not yet been implemented.
12598
12599Implemented new behavior for storing objects to individual package
12600elements
12601(via the Index() operator). The previous behavior was to invoke the
12602implicit
12603conversion rules if an object was already present at the index.  The new
12604behavior is to simply delete any existing object and directly store the
12605new
12606object. Although the ACPI specification seems unclear on this subject,
12607other
12608ACPI implementations behave in this manner.  (This is the root of the
12609AE_BAD_HEX_CONSTANT issue.)
12610
12611Modified the RSDP memory scan mechanism to support the extended checksum
12612for
12613ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
12614RSDP signature is found with a valid checksum.
12615
12616Code and Data Size: Current and previous core subsystem library sizes are
12617shown below. These are the code and data sizes for the acpica.lib
12618produced
12619by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12620any ACPI driver or OSPM code. The debug version of the code includes the
12621debug output trace mechanism and has a much larger code and data size.
12622Note
12623that these values will vary depending on the efficiency of the compiler
12624and
12625the compiler options used during generation.
12626
12627  Previous Release:
12628    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
12629    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
12630  Current Release:
12631    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
12632    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
12633
12634
126352) iASL Compiler/Disassembler:
12636
12637Fixed a missing semicolon in the aslcompiler.y file.
12638
12639----------------------------------------
1264005 November 2004.  Summary of changes for version 20041105:
12641
126421) ACPI CA Core Subsystem:
12643
12644Implemented support for FADT revision 2.  This was an interim table
12645(between
12646ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
12647
12648Implemented optional support to allow uninitialized LocalX and ArgX
12649variables in a control method.  The variables are initialized to an
12650Integer
12651object with a value of zero.  This support is enabled by setting the
12652AcpiGbl_EnableInterpreterSlack flag to TRUE.
12653
12654Implemented support for Integer objects for the SizeOf operator.  Either
126554
12656or 8 is returned, depending on the current integer size (32-bit or 64-
12657bit,
12658depending on the parent table revision).
12659
12660Fixed a problem in the implementation of the SizeOf and ObjectType
12661operators
12662where the operand was resolved to a value too early, causing incorrect
12663return values for some objects.
12664
12665Fixed some possible memory leaks during exceptional conditions.
12666
12667Code and Data Size: Current and previous core subsystem library sizes are
12668shown below. These are the code and data sizes for the acpica.lib
12669produced
12670by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12671any ACPI driver or OSPM code. The debug version of the code includes the
12672debug output trace mechanism and has a much larger code and data size.
12673Note
12674that these values will vary depending on the efficiency of the compiler
12675and
12676the compiler options used during generation.
12677
12678  Previous Release:
12679    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
12680    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
12681  Current Release:
12682    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
12683    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
12684
12685
126862) iASL Compiler/Disassembler:
12687
12688Implemented support for all ACPI 3.0 reserved names and methods.
12689
12690Implemented all ACPI 3.0 grammar elements in the front-end, including
12691support for semicolons.
12692
12693Implemented the ACPI 3.0 Function() and ToUUID() macros
12694
12695Fixed a problem in the disassembler where a Scope() operator would not be
12696emitted properly if the target of the scope was in another table.
12697
12698----------------------------------------
1269915 October 2004.  Summary of changes for version 20041015:
12700
12701Note:  ACPI CA is currently undergoing an in-depth and complete formal
12702evaluation to test/verify the following areas. Other suggestions are
12703welcome. This will result in an increase in the frequency of releases and
12704the number of bug fixes in the next few months.
12705  - Functional tests for all ASL/AML operators
12706  - All implicit/explicit type conversions
12707  - Bit fields and operation regions
12708  - 64-bit math support and 32-bit-only "truncated" math support
12709  - Exceptional conditions, both compiler and interpreter
12710  - Dynamic object deletion and memory leaks
12711  - ACPI 3.0 support when implemented
12712  - External interfaces to the ACPI subsystem
12713
12714
127151) ACPI CA Core Subsystem:
12716
12717Fixed two alignment issues on 64-bit platforms - within debug statements
12718in
12719AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
12720Address
12721field within the non-aligned ACPI generic address structure.
12722
12723Fixed a problem in the Increment and Decrement operators where incorrect
12724operand resolution could result in the inadvertent modification of the
12725original integer when the integer is passed into another method as an
12726argument and the arg is then incremented/decremented.
12727
12728Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
12729bit
12730BCD number were truncated during conversion.
12731
12732Fixed a problem in the ToDecimal operator where the length of the
12733resulting
12734string could be set incorrectly too long if the input operand was a
12735Buffer
12736object.
12737
12738Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
12739(0)
12740within a buffer would prematurely terminate a compare between buffer
12741objects.
12742
12743Added a check for string overflow (>200 characters as per the ACPI
12744specification) during the Concatenate operator with two string operands.
12745
12746Code and Data Size: Current and previous core subsystem library sizes are
12747shown below. These are the code and data sizes for the acpica.lib
12748produced
12749by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12750any ACPI driver or OSPM code. The debug version of the code includes the
12751debug output trace mechanism and has a much larger code and data size.
12752Note
12753that these values will vary depending on the efficiency of the compiler
12754and
12755the compiler options used during generation.
12756
12757  Previous Release:
12758    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
12759    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
12760  Current Release:
12761    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
12762    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
12763
12764
12765
127662) iASL Compiler/Disassembler:
12767
12768Allow the use of the ObjectType operator on uninitialized Locals and Args
12769(returns 0 as per the ACPI specification).
12770
12771Fixed a problem where the compiler would fault if there was a syntax
12772error
12773in the FieldName of all of the various CreateXXXField operators.
12774
12775Disallow the use of lower case letters within the EISAID macro, as per
12776the
12777ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
12778Where
12779U is an uppercase letter and N is a hex digit.
12780
12781
12782----------------------------------------
1278306 October 2004.  Summary of changes for version 20041006:
12784
127851) ACPI CA Core Subsystem:
12786
12787Implemented support for the ACPI 3.0 Timer operator. This ASL function
12788implements a 64-bit timer with 100 nanosecond granularity.
12789
12790Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
12791implement the ACPI 3.0 Timer operator.  This allows the host OS to
12792implement
12793the timer with the best clock available. Also, it keeps the core
12794subsystem
12795out of the clock handling business, since the host OS (usually) performs
12796this function.
12797
12798Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
12799functions use a 64-bit address which is part of the packed ACPI Generic
12800Address Structure. Since the structure is non-aligned, the alignment
12801macros
12802are now used to extract the address to a local variable before use.
12803
12804Fixed a problem where the ToInteger operator assumed all input strings
12805were
12806hexadecimal. The operator now handles both decimal strings and hex
12807strings
12808(prefixed with "0x").
12809
12810Fixed a problem where the string length in the string object created as a
12811result of the internal ConvertToString procedure could be incorrect. This
12812potentially affected all implicit conversions and also the
12813ToDecimalString
12814and ToHexString operators.
12815
12816Fixed two problems in the ToString operator. If the length parameter was
12817zero, an incorrect string object was created and the value of the input
12818length parameter was inadvertently changed from zero to Ones.
12819
12820Fixed a problem where the optional ResourceSource string in the
12821ExtendedIRQ
12822resource macro was ignored.
12823
12824Simplified the interfaces to the internal division functions, reducing
12825code
12826size and complexity.
12827
12828Code and Data Size: Current and previous core subsystem library sizes are
12829shown below. These are the code and data sizes for the acpica.lib
12830produced
12831by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12832any ACPI driver or OSPM code. The debug version of the code includes the
12833debug output trace mechanism and has a much larger code and data size.
12834Note
12835that these values will vary depending on the efficiency of the compiler
12836and
12837the compiler options used during generation.
12838
12839  Previous Release:
12840    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
12841    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
12842  Current Release:
12843    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
12844    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
12845
12846
128472) iASL Compiler/Disassembler:
12848
12849Implemented support for the ACPI 3.0 Timer operator.
12850
12851Fixed a problem where the Default() operator was inadvertently ignored in
12852a
12853Switch/Case block.  This was a problem in the translation of the Switch
12854statement to If...Else pairs.
12855
12856Added support to allow a standalone Return operator, with no parentheses
12857(or
12858operands).
12859
12860Fixed a problem with code generation for the ElseIf operator where the
12861translated Else...If parse tree was improperly constructed leading to the
12862loss of some code.
12863
12864----------------------------------------
1286522 September 2004.  Summary of changes for version 20040922:
12866
128671) ACPI CA Core Subsystem:
12868
12869Fixed a problem with the implementation of the LNot() operator where
12870"Ones"
12871was not returned for the TRUE case. Changed the code to return Ones
12872instead
12873of (!Arg) which was usually 1. This change affects iASL constant folding
12874for
12875this operator also.
12876
12877Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
12878not
12879initialized properly -- Now zero the entire buffer in this case where the
12880buffer already exists.
12881
12882Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
12883Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
12884related code considerably. This will require changes/updates to all OS
12885interface layers (OSLs.)
12886
12887Implemented a new external interface, AcpiInstallExceptionHandler, to
12888allow
12889a system exception handler to be installed. This handler is invoked upon
12890any
12891run-time exception that occurs during control method execution.
12892
12893Added support for the DSDT in AcpiTbFindTable. This allows the
12894DataTableRegion() operator to access the local copy of the DSDT.
12895
12896Code and Data Size: Current and previous core subsystem library sizes are
12897shown below. These are the code and data sizes for the acpica.lib
12898produced
12899by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12900any ACPI driver or OSPM code. The debug version of the code includes the
12901debug output trace mechanism and has a much larger code and data size.
12902Note
12903that these values will vary depending on the efficiency of the compiler
12904and
12905the compiler options used during generation.
12906
12907  Previous Release:
12908    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
12909    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
12910  Current Release:
12911    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
12912    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
12913
12914
129152) iASL Compiler/Disassembler:
12916
12917Fixed a problem with constant folding and the LNot operator. LNot was
12918returning 1 in the TRUE case, not Ones as per the ACPI specification.
12919This
12920could result in the generation of an incorrect folded/reduced constant.
12921
12922End-Of-File is now allowed within a "//"-style comment.  A parse error no
12923longer occurs if such a comment is at the very end of the input ASL
12924source
12925file.
12926
12927Implemented the "-r" option to override the Revision in the table header.
12928The initial use of this option will be to simplify the evaluation of the
12929AML
12930interpreter by allowing a single ASL source module to be compiled for
12931either
1293232-bit or 64-bit integers.
12933
12934
12935----------------------------------------
1293627 August 2004.  Summary of changes for version 20040827:
12937
129381) ACPI CA Core Subsystem:
12939
12940- Implemented support for implicit object conversion in the non-numeric
12941logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
12942and
12943LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
12944the second operand is implicitly converted on the fly to match the type
12945of
12946the first operand.  For example:
12947
12948    LEqual (Source1, Source2)
12949
12950Source1 and Source2 must each evaluate to an integer, a string, or a
12951buffer.
12952The data type of Source1 dictates the required type of Source2. Source2
12953is
12954implicitly converted if necessary to match the type of Source1.
12955
12956- Updated and corrected the behavior of the string conversion support.
12957The
12958rules concerning conversion of buffers to strings (according to the ACPI
12959specification) are as follows:
12960
12961ToDecimalString - explicit byte-wise conversion of buffer to string of
12962decimal values (0-255) separated by commas. ToHexString - explicit byte-
12963wise
12964conversion of buffer to string of hex values (0-FF) separated by commas.
12965ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
12966byte
12967copy with no transform except NULL terminated. Any other implicit buffer-
12968to-
12969string conversion - byte-wise conversion of buffer to string of hex
12970values
12971(0-FF) separated by spaces.
12972
12973- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
12974
12975- Fixed a problem in AcpiNsGetPathnameLength where the returned length
12976was
12977one byte too short in the case of a node in the root scope.  This could
12978cause a fault during debug output.
12979
12980- Code and Data Size: Current and previous core subsystem library sizes
12981are
12982shown below.  These are the code and data sizes for the acpica.lib
12983produced
12984by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12985any ACPI driver or OSPM code.  The debug version of the code includes the
12986debug output trace mechanism and has a much larger code and data size.
12987Note
12988that these values will vary depending on the efficiency of the compiler
12989and
12990the compiler options used during generation.
12991
12992  Previous Release:
12993    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
12994    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
12995  Current Release:
12996    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
12997    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
12998
12999
130002) iASL Compiler/Disassembler:
13001
13002- Fixed a Linux generation error.
13003
13004
13005----------------------------------------
1300616 August 2004.  Summary of changes for version 20040816:
13007
130081) ACPI CA Core Subsystem:
13009
13010Designed and implemented support within the AML interpreter for the so-
13011called "implicit return".  This support returns the result of the last
13012ASL
13013operation within a control method, in the absence of an explicit Return()
13014operator.  A few machines depend on this behavior, even though it is not
13015explicitly supported by the ASL language.  It is optional support that
13016can
13017be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
13018
13019Removed support for the PCI_Config address space from the internal low
13020level
13021hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
13022support was not used internally, and would not work correctly anyway
13023because
13024the PCI bus number and segment number were not supported.  There are
13025separate interfaces for PCI configuration space access because of the
13026unique
13027interface.
13028
13029Code and Data Size: Current and previous core subsystem library sizes are
13030shown below.  These are the code and data sizes for the acpica.lib
13031produced
13032by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13033any ACPI driver or OSPM code.  The debug version of the code includes the
13034debug output trace mechanism and has a much larger code and data size.
13035Note
13036that these values will vary depending on the efficiency of the compiler
13037and
13038the compiler options used during generation.
13039
13040  Previous Release:
13041    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13042    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
13043  Current Release:
13044    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
13045    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
13046
13047
130482) iASL Compiler/Disassembler:
13049
13050Fixed a problem where constants in ASL expressions at the root level (not
13051within a control method) could be inadvertently truncated during code
13052generation.  This problem was introduced in the 20040715 release.
13053
13054
13055----------------------------------------
1305615 July 2004.  Summary of changes for version 20040715:
13057
130581) ACPI CA Core Subsystem:
13059
13060Restructured the internal HW GPE interfaces to pass/track the current
13061state
13062of interrupts (enabled/disabled) in order to avoid possible deadlock and
13063increase flexibility of the interfaces.
13064
13065Implemented a "lexicographical compare" for String and Buffer objects
13066within
13067the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
13068-
13069as per further clarification to the ACPI specification.  Behavior is
13070similar
13071to C library "strcmp".
13072
13073Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
13074external function.  In the 32-bit non-debug case, the stack use has been
13075reduced from 168 bytes to 32 bytes.
13076
13077Deployed a new run-time configuration flag,
13078AcpiGbl_EnableInterpreterSlack,
13079whose purpose is to allow the AML interpreter to forgive certain bad AML
13080constructs.  Default setting is FALSE.
13081
13082Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
13083IO
13084support code.  If enabled, it allows field access to go beyond the end of
13085a
13086region definition if the field is within the region length rounded up to
13087the
13088next access width boundary (a common coding error.)
13089
13090Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
13091ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
13092these
13093symbols are lowercased by the latest version of the AcpiSrc tool.
13094
13095The prototypes for the PCI interfaces in acpiosxf.h have been updated to
13096rename "Register" to simply "Reg" to prevent certain compilers from
13097complaining.
13098
13099Code and Data Size: Current and previous core subsystem library sizes are
13100shown below.  These are the code and data sizes for the acpica.lib
13101produced
13102by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13103any ACPI driver or OSPM code.  The debug version of the code includes the
13104debug output trace mechanism and has a much larger code and data size.
13105Note
13106that these values will vary depending on the efficiency of the compiler
13107and
13108the compiler options used during generation.
13109
13110  Previous Release:
13111    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13112    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
13113  Current Release:
13114    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13115    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
13116
13117
131182) iASL Compiler/Disassembler:
13119
13120Implemented full support for Package objects within the Case() operator.
13121Note: The Break() operator is currently not supported within Case blocks
13122(TermLists) as there is some question about backward compatibility with
13123ACPI
131241.0 interpreters.
13125
13126
13127Fixed a problem where complex terms were not supported properly within
13128the
13129Switch() operator.
13130
13131Eliminated extraneous warning for compiler-emitted reserved names of the
13132form "_T_x".  (Used in Switch/Case operators.)
13133
13134Eliminated optimization messages for "_T_x" objects and small constants
13135within the DefinitionBlock operator.
13136
13137
13138----------------------------------------
1313915 June 2004.  Summary of changes for version 20040615:
13140
131411) ACPI CA Core Subsystem:
13142
13143Implemented support for Buffer and String objects (as per ACPI 2.0) for
13144the
13145following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
13146LLessEqual.
13147
13148All directory names in the entire source package are lower case, as they
13149were in earlier releases.
13150
13151Implemented "Disassemble" command in the AML debugger that will
13152disassemble
13153a single control method.
13154
13155Code and Data Size: Current and previous core subsystem library sizes are
13156shown below.  These are the code and data sizes for the acpica.lib
13157produced
13158by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13159any ACPI driver or OSPM code.  The debug version of the code includes the
13160debug output trace mechanism and has a much larger code and data size.
13161Note
13162that these values will vary depending on the efficiency of the compiler
13163and
13164the compiler options used during generation.
13165
13166  Previous Release:
13167    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
13168    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
13169
13170  Current Release:
13171    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13172    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
13173
13174
131752) iASL Compiler/Disassembler:
13176
13177Implemented support for Buffer and String objects (as per ACPI 2.0) for
13178the
13179following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
13180LLessEqual.
13181
13182All directory names in the entire source package are lower case, as they
13183were in earlier releases.
13184
13185Fixed a fault when using the -g or -d<nofilename> options if the FADT was
13186not found.
13187
13188Fixed an issue with the Windows version of the compiler where later
13189versions
13190of Windows place the FADT in the registry under the name "FADT" and not
13191"FACP" as earlier versions did.  This applies when using the -g or -
13192d<nofilename> options.  The compiler now looks for both strings as
13193necessary.
13194
13195Fixed a problem with compiler namepath optimization where a namepath
13196within
13197the Scope() operator could not be optimized if the namepath was a subpath
13198of
13199the current scope path.
13200
13201----------------------------------------
1320227 May 2004.  Summary of changes for version 20040527:
13203
132041) ACPI CA Core Subsystem:
13205
13206Completed a new design and implementation for EBDA (Extended BIOS Data
13207Area)
13208support in the RSDP scan code.  The original code improperly scanned for
13209the
13210EBDA by simply scanning from memory location 0 to 0x400.  The correct
13211method
13212is to first obtain the EBDA pointer from within the BIOS data area, then
13213scan 1K of memory starting at the EBDA pointer.  There appear to be few
13214if
13215any machines that place the RSDP in the EBDA, however.
13216
13217Integrated a fix for a possible fault during evaluation of BufferField
13218arguments.  Obsolete code that was causing the problem was removed.
13219
13220Found and fixed a problem in the Field Support Code where data could be
13221corrupted on a bit field read that starts on an aligned boundary but does
13222not end on an aligned boundary.  Merged the read/write "datum length"
13223calculation code into a common procedure.
13224
13225Rolled in a couple of changes to the FreeBSD-specific header.
13226
13227
13228Code and Data Size: Current and previous core subsystem library sizes are
13229shown below.  These are the code and data sizes for the acpica.lib
13230produced
13231by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13232any ACPI driver or OSPM code.  The debug version of the code includes the
13233debug output trace mechanism and has a much larger code and data size.
13234Note
13235that these values will vary depending on the efficiency of the compiler
13236and
13237the compiler options used during generation.
13238
13239  Previous Release:
13240    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
13241    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
13242  Current Release:
13243    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
13244    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
13245
13246
132472) iASL Compiler/Disassembler:
13248
13249Fixed a generation warning produced by some overly-verbose compilers for
13250a
1325164-bit constant.
13252
13253----------------------------------------
1325414 May 2004.  Summary of changes for version 20040514:
13255
132561) ACPI CA Core Subsystem:
13257
13258Fixed a problem where hardware GPE enable bits sometimes not set properly
13259during and after GPE method execution.  Result of 04/27 changes.
13260
13261Removed extra "clear all GPEs" when sleeping/waking.
13262
13263Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
13264AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
13265to
13266the new AcpiEv* calls as appropriate.
13267
13268ACPI_OS_NAME was removed from the OS-specific headers.  The default name
13269is
13270now "Microsoft Windows NT" for maximum compatibility.  However this can
13271be
13272changed by modifying the acconfig.h file.
13273
13274Allow a single invocation of AcpiInstallNotifyHandler for a handler that
13275traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
13276
13277Run _INI methods on ThermalZone objects.  This is against the ACPI
13278specification, but there is apparently ASL code in the field that has
13279these
13280_INI methods, and apparently "other" AML interpreters execute them.
13281
13282Performed a full 16/32/64 bit lint that resulted in some small changes.
13283
13284Added a sleep simulation command to the AML debugger to test sleep code.
13285
13286Code and Data Size: Current and previous core subsystem library sizes are
13287shown below.  These are the code and data sizes for the acpica.lib
13288produced
13289by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13290any ACPI driver or OSPM code.  The debug version of the code includes the
13291debug output trace mechanism and has a much larger code and data size.
13292Note
13293that these values will vary depending on the efficiency of the compiler
13294and
13295the compiler options used during generation.
13296
13297  Previous Release:
13298    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
13299    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
13300  Current Release:
13301    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
13302    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
13303
13304----------------------------------------
1330527 April 2004.  Summary of changes for version 20040427:
13306
133071) ACPI CA Core Subsystem:
13308
13309Completed a major overhaul of the GPE handling within ACPI CA.  There are
13310now three types of GPEs:  wake-only, runtime-only, and combination
13311wake/run.
13312The only GPEs allowed to be combination wake/run are for button-style
13313devices such as a control-method power button, control-method sleep
13314button,
13315or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
13316not
13317referenced by any _PRW methods are marked for "runtime" and hardware
13318enabled.  Any GPE that is referenced by a _PRW method is marked for
13319"wake"
13320(and disabled at runtime).  However, at sleep time, only those GPEs that
13321have been specifically enabled for wake via the AcpiEnableGpe interface
13322will
13323actually be hardware enabled.
13324
13325A new external interface has been added, AcpiSetGpeType(), that is meant
13326to
13327be used by device drivers to force a GPE to a particular type.  It will
13328be
13329especially useful for the drivers for the button devices mentioned above.
13330
13331Completed restructuring of the ACPI CA initialization sequence so that
13332default operation region handlers are installed before GPEs are
13333initialized
13334and the _PRW methods are executed.  This will prevent errors when the
13335_PRW
13336methods attempt to access system memory or I/O space.
13337
13338GPE enable/disable no longer reads the GPE enable register.  We now keep
13339the
13340enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
13341thus no longer depend on the hardware to maintain these bits.
13342
13343Always clear the wake status and fixed/GPE status bits before sleep, even
13344for state S5.
13345
13346Improved the AML debugger output for displaying the GPE blocks and their
13347current status.
13348
13349Added new strings for the _OSI method, of the form "Windows 2001 SPx"
13350where
13351x = 0,1,2,3,4.
13352
13353Fixed a problem where the physical address was incorrectly calculated
13354when
13355the Load() operator was used to directly load from an Operation Region
13356(vs.
13357loading from a Field object.)  Also added check for minimum table length
13358for
13359this case.
13360
13361Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
13362mutex release.
13363
13364Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
13365consistency with the other fields returned.
13366
13367Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
13368structure for each GPE in the system, so the size of this structure is
13369important.
13370
13371CPU stack requirement reduction:  Cleaned up the method execution and
13372object
13373evaluation paths so that now a parameter structure is passed, instead of
13374copying the various method parameters over and over again.
13375
13376In evregion.c:  Correctly exit and reenter the interpreter region if and
13377only if dispatching an operation region request to a user-installed
13378handler.
13379Do not exit/reenter when dispatching to a default handler (e.g., default
13380system memory or I/O handlers)
13381
13382
13383Notes for updating drivers for the new GPE support.  The following
13384changes
13385must be made to ACPI-related device drivers that are attached to one or
13386more
13387GPEs: (This information will be added to the ACPI CA Programmer
13388Reference.)
13389
133901) AcpiInstallGpeHandler no longer automatically enables the GPE, you
13391must
13392explicitly call AcpiEnableGpe.
133932) There is a new interface called AcpiSetGpeType. This should be called
13394before enabling the GPE.  Also, this interface will automatically disable
13395the GPE if it is currently enabled.
133963) AcpiEnableGpe no longer supports a GPE type flag.
13397
13398Specific drivers that must be changed:
133991) EC driver:
13400    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
13401AeGpeHandler, NULL);
13402    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
13403    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
13404
134052) Button Drivers (Power, Lid, Sleep):
13406Run _PRW method under parent device
13407If _PRW exists: /* This is a control-method button */
13408    Extract GPE number and possibly GpeDevice
13409    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
13410    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
13411
13412For all other devices that have _PRWs, we automatically set the GPE type
13413to
13414ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
13415This
13416must be done on a selective basis, usually requiring some kind of user
13417app
13418to allow the user to pick the wake devices.
13419
13420
13421Code and Data Size: Current and previous core subsystem library sizes are
13422shown below.  These are the code and data sizes for the acpica.lib
13423produced
13424by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13425any ACPI driver or OSPM code.  The debug version of the code includes the
13426debug output trace mechanism and has a much larger code and data size.
13427Note
13428that these values will vary depending on the efficiency of the compiler
13429and
13430the compiler options used during generation.
13431
13432  Previous Release:
13433    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
13434    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
13435  Current Release:
13436
13437    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
13438    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
13439
13440
13441
13442----------------------------------------
1344302 April 2004.  Summary of changes for version 20040402:
13444
134451) ACPI CA Core Subsystem:
13446
13447Fixed an interpreter problem where an indirect store through an ArgX
13448parameter was incorrectly applying the "implicit conversion rules" during
13449the store.  From the ACPI specification: "If the target is a method local
13450or
13451argument (LocalX or ArgX), no conversion is performed and the result is
13452stored directly to the target".  The new behavior is to disable implicit
13453conversion during ALL stores to an ArgX.
13454
13455Changed the behavior of the _PRW method scan to ignore any and all errors
13456returned by a given _PRW.  This prevents the scan from aborting from the
13457failure of any single _PRW.
13458
13459Moved the runtime configuration parameters from the global init procedure
13460to
13461static variables in acglobal.h.  This will allow the host to override the
13462default values easily.
13463
13464Code and Data Size: Current and previous core subsystem library sizes are
13465shown below.  These are the code and data sizes for the acpica.lib
13466produced
13467by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13468any ACPI driver or OSPM code.  The debug version of the code includes the
13469debug output trace mechanism and has a much larger code and data size.
13470Note
13471that these values will vary depending on the efficiency of the compiler
13472and
13473the compiler options used during generation.
13474
13475  Previous Release:
13476    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
13477    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
13478  Current Release:
13479    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
13480    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
13481
13482
134832) iASL Compiler/Disassembler:
13484
13485iASL now fully disassembles SSDTs.  However, External() statements are
13486not
13487generated automatically for unresolved symbols at this time.  This is a
13488planned feature for future implementation.
13489
13490Fixed a scoping problem in the disassembler that occurs when the type of
13491the
13492target of a Scope() operator is overridden.  This problem caused an
13493incorrectly nested internal namespace to be constructed.
13494
13495Any warnings or errors that are emitted during disassembly are now
13496commented
13497out automatically so that the resulting file can be recompiled without
13498any
13499hand editing.
13500
13501----------------------------------------
1350226 March 2004.  Summary of changes for version 20040326:
13503
135041) ACPI CA Core Subsystem:
13505
13506Implemented support for "wake" GPEs via interaction between GPEs and the
13507_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
13508identified as a WAKE GPE and by default will no longer be enabled at
13509runtime.  Previously, we were blindly enabling all GPEs with a
13510corresponding
13511_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
13512We
13513believe this has been the cause of thousands of "spurious" GPEs on some
13514systems.
13515
13516This new GPE behavior is can be reverted to the original behavior (enable
13517ALL GPEs at runtime) via a runtime flag.
13518
13519Fixed a problem where aliased control methods could not access objects
13520properly.  The proper scope within the namespace was not initialized
13521(transferred to the target of the aliased method) before executing the
13522target method.
13523
13524Fixed a potential race condition on internal object deletion on the
13525return
13526object in AcpiEvaluateObject.
13527
13528Integrated a fix for resource descriptors where both _MEM and _MTP were
13529being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
13530wide, 0x0F instead of 0x03.)
13531
13532Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
13533preventing
13534a
13535fault in some cases.
13536
13537Updated Notify() values for debug statements in evmisc.c
13538
13539Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
13540
13541Code and Data Size: Current and previous core subsystem library sizes are
13542shown below.  These are the code and data sizes for the acpica.lib
13543produced
13544by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13545any ACPI driver or OSPM code.  The debug version of the code includes the
13546debug output trace mechanism and has a much larger code and data size.
13547Note
13548that these values will vary depending on the efficiency of the compiler
13549and
13550the compiler options used during generation.
13551
13552  Previous Release:
13553
13554    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
13555    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
13556  Current Release:
13557    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
13558    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
13559
13560----------------------------------------
1356111 March 2004.  Summary of changes for version 20040311:
13562
135631) ACPI CA Core Subsystem:
13564
13565Fixed a problem where errors occurring during the parse phase of control
13566method execution did not abort cleanly.  For example, objects created and
13567installed in the namespace were not deleted.  This caused all subsequent
13568invocations of the method to return the AE_ALREADY_EXISTS exception.
13569
13570Implemented a mechanism to force a control method to "Serialized"
13571execution
13572if the method attempts to create namespace objects. (The root of the
13573AE_ALREADY_EXISTS problem.)
13574
13575Implemented support for the predefined _OSI "internal" control method.
13576Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
13577and
13578"Windows 2001.1", and can be easily upgraded for new strings as
13579necessary.
13580This feature will allow "other" operating systems to execute the fully
13581tested, "Windows" code path through the ASL code
13582
13583Global Lock Support:  Now allows multiple acquires and releases with any
13584internal thread.  Removed concept of "owning thread" for this special
13585mutex.
13586
13587Fixed two functions that were inappropriately declaring large objects on
13588the
13589CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
13590during
13591method execution considerably.
13592
13593Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
13594S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
13595
13596Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
13597defined on the machine.
13598
13599Implemented two runtime options:  One to force all control method
13600execution
13601to "Serialized" to mimic Windows behavior, another to disable _OSI
13602support
13603if it causes problems on a given machine.
13604
13605Code and Data Size: Current and previous core subsystem library sizes are
13606shown below.  These are the code and data sizes for the acpica.lib
13607produced
13608by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13609any ACPI driver or OSPM code.  The debug version of the code includes the
13610debug output trace mechanism and has a much larger code and data size.
13611Note
13612that these values will vary depending on the efficiency of the compiler
13613and
13614the compiler options used during generation.
13615
13616  Previous Release:
13617    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
13618    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
13619  Current Release:
13620    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
13621    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
13622
136232) iASL Compiler/Disassembler:
13624
13625Fixed an array size problem for FreeBSD that would cause the compiler to
13626fault.
13627
13628----------------------------------------
1362920 February 2004.  Summary of changes for version 20040220:
13630
13631
136321) ACPI CA Core Subsystem:
13633
13634Implemented execution of _SxD methods for Device objects in the
13635GetObjectInfo interface.
13636
13637Fixed calls to _SST method to pass the correct arguments.
13638
13639Added a call to _SST on wake to restore to "working" state.
13640
13641Check for End-Of-Buffer failure case in the WalkResources interface.
13642
13643Integrated fix for 64-bit alignment issue in acglobal.h by moving two
13644structures to the beginning of the file.
13645
13646After wake, clear GPE status register(s) before enabling GPEs.
13647
13648After wake, clear/enable power button.  (Perhaps we should clear/enable
13649all
13650fixed events upon wake.)
13651
13652Fixed a couple of possible memory leaks in the Namespace manager.
13653
13654Integrated latest acnetbsd.h file.
13655
13656----------------------------------------
1365711 February 2004.  Summary of changes for version 20040211:
13658
13659
136601) ACPI CA Core Subsystem:
13661
13662Completed investigation and implementation of the call-by-reference
13663mechanism for control method arguments.
13664
13665Fixed a problem where a store of an object into an indexed package could
13666fail if the store occurs within a different method than the method that
13667created the package.
13668
13669Fixed a problem where the ToDecimal operator could return incorrect
13670results.
13671
13672Fixed a problem where the CopyObject operator could fail on some of the
13673more
13674obscure objects (e.g., Reference objects.)
13675
13676Improved the output of the Debug object to display buffer, package, and
13677index objects.
13678
13679Fixed a problem where constructs of the form "RefOf (ArgX)" did not
13680return
13681the expected result.
13682
13683Added permanent ACPI_REPORT_ERROR macros for all instances of the
13684ACPI_AML_INTERNAL exception.
13685
13686Integrated latest version of acfreebsd.h
13687
13688----------------------------------------
1368916 January 2004.  Summary of changes for version 20040116:
13690
13691The purpose of this release is primarily to update the copyright years in
13692each module, thus causing a huge number of diffs.  There are a few small
13693functional changes, however.
13694
136951) ACPI CA Core Subsystem:
13696
13697Improved error messages when there is a problem finding one or more of
13698the
13699required base ACPI tables
13700
13701Reintroduced the definition of APIC_HEADER in actbl.h
13702
13703Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
13704
13705Removed extraneous reference to NewObj in dsmthdat.c
13706
137072) iASL compiler
13708
13709Fixed a problem introduced in December that disabled the correct
13710disassembly
13711of Resource Templates
13712
13713
13714----------------------------------------
1371503 December 2003.  Summary of changes for version 20031203:
13716
137171) ACPI CA Core Subsystem:
13718
13719Changed the initialization of Operation Regions during subsystem
13720init to perform two entire walks of the ACPI namespace; The first
13721to initialize the regions themselves, the second to execute the
13722_REG methods.  This fixed some interdependencies across _REG
13723methods found on some machines.
13724
13725Fixed a problem where a Store(Local0, Local1) could simply update
13726the object reference count, and not create a new copy of the
13727object if the Local1 is uninitialized.
13728
13729Implemented support for the _SST reserved method during sleep
13730transitions.
13731
13732Implemented support to clear the SLP_TYP and SLP_EN bits when
13733waking up, this is apparently required by some machines.
13734
13735When sleeping, clear the wake status only if SleepState is not S5.
13736
13737Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
13738pointer arithmetic advanced a string pointer too far.
13739
13740Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
13741could be returned if the requested table has not been loaded.
13742
13743Within the support for IRQ resources, restructured the handling of
13744the active and edge/level bits.
13745
13746Fixed a few problems in AcpiPsxExecute() where memory could be
13747leaked under certain error conditions.
13748
13749Improved error messages for the cases where the ACPI mode could
13750not be entered.
13751
13752Code and Data Size: Current and previous core subsystem library
13753sizes are shown below.  These are the code and data sizes for the
13754acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13755these values do not include any ACPI driver or OSPM code.  The
13756debug version of the code includes the debug output trace
13757mechanism and has a much larger code and data size.  Note that
13758these values will vary depending on the efficiency of the compiler
13759and the compiler options used during generation.
13760
13761  Previous Release (20031029):
13762    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
13763    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
13764  Current Release:
13765    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
13766    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
13767
137682) iASL Compiler/Disassembler:
13769
13770Implemented a fix for the iASL disassembler where a bad index was
13771generated.  This was most noticeable on 64-bit platforms
13772
13773
13774----------------------------------------
1377529 October 2003.  Summary of changes for version 20031029:
13776
137771) ACPI CA Core Subsystem:
13778
13779
13780Fixed a problem where a level-triggered GPE with an associated
13781_Lxx control method was incorrectly cleared twice.
13782
13783Fixed a problem with the Field support code where an access can
13784occur beyond the end-of-region if the field is non-aligned but
13785extends to the very end of the parent region (resulted in an
13786AE_AML_REGION_LIMIT exception.)
13787
13788Fixed a problem with ACPI Fixed Events where an RT Clock handler
13789would not get invoked on an RTC event.  The RTC event bitmasks for
13790the PM1 registers were not being initialized properly.
13791
13792Implemented support for executing _STA and _INI methods for
13793Processor objects.  Although this is currently not part of the
13794ACPI specification, there is existing ASL code that depends on the
13795init-time execution of these methods.
13796
13797Implemented and deployed a GetDescriptorName function to decode
13798the various types of internal descriptors.  Guards against null
13799descriptors during debug output also.
13800
13801Implemented and deployed a GetNodeName function to extract the 4-
13802character namespace node name.  This function simplifies the debug
13803and error output, as well as guarding against null pointers during
13804output.
13805
13806Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
13807simplify the debug and error output of 64-bit integers.  This
13808macro replaces the HIDWORD and LODWORD macros for dumping these
13809integers.
13810
13811Updated the implementation of the Stall() operator to only call
13812AcpiOsStall(), and also return an error if the operand is larger
13813than 255.  This preserves the required behavior of not
13814relinquishing the processor, as would happen if AcpiOsSleep() was
13815called for "long stalls".
13816
13817Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
13818initialized are now treated as NOOPs.
13819
13820Cleaned up a handful of warnings during 64-bit generation.
13821
13822Fixed a reported error where and incorrect GPE number was passed
13823to the GPE dispatch handler.  This value is only used for error
13824output, however.  Used this opportunity to clean up and streamline
13825the GPE dispatch code.
13826
13827Code and Data Size: Current and previous core subsystem library
13828sizes are shown below.  These are the code and data sizes for the
13829acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13830these values do not include any ACPI driver or OSPM code.  The
13831
13832debug version of the code includes the debug output trace
13833mechanism and has a much larger code and data size.  Note that
13834these values will vary depending on the efficiency of the compiler
13835and the compiler options used during generation.
13836
13837  Previous Release (20031002):
13838    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
13839    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
13840  Current Release:
13841    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
13842    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
13843
13844
138452) iASL Compiler/Disassembler:
13846
13847Updated the iASL compiler to return an error if the operand to the
13848Stall() operator is larger than 255.
13849
13850
13851----------------------------------------
1385202 October 2003.  Summary of changes for version 20031002:
13853
13854
138551) ACPI CA Core Subsystem:
13856
13857Fixed a problem with Index Fields where the index was not
13858incremented for fields that require multiple writes to the
13859index/data registers (Fields that are wider than the data
13860register.)
13861
13862Fixed a problem with all Field objects where a write could go
13863beyond the end-of-field if the field was larger than the access
13864granularity and therefore required multiple writes to complete the
13865request.  An extra write beyond the end of the field could happen
13866inadvertently.
13867
13868Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
13869would incorrectly be returned if the width of the Data Register
13870was larger than the specified field access width.
13871
13872Completed fixes for LoadTable() and Unload() and verified their
13873operation.  Implemented full support for the "DdbHandle" object
13874throughout the ACPI CA subsystem.
13875
13876Implemented full support for the MADT and ECDT tables in the ACPI
13877CA header files.  Even though these tables are not directly
13878consumed by ACPI CA, the header definitions are useful for ACPI
13879device drivers.
13880
13881Integrated resource descriptor fixes posted to the Linux ACPI
13882list.  This included checks for minimum descriptor length, and
13883support for trailing NULL strings within descriptors that have
13884optional string elements.
13885
13886Code and Data Size: Current and previous core subsystem library
13887sizes are shown below.  These are the code and data sizes for the
13888acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13889these values do not include any ACPI driver or OSPM code.  The
13890debug version of the code includes the debug output trace
13891mechanism and has a much larger code and data size.  Note that
13892these values will vary depending on the efficiency of the compiler
13893and the compiler options used during generation.
13894
13895  Previous Release (20030918):
13896    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
13897    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
13898  Current Release:
13899    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
13900    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
13901
13902
139032) iASL Compiler:
13904
13905Implemented detection of non-ASCII characters within the input
13906source ASL file.  This catches attempts to compile binary (AML)
13907files early in the compile, with an informative error message.
13908
13909Fixed a problem where the disassembler would fault if the output
13910filename could not be generated or if the output file could not be
13911opened.
13912
13913----------------------------------------
1391418 September 2003.  Summary of changes for version 20030918:
13915
13916
139171) ACPI CA Core Subsystem:
13918
13919Found and fixed a longstanding problem with the late execution of
13920the various deferred AML opcodes (such as Operation Regions,
13921Buffer Fields, Buffers, and Packages).  If the name string
13922specified for the name of the new object placed the object in a
13923scope other than the current scope, the initialization/execution
13924of the opcode failed.  The solution to this problem was to
13925implement a mechanism where the late execution of such opcodes
13926does not attempt to lookup/create the name a second time in an
13927incorrect scope.  This fixes the "region size computed
13928incorrectly" problem.
13929
13930Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
13931Global Lock AE_BAD_PARAMETER error.
13932
13933Fixed several 64-bit issues with prototypes, casting and data
13934types.
13935
13936Removed duplicate prototype from acdisasm.h
13937
13938Fixed an issue involving EC Operation Region Detach (Shaohua Li)
13939
13940Code and Data Size: Current and previous core subsystem library
13941sizes are shown below.  These are the code and data sizes for the
13942acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
13943these values do not include any ACPI driver or OSPM code.  The
13944debug version of the code includes the debug output trace
13945mechanism and has a much larger code and data size.  Note that
13946these values will vary depending on the efficiency of the compiler
13947and the compiler options used during generation.
13948
13949  Previous Release:
13950
13951    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
13952    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
13953  Current Release:
13954    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
13955    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
13956
13957
139582) Linux:
13959
13960Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
13961correct sleep time in seconds.
13962
13963----------------------------------------
1396414 July 2003.  Summary of changes for version 20030619:
13965
139661) ACPI CA Core Subsystem:
13967
13968Parse SSDTs in order discovered, as opposed to reverse order
13969(Hrvoje Habjanic)
13970
13971Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
13972Klausner,
13973   Nate Lawson)
13974
13975
139762) Linux:
13977
13978Dynamically allocate SDT list (suggested by Andi Kleen)
13979
13980proc function return value cleanups (Andi Kleen)
13981
13982Correctly handle NMI watchdog during long stalls (Andrew Morton)
13983
13984Make it so acpismp=force works (reported by Andrew Morton)
13985
13986
13987----------------------------------------
1398819 June 2003.  Summary of changes for version 20030619:
13989
139901) ACPI CA Core Subsystem:
13991
13992Fix To/FromBCD, eliminating the need for an arch-specific #define.
13993
13994Do not acquire a semaphore in the S5 shutdown path.
13995
13996Fix ex_digits_needed for 0. (Takayoshi Kochi)
13997
13998Fix sleep/stall code reversal. (Andi Kleen)
13999
14000Revert a change having to do with control method calling
14001semantics.
14002
140032) Linux:
14004
14005acpiphp update (Takayoshi Kochi)
14006
14007Export acpi_disabled for sonypi (Stelian Pop)
14008
14009Mention acpismp=force in config help
14010
14011Re-add acpitable.c and acpismp=force. This improves backwards
14012
14013compatibility and also cleans up the code to a significant degree.
14014
14015Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
14016
14017----------------------------------------
1401822 May 2003.  Summary of changes for version 20030522:
14019
140201) ACPI CA Core Subsystem:
14021
14022Found and fixed a reported problem where an AE_NOT_FOUND error
14023occurred occasionally during _BST evaluation.  This turned out to
14024be an Owner ID allocation issue where a called method did not get
14025a new ID assigned to it.  Eventually, (after 64k calls), the Owner
14026ID UINT16 would wraparound so that the ID would be the same as the
14027caller's and the called method would delete the caller's
14028namespace.
14029
14030Implemented extended error reporting for control methods that are
14031aborted due to a run-time exception.  Output includes the exact
14032AML instruction that caused the method abort, a dump of the method
14033locals and arguments at the time of the abort, and a trace of all
14034nested control method calls.
14035
14036Modified the interpreter to allow the creation of buffers of zero
14037length from the AML code. Implemented new code to ensure that no
14038attempt is made to actually allocate a memory buffer (of length
14039zero) - instead, a simple buffer object with a NULL buffer pointer
14040and length zero is created.  A warning is no longer issued when
14041the AML attempts to create a zero-length buffer.
14042
14043Implemented a workaround for the "leading asterisk issue" in
14044_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
14045asterisk is automatically removed if present in any HID, UID, or
14046CID strings.  The iASL compiler will still flag this asterisk as
14047an error, however.
14048
14049Implemented full support for _CID methods that return a package of
14050multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
14051now additionally returns a device _CID list if present.  This
14052required a change to the external interface in order to pass an
14053ACPI_BUFFER object as a parameter since the _CID list is of
14054variable length.
14055
14056Fixed a problem with the new AE_SAME_HANDLER exception where
14057handler initialization code did not know about this exception.
14058
14059Code and Data Size: Current and previous core subsystem library
14060sizes are shown below.  These are the code and data sizes for the
14061acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14062these values do not include any ACPI driver or OSPM code.  The
14063debug version of the code includes the debug output trace
14064mechanism and has a much larger code and data size.  Note that
14065these values will vary depending on the efficiency of the compiler
14066and the compiler options used during generation.
14067
14068  Previous Release (20030509):
14069    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
14070    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
14071  Current Release:
14072    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
14073    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
14074
14075
140762) Linux:
14077
14078Fixed a bug in which we would reinitialize the ACPI interrupt
14079after it was already working, thus disabling all ACPI and the IRQs
14080for any other device sharing the interrupt. (Thanks to Stian
14081Jordet)
14082
14083Toshiba driver update (John Belmonte)
14084
14085Return only 0 or 1 for our interrupt handler status (Andrew
14086Morton)
14087
14088
140893) iASL Compiler:
14090
14091Fixed a reported problem where multiple (nested) ElseIf()
14092statements were not handled correctly by the compiler, resulting
14093in incorrect warnings and incorrect AML code.  This was a problem
14094in both the ASL parser and the code generator.
14095
14096
140974) Documentation:
14098
14099Added changes to existing interfaces, new exception codes, and new
14100text concerning reference count object management versus garbage
14101collection.
14102
14103----------------------------------------
1410409 May 2003.  Summary of changes for version 20030509.
14105
14106
141071) ACPI CA Core Subsystem:
14108
14109Changed the subsystem initialization sequence to hold off
14110installation of address space handlers until the hardware has been
14111initialized and the system has entered ACPI mode.  This is because
14112the installation of space handlers can cause _REG methods to be
14113run.  Previously, the _REG methods could potentially be run before
14114ACPI mode was enabled.
14115
14116Fixed some memory leak issues related to address space handler and
14117notify handler installation.  There were some problems with the
14118reference count mechanism caused by the fact that the handler
14119objects are shared across several namespace objects.
14120
14121Fixed a reported problem where reference counts within the
14122namespace were not properly updated when named objects created by
14123method execution were deleted.
14124
14125Fixed a reported problem where multiple SSDTs caused a deletion
14126issue during subsystem termination.  Restructured the table data
14127structures to simplify the linked lists and the related code.
14128
14129Fixed a problem where the table ID associated with secondary
14130tables (SSDTs) was not being propagated into the namespace objects
14131created by those tables.  This would only present a problem for
14132tables that are unloaded at run-time, however.
14133
14134Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
14135type as the length parameter (instead of UINT32).
14136
14137Solved a long-standing problem where an ALREADY_EXISTS error
14138appears on various systems.  This problem could happen when there
14139are multiple PCI_Config operation regions under a single PCI root
14140bus.  This doesn't happen very frequently, but there are some
14141systems that do this in the ASL.
14142
14143Fixed a reported problem where the internal DeleteNode function
14144was incorrectly handling the case where a namespace node was the
14145first in the parent's child list, and had additional peers (not
14146the only child, but first in the list of children.)
14147
14148Code and Data Size: Current core subsystem library sizes are shown
14149below.  These are the code and data sizes for the acpica.lib
14150produced by the Microsoft Visual C++ 6.0 compiler, and these
14151values do not include any ACPI driver or OSPM code.  The debug
14152version of the code includes the debug output trace mechanism and
14153has a much larger code and data size.  Note that these values will
14154vary depending on the efficiency of the compiler and the compiler
14155options used during generation.
14156
14157  Previous Release
14158    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
14159    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
14160  Current Release:
14161    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
14162    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
14163
14164
141652) Linux:
14166
14167Allow ":" in OS override string (Ducrot Bruno)
14168
14169Kobject fix (Greg KH)
14170
14171
141723 iASL Compiler/Disassembler:
14173
14174Fixed a problem in the generation of the C source code files (AML
14175is emitted in C source statements for BIOS inclusion) where the
14176Ascii dump that appears within a C comment at the end of each line
14177could cause a compile time error if the AML sequence happens to
14178have an open comment or close comment sequence embedded.
14179
14180
14181----------------------------------------
1418224 April 2003.  Summary of changes for version 20030424.
14183
14184
141851) ACPI CA Core Subsystem:
14186
14187Support for big-endian systems has been implemented.  Most of the
14188support has been invisibly added behind big-endian versions of the
14189ACPI_MOVE_* macros.
14190
14191Fixed a problem in AcpiHwDisableGpeBlock() and
14192AcpiHwClearGpeBlock() where an incorrect offset was passed to the
14193low level hardware write routine.  The offset parameter was
14194actually eliminated from the low level read/write routines because
14195they had become obsolete.
14196
14197Fixed a problem where a handler object was deleted twice during
14198the removal of a fixed event handler.
14199
14200
142012) Linux:
14202
14203A fix for SMP systems with link devices was contributed by
14204
14205Compaq's Dan Zink.
14206
14207(2.5) Return whether we handled the interrupt in our IRQ handler.
14208(Linux ISRs no longer return void, so we can propagate the handler
14209return value from the ACPI CA core back to the OS.)
14210
14211
14212
142133) Documentation:
14214
14215The ACPI CA Programmer Reference has been updated to reflect new
14216interfaces and changes to existing interfaces.
14217
14218----------------------------------------
1421928 March 2003.  Summary of changes for version 20030328.
14220
142211) ACPI CA Core Subsystem:
14222
14223The GPE Block Device support has been completed.  New interfaces
14224are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
14225interfaces (enable, disable, clear, getstatus) have been split
14226into separate interfaces for Fixed Events and General Purpose
14227Events (GPEs) in order to support GPE Block Devices properly.
14228
14229Fixed a problem where the error message "Failed to acquire
14230semaphore" would appear during operations on the embedded
14231controller (EC).
14232
14233Code and Data Size: Current core subsystem library sizes are shown
14234below.  These are the code and data sizes for the acpica.lib
14235produced by the Microsoft Visual C++ 6.0 compiler, and these
14236values do not include any ACPI driver or OSPM code.  The debug
14237version of the code includes the debug output trace mechanism and
14238has a much larger code and data size.  Note that these values will
14239vary depending on the efficiency of the compiler and the compiler
14240options used during generation.
14241
14242  Previous Release
14243    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
14244    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
14245  Current Release:
14246    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
14247    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
14248
14249
14250----------------------------------------
1425128 February 2003.  Summary of changes for version 20030228.
14252
14253
142541) ACPI CA Core Subsystem:
14255
14256The GPE handling and dispatch code has been completely overhauled
14257in preparation for support of GPE Block Devices (ID ACPI0006).
14258This affects internal data structures and code only; there should
14259be no differences visible externally.  One new file has been
14260added, evgpeblk.c
14261
14262The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
14263fields that are used to determine the GPE block lengths.  The
14264REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
14265structures are ignored.  This is per the ACPI specification but it
14266isn't very clear.  The full 256 Block 0/1 GPEs are now supported
14267(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
14268
14269In the SCI interrupt handler, removed the read of the PM1_CONTROL
14270register to look at the SCI_EN bit.  On some machines, this read
14271causes an SMI event and greatly slows down SCI events.  (This may
14272in fact be the cause of slow battery status response on some
14273systems.)
14274
14275Fixed a problem where a store of a NULL string to a package object
14276could cause the premature deletion of the object.  This was seen
14277during execution of the battery _BIF method on some systems,
14278resulting in no battery data being returned.
14279
14280Added AcpiWalkResources interface to simplify parsing of resource
14281lists.
14282
14283Code and Data Size: Current core subsystem library sizes are shown
14284below.  These are the code and data sizes for the acpica.lib
14285produced by the Microsoft Visual C++ 6.0 compiler, and these
14286values do not include any ACPI driver or OSPM code.  The debug
14287version of the code includes the debug output trace mechanism and
14288has a much larger code and data size.  Note that these values will
14289vary depending on the efficiency of the compiler and the compiler
14290options used during generation.
14291
14292  Previous Release
14293    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
14294    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
14295  Current Release:
14296    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
14297    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
14298
14299
143002) Linux
14301
14302S3 fixes (Ole Rohne)
14303
14304Update ACPI PHP driver with to use new acpi_walk_resource API
14305(Bjorn Helgaas)
14306
14307Add S4BIOS support (Pavel Machek)
14308
14309Map in entire table before performing checksum (John Stultz)
14310
14311Expand the mem= cmdline to allow the specification of reserved and
14312ACPI DATA blocks (Pavel Machek)
14313
14314Never use ACPI on VISWS
14315
14316Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
14317
14318Revert a change that allowed P_BLK lengths to be 4 or 5. This is
14319causing us to think that some systems support C2 when they really
14320don't.
14321
14322Do not count processor objects for non-present CPUs (Thanks to
14323Dominik Brodowski)
14324
14325
143263) iASL Compiler:
14327
14328Fixed a problem where ASL include files could not be found and
14329opened.
14330
14331Added support for the _PDC reserved name.
14332
14333
14334----------------------------------------
1433522 January 2003.  Summary of changes for version 20030122.
14336
14337
143381) ACPI CA Core Subsystem:
14339
14340Added a check for constructs of the form:  Store (Local0, Local0)
14341where Local0 is not initialized.  Apparently, some BIOS
14342programmers believe that this is a NOOP.  Since this store doesn't
14343do anything anyway, the new prototype behavior will ignore this
14344error.  This is a case where we can relax the strict checking in
14345the interpreter in the name of compatibility.
14346
14347
143482) Linux
14349
14350The AcpiSrc Source Conversion Utility has been released with the
14351Linux package for the first time.  This is the utility that is
14352used to convert the ACPI CA base source code to the Linux version.
14353
14354(Both) Handle P_BLK lengths shorter than 6 more gracefully
14355
14356(Both) Move more headers to include/acpi, and delete an unused
14357header.
14358
14359(Both) Move drivers/acpi/include directory to include/acpi
14360
14361(Both) Boot functions don't use cmdline, so don't pass it around
14362
14363(Both) Remove include of unused header (Adrian Bunk)
14364
14365(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
14366the
14367former now also includes the latter, acpiphp.h only needs the one,
14368now.
14369
14370(2.5) Make it possible to select method of bios restoring after S3
14371resume. [=> no more ugly ifdefs] (Pavel Machek)
14372
14373(2.5) Make proc write interfaces work (Pavel Machek)
14374
14375(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
14376
14377(2.5) Break out ACPI Perf code into its own module, under cpufreq
14378(Dominik Brodowski)
14379
14380(2.4) S4BIOS support (Ducrot Bruno)
14381
14382(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
14383Visinoni)
14384
14385
143863) iASL Compiler:
14387
14388Added support to disassemble SSDT and PSDTs.
14389
14390Implemented support to obtain SSDTs from the Windows registry if
14391available.
14392
14393
14394----------------------------------------
1439509 January 2003.  Summary of changes for version 20030109.
14396
143971) ACPI CA Core Subsystem:
14398
14399Changed the behavior of the internal Buffer-to-String conversion
14400function.  The current ACPI specification states that the contents
14401of the buffer are "converted to a string of two-character
14402hexadecimal numbers, each separated by a space".  Unfortunately,
14403this definition is not backwards compatible with existing ACPI 1.0
14404implementations (although the behavior was not defined in the ACPI
144051.0 specification).  The new behavior simply copies data from the
14406buffer to the string until a null character is found or the end of
14407the buffer is reached.  The new String object is always null
14408terminated.  This problem was seen during the generation of _BIF
14409battery data where incorrect strings were returned for battery
14410type, etc.  This will also require an errata to the ACPI
14411specification.
14412
14413Renamed all instances of NATIVE_UINT and NATIVE_INT to
14414ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
14415
14416Copyright in all module headers (both Linux and non-Linux) has be
14417updated to 2003.
14418
14419Code and Data Size: Current core subsystem library sizes are shown
14420below.  These are the code and data sizes for the acpica.lib
14421produced by the Microsoft Visual C++ 6.0 compiler, and these
14422values do not include any ACPI driver or OSPM code.  The debug
14423version of the code includes the debug output trace mechanism and
14424has a much larger code and data size.  Note that these values will
14425vary depending on the efficiency of the compiler and the compiler
14426options used during generation.
14427
14428  Previous Release
14429    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
14430    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
14431  Current Release:
14432    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
14433    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
14434
14435
144362) Linux
14437
14438Fixed an oops on module insertion/removal (Matthew Tippett)
14439
14440(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
14441
14442(2.5) Replace pr_debug (Randy Dunlap)
14443
14444(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
14445
14446(Both) Eliminate spawning of thread from timer callback, in favor
14447of schedule_work()
14448
14449(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
14450
14451(Both) Added define for Fixed Function HW region (Matthew Wilcox)
14452
14453(Both) Add missing statics to button.c (Pavel Machek)
14454
14455Several changes have been made to the source code translation
14456utility that generates the Linux Code in order to make the code
14457more "Linux-like":
14458
14459All typedefs on structs and unions have been removed in keeping
14460with the Linux coding style.
14461
14462Removed the non-Linux SourceSafe module revision number from each
14463module header.
14464
14465Completed major overhaul of symbols to be lowercased for linux.
14466Doubled the number of symbols that are lowercased.
14467
14468Fixed a problem where identifiers within procedure headers and
14469within quotes were not fully lower cased (they were left with a
14470starting capital.)
14471
14472Some C macros whose only purpose is to allow the generation of 16-
14473bit code are now completely removed in the Linux code, increasing
14474readability and maintainability.
14475
14476----------------------------------------
14477
1447812 December 2002.  Summary of changes for version 20021212.
14479
14480
144811) ACPI CA Core Subsystem:
14482
14483Fixed a problem where the creation of a zero-length AML Buffer
14484would cause a fault.
14485
14486Fixed a problem where a Buffer object that pointed to a static AML
14487buffer (in an ACPI table) could inadvertently be deleted, causing
14488memory corruption.
14489
14490Fixed a problem where a user buffer (passed in to the external
14491ACPI CA interfaces) could be overwritten if the buffer was too
14492small to complete the operation, causing memory corruption.
14493
14494Fixed a problem in the Buffer-to-String conversion code where a
14495string of length one was always returned, regardless of the size
14496of the input Buffer object.
14497
14498Removed the NATIVE_CHAR data type across the entire source due to
14499lack of need and lack of consistent use.
14500
14501Code and Data Size: Current core subsystem library sizes are shown
14502below.  These are the code and data sizes for the acpica.lib
14503produced by the Microsoft Visual C++ 6.0 compiler, and these
14504values do not include any ACPI driver or OSPM code.  The debug
14505version of the code includes the debug output trace mechanism and
14506has a much larger code and data size.  Note that these values will
14507vary depending on the efficiency of the compiler and the compiler
14508options used during generation.
14509
14510  Previous Release
14511    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
14512    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
14513  Current Release:
14514    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
14515    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
14516
14517
14518----------------------------------------
1451905 December 2002.  Summary of changes for version 20021205.
14520
145211) ACPI CA Core Subsystem:
14522
14523Fixed a problem where a store to a String or Buffer object could
14524cause corruption of the DSDT if the object type being stored was
14525the same as the target object type and the length of the object
14526being stored was equal to or smaller than the original (existing)
14527target object.  This was seen to cause corruption of battery _BIF
14528buffers if the _BIF method modified the buffer on the fly.
14529
14530Fixed a problem where an internal error was generated if a control
14531method invocation was used in an OperationRegion, Buffer, or
14532Package declaration.  This was caused by the deferred parsing of
14533the control method and thus the deferred creation of the internal
14534method object.  The solution to this problem was to create the
14535internal method object at the moment the method is encountered in
14536the first pass - so that subsequent references to the method will
14537able to obtain the required parameter count and thus properly
14538parse the method invocation.  This problem presented itself as an
14539AE_AML_INTERNAL during the pass 1 parse phase during table load.
14540
14541Fixed a problem where the internal String object copy routine did
14542not always allocate sufficient memory for the target String object
14543and caused memory corruption.  This problem was seen to cause
14544"Allocation already present in list!" errors as memory allocation
14545became corrupted.
14546
14547Implemented a new function for the evaluation of namespace objects
14548that allows the specification of the allowable return object
14549types.  This simplifies a lot of code that checks for a return
14550object of one or more specific objects returned from the
14551evaluation (such as _STA, etc.)  This may become and external
14552function if it would be useful to ACPI-related drivers.
14553
14554Completed another round of prefixing #defines with "ACPI_" for
14555clarity.
14556
14557Completed additional code restructuring to allow more modular
14558linking for iASL compiler and AcpiExec.  Several files were split
14559creating new files.  New files:  nsparse.c dsinit.c evgpe.c
14560
14561Implemented an abort mechanism to terminate an executing control
14562method via the AML debugger.  This feature is useful for debugging
14563control methods that depend (wait) for specific hardware
14564responses.
14565
14566Code and Data Size: Current core subsystem library sizes are shown
14567below.  These are the code and data sizes for the acpica.lib
14568produced by the Microsoft Visual C++ 6.0 compiler, and these
14569values do not include any ACPI driver or OSPM code.  The debug
14570version of the code includes the debug output trace mechanism and
14571has a much larger code and data size.  Note that these values will
14572vary depending on the efficiency of the compiler and the compiler
14573options used during generation.
14574
14575  Previous Release
14576    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
14577    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
14578  Current Release:
14579    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
14580    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
14581
14582
145832) iASL Compiler/Disassembler
14584
14585Fixed a compiler code generation problem for "Interrupt" Resource
14586Descriptors.  If specified in the ASL, the optional "Resource
14587Source Index" and "Resource Source" fields were not inserted into
14588the correct location within the AML resource descriptor, creating
14589an invalid descriptor.
14590
14591Fixed a disassembler problem for "Interrupt" resource descriptors.
14592The optional "Resource Source Index" and "Resource Source" fields
14593were ignored.
14594
14595
14596----------------------------------------
1459722 November 2002.  Summary of changes for version 20021122.
14598
14599
146001) ACPI CA Core Subsystem:
14601
14602Fixed a reported problem where an object stored to a Method Local
14603or Arg was not copied to a new object during the store - the
14604object pointer was simply copied to the Local/Arg.  This caused
14605all subsequent operations on the Local/Arg to also affect the
14606original source of the store operation.
14607
14608Fixed a problem where a store operation to a Method Local or Arg
14609was not completed properly if the Local/Arg contained a reference
14610(from RefOf) to a named field.  The general-purpose store-to-
14611namespace-node code is now used so that this case is handled
14612automatically.
14613
14614Fixed a problem where the internal object copy routine would cause
14615a protection fault if the object being copied was a Package and
14616contained either 1) a NULL package element or 2) a nested sub-
14617package.
14618
14619Fixed a problem with the GPE initialization that resulted from an
14620ambiguity in the ACPI specification.  One section of the
14621specification states that both the address and length of the GPE
14622block must be zero if the block is not supported.  Another section
14623implies that only the address need be zero if the block is not
14624supported.  The code has been changed so that both the address and
14625the length must be non-zero to indicate a valid GPE block (i.e.,
14626if either the address or the length is zero, the GPE block is
14627invalid.)
14628
14629Code and Data Size: Current core subsystem library sizes are shown
14630below.  These are the code and data sizes for the acpica.lib
14631produced by the Microsoft Visual C++ 6.0 compiler, and these
14632values do not include any ACPI driver or OSPM code.  The debug
14633version of the code includes the debug output trace mechanism and
14634has a much larger code and data size.  Note that these values will
14635vary depending on the efficiency of the compiler and the compiler
14636options used during generation.
14637
14638  Previous Release
14639    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
14640    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
14641  Current Release:
14642    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
14643    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
14644
14645
146462) Linux
14647
14648Cleaned up EC driver. Exported an external EC read/write
14649interface. By going through this, other drivers (most notably
14650sonypi) will be able to serialize access to the EC.
14651
14652
146533) iASL Compiler/Disassembler
14654
14655Implemented support to optionally generate include files for both
14656ASM and C (the -i switch).  This simplifies BIOS development by
14657automatically creating include files that contain external
14658declarations for the symbols that are created within the
14659
14660(optionally generated) ASM and C AML source files.
14661
14662
14663----------------------------------------
1466415 November 2002.  Summary of changes for version 20021115.
14665
146661) ACPI CA Core Subsystem:
14667
14668Fixed a memory leak problem where an error during resolution of
14669
14670method arguments during a method invocation from another method
14671failed to cleanup properly by deleting all successfully resolved
14672argument objects.
14673
14674Fixed a problem where the target of the Index() operator was not
14675correctly constructed if the source object was a package.  This
14676problem has not been detected because the use of a target operand
14677with Index() is very rare.
14678
14679Fixed a problem with the Index() operator where an attempt was
14680made to delete the operand objects twice.
14681
14682Fixed a problem where an attempt was made to delete an operand
14683twice during execution of the CondRefOf() operator if the target
14684did not exist.
14685
14686Implemented the first of perhaps several internal create object
14687functions that create and initialize a specific object type.  This
14688consolidates duplicated code wherever the object is created, thus
14689shrinking the size of the subsystem.
14690
14691Implemented improved debug/error messages for errors that occur
14692during nested method invocations.  All executing method pathnames
14693are displayed (with the error) as the call stack is unwound - thus
14694simplifying debug.
14695
14696Fixed a problem introduced in the 10/02 release that caused
14697premature deletion of a buffer object if a buffer was used as an
14698ASL operand where an integer operand is required (Thus causing an
14699implicit object conversion from Buffer to Integer.)  The change in
14700the 10/02 release was attempting to fix a memory leak (albeit
14701incorrectly.)
14702
14703Code and Data Size: Current core subsystem library sizes are shown
14704below.  These are the code and data sizes for the acpica.lib
14705produced by the Microsoft Visual C++ 6.0 compiler, and these
14706values do not include any ACPI driver or OSPM code.  The debug
14707version of the code includes the debug output trace mechanism and
14708has a much larger code and data size.  Note that these values will
14709vary depending on the efficiency of the compiler and the compiler
14710options used during generation.
14711
14712  Previous Release
14713    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
14714    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
14715  Current Release:
14716    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
14717    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
14718
14719
147202) Linux
14721
14722Changed the implementation of the ACPI semaphores to use down()
14723instead of down_interruptable().  It is important that the
14724execution of ACPI control methods not be interrupted by signals.
14725Methods must run to completion, or the system may be left in an
14726unknown/unstable state.
14727
14728Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
14729(Shawn Starr)
14730
14731
147323) iASL Compiler/Disassembler
14733
14734
14735Changed the default location of output files.  All output files
14736are now placed in the current directory by default instead of in
14737the directory of the source file.  This change may affect some
14738existing makefiles, but it brings the behavior of the compiler in
14739line with other similar tools.  The location of the output files
14740can be overridden with the -p command line switch.
14741
14742
14743----------------------------------------
1474411 November 2002.  Summary of changes for version 20021111.
14745
14746
147470) ACPI Specification 2.0B is released and is now available at:
14748http://www.acpi.info/index.html
14749
14750
147511) ACPI CA Core Subsystem:
14752
14753Implemented support for the ACPI 2.0 SMBus Operation Regions.
14754This includes the early detection and handoff of the request to
14755the SMBus region handler (avoiding all of the complex field
14756support code), and support for the bidirectional return packet
14757from an SMBus write operation.  This paves the way for the
14758development of SMBus drivers in each host operating system.
14759
14760Fixed a problem where the semaphore WAIT_FOREVER constant was
14761defined as 32 bits, but must be 16 bits according to the ACPI
14762specification.  This had the side effect of causing ASL
14763Mutex/Event timeouts even though the ASL code requested a wait
14764forever.  Changed all internal references to the ACPI timeout
14765parameter to 16 bits to prevent future problems.  Changed the name
14766of WAIT_FOREVER to ACPI_WAIT_FOREVER.
14767
14768Code and Data Size: Current core subsystem library sizes are shown
14769below.  These are the code and data sizes for the acpica.lib
14770produced by the Microsoft Visual C++ 6.0 compiler, and these
14771values do not include any ACPI driver or OSPM code.  The debug
14772version of the code includes the debug output trace mechanism and
14773has a much larger code and data size.  Note that these values will
14774vary depending on the efficiency of the compiler and the compiler
14775options used during generation.
14776
14777  Previous Release
14778    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
14779    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
14780  Current Release:
14781    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
14782    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
14783
14784
147852) Linux
14786
14787Module loading/unloading fixes (John Cagle)
14788
14789
147903) iASL Compiler/Disassembler
14791
14792Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
14793
14794Implemented support for the disassembly of all SMBus protocol
14795keywords (SMBQuick, SMBWord, etc.)
14796
14797----------------------------------------
1479801 November 2002.  Summary of changes for version 20021101.
14799
14800
148011) ACPI CA Core Subsystem:
14802
14803Fixed a problem where platforms that have a GPE1 block but no GPE0
14804block were not handled correctly.  This resulted in a "GPE
14805overlap" error message.  GPE0 is no longer required.
14806
14807Removed code added in the previous release that inserted nodes
14808into the namespace in alphabetical order.  This caused some side-
14809effects on various machines.  The root cause of the problem is
14810still under investigation since in theory, the internal ordering
14811of the namespace nodes should not matter.
14812
14813
14814Enhanced error reporting for the case where a named object is not
14815found during control method execution.  The full ACPI namepath
14816(name reference) of the object that was not found is displayed in
14817this case.
14818
14819Note: as a result of the overhaul of the namespace object types in
14820the previous release, the namespace nodes for the predefined
14821scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
14822instead of ACPI_TYPE_ANY.  This simplifies the namespace
14823management code but may affect code that walks the namespace tree
14824looking for specific object types.
14825
14826Code and Data Size: Current core subsystem library sizes are shown
14827below.  These are the code and data sizes for the acpica.lib
14828produced by the Microsoft Visual C++ 6.0 compiler, and these
14829values do not include any ACPI driver or OSPM code.  The debug
14830version of the code includes the debug output trace mechanism and
14831has a much larger code and data size.  Note that these values will
14832vary depending on the efficiency of the compiler and the compiler
14833options used during generation.
14834
14835  Previous Release
14836    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
14837    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
14838  Current Release:
14839    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
14840    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
14841
14842
148432) Linux
14844
14845Fixed a problem introduced in the previous release where the
14846Processor and Thermal objects were not recognized and installed in
14847/proc.  This was related to the scope type change described above.
14848
14849
148503) iASL Compiler/Disassembler
14851
14852Implemented the -g option to get all of the required ACPI tables
14853from the registry and save them to files (Windows version of the
14854compiler only.)  The required tables are the FADT, FACS, and DSDT.
14855
14856Added ACPI table checksum validation during table disassembly in
14857order to catch corrupted tables.
14858
14859
14860----------------------------------------
1486122 October 2002.  Summary of changes for version 20021022.
14862
148631) ACPI CA Core Subsystem:
14864
14865Implemented a restriction on the Scope operator that the target
14866must already exist in the namespace at the time the operator is
14867encountered (during table load or method execution).  In other
14868words, forward references are not allowed and Scope() cannot
14869create a new object. This changes the previous behavior where the
14870interpreter would create the name if not found.  This new behavior
14871correctly enables the search-to-root algorithm during namespace
14872lookup of the target name.  Because of this upsearch, this fixes
14873the known Compaq _SB_.OKEC problem and makes both the AML
14874interpreter and iASL compiler compatible with other ACPI
14875implementations.
14876
14877Completed a major overhaul of the internal ACPI object types for
14878the ACPI Namespace and the associated operand objects.  Many of
14879these types had become obsolete with the introduction of the two-
14880pass namespace load.  This cleanup simplifies the code and makes
14881the entire namespace load mechanism much clearer and easier to
14882understand.
14883
14884Improved debug output for tracking scope opening/closing to help
14885diagnose scoping issues.  The old scope name as well as the new
14886scope name are displayed.  Also improved error messages for
14887problems with ASL Mutex objects and error messages for GPE
14888problems.
14889
14890Cleaned up the namespace dump code, removed obsolete code.
14891
14892All string output (for all namespace/object dumps) now uses the
14893common ACPI string output procedure which handles escapes properly
14894and does not emit non-printable characters.
14895
14896Fixed some issues with constants in the 64-bit version of the
14897local C library (utclib.c)
14898
14899
149002) Linux
14901
14902EC Driver:  No longer attempts to acquire the Global Lock at
14903interrupt level.
14904
14905
149063) iASL Compiler/Disassembler
14907
14908Implemented ACPI 2.0B grammar change that disallows all Type 1 and
149092 opcodes outside of a control method.  This means that the
14910"executable" operators (versus the "namespace" operators) cannot
14911be used at the table level; they can only be used within a control
14912method.
14913
14914Implemented the restriction on the Scope() operator where the
14915target must already exist in the namespace at the time the
14916operator is encountered (during ASL compilation). In other words,
14917forward references are not allowed and Scope() cannot create a new
14918object.  This makes the iASL compiler compatible with other ACPI
14919implementations and makes the Scope() implementation adhere to the
14920ACPI specification.
14921
14922Fixed a problem where namepath optimization for the Alias operator
14923was optimizing the wrong path (of the two namepaths.)  This caused
14924a "Missing alias link" error message.
14925
14926Fixed a problem where an "unknown reserved name" warning could be
14927incorrectly generated for names like "_SB" when the trailing
14928underscore is not used in the original ASL.
14929
14930Fixed a problem where the reserved name check did not handle
14931NamePaths with multiple NameSegs correctly.  The first nameseg of
14932the NamePath was examined instead of the last NameSeg.
14933
14934
14935----------------------------------------
14936
1493702 October 2002.  Summary of changes for this release.
14938
14939
149401) ACPI CA Core Subsystem version 20021002:
14941
14942Fixed a problem where a store/copy of a string to an existing
14943string did not always set the string length properly in the String
14944object.
14945
14946Fixed a reported problem with the ToString operator where the
14947behavior was identical to the ToHexString operator instead of just
14948simply converting a raw buffer to a string data type.
14949
14950Fixed a problem where CopyObject and the other "explicit"
14951conversion operators were not updating the internal namespace node
14952type as part of the store operation.
14953
14954Fixed a memory leak during implicit source operand conversion
14955where the original object was not deleted if it was converted to a
14956new object of a different type.
14957
14958Enhanced error messages for all problems associated with namespace
14959lookups.  Common procedure generates and prints the lookup name as
14960well as the formatted status.
14961
14962Completed implementation of a new design for the Alias support
14963within the namespace.  The existing design did not handle the case
14964where a new object was assigned to one of the two names due to the
14965use of an explicit conversion operator, resulting in the two names
14966pointing to two different objects.  The new design simply points
14967the Alias name to the original name node - not to the object.
14968This results in a level of indirection that must be handled in the
14969name resolution mechanism.
14970
14971Code and Data Size: Current core subsystem library sizes are shown
14972below.  These are the code and data sizes for the acpica.lib
14973produced by the Microsoft Visual C++ 6.0 compiler, and these
14974values do not include any ACPI driver or OSPM code.  The debug
14975version of the code includes the debug output trace mechanism and
14976has a larger code and data size.  Note that these values will vary
14977depending on the efficiency of the compiler and the compiler
14978options used during generation.
14979
14980  Previous Release
14981    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
14982    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
14983  Current Release:
14984    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
14985    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
14986
14987
149882) Linux
14989
14990Initialize thermal driver's timer before it is used. (Knut
14991Neumann)
14992
14993Allow handling negative celsius values. (Kochi Takayoshi)
14994
14995Fix thermal management and make trip points. R/W (Pavel Machek)
14996
14997Fix /proc/acpi/sleep. (P. Christeas)
14998
14999IA64 fixes. (David Mosberger)
15000
15001Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
15002
15003Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
15004Brodowski)
15005
15006
150073) iASL Compiler/Disassembler
15008
15009Clarified some warning/error messages.
15010
15011
15012----------------------------------------
1501318 September 2002.  Summary of changes for this release.
15014
15015
150161) ACPI CA Core Subsystem version 20020918:
15017
15018Fixed a reported problem with reference chaining (via the Index()
15019and RefOf() operators) in the ObjectType() and SizeOf() operators.
15020The definition of these operators includes the dereferencing of
15021all chained references to return information on the base object.
15022
15023Fixed a problem with stores to indexed package elements - the
15024existing code would not complete the store if an "implicit
15025conversion" was not performed.  In other words, if the existing
15026object (package element) was to be replaced completely, the code
15027didn't handle this case.
15028
15029Relaxed typechecking on the ASL "Scope" operator to allow the
15030target name to refer to an object of type Integer, String, or
15031Buffer, in addition to the scoping object types (Device,
15032predefined Scopes, Processor, PowerResource, and ThermalZone.)
15033This allows existing AML code that has workarounds for a bug in
15034Windows to function properly.  A warning is issued, however.  This
15035affects both the AML interpreter and the iASL compiler. Below is
15036an example of this type of ASL code:
15037
15038      Name(DEB,0x00)
15039      Scope(DEB)
15040      {
15041
15042Fixed some reported problems with 64-bit integer support in the
15043local implementation of C library functions (clib.c)
15044
15045
150462) Linux
15047
15048Use ACPI fix map region instead of IOAPIC region, since it is
15049undefined in non-SMP.
15050
15051Ensure that the SCI has the proper polarity and trigger, even on
15052systems that do not have an interrupt override entry in the MADT.
15053
150542.5 big driver reorganization (Pat Mochel)
15055
15056Use early table mapping code from acpitable.c (Andi Kleen)
15057
15058New blacklist entries (Andi Kleen)
15059
15060Blacklist improvements. Split blacklist code out into a separate
15061file. Move checking the blacklist to very early. Previously, we
15062would use ACPI tables, and then halfway through init, check the
15063blacklist -- too late. Now, it's early enough to completely fall-
15064back to non-ACPI.
15065
15066
150673) iASL Compiler/Disassembler version 20020918:
15068
15069Fixed a problem where the typechecking code didn't know that an
15070alias could point to a method.  In other words, aliases were not
15071being dereferenced during typechecking.
15072
15073
15074----------------------------------------
1507529 August 2002.  Summary of changes for this release.
15076
150771) ACPI CA Core Subsystem Version 20020829:
15078
15079If the target of a Scope() operator already exists, it must be an
15080object type that actually opens a scope -- such as a Device,
15081Method, Scope, etc.  This is a fatal runtime error.  Similar error
15082check has been added to the iASL compiler also.
15083
15084Tightened up the namespace load to disallow multiple names in the
15085same scope.  This previously was allowed if both objects were of
15086the same type.  (i.e., a lookup was the same as entering a new
15087name).
15088
15089
150902) Linux
15091
15092Ensure that the ACPI interrupt has the proper trigger and
15093polarity.
15094
15095local_irq_disable is extraneous. (Matthew Wilcox)
15096
15097Make "acpi=off" actually do what it says, and not use the ACPI
15098interpreter *or* the tables.
15099
15100Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
15101Takayoshi)
15102
15103
151043) iASL Compiler/Disassembler  Version 20020829:
15105
15106Implemented namepath optimization for name declarations.  For
15107example, a declaration like "Method (\_SB_.ABCD)" would get
15108optimized to "Method (ABCD)" if the declaration is within the
15109\_SB_ scope.  This optimization is in addition to the named
15110reference path optimization first released in the previous
15111version. This would seem to complete all possible optimizations
15112for namepaths within the ASL/AML.
15113
15114If the target of a Scope() operator already exists, it must be an
15115object type that actually opens a scope -- such as a Device,
15116Method, Scope, etc.
15117
15118Implemented a check and warning for unreachable code in the same
15119block below a Return() statement.
15120
15121Fixed a problem where the listing file was not generated if the
15122compiler aborted if the maximum error count was exceeded (200).
15123
15124Fixed a problem where the typechecking of method return values was
15125broken.  This includes the check for a return value when the
15126method is invoked as a TermArg (a return value is expected.)
15127
15128Fixed a reported problem where EOF conditions during a quoted
15129string or comment caused a fault.
15130
15131
15132----------------------------------------
1513315 August 2002.  Summary of changes for this release.
15134
151351) ACPI CA Core Subsystem Version 20020815:
15136
15137Fixed a reported problem where a Store to a method argument that
15138contains a reference did not perform the indirect store correctly.
15139This problem was created during the conversion to the new
15140reference object model - the indirect store to a method argument
15141code was not updated to reflect the new model.
15142
15143Reworked the ACPI mode change code to better conform to ACPI 2.0,
15144handle corner cases, and improve code legibility (Kochi Takayoshi)
15145
15146Fixed a problem with the pathname parsing for the carat (^)
15147prefix.  The heavy use of the carat operator by the new namepath
15148optimization in the iASL compiler uncovered a problem with the AML
15149interpreter handling of this prefix.  In the case where one or
15150more carats precede a single nameseg, the nameseg was treated as
15151standalone and the search rule (to root) was inadvertently
15152applied.  This could cause both the iASL compiler and the
15153interpreter to find the wrong object or to miss the error that
15154should occur if the object does not exist at that exact pathname.
15155
15156Found and fixed the problem where the HP Pavilion DSDT would not
15157load.  This was a relatively minor tweak to the table loading code
15158(a problem caused by the unexpected encounter with a method
15159invocation not within a control method), but it does not solve the
15160overall issue of the execution of AML code at the table level.
15161This investigation is still ongoing.
15162
15163Code and Data Size: Current core subsystem library sizes are shown
15164below.  These are the code and data sizes for the acpica.lib
15165produced by the Microsoft Visual C++ 6.0 compiler, and these
15166values do not include any ACPI driver or OSPM code.  The debug
15167version of the code includes the debug output trace mechanism and
15168has a larger code and data size.  Note that these values will vary
15169depending on the efficiency of the compiler and the compiler
15170options used during generation.
15171
15172  Previous Release
15173    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
15174    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
15175  Current Release:
15176    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
15177    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
15178
15179
151802) Linux
15181
15182Remove redundant slab.h include (Brad Hards)
15183
15184Fix several bugs in thermal.c (Herbert Nachtnebel)
15185
15186Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
15187
15188Change acpi_system_suspend to use updated irq functions (Pavel
15189Machek)
15190
15191Export acpi_get_firmware_table (Matthew Wilcox)
15192
15193Use proper root proc entry for ACPI (Kochi Takayoshi)
15194
15195Fix early-boot table parsing (Bjorn Helgaas)
15196
15197
151983) iASL Compiler/Disassembler
15199
15200Reworked the compiler options to make them more consistent and to
15201use two-letter options where appropriate.  We were running out of
15202sensible letters.   This may break some makefiles, so check the
15203current options list by invoking the compiler with no parameters.
15204
15205Completed the design and implementation of the ASL namepath
15206optimization option for the compiler.  This option optimizes all
15207references to named objects to the shortest possible path.  The
15208first attempt tries to utilize a single nameseg (4 characters) and
15209the "search-to-root" algorithm used by the interpreter.  If that
15210cannot be used (because either the name is not in the search path
15211or there is a conflict with another object with the same name),
15212the pathname is optimized using the carat prefix (usually a
15213shorter string than specifying the entire path from the root.)
15214
15215Implemented support to obtain the DSDT from the Windows registry
15216(when the disassembly option is specified with no input file).
15217Added this code as the implementation for AcpiOsTableOverride in
15218the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
15219utility) to scan memory for the DSDT to the AcpiOsTableOverride
15220function in the DOS OSL to make the disassembler truly OS
15221independent.
15222
15223Implemented a new option to disassemble and compile in one step.
15224When used without an input filename, this option will grab the
15225DSDT from the local machine, disassemble it, and compile it in one
15226step.
15227
15228Added a warning message for invalid escapes (a backslash followed
15229by any character other than the allowable escapes).  This catches
15230the quoted string error "\_SB_" (which should be "\\_SB_" ).
15231
15232Also, there are numerous instances in the ACPI specification where
15233this error occurs.
15234
15235Added a compiler option to disable all optimizations.  This is
15236basically the "compatibility mode" because by using this option,
15237the AML code will come out exactly the same as other ASL
15238compilers.
15239
15240Added error messages for incorrectly ordered dependent resource
15241functions.  This includes: missing EndDependentFn macro at end of
15242dependent resource list, nested dependent function macros (both
15243start and end), and missing StartDependentFn macro.  These are
15244common errors that should be caught at compile time.
15245
15246Implemented _OSI support for the disassembler and compiler.  _OSI
15247must be included in the namespace for proper disassembly (because
15248the disassembler must know the number of arguments.)
15249
15250Added an "optimization" message type that is optional (off by
15251default).  This message is used for all optimizations - including
15252constant folding, integer optimization, and namepath optimization.
15253
15254----------------------------------------
1525525 July 2002.  Summary of changes for this release.
15256
15257
152581) ACPI CA Core Subsystem Version 20020725:
15259
15260The AML Disassembler has been enhanced to produce compilable ASL
15261code and has been integrated into the iASL compiler (see below) as
15262well as the single-step disassembly for the AML debugger and the
15263disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
15264resource templates and macros are fully supported.  The
15265disassembler has been tested on over 30 different AML files,
15266producing identical AML when the resulting disassembled ASL file
15267is recompiled with the same ASL compiler.
15268
15269Modified the Resource Manager to allow zero interrupts and zero
15270dma channels during the GetCurrentResources call.  This was
15271causing problems on some platforms.
15272
15273Added the AcpiOsRedirectOutput interface to the OSL to simplify
15274output redirection for the AcpiOsPrintf and AcpiOsVprintf
15275interfaces.
15276
15277Code and Data Size: Current core subsystem library sizes are shown
15278below.  These are the code and data sizes for the acpica.lib
15279produced by the Microsoft Visual C++ 6.0 compiler, and these
15280values do not include any ACPI driver or OSPM code.  The debug
15281version of the code includes the debug output trace mechanism and
15282has a larger code and data size.  Note that these values will vary
15283depending on the efficiency of the compiler and the compiler
15284options used during generation.
15285
15286  Previous Release
15287    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
15288    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
15289  Current Release:
15290    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
15291    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
15292
15293
152942) Linux
15295
15296Fixed a panic in the EC driver (Dominik Brodowski)
15297
15298Implemented checksum of the R/XSDT itself during Linux table scan
15299(Richard Schaal)
15300
15301
153023) iASL compiler
15303
15304The AML disassembler is integrated into the compiler.  The "-d"
15305option invokes the disassembler  to completely disassemble an
15306input AML file, producing as output a text ASL file with the
15307extension ".dsl" (to avoid name collisions with existing .asl
15308source files.)  A future enhancement will allow the disassembler
15309to obtain the BIOS DSDT from the registry under Windows.
15310
15311Fixed a problem with the VendorShort and VendorLong resource
15312descriptors where an invalid AML sequence was created.
15313
15314Implemented a fix for BufferData term in the ASL parser.  It was
15315inadvertently defined twice, allowing invalid syntax to pass and
15316causing reduction conflicts.
15317
15318Fixed a problem where the Ones opcode could get converted to a
15319value of zero if "Ones" was used where a byte, word or dword value
15320was expected.  The 64-bit value is now truncated to the correct
15321size with the correct value.
15322
15323
15324
15325----------------------------------------
1532602 July 2002.  Summary of changes for this release.
15327
15328
153291) ACPI CA Core Subsystem Version 20020702:
15330
15331The Table Manager code has been restructured to add several new
15332features.  Tables that are not required by the core subsystem
15333(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
15334validated in any way and are returned from AcpiGetFirmwareTable if
15335requested.  The AcpiOsTableOverride interface is now called for
15336each table that is loaded by the subsystem in order to allow the
15337host to override any table it chooses.  Previously, only the DSDT
15338could be overridden.  Added one new files, tbrsdt.c and
15339tbgetall.c.
15340
15341Fixed a problem with the conversion of internal package objects to
15342external objects (when a package is returned from a control
15343method.)  The return buffer length was set to zero instead of the
15344proper length of the package object.
15345
15346Fixed a reported problem with the use of the RefOf and DeRefOf
15347operators when passing reference arguments to control methods.  A
15348new type of Reference object is used internally for references
15349produced by the RefOf operator.
15350
15351Added additional error messages in the Resource Manager to explain
15352AE_BAD_DATA errors when they occur during resource parsing.
15353
15354Split the AcpiEnableSubsystem into two primitives to enable a
15355finer granularity initialization sequence.  These two calls should
15356be called in this order: AcpiEnableSubsystem (flags),
15357AcpiInitializeObjects (flags).  The flags parameter remains the
15358same.
15359
15360
153612) Linux
15362
15363Updated the ACPI utilities module to understand the new style of
15364fully resolved package objects that are now returned from the core
15365subsystem.  This eliminates errors of the form:
15366
15367    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
15368    acpi_utils-0430 [145] acpi_evaluate_reference:
15369        Invalid element in package (not a device reference)
15370
15371The method evaluation utility uses the new buffer allocation
15372scheme instead of calling AcpiEvaluate Object twice.
15373
15374Added support for ECDT. This allows the use of the Embedded
15375
15376Controller before the namespace has been fully initialized, which
15377is necessary for ACPI 2.0 support, and for some laptops to
15378initialize properly. (Laptops using ECDT are still rare, so only
15379limited testing was performed of the added functionality.)
15380
15381Fixed memory leaks in the EC driver.
15382
15383Eliminated a brittle code structure in acpi_bus_init().
15384
15385Eliminated the acpi_evaluate() helper function in utils.c. It is
15386no longer needed since acpi_evaluate_object can optionally
15387allocate memory for the return object.
15388
15389Implemented fix for keyboard hang when getting battery readings on
15390some systems (Stephen White)
15391
15392PCI IRQ routing update (Dominik Brodowski)
15393
15394Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
15395support
15396
15397----------------------------------------
1539811 June 2002.  Summary of changes for this release.
15399
15400
154011) ACPI CA Core Subsystem Version 20020611:
15402
15403Fixed a reported problem where constants such as Zero and One
15404appearing within _PRT packages were not handled correctly within
15405the resource manager code.  Originally reported against the ASL
15406compiler because the code generator now optimizes integers to
15407their minimal AML representation (i.e. AML constants if possible.)
15408The _PRT code now handles all AML constant opcodes correctly
15409(Zero, One, Ones, Revision).
15410
15411Fixed a problem with the Concatenate operator in the AML
15412interpreter where a buffer result object was incorrectly marked as
15413not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
15414
15415All package sub-objects are now fully resolved before they are
15416returned from the external ACPI interfaces.  This means that name
15417strings are resolved to object handles, and constant operators
15418(Zero, One, Ones, Revision) are resolved to Integers.
15419
15420Implemented immediate resolution of the AML Constant opcodes
15421(Zero, One, Ones, Revision) to Integer objects upon detection
15422within the AML stream. This has simplified and reduced the
15423generated code size of the subsystem by eliminating about 10
15424switch statements for these constants (which previously were
15425contained in Reference objects.)  The complicating issues are that
15426the Zero opcode is used as a "placeholder" for unspecified
15427optional target operands and stores to constants are defined to be
15428no-ops.
15429
15430Code and Data Size: Current core subsystem library sizes are shown
15431below. These are the code and data sizes for the acpica.lib
15432produced by the Microsoft Visual C++ 6.0 compiler, and these
15433values do not include any ACPI driver or OSPM code.  The debug
15434version of the code includes the debug output trace mechanism and
15435has a larger code and data size.  Note that these values will vary
15436depending on the efficiency of the compiler and the compiler
15437options used during generation.
15438
15439  Previous Release
15440    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
15441    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
15442  Current Release:
15443    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
15444    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
15445
15446
154472) Linux
15448
15449
15450Added preliminary support for obtaining _TRA data for PCI root
15451bridges (Bjorn Helgaas).
15452
15453
154543) iASL Compiler Version X2046:
15455
15456Fixed a problem where the "_DDN" reserved name was defined to be a
15457control method with one argument.  There are no arguments, and
15458_DDN does not have to be a control method.
15459
15460Fixed a problem with the Linux version of the compiler where the
15461source lines printed with error messages were the wrong lines.
15462This turned out to be the "LF versus CR/LF" difference between
15463Windows and Unix.  This appears to be the longstanding issue
15464concerning listing output and error messages.
15465
15466Fixed a problem with the Linux version of compiler where opcode
15467names within error messages were wrong.  This was caused by a
15468slight difference in the output of the Flex tool on Linux versus
15469Windows.
15470
15471Fixed a problem with the Linux compiler where the hex output files
15472contained some garbage data caused by an internal buffer overrun.
15473
15474
15475----------------------------------------
1547617 May 2002.  Summary of changes for this release.
15477
15478
154791) ACPI CA Core Subsystem Version 20020517:
15480
15481Implemented a workaround to an BIOS bug discovered on the HP
15482OmniBook where the FADT revision number and the table size are
15483inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
15484behavior is to fallback to using only the ACPI 1.0 fields of the
15485FADT if the table is too small to be a ACPI 2.0 table as claimed
15486by the revision number.  Although this is a BIOS bug, this is a
15487case where the workaround is simple enough and with no side
15488effects, so it seemed prudent to add it.  A warning message is
15489issued, however.
15490
15491Implemented minimum size checks for the fixed-length ACPI tables -
15492- the FADT and FACS, as well as consistency checks between the
15493revision number and the table size.
15494
15495Fixed a reported problem in the table override support where the
15496new table pointer was incorrectly treated as a physical address
15497instead of a logical address.
15498
15499Eliminated the use of the AE_AML_ERROR exception and replaced it
15500with more descriptive codes.
15501
15502Fixed a problem where an exception would occur if an ASL Field was
15503defined with no named Field Units underneath it (used by some
15504index fields).
15505
15506Code and Data Size: Current core subsystem library sizes are shown
15507below.  These are the code and data sizes for the acpica.lib
15508produced by the Microsoft Visual C++ 6.0 compiler, and these
15509values do not include any ACPI driver or OSPM code.  The debug
15510version of the code includes the debug output trace mechanism and
15511has a larger code and data size.  Note that these values will vary
15512depending on the efficiency of the compiler and the compiler
15513options used during generation.
15514
15515  Previous Release
15516    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
15517    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
15518  Current Release:
15519    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
15520    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
15521
15522
15523
155242) Linux
15525
15526Much work done on ACPI init (MADT and PCI IRQ routing support).
15527(Paul D. and Dominik Brodowski)
15528
15529Fix PCI IRQ-related panic on boot (Sam Revitch)
15530
15531Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
15532
15533Fix "MHz" typo (Dominik Brodowski)
15534
15535Fix RTC year 2000 issue (Dominik Brodowski)
15536
15537Preclude multiple button proc entries (Eric Brunet)
15538
15539Moved arch-specific code out of include/platform/aclinux.h
15540
155413) iASL Compiler Version X2044:
15542
15543Implemented error checking for the string used in the EISAID macro
15544(Usually used in the definition of the _HID object.)  The code now
15545strictly enforces the PnP format - exactly 7 characters, 3
15546uppercase letters and 4 hex digits.
15547
15548If a raw string is used in the definition of the _HID object
15549(instead of the EISAID macro), the string must contain all
15550alphanumeric characters (e.g., "*PNP0011" is not allowed because
15551of the asterisk.)
15552
15553Implemented checking for invalid use of ACPI reserved names for
15554most of the name creation operators (Name, Device, Event, Mutex,
15555OperationRegion, PowerResource, Processor, and ThermalZone.)
15556Previously, this check was only performed for control methods.
15557
15558Implemented an additional check on the Name operator to emit an
15559error if a reserved name that must be implemented in ASL as a
15560control method is used.  We know that a reserved name must be a
15561method if it is defined with input arguments.
15562
15563The warning emitted when a namespace object reference is not found
15564during the cross reference phase has been changed into an error.
15565The "External" directive should be used for names defined in other
15566modules.
15567
15568
155694) Tools and Utilities
15570
15571The 16-bit tools (adump16 and aexec16) have been regenerated and
15572tested.
15573
15574Fixed a problem with the output of both acpidump and adump16 where
15575the indentation of closing parentheses and brackets was not
15576
15577aligned properly with the parent block.
15578
15579
15580----------------------------------------
1558103 May 2002.  Summary of changes for this release.
15582
15583
155841) ACPI CA Core Subsystem Version 20020503:
15585
15586Added support a new OSL interface that allows the host operating
15587
15588system software to override the DSDT found in the firmware -
15589AcpiOsTableOverride.  With this interface, the OSL can examine the
15590version of the firmware DSDT and replace it with a different one
15591if desired.
15592
15593Added new external interfaces for accessing ACPI registers from
15594device drivers and other system software - AcpiGetRegister and
15595AcpiSetRegister.  This was simply an externalization of the
15596existing AcpiHwBitRegister interfaces.
15597
15598Fixed a regression introduced in the previous build where the
15599ASL/AML CreateField operator always returned an error,
15600"destination must be a NS Node".
15601
15602Extended the maximum time (before failure) to successfully enable
15603ACPI mode to 3 seconds.
15604
15605Code and Data Size: Current core subsystem library sizes are shown
15606below.  These are the code and data sizes for the acpica.lib
15607produced by the Microsoft Visual C++ 6.0 compiler, and these
15608values do not include any ACPI driver or OSPM code.  The debug
15609version of the code includes the debug output trace mechanism and
15610has a larger code and data size.  Note that these values will vary
15611depending on the efficiency of the compiler and the compiler
15612options used during generation.
15613
15614  Previous Release
15615    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
15616    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
15617  Current Release:
15618    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
15619    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
15620
15621
156222) Linux
15623
15624Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
15625free. While 3 out of 4 of our in-house systems work fine, the last
15626one still hangs when testing the LAPIC timer.
15627
15628Renamed many files in 2.5 kernel release to omit "acpi_" from the
15629name.
15630
15631Added warning on boot for Presario 711FR.
15632
15633Sleep improvements (Pavel Machek)
15634
15635ACPI can now be built without CONFIG_PCI enabled.
15636
15637IA64: Fixed memory map functions (JI Lee)
15638
15639
156403) iASL Compiler Version X2043:
15641
15642Added support to allow the compiler to be integrated into the MS
15643VC++ development environment for one-button compilation of single
15644files or entire projects -- with error-to-source-line mapping.
15645
15646Implemented support for compile-time constant folding for the
15647Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
15648specification.  This allows the ASL writer to use expressions
15649instead of Integer/Buffer/String constants in terms that must
15650evaluate to constants at compile time and will also simplify the
15651emitted AML in any such sub-expressions that can be folded
15652(evaluated at compile-time.)  This increases the size of the
15653compiler significantly because a portion of the ACPI CA AML
15654interpreter is included within the compiler in order to pre-
15655evaluate constant expressions.
15656
15657
15658Fixed a problem with the "Unicode" ASL macro that caused the
15659compiler to fault.  (This macro is used in conjunction with the
15660_STR reserved name.)
15661
15662Implemented an AML opcode optimization to use the Zero, One, and
15663Ones opcodes where possible to further reduce the size of integer
15664constants and thus reduce the overall size of the generated AML
15665code.
15666
15667Implemented error checking for new reserved terms for ACPI version
156682.0A.
15669
15670Implemented the -qr option to display the current list of ACPI
15671reserved names known to the compiler.
15672
15673Implemented the -qc option to display the current list of ASL
15674operators that are allowed within constant expressions and can
15675therefore be folded at compile time if the operands are constants.
15676
15677
156784) Documentation
15679
15680Updated the Programmer's Reference for new interfaces, data types,
15681and memory allocation model options.
15682
15683Updated the iASL Compiler User Reference to apply new format and
15684add information about new features and options.
15685
15686----------------------------------------
1568719 April 2002.  Summary of changes for this release.
15688
156891) ACPI CA Core Subsystem Version 20020419:
15690
15691The source code base for the Core Subsystem has been completely
15692cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
15693versions.  The Lint option files used are included in the
15694/acpi/generate/lint directory.
15695
15696Implemented enhanced status/error checking across the entire
15697Hardware manager subsystem.  Any hardware errors (reported from
15698the OSL) are now bubbled up and will abort a running control
15699method.
15700
15701
15702Fixed a problem where the per-ACPI-table integer width (32 or 64)
15703was stored only with control method nodes, causing a fault when
15704non-control method code was executed during table loading.  The
15705solution implemented uses a global variable to indicate table
15706width across the entire ACPI subsystem.  Therefore, ACPI CA does
15707not support mixed integer widths across different ACPI tables
15708(DSDT, SSDT).
15709
15710Fixed a problem where NULL extended fields (X fields) in an ACPI
157112.0 ACPI FADT caused the table load to fail.  Although the
15712existing ACPI specification is a bit fuzzy on this topic, the new
15713behavior is to fall back on a ACPI 1.0 field if the corresponding
15714ACPI 2.0 X field is zero (even though the table revision indicates
15715a full ACPI 2.0 table.)  The ACPI specification will be updated to
15716clarify this issue.
15717
15718Fixed a problem with the SystemMemory operation region handler
15719where memory was always accessed byte-wise even if the AML-
15720specified access width was larger than a byte.  This caused
15721problems on systems with memory-mapped I/O.  Memory is now
15722accessed with the width specified.  On systems that do not support
15723non-aligned transfers, a check is made to guarantee proper address
15724alignment before proceeding in order to avoid an AML-caused
15725alignment fault within the kernel.
15726
15727
15728Fixed a problem with the ExtendedIrq resource where only one byte
15729of the 4-byte Irq field was extracted.
15730
15731Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
15732function was out of date and required a rewrite.
15733
15734Code and Data Size: Current core subsystem library sizes are shown
15735below.  These are the code and data sizes for the acpica.lib
15736produced by the Microsoft Visual C++ 6.0 compiler, and these
15737values do not include any ACPI driver or OSPM code.  The debug
15738version of the code includes the debug output trace mechanism and
15739has a larger code and data size.  Note that these values will vary
15740depending on the efficiency of the compiler and the compiler
15741options used during generation.
15742
15743  Previous Release
15744    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
15745    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
15746  Current Release:
15747    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
15748    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
15749
15750
157512) Linux
15752
15753PCI IRQ routing fixes (Dominik Brodowski)
15754
15755
157563) iASL Compiler Version X2042:
15757
15758Implemented an additional compile-time error check for a field
15759unit whose size + minimum access width would cause a run-time
15760access beyond the end-of-region.  Previously, only the field size
15761itself was checked.
15762
15763The Core subsystem and iASL compiler now share a common parse
15764object in preparation for compile-time evaluation of the type
157653/4/5 ASL operators.
15766
15767
15768----------------------------------------
15769Summary of changes for this release: 03_29_02
15770
157711) ACPI CA Core Subsystem Version 20020329:
15772
15773Implemented support for late evaluation of TermArg operands to
15774Buffer and Package objects.  This allows complex expressions to be
15775used in the declarations of these object types.
15776
15777Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
157781.0, if the field was larger than 32 bits, it was returned as a
15779buffer - otherwise it was returned as an integer.  In ACPI 2.0,
15780the field is returned as a buffer only if the field is larger than
1578164 bits.  The TableRevision is now considered when making this
15782conversion to avoid incompatibility with existing ASL code.
15783
15784Implemented logical addressing for AcpiOsGetRootPointer.  This
15785allows an RSDP with either a logical or physical address.  With
15786this support, the host OS can now override all ACPI tables with
15787one logical RSDP.  Includes implementation of  "typed" pointer
15788support to allow a common data type for both physical and logical
15789pointers internally.  This required a change to the
15790AcpiOsGetRootPointer interface.
15791
15792Implemented the use of ACPI 2.0 Generic Address Structures for all
15793GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
15794mapped I/O for these ACPI features.
15795
15796Initialization now ignores not only non-required tables (All
15797tables other than the FADT, FACS, DSDT, and SSDTs), but also does
15798not validate the table headers of unrecognized tables.
15799
15800Fixed a problem where a notify handler could only be
15801installed/removed on an object of type Device.  All "notify"
15802
15803objects are now supported -- Devices, Processor, Power, and
15804Thermal.
15805
15806Removed most verbosity from the ACPI_DB_INFO debug level.  Only
15807critical information is returned when this debug level is enabled.
15808
15809Code and Data Size: Current core subsystem library sizes are shown
15810below.  These are the code and data sizes for the acpica.lib
15811produced by the Microsoft Visual C++ 6.0 compiler, and these
15812values do not include any ACPI driver or OSPM code.  The debug
15813version of the code includes the debug output trace mechanism and
15814has a larger code and data size.  Note that these values will vary
15815depending on the efficiency of the compiler and the compiler
15816options used during generation.
15817
15818  Previous Release
15819    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
15820    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
15821  Current Release:
15822    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
15823    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
15824
15825
158262) Linux:
15827
15828The processor driver (acpi_processor.c) now fully supports ACPI
158292.0-based processor performance control (e.g. Intel(R)
15830SpeedStep(TM) technology) Note that older laptops that only have
15831the Intel "applet" interface are not supported through this.  The
15832'limit' and 'performance' interface (/proc) are fully functional.
15833[Note that basic policy for controlling performance state
15834transitions will be included in the next version of ospmd.]  The
15835idle handler was modified to more aggressively use C2, and PIIX4
15836errata handling underwent a complete overhaul (big thanks to
15837Dominik Brodowski).
15838
15839Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
15840based devices in the ACPI namespace are now dynamically bound
15841(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
15842This allows, among other things, ACPI to resolve bus numbers for
15843subordinate PCI bridges.
15844
15845Enhanced PCI IRQ routing to get the proper bus number for _PRT
15846entries defined underneath PCI bridges.
15847
15848Added IBM 600E to bad bios list due to invalid _ADR value for
15849PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
15850
15851In the process of adding full MADT support (e.g. IOAPIC) for IA32
15852(acpi.c, mpparse.c) -- stay tuned.
15853
15854Added back visual differentiation between fixed-feature and
15855control-method buttons in dmesg.  Buttons are also subtyped (e.g.
15856button/power/PWRF) to simplify button identification.
15857
15858We no longer use -Wno-unused when compiling debug. Please ignore
15859any "_THIS_MODULE defined but not used" messages.
15860
15861Can now shut down the system using "magic sysrq" key.
15862
15863
158643) iASL Compiler version 2041:
15865
15866Fixed a problem where conversion errors for hex/octal/decimal
15867constants were not reported.
15868
15869Implemented a fix for the General Register template Address field.
15870This field was 8 bits when it should be 64.
15871
15872Fixed a problem where errors/warnings were no longer being emitted
15873within the listing output file.
15874
15875Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
15876exactly 4 characters, alphanumeric only.
15877
15878
15879
15880
15881----------------------------------------
15882Summary of changes for this release: 03_08_02
15883
15884
158851) ACPI CA Core Subsystem Version 20020308:
15886
15887Fixed a problem with AML Fields where the use of the "AccessAny"
15888keyword could cause an interpreter error due to attempting to read
15889or write beyond the end of the parent Operation Region.
15890
15891Fixed a problem in the SystemMemory Operation Region handler where
15892an attempt was made to map memory beyond the end of the region.
15893This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
15894errors on some Linux systems.
15895
15896Fixed a problem where the interpreter/namespace "search to root"
15897algorithm was not functioning for some object types.  Relaxed the
15898internal restriction on the search to allow upsearches for all
15899external object types as well as most internal types.
15900
15901
159022) Linux:
15903
15904We now use safe_halt() macro versus individual calls to sti | hlt.
15905
15906Writing to the processor limit interface should now work. "echo 1"
15907will increase the limit, 2 will decrease, and 0 will reset to the
15908
15909default.
15910
15911
159123) ASL compiler:
15913
15914Fixed segfault on Linux version.
15915
15916
15917----------------------------------------
15918Summary of changes for this release: 02_25_02
15919
159201) ACPI CA Core Subsystem:
15921
15922
15923Fixed a problem where the GPE bit masks were not initialized
15924properly, causing erratic GPE behavior.
15925
15926Implemented limited support for multiple calling conventions.  The
15927code can be generated with either the VPL (variable parameter
15928list, or "C") convention, or the FPL (fixed parameter list, or
15929"Pascal") convention.  The core subsystem is about 3.4% smaller
15930when generated with FPL.
15931
15932
159332) Linux
15934
15935Re-add some /proc/acpi/event functionality that was lost during
15936the rewrite
15937
15938Resolved issue with /proc events for fixed-feature buttons showing
15939up as the system device.
15940
15941Fixed checks on C2/C3 latencies to be inclusive of maximum values.
15942
15943Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
15944
15945Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
15946
15947Fixed limit interface & usage to fix bugs with passive cooling
15948hysterisis.
15949
15950Restructured PRT support.
15951
15952
15953----------------------------------------
15954Summary of changes for this label: 02_14_02
15955
15956
159571) ACPI CA Core Subsystem:
15958
15959Implemented support in AcpiLoadTable to allow loading of FACS and
15960FADT tables.
15961
15962Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
15963been removed.  All 64-bit platforms should be migrated to the ACPI
159642.0 tables.  The actbl71.h header has been removed from the source
15965tree.
15966
15967All C macros defined within the subsystem have been prefixed with
15968"ACPI_" to avoid collision with other system include files.
15969
15970Removed the return value for the two AcpiOsPrint interfaces, since
15971it is never used and causes lint warnings for ignoring the return
15972value.
15973
15974Added error checking to all internal mutex acquire and release
15975calls.  Although a failure from one of these interfaces is
15976probably a fatal system error, these checks will cause the
15977immediate abort of the currently executing method or interface.
15978
15979Fixed a problem where the AcpiSetCurrentResources interface could
15980fault.  This was a side effect of the deployment of the new memory
15981allocation model.
15982
15983Fixed a couple of problems with the Global Lock support introduced
15984in the last major build.  The "common" (1.0/2.0) internal FACS was
15985being overwritten with the FACS signature and clobbering the
15986Global Lock pointer.  Also, the actual firmware FACS was being
15987unmapped after construction of the "common" FACS, preventing
15988access to the actual Global Lock field within it.  The "common"
15989internal FACS is no longer installed as an actual ACPI table; it
15990is used simply as a global.
15991
15992Code and Data Size: Current core subsystem library sizes are shown
15993below.  These are the code and data sizes for the acpica.lib
15994produced by the Microsoft Visual C++ 6.0 compiler, and these
15995values do not include any ACPI driver or OSPM code.  The debug
15996version of the code includes the debug output trace mechanism and
15997has a larger code and data size.  Note that these values will vary
15998depending on the efficiency of the compiler and the compiler
15999options used during generation.
16000
16001  Previous Release (02_07_01)
16002    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
16003    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
16004  Current Release:
16005    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
16006    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
16007
16008
160092) Linux
16010
16011Updated Linux-specific code for core macro and OSL interface
16012changes described above.
16013
16014Improved /proc/acpi/event. It now can be opened only once and has
16015proper poll functionality.
16016
16017Fixed and restructured power management (acpi_bus).
16018
16019Only create /proc "view by type" when devices of that class exist.
16020
16021Fixed "charging/discharging" bug (and others) in acpi_battery.
16022
16023Improved thermal zone code.
16024
16025
160263) ASL Compiler, version X2039:
16027
16028
16029Implemented the new compiler restriction on ASL String hex/octal
16030escapes to non-null, ASCII values.  An error results if an invalid
16031value is used.  (This will require an ACPI 2.0 specification
16032change.)
16033
16034AML object labels that are output to the optional C and ASM source
16035are now prefixed with both the ACPI table signature and table ID
16036to help guarantee uniqueness within a large BIOS project.
16037
16038
16039----------------------------------------
16040Summary of changes for this label: 02_01_02
16041
160421) ACPI CA Core Subsystem:
16043
16044ACPI 2.0 support is complete in the entire Core Subsystem and the
16045ASL compiler. All new ACPI 2.0 operators are implemented and all
16046other changes for ACPI 2.0 support are complete.  With
16047simultaneous code and data optimizations throughout the subsystem,
16048ACPI 2.0 support has been implemented with almost no additional
16049cost in terms of code and data size.
16050
16051Implemented a new mechanism for allocation of return buffers.  If
16052the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
16053be allocated on behalf of the caller.  Consolidated all return
16054buffer validation and allocation to a common procedure.  Return
16055buffers will be allocated via the primary OSL allocation interface
16056since it appears that a separate pool is not needed by most users.
16057If a separate pool is required for these buffers, the caller can
16058still use the original mechanism and pre-allocate the buffer(s).
16059
16060Implemented support for string operands within the DerefOf
16061operator.
16062
16063Restructured the Hardware and Event managers to be table driven,
16064simplifying the source code and reducing the amount of generated
16065code.
16066
16067Split the common read/write low-level ACPI register bitfield
16068procedure into a separate read and write, simplifying the code
16069considerably.
16070
16071Obsoleted the AcpiOsCallocate OSL interface.  This interface was
16072used only a handful of times and didn't have enough critical mass
16073for a separate interface.  Replaced with a common calloc procedure
16074in the core.
16075
16076Fixed a reported problem with the GPE number mapping mechanism
16077that allows GPE1 numbers to be non-contiguous with GPE0.
16078Reorganized the GPE information and shrunk a large array that was
16079originally large enough to hold info for all possible GPEs (256)
16080to simply large enough to hold all GPEs up to the largest GPE
16081number on the machine.
16082
16083Fixed a reported problem with resource structure alignment on 64-
16084bit platforms.
16085
16086Changed the AcpiEnableEvent and AcpiDisableEvent external
16087interfaces to not require any flags for the common case of
16088enabling/disabling a GPE.
16089
16090Implemented support to allow a "Notify" on a Processor object.
16091
16092Most TBDs in comments within the source code have been resolved
16093and eliminated.
16094
16095
16096Fixed a problem in the interpreter where a standalone parent
16097prefix (^) was not handled correctly in the interpreter and
16098debugger.
16099
16100Removed obsolete and unnecessary GPE save/restore code.
16101
16102Implemented Field support in the ASL Load operator.  This allows a
16103table to be loaded from a named field, in addition to loading a
16104table directly from an Operation Region.
16105
16106Implemented timeout and handle support in the external Global Lock
16107interfaces.
16108
16109Fixed a problem in the AcpiDump utility where pathnames were no
16110longer being generated correctly during the dump of named objects.
16111
16112Modified the AML debugger to give a full display of if/while
16113predicates instead of just one AML opcode at a time.  (The
16114predicate can have several nested ASL statements.)  The old method
16115was confusing during single stepping.
16116
16117Code and Data Size: Current core subsystem library sizes are shown
16118below. These are the code and data sizes for the acpica.lib
16119produced by the Microsoft Visual C++ 6.0 compiler, and these
16120values do not include any ACPI driver or OSPM code.  The debug
16121version of the code includes the debug output trace mechanism and
16122has a larger code and data size.  Note that these values will vary
16123depending on the efficiency of the compiler and the compiler
16124options used during generation.
16125
16126  Previous Release (12_18_01)
16127     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
16128     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
16129   Current Release:
16130     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
16131     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
16132
161332) Linux
16134
16135 Implemented fix for PIIX reverse throttling errata (Processor
16136driver)
16137
16138Added new Limit interface (Processor and Thermal drivers)
16139
16140New thermal policy (Thermal driver)
16141
16142Many updates to /proc
16143
16144Battery "low" event support (Battery driver)
16145
16146Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
16147
16148IA32 - IA64 initialization unification, no longer experimental
16149
16150Menuconfig options redesigned
16151
161523) ASL Compiler, version X2037:
16153
16154Implemented several new output features to simplify integration of
16155AML code into  firmware: 1) Output the AML in C source code with
16156labels for each named ASL object.  The    original ASL source code
16157is interleaved as C comments. 2) Output the AML in ASM source code
16158with labels and interleaved ASL    source. 3) Output the AML in
16159raw hex table form, in either C or ASM.
16160
16161Implemented support for optional string parameters to the
16162LoadTable operator.
16163
16164Completed support for embedded escape sequences within string
16165literals.  The compiler now supports all single character escapes
16166as well as the Octal and Hex escapes.  Note: the insertion of a
16167null byte into a string literal (via the hex/octal escape) causes
16168the string to be immediately terminated.  A warning is issued.
16169
16170Fixed a problem where incorrect AML was generated for the case
16171where an ASL namepath consists of a single parent prefix (
16172
16173) with no trailing name segments.
16174
16175The compiler has been successfully generated with a 64-bit C
16176compiler.
16177
16178
16179
16180
16181----------------------------------------
16182Summary of changes for this label: 12_18_01
16183
161841) Linux
16185
16186Enhanced blacklist with reason and severity fields. Any table's
16187signature may now be used to identify a blacklisted system.
16188
16189Call _PIC control method to inform the firmware which interrupt
16190model the OS is using. Turn on any disabled link devices.
16191
16192Cleaned up busmgr /proc error handling (Andreas Dilger)
16193
16194 2) ACPI CA Core Subsystem:
16195
16196Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
16197while loop)
16198
16199Completed implementation of the ACPI 2.0 "Continue",
16200"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
16201operators.  All new ACPI 2.0 operators are now implemented in both
16202the ASL compiler and the AML interpreter.  The only remaining ACPI
162032.0 task is support for the String data type in the DerefOf
16204operator.  Fixed a problem with AcquireMutex where the status code
16205was lost if the caller had to actually wait for the mutex.
16206
16207Increased the maximum ASL Field size from 64K bits to 4G bits.
16208
16209Completed implementation of the external Global Lock interfaces --
16210AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
16211Handler parameters were added.
16212
16213Completed another pass at removing warnings and issues when
16214compiling with 64-bit compilers.  The code now compiles cleanly
16215with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
16216add and subtract (diff) macros have changed considerably.
16217
16218
16219Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1622064-bit platforms, 32-bits on all others.  This type is used
16221wherever memory allocation and/or the C sizeof() operator is used,
16222and affects the OSL memory allocation interfaces AcpiOsAllocate
16223and AcpiOsCallocate.
16224
16225Implemented sticky user breakpoints in the AML debugger.
16226
16227Code and Data Size: Current core subsystem library sizes are shown
16228below. These are the code and data sizes for the acpica.lib
16229produced by the Microsoft Visual C++ 6.0 compiler, and these
16230values do not include any ACPI driver or OSPM code.  The debug
16231version of the code includes the debug output trace mechanism and
16232has a larger code and data size. Note that these values will vary
16233depending on the efficiency of the compiler and the compiler
16234options used during generation.
16235
16236  Previous Release (12_05_01)
16237     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
16238     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
16239   Current Release:
16240     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
16241     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
16242
16243 3) ASL Compiler, version X2034:
16244
16245Now checks for (and generates an error if detected) the use of a
16246Break or Continue statement without an enclosing While statement.
16247
16248
16249Successfully generated the compiler with the Intel 64-bit C
16250compiler.
16251
16252 ----------------------------------------
16253Summary of changes for this label: 12_05_01
16254
16255 1) ACPI CA Core Subsystem:
16256
16257The ACPI 2.0 CopyObject operator is fully implemented.  This
16258operator creates a new copy of an object (and is also used to
16259bypass the "implicit conversion" mechanism of the Store operator.)
16260
16261The ACPI 2.0 semantics for the SizeOf operator are fully
16262implemented.  The change is that performing a SizeOf on a
16263reference object causes an automatic dereference of the object to
16264tha actual value before the size is evaluated. This behavior was
16265undefined in ACPI 1.0.
16266
16267The ACPI 2.0 semantics for the Extended IRQ resource descriptor
16268have been implemented.  The interrupt polarity and mode are now
16269independently set.
16270
16271Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
16272appearing in Package objects were not properly converted to
16273integers when the internal Package was converted to an external
16274object (via the AcpiEvaluateObject interface.)
16275
16276Fixed a problem with the namespace object deletion mechanism for
16277objects created by control methods.  There were two parts to this
16278problem: 1) Objects created during the initialization phase method
16279parse were not being deleted, and 2) The object owner ID mechanism
16280to track objects was broken.
16281
16282Fixed a problem where the use of the ASL Scope operator within a
16283control method would result in an invalid opcode exception.
16284
16285Fixed a problem introduced in the previous label where the buffer
16286length required for the _PRT structure was not being returned
16287correctly.
16288
16289Code and Data Size: Current core subsystem library sizes are shown
16290below. These are the code and data sizes for the acpica.lib
16291produced by the Microsoft Visual C++ 6.0 compiler, and these
16292values do not include any ACPI driver or OSPM code.  The debug
16293version of the code includes the debug output trace mechanism and
16294has a larger code and data size.  Note that these values will vary
16295depending on the efficiency of the compiler and the compiler
16296options used during generation.
16297
16298  Previous Release (11_20_01)
16299     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
16300     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
16301
16302  Current Release:
16303     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
16304     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
16305
16306 2) Linux:
16307
16308Updated all files to apply cleanly against 2.4.16.
16309
16310Added basic PCI Interrupt Routing Table (PRT) support for IA32
16311(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
16312version supports both static and dyanmic PRT entries, but dynamic
16313entries are treated as if they were static (not yet
16314reconfigurable).  Architecture- specific code to use this data is
16315absent on IA32 but should be available shortly.
16316
16317Changed the initialization sequence to start the ACPI interpreter
16318(acpi_init) prior to initialization of the PCI driver (pci_init)
16319in init/main.c.  This ordering is required to support PRT and
16320facilitate other (future) enhancement.  A side effect is that the
16321ACPI bus driver and certain device drivers can no longer be loaded
16322as modules.
16323
16324Modified the 'make menuconfig' options to allow PCI Interrupt
16325Routing support to be included without the ACPI Bus and other
16326device drivers.
16327
16328 3) ASL Compiler, version X2033:
16329
16330Fixed some issues with the use of the new CopyObject and
16331DataTableRegion operators.  Both are fully functional.
16332
16333 ----------------------------------------
16334Summary of changes for this label: 11_20_01
16335
16336 20 November 2001.  Summary of changes for this release.
16337
16338 1) ACPI CA Core Subsystem:
16339
16340Updated Index support to match ACPI 2.0 semantics.  Storing a
16341Integer, String, or Buffer to an Index of a Buffer will store only
16342the least-significant byte of the source to the Indexed buffer
16343byte.  Multiple writes are not performed.
16344
16345Fixed a problem where the access type used in an AccessAs ASL
16346operator was not recorded correctly into the field object.
16347
16348Fixed a problem where ASL Event objects were created in a
16349signalled state. Events are now created in an unsignalled state.
16350
16351The internal object cache is now purged after table loading and
16352initialization to reduce the use of dynamic kernel memory -- on
16353the assumption that object use is greatest during the parse phase
16354of the entire table (versus the run-time use of individual control
16355methods.)
16356
16357ACPI 2.0 variable-length packages are now fully operational.
16358
16359Code and Data Size: Code and Data optimizations have permitted new
16360feature development with an actual reduction in the library size.
16361Current core subsystem library sizes are shown below.  These are
16362the code and data sizes for the acpica.lib produced by the
16363Microsoft Visual C++ 6.0 compiler, and these values do not include
16364any ACPI driver or OSPM code.  The debug version of the code
16365includes the debug output trace mechanism and has a larger code
16366and data size.  Note that these values will vary depending on the
16367efficiency of the compiler and the compiler options used during
16368generation.
16369
16370  Previous Release (11_09_01):
16371     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
16372     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
16373
16374  Current Release:
16375     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
16376     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
16377
16378 2) Linux:
16379
16380Enhanced the ACPI boot-time initialization code to allow the use
16381of Local APIC tables for processor enumeration on IA-32, and to
16382pave the way for a fully MPS-free boot (on SMP systems) in the
16383near future.  This functionality replaces
16384arch/i386/kernel/acpitables.c, which was introduced in an earlier
163852.4.15-preX release.  To enable this feature you must add
16386"acpi_boot=on" to the kernel command line -- see the help entry
16387for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
16388the works...
16389
16390Restructured the configuration options to allow boot-time table
16391parsing support without inclusion of the ACPI Interpreter (and
16392other) code.
16393
16394NOTE: This release does not include fixes for the reported events,
16395power-down, and thermal passive cooling issues (coming soon).
16396
16397 3) ASL Compiler:
16398
16399Added additional typechecking for Fields within restricted access
16400Operation Regions.  All fields within EC and CMOS regions must be
16401declared with ByteAcc. All fields withing SMBus regions must be
16402declared with the BufferAcc access type.
16403
16404Fixed a problem where the listing file output of control methods
16405no longer interleaved the actual AML code with the ASL source
16406code.
16407
16408
16409
16410
16411----------------------------------------
16412Summary of changes for this label: 11_09_01
16413
164141) ACPI CA Core Subsystem:
16415
16416Implemented ACPI 2.0-defined support for writes to fields with a
16417Buffer, String, or Integer source operand that is smaller than the
16418target field. In these cases, the source operand is zero-extended
16419to fill the target field.
16420
16421Fixed a problem where a Field starting bit offset (within the
16422parent operation region) was calculated incorrectly if the
16423
16424alignment of the field differed from the access width.  This
16425affected CreateWordField, CreateDwordField, CreateQwordField, and
16426possibly other fields that use the "AccessAny" keyword.
16427
16428Fixed a problem introduced in the 11_02_01 release where indirect
16429stores through method arguments did not operate correctly.
16430
164312) Linux:
16432
16433Implemented boot-time ACPI table parsing support
16434(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
16435facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
16436legacy BIOS interfaces (e.g. MPS) for the configuration of system
16437processors, memory, and interrupts during setup_arch().  Note that
16438this patch does not include the required architecture-specific
16439changes required to apply this information -- subsequent patches
16440will be posted for both IA32 and IA64 to achieve this.
16441
16442Added low-level sleep support for IA32 platforms, courtesy of Pat
16443Mochel. This allows IA32 systems to transition to/from various
16444sleeping states (e.g. S1, S3), although the lack of a centralized
16445driver model and power-manageable drivers will prevent its
16446(successful) use on most systems.
16447
16448Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
16449submenu, unified IA32 and IA64 options, added new "Boot using ACPI
16450tables" option, etc.
16451
16452Increased the default timeout for the EC driver from 1ms to 10ms
16453(1000 cycles of 10us) to try to address AE_TIME errors during EC
16454transactions.
16455
16456 ----------------------------------------
16457Summary of changes for this label: 11_02_01
16458
164591) ACPI CA Core Subsystem:
16460
16461ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
16462(QWordAcc keyword). All ACPI 2.0 64-bit support is now
16463implemented.
16464
16465OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
16466changes to support ACPI 2.0 Qword field access.  Read/Write
16467PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
16468accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
16469the value parameter for the address space handler interface is now
16470an ACPI_INTEGER.  OSL implementations of these interfaces must now
16471handle the case where the Width parameter is 64.
16472
16473Index Fields: Fixed a problem where unaligned bit assembly and
16474disassembly for IndexFields was not supported correctly.
16475
16476Index and Bank Fields:  Nested Index and Bank Fields are now
16477supported. During field access, a check is performed to ensure
16478that the value written to an Index or Bank register is not out of
16479the range of the register.  The Index (or Bank) register is
16480written before each access to the field data. Future support will
16481include allowing individual IndexFields to be wider than the
16482DataRegister width.
16483
16484Fields: Fixed a problem where the AML interpreter was incorrectly
16485attempting to write beyond the end of a Field/OpRegion.  This was
16486a boundary case that occurred when a DWORD field was written to a
16487BYTE access OpRegion, forcing multiple writes and causing the
16488interpreter to write one datum too many.
16489
16490Fields: Fixed a problem with Field/OpRegion access where the
16491starting bit address of a field was incorrectly calculated if the
16492current access type was wider than a byte (WordAcc, DwordAcc, or
16493QwordAcc).
16494
16495Fields: Fixed a problem where forward references to individual
16496FieldUnits (individual Field names within a Field definition) were
16497not resolved during the AML table load.
16498
16499Fields: Fixed a problem where forward references from a Field
16500definition to the parent Operation Region definition were not
16501resolved during the AML table load.
16502
16503Fields: Duplicate FieldUnit names within a scope are now detected
16504during AML table load.
16505
16506Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
16507returned an incorrect name for the root node.
16508
16509Code and Data Size: Code and Data optimizations have permitted new
16510feature development with an actual reduction in the library size.
16511Current core subsystem library sizes are shown below.  These are
16512the code and data sizes for the acpica.lib produced by the
16513Microsoft Visual C++ 6.0 compiler, and these values do not include
16514any ACPI driver or OSPM code.  The debug version of the code
16515includes the debug output trace mechanism and has a larger code
16516and data size.  Note that these values will vary depending on the
16517efficiency of the compiler and the compiler options used during
16518generation.
16519
16520  Previous Release (10_18_01):
16521     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
16522     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
16523
16524  Current Release:
16525     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
16526     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
16527
16528 2) Linux:
16529
16530Improved /proc processor output (Pavel Machek) Re-added
16531MODULE_LICENSE("GPL") to all modules.
16532
16533 3) ASL Compiler version X2030:
16534
16535Duplicate FieldUnit names within a scope are now detected and
16536flagged as errors.
16537
16538 4) Documentation:
16539
16540Programmer Reference updated to reflect OSL and address space
16541handler interface changes described above.
16542
16543----------------------------------------
16544Summary of changes for this label: 10_18_01
16545
16546ACPI CA Core Subsystem:
16547
16548Fixed a problem with the internal object reference count mechanism
16549that occasionally caused premature object deletion. This resolves
16550all of the outstanding problem reports where an object is deleted
16551in the middle of an interpreter evaluation.  Although this problem
16552only showed up in rather obscure cases, the solution to the
16553problem involved an adjustment of all reference counts involving
16554objects attached to namespace nodes.
16555
16556Fixed a problem with Field support in the interpreter where
16557writing to an aligned field whose length is an exact multiple (2
16558or greater) of the field access granularity would cause an attempt
16559to write beyond the end of the field.
16560
16561The top level AML opcode execution functions within the
16562interpreter have been renamed with a more meaningful and
16563consistent naming convention.  The modules exmonad.c and
16564exdyadic.c were eliminated.  New modules are exoparg1.c,
16565exoparg2.c, exoparg3.c, and exoparg6.c.
16566
16567Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
16568
16569Fixed a problem where the AML debugger was causing some internal
16570objects to not be deleted during subsystem termination.
16571
16572Fixed a problem with the external AcpiEvaluateObject interface
16573where the subsystem would fault if the named object to be
16574evaluated refered to a constant such as Zero, Ones, etc.
16575
16576Fixed a problem with IndexFields and BankFields where the
16577subsystem would fault if the index, data, or bank registers were
16578not defined in the same scope as the field itself.
16579
16580Added printf format string checking for compilers that support
16581this feature.  Corrected more than 50 instances of issues with
16582format specifiers within invocations of ACPI_DEBUG_PRINT
16583throughout the core subsystem code.
16584
16585The ASL "Revision" operator now returns the ACPI support level
16586implemented in the core - the value "2" since the ACPI 2.0 support
16587is more than 50% implemented.
16588
16589Enhanced the output of the AML debugger "dump namespace" command
16590to output in a more human-readable form.
16591
16592Current core subsystem library code sizes are shown below.  These
16593
16594are the code and data sizes for the acpica.lib produced by the
16595Microsoft Visual C++ 6.0 compiler, and these values do not include
16596any ACPI driver or OSPM code.  The debug version of the code
16597includes the full debug trace mechanism -- leading to a much
16598
16599larger code and data size.  Note that these values will vary
16600depending on the efficiency of the compiler and the compiler
16601options used during generation.
16602
16603     Previous Label (09_20_01):
16604     Non-Debug Version:    65K Code,     5K Data,     70K Total
16605     Debug Version:       138K Code,    58K Data,    196K Total
16606
16607     This Label:
16608
16609     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
16610     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
16611
16612Linux:
16613
16614Implemented a "Bad BIOS Blacklist" to track machines that have
16615known ASL/AML problems.
16616
16617Enhanced the /proc interface for the thermal zone driver and added
16618support for _HOT (the critical suspend trip point).  The 'info'
16619file now includes threshold/policy information, and allows setting
16620of _SCP (cooling preference) and _TZP (polling frequency) values
16621to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
16622frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
16623preference to the passive/quiet mode (if supported by the ASL).
16624
16625Implemented a workaround for a gcc bug that resuted in an OOPs
16626when loading the control method battery driver.
16627
16628 ----------------------------------------
16629Summary of changes for this label: 09_20_01
16630
16631 ACPI CA Core Subsystem:
16632
16633The AcpiEnableEvent and AcpiDisableEvent interfaces have been
16634modified to allow individual GPE levels to be flagged as wake-
16635enabled (i.e., these GPEs are to remain enabled when the platform
16636sleeps.)
16637
16638The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
16639support wake-enabled GPEs.  This means that upon entering the
16640sleep state, all GPEs that are not wake-enabled are disabled.
16641When leaving the sleep state, these GPEs are reenabled.
16642
16643A local double-precision divide/modulo module has been added to
16644enhance portability to OS kernels where a 64-bit math library is
16645not available.  The new module is "utmath.c".
16646
16647Several optimizations have been made to reduce the use of CPU
16648stack.  Originally over 2K, the maximum stack usage is now below
166492K at 1860  bytes (1.82k)
16650
16651Fixed a problem with the AcpiGetFirmwareTable interface where the
16652root table pointer was not mapped into a logical address properly.
16653
16654Fixed a problem where a NULL pointer was being dereferenced in the
16655interpreter code for the ASL Notify operator.
16656
16657Fixed a problem where the use of the ASL Revision operator
16658returned an error. This operator now returns the current version
16659of the ACPI CA core subsystem.
16660
16661Fixed a problem where objects passed as control method parameters
16662to AcpiEvaluateObject were always deleted at method termination.
16663However, these objects may end up being stored into the namespace
16664by the called method.  The object reference count mechanism was
16665applied to these objects instead of a force delete.
16666
16667Fixed a problem where static strings or buffers (contained in the
16668AML code) that are declared as package elements within the ASL
16669code could cause a fault because the interpreter would attempt to
16670delete them.  These objects are now marked with the "static
16671object" flag to prevent any attempt to delete them.
16672
16673Implemented an interpreter optimization to use operands directly
16674from the state object instead of extracting the operands to local
16675variables.  This reduces stack use and code size, and improves
16676performance.
16677
16678The module exxface.c was eliminated as it was an unnecessary extra
16679layer of code.
16680
16681Current core subsystem library code sizes are shown below.  These
16682are the code and data sizes for the acpica.lib produced by the
16683Microsoft Visual C++ 6.0 compiler, and these values do not include
16684any ACPI driver or OSPM code.  The debug version of the code
16685includes the full debug trace mechanism -- leading to a much
16686larger code and data size.  Note that these values will vary
16687depending on the efficiency of the compiler and the compiler
16688options used during generation.
16689
16690  Non-Debug Version:  65K Code,   5K Data,   70K Total
16691(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
16692Total  (Previously 195K)
16693
16694Linux:
16695
16696Support for ACPI 2.0 64-bit integers has been added.   All ACPI
16697Integer objects are now 64 bits wide
16698
16699All Acpi data types and structures are now in lower case.  Only
16700Acpi macros are upper case for differentiation.
16701
16702 Documentation:
16703
16704Changes to the external interfaces as described above.
16705
16706 ----------------------------------------
16707Summary of changes for this label: 08_31_01
16708
16709 ACPI CA Core Subsystem:
16710
16711A bug with interpreter implementation of the ASL Divide operator
16712was found and fixed.  The implicit function return value (not the
16713explicit store operands) was returning the remainder instead of
16714the quotient.  This was a longstanding bug and it fixes several
16715known outstanding issues on various platforms.
16716
16717The ACPI_DEBUG_PRINT and function trace entry/exit macros have
16718been further optimized for size.  There are 700 invocations of the
16719DEBUG_PRINT macro alone, so each optimization reduces the size of
16720the debug version of the subsystem significantly.
16721
16722A stack trace mechanism has been implemented.  The maximum stack
16723usage is about 2K on 32-bit platforms.  The debugger command "stat
16724stack" will display the current maximum stack usage.
16725
16726All public symbols and global variables within the subsystem are
16727now prefixed with the string "Acpi".  This keeps all of the
16728symbols grouped together in a kernel map, and avoids conflicts
16729with other kernel subsystems.
16730
16731Most of the internal fixed lookup tables have been moved into the
16732code segment via the const operator.
16733
16734Several enhancements have been made to the interpreter to both
16735reduce the code size and improve performance.
16736
16737Current core subsystem library code sizes are shown below.  These
16738are the code and data sizes for the acpica.lib produced by the
16739Microsoft Visual C++ 6.0 compiler, and these values do not include
16740any ACPI driver or OSPM code.  The debug version of the code
16741includes the full debug trace mechanism which contains over 700
16742invocations of the DEBUG_PRINT macro, 500 function entry macro
16743invocations, and over 900 function exit macro invocations --
16744leading to a much larger code and data size.  Note that these
16745values will vary depending on the efficiency of the compiler and
16746the compiler options used during generation.
16747
16748        Non-Debug Version:  64K Code,   5K Data,   69K Total
16749Debug Version:     137K Code,  58K Data,  195K Total
16750
16751 Linux:
16752
16753Implemented wbinvd() macro, pending a kernel-wide definition.
16754
16755Fixed /proc/acpi/event to handle poll() and short reads.
16756
16757 ASL Compiler, version X2026:
16758
16759Fixed a problem introduced in the previous label where the AML
16760
16761code emitted for package objects produced packages with zero
16762length.
16763
16764 ----------------------------------------
16765Summary of changes for this label: 08_16_01
16766
16767ACPI CA Core Subsystem:
16768
16769The following ACPI 2.0 ASL operators have been implemented in the
16770AML interpreter (These are already supported by the Intel ASL
16771compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
16772ToBuffer.  Support for 64-bit AML constants is implemented in the
16773AML parser, debugger, and disassembler.
16774
16775The internal memory tracking mechanism (leak detection code) has
16776been upgraded to reduce the memory overhead (a separate tracking
16777block is no longer allocated for each memory allocation), and now
16778supports all of the internal object caches.
16779
16780The data structures and code for the internal object caches have
16781been coelesced and optimized so that there is a single cache and
16782memory list data structure and a single group of functions that
16783implement generic cache management.  This has reduced the code
16784size in both the debug and release versions of the subsystem.
16785
16786The DEBUG_PRINT macro(s) have been optimized for size and replaced
16787by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
16788different, because it generates a single call to an internal
16789function.  This results in a savings of about 90 bytes per
16790invocation, resulting in an overall code and data savings of about
1679116% in the debug version of the subsystem.
16792
16793 Linux:
16794
16795Fixed C3 disk corruption problems and re-enabled C3 on supporting
16796machines.
16797
16798Integrated low-level sleep code by Patrick Mochel.
16799
16800Further tweaked source code Linuxization.
16801
16802Other minor fixes.
16803
16804 ASL Compiler:
16805
16806Support for ACPI 2.0 variable length packages is fixed/completed.
16807
16808Fixed a problem where the optional length parameter for the ACPI
168092.0 ToString operator.
16810
16811Fixed multiple extraneous error messages when a syntax error is
16812detected within the declaration line of a control method.
16813
16814 ----------------------------------------
16815Summary of changes for this label: 07_17_01
16816
16817ACPI CA Core Subsystem:
16818
16819Added a new interface named AcpiGetFirmwareTable to obtain any
16820ACPI table via the ACPI signature.  The interface can be called at
16821any time during kernel initialization, even before the kernel
16822virtual memory manager is initialized and paging is enabled.  This
16823allows kernel subsystems to obtain ACPI tables very early, even
16824before the ACPI CA subsystem is initialized.
16825
16826Fixed a problem where Fields defined with the AnyAcc attribute
16827could be resolved to the incorrect address under the following
16828conditions: 1) the field width is larger than 8 bits and 2) the
16829parent operation region is not defined on a DWORD boundary.
16830
16831Fixed a problem where the interpreter is not being locked during
16832namespace initialization (during execution of the _INI control
16833methods), causing an error when an attempt is made to release it
16834later.
16835
16836ACPI 2.0 support in the AML Interpreter has begun and will be
16837ongoing throughout the rest of this year.  In this label, The Mod
16838operator is implemented.
16839
16840Added a new data type to contain full PCI addresses named
16841ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
16842and Function values.
16843
16844 Linux:
16845
16846Enhanced the Linux version of the source code to change most
16847capitalized ACPI type names to lowercase. For example, all
16848instances of ACPI_STATUS are changed to acpi_status.  This will
16849result in a large diff, but the change is strictly cosmetic and
16850aligns the CA code closer to the Linux coding standard.
16851
16852OSL Interfaces:
16853
16854The interfaces to the PCI configuration space have been changed to
16855add the PCI Segment number and to split the single 32-bit combined
16856DeviceFunction field into two 16-bit fields.  This was
16857accomplished by moving the four values that define an address in
16858PCI configuration space (segment, bus, device, and function) to
16859the new ACPI_PCI_ID structure.
16860
16861The changes to the PCI configuration space interfaces led to a
16862reexamination of the complete set of address space access
16863interfaces for PCI, I/O, and Memory.  The previously existing 18
16864interfaces have proven difficult to maintain (any small change
16865must be propagated across at least 6 interfaces) and do not easily
16866allow for future expansion to 64 bits if necessary.  Also, on some
16867systems, it would not be appropriate to demultiplex the access
16868width (8, 16, 32,or 64) before calling the OSL if the
16869corresponding native OS interfaces contain a similar access width
16870parameter.  For these reasons, the 18 address space interfaces
16871have been replaced by these 6 new ones:
16872
16873AcpiOsReadPciConfiguration
16874AcpiOsWritePciConfiguration
16875AcpiOsReadMemory
16876AcpiOsWriteMemory
16877AcpiOsReadPort
16878AcpiOsWritePort
16879
16880Added a new interface named AcpiOsGetRootPointer to allow the OSL
16881to perform the platform and/or OS-specific actions necessary to
16882obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
16883interface will simply call down to the CA core to perform the low-
16884memory search for the table.  On IA-64, the RSDP is obtained from
16885EFI.  Migrating this interface to the OSL allows the CA core to
16886
16887remain OS and platform independent.
16888
16889Added a new interface named AcpiOsSignal to provide a generic
16890"function code and pointer" interface for various miscellaneous
16891signals and notifications that must be made to the host OS.   The
16892first such signals are intended to support the ASL Fatal and
16893Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
16894interface has been obsoleted.
16895
16896The definition of the AcpiFormatException interface has been
16897changed to simplify its use.  The caller no longer must supply a
16898buffer to the call; A pointer to a const string is now returned
16899directly.  This allows the call to be easily used in printf
16900statements, etc. since the caller does not have to manage a local
16901buffer.
16902
16903
16904 ASL Compiler, Version X2025:
16905
16906The ACPI 2.0 Switch/Case/Default operators have been implemented
16907and are fully functional.  They will work with all ACPI 1.0
16908interpreters, since the operators are simply translated to If/Else
16909pairs.
16910
16911The ACPI 2.0 ElseIf operator is implemented and will also work
16912with 1.0 interpreters, for the same reason.
16913
16914Implemented support for ACPI 2.0 variable-length packages.  These
16915packages have a separate opcode, and their size is determined by
16916the interpreter at run-time.
16917
16918Documentation The ACPI CA Programmer Reference has been updated to
16919reflect the new interfaces and changes to existing interfaces.
16920
16921 ------------------------------------------
16922Summary of changes for this label: 06_15_01
16923
16924 ACPI CA Core Subsystem:
16925
16926Fixed a problem where a DWORD-accessed field within a Buffer
16927object would get its byte address inadvertently rounded down to
16928the nearest DWORD.  Buffers are always Byte-accessible.
16929
16930 ASL Compiler, version X2024:
16931
16932Fixed a problem where the Switch() operator would either fault or
16933hang the compiler.  Note however, that the AML code for this ACPI
169342.0 operator is not yet implemented.
16935
16936Compiler uses the new AcpiOsGetTimer interface to obtain compile
16937timings.
16938
16939Implementation of the CreateField operator automatically converts
16940a reference to a named field within a resource descriptor from a
16941byte offset to a bit offset if required.
16942
16943Added some missing named fields from the resource descriptor
16944support. These are the names that are automatically created by the
16945compiler to reference fields within a descriptor.  They are only
16946valid at compile time and are not passed through to the AML
16947interpreter.
16948
16949Resource descriptor named fields are now typed as Integers and
16950subject to compile-time typechecking when used in expressions.
16951
16952 ------------------------------------------
16953Summary of changes for this label: 05_18_01
16954
16955 ACPI CA Core Subsystem:
16956
16957Fixed a couple of problems in the Field support code where bits
16958from adjacent fields could be returned along with the proper field
16959bits. Restructured the field support code to improve performance,
16960readability and maintainability.
16961
16962New DEBUG_PRINTP macro automatically inserts the procedure name
16963into the output, saving hundreds of copies of procedure name
16964strings within the source, shrinking the memory footprint of the
16965debug version of the core subsystem.
16966
16967 Source Code Structure:
16968
16969The source code directory tree was restructured to reflect the
16970current organization of the component architecture.  Some files
16971and directories have been moved and/or renamed.
16972
16973 Linux:
16974
16975Fixed leaking kacpidpc processes.
16976
16977Fixed queueing event data even when /proc/acpi/event is not
16978opened.
16979
16980 ASL Compiler, version X2020:
16981
16982Memory allocation performance enhancement - over 24X compile time
16983improvement on large ASL files.  Parse nodes and namestring
16984buffers are now allocated from a large internal compiler buffer.
16985
16986The temporary .SRC file is deleted unless the "-s" option is
16987specified
16988
16989The "-d" debug output option now sends all output to the .DBG file
16990instead of the console.
16991
16992"External" second parameter is now optional
16993
16994"ElseIf" syntax now properly allows the predicate
16995
16996Last operand to "Load" now recognized as a Target operand
16997
16998Debug object can now be used anywhere as a normal object.
16999
17000ResourceTemplate now returns an object of type BUFFER
17001
17002EISAID now returns an object of type INTEGER
17003
17004"Index" now works with a STRING operand
17005
17006"LoadTable" now accepts optional parameters
17007
17008"ToString" length parameter is now optional
17009
17010"Interrupt (ResourceType," parse error fixed.
17011
17012"Register" with a user-defined region space parse error fixed
17013
17014Escaped backslash at the end of a string ("\\") scan/parse error
17015fixed
17016
17017"Revision" is now an object of type INTEGER.
17018
17019
17020
17021------------------------------------------
17022Summary of changes for this label: 05_02_01
17023
17024Linux:
17025
17026/proc/acpi/event now blocks properly.
17027
17028Removed /proc/sys/acpi. You can still dump your DSDT from
17029/proc/acpi/dsdt.
17030
17031 ACPI CA Core Subsystem:
17032
17033Fixed a problem introduced in the previous label where some of the
17034"small" resource descriptor types were not recognized.
17035
17036Improved error messages for the case where an ASL Field is outside
17037the range of the parent operation region.
17038
17039 ASL Compiler, version X2018:
17040
17041
17042Added error detection for ASL Fields that extend beyond the length
17043of the parent operation region (only if the length of the region
17044is known at compile time.)  This includes fields that have a
17045minimum access width that is smaller than the parent region, and
17046individual field units that are partially or entirely beyond the
17047extent of the parent.
17048
17049
17050
17051------------------------------------------
17052Summary of changes for this label: 04_27_01
17053
17054 ACPI CA Core Subsystem:
17055
17056Fixed a problem where the namespace mutex could be released at the
17057wrong time during execution of AcpiRemoveAddressSpaceHandler.
17058
17059Added optional thread ID output for debug traces, to simplify
17060debugging of multiple threads.  Added context switch notification
17061when the debug code realizes that a different thread is now
17062executing ACPI code.
17063
17064Some additional external data types have been prefixed with the
17065string "ACPI_" for consistency.  This may effect existing code.
17066The data types affected are the external callback typedefs - e.g.,
17067
17068WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
17069
17070 Linux:
17071
17072Fixed an issue with the OSL semaphore implementation where a
17073thread was waking up with an error from receiving a SIGCHLD
17074signal.
17075
17076Linux version of ACPI CA now uses the system C library for string
17077manipulation routines instead of a local implementation.
17078
17079Cleaned up comments and removed TBDs.
17080
17081 ASL Compiler, version X2017:
17082
17083Enhanced error detection and reporting for all file I/O
17084operations.
17085
17086 Documentation:
17087
17088Programmer Reference updated to version 1.06.
17089
17090
17091
17092------------------------------------------
17093Summary of changes for this label: 04_13_01
17094
17095 ACPI CA Core Subsystem:
17096
17097Restructured support for BufferFields and RegionFields.
17098BankFields support is now fully operational.  All known 32-bit
17099limitations on field sizes have been removed.  Both BufferFields
17100and (Operation) RegionFields are now supported by the same field
17101management code.
17102
17103Resource support now supports QWORD address and IO resources. The
1710416/32/64 bit address structures and the Extended IRQ structure
17105have been changed to properly handle Source Resource strings.
17106
17107A ThreadId of -1 is now used to indicate a "mutex not acquired"
17108condition internally and must never be returned by AcpiOsThreadId.
17109This reserved value was changed from 0 since Unix systems allow a
17110thread ID of 0.
17111
17112Linux:
17113
17114Driver code reorganized to enhance portability
17115
17116Added a kernel configuration option to control ACPI_DEBUG
17117
17118Fixed the EC driver to honor _GLK.
17119
17120ASL Compiler, version X2016:
17121
17122Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
17123address space was set to 0, not 0x7f as it should be.
17124
17125 ------------------------------------------
17126Summary of changes for this label: 03_13_01
17127
17128 ACPI CA Core Subsystem:
17129
17130During ACPI initialization, the _SB_._INI method is now run if
17131present.
17132
17133Notify handler fix - notifies are deferred until the parent method
17134completes execution.  This fixes the "mutex already acquired"
17135issue seen occasionally.
17136
17137Part of the "implicit conversion" rules in ACPI 2.0 have been
17138found to cause compatibility problems with existing ASL/AML.  The
17139convert "result-to-target-type" implementation has been removed
17140for stores to method Args and Locals.  Source operand conversion
17141is still fully implemented.  Possible changes to ACPI 2.0
17142specification pending.
17143
17144Fix to AcpiRsCalculatePciRoutingTableLength to return correct
17145length.
17146
17147Fix for compiler warnings for 64-bit compiles.
17148
17149 Linux:
17150
17151/proc output aligned for easier parsing.
17152
17153Release-version compile problem fixed.
17154
17155New kernel configuration options documented in Configure.help.
17156
17157IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
17158context" message.
17159
17160 OSPM:
17161
17162Power resource driver integrated with bus manager.
17163
17164Fixed kernel fault during active cooling for thermal zones.
17165
17166Source Code:
17167
17168The source code tree has been restructured.
17169
17170
17171
17172------------------------------------------
17173Summary of changes for this label: 03_02_01
17174
17175 Linux OS Services Layer (OSL):
17176
17177Major revision of all Linux-specific code.
17178
17179Modularized all ACPI-specific drivers.
17180
17181Added new thermal zone and power resource drivers.
17182
17183Revamped /proc interface (new functionality is under /proc/acpi).
17184
17185New kernel configuration options.
17186
17187 Linux known issues:
17188
17189New kernel configuration options not documented in Configure.help
17190yet.
17191
17192
17193Module dependencies not currently implemented. If used, they
17194should be loaded in this order: busmgr, power, ec, system,
17195processor, battery, ac_adapter, button, thermal.
17196
17197Modules will not load if CONFIG_MODVERSION is set.
17198
17199IBM 600E - entering S5 may reboot instead of shutting down.
17200
17201IBM 600E - Sleep button may generate "Invalid <NULL> context"
17202message.
17203
17204Some systems may fail with "execution mutex already acquired"
17205message.
17206
17207 ACPI CA Core Subsystem:
17208
17209Added a new OSL Interface, AcpiOsGetThreadId.  This was required
17210for the  deadlock detection code. Defined to return a non-zero, 32-
17211bit thread ID for the currently executing thread.  May be a non-
17212zero constant integer on single-thread systems.
17213
17214Implemented deadlock detection for internal subsystem mutexes.  We
17215may add conditional compilation for this code (debug only) later.
17216
17217ASL/AML Mutex object semantics are now fully supported.  This
17218includes multiple acquires/releases by owner and support for the
17219
17220Mutex SyncLevel parameter.
17221
17222A new "Force Release" mechanism automatically frees all ASL
17223Mutexes that have been acquired but not released when a thread
17224exits the interpreter.  This forces conformance to the ACPI spec
17225("All mutexes must be released when an invocation exits") and
17226prevents deadlocked ASL threads.  This mechanism can be expanded
17227(later) to monitor other resource acquisitions if OEM ASL code
17228continues to misbehave (which it will).
17229
17230Several new ACPI exception codes have been added for the Mutex
17231support.
17232
17233Recursive method calls are now allowed and supported (the ACPI
17234spec does in fact allow recursive method calls.)  The number of
17235recursive calls is subject to the restrictions imposed by the
17236SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
17237parameter.
17238
17239Implemented support for the SyncLevel parameter for control
17240methods (ACPI 2.0 feature)
17241
17242Fixed a deadlock problem when multiple threads attempted to use
17243the interpreter.
17244
17245Fixed a problem where the string length of a String package
17246element was not always set in a package returned from
17247AcpiEvaluateObject.
17248
17249Fixed a problem where the length of a String package element was
17250not always included in the length of the overall package returned
17251from AcpiEvaluateObject.
17252
17253Added external interfaces (Acpi*) to the ACPI debug memory
17254manager.  This manager keeps a list of all outstanding
17255allocations, and can therefore detect memory leaks and attempts to
17256free memory blocks more than once. Useful for code such as the
17257power manager, etc.  May not be appropriate for device drivers.
17258Performance with the debug code enabled is slow.
17259
17260The ACPI Global Lock is now an optional hardware element.
17261
17262 ASL Compiler Version X2015:
17263
17264Integrated changes to allow the compiler to be generated on
17265multiple platforms.
17266
17267Linux makefile added to generate the compiler on Linux
17268
17269 Source Code:
17270
17271All platform-specific headers have been moved to their own
17272subdirectory, Include/Platform.
17273
17274New source file added, Interpreter/ammutex.c
17275
17276New header file, Include/acstruct.h
17277
17278 Documentation:
17279
17280The programmer reference has been updated for the following new
17281interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
17282
17283 ------------------------------------------
17284Summary of changes for this label: 02_08_01
17285
17286Core ACPI CA Subsystem: Fixed a problem where an error was
17287incorrectly returned if the return resource buffer was larger than
17288the actual data (in the resource interfaces).
17289
17290References to named objects within packages are resolved to the
17291
17292full pathname string before packages are returned directly (via
17293the AcpiEvaluateObject interface) or indirectly via the resource
17294interfaces.
17295
17296Linux OS Services Layer (OSL):
17297
17298Improved /proc battery interface.
17299
17300
17301Added C-state debugging output and other miscellaneous fixes.
17302
17303ASL Compiler Version X2014:
17304
17305All defined method arguments can now be used as local variables,
17306including the ones that are not actually passed in as parameters.
17307The compiler tracks initialization of the arguments and issues an
17308exception if they are used without prior assignment (just like
17309locals).
17310
17311The -o option now specifies a filename prefix that is used for all
17312output files, including the AML output file.  Otherwise, the
17313default behavior is as follows:  1) the AML goes to the file
17314specified in the DSDT.  2) all other output files use the input
17315source filename as the base.
17316
17317 ------------------------------------------
17318Summary of changes for this label: 01_25_01
17319
17320Core ACPI CA Subsystem: Restructured the implementation of object
17321store support within the  interpreter.  This includes support for
17322the Store operator as well  as any ASL operators that include a
17323target operand.
17324
17325Partially implemented support for Implicit Result-to-Target
17326conversion. This is when a result object is converted on the fly
17327to the type of  an existing target object.  Completion of this
17328support is pending  further analysis of the ACPI specification
17329concerning this matter.
17330
17331CPU-specific code has been removed from the subsystem (hardware
17332directory).
17333
17334New Power Management Timer functions added
17335
17336Linux OS Services Layer (OSL): Moved system state transition code
17337to the core, fixed it, and modified  Linux OSL accordingly.
17338
17339Fixed C2 and C3 latency calculations.
17340
17341
17342We no longer use the compilation date for the version message on
17343initialization, but retrieve the version from AcpiGetSystemInfo().
17344
17345Incorporated for fix Sony VAIO machines.
17346
17347Documentation:  The Programmer Reference has been updated and
17348reformatted.
17349
17350
17351ASL Compiler:  Version X2013: Fixed a problem where the line
17352numbering and error reporting could get out  of sync in the
17353presence of multiple include files.
17354
17355 ------------------------------------------
17356Summary of changes for this label: 01_15_01
17357
17358Core ACPI CA Subsystem:
17359
17360Implemented support for type conversions in the execution of the
17361ASL  Concatenate operator (The second operand is converted to
17362match the type  of the first operand before concatenation.)
17363
17364Support for implicit source operand conversion is partially
17365implemented.   The ASL source operand types Integer, Buffer, and
17366String are freely  interchangeable for most ASL operators and are
17367converted by the interpreter  on the fly as required.  Implicit
17368Target operand conversion (where the  result is converted to the
17369target type before storing) is not yet implemented.
17370
17371Support for 32-bit and 64-bit BCD integers is implemented.
17372
17373Problem fixed where a field read on an aligned field could cause a
17374read  past the end of the field.
17375
17376New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
17377does not return a value, but the caller expects one.  (The ASL
17378compiler flags this as a warning.)
17379
17380ASL Compiler:
17381
17382Version X2011:
173831. Static typechecking of all operands is implemented. This
17384prevents the use of invalid objects (such as using a Package where
17385an Integer is required) at compile time instead of at interpreter
17386run-time.
173872. The ASL source line is printed with ALL errors and warnings.
173883. Bug fix for source EOF without final linefeed.
173894. Debug option is split into a parse trace and a namespace trace.
173905. Namespace output option (-n) includes initial values for
17391integers and strings.
173926. Parse-only option added for quick syntax checking.
173937. Compiler checks for duplicate ACPI name declarations
17394
17395Version X2012:
173961. Relaxed typechecking to allow interchangeability between
17397strings, integers, and buffers.  These types are now converted by
17398the interpreter at runtime.
173992. Compiler reports time taken by each internal subsystem in the
17400debug         output file.
17401
17402
17403 ------------------------------------------
17404Summary of changes for this label: 12_14_00
17405
17406ASL Compiler:
17407
17408This is the first official release of the compiler. Since the
17409compiler requires elements of the Core Subsystem, this label
17410synchronizes everything.
17411
17412------------------------------------------
17413Summary of changes for this label: 12_08_00
17414
17415
17416Fixed a problem where named references within the ASL definition
17417of both OperationRegions and CreateXXXFields did not work
17418properly.  The symptom was an AE_AML_OPERAND_TYPE during
17419initialization of the region/field. This is similar (but not
17420related internally) to the problem that was fixed in the last
17421label.
17422
17423Implemented both 32-bit and 64-bit support for the BCD ASL
17424functions ToBCD and FromBCD.
17425
17426Updated all legal headers to include "2000" in the copyright
17427years.
17428
17429 ------------------------------------------
17430Summary of changes for this label: 12_01_00
17431
17432Fixed a problem where method invocations within the ASL definition
17433of both OperationRegions and CreateXXXFields did not work
17434properly.  The symptom was an AE_AML_OPERAND_TYPE during
17435initialization of the region/field:
17436
17437  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
17438[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
17439(0x3005)
17440
17441Fixed a problem where operators with more than one nested
17442subexpression would fail.  The symptoms were varied, by mostly
17443AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
17444problem that has gone unnoticed until now.
17445
17446  Subtract (Add (1,2), Multiply (3,4))
17447
17448Fixed a problem where AcpiGetHandle didn't quite get fixed in the
17449previous build (The prefix part of a relative path was handled
17450incorrectly).
17451
17452Fixed a problem where Operation Region initialization failed if
17453the operation region name was a "namepath" instead of a simple
17454"nameseg". Symptom was an AE_NO_OPERAND error.
17455
17456Fixed a problem where an assignment to a local variable via the
17457indirect RefOf mechanism only worked for the first such
17458assignment.  Subsequent assignments were ignored.
17459
17460 ------------------------------------------
17461Summary of changes for this label: 11_15_00
17462
17463ACPI 2.0 table support with backwards support for ACPI 1.0 and the
174640.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
17465the AML  interpreter does NOT have support for the new 2.0 ASL
17466grammar terms at this time.
17467
17468All ACPI hardware access is via the GAS structures in the ACPI 2.0
17469FADT.
17470
17471All physical memory addresses across all platforms are now 64 bits
17472wide. Logical address width remains dependent on the platform
17473(i.e., "void *").
17474
17475AcpiOsMapMemory interface changed to a 64-bit physical address.
17476
17477The AML interpreter integer size is now 64 bits, as per the ACPI
174782.0 specification.
17479
17480For backwards compatibility with ACPI 1.0, ACPI tables with a
17481revision number less than 2 use 32-bit integers only.
17482
17483Fixed a problem where the evaluation of OpRegion operands did not
17484always resolve them to numbers properly.
17485
17486------------------------------------------
17487Summary of changes for this label: 10_20_00
17488
17489Fix for CBN_._STA issue.  This fix will allow correct access to
17490CBN_ OpRegions when the _STA returns 0x8.
17491
17492Support to convert ACPI constants (Ones, Zeros, One) to actual
17493values before a package object is returned
17494
17495Fix for method call as predicate to if/while construct causing
17496incorrect if/while behavior
17497
17498Fix for Else block package lengths sometimes calculated wrong (if
17499block > 63 bytes)
17500
17501Fix for Processor object length field, was always zero
17502
17503Table load abort if FACP sanity check fails
17504
17505Fix for problem with Scope(name) if name already exists
17506
17507Warning emitted if a named object referenced cannot be found
17508(resolved) during method execution.
17509
17510
17511
17512
17513
17514------------------------------------------
17515Summary of changes for this label: 9_29_00
17516
17517New table initialization interfaces: AcpiInitializeSubsystem no
17518longer has any parameters AcpiFindRootPointer - Find the RSDP (if
17519necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
17520>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
17521AcpiLoadTables
17522
17523Note: These interface changes require changes to all existing OSDs
17524
17525The PCI_Config default address space handler is always installed
17526at the root namespace object.
17527
17528-------------------------------------------
17529Summary of changes for this label: 09_15_00
17530
17531The new initialization architecture is implemented.  New
17532interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
17533AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
17534
17535(Namespace is automatically loaded when a table is loaded)
17536
17537The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1753852 bytes to 32 bytes.  There is usually one of these for every
17539namespace object, so the memory savings is significant.
17540
17541Implemented just-in-time evaluation of the CreateField operators.
17542
17543Bug fixes for IA-64 support have been integrated.
17544
17545Additional code review comments have been implemented
17546
17547The so-called "third pass parse" has been replaced by a final walk
17548through the namespace to initialize all operation regions (address
17549spaces) and fields that have not yet been initialized during the
17550execution of the various _INI and REG methods.
17551
17552New file - namespace/nsinit.c
17553
17554-------------------------------------------
17555Summary of changes for this label: 09_01_00
17556
17557Namespace manager data structures have been reworked to change the
17558primary  object from a table to a single object.  This has
17559resulted in dynamic memory  savings of 3X within the namespace and
175602X overall in the ACPI CA subsystem.
17561
17562Fixed problem where the call to AcpiEvFindPciRootBuses was
17563inadvertently left  commented out.
17564
17565Reduced the warning count when generating the source with the GCC
17566compiler.
17567
17568Revision numbers added to each module header showing the
17569SourceSafe version of the file.  Please refer to this version
17570number when giving us feedback or comments on individual modules.
17571
17572The main object types within the subsystem have been renamed to
17573clarify their  purpose:
17574
17575ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
17576ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
17577ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
17578
17579NOTE: no changes to the initialization sequence are included in
17580this label.
17581
17582-------------------------------------------
17583Summary of changes for this label: 08_23_00
17584
17585Fixed problem where TerminateControlMethod was being called
17586multiple times per  method
17587
17588Fixed debugger problem where single stepping caused a semaphore to
17589be  oversignalled
17590
17591Improved performance through additional parse object caching -
17592added  ACPI_EXTENDED_OP type
17593
17594-------------------------------------------
17595Summary of changes for this label: 08_10_00
17596
17597Parser/Interpreter integration:  Eliminated the creation of
17598complete parse trees  for ACPI tables and control methods.
17599Instead, parse subtrees are created and  then deleted as soon as
17600they are processed (Either entered into the namespace or  executed
17601by the interpreter).  This reduces the use of dynamic kernel
17602memory  significantly. (about 10X)
17603
17604Exception codes broken into classes and renumbered.  Be sure to
17605recompile all  code that includes acexcep.h.  Hopefully we won't
17606have to renumber the codes  again now that they are split into
17607classes (environment, programmer, AML code,  ACPI table, and
17608internal).
17609
17610Fixed some additional alignment issues in the Resource Manager
17611subcomponent
17612
17613Implemented semaphore tracking in the AcpiExec utility, and fixed
17614several places  where mutexes/semaphores were being unlocked
17615without a corresponding lock  operation.  There are no known
17616semaphore or mutex "leaks" at this time.
17617
17618Fixed the case where an ASL Return operator is used to return an
17619unnamed  package.
17620
17621-------------------------------------------
17622Summary of changes for this label: 07_28_00
17623
17624Fixed a problem with the way addresses were calculated in
17625AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
17626manifested itself when a Field was  created with WordAccess or
17627DwordAccess, but the field unit defined within the  Field was less
17628
17629than a Word or Dword.
17630
17631Fixed a problem in AmlDumpOperands() module's loop to pull
17632operands off of the  operand stack to display information. The
17633problem manifested itself as a TLB  error on 64-bit systems when
17634accessing an operand stack with two or more  operands.
17635
17636Fixed a problem with the PCI configuration space handlers where
17637context was  getting confused between accesses. This required a
17638change to the generic address  space handler and address space
17639setup definitions. Handlers now get both a  global handler context
17640(this is the one passed in by the user when executing
17641AcpiInstallAddressSpaceHandler() and a specific region context
17642that is unique to  each region (For example, the _ADR, _SEG and
17643_BBN values associated with a  specific region). The generic
17644function definitions have changed to the  following:
17645
17646typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
17647UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
17648*HandlerContext, // This used to be void *Context void
17649*RegionContext); // This is an additional parameter
17650
17651typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
17652RegionHandle, UINT32 Function, void *HandlerContext,  void
17653**RegionContext); // This used to be **ReturnContext
17654
17655-------------------------------------------
17656Summary of changes for this label: 07_21_00
17657
17658Major file consolidation and rename.  All files within the
17659interpreter have been  renamed as well as most header files.  This
17660was done to prevent collisions with  existing files in the host
17661OSs -- filenames such as "config.h" and "global.h"  seem to be
17662quite common.  The VC project files have been updated.  All
17663makefiles  will require modification.
17664
17665The parser/interpreter integration continues in Phase 5 with the
17666implementation  of a complete 2-pass parse (the AML is parsed
17667twice) for each table;  This  avoids the construction of a huge
17668parse tree and therefore reduces the amount of  dynamic memory
17669required by the subsystem.  Greater use of the parse object cache
17670means that performance is unaffected.
17671
17672Many comments from the two code reviews have been rolled in.
17673
17674The 64-bit alignment support is complete.
17675
17676-------------------------------------------
17677Summary of changes for this label: 06_30_00
17678
17679With a nod and a tip of the hat to the technology of yesteryear,
17680we've added  support in the source code for 80 column output
17681devices.  The code is now mostly  constrained to 80 columns or
17682less to support environments and editors that 1)  cannot display
17683or print more than 80 characters on a single line, and 2) cannot
17684disable line wrapping.
17685
17686A major restructuring of the namespace data structure has been
17687completed.  The  result is 1) cleaner and more
17688understandable/maintainable code, and 2) a  significant reduction
17689in the dynamic memory requirement for each named ACPI  object
17690(almost half).
17691
17692-------------------------------------------
17693Summary of changes for this label: 06_23_00
17694
17695Linux support has been added.  In order to obtain approval to get
17696the ACPI CA  subsystem into the Linux kernel, we've had to make
17697quite a few changes to the  base subsystem that will affect all
17698users (all the changes are generic and OS- independent).  The
17699effects of these global changes have been somewhat far  reaching.
17700Files have been merged and/or renamed and interfaces have been
17701renamed.   The major changes are described below.
17702
17703Osd* interfaces renamed to AcpiOs* to eliminate namespace
17704pollution/confusion  within our target kernels.  All OSD
17705interfaces must be modified to match the new  naming convention.
17706
17707Files merged across the subsystem.  A number of the smaller source
17708and header  files have been merged to reduce the file count and
17709increase the density of the  existing files.  There are too many
17710to list here.  In general, makefiles that  call out individual
17711files will require rebuilding.
17712
17713Interpreter files renamed.  All interpreter files now have the
17714prefix am*  instead of ie* and is*.
17715
17716Header files renamed:  The acapi.h file is now acpixf.h.  The
17717acpiosd.h file is  now acpiosxf.h.  We are removing references to
17718the acronym "API" since it is  somewhat windowsy. The new name is
17719"external interface" or xface or xf in the  filenames.j
17720
17721
17722All manifest constants have been forced to upper case (some were
17723mixed case.)   Also, the string "ACPI_" has been prepended to many
17724(not all) of the constants,  typedefs, and structs.
17725
17726The globals "DebugLevel" and "DebugLayer" have been renamed
17727"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
17728
17729All other globals within the subsystem are now prefixed with
17730"AcpiGbl_" Internal procedures within the subsystem are now
17731prefixed with "Acpi" (with only  a few exceptions).  The original
17732two-letter abbreviation for the subcomponent  remains after "Acpi"
17733- for example, CmCallocate became AcpiCmCallocate.
17734
17735Added a source code translation/conversion utility.  Used to
17736generate the Linux  source code, it can be modified to generate
17737other types of source as well. Can  also be used to cleanup
17738existing source by removing extraneous spaces and blank  lines.
17739Found in tools/acpisrc/*
17740
17741OsdUnMapMemory was renamed to OsdUnmapMemory and then
17742AcpiOsUnmapMemory.  (UnMap  became Unmap).
17743
17744A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
17745When set to  one, this indicates that the caller wants to use the
17746
17747semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
17748both types.  However, implementers of this  call may want to use
17749different OS primitives depending on the type of semaphore
17750requested.  For example, some operating systems provide separate
17751
17752"mutex" and  "semaphore" interfaces - where the mutex interface is
17753much faster because it  doesn't have all the overhead of a full
17754semaphore implementation.
17755
17756Fixed a deadlock problem where a method that accesses the PCI
17757address space can  block forever if it is the first access to the
17758space.
17759
17760-------------------------------------------
17761Summary of changes for this label: 06_02_00
17762
17763Support for environments that cannot handle unaligned data
17764accesses (e.g.  firmware and OS environments devoid of alignment
17765handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
17766been added (via configurable macros) in  these three areas: -
17767Transfer of data from the raw AML byte stream is done via byte
17768moves instead of    word/dword/qword moves. - External objects are
17769aligned within the user buffer, including package   elements (sub-
17770objects). - Conversion of name strings to UINT32 Acpi Names is now
17771done byte-wise.
17772
17773The Store operator was modified to mimic Microsoft's
17774implementation when storing  to a Buffer Field.
17775
17776Added a check of the BM_STS bit before entering C3.
17777
17778The methods subdirectory has been obsoleted and removed.  A new
17779file, cmeval.c  subsumes the functionality.
17780
17781A 16-bit (DOS) version of AcpiExec has been developed.  The
17782makefile is under  the acpiexec directory.
17783