xref: /dragonfly/sys/contrib/dev/acpica/changes.txt (revision b1722b2a)
1----------------------------------------
204 February 2015. Summary of changes for version 20150204:
3
4This release is available at https://acpica.org/downloads
5
6ACPICA kernel-resident subsystem:
7
8Updated all ACPICA copyrights and signons to 2014. Added the 2014
9copyright to all module headers and signons, including the standard Linux
10header. This affects virtually every file in the ACPICA core subsystem,
11iASL compiler, all ACPICA utilities, and the test suites.
12
13Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
14A raw gpe handling mechanism was created to allow better handling of GPE
15storms that aren't easily managed by the normal handler. The raw handler
16allows disabling/renabling of the the GPE so that interrupt storms can be
17avoided in cases where events cannot be timely serviced. In this scenario,
18handlers should use the AcpiSetGpe() API to disable/enable the GPE. This API
19will leave the reference counts undisturbed, thereby preventing unintentional
20clearing of the GPE when the intent in only to temporarily disable it. Raw
21handlers allow enabling and disabling of a GPE by removing GPE register
22locking. As such, raw handlers much provide their own locks while using
23GPE API's to protect access to GPE data structures.
24Lv Zheng
25
26Events: Always modify GPE registers under the GPE lock.
27Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
28values. Reported as bug by joe.liu@apple.com.
29
30Unix makefiles: Separate option to disable optimizations and _FORTIFY_SOURCE.
31This change removes the _FORTIFY_SOURCE flag from the NOOPT disable option and
32creates a separate flag (NOFORTIFY) for this purpose. Some toolchains may
33define _FORTIFY_SOURCE which leads redefined errors when building ACPICA. This
34allows disabling the option without also having to disable optimazations.
35David Box
36
37  Current Release:
38    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
39    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
40
41----------------------------------------
4207 November 2014. Summary of changes for version 20141107:
43
44This release is available at https://acpica.org/downloads
45
46This release introduces and implements language extensions to ASL that
47provide support for symbolic ("C-style") operators and expressions. These
48language extensions are known collectively as ASL+.
49
50
511) iASL Compiler/Disassembler and Tools:
52
53Disassembler: Fixed a problem with disassembly of the UartSerialBus
54macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
55Box.
56
57Disassembler: Fixed the Unicode macro support to add escape sequences.
58All non-printable ASCII values are emitted as escape sequences, as well
59as the standard escapes for quote and backslash. Ensures that the
60disassembled macro can be correctly recompiled.
61
62iASL: Added Printf/Fprintf macros for formatted output. These macros are
63translated to existing AML Concatenate and Store operations. Printf
64writes to the ASL Debug object. Fprintf allows the specification of an
65ASL name as the target. Only a single format specifier is required, %o,
66since the AML interpreter dynamically converts objects to the required
67type. David E. Box.
68
69    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
70                 (Concatenate (Concatenate (Concatenate ("", Arg0),
71                 ": Unexpected value for "), Arg1), ", "), Arg2),
72                 " at line "), Arg3), Debug)
73
74    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
75                 Arg0, Arg1, Arg2, Arg3)
76
77    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
78                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
79
80    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
81
82iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
83ASL parse tree before the AML code is generated. This allows blocks of
84ASL code to be removed in order to help locate and identify problem
85devices and/or code. David E. Box.
86
87AcpiExec: Added support (-fi) for an optional namespace object
88initialization file. This file specifies initial values for namespace
89objects as necessary for debugging and testing different ASL code paths
90that may be taken as a result of BIOS options.
91
92
932) Overview of symbolic operator support for ASL (ASL+)
94-------------------------------------------------------
95
96As an extension to the ASL language, iASL implements support for symbolic
97(C-style) operators for math and logical expressions. This can greatly
98simplify ASL code as well as improve both readability and
99maintainability. These language extensions can exist concurrently with
100all legacy ASL code and expressions.
101
102The symbolic extensions are 100% compatible with existing AML
103interpreters, since no new AML opcodes are created. To implement the
104extensions, the iASL compiler transforms the symbolic expressions into
105the legacy ASL/AML equivalents at compile time.
106
107Full symbolic expressions are supported, along with the standard C
108precedence and associativity rules.
109
110Full disassembler support for the symbolic expressions is provided, and
111creates an automatic migration path for existing ASL code to ASL+ code
112via the disassembly process. By default, the disassembler now emits ASL+
113code with symbolic expressions. An option (-dl) is provided to force the
114disassembler to emit legacy ASL code if desired.
115
116Below is the complete list of the currently supported symbolic operators
117with examples. See the iASL User Guide for additional information.
118
119
120ASL+ Syntax      Legacy ASL Equivalent
121-----------      ---------------------
122
123    // Math operators
124
125Z = X + Y        Add (X, Y, Z)
126Z = X - Y        Subtract (X, Y, Z)
127Z = X * Y        Multiply (X, Y, Z)
128Z = X / Y        Divide (X, Y, , Z)
129Z = X % Y        Mod (X, Y, Z)
130Z = X << Y       ShiftLeft (X, Y, Z)
131Z = X >> Y       ShiftRight (X, Y, Z)
132Z = X & Y        And (X, Y, Z)
133Z = X | Y        Or (X, Y, Z)
134Z = X ^ Y        Xor (X, Y, Z)
135Z = ~X           Not (X, Z)
136X++              Increment (X)
137X--              Decrement (X)
138
139    // Logical operators
140
141(X == Y)         LEqual (X, Y)
142(X != Y)         LNotEqual (X, Y)
143(X < Y)          LLess (X, Y)
144(X > Y)          LGreater (X, Y)
145(X <= Y)         LLessEqual (X, Y)
146(X >= Y)         LGreaterEqual (X, Y)
147(X && Y)         LAnd (X, Y)
148(X || Y)         LOr (X, Y)
149(!X)             LNot (X)
150
151    // Assignment and compound assignment operations
152
153X = Y           Store (Y, X)
154X += Y          Add (X, Y, X)
155X -= Y          Subtract (X, Y, X)
156X *= Y          Multiply (X, Y, X)
157X /= Y          Divide (X, Y, , X)
158X %= Y          Mod (X, Y, X)
159X <<= Y         ShiftLeft (X, Y, X)
160X >>= Y         ShiftRight (X, Y, X)
161X &= Y          And (X, Y, X)
162X |= Y          Or (X, Y, X)
163X ^= Y          Xor (X, Y, X)
164
165
1663) ASL+ Examples:
167-----------------
168
169Legacy ASL:
170        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
171            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
1720x03FB),
173            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
174        {
175            And (MEMB, 0xFFFFFFF0, SRMB)
176            Store (MEMB, Local2)
177            Store (PDBM, Local1)
178            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
179            Store (SRMB, MEMB)
180            Or (PDBM, 0x02, PDBM)
181        }
182
183ASL+ version:
184        If (((R510 & 0x03FB) == 0x02E0) ||
185            ((R520 & 0x03FB) == 0x02E0) ||
186            ((R530 & 0x03FB) == 0x02E0) ||
187            ((R540 & 0x03FB) == 0x02E0))
188        {
189            SRMB = (MEMB & 0xFFFFFFF0)
190            Local2 = MEMB
191            Local1 = PDBM
192            PDBM &= 0xFFFFFFFFFFFFFFF9
193            MEMB = SRMB
194            PDBM |= 0x02
195        }
196
197Legacy ASL:
198        Store (0x1234, Local1)
199        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
200        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
201        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
202        Store (Index (PKG1, 0x03), Local6)
203        Store (Add (Local3, Local2), Debug)
204        Add (Local1, 0x0F, Local2)
205        Add (Local1, Multiply (Local2, Local3), Local2)
206        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
207
208ASL+ version:
209        Local1 = 0x1234
210        Local3 = (((Local1 + TEST) + 0x20) * Local2)
211        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
212        Local3 = (Local1 + (TEST + (0x20 * Local2)))
213        Local6 = Index (PKG1, 0x03)
214        Debug = (Local3 + Local2)
215        Local2 = (Local1 + 0x0F)
216        Local2 = (Local1 + (Local2 * Local3))
217        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
218
219
220----------------------------------------
22126 September 2014. Summary of changes for version 20140926:
222
2231) ACPICA kernel-resident subsystem:
224
225Updated the GPIO operation region handler interface (GeneralPurposeIo).
226In order to support GPIO Connection objects with multiple pins, along
227with the related Field objects, the following changes to the interface
228have been made: The Address is now defined to be the offset in bits of
229the field unit from the previous invocation of a Connection. It can be
230viewed as a "Pin Number Index" into the connection resource descriptor.
231The BitWidth is the exact bit width of the field. It is usually one bit,
232but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
233additional information and examples.
234
235GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
236corresponding _Lxx/_Exx methods are disabled (they may have been enabled
237by the firmware), so that they cannot fire until they are enabled via
238AcpiUpdateAllGpes. Rafael J. Wysocki.
239
240Added a new return flag for the Event/GPE status interfaces --
241AcpiGetEventStatus and AcpiGetGpeStatus. The new
242ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
243GPE currently has a handler associated with it, and can thus actually
244affect the system. Lv Zheng.
245
246Example Code and Data Size: These are the sizes for the OS-independent
247acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
248debug version of the code includes the debug output trace mechanism and
249has a much larger code and data size.
250
251  Current Release:
252    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
253    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
254  Previous Release:
255    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
256    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
257
2582) iASL Compiler/Disassembler and Tools:
259
260iASL: Fixed a memory allocation/free regression introduced in 20140828
261that could cause the compiler to crash. This was introduced inadvertently
262during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
2631113.
264
265iASL: Removed two error messages that have been found to create false
266positives, until they can be fixed and fully validated (ACPICA BZ 1112):
2671) Illegal forward reference within a method
2682) Illegal reference across two methods
269
270iASL: Implemented a new option (-lm) to create a hardware mapping file
271that summarizes all GPIO, I2C, SPI, and UART connections. This option
272works for both the compiler and disassembler. See the iASL compiler user
273guide for additional information and examples (section 6.4.6).
274
275AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
276version 2. This corrects the AE_BAD_HEADER exception seen on systems with
277a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
278
279AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
280unless STDIN is actually a terminal. Assists with batch-mode processing.
281ACPICA BZ 1114.
282
283Disassembler/AcpiHelp: Added another large group of recognized _HID
284values.
285
286
287----------------------------------------
28828 August 2014. Summary of changes for version 20140828:
289
2901) ACPICA kernel-resident subsystem:
291
292Fixed a problem related to the internal use of the Timer() operator where
293a 64-bit divide could cause an attempted link to a double-precision math
294library. This divide is not actually necessary, so the code was
295restructured to eliminate it. Lv Zheng.
296
297ACPI 5.1: Added support for the runtime validation of the _DSD package
298(similar to the iASL support).
299
300ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
301SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
302
303Example Code and Data Size: These are the sizes for the OS-independent
304acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
305debug version of the code includes the debug output trace mechanism and
306has a much larger code and data size.
307
308  Current Release:
309    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
310    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
311  Previous Release:
312    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
313    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
314
3152) iASL Compiler/Disassembler and Tools:
316
317AcpiExec: Fixed a problem on unix systems where the original terminal
318state was not always properly restored upon exit. Seen when using the -v
319option. ACPICA BZ 1104.
320
321iASL: Fixed a problem with the validation of the ranges/length within the
322Memory24 resource descriptor. There was a boundary condition when the
323range was equal to the (length -1) caused by the fact that these values
324are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
325
326Disassembler: Fixed a problem with the GpioInt descriptor interrupt
327polarity
328flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
329is
330now supported properly.
331
332ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
333in the disassembler, data table compiler, and table template generator.
334
335iASL: Added a requirement for Device() objects that one of either a _HID
336or _ADR must exist within the scope of a Device, as per the ACPI
337specification. Remove a similar requirement that was incorrectly in place
338for the _DSD object.
339
340iASL: Added error detection for illegal named references within control
341methods that would cause runtime failures. Now trapped as errors are: 1)
342References to objects within a non-parent control method. 2) Forward
343references (within a method) -- for control methods, AML interpreters use
344a one-pass parse of control methods. ACPICA BZ 1008.
345
346iASL: Added error checking for dependencies related to the _PSx power
347methods. ACPICA BZ 1029.
3481) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
349_PS3.
3502) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
351scope.
352
353iASL and table compiler: Cleanup miscellaneous memory leaks by fully
354deploying the existing object and string caches and adding new caches for
355the table compiler.
356
357iASL: Split the huge parser source file into multiple subfiles to improve
358manageability. Generation now requires the M4 macro preprocessor, which
359is part of the Bison distribution on both unix and windows platforms.
360
361AcpiSrc: Fixed and removed all extraneous warnings generated during
362entire ACPICA source code scan and/or conversion.
363
364
365----------------------------------------
366
36724 July 2014. Summary of changes for version 20140724:
368
369The ACPI 5.1 specification has been released and is available at:
370http://uefi.org/specs/access
371
372
3730) ACPI 5.1 support in ACPICA:
374
375ACPI 5.1 is fully supported in ACPICA as of this release.
376
377New predefined names. Support includes iASL and runtime ACPICA
378validation.
379    _CCA (Cache Coherency Attribute).
380    _DSD (Device-Specific Data). David Box.
381
382Modifications to existing ACPI tables. Support includes headers, iASL
383Data Table compiler, disassembler, and the template generator.
384    FADT - New fields and flags. Graeme Gregory.
385    GTDT - One new subtable and new fields. Tomasz Nowicki.
386    MADT - Two new subtables. Tomasz Nowicki.
387    PCCT - One new subtable.
388
389Miscellaneous.
390    New notification type for System Resource Affinity change events.
391
392
3931) ACPICA kernel-resident subsystem:
394
395Fixed a regression introduced in 20140627 where a fault can happen during
396the deletion of Alias AML namespace objects. The problem affected both
397the core ACPICA and the ACPICA tools including iASL and AcpiExec.
398
399Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
400simple mechanism to enable wake GPEs that have no associated handler or
401control method. Rafael Wysocki.
402
403Updated the AcpiEnableGpe interface to disallow the enable if there is no
404handler or control method associated with the particular GPE. This will
405help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
406
407Updated GPE handling and dispatch by disabling the GPE before clearing
408the status bit for edge-triggered GPEs. Lv Zheng.
409
410Added Timer() support to the AML Debug object. The current timer value is
411now displayed with each invocation of (Store to) the debug object to
412enable simple generation of execution times for AML code (method
413execution for example.) ACPICA BZ 1093.
414
415Example Code and Data Size: These are the sizes for the OS-independent
416acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
417debug version of the code includes the debug output trace mechanism and
418has a much larger code and data size.
419
420  Current Release:
421    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
422    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
423  Previous Release:
424    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
425    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
426
427
4282) iASL Compiler/Disassembler and Tools:
429
430Fixed an issue with the recently added local printf implementation,
431concerning width/precision specifiers that could cause incorrect output.
432Lv Zheng. ACPICA BZ 1094.
433
434Disassembler: Added support to detect buffers that contain UUIDs and
435disassemble them to an invocation of the ToUUID operator. Also emit
436commented descriptions of known ACPI-related UUIDs.
437
438AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
439-u. Adds three new files.
440
441iASL: Update table compiler and disassembler for DMAR table changes that
442were introduced in September 2013. With assistance by David Woodhouse.
443
444----------------------------------------
44527 June 2014. Summary of changes for version 20140627:
446
4471) ACPICA kernel-resident subsystem:
448
449Formatted Output: Implemented local versions of standard formatted output
450utilities such as printf, etc. Over time, it has been discovered that
451there are in fact many portability issues with printf, and the addition
452of this feature will fix/prevent these issues once and for all. Some
453known issues are summarized below:
454
4551) Output of 64-bit values is not portable. For example, UINT64 is %ull
456for the Linux kernel and is %uI64 for some MSVC versions.
4572) Invoking printf consistently in a manner that is portable across both
45832-bit and 64-bit platforms is difficult at best in many situations.
4593) The output format for pointers varies from system to system (leading
460zeros especially), and leads to inconsistent output from ACPICA across
461platforms.
4624) Certain platform-specific printf formats may conflict with ACPICA use.
4635) If there is no local C library available, ACPICA now has local support
464for printf.
465
466-- To address these printf issues in a complete manner, ACPICA now
467directly implements a small subset of printf format specifiers, only
468those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
469
470Implemented support for ACPICA generation within the EFI environment.
471Initially, the AcpiDump utility is supported in the UEFI shell
472environment. Lv Zheng.
473
474Added a new external interface, AcpiLogError, to improve ACPICA
475portability. This allows the host to redirect error messages from the
476ACPICA utilities. Lv Zheng.
477
478Added and deployed new OSL file I/O interfaces to improve ACPICA
479portability:
480  AcpiOsOpenFile
481  AcpiOsCloseFile
482  AcpiOsReadFile
483  AcpiOsWriteFile
484  AcpiOsGetFileOffset
485  AcpiOsSetFileOffset
486There are C library implementations of these functions in the new file
487service_layers/oslibcfs.c -- however, the functions can be implemented by
488the local host in any way necessary. Lv Zheng.
489
490Implemented a mechanism to disable/enable ACPI table checksum validation
491at runtime. This can be useful when loading tables very early during OS
492initialization when it may not be possible to map the entire table in
493order to compute the checksum. Lv Zheng.
494
495Fixed a buffer allocation issue for the Generic Serial Bus support.
496Originally, a fixed buffer length was used. This change allows for
497variable-length buffers based upon the protocol indicated by the field
498access attributes. Reported by Lan Tianyu. Lv Zheng.
499
500Fixed a problem where an object detached from a namespace node was not
501properly terminated/cleared and could cause a circular list problem if
502reattached. ACPICA BZ 1063. David Box.
503
504Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
505
506Fixed a possible memory leak in an error return path within the function
507AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
508
509Example Code and Data Size: These are the sizes for the OS-independent
510acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
511debug version of the code includes the debug output trace mechanism and
512has a much larger code and data size.
513
514  Current Release:
515    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
516    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
517  Previous Release:
518    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
519    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
520
521
5222) iASL Compiler/Disassembler and Tools:
523
524Disassembler: Add dump of ASCII equivalent text within a comment at the
525end of each line of the output for the Buffer() ASL operator.
526
527AcpiDump: Miscellaneous changes:
528  Fixed repetitive table dump in -n mode.
529  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
530the ACPI 2.0 GUID fails.
531
532iASL: Fixed a problem where the compiler could fault if incorrectly given
533an acpidump output file as input. ACPICA BZ 1088. David Box.
534
535AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
536they are invoked without any arguments.
537
538Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
5391086. Colin Ian King.
540
541Disassembler: Cleaned up a block of code that extracts a parent Op
542object. Added a comment that explains that the parent is guaranteed to be
543valid in this case. ACPICA BZ 1069.
544
545----------------------------------------
54624 April 2014. Summary of changes for version 20140424:
547
5481) ACPICA kernel-resident subsystem:
549
550Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
551Some of these tables are known to contain a trailing NULL entry. Lv
552Zheng.
553
554Removed an extraneous error message for the case where there are a large
555number of system GPEs (> 124). This was the "32-bit FADT register is too
556long to convert to GAS struct" message, which is irrelevant for GPEs
557since the GPEx_BLK_LEN fields of the FADT are always used instead of the
558(limited capacity) GAS bit length. Also, several changes to ensure proper
559support for GPE numbers > 255, where some "GPE number" fields were 8-bits
560internally.
561
562Implemented and deployed additional configuration support for the public
563ACPICA external interfaces. Entire classes of interfaces can now be
564easily modified or configured out, replaced by stubbed inline functions
565by default. Lv Zheng.
566
567Moved all public ACPICA runtime configuration globals to the public
568ACPICA external interface file for convenience. Also, removed some
569obsolete/unused globals. See the file acpixf.h. Lv Zheng.
570
571Documentation: Added a new section to the ACPICA reference describing the
572maximum number of GPEs that can be supported by the FADT-defined GPEs in
573block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
574reference.
575
576Example Code and Data Size: These are the sizes for the OS-independent
577acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
578debug version of the code includes the debug output trace mechanism and
579has a much larger code and data size.
580
581  Current Release:
582    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
583    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
584  Previous Release:
585    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
586    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
587
588
5892) iASL Compiler/Disassembler and Tools:
590
591iASL and disassembler: Add full support for the LPIT table (Low Power
592Idle Table). Includes support in the disassembler, data table compiler,
593and template generator.
594
595AcpiDump utility:
5961) Add option to force the use of the RSDT (over the XSDT).
5972) Improve validation of the RSDP signature (use 8 chars instead of 4).
598
599iASL: Add check for predefined packages that are too large.  For
600predefined names that contain subpackages, check if each subpackage is
601too large. (Check for too small already exists.)
602
603Debugger: Updated the GPE command (which simulates a GPE by executing the
604GPE code paths in ACPICA). The GPE device is now optional, and defaults
605to the GPE 0/1 FADT-defined blocks.
606
607Unix application OSL: Update line-editing support. Add additional error
608checking and take care not to reset terminal attributes on exit if they
609were never set. This should help guarantee that the terminal is always
610left in the previous state on program exit.
611
612----------------------------------------
61325 March 2014. Summary of changes for version 20140325:
614
6151) ACPICA kernel-resident subsystem:
616
617Updated the auto-serialize feature for control methods. This feature
618automatically serializes all methods that create named objects in order
619to prevent runtime errors. The update adds support to ignore the
620currently executing AML SyncLevel when invoking such a method, in order
621to prevent disruption of any existing SyncLevel priorities that may exist
622in the AML code. Although the use of SyncLevels is relatively rare, this
623change fixes a regression where an AE_AML_MUTEX_ORDER exception can
624appear on some machines starting with the 20140214 release.
625
626Added a new external interface to allow the host to install ACPI tables
627very early, before the namespace is even created. AcpiInstallTable gives
628the host additional flexibility for ACPI table management. Tables can be
629installed directly by the host as if they had originally appeared in the
630XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
631(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
632with additional internal restructuring and cleanup. See the ACPICA
633Reference for interface details. Lv Zheng.
634
635Added validation of the checksum for all incoming dynamically loaded
636tables (via external interfaces or via AML Load/LoadTable operators). Lv
637Zheng.
638
639Updated the use of the AcpiOsWaitEventsComplete interface during Notify
640and GPE handler removal. Restructured calls to eliminate possible race
641conditions. Lv Zheng.
642
643Added a warning for the use/execution of the ASL/AML Unload (table)
644operator. This will help detect and identify machines that use this
645operator if and when it is ever used. This operator has never been seen
646in the field and the usage model and possible side-effects of the drastic
647runtime action of a full table removal are unknown.
648
649Reverted the use of #pragma push/pop which was introduced in the 20140214
650release. It appears that push and pop are not implemented by enough
651compilers to make the use of this feature feasible for ACPICA at this
652time. However, these operators may be deployed in a future ACPICA
653release.
654
655Added the missing EXPORT_SYMBOL macros for the install and remove SCI
656handler interfaces.
657
658Source code generation:
6591) Disabled the use of the "strchr" macro for the gcc-specific
660generation. For some versions of gcc, this macro can periodically expose
661a compiler bug which in turn causes compile-time error(s).
6622) Added support for PPC64 compilation. Colin Ian King.
663
664Example Code and Data Size: These are the sizes for the OS-independent
665acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
666debug version of the code includes the debug output trace mechanism and
667has a much larger code and data size.
668
669  Current Release:
670    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
671    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
672  Previous Release:
673    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
674    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
675
676
6772) iASL Compiler/Disassembler and Tools:
678
679Disassembler: Added several new features to improve the readability of
680the resulting ASL code. Extra information is emitted within comment
681fields in the ASL code:
6821) Known _HID/_CID values are decoded to descriptive text.
6832) Standard values for the Notify() operator are decoded to descriptive
684text.
6853) Target operands are expanded to full pathnames (in a comment) when
686possible.
687
688Disassembler: Miscellaneous updates for extern() handling:
6891) Abort compiler if file specified by -fe option does not exist.
6902) Silence unnecessary warnings about argument count mismatches.
6913) Update warning messages concerning unresolved method externals.
6924) Emit "UnknownObj" keyword for externals whose type cannot be
693determined.
694
695AcpiHelp utility:
6961) Added the -a option to display both the ASL syntax and the AML
697encoding for an input ASL operator. This effectively displays all known
698information about an ASL operator with one AcpiHelp invocation.
6992) Added substring match support (similar to a wildcard) for the -i
700(_HID/PNP IDs) option.
701
702iASL/Disassembler: Since this tool does not yet support execution on big-
703endian machines, added detection of endianness and an error message if
704execution is attempted on big-endian. Support for big-endian within iASL
705is a feature that is on the ACPICA to-be-done list.
706
707AcpiBin utility:
7081) Remove option to extract binary files from an acpidump; this function
709is made obsolete by the AcpiXtract utility.
7102) General cleanup of open files and allocated buffers.
711
712----------------------------------------
71314 February 2014. Summary of changes for version 20140214:
714
7151) ACPICA kernel-resident subsystem:
716
717Implemented a new mechanism to proactively prevent problems with ill-
718behaved reentrant control methods that create named ACPI objects. This
719behavior is illegal as per the ACPI specification, but is nonetheless
720frequently seen in the field. Previously, this could lead to an
721AE_ALREADY_EXISTS exception if the method was actually entered by more
722than one thread. This new mechanism detects such methods at table load
723time and marks them "serialized" to prevent reentrancy. A new global
724option, AcpiGbl_AutoSerializeMethods, has been added to disable this
725feature if desired. This mechanism and global option obsoletes and
726supersedes the previous AcpiGbl_SerializeAllMethods option.
727
728Added the "Windows 2013" string to the _OSI support. ACPICA will now
729respond TRUE to _OSI queries with this string. It is the stated policy of
730ACPICA to add new strings to the _OSI support as soon as possible after
731they are defined. See the full ACPICA _OSI policy which has been added to
732the utilities/utosi.c file.
733
734Hardened/updated the _PRT return value auto-repair code:
7351) Do not abort the repair on a single subpackage failure, continue to
736check all subpackages.
7372) Add check for the minimum subpackage length (4).
7383) Properly handle extraneous NULL package elements.
739
740Added support to avoid the possibility of infinite loops when traversing
741object linked lists. Never allow an infinite loop, even in the face of
742corrupted object lists.
743
744ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
745pack(pop) directives to ensure that the ACPICA headers are independent of
746compiler settings or other host headers.
747
748Example Code and Data Size: These are the sizes for the OS-independent
749acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
750debug version of the code includes the debug output trace mechanism and
751has a much larger code and data size.
752
753  Current Release:
754    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
755    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
756  Previous Release:
757    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
758    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
759
760
7612) iASL Compiler/Disassembler and Tools:
762
763iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
764first reserved field was incorrectly forced to have a value of zero. This
765change correctly forces the field to have a value of one. ACPICA BZ 1081.
766
767Debugger: Added missing support for the "Extra" and "Data" subobjects
768when displaying object data.
769
770Debugger: Added support to display entire object linked lists when
771displaying object data.
772
773iASL: Removed the obsolete -g option to obtain ACPI tables from the
774Windows registry. This feature has been superseded by the acpidump
775utility.
776
777----------------------------------------
77814 January 2014. Summary of changes for version 20140114:
779
7801) ACPICA kernel-resident subsystem:
781
782Updated all ACPICA copyrights and signons to 2014. Added the 2014
783copyright to all module headers and signons, including the standard Linux
784header. This affects virtually every file in the ACPICA core subsystem,
785iASL compiler, all ACPICA utilities, and the test suites.
786
787Improved parameter validation for AcpiInstallGpeBlock. Added the
788following checks:
7891) The incoming device handle refers to type ACPI_TYPE_DEVICE.
7902) There is not already a GPE block attached to the device.
791Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
792device.
793
794Correctly support "references" in the ACPI_OBJECT. This change fixes the
795support to allow references (namespace nodes) to be passed as arguments
796to control methods via the evaluate object interface. This is probably
797most useful for testing purposes, however.
798
799Improved support for 32/64 bit physical addresses in printf()-like
800output. This change improves the support for physical addresses in printf
801debug statements and other output on both 32-bit and 64-bit hosts. It
802consistently outputs the appropriate number of bytes for each host. The
803%p specifier is unsatisfactory since it does not emit uniform output on
804all hosts/clib implementations (on some, leading zeros are not supported,
805leading to difficult-to-read output).
806
807Example Code and Data Size: These are the sizes for the OS-independent
808acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
809debug version of the code includes the debug output trace mechanism and
810has a much larger code and data size.
811
812  Current Release:
813    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
814    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
815  Previous Release:
816    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
817    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
818
819
8202) iASL Compiler/Disassembler and Tools:
821
822iASL: Fix a possible fault when using the Connection() operator. Fixes a
823problem if the parent Field definition for the Connection operator refers
824to an operation region that does not exist. ACPICA BZ 1064.
825
826AcpiExec: Load of local test tables is now optional. The utility has the
827capability to load some various tables to test features of ACPICA.
828However, there are enough of them that the output of the utility became
829confusing. With this change, only the required local tables are displayed
830(RSDP, XSDT, etc.) along with the actual tables loaded via the command
831line specification. This makes the default output simler and easier to
832understand. The -el command line option restores the original behavior
833for testing purposes.
834
835AcpiExec: Added support for overlapping operation regions. This change
836expands the simulation of operation regions by supporting regions that
837overlap within the given address space. Supports SystemMemory and
838SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
839
840AcpiExec: Added region handler support for PCI_Config and EC spaces. This
841allows AcpiExec to simulate these address spaces, similar to the current
842support for SystemMemory and SystemIO.
843
844Debugger: Added new command to read/write/compare all namespace objects.
845The command "test objects" will exercise the entire namespace by writing
846new values to each data object, and ensuring that the write was
847successful. The original value is then restored and verified.
848
849Debugger: Added the "test predefined" command. This change makes this
850test public and puts it under the new "test" command. The test executes
851each and every predefined name within the current namespace.
852
853----------------------------------------
85418 December 2013. Summary of changes for version 20131218:
855
856Global note: The ACPI 5.0A specification was released this month. There
857are no changes needed for ACPICA since this release of ACPI is an
858errata/clarification release. The specification is available at
859acpi.info.
860
861
8621) ACPICA kernel-resident subsystem:
863
864Added validation of the XSDT root table if it is present. Some older
865platforms contain an XSDT that is ill-formed or otherwise invalid (such
866as containing some or all entries that are NULL pointers). This change
867adds a new function to validate the XSDT before actually using it. If the
868XSDT is found to be invalid, ACPICA will now automatically fall back to
869using the RSDT instead. Original implementation by Zhao Yakui. Ported to
870ACPICA and enhanced by Lv Zheng and Bob Moore.
871
872Added a runtime option to ignore the XSDT and force the use of the RSDT.
873This change adds a runtime option that will force ACPICA to use the RSDT
874instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
875requires that an XSDT be used instead of the RSDT, the XSDT has been
876found to be corrupt or ill-formed on some machines. Lv Zheng.
877
878Added a runtime option to favor 32-bit FADT register addresses over the
87964-bit addresses. This change adds an option to favor 32-bit FADT
880addresses when there is a conflict between the 32-bit and 64-bit versions
881of the same register. The default behavior is to use the 64-bit version
882in accordance with the ACPI specification. This can now be overridden via
883the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
884
885During the change above, the internal "Convert FADT" and "Verify FADT"
886functions have been merged to simplify the code, making it easier to
887understand and maintain. ACPICA BZ 933.
888
889Improve exception reporting and handling for GPE block installation.
890Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
891status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
892
893Added helper macros to extract bus/segment numbers from the HEST table.
894This change adds two macros to extract the encoded bus and segment
895numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
896Betty Dall <betty.dall@hp.com>
897
898Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
899by ACPICA. It is not a public macro, so it should have no effect on
900existing OSV code. Lv Zheng.
901
902Example Code and Data Size: These are the sizes for the OS-independent
903acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
904debug version of the code includes the debug output trace mechanism and
905has a much larger code and data size.
906
907  Current Release:
908    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
909    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
910  Previous Release:
911    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
912    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
913
914
9152) iASL Compiler/Disassembler and Tools:
916
917Disassembler: Improved pathname support for emitted External()
918statements. This change adds full pathname support for external names
919that have been resolved internally by the inclusion of additional ACPI
920tables (via the iASL -e option). Without this change, the disassembler
921can emit multiple externals for the same object, or it become confused
922when the Scope() operator is used on an external object. Overall, greatly
923improves the ability to actually recompile the emitted ASL code when
924objects a referenced across multiple ACPI tables. Reported by Michael
925Tsirkin (mst@redhat.com).
926
927Tests/ASLTS: Updated functional control suite to execute with no errors.
928David Box. Fixed several errors related to the testing of the interpreter
929slack mode. Lv Zheng.
930
931iASL: Added support to detect names that are declared within a control
932method, but are unused (these are temporary names that are only valid
933during the time the method is executing). A remark is issued for these
934cases. ACPICA BZ 1022.
935
936iASL: Added full support for the DBG2 table. Adds full disassembler,
937table compiler, and template generator support for the DBG2 table (Debug
938Port 2 table).
939
940iASL: Added full support for the PCCT table, update the table definition.
941Updates the PCCT table definition in the actbl3.h header and adds table
942compiler and template generator support.
943
944iASL: Added an option to emit only error messages (no warnings/remarks).
945The -ve option will enable only error messages, warnings and remarks are
946suppressed. This can simplify debugging when only the errors are
947important, such as when an ACPI table is disassembled and there are many
948warnings and remarks -- but only the actual errors are of real interest.
949
950Example ACPICA code (source/tools/examples): Updated the example code so
951that it builds to an actual working program, not just example code. Added
952ACPI tables and execution of an example control method in the DSDT. Added
953makefile support for Unix generation.
954
955----------------------------------------
95615 November 2013. Summary of changes for version 20131115:
957
958This release is available at https://acpica.org/downloads
959
960
9611) ACPICA kernel-resident subsystem:
962
963Resource Manager: Fixed loop termination for the "get AML length"
964function. The loop previously had an error termination on a NULL resource
965pointer, which can never happen since the loop simply increments a valid
966resource pointer. This fix changes the loop to terminate with an error on
967an invalid end-of-buffer condition. The problem can be seen as an
968infinite loop by callers to AcpiSetCurrentResources with an invalid or
969corrupted resource descriptor, or a resource descriptor that is missing
970an END_TAG descriptor. Reported by Dan Carpenter
971<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
972
973Table unload and ACPICA termination: Delete all attached data objects
974during namespace node deletion. This fix updates namespace node deletion
975to delete the entire list of attached objects (attached via
976AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
9771024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
978
979ACPICA termination: Added support to delete all objects attached to the
980root namespace node. This fix deletes any and all objects that have been
981attached to the root node via AcpiAttachData. Previously, none of these
982objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
983
984Debug output: Do not emit the function nesting level for the in-kernel
985build. The nesting level is really only useful during a single-thread
986execution. Therefore, only enable this output for the AcpiExec utility.
987Also, only emit the thread ID when executing under AcpiExec (Context
988switches are still always detected and a message is emitted). ACPICA BZ
989972.
990
991Example Code and Data Size: These are the sizes for the OS-independent
992acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
993debug version of the code includes the debug output trace mechanism and
994has a much larger code and data size.
995
996  Current Release:
997    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
998    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
999  Previous Release:
1000    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
1001    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
1002
1003
10042) iASL Compiler/Disassembler and Tools:
1005
1006AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
1007correct portable POSIX header for terminal control functions.
1008
1009Disassembler: Fixed control method invocation issues related to the use
1010of the CondRefOf() operator. The problem is seen in the disassembly where
1011control method invocations may not be disassembled properly if the
1012control method name has been used previously as an argument to CondRefOf.
1013The solution is to not attempt to emit an external declaration for the
1014CondRefOf target (it is not necessary in the first place). This prevents
1015disassembler object type confusion. ACPICA BZ 988.
1016
1017Unix Makefiles: Added an option to disable compiler optimizations and the
1018_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
1019with optimizations (reportedly, gcc 4.4 for example). This change adds a
1020command line option for make (NOOPT) that disables all compiler
1021optimizations and the _FORTIFY_SOURCE compiler flag. The default
1022optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
10231034. Lv Zheng, Bob Moore.
1024
1025Tests/ASLTS: Added options to specify individual test cases and modes.
1026This allows testers running aslts.sh to optionally specify individual
1027test modes and test cases. Also added an option to disable the forced
1028generation of the ACPICA tools from source if desired. Lv Zheng.
1029
1030----------------------------------------
103127 September 2013. Summary of changes for version 20130927:
1032
1033This release is available at https://acpica.org/downloads
1034
1035
10361) ACPICA kernel-resident subsystem:
1037
1038Fixed a problem with store operations to reference objects. This change
1039fixes a problem where a Store operation to an ArgX object that contained
1040a
1041reference to a field object did not complete the automatic dereference
1042and
1043then write to the actual field object. Instead, the object type of the
1044field object was inadvertently changed to match the type of the source
1045operand. The new behavior will actually write to the field object (buffer
1046field or field unit), thus matching the correct ACPI-defined behavior.
1047
1048Implemented support to allow the host to redefine individual OSL
1049prototypes. This change enables the host to redefine OSL prototypes found
1050in the acpiosxf.h file. This allows the host to implement OSL interfaces
1051with a macro or inlined function. Further, it allows the host to add any
1052additional required modifiers such as __iomem, __init, __exit, etc., as
1053necessary on a per-interface basis. Enables maximum flexibility for the
1054OSL interfaces. Lv Zheng.
1055
1056Hardcoded the access width for the FADT-defined reset register. The ACPI
1057specification requires the reset register width to be 8 bits. ACPICA now
1058hardcodes the width to 8 and ignores the FADT width value. This provides
1059compatibility with other ACPI implementations that have allowed BIOS code
1060with bad register width values to go unnoticed. Matthew Garett, Bob
1061Moore,
1062Lv Zheng.
1063
1064Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
1065used
1066in the OSL header (acpiosxf). The change modifies the position of this
1067macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
1068build issues if the OSL defines the implementation of the interface to be
1069an inline stub function. Lv Zheng.
1070
1071Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
1072initialization interfaces. This change adds a new macro for the main init
1073and terminate external interfaces in order to support hosts that require
1074additional or different processing for these functions. Changed from
1075ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
1076Zheng, Bob Moore.
1077
1078Cleaned up the memory allocation macros for configurability. In the
1079common
1080case, the ACPI_ALLOCATE and related macros now resolve directly to their
1081respective AcpiOs* OSL interfaces. Two options:
10821) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
1083default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
10842) For AcpiExec (and for debugging), the macros can optionally be
1085resolved
1086to the local ACPICA interfaces that track each allocation (local tracking
1087is used to immediately detect memory leaks).
1088Lv Zheng.
1089
1090Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
1091to predefine this macro to either TRUE or FALSE during the system build.
1092
1093Replaced __FUNCTION_ with __func__ in the gcc-specific header.
1094
1095Example Code and Data Size: These are the sizes for the OS-independent
1096acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1097debug version of the code includes the debug output trace mechanism and
1098has a much larger code and data size.
1099
1100  Current Release:
1101    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
1102    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
1103  Previous Release:
1104    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
1105    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
1106
1107
11082) iASL Compiler/Disassembler and Tools:
1109
1110iASL: Implemented wildcard support for the -e option. This simplifies use
1111when there are many SSDTs that must be included to resolve external
1112method
1113declarations. ACPICA BZ 1041. Example:
1114    iasl -e ssdt*.dat -d dsdt.dat
1115
1116AcpiExec: Add history/line-editing for Unix/Linux systems. This change
1117adds a portable module that implements full history and limited line
1118editing for Unix and Linux systems. It does not use readline() due to
1119portability issues. Instead it uses the POSIX termio interface to put the
1120terminal in raw input mode so that the various special keys can be
1121trapped
1122(such as up/down-arrow for history support and left/right-arrow for line
1123editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
1124
1125AcpiXtract: Add support to handle (ignore) "empty" lines containing only
1126one or more spaces. This provides compatible with early or different
1127versions of the AcpiDump utility. ACPICA BZ 1044.
1128
1129AcpiDump: Do not ignore tables that contain only an ACPI table header.
1130Apparently, some BIOSs create SSDTs that contain an ACPI table header but
1131no other data. This change adds support to dump these tables. Any tables
1132shorter than the length of an ACPI table header remain in error (an error
1133message is emitted). Reported by Yi Li.
1134
1135Debugger: Echo actual command along with the "unknown command" message.
1136
1137----------------------------------------
113823 August 2013. Summary of changes for version 20130823:
1139
11401) ACPICA kernel-resident subsystem:
1141
1142Implemented support for host-installed System Control Interrupt (SCI)
1143handlers. Certain ACPI functionality requires the host to handle raw
1144SCIs. For example, the "SCI Doorbell" that is defined for memory power
1145state support requires the host device driver to handle SCIs to examine
1146if the doorbell has been activated. Multiple SCI handlers can be
1147installed to allow for future expansion. New external interfaces are
1148AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
1149details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
1150
1151Operation region support: Never locally free the handler "context"
1152pointer. This change removes some dangerous code that attempts to free
1153the handler context pointer in some (rare) circumstances. The owner of
1154the handler owns this pointer and the ACPICA code should never touch it.
1155Although not seen to be an issue in any kernel, it did show up as a
1156problem (fault) under AcpiExec. Also, set the internal storage field for
1157the context pointer to zero when the region is deactivated, simply for
1158sanity. David Box. ACPICA BZ 1039.
1159
1160AcpiRead: On error, do not modify the return value target location. If an
1161error happens in the middle of a split 32/32 64-bit I/O operation, do not
1162modify the target of the return value pointer. Makes the code consistent
1163with the rest of ACPICA. Bjorn Helgaas.
1164
1165Example Code and Data Size: These are the sizes for the OS-independent
1166acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1167debug version of the code includes the debug output trace mechanism and
1168has a much larger code and data size.
1169
1170  Current Release:
1171    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
1172    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
1173  Previous Release:
1174    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
1175    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
1176
1177
11782) iASL Compiler/Disassembler and Tools:
1179
1180AcpiDump: Implemented several new features and fixed some problems:
11811) Added support to dump the RSDP, RSDT, and XSDT tables.
11822) Added support for multiple table instances (SSDT, UEFI).
11833) Added option to dump "customized" (overridden) tables (-c).
11844) Fixed a problem where some table filenames were improperly
1185constructed.
11865) Improved some error messages, removed some unnecessary messages.
1187
1188iASL: Implemented additional support for disassembly of ACPI tables that
1189contain invocations of external control methods. The -fe<file> option
1190allows the import of a file that specifies the external methods along
1191with the required number of arguments for each -- allowing for the
1192correct disassembly of the table. This is a workaround for a limitation
1193of AML code where the disassembler often cannot determine the number of
1194arguments required for an external control method and generates incorrect
1195ASL code. See the iASL reference for details. ACPICA BZ 1030.
1196
1197Debugger: Implemented a new command (paths) that displays the full
1198pathnames (namepaths) and object types of all objects in the namespace.
1199This is an alternative to the namespace command.
1200
1201Debugger: Implemented a new command (sci) that invokes the SCI dispatch
1202mechanism and any installed handlers.
1203
1204iASL: Fixed a possible segfault for "too many parent prefixes" condition.
1205This can occur if there are too many parent prefixes in a namepath (for
1206example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
1207
1208Application OSLs: Set the return value for the PCI read functions. These
1209functions simply return AE_OK, but should set the return value to zero
1210also. This change implements this. ACPICA BZ 1038.
1211
1212Debugger: Prevent possible command line buffer overflow. Increase the
1213size of a couple of the debugger line buffers, and ensure that overflow
1214cannot happen. ACPICA BZ 1037.
1215
1216iASL: Changed to abort immediately on serious errors during the parsing
1217phase. Due to the nature of ASL, there is no point in attempting to
1218compile these types of errors, and they typically end up causing a
1219cascade of hundreds of errors which obscure the original problem.
1220
1221----------------------------------------
122225 July 2013. Summary of changes for version 20130725:
1223
12241) ACPICA kernel-resident subsystem:
1225
1226Fixed a problem with the DerefOf operator where references to FieldUnits
1227and BufferFields incorrectly returned the parent object, not the actual
1228value of the object. After this change, a dereference of a FieldUnit
1229reference results in a read operation on the field to get the value, and
1230likewise, the appropriate BufferField value is extracted from the target
1231buffer.
1232
1233Fixed a problem where the _WAK method could cause a fault under these
1234circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
1235method returned no value. The problem is rarely seen because most kernels
1236run ACPICA in slack mode.
1237
1238For the DerefOf operator, a fatal error now results if an attempt is made
1239to dereference a reference (created by the Index operator) to a NULL
1240package element. Provides compatibility with other ACPI implementations,
1241and this behavior will be added to a future version of the ACPI
1242specification.
1243
1244The ACPI Power Management Timer (defined in the FADT) is now optional.
1245This provides compatibility with other ACPI implementations and will
1246appear in the next version of the ACPI specification. If there is no PM
1247Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
1248zero in the FADT indicates no PM timer.
1249
1250Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
1251allows the host to globally enable/disable all vendor strings, all
1252feature strings, or both. Intended to be primarily used for debugging
1253purposes only. Lv Zheng.
1254
1255Expose the collected _OSI data to the host via a global variable. This
1256data tracks the highest level vendor ID that has been invoked by the BIOS
1257so that the host (and potentially ACPICA itself) can change behaviors
1258based upon the age of the BIOS.
1259
1260Example Code and Data Size: These are the sizes for the OS-independent
1261acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1262debug version of the code includes the debug output trace mechanism and
1263has a much larger code and data size.
1264
1265  Current Release:
1266    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
1267    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
1268  Previous Release:
1269    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
1270    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
1271
1272
12732) iASL Compiler/Disassembler and Tools:
1274
1275iASL: Created the following enhancements for the -so option (create
1276offset table):
12771)Add offsets for the last nameseg in each namepath for every supported
1278object type
12792)Add support for Processor, Device, Thermal Zone, and Scope objects
12803)Add the actual AML opcode for the parent object of every supported
1281object type
12824)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
1283
1284Disassembler: Emit all unresolved external symbols in a single block.
1285These are external references to control methods that could not be
1286resolved, and thus, the disassembler had to make a guess at the number of
1287arguments to parse.
1288
1289iASL: The argument to the -T option (create table template) is now
1290optional. If not specified, the default table is a DSDT, typically the
1291most common case.
1292
1293----------------------------------------
129426 June 2013. Summary of changes for version 20130626:
1295
12961) ACPICA kernel-resident subsystem:
1297
1298Fixed an issue with runtime repair of the _CST object. Null or invalid
1299elements were not always removed properly. Lv Zheng.
1300
1301Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
1302FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
1303the maximum number of GPEs is 1016. Use of multiple GPE block devices
1304makes the system-wide number of GPEs essentially unlimited.
1305
1306Example Code and Data Size: These are the sizes for the OS-independent
1307acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1308debug version of the code includes the debug output trace mechanism and
1309has a much larger code and data size.
1310
1311  Current Release:
1312    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
1313    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
1314  Previous Release:
1315    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
1316    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
1317
1318
13192) iASL Compiler/Disassembler and Tools:
1320
1321Portable AcpiDump: Implemented full support for the Linux and FreeBSD
1322hosts. Now supports Linux, FreeBSD, and Windows.
1323
1324Disassembler: Added some missing types for the HEST and EINJ tables: "Set
1325Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
1326
1327iASL/Preprocessor: Implemented full support for nested
1328#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
1329
1330Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
1331max. The original purpose of this constraint was to limit the amount of
1332debug output. However, the string function in question (UtPrintString) is
1333now used for the disassembler also, where 256 bytes is insufficient.
1334Reported by RehabMan@GitHub.
1335
1336iASL/DataTables: Fixed some problems and issues with compilation of DMAR
1337tables. ACPICA BZ 999. Lv Zheng.
1338
1339iASL: Fixed a couple of error exit issues that could result in a "Could
1340not delete <file>" message during ASL compilation.
1341
1342AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
1343the actual signatures for these tables are "FACP" and "APIC",
1344respectively.
1345
1346AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
1347tables are allowed to have multiple instances.
1348
1349----------------------------------------
135017 May 2013. Summary of changes for version 20130517:
1351
13521) ACPICA kernel-resident subsystem:
1353
1354Fixed a regression introduced in version 20130328 for _INI methods. This
1355change fixes a problem introduced in 20130328 where _INI methods are no
1356longer executed properly because of a memory block that was not
1357initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
1358<tomasz.nowicki@linaro.org>.
1359
1360Fixed a possible problem with the new extended sleep registers in the
1361ACPI
13625.0 FADT. Do not use these registers (even if populated) unless the HW-
1363reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
13641020. Lv Zheng.
1365
1366Implemented return value repair code for _CST predefined objects: Sort
1367the
1368list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
1369
1370Implemented a debug-only option to disable loading of SSDTs from the
1371RSDT/XSDT during ACPICA initialization. This can be useful for debugging
1372ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
1373acglobal.h - ACPICA BZ 1005. Lv Zheng.
1374
1375Fixed some issues in the ACPICA initialization and termination code:
1376Tomasz Nowicki <tomasz.nowicki@linaro.org>
13771) Clear events initialized flag upon event component termination. ACPICA
1378BZ 1013.
13792) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
13803) Delete global lock pending lock during termination. ACPICA BZ 1012.
13814) Clear debug buffer global on termination to prevent possible multiple
1382delete. ACPICA BZ 1010.
1383
1384Standardized all switch() blocks across the entire source base. After
1385many
1386years, different formatting for switch() had crept in. This change makes
1387the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
1388
1389Split some files to enhance ACPICA modularity and configurability:
13901) Split buffer dump routines into utilities/utbuffer.c
13912) Split internal error message routines into utilities/uterror.c
13923) Split table print utilities into tables/tbprint.c
13934) Split iASL command-line option processing into asloptions.c
1394
1395Makefile enhancements:
13961) Support for all new files above.
13972) Abort make on errors from any subcomponent. Chao Guan.
13983) Add build support for Apple Mac OS X. Liang Qi.
1399
1400Example Code and Data Size: These are the sizes for the OS-independent
1401acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1402debug version of the code includes the debug output trace mechanism and
1403has a much larger code and data size.
1404
1405  Current Release:
1406    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
1407    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
1408  Previous Release:
1409    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
1410    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
1411
1412
14132) iASL Compiler/Disassembler and Tools:
1414
1415New utility: Implemented an easily portable version of the acpidump
1416utility to extract ACPI tables from the system (or a file) in an ASCII
1417hex
1418dump format. The top-level code implements the various command line
1419options, file I/O, and table dump routines. To port to a new host, only
1420three functions need to be implemented to get tables -- since this
1421functionality is OS-dependent. See the tools/acpidump/apmain.c module and
1422the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
14231) The Windows version obtains the ACPI tables from the Registry.
14242) The Linux version is under development.
14253) Other hosts - If an OS-dependent module is submitted, it will be
1426distributed with ACPICA.
1427
1428iASL: Fixed a regression for -D preprocessor option (define symbol). A
1429restructuring/change to the initialization sequence caused this option to
1430no longer work properly.
1431
1432iASL: Implemented a mechanism to disable specific warnings and remarks.
1433Adds a new command line option, "-vw <messageid> as well as "#pragma
1434disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
1435
1436iASL: Fix for too-strict package object validation. The package object
1437validation for return values from the predefined names is a bit too
1438strict, it does not allow names references within the package (which will
1439be resolved at runtime.) These types of references cannot be validated at
1440compile time. This change ignores named references within package objects
1441for names that return or define static packages.
1442
1443Debugger: Fixed the 80-character command line limitation for the History
1444command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
1445
1446iASL: Added control method and package support for the -so option
1447(generates AML offset table for BIOS support.)
1448
1449iASL: issue a remark if a non-serialized method creates named objects. If
1450a thread blocks within the method for any reason, and another thread
1451enters the method, the method will fail because an attempt will be made
1452to
1453create the same (named) object twice. In this case, issue a remark that
1454the method should be marked serialized. NOTE: may become a warning later.
1455ACPICA BZ 909.
1456
1457----------------------------------------
145818 April 2013. Summary of changes for version 20130418:
1459
14601) ACPICA kernel-resident subsystem:
1461
1462Fixed a possible buffer overrun during some rare but specific field unit
1463read operations. This overrun can only happen if the DSDT version is 1 --
1464meaning that all AML integers are 32 bits -- and the field length is
1465between 33 and 55 bits long. During the read, an internal buffer object
1466is
1467created for the field unit because the field is larger than an integer
1468(32
1469bits). However, in this case, the buffer will be incorrectly written
1470beyond the end because the buffer length is less than the internal
1471minimum
1472of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
1473long, but a full 8 bytes will be written.
1474
1475Updated the Embedded Controller "orphan" _REG method support. This refers
1476to _REG methods under the EC device that have no corresponding operation
1477region. This is allowed by the ACPI specification. This update removes a
1478dependency on the existence an ECDT table. It will execute an orphan _REG
1479method as long as the operation region handler for the EC is installed at
1480the EC device node and not the namespace root. Rui Zhang (original
1481update), Bob Moore (update/integrate).
1482
1483Implemented run-time argument typechecking for all predefined ACPI names
1484(_STA, _BIF, etc.) This change performs object typechecking on all
1485incoming arguments for all predefined names executed via
1486AcpiEvaluateObject. This ensures that ACPI-related device drivers are
1487passing correct object types as well as the correct number of arguments
1488(therefore identifying any issues immediately). Also, the ASL/namespace
1489definition of the predefined name is checked against the ACPI
1490specification for the proper argument count. Adds one new file,
1491nsarguments.c
1492
1493Changed an exception code for the ASL UnLoad() operator. Changed the
1494exception code for the case where the input DdbHandle is invalid, from
1495AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
1496
1497Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
1498global makefile. The use of this flag causes compiler errors on earlier
1499versions of GCC, so it has been removed for compatibility.
1500
1501Miscellaneous cleanup:
15021) Removed some unused/obsolete macros
15032) Fixed a possible memory leak in the _OSI support
15043) Removed an unused variable in the predefined name support
15054) Windows OSL: remove obsolete reference to a memory list field
1506
1507Example Code and Data Size: These are the sizes for the OS-independent
1508acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1509debug version of the code includes the debug output trace mechanism and
1510has a much larger code and data size.
1511
1512  Current Release:
1513    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
1514    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
1515  Previous Release:
1516    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
1517    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
1518
1519
15202) iASL Compiler/Disassembler and Tools:
1521
1522AcpiExec: Added installation of a handler for the SystemCMOS address
1523space. This prevents control method abort if a method accesses this
1524space.
1525
1526AcpiExec: Added support for multiple EC devices, and now install EC
1527operation region handler(s) at the actual EC device instead of the
1528namespace root. This reflects the typical behavior of host operating
1529systems.
1530
1531AcpiExec: Updated to ensure that all operation region handlers are
1532installed before the _REG methods are executed. This prevents a _REG
1533method from aborting if it accesses an address space has no handler.
1534AcpiExec installs a handler for every possible address space.
1535
1536Debugger: Enhanced the "handlers" command to display non-root handlers.
1537This change enhances the handlers command to display handlers associated
1538with individual devices throughout the namespace, in addition to the
1539currently supported display of handlers associated with the root
1540namespace
1541node.
1542
1543ASL Test Suite: Several test suite errors have been identified and
1544resolved, reducing the total error count during execution. Chao Guan.
1545
1546----------------------------------------
154728 March 2013. Summary of changes for version 20130328:
1548
15491) ACPICA kernel-resident subsystem:
1550
1551Fixed several possible race conditions with the internal object reference
1552counting mechanism. Some of the external ACPICA interfaces update object
1553reference counts without holding the interpreter or namespace lock. This
1554change adds a spinlock to protect reference count updates on the internal
1555ACPICA objects. Reported by and with assistance from Andriy Gapon
1556(avg@FreeBSD.org).
1557
1558FADT support: Removed an extraneous warning for very large GPE register
1559sets. This change removes a size mismatch warning if the legacy length
1560field for a GPE register set is larger than the 64-bit GAS structure can
1561accommodate. GPE register sets can be larger than the 255-bit width
1562limitation of the GAS structure. Linn Crosetto (linn@hp.com).
1563
1564_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
1565return from this interface. Handles a possible timeout case if
1566ACPI_WAIT_FOREVER is modified by the host to be a value less than
1567"forever". Jung-uk Kim.
1568
1569Predefined name support: Add allowed/required argument type information
1570to
1571the master predefined info table. This change adds the infrastructure to
1572enable typechecking on incoming arguments for all predefined
1573methods/objects. It does not actually contain the code that will fully
1574utilize this information, this is still under development. Also condenses
1575some duplicate code for the predefined names into a new module,
1576utilities/utpredef.c
1577
1578Example Code and Data Size: These are the sizes for the OS-independent
1579acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1580debug version of the code includes the debug output trace mechanism and
1581has a much larger code and data size.
1582
1583  Previous Release:
1584    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
1585    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
1586  Current Release:
1587    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
1588    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
1589
1590
15912) iASL Compiler/Disassembler and Tools:
1592
1593iASL: Implemented a new option to simplify the development of ACPI-
1594related
1595BIOS code. Adds support for a new "offset table" output file. The -so
1596option will create a C table containing the AML table offsets of various
1597named objects in the namespace so that BIOS code can modify them easily
1598at
1599boot time. This can simplify BIOS runtime code by eliminating expensive
1600searches for "magic values", enhancing boot times and adding greater
1601reliability. With assistance from Lee Hamel.
1602
1603iASL: Allow additional predefined names to return zero-length packages.
1604Now, all predefined names that are defined by the ACPI specification to
1605return a "variable-length package of packages" are allowed to return a
1606zero length top-level package. This allows the BIOS to tell the host that
1607the requested feature is not supported, and supports existing BIOS/ASL
1608code and practices.
1609
1610iASL: Changed the "result not used" warning to an error. This is the case
1611where an ASL operator is effectively a NOOP because the result of the
1612operation is not stored anywhere. For example:
1613    Add (4, Local0)
1614There is no target (missing 3rd argument), nor is the function return
1615value used. This is potentially a very serious problem -- since the code
1616was probably intended to do something, but for whatever reason, the value
1617was not stored. Therefore, this issue has been upgraded from a warning to
1618an error.
1619
1620AcpiHelp: Added allowable/required argument types to the predefined names
1621info display. This feature utilizes the recent update to the predefined
1622names table (above).
1623
1624----------------------------------------
162514 February 2013. Summary of changes for version 20130214:
1626
16271) ACPICA Kernel-resident Subsystem:
1628
1629Fixed a possible regression on some hosts: Reinstated the safe return
1630macros (return_ACPI_STATUS, etc.) that ensure that the argument is
1631evaluated only once. Although these macros are not needed for the ACPICA
1632code itself, they are often used by ACPI-related host device drivers
1633where
1634the safe feature may be necessary.
1635
1636Fixed several issues related to the ACPI 5.0 reduced hardware support
1637(SOC): Now ensure that if the platform declares itself as hardware-
1638reduced
1639via the FADT, the following functions become NOOPs (and always return
1640AE_OK) because ACPI is always enabled by definition on these machines:
1641  AcpiEnable
1642  AcpiDisable
1643  AcpiHwGetMode
1644  AcpiHwSetMode
1645
1646Dynamic Object Repair: Implemented additional runtime repairs for
1647predefined name return values. Both of these repairs can simplify code in
1648the related device drivers that invoke these methods:
16491) For the _STR and _MLS names, automatically repair/convert an ASCII
1650string to a Unicode buffer.
16512) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
1652a
1653lone end tag descriptor in the following cases: A Return(0) was executed,
1654a null buffer was returned, or no object at all was returned (non-slack
1655mode only). Adds a new file, nsconvert.c
1656ACPICA BZ 998. Bob Moore, Lv Zheng.
1657
1658Resource Manager: Added additional code to prevent possible infinite
1659loops
1660while traversing corrupted or ill-formed resource template buffers. Check
1661for zero-length resource descriptors in all code that loops through
1662resource templates (the length field is used to index through the
1663template). This change also hardens the external AcpiWalkResources and
1664AcpiWalkResourceBuffer interfaces.
1665
1666Local Cache Manager: Enhanced the main data structure to eliminate an
1667unnecessary mechanism to access the next object in the list. Actually
1668provides a small performance enhancement for hosts that use the local
1669ACPICA cache manager. Jung-uk Kim.
1670
1671Example Code and Data Size: These are the sizes for the OS-independent
1672acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1673debug version of the code includes the debug output trace mechanism and
1674has a much larger code and data size.
1675
1676  Previous Release:
1677    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
1678    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
1679  Current Release:
1680    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
1681    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
1682
1683
16842) iASL Compiler/Disassembler and Tools:
1685
1686iASL/Disassembler: Fixed several issues with the definition of the ACPI
16875.0 RASF table (RAS Feature Table). This change incorporates late changes
1688that were made to the ACPI 5.0 specification.
1689
1690iASL/Disassembler: Added full support for the following new ACPI tables:
1691  1) The MTMR table (MID Timer Table)
1692  2) The VRTC table (Virtual Real Time Clock Table).
1693Includes header file, disassembler, table compiler, and template support
1694for both tables.
1695
1696iASL: Implemented compile-time validation of package objects returned by
1697predefined names. This new feature validates static package objects
1698returned by the various predefined names defined to return packages. Both
1699object types and package lengths are validated, for both parent packages
1700and sub-packages, if any. The code is similar in structure and behavior
1701to
1702the runtime repair mechanism within the AML interpreter and uses the
1703existing predefined name information table. Adds a new file, aslprepkg.c.
1704ACPICA BZ 938.
1705
1706iASL: Implemented auto-detection of binary ACPI tables for disassembly.
1707This feature detects a binary file with a valid ACPI table header and
1708invokes the disassembler automatically. Eliminates the need to
1709specifically invoke the disassembler with the -d option. ACPICA BZ 862.
1710
1711iASL/Disassembler: Added several warnings for the case where there are
1712unresolved control methods during the disassembly. This can potentially
1713cause errors when the output file is compiled, because the disassembler
1714assumes zero method arguments in these cases (it cannot determine the
1715actual number of arguments without resolution/definition of the method).
1716
1717Debugger: Added support to display all resources with a single command.
1718Invocation of the resources command with no arguments will now display
1719all
1720resources within the current namespace.
1721
1722AcpiHelp: Added descriptive text for each ACPICA exception code displayed
1723via the -e option.
1724
1725----------------------------------------
172617 January 2013. Summary of changes for version 20130117:
1727
17281) ACPICA Kernel-resident Subsystem:
1729
1730Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
1731return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
1732objects to return a package containing one integer, most BIOS code
1733returns
1734two integers and the previous code reflects that. However, we also need
1735to
1736support BIOS code that actually implements to the ACPI spec, and this
1737change reflects this.
1738
1739Fixed two issues with the ACPI_DEBUG_PRINT macros:
17401) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
1741C compilers that require this support.
17422) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
1743ACPI_DEBUG is already used by many of the various hosts.
1744
1745Updated all ACPICA copyrights and signons to 2013. Added the 2013
1746copyright to all module headers and signons, including the standard Linux
1747header. This affects virtually every file in the ACPICA core subsystem,
1748iASL compiler, all ACPICA utilities, and the test suites.
1749
1750Example Code and Data Size: These are the sizes for the OS-independent
1751acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1752debug version of the code includes the debug output trace mechanism and
1753has a much larger code and data size.
1754
1755  Previous Release:
1756    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
1757    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
1758  Current Release:
1759    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
1760    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
1761
1762
17632) iASL Compiler/Disassembler and Tools:
1764
1765Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
1766prevent a possible fault on some hosts. Some C libraries modify the arg
1767pointer parameter to vfprintf making it difficult to call it twice in the
1768AcpiOsVprintf function. Use a local buffer to workaround this issue. This
1769does not affect the Windows OSL since the Win C library does not modify
1770the arg pointer. Chao Guan, Bob Moore.
1771
1772iASL: Fixed a possible infinite loop when the maximum error count is
1773reached. If an output file other than the .AML file is specified (such as
1774a listing file), and the maximum number of errors is reached, do not
1775attempt to flush data to the output file(s) as the compiler is aborting.
1776This can cause an infinite loop as the max error count code essentially
1777keeps calling itself.
1778
1779iASL/Disassembler: Added an option (-in) to ignore NOOP
1780opcodes/operators.
1781Implemented for both the compiler and the disassembler. Often, the NOOP
1782opcode is used as padding for packages that are changed dynamically by
1783the
1784BIOS. When disassembled and recompiled, these NOOPs will cause syntax
1785errors. This option causes the disassembler to ignore all NOOP opcodes
1786(0xA3), and it also causes the compiler to ignore all ASL source code
1787NOOP
1788statements as well.
1789
1790Debugger: Enhanced the Sleep command to execute all sleep states. This
1791change allows Sleep to be invoked with no arguments and causes the
1792debugger to execute all of the sleep states, 0-5, automatically.
1793
1794----------------------------------------
179520 December 2012. Summary of changes for version 20121220:
1796
17971) ACPICA Kernel-resident Subsystem:
1798
1799Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
1800alternate entry point for AcpiWalkResources and improves the usability of
1801the resource manager by accepting as input a buffer containing the output
1802of either a _CRS, _PRS, or _AEI method. The key functionality is that the
1803input buffer is not deleted by this interface so that it can be used by
1804the host later. See the ACPICA reference for details.
1805
1806Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
1807(DSDT version < 2). The constant will be truncated and this warning
1808reflects that behavior.
1809
1810Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
1811ExtendedInterrupt, and GpioInt descriptors. This change adds support to
1812both get and set the new wake bit in these descriptors, separately from
1813the existing share bit. Reported by Aaron Lu.
1814
1815Interpreter: Fix Store() when an implicit conversion is not possible. For
1816example, in the cases such as a store of a string to an existing package
1817object, implement the store as a CopyObject(). This is a small departure
1818from the ACPI specification which states that the control method should
1819be
1820aborted in this case. However, the ASLTS suite depends on this behavior.
1821
1822Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
1823macros: check if debug output is currently enabled as soon as possible to
1824minimize performance impact if debug is in fact not enabled.
1825
1826Source code restructuring: Cleanup to improve modularity. The following
1827new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
1828psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
1829Associated makefiles and project files have been updated.
1830
1831Changed an exception code for LoadTable operator. For the case where one
1832of the input strings is too long, change the returned exception code from
1833AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
1834
1835Fixed a possible memory leak in dispatcher error path. On error, delete
1836the mutex object created during method mutex creation. Reported by
1837tim.gardner@canonical.com.
1838
1839Example Code and Data Size: These are the sizes for the OS-independent
1840acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1841debug version of the code includes the debug output trace mechanism and
1842has a much larger code and data size.
1843
1844  Previous Release:
1845    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
1846    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1847  Current Release:
1848    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
1849    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
1850
1851
18522) iASL Compiler/Disassembler and Tools:
1853
1854iASL: Disallow a method call as argument to the ObjectType ASL operator.
1855This change tracks an errata to the ACPI 5.0 document. The AML grammar
1856will not allow the interpreter to differentiate between a method and a
1857method invocation when these are used as an argument to the ObjectType
1858operator. The ACPI specification change is to disallow a method
1859invocation
1860(UserTerm) for the ObjectType operator.
1861
1862Finish support for the TPM2 and CSRT tables in the headers, table
1863compiler, and disassembler.
1864
1865Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
1866always expires immediately if the semaphore is not available. The
1867original
1868code was using a relative-time timeout, but sem_timedwait requires the
1869use
1870of an absolute time.
1871
1872iASL: Added a remark if the Timer() operator is used within a 32-bit
1873table. This operator returns a 64-bit time value that will be truncated
1874within a 32-bit table.
1875
1876iASL Source code restructuring: Cleanup to improve modularity. The
1877following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
1878aslmethod.c, and aslfileio.c. Associated makefiles and project files have
1879been updated.
1880
1881
1882----------------------------------------
188314 November 2012. Summary of changes for version 20121114:
1884
18851) ACPICA Kernel-resident Subsystem:
1886
1887Implemented a performance enhancement for ACPI/AML Package objects. This
1888change greatly increases the performance of Package objects within the
1889interpreter. It changes the processing of reference counts for packages
1890by
1891optimizing for the most common case where the package sub-objects are
1892either Integers, Strings, or Buffers. Increases the overall performance
1893of
1894the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
18952X.)
1896Chao Guan. ACPICA BZ 943.
1897
1898Implemented and deployed common macros to extract flag bits from resource
1899descriptors. Improves readability and maintainability of the code. Fixes
1900a
1901problem with the UART serial bus descriptor for the number of data bits
1902flags (was incorrectly 2 bits, should be 3).
1903
1904Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
1905of the macros and changed the SETx macros to the style of (destination,
1906source). Also added ACPI_CASTx companion macros. Lv Zheng.
1907
1908Example Code and Data Size: These are the sizes for the OS-independent
1909acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1910debug version of the code includes the debug output trace mechanism and
1911has a much larger code and data size.
1912
1913  Previous Release:
1914    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
1915    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1916  Current Release:
1917    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
1918    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
1919
1920
19212) iASL Compiler/Disassembler and Tools:
1922
1923Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
1924adds the ShareAndWake and ExclusiveAndWake flags which were added to the
1925Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
1926
1927Disassembler: Fixed a problem with external declaration generation. Fixes
1928a problem where an incorrect pathname could be generated for an external
1929declaration if the original reference to the object includes leading
1930carats (^). ACPICA BZ 984.
1931
1932Debugger: Completed a major update for the Disassemble<method> command.
1933This command was out-of-date and did not properly disassemble control
1934methods that had any reasonable complexity. This fix brings the command
1935up
1936to the same level as the rest of the disassembler. Adds one new file,
1937dmdeferred.c, which is existing code that is now common with the main
1938disassembler and the debugger disassemble command. ACPICA MZ 978.
1939
1940iASL: Moved the parser entry prototype to avoid a duplicate declaration.
1941Newer versions of Bison emit this prototype, so moved the prototype out
1942of
1943the iASL header to where it is actually used in order to avoid a
1944duplicate
1945declaration.
1946
1947iASL/Tools: Standardized use of the stream I/O functions:
1948  1) Ensure check for I/O error after every fopen/fread/fwrite
1949  2) Ensure proper order of size/count arguments for fread/fwrite
1950  3) Use test of (Actual != Requested) after all fwrite, and most fread
1951  4) Standardize I/O error messages
1952Improves reliability and maintainability of the code. Bob Moore, Lv
1953Zheng.
1954ACPICA BZ 981.
1955
1956Disassembler: Prevent duplicate External() statements. During generation
1957of external statements, detect similar pathnames that are actually
1958duplicates such as these:
1959  External (\ABCD)
1960  External (ABCD)
1961Remove all leading '\' characters from pathnames during the external
1962statement generation so that duplicates will be detected and tossed.
1963ACPICA BZ 985.
1964
1965Tools: Replace low-level I/O with stream I/O functions. Replace
1966open/read/write/close with the stream I/O equivalents
1967fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
1968Moore.
1969
1970AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
1971name header so that AcpiXtract recognizes the output file/table.
1972
1973iASL: Remove obsolete -2 option flag. Originally intended to force the
1974compiler/disassembler into an ACPI 2.0 mode, this was never implemented
1975and the entire concept is now obsolete.
1976
1977----------------------------------------
197818 October 2012. Summary of changes for version 20121018:
1979
1980
19811) ACPICA Kernel-resident Subsystem:
1982
1983Updated support for the ACPI 5.0 MPST table. Fixes some problems
1984introduced by late changes to the table as it was added to the ACPI 5.0
1985specification. Includes header, disassembler, and data table compiler
1986support as well as a new version of the MPST template.
1987
1988AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
19895.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
1990methods: _HID, _CID, and _UID.
1991
1992Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
1993ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
1994name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
1995names for their various drivers. Affects the AcpiGetObjectInfo external
1996interface, and other internal interfaces as well.
1997
1998Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
1999This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
2000on machines that support non-aligned transfers. Optimizes for this case
2001rather than using a strncpy. With assistance from Zheng Lv.
2002
2003Resource Manager: Small fix for buffer size calculation. Fixed a one byte
2004error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
2005
2006Added a new debug print message for AML mutex objects that are force-
2007released. At control method termination, any currently acquired mutex
2008objects are force-released. Adds a new debug-only message for each one
2009that is released.
2010
2011Audited/updated all ACPICA return macros and the function debug depth
2012counter: 1) Ensure that all functions that use the various TRACE macros
2013also use the appropriate ACPICA return macros. 2) Ensure that all normal
2014return statements surround the return expression (value) with parens to
2015ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
2016Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
2017
2018Global source code changes/maintenance: All extra lines at the start and
2019end of each source file have been removed for consistency. Also, within
2020comments, all new sentences start with a single space instead of a double
2021space, again for consistency across the code base.
2022
2023Example Code and Data Size: These are the sizes for the OS-independent
2024acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2025debug version of the code includes the debug output trace mechanism and
2026has a much larger code and data size.
2027
2028  Previous Release:
2029    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
2030    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
2031  Current Release:
2032    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
2033    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
2034
2035
20362) iASL Compiler/Disassembler and Tools:
2037
2038AcpiExec: Improved the algorithm used for memory leak/corruption
2039detection. Added some intelligence to the code that maintains the global
2040list of allocated memory. The list is now ordered by allocated memory
2041address, significantly improving performance. When running AcpiExec on
2042the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
2043on the platform and/or the environment. Note, this performance
2044enhancement affects the AcpiExec utility only, not the kernel-resident
2045ACPICA code.
2046
2047Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
2048the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
2049incorrect table offset reported for invalid opcodes. Report the original
205032-bit value for bad ACPI_NAMEs (as well as the repaired name.)
2051
2052Disassembler: Enhanced the -vt option to emit the binary table data in
2053hex format to assist with debugging.
2054
2055Fixed a potential filename buffer overflow in osunixdir.c. Increased the
2056size of file structure. Colin Ian King.
2057
2058----------------------------------------
205913 September 2012. Summary of changes for version 20120913:
2060
2061
20621) ACPICA Kernel-resident Subsystem:
2063
2064ACPI 5.0: Added two new notify types for the Hardware Error Notification
2065Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
2066and
2067MCE(6).
2068
2069Table Manager: Merged/removed duplicate code in the root table resize
2070functions. One function is external, the other is internal. Lv Zheng,
2071ACPICA
2072BZ 846.
2073
2074Makefiles: Completely removed the obsolete "Linux" makefiles under
2075acpica/generate/linux. These makefiles are obsolete and have been
2076replaced
2077by
2078the generic unix makefiles under acpica/generate/unix.
2079
2080Makefiles: Ensure that binary files always copied properly. Minor rule
2081change
2082to ensure that the final binary output files are always copied up to the
2083appropriate binary directory (bin32 or bin64.)
2084
2085Example Code and Data Size: These are the sizes for the OS-independent
2086acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2087debug
2088version of the code includes the debug output trace mechanism and has a
2089much
2090larger code and data size.
2091
2092  Previous Release:
2093    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
2094    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
2095  Current Release:
2096    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
2097    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
2098
2099
21002) iASL Compiler/Disassembler and Tools:
2101
2102Disassembler: Fixed a possible fault during the disassembly of resource
2103descriptors when a second parse is required because of the invocation of
2104external control methods within the table. With assistance from
2105adq@lidskialf.net. ACPICA BZ 976.
2106
2107iASL: Fixed a namepath optimization problem. An error can occur if the
2108parse
2109node that contains the namepath to be optimized does not have a parent
2110node
2111that is a named object. This change fixes the problem.
2112
2113iASL: Fixed a regression where the AML file is not deleted on errors. The
2114AML
2115output file should be deleted if there are any errors during the
2116compiler.
2117The
2118only exception is if the -f (force output) option is used. ACPICA BZ 974.
2119
2120iASL: Added a feature to automatically increase internal line buffer
2121sizes.
2122Via realloc(), automatically increase the internal line buffer sizes as
2123necessary to support very long source code lines. The current version of
2124the
2125preprocessor requires a buffer long enough to contain full source code
2126lines.
2127This change increases the line buffer(s) if the input lines go beyond the
2128current buffer size. This eliminates errors that occurred when a source
2129code
2130line was longer than the buffer.
2131
2132iASL: Fixed a problem with constant folding in method declarations. The
2133SyncLevel term is a ByteConstExpr, and incorrect code would be generated
2134if a
2135Type3 opcode was used.
2136
2137Debugger: Improved command help support. For incorrect argument count,
2138display
2139full help for the command. For help command itself, allow an argument to
2140specify a command.
2141
2142Test Suites: Several bug fixes for the ASLTS suite reduces the number of
2143errors during execution of the suite. Guan Chao.
2144
2145----------------------------------------
214616 August 2012. Summary of changes for version 20120816:
2147
2148
21491) ACPICA Kernel-resident Subsystem:
2150
2151Removed all use of the deprecated _GTS and _BFS predefined methods. The
2152_GTS
2153(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
2154deprecated and will probably be removed from the ACPI specification.
2155Windows
2156does not invoke them, and reportedly never will. The final nail in the
2157coffin
2158is that the ACPI specification states that these methods must be run with
2159interrupts off, which is not going to happen in a kernel interpreter.
2160Note:
2161Linux has removed all use of the methods also. It was discovered that
2162invoking these functions caused failures on some machines, probably
2163because
2164they were never tested since Windows does not call them. Affects two
2165external
2166interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
2167ACPICA BZ 969.
2168
2169Implemented support for complex bit-packed buffers returned from the _PLD
2170(Physical Location of Device) predefined method. Adds a new external
2171interface, AcpiDecodePldBuffer that parses the buffer into a more usable
2172C
2173structure. Note: C Bitfields cannot be used for this type of predefined
2174structure since the memory layout of individual bitfields is not defined
2175by
2176the C language. In addition, there are endian concerns where a compiler
2177will
2178change the bitfield ordering based on the machine type. The new ACPICA
2179interface eliminates these issues, and should be called after _PLD is
2180executed. ACPICA BZ 954.
2181
2182Implemented a change to allow a scope change to root (via "Scope (\)")
2183during
2184execution of module-level ASL code (code that is executed at table load
2185time.) Lin Ming.
2186
2187Added the Windows8/Server2012 string for the _OSI method. This change
2188adds
2189a
2190new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
21912012.
2192
2193Added header support for the new ACPI tables DBG2 (Debug Port Table Type
21942)
2195and CSRT (Core System Resource Table).
2196
2197Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
2198names. This simplifies access to the buffers returned by these predefined
2199names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
2200
2201GPE support: Removed an extraneous parameter from the various low-level
2202internal GPE functions. Tang Feng.
2203
2204Removed the linux makefiles from the unix packages. The generate/linux
2205makefiles are obsolete and have been removed from the unix tarball
2206release
2207packages. The replacement makefiles are under generate/unix, and there is
2208a
2209top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
2210
2211Updates for Unix makefiles:
22121) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
22132) Update linker flags (move to end of command line) for AcpiExec
2214utility.
2215Guan Chao.
2216
2217Split ACPICA initialization functions to new file, utxfinit.c. Split from
2218utxface.c to improve modularity and reduce file size.
2219
2220Example Code and Data Size: These are the sizes for the OS-independent
2221acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2222debug version of the code includes the debug output trace mechanism and
2223has a
2224much larger code and data size.
2225
2226  Previous Release:
2227    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
2228    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
2229  Current Release:
2230    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
2231    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
2232
2233
22342) iASL Compiler/Disassembler and Tools:
2235
2236iASL: Fixed a problem with constant folding for fixed-length constant
2237expressions. The constant-folding code was not being invoked for constant
2238expressions that allow the use of type 3/4/5 opcodes to generate
2239constants
2240for expressions such as ByteConstExpr, WordConstExpr, etc. This could
2241result
2242in the generation of invalid AML bytecode. ACPICA BZ 970.
2243
2244iASL: Fixed a generation issue on newer versions of Bison. Newer versions
2245apparently automatically emit some of the necessary externals. This
2246change
2247handles these versions in order to eliminate generation warnings.
2248
2249Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
2250
2251Disassembler: Add support to decode _PLD buffers. The decoded buffer
2252appears
2253within comments in the output file.
2254
2255Debugger: Fixed a regression with the "Threads" command where
2256AE_BAD_PARAMETER was always returned.
2257
2258----------------------------------------
225911 July 2012. Summary of changes for version 20120711:
2260
22611) ACPICA Kernel-resident Subsystem:
2262
2263Fixed a possible fault in the return package object repair code. Fixes a
2264problem that can occur when a lone package object is wrapped with an
2265outer
2266package object in order to force conformance to the ACPI specification.
2267Can
2268affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
2269_DLM,
2270_CSD, _PSD, _TSD.
2271
2272Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
2273PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
2274ARB_DIS bit must be implemented in the host-dependent C3 processor power
2275state
2276support. Note, ARB_DIS is obsolete and only applies to older chipsets,
2277both
2278Intel and other vendors. (for Intel: ICH4-M and earlier)
2279
2280This change removes the code to disable/enable bus master arbitration
2281during
2282suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
2283causes
2284resume problems on some machines. The change has been in use for over
2285seven
2286years within Linux.
2287
2288Implemented two new external interfaces to support host-directed dynamic
2289ACPI
2290table load and unload. They are intended to simplify the host
2291implementation
2292of hot-plug support:
2293  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
2294  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
2295table.
2296See the ACPICA reference for additional details. Adds one new file,
2297components/tables/tbxfload.c
2298
2299Implemented and deployed two new interfaces for errors and warnings that
2300are
2301known to be caused by BIOS/firmware issues:
2302  AcpiBiosError: Prints "ACPI Firmware Error" message.
2303  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
2304Deployed these new interfaces in the ACPICA Table Manager code for ACPI
2305table
2306and FADT errors. Additional deployment to be completed as appropriate in
2307the
2308future. The associated conditional macros are ACPI_BIOS_ERROR and
2309ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
2310ACPICA
2311BZ
2312843.
2313
2314Implicit notify support: ensure that no memory allocation occurs within a
2315critical region. This fix moves a memory allocation outside of the time
2316that a
2317spinlock is held. Fixes issues on systems that do not allow this
2318behavior.
2319Jung-uk Kim.
2320
2321Split exception code utilities and tables into a new file,
2322utilities/utexcep.c
2323
2324Example Code and Data Size: These are the sizes for the OS-independent
2325acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2326debug
2327version of the code includes the debug output trace mechanism and has a
2328much
2329larger code and data size.
2330
2331  Previous Release:
2332    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
2333    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
2334  Current Release:
2335    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
2336    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
2337
2338
23392) iASL Compiler/Disassembler and Tools:
2340
2341iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
2342of
23430. Jung-uk Kim.
2344
2345Debugger: Enhanced the "tables" command to emit additional information
2346about
2347the current set of ACPI tables, including the owner ID and flags decode.
2348
2349Debugger: Reimplemented the "unload" command to use the new
2350AcpiUnloadParentTable external interface. This command was disable
2351previously
2352due to need for an unload interface.
2353
2354AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
2355option
2356will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
2357
2358----------------------------------------
235920 June 2012. Summary of changes for version 20120620:
2360
2361
23621) ACPICA Kernel-resident Subsystem:
2363
2364Implemented support to expand the "implicit notify" feature to allow
2365multiple
2366devices to be notified by a single GPE. This feature automatically
2367generates a
2368runtime device notification in the absence of a BIOS-provided GPE control
2369method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
2370notify is
2371provided by ACPICA for Windows compatibility, and is a workaround for
2372BIOS
2373AML
2374code errors. See the description of the AcpiSetupGpeForWake interface in
2375the
2376APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
2377
2378Changed some comments and internal function names to simplify and ensure
2379correctness of the Linux code translation. No functional changes.
2380
2381Example Code and Data Size: These are the sizes for the OS-independent
2382acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2383debug
2384version of the code includes the debug output trace mechanism and has a
2385much
2386larger code and data size.
2387
2388  Previous Release:
2389    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
2390    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
2391  Current Release:
2392    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
2393    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
2394
2395
23962) iASL Compiler/Disassembler and Tools:
2397
2398Disassembler: Added support to emit short, commented descriptions for the
2399ACPI
2400predefined names in order to improve the readability of the disassembled
2401output. ACPICA BZ 959. Changes include:
2402  1) Emit descriptions for all standard predefined names (_INI, _STA,
2403_PRW,
2404etc.)
2405  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
2406  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
2407etc.)
2408
2409AcpiSrc: Fixed several long-standing Linux code translation issues.
2410Argument
2411descriptions in function headers are now translated properly to lower
2412case
2413and
2414underscores. ACPICA BZ 961. Also fixes translation problems such as
2415these:
2416(old -> new)
2417  i_aSL -> iASL
2418  00-7_f -> 00-7F
2419  16_k -> 16K
2420  local_fADT -> local_FADT
2421  execute_oSI -> execute_OSI
2422
2423iASL: Fixed a problem where null bytes were inadvertently emitted into
2424some
2425listing files.
2426
2427iASL: Added the existing debug options to the standard help screen. There
2428are
2429no longer two different help screens. ACPICA BZ 957.
2430
2431AcpiHelp: Fixed some typos in the various predefined name descriptions.
2432Also
2433expand some of the descriptions where appropriate.
2434
2435iASL: Fixed the -ot option (display compile times/statistics). Was not
2436working
2437properly for standard output; only worked for the debug file case.
2438
2439----------------------------------------
244018 May 2012. Summary of changes for version 20120518:
2441
2442
24431) ACPICA Core Subsystem:
2444
2445Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
2446defined
2447to block until asynchronous events such as notifies and GPEs have
2448completed.
2449Within ACPICA, it is only called before a notify or GPE handler is
2450removed/uninstalled. It also may be useful for the host OS within related
2451drivers such as the Embedded Controller driver. See the ACPICA reference
2452for
2453additional information. ACPICA BZ 868.
2454
2455ACPI Tables: Added a new error message for a possible overflow failure
2456during
2457the conversion of FADT 32-bit legacy register addresses to internal
2458common
245964-
2460bit GAS structure representation. The GAS has a one-byte "bit length"
2461field,
2462thus limiting the register length to 255 bits. ACPICA BZ 953.
2463
2464Example Code and Data Size: These are the sizes for the OS-independent
2465acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2466debug
2467version of the code includes the debug output trace mechanism and has a
2468much
2469larger code and data size.
2470
2471  Previous Release:
2472    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2473    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
2474  Current Release:
2475    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
2476    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
2477
2478
24792) iASL Compiler/Disassembler and Tools:
2480
2481iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
2482macro.
2483This keyword was added late in the ACPI 5.0 release cycle and was not
2484implemented until now.
2485
2486Disassembler: Added support for Operation Region externals. Adds missing
2487support for operation regions that are defined in another table, and
2488referenced locally via a Field or BankField ASL operator. Now generates
2489the
2490correct External statement.
2491
2492Disassembler: Several additional fixes for the External() statement
2493generation
2494related to some ASL operators. Also, order the External() statements
2495alphabetically in the disassembler output. Fixes the External()
2496generation
2497for
2498the Create* field, Alias, and Scope operators:
2499 1) Create* buffer field operators - fix type mismatch warning on
2500disassembly
2501 2) Alias - implement missing External support
2502 3) Scope - fix to make sure all necessary externals are emitted.
2503
2504iASL: Improved pathname support. For include files, merge the prefix
2505pathname
2506with the file pathname and eliminate unnecessary components. Convert
2507backslashes in all pathnames to forward slashes, for readability. Include
2508file
2509pathname changes affect both #include and Include() type operators.
2510
2511iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
2512end
2513of a valid line by inserting a newline and then returning the EOF during
2514the
2515next call to GetNextLine. Prevents the line from being ignored due to EOF
2516condition.
2517
2518iASL: Implemented some changes to enhance the IDE support (-vi option.)
2519Error
2520and Warning messages are now correctly recognized for both the source
2521code
2522browser and the global error and warning counts.
2523
2524----------------------------------------
252520 April 2012. Summary of changes for version 20120420:
2526
2527
25281) ACPICA Core Subsystem:
2529
2530Implemented support for multiple notify handlers. This change adds
2531support
2532to
2533allow multiple system and device notify handlers on Device, Thermal Zone,
2534and
2535Processor objects. This can simplify the host OS notification
2536implementation.
2537Also re-worked and restructured the entire notify support code to
2538simplify
2539handler installation, handler removal, notify event queuing, and notify
2540dispatch to handler(s). Note: there can still only be two global notify
2541handlers - one for system notifies and one for device notifies. There are
2542no
2543changes to the existing handler install/remove interfaces. Lin Ming, Bob
2544Moore, Rafael Wysocki.
2545
2546Fixed a regression in the package repair code where the object reference
2547count was calculated incorrectly. Regression was introduced in the commit
2548"Support to add Package wrappers".
2549
2550Fixed a couple possible memory leaks in the AML parser, in the error
2551recovery
2552path. Jesper Juhl, Lin Ming.
2553
2554Example Code and Data Size: These are the sizes for the OS-independent
2555acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2556debug version of the code includes the debug output trace mechanism and
2557has a
2558much larger code and data size.
2559
2560  Previous Release:
2561    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2562    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2563  Current Release:
2564    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2565    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
2566
2567
25682) iASL Compiler/Disassembler and Tools:
2569
2570iASL: Fixed a problem with the resource descriptor support where the
2571length
2572of the StartDependentFn and StartDependentFnNoPrio descriptors were not
2573included in cumulative descriptor offset, resulting in incorrect values
2574for
2575resource tags within resource descriptors appearing after a
2576StartDependent*
2577descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
2578
2579iASL and Preprocessor: Implemented full support for the #line directive
2580to
2581correctly track original source file line numbers through the .i
2582preprocessor
2583output file - for error and warning messages.
2584
2585iASL: Expand the allowable byte constants for address space IDs.
2586Previously,
2587the allowable range was 0x80-0xFF (user-defined spaces), now the range is
25880x0A-0xFF to allow for custom and new IDs without changing the compiler.
2589
2590iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
2591
2592iASL: Add option to completely disable the preprocessor (-Pn).
2593
2594iASL: Now emit all error/warning messages to standard error (stderr) by
2595default (instead of the previous stdout).
2596
2597ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
2598Update
2599for resource descriptor offset fix above. Update/cleanup error output
2600routines. Enable and send iASL errors/warnings to an error logfile
2601(error.txt). Send all other iASL output to a logfile (compiler.txt).
2602Fixed
2603several extraneous "unrecognized operator" messages.
2604
2605----------------------------------------
260620 March 2012. Summary of changes for version 20120320:
2607
2608
26091) ACPICA Core Subsystem:
2610
2611Enhanced the sleep/wake interfaces to optionally execute the _GTS method
2612(Going To Sleep) and the _BFS method (Back From Sleep). Windows
2613apparently
2614does not execute these methods, and therefore these methods are often
2615untested. It has been seen on some systems where the execution of these
2616methods causes errors and also prevents the machine from entering S5. It
2617is
2618therefore suggested that host operating systems do not execute these
2619methods
2620by default. In the future, perhaps these methods can be optionally
2621executed
2622based on the age of the system and/or what is the newest version of
2623Windows
2624that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
2625and
2626AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
2627Ming.
2628
2629Fixed a problem where the length of the local/common FADT was set too
2630early.
2631The local FADT table length cannot be set to the common length until the
2632original length has been examined. There is code that checks the table
2633length
2634and sets various fields appropriately. This can affect older machines
2635with
2636early FADT versions. For example, this can cause inadvertent writes to
2637the
2638CST_CNT register. Julian Anastasov.
2639
2640Fixed a mapping issue related to a physical table override. Use the
2641deferred
2642mapping mechanism for tables loaded via the physical override OSL
2643interface.
2644This allows for early mapping before the virtual memory manager is
2645available.
2646Thomas Renninger, Bob Moore.
2647
2648Enhanced the automatic return-object repair code: Repair a common problem
2649with
2650predefined methods that are defined to return a variable-length Package
2651of
2652sub-objects. If there is only one sub-object, some BIOS ASL code
2653mistakenly
2654simply returns the single object instead of a Package with one sub-
2655object.
2656This new support will repair this error by wrapping a Package object
2657around
2658the original object, creating the correct and expected Package with one
2659sub-
2660object. Names that can be repaired in this manner include: _ALR, _CSD,
2661_HPX,
2662_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
2663939.
2664
2665Changed the exception code returned for invalid ACPI paths passed as
2666parameters to external interfaces such as AcpiEvaluateObject. Was
2667AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
2668
2669Example Code and Data Size: These are the sizes for the OS-independent
2670acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2671debug
2672version of the code includes the debug output trace mechanism and has a
2673much
2674larger code and data size.
2675
2676  Previous Release:
2677    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
2678    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2679  Current Release:
2680    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
2681    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2682
2683
26842) iASL Compiler/Disassembler and Tools:
2685
2686iASL: Added the infrastructure and initial implementation of a integrated
2687C-
2688like preprocessor. This will simplify BIOS development process by
2689eliminating
2690the need for a separate preprocessing step during builds. On Windows, it
2691also
2692eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
2693features including full #define() macro support are still under
2694development.
2695These preprocessor directives are supported:
2696    #define
2697    #elif
2698    #else
2699    #endif
2700    #error
2701    #if
2702    #ifdef
2703    #ifndef
2704    #include
2705    #pragma message
2706    #undef
2707    #warning
2708In addition, these new command line options are supported:
2709    -D <symbol> Define symbol for preprocessor use
2710    -li         Create preprocessed output file (*.i)
2711    -P          Preprocess only and create preprocessor output file (*.i)
2712
2713Table Compiler: Fixed a problem where the equals operator within an
2714expression
2715did not work properly.
2716
2717Updated iASL to use the current versions of Bison/Flex. Updated the
2718Windows
2719project file to invoke these tools from the standard location. ACPICA BZ
2720904.
2721Versions supported:
2722    Flex for Windows:  V2.5.4
2723    Bison for Windows: V2.4.1
2724
2725----------------------------------------
272615 February 2012. Summary of changes for version 20120215:
2727
2728
27291) ACPICA Core Subsystem:
2730
2731There have been some major changes to the sleep/wake support code, as
2732described below (a - e).
2733
2734a) The AcpiLeaveSleepState has been split into two interfaces, similar to
2735AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
2736AcpiLeaveSleepStatePrep. This allows the host to perform actions between
2737the
2738time the _BFS method is called and the _WAK method is called. NOTE: all
2739hosts
2740must update their wake/resume code or else sleep/wake will not work
2741properly.
2742Rafael Wysocki.
2743
2744b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
2745_WAK
2746method. Some machines require that the GPEs are enabled before the _WAK
2747method
2748is executed. Thomas Renninger.
2749
2750c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
2751bit.
2752Some BIOS code assumes that WAK_STS will be cleared on resume and use it
2753to
2754determine whether the system is rebooting or resuming. Matthew Garrett.
2755
2756d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
2757Sleep) to
2758match the ACPI specification requirement. Rafael Wysocki.
2759
2760e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
2761registers within the V5 FADT. This support adds two new files:
2762hardware/hwesleep.c implements the support for the new registers. Moved
2763all
2764sleep/wake external interfaces to hardware/hwxfsleep.c.
2765
2766
2767Added a new OSL interface for ACPI table overrides,
2768AcpiOsPhysicalTableOverride. This interface allows the host to override a
2769table via a physical address, instead of the logical address required by
2770AcpiOsTableOverride. This simplifies the host implementation. Initial
2771implementation by Thomas Renninger. The ACPICA implementation creates a
2772single
2773shared function for table overrides that attempts both a logical and a
2774physical override.
2775
2776Expanded the OSL memory read/write interfaces to 64-bit data
2777(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
2778transfer support for GAS register structures passed to AcpiRead and
2779AcpiWrite.
2780
2781Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
2782custom
2783build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
2784model.
2785See the ACPICA reference for details. ACPICA BZ 942. This option removes
2786about
278710% of the code and 5% of the static data, and the following hardware
2788ACPI
2789features become unavailable:
2790    PM Event and Control registers
2791    SCI interrupt (and handler)
2792    Fixed Events
2793    General Purpose Events (GPEs)
2794    Global Lock
2795    ACPI PM timer
2796    FACS table (Waking vectors and Global Lock)
2797
2798Updated the unix tarball directory structure to match the ACPICA git
2799source
2800tree. This ensures that the generic unix makefiles work properly (in
2801generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
2802867.
2803
2804Updated the return value of the _REV predefined method to integer value 5
2805to
2806reflect ACPI 5.0 support.
2807
2808Moved the external ACPI PM timer interface prototypes to the public
2809acpixf.h
2810file where they belong.
2811
2812Example Code and Data Size: These are the sizes for the OS-independent
2813acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2814debug
2815version of the code includes the debug output trace mechanism and has a
2816much
2817larger code and data size.
2818
2819  Previous Release:
2820    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
2821    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
2822  Current Release:
2823    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
2824    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
2825
2826
28272) iASL Compiler/Disassembler and Tools:
2828
2829Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
2830descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
2831incorrectly displayed.
2832
2833AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
2834specification.
2835
2836----------------------------------------
283711 January 2012. Summary of changes for version 20120111:
2838
2839
28401) ACPICA Core Subsystem:
2841
2842Implemented a new mechanism to allow host device drivers to check for
2843address
2844range conflicts with ACPI Operation Regions. Both SystemMemory and
2845SystemIO
2846address spaces are supported. A new external interface,
2847AcpiCheckAddressRange,
2848allows drivers to check an address range against the ACPI namespace. See
2849the
2850ACPICA reference for additional details. Adds one new file,
2851utilities/utaddress.c. Lin Ming, Bob Moore.
2852
2853Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
2854Control
2855and
2856Status registers, update the ACPI 5.0 flags, and update internal data
2857structures to handle an FADT larger than 256 bytes. The size of the ACPI
28585.0
2859FADT is 268 bytes.
2860
2861Updated all ACPICA copyrights and signons to 2012. Added the 2012
2862copyright to
2863all module headers and signons, including the standard Linux header. This
2864affects virtually every file in the ACPICA core subsystem, iASL compiler,
2865and
2866all ACPICA utilities.
2867
2868Example Code and Data Size: These are the sizes for the OS-independent
2869acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2870debug
2871version of the code includes the debug output trace mechanism and has a
2872much
2873larger code and data size.
2874
2875  Previous Release:
2876    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
2877    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
2878  Current Release:
2879    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
2880    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
2881
2882
28832) iASL Compiler/Disassembler and Tools:
2884
2885Disassembler: fixed a problem with the automatic resource tag generation
2886support. Fixes a problem where the resource tags are inadvertently not
2887constructed if the table being disassembled contains external references
2888to
2889control methods. Moved the actual construction of the tags to after the
2890final
2891namespace is constructed (after 2nd parse is invoked due to external
2892control
2893method references.) ACPICA BZ 941.
2894
2895Table Compiler: Make all "generic" operators caseless. These are the
2896operators
2897like UINT8, String, etc. Making these caseless improves ease-of-use.
2898ACPICA BZ
2899934.
2900
2901----------------------------------------
290223 November 2011. Summary of changes for version 20111123:
2903
29040) ACPI 5.0 Support:
2905
2906This release contains full support for the ACPI 5.0 specification, as
2907summarized below.
2908
2909Reduced Hardware Support:
2910-------------------------
2911
2912This support allows for ACPI systems without the usual ACPI hardware.
2913This
2914support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
2915will
2916not attempt to initialize or use any of the usual ACPI hardware. Note,
2917when
2918this flag is set, all of the following ACPI hardware is assumed to be not
2919present and is not initialized or accessed:
2920
2921    General Purpose Events (GPEs)
2922    Fixed Events (PM1a/PM1b and PM Control)
2923    Power Management Timer and Console Buttons (power/sleep)
2924    Real-time Clock Alarm
2925    Global Lock
2926    System Control Interrupt (SCI)
2927    The FACS is assumed to be non-existent
2928
2929ACPI Tables:
2930------------
2931
2932All new tables and updates to existing tables are fully supported in the
2933ACPICA headers (for use by device drivers), the disassembler, and the
2934iASL
2935Data Table Compiler. ACPI 5.0 defines these new tables:
2936
2937    BGRT        /* Boot Graphics Resource Table */
2938    DRTM        /* Dynamic Root of Trust for Measurement table */
2939    FPDT        /* Firmware Performance Data Table */
2940    GTDT        /* Generic Timer Description Table */
2941    MPST        /* Memory Power State Table */
2942    PCCT        /* Platform Communications Channel Table */
2943    PMTT        /* Platform Memory Topology Table */
2944    RASF        /* RAS Feature table */
2945
2946Operation Regions/SpaceIDs:
2947---------------------------
2948
2949All new operation regions are fully supported by the iASL compiler, the
2950disassembler, and the ACPICA runtime code (for dispatch to region
2951handlers.)
2952The new operation region Space IDs are:
2953
2954    GeneralPurposeIo
2955    GenericSerialBus
2956
2957Resource Descriptors:
2958---------------------
2959
2960All new ASL resource descriptors are fully supported by the iASL
2961compiler,
2962the
2963ASL/AML disassembler, and the ACPICA runtime Resource Manager code
2964(including
2965all new predefined resource tags). New descriptors are:
2966
2967    FixedDma
2968    GpioIo
2969    GpioInt
2970    I2cSerialBus
2971    SpiSerialBus
2972    UartSerialBus
2973
2974ASL/AML Operators, New and Modified:
2975------------------------------------
2976
2977One new operator is added, the Connection operator, which is used to
2978associate
2979a GeneralPurposeIo or GenericSerialBus resource descriptor with
2980individual
2981field objects within an operation region. Several new protocols are
2982associated
2983with the AccessAs operator. All are fully supported by the iASL compiler,
2984disassembler, and runtime ACPICA AML interpreter:
2985
2986    Connection                      // Declare Field Connection
2987attributes
2988    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
2989    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
2990Protocol
2991    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
2992    RawDataBuffer                       // Data type for Vendor Data
2993fields
2994
2995Predefined ASL/AML Objects:
2996---------------------------
2997
2998All new predefined objects/control-methods are supported by the iASL
2999compiler
3000and the ACPICA runtime validation/repair (arguments and return values.)
3001New
3002predefined names include the following:
3003
3004Standard Predefined Names (Objects or Control Methods):
3005    _AEI, _CLS, _CPC, _CWS, _DEP,
3006    _DLM, _EVT, _GCP, _CRT, _GWS,
3007    _HRV, _PRE, _PSE, _SRT, _SUB.
3008
3009Resource Tags (Names used to access individual fields within resource
3010descriptors):
3011    _DBT, _DPL, _DRS, _END, _FLC,
3012    _IOR, _LIN, _MOD, _PAR, _PHA,
3013    _PIN, _PPI, _POL, _RXL, _SLV,
3014    _SPE, _STB, _TXL, _VEN.
3015
3016ACPICA External Interfaces:
3017---------------------------
3018
3019Several new interfaces have been defined for use by ACPI-related device
3020drivers and other host OS services:
3021
3022AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
3023to
3024acquire and release AML mutexes that are defined in the DSDT/SSDT tables
3025provided by the BIOS. They are intended to be used in conjunction with
3026the
3027ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
3028mutual exclusion with the AML code/interpreter.
3029
3030AcpiGetEventResources: Returns the (formatted) resource descriptors as
3031defined
3032by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
3033provides
3034resource descriptors associated with hardware-reduced platform events,
3035similar
3036to the AcpiGetCurrentResources interface.
3037
3038Operation Region Handlers: For General Purpose IO and Generic Serial Bus
3039operation regions, information about the Connection() object and any
3040optional
3041length information is passed to the region handler within the Context
3042parameter.
3043
3044AcpiBufferToResource: This interface converts a raw AML buffer containing
3045a
3046resource template or resource descriptor to the ACPI_RESOURCE internal
3047format
3048suitable for use by device drivers. Can be used by an operation region
3049handler
3050to convert the Connection() buffer object into a ACPI_RESOURCE.
3051
3052Miscellaneous/Tools/TestSuites:
3053-------------------------------
3054
3055Support for extended _HID names (Four alpha characters instead of three).
3056Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
3057Support for ACPI 5.0 features in the ASLTS test suite.
3058Fully updated documentation (ACPICA and iASL reference documents.)
3059
3060ACPI Table Definition Language:
3061-------------------------------
3062
3063Support for this language was implemented and released as a subsystem of
3064the
3065iASL compiler in 2010. (See the iASL compiler User Guide.)
3066
3067
3068Non-ACPI 5.0 changes for this release:
3069--------------------------------------
3070
30711) ACPICA Core Subsystem:
3072
3073Fix a problem with operation region declarations where a failure can
3074occur
3075if
3076the region name and an argument that evaluates to an object (such as the
3077region address) are in different namespace scopes. Lin Ming, ACPICA BZ
3078937.
3079
3080Do not abort an ACPI table load if an invalid space ID is found within.
3081This
3082will be caught later if the offending method is executed. ACPICA BZ 925.
3083
3084Fixed an issue with the FFixedHW space ID where the ID was not always
3085recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
3086
3087Fixed a problem with the 32-bit generation of the unix-specific OSL
3088(osunixxf.c). Lin Ming, ACPICA BZ 936.
3089
3090Several changes made to enable generation with the GCC 4.6 compiler.
3091ACPICA BZ
3092935.
3093
3094New error messages: Unsupported I/O requests (not 8/16/32 bit), and
3095Index/Bank
3096field registers out-of-range.
3097
30982) iASL Compiler/Disassembler and Tools:
3099
3100iASL: Implemented the __PATH__ operator, which returns the full pathname
3101of
3102the current source file.
3103
3104AcpiHelp: Automatically display expanded keyword information for all ASL
3105operators.
3106
3107Debugger: Add "Template" command to disassemble/dump resource template
3108buffers.
3109
3110Added a new master script to generate and execute the ASLTS test suite.
3111Automatically handles 32- and 64-bit generation. See tests/aslts.sh
3112
3113iASL: Fix problem with listing generation during processing of the
3114Switch()
3115operator where AML listing was disabled until the entire Switch block was
3116completed.
3117
3118iASL: Improve support for semicolon statement terminators. Fix "invalid
3119character" message for some cases when the semicolon is used. Semicolons
3120are
3121now allowed after every <Term> grammar element. ACPICA BZ 927.
3122
3123iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
3124923.
3125
3126Disassembler: Fix problem with disassembly of the DataTableRegion
3127operator
3128where an inadvertent "Unhandled deferred opcode" message could be
3129generated.
3130
31313) Example Code and Data Size
3132
3133These are the sizes for the OS-independent acpica.lib produced by the
3134Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
3135includes the debug output trace mechanism and has a much larger code and
3136data
3137size.
3138
3139  Previous Release:
3140    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3141    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3142  Current Release:
3143    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
3144    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
3145
3146----------------------------------------
314722 September 2011. Summary of changes for version 20110922:
3148
31490) ACPI 5.0 News:
3150
3151Support for ACPI 5.0 in ACPICA has been underway for several months and
3152will
3153be released at the same time that ACPI 5.0 is officially released.
3154
3155The ACPI 5.0 specification is on track for release in the next few
3156months.
3157
31581) ACPICA Core Subsystem:
3159
3160Fixed a problem where the maximum sleep time for the Sleep() operator was
3161intended to be limited to two seconds, but was inadvertently limited to
316220
3163seconds instead.
3164
3165Linux and Unix makefiles: Added header file dependencies to ensure
3166correct
3167generation of ACPICA core code and utilities. Also simplified the
3168makefiles
3169considerably through the use of the vpath variable to specify search
3170paths.
3171ACPICA BZ 924.
3172
31732) iASL Compiler/Disassembler and Tools:
3174
3175iASL: Implemented support to check the access length for all fields
3176created to
3177access named Resource Descriptor fields. For example, if a resource field
3178is
3179defined to be two bits, a warning is issued if a CreateXxxxField() is
3180used
3181with an incorrect bit length. This is implemented for all current
3182resource
3183descriptor names. ACPICA BZ 930.
3184
3185Disassembler: Fixed a byte ordering problem with the output of 24-bit and
318656-
3187bit integers.
3188
3189iASL: Fixed a couple of issues associated with variable-length package
3190objects. 1) properly handle constants like One, Ones, Zero -- do not make
3191a
3192VAR_PACKAGE when these are used as a package length. 2) Allow the
3193VAR_PACKAGE
3194opcode (in addition to PACKAGE) when validating object types for
3195predefined
3196names.
3197
3198iASL: Emit statistics for all output files (instead of just the ASL input
3199and
3200AML output). Includes listings, hex files, etc.
3201
3202iASL: Added -G option to the table compiler to allow the compilation of
3203custom
3204ACPI tables. The only part of a table that is required is the standard
320536-
3206byte
3207ACPI header.
3208
3209AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
3210headers),
3211which also adds correct 64-bit support. Also, now all output filenames
3212are
3213completely lower case.
3214
3215AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
3216loading table files. A warning is issued for any such tables. The only
3217exception is an FADT. This also fixes a possible fault when attempting to
3218load
3219non-AML tables. ACPICA BZ 932.
3220
3221AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
3222a
3223missing table terminator could cause a fault when using the -p option.
3224
3225AcpiSrc: Fixed a possible divide-by-zero fault when generating file
3226statistics.
3227
32283) Example Code and Data Size
3229
3230These are the sizes for the OS-independent acpica.lib produced by the
3231Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
3232includes the debug output trace mechanism and has a much larger code and
3233data
3234size.
3235
3236  Previous Release (VC 9.0):
3237    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3238    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3239  Current Release (VC 9.0):
3240    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3241    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3242
3243
3244----------------------------------------
324523 June 2011. Summary of changes for version 20110623:
3246
32471) ACPI CA Core Subsystem:
3248
3249Updated the predefined name repair mechanism to not attempt repair of a
3250_TSS
3251return object if a _PSS object is present. We can only sort the _TSS
3252return
3253package if there is no _PSS within the same scope. This is because if
3254_PSS
3255is
3256present, the ACPI specification dictates that the _TSS Power Dissipation
3257field
3258is to be ignored, and therefore some BIOSs leave garbage values in the
3259_TSS
3260Power field(s). In this case, it is best to just return the _TSS package
3261as-
3262is. Reported by, and fixed with assistance from Fenghua Yu.
3263
3264Added an option to globally disable the control method return value
3265validation
3266and repair. This runtime option can be used to disable return value
3267repair
3268if
3269this is causing a problem on a particular machine. Also added an option
3270to
3271AcpiExec (-dr) to set this disable flag.
3272
3273All makefiles and project files: Major changes to improve generation of
3274ACPICA
3275tools. ACPICA BZ 912:
3276    Reduce default optimization levels to improve compatibility
3277    For Linux, add strict-aliasing=0 for gcc 4
3278    Cleanup and simplify use of command line defines
3279    Cleanup multithread library support
3280    Improve usage messages
3281
3282Linux-specific header: update handling of THREAD_ID and pthread. For the
328332-
3284bit case, improve casting to eliminate possible warnings, especially with
3285the
3286acpica tools.
3287
3288Example Code and Data Size: These are the sizes for the OS-independent
3289acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3290debug
3291version of the code includes the debug output trace mechanism and has a
3292much
3293larger code and data size.
3294
3295  Previous Release (VC 9.0):
3296    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
3297    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3298  Current Release (VC 9.0):
3299    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
3300    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3301
33022) iASL Compiler/Disassembler and Tools:
3303
3304With this release, a new utility named "acpihelp" has been added to the
3305ACPICA
3306package. This utility summarizes the ACPI specification chapters for the
3307ASL
3308and AML languages. It generates under Linux/Unix as well as Windows, and
3309provides the following functionality:
3310    Find/display ASL operator(s) -- with description and syntax.
3311    Find/display ASL keyword(s) -- with exact spelling and descriptions.
3312    Find/display ACPI predefined name(s) -- with description, number
3313        of arguments, and the return value data type.
3314    Find/display AML opcode name(s) -- with opcode, arguments, and
3315grammar.
3316    Decode/display AML opcode -- with opcode name, arguments, and
3317grammar.
3318
3319Service Layers: Make multi-thread support configurable. Conditionally
3320compile
3321the multi-thread support so that threading libraries will not be linked
3322if
3323not
3324necessary. The only tool that requires multi-thread support is AcpiExec.
3325
3326iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
3327of
3328Bison appear to want the interface to yyerror to be a const char * (or at
3329least this is a problem when generating iASL on some systems.) ACPICA BZ
3330923
3331Pierre Lejeune.
3332
3333Tools: Fix for systems where O_BINARY is not defined. Only used for
3334Windows
3335versions of the tools.
3336
3337----------------------------------------
333827 May 2011. Summary of changes for version 20110527:
3339
33401) ACPI CA Core Subsystem:
3341
3342ASL Load() operator: Reinstate most restrictions on the incoming ACPI
3343table
3344signature. Now, only allow SSDT, OEMx, and a null signature. History:
3345    1) Originally, we checked the table signature for "SSDT" or "PSDT".
3346       (PSDT is now obsolete.)
3347    2) We added support for OEMx tables, signature "OEM" plus a fourth
3348       "don't care" character.
3349    3) Valid tables were encountered with a null signature, so we just
3350       gave up on validating the signature, (05/2008).
3351    4) We encountered non-AML tables such as the MADT, which caused
3352       interpreter errors and kernel faults. So now, we once again allow
3353       only SSDT, OEMx, and now, also a null signature. (05/2011).
3354
3355Added the missing _TDL predefined name to the global name list in order
3356to
3357enable validation. Affects both the core ACPICA code and the iASL
3358compiler.
3359
3360Example Code and Data Size: These are the sizes for the OS-independent
3361acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3362debug
3363version of the code includes the debug output trace mechanism and has a
3364much
3365larger code and data size.
3366
3367  Previous Release (VC 9.0):
3368    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
3369    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
3370  Current Release (VC 9.0):
3371    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
3372    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
3373
33742) iASL Compiler/Disassembler and Tools:
3375
3376Debugger/AcpiExec: Implemented support for "complex" method arguments on
3377the
3378debugger command line. This adds support beyond simple integers --
3379including
3380Strings, Buffers, and Packages. Includes support for nested packages.
3381Increased the default command line buffer size to accommodate these
3382arguments.
3383See the ACPICA reference for details and syntax. ACPICA BZ 917.
3384
3385Debugger/AcpiExec: Implemented support for "default" method arguments for
3386the
3387Execute/Debug command. Now, the debugger will always invoke a control
3388method
3389with the required number of arguments -- even if the command line
3390specifies
3391none or insufficient arguments. It uses default integer values for any
3392missing
3393arguments. Also fixes a bug where only six method arguments maximum were
3394supported instead of the required seven.
3395
3396Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
3397and
3398also return status in order to prevent buffer overruns. See the ACPICA
3399reference for details and syntax. ACPICA BZ 921
3400
3401iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
3402makefiles to simplify support for the two different but similar parser
3403generators, bison and yacc.
3404
3405Updated the generic unix makefile for gcc 4. The default gcc version is
3406now
3407expected to be 4 or greater, since options specific to gcc 4 are used.
3408
3409----------------------------------------
341013 April 2011. Summary of changes for version 20110413:
3411
34121) ACPI CA Core Subsystem:
3413
3414Implemented support to execute a so-called "orphan" _REG method under the
3415EC
3416device. This change will force the execution of a _REG method underneath
3417the
3418EC
3419device even if there is no corresponding operation region of type
3420EmbeddedControl. Fixes a problem seen on some machines and apparently is
3421compatible with Windows behavior. ACPICA BZ 875.
3422
3423Added more predefined methods that are eligible for automatic NULL
3424package
3425element removal. This change adds another group of predefined names to
3426the
3427list
3428of names that can be repaired by having NULL package elements dynamically
3429removed. This group are those methods that return a single variable-
3430length
3431package containing simple data types such as integers, buffers, strings.
3432This
3433includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
3434_PSL,
3435_Sx,
3436and _TZD. ACPICA BZ 914.
3437
3438Split and segregated all internal global lock functions to a new file,
3439evglock.c.
3440
3441Updated internal address SpaceID for DataTable regions. Moved this
3442internal
3443space
3444id in preparation for ACPI 5.0 changes that will include some new space
3445IDs.
3446This
3447change should not affect user/host code.
3448
3449Example Code and Data Size: These are the sizes for the OS-independent
3450acpica.lib
3451produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
3452version of
3453the code includes the debug output trace mechanism and has a much larger
3454code
3455and
3456data size.
3457
3458  Previous Release (VC 9.0):
3459    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
3460    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
3461  Current Release (VC 9.0):
3462    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
3463    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
3464
34652) iASL Compiler/Disassembler and Tools:
3466
3467iASL/DTC: Major update for new grammar features. Allow generic data types
3468in
3469custom ACPI tables. Field names are now optional. Any line can be split
3470to
3471multiple lines using the continuation char (\). Large buffers now use
3472line-
3473continuation character(s) and no colon on the continuation lines. See the
3474grammar
3475update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
3476Moore.
3477
3478iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
3479statements.
3480Since the parser stuffs a "zero" as the return value for these statements
3481(due
3482to
3483the underlying AML grammar), they were seen as "return with value" by the
3484iASL
3485semantic checking. They are now seen correctly as "null" return
3486statements.
3487
3488iASL: Check if a_REG declaration has a corresponding Operation Region.
3489Adds a
3490check for each _REG to ensure that there is in fact a corresponding
3491operation
3492region declaration in the same scope. If not, the _REG method is not very
3493useful
3494since it probably won't be executed. ACPICA BZ 915.
3495
3496iASL/DTC: Finish support for expression evaluation. Added a new
3497expression
3498parser
3499that implements c-style operator precedence and parenthesization. ACPICA
3500bugzilla
3501908.
3502
3503Disassembler/DTC: Remove support for () and <> style comments in data
3504tables.
3505Now
3506that DTC has full expression support, we don't want to have comment
3507strings
3508that
3509start with a parentheses or a less-than symbol. Now, only the standard /*
3510and
3511//
3512comments are supported, as well as the bracket [] comments.
3513
3514AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
3515"unusual"
3516headers in the acpidump file. Update the header validation to support
3517these
3518tables. Problem introduced in previous AcpiXtract version in the change
3519to
3520support "wrong checksum" error messages emitted by acpidump utility.
3521
3522iASL: Add a * option to generate all template files (as a synonym for
3523ALL)
3524as
3525in
3526"iasl -T *" or "iasl -T ALL".
3527
3528iASL/DTC: Do not abort compiler on fatal errors. We do not want to
3529completely
3530abort the compiler on "fatal" errors, simply should abort the current
3531compile.
3532This allows multiple compiles with a single (possibly wildcard) compiler
3533invocation.
3534
3535----------------------------------------
353616 March 2011. Summary of changes for version 20110316:
3537
35381) ACPI CA Core Subsystem:
3539
3540Fixed a problem caused by a _PRW method appearing at the namespace root
3541scope
3542during the setup of wake GPEs. A fault could occur if a _PRW directly
3543under
3544the
3545root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
3546
3547Implemented support for "spurious" Global Lock interrupts. On some
3548systems, a
3549global lock interrupt can occur without the pending flag being set. Upon
3550a
3551GL
3552interrupt, we now ensure that a thread is actually waiting for the lock
3553before
3554signaling GL availability. Rafael Wysocki, Bob Moore.
3555
3556Example Code and Data Size: These are the sizes for the OS-independent
3557acpica.lib
3558produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
3559version of
3560the code includes the debug output trace mechanism and has a much larger
3561code
3562and
3563data size.
3564
3565  Previous Release (VC 9.0):
3566    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3567    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3568  Current Release (VC 9.0):
3569    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
3570    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
3571
35722) iASL Compiler/Disassembler and Tools:
3573
3574Implemented full support for the "SLIC" ACPI table. Includes support in
3575the
3576header files, disassembler, table compiler, and template generator. Bob
3577Moore,
3578Lin Ming.
3579
3580AcpiXtract: Correctly handle embedded comments and messages from
3581AcpiDump.
3582Apparently some or all versions of acpidump will occasionally emit a
3583comment
3584like
3585"Wrong checksum", etc., into the dump file. This was causing problems for
3586AcpiXtract. ACPICA BZ 905.
3587
3588iASL: Fix the Linux makefile by removing an inadvertent double file
3589inclusion.
3590ACPICA BZ 913.
3591
3592AcpiExec: Update installation of operation region handlers. Install one
3593handler
3594for a user-defined address space. This is used by the ASL test suite
3595(ASLTS).
3596
3597----------------------------------------
359811 February 2011. Summary of changes for version 20110211:
3599
36001) ACPI CA Core Subsystem:
3601
3602Added a mechanism to defer _REG methods for some early-installed
3603handlers.
3604Most user handlers should be installed before call to
3605AcpiEnableSubsystem.
3606However, Event handlers and region handlers should be installed after
3607AcpiInitializeObjects. Override handlers for the "default" regions should
3608be
3609installed early, however. This change executes all _REG methods for the
3610default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
3611chicken/egg issues between them. ACPICA BZ 848.
3612
3613Implemented an optimization for GPE detection. This optimization will
3614simply
3615ignore GPE registers that contain no enabled GPEs -- there is no need to
3616read the register since this information is available internally. This
3617becomes more important on machines with a large GPE space. ACPICA
3618bugzilla
3619884. Lin Ming. Suggestion from Joe Liu.
3620
3621Removed all use of the highly unreliable FADT revision field. The
3622revision
3623number in the FADT has been found to be completely unreliable and cannot
3624be
3625trusted. Only the actual table length can be used to infer the version.
3626This
3627change updates the ACPICA core and the disassembler so that both no
3628longer
3629even look at the FADT version and instead depend solely upon the FADT
3630length.
3631
3632Fix an unresolved name issue for the no-debug and no-error-message source
3633generation cases. The _AcpiModuleName was left undefined in these cases,
3634but
3635it is actually needed as a parameter to some interfaces. Define
3636_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
3637
3638Split several large files (makefiles and project files updated)
3639  utglobal.c   -> utdecode.c
3640  dbcomds.c    -> dbmethod.c dbnames.c
3641  dsopcode.c   -> dsargs.c dscontrol.c
3642  dsload.c     -> dsload2.c
3643  aslanalyze.c -> aslbtypes.c aslwalks.c
3644
3645Example Code and Data Size: These are the sizes for the OS-independent
3646acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3647debug version of the code includes the debug output trace mechanism and
3648has
3649a much larger code and data size.
3650
3651  Previous Release (VC 9.0):
3652    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3653    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3654  Current Release (VC 9.0):
3655    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3656    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3657
36582) iASL Compiler/Disassembler and Tools:
3659
3660iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
3661These are useful C-style macros with the standard definitions. ACPICA
3662bugzilla 898.
3663
3664iASL/DTC: Added support for integer expressions and labels. Support for
3665full
3666expressions for all integer fields in all ACPI tables. Support for labels
3667in
3668"generic" portions of tables such as UEFI. See the iASL reference manual.
3669
3670Debugger: Added a command to display the status of global handlers. The
3671"handlers" command will display op region, fixed event, and miscellaneous
3672global handlers. installation status -- and for op regions, whether
3673default
3674or user-installed handler will be used.
3675
3676iASL: Warn if reserved method incorrectly returns a value. Many
3677predefined
3678names are defined such that they do not return a value. If implemented as
3679a
3680method, issue a warning if such a name explicitly returns a value. ACPICA
3681Bugzilla 855.
3682
3683iASL: Added detection of GPE method name conflicts. Detects a conflict
3684where
3685there are two GPE methods of the form _Lxy and _Exy in the same scope.
3686(For
3687example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
3688
3689iASL/DTC: Fixed a couple input scanner issues with comments and line
3690numbers. Comment remover could get confused and miss a comment ending.
3691Fixed
3692a problem with line counter maintenance.
3693
3694iASL/DTC: Reduced the severity of some errors from fatal to error. There
3695is
3696no need to abort on simple errors within a field definition.
3697
3698Debugger: Simplified the output of the help command. All help output now
3699in
3700a single screen, instead of help subcommands. ACPICA Bugzilla 897.
3701
3702----------------------------------------
370312 January 2011. Summary of changes for version 20110112:
3704
37051) ACPI CA Core Subsystem:
3706
3707Fixed a race condition between method execution and namespace walks that
3708can
3709possibly cause a fault. The problem was apparently introduced in version
371020100528 as a result of a performance optimization that reduces the
3711number
3712of
3713namespace walks upon method exit by using the delete_namespace_subtree
3714function instead of the delete_namespace_by_owner function used
3715previously.
3716Bug is a missing namespace lock in the delete_namespace_subtree function.
3717dana.myers@oracle.com
3718
3719Fixed several issues and a possible fault with the automatic "serialized"
3720method support. History: This support changes a method to "serialized" on
3721the
3722fly if the method generates an AE_ALREADY_EXISTS error, indicating the
3723possibility that it cannot handle reentrancy. This fix repairs a couple
3724of
3725issues seen in the field, especially on machines with many cores:
3726
3727    1) Delete method children only upon the exit of the last thread,
3728       so as to not delete objects out from under other running threads
3729      (and possibly causing a fault.)
3730    2) Set the "serialized" bit for the method only upon the exit of the
3731       Last thread, so as to not cause deadlock when running threads
3732       attempt to exit.
3733    3) Cleanup the use of the AML "MethodFlags" and internal method flags
3734       so that there is no longer any confusion between the two.
3735
3736    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
3737
3738Debugger: Now lock the namespace for duration of a namespace dump.
3739Prevents
3740issues if the namespace is changing dynamically underneath the debugger.
3741Especially affects temporary namespace nodes, since the debugger displays
3742these also.
3743
3744Updated the ordering of include files. The ACPICA headers should appear
3745before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
3746set
3747any necessary compiler-specific defines, etc. Affects the ACPI-related
3748tools
3749and utilities.
3750
3751Updated all ACPICA copyrights and signons to 2011. Added the 2011
3752copyright
3753to all module headers and signons, including the Linux header. This
3754affects
3755virtually every file in the ACPICA core subsystem, iASL compiler, and all
3756utilities.
3757
3758Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
3759project files for VC++ 6.0 are now obsolete. New project files can be
3760found
3761under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
3762details.
3763
3764Example Code and Data Size: These are the sizes for the OS-independent
3765acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3766debug version of the code includes the debug output trace mechanism and
3767has a
3768much larger code and data size.
3769
3770  Previous Release (VC 6.0):
3771    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
3772    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
3773  Current Release (VC 9.0):
3774    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
3775    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
3776
37772) iASL Compiler/Disassembler and Tools:
3778
3779iASL: Added generic data types to the Data Table compiler. Add "generic"
3780data
3781types such as UINT32, String, Unicode, etc., to simplify the generation
3782of
3783platform-defined tables such as UEFI. Lin Ming.
3784
3785iASL: Added listing support for the Data Table Compiler. Adds listing
3786support
3787(-l) to display actual binary output for each line of input code.
3788
3789----------------------------------------
379009 December 2010. Summary of changes for version 20101209:
3791
37921) ACPI CA Core Subsystem:
3793
3794Completed the major overhaul of the GPE support code that was begun in
3795July
37962010. Major features include: removal of _PRW execution in ACPICA (host
3797executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
3798changes to existing interfaces, simplification of GPE handler operation,
3799and
3800a handful of new interfaces:
3801
3802    AcpiUpdateAllGpes
3803    AcpiFinishGpe
3804    AcpiSetupGpeForWake
3805    AcpiSetGpeWakeMask
3806    One new file, evxfgpe.c to consolidate all external GPE interfaces.
3807
3808See the ACPICA Programmer Reference for full details and programming
3809information. See the new section 4.4 "General Purpose Event (GPE)
3810Support"
3811for a full overview, and section 8.7 "ACPI General Purpose Event
3812Management"
3813for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
3814Ming,
3815Bob Moore, Rafael Wysocki.
3816
3817Implemented a new GPE feature for Windows compatibility, the "Implicit
3818Wake
3819GPE Notify". This feature will automatically issue a Notify(2) on a
3820device
3821when a Wake GPE is received if there is no corresponding GPE method or
3822handler. ACPICA BZ 870.
3823
3824Fixed a problem with the Scope() operator during table parse and load
3825phase.
3826During load phase (table load or method execution), the scope operator
3827should
3828not enter the target into the namespace. Instead, it should open a new
3829scope
3830at the target location. Linux BZ 19462, ACPICA BZ 882.
3831
3832Example Code and Data Size: These are the sizes for the OS-independent
3833acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3834debug version of the code includes the debug output trace mechanism and
3835has a
3836much larger code and data size.
3837
3838  Previous Release:
3839    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
3840    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
3841  Current Release:
3842    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3843    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3844
38452) iASL Compiler/Disassembler and Tools:
3846
3847iASL: Relax the alphanumeric restriction on _CID strings. These strings
3848are
3849"bus-specific" per the ACPI specification, and therefore any characters
3850are
3851acceptable. The only checks that can be performed are for a null string
3852and
3853perhaps for a leading asterisk. ACPICA BZ 886.
3854
3855iASL: Fixed a problem where a syntax error that caused a premature EOF
3856condition on the source file emitted a very confusing error message. The
3857premature EOF is now detected correctly. ACPICA BZ 891.
3858
3859Disassembler: Decode the AccessSize within a Generic Address Structure
3860(byte
3861access, word access, etc.) Note, this field does not allow arbitrary bit
3862access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
3863
3864New: AcpiNames utility - Example namespace dump utility. Shows an example
3865of
3866ACPICA configuration for a minimal namespace dump utility. Uses table and
3867namespace managers, but no AML interpreter. Does not add any
3868functionality
3869over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
3870partition and configure ACPICA. ACPICA BZ 883.
3871
3872AML Debugger: Increased the debugger buffer size for method return
3873objects.
3874Was 4K, increased to 16K. Also enhanced error messages for debugger
3875method
3876execution, including the buffer overflow case.
3877
3878----------------------------------------
387913 October 2010. Summary of changes for version 20101013:
3880
38811) ACPI CA Core Subsystem:
3882
3883Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
3884now
3885clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
3886HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
3887
3888Changed the type of the predefined namespace object _TZ from ThermalZone
3889to
3890Device. This was found to be confusing to the host software that
3891processes
3892the various thermal zones, since _TZ is not really a ThermalZone.
3893However,
3894a
3895Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
3896Zhang.
3897
3898Added Windows Vista SP2 to the list of supported _OSI strings. The actual
3899string is "Windows 2006 SP2".
3900
3901Eliminated duplicate code in AcpiUtExecute* functions. Now that the
3902nsrepair
3903code automatically repairs _HID-related strings, this type of code is no
3904longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
3905878.
3906
3907Example Code and Data Size: These are the sizes for the OS-independent
3908acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
3909debug version of the code includes the debug output trace mechanism and
3910has a
3911much larger code and data size.
3912
3913  Previous Release:
3914    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3915    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3916  Current Release:
3917    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
3918    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
3919
39202) iASL Compiler/Disassembler and Tools:
3921
3922iASL: Implemented additional compile-time validation for _HID strings.
3923The
3924non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
3925length
3926of
3927the string must be exactly seven or eight characters. For both _HID and
3928_CID
3929strings, all characters must be alphanumeric. ACPICA BZ 874.
3930
3931iASL: Allow certain "null" resource descriptors. Some BIOS code creates
3932descriptors that are mostly or all zeros, with the expectation that they
3933will
3934be filled in at runtime. iASL now allows this as long as there is a
3935"resource
3936tag" (name) associated with the descriptor, which gives the ASL a handle
3937needed to modify the descriptor. ACPICA BZ 873.
3938
3939Added single-thread support to the generic Unix application OSL.
3940Primarily
3941for iASL support, this change removes the use of semaphores in the
3942single-
3943threaded ACPICA tools/applications - increasing performance. The
3944_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
3945option. ACPICA BZ 879.
3946
3947AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
3948support
3949for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
3950
3951iASL: Moved all compiler messages to a new file, aslmessages.h.
3952
3953----------------------------------------
395415 September 2010. Summary of changes for version 20100915:
3955
39561) ACPI CA Core Subsystem:
3957
3958Removed the AcpiOsDerivePciId OSL interface. The various host
3959implementations
3960of this function were not OS-dependent and are now obsolete and can be
3961removed from all host OSLs. This function has been replaced by
3962AcpiHwDerivePciId, which is now part of the ACPICA core code.
3963AcpiHwDerivePciId has been implemented without recursion. Adds one new
3964module, hwpci.c. ACPICA BZ 857.
3965
3966Implemented a dynamic repair for _HID and _CID strings. The following
3967problems are now repaired at runtime: 1) Remove a leading asterisk in the
3968string, and 2) the entire string is uppercased. Both repairs are in
3969accordance with the ACPI specification and will simplify host driver
3970code.
3971ACPICA BZ 871.
3972
3973The ACPI_THREAD_ID type is no longer configurable, internally it is now
3974always UINT64. This simplifies the ACPICA code, especially any printf
3975output.
3976UINT64 is the only common data type for all thread_id types across all
3977operating systems. It is now up to the host OSL to cast the native
3978thread_id
3979type to UINT64 before returning the value to ACPICA (via
3980AcpiOsGetThreadId).
3981Lin Ming, Bob Moore.
3982
3983Added the ACPI_INLINE type to enhance the ACPICA configuration. The
3984"inline"
3985keyword is not standard across compilers, and this type allows inline to
3986be
3987configured on a per-compiler basis. Lin Ming.
3988
3989Made the system global AcpiGbl_SystemAwakeAndRunning publically
3990available.
3991Added an extern for this boolean in acpixf.h. Some hosts utilize this
3992value
3993during suspend/restore operations. ACPICA BZ 869.
3994
3995All code that implements error/warning messages with the "ACPI:" prefix
3996has
3997been moved to a new module, utxferror.c.
3998
3999The UINT64_OVERLAY was moved to utmath.c, which is the only module where
4000it
4001is used. ACPICA BZ 829. Lin Ming, Bob Moore.
4002
4003Example Code and Data Size: These are the sizes for the OS-independent
4004acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4005debug version of the code includes the debug output trace mechanism and
4006has a
4007much larger code and data size.
4008
4009  Previous Release:
4010    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
4011    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
4012  Current Release:
4013    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
4014    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
4015
40162) iASL Compiler/Disassembler and Tools:
4017
4018iASL/Disassembler: Write ACPI errors to stderr instead of the output
4019file.
4020This keeps the output files free of random error messages that may
4021originate
4022from within the namespace/interpreter code. Used this opportunity to
4023merge
4024all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
4025866. Lin Ming, Bob Moore.
4026
4027Tools: update some printfs for ansi warnings on size_t. Handle width
4028change
4029of size_t on 32-bit versus 64-bit generations. Lin Ming.
4030
4031----------------------------------------
403206 August 2010. Summary of changes for version 20100806:
4033
40341) ACPI CA Core Subsystem:
4035
4036Designed and implemented a new host interface to the _OSI support code.
4037This
4038will allow the host to dynamically add or remove multiple _OSI strings,
4039as
4040well as install an optional handler that is called for each _OSI
4041invocation.
4042Also added a new AML debugger command, 'osi' to display and modify the
4043global
4044_OSI string table, and test support in the AcpiExec utility. See the
4045ACPICA
4046reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
4047New Functions:
4048    AcpiInstallInterface - Add an _OSI string.
4049    AcpiRemoveInterface - Delete an _OSI string.
4050    AcpiInstallInterfaceHandler - Install optional _OSI handler.
4051Obsolete Functions:
4052    AcpiOsValidateInterface - no longer used.
4053New Files:
4054    source/components/utilities/utosi.c
4055
4056Re-introduced the support to enable multi-byte transfers for Embedded
4057Controller (EC) operation regions. A reported problem was found to be a
4058bug
4059in the host OS, not in the multi-byte support. Previously, the maximum
4060data
4061size passed to the EC operation region handler was a single byte. There
4062are
4063often EC Fields larger than one byte that need to be transferred, and it
4064is
4065useful for the EC driver to lock these as a single transaction. This
4066change
4067enables single transfers larger than 8 bits. This effectively changes the
4068access to the EC space from ByteAcc to AnyAcc, and will probably require
4069changes to the host OS Embedded Controller driver to enable 16/32/64/256-
4070bit
4071transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
4072
4073Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
4074prototype in acpiosxf.h had the output value pointer as a (void *).
4075It should be a (UINT64 *). This may affect some host OSL code.
4076
4077Fixed a couple problems with the recently modified Linux makefiles for
4078iASL
4079and AcpiExec. These new makefiles place the generated object files in the
4080local directory so that there can be no collisions between the files that
4081are
4082shared between them that are compiled with different options.
4083
4084Example Code and Data Size: These are the sizes for the OS-independent
4085acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4086debug version of the code includes the debug output trace mechanism and
4087has a
4088much larger code and data size.
4089
4090  Previous Release:
4091    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4092    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
4093  Current Release:
4094    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
4095    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
4096
40972) iASL Compiler/Disassembler and Tools:
4098
4099iASL/Disassembler: Added a new option (-da, "disassemble all") to load
4100the
4101namespace from and disassemble an entire group of AML files. Useful for
4102loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
4103and
4104disassembling with one simple command. ACPICA BZ 865. Lin Ming.
4105
4106iASL: Allow multiple invocations of -e option. This change allows
4107multiple
4108uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
4109834.
4110Lin Ming.
4111
4112----------------------------------------
411302 July 2010. Summary of changes for version 20100702:
4114
41151) ACPI CA Core Subsystem:
4116
4117Implemented several updates to the recently added GPE reference count
4118support. The model for "wake" GPEs is changing to give the host OS
4119complete
4120control of these GPEs. Eventually, the ACPICA core will not execute any
4121_PRW
4122methods, since the host already must execute them. Also, additional
4123changes
4124were made to help ensure that the reference counts are kept in proper
4125synchronization with reality. Rafael J. Wysocki.
4126
41271) Ensure that GPEs are not enabled twice during initialization.
41282) Ensure that GPE enable masks stay in sync with the reference count.
41293) Do not inadvertently enable GPEs when writing GPE registers.
41304) Remove the internal wake reference counter and add new AcpiGpeWakeup
4131interface. This interface will set or clear individual GPEs for wakeup.
41325) Remove GpeType argument from AcpiEnable and AcpiDisable. These
4133interfaces
4134are now used for "runtime" GPEs only.
4135
4136Changed the behavior of the GPE install/remove handler interfaces. The
4137GPE
4138is
4139no longer disabled during this process, as it was found to cause problems
4140on
4141some machines. Rafael J. Wysocki.
4142
4143Reverted a change introduced in version 20100528 to enable Embedded
4144Controller multi-byte transfers. This change was found to cause problems
4145with
4146Index Fields and possibly Bank Fields. It will be reintroduced when these
4147problems have been resolved.
4148
4149Fixed a problem with references to Alias objects within Package Objects.
4150A
4151reference to an Alias within the definition of a Package was not always
4152resolved properly. Aliases to objects like Processors, Thermal zones,
4153etc.
4154were resolved to the actual object instead of a reference to the object
4155as
4156it
4157should be. Package objects are only allowed to contain integer, string,
4158buffer, package, and reference objects. Redhat bugzilla 608648.
4159
4160Example Code and Data Size: These are the sizes for the OS-independent
4161acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4162debug version of the code includes the debug output trace mechanism and
4163has a
4164much larger code and data size.
4165
4166  Previous Release:
4167    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4168    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
4169  Current Release:
4170    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4171    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
4172
41732) iASL Compiler/Disassembler and Tools:
4174
4175iASL: Implemented a new compiler subsystem to allow definition and
4176compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
4177These
4178are called "ACPI Data Tables", and the new compiler is the "Data Table
4179Compiler". This compiler is intended to simplify the existing error-prone
4180process of creating these tables for the BIOS, as well as allowing the
4181disassembly, modification, recompilation, and override of existing ACPI
4182data
4183tables. See the iASL User Guide for detailed information.
4184
4185iASL: Implemented a new Template Generator option in support of the new
4186Data
4187Table Compiler. This option will create examples of all known ACPI tables
4188that can be used as the basis for table development. See the iASL
4189documentation and the -T option.
4190
4191Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
4192Descriptor Table).
4193
4194Updated the Linux makefiles for iASL and AcpiExec to place the generated
4195object files in the local directory so that there can be no collisions
4196between the shared files between them that are generated with different
4197options.
4198
4199Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
4200Use
4201the #define __APPLE__ to enable this support.
4202
4203----------------------------------------
420428 May 2010. Summary of changes for version 20100528:
4205
4206Note: The ACPI 4.0a specification was released on April 5, 2010 and is
4207available at www.acpi.info. This is primarily an errata release.
4208
42091) ACPI CA Core Subsystem:
4210
4211Undefined ACPI tables: We are looking for the definitions for the
4212following
4213ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
4214
4215Implemented support to enable multi-byte transfers for Embedded
4216Controller
4217(EC) operation regions. Previously, the maximum data size passed to the
4218EC
4219operation region handler was a single byte. There are often EC Fields
4220larger
4221than one byte that need to be transferred, and it is useful for the EC
4222driver
4223to lock these as a single transaction. This change enables single
4224transfers
4225larger than 8 bits. This effectively changes the access to the EC space
4226from
4227ByteAcc to AnyAcc, and will probably require changes to the host OS
4228Embedded
4229Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
4230bit
4231transfers. Alexey Starikovskiy, Lin Ming
4232
4233Implemented a performance enhancement for namespace search and access.
4234This
4235change enhances the performance of namespace searches and walks by adding
4236a
4237backpointer to the parent in each namespace node. On large namespaces,
4238this
4239change can improve overall ACPI performance by up to 9X. Adding a pointer
4240to
4241each namespace node increases the overall size of the internal namespace
4242by
4243about 5%, since each namespace entry usually consists of both a namespace
4244node and an ACPI operand object. However, this is the first growth of the
4245namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
4246
4247Implemented a performance optimization that reduces the number of
4248namespace
4249walks. On control method exit, only walk the namespace if the method is
4250known
4251to have created namespace objects outside of its local scope. Previously,
4252the
4253entire namespace was traversed on each control method exit. This change
4254can
4255improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
4256Moore.
4257
4258Added support to truncate I/O addresses to 16 bits for Windows
4259compatibility.
4260Some ASL code has been seen in the field that inadvertently has bits set
4261above bit 15. This feature is optional and is enabled if the BIOS
4262requests
4263any Windows OSI strings. It can also be enabled by the host OS. Matthew
4264Garrett, Bob Moore.
4265
4266Added support to limit the maximum time for the ASL Sleep() operator. To
4267prevent accidental deep sleeps, limit the maximum time that Sleep() will
4268actually sleep. Configurable, the default maximum is two seconds. ACPICA
4269bugzilla 854.
4270
4271Added run-time validation support for the _WDG and_WED Microsoft
4272predefined
4273methods. These objects are defined by "Windows Instrumentation", and are
4274not
4275part of the ACPI spec. ACPICA BZ 860.
4276
4277Expanded all statistic counters used during namespace and device
4278initialization from 16 to 32 bits in order to support very large
4279namespaces.
4280
4281Replaced all instances of %d in printf format specifiers with %u since
4282nearly
4283all integers in ACPICA are unsigned.
4284
4285Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
4286returned
4287as AE_NO_HANDLER.
4288
4289Example Code and Data Size: These are the sizes for the OS-independent
4290acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4291debug version of the code includes the debug output trace mechanism and
4292has a
4293much larger code and data size.
4294
4295  Previous Release:
4296    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
4297    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
4298  Current Release:
4299    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
4300    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
4301
43022) iASL Compiler/Disassembler and Tools:
4303
4304iASL: Added compiler support for the _WDG and_WED Microsoft predefined
4305methods. These objects are defined by "Windows Instrumentation", and are
4306not
4307part of the ACPI spec. ACPICA BZ 860.
4308
4309AcpiExec: added option to disable the memory tracking mechanism. The -dt
4310option will disable the tracking mechanism, which improves performance
4311considerably.
4312
4313AcpiExec: Restructured the command line options into -d (disable) and -e
4314(enable) options.
4315
4316----------------------------------------
431728 April 2010. Summary of changes for version 20100428:
4318
43191) ACPI CA Core Subsystem:
4320
4321Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
4322including FADT-based and GPE Block Devices, execute any _PRW methods in
4323the
4324new table, and process any _Lxx/_Exx GPE methods in the new table. Any
4325runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
4326immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
4327Devices. Provides compatibility with other ACPI implementations. Two new
4328files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
4329Moore.
4330
4331Fixed a regression introduced in version 20100331 within the table
4332manager
4333where initial table loading could fail. This was introduced in the fix
4334for
4335AcpiReallocateRootTable. Also, renamed some of fields in the table
4336manager
4337data structures to clarify their meaning and use.
4338
4339Fixed a possible allocation overrun during internal object copy in
4340AcpiUtCopySimpleObject. The original code did not correctly handle the
4341case
4342where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
4343847.
4344
4345Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
4346possible access beyond end-of-allocation. Also, now fully validate
4347descriptor
4348(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
4349
4350Example Code and Data Size: These are the sizes for the OS-independent
4351acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4352debug version of the code includes the debug output trace mechanism and
4353has a
4354much larger code and data size.
4355
4356  Previous Release:
4357    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
4358    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
4359  Current Release:
4360    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
4361    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
4362
43632) iASL Compiler/Disassembler and Tools:
4364
4365iASL: Implemented Min/Max/Len/Gran validation for address resource
4366descriptors. This change implements validation for the address fields
4367that
4368are common to all address-type resource descriptors. These checks are
4369implemented: Checks for valid Min/Max, length within the Min/Max window,
4370valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
4371per
4372table 6-40 in the ACPI 4.0a specification. Also split the large
4373aslrestype1.c
4374and aslrestype2.c files into five new files. ACPICA BZ 840.
4375
4376iASL: Added support for the _Wxx predefined names. This support was
4377missing
4378and these names were not recognized by the compiler as valid predefined
4379names. ACPICA BZ 851.
4380
4381iASL: Added an error for all predefined names that are defined to return
4382no
4383value and thus must be implemented as Control Methods. These include all
4384of
4385the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
4386names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
4387
4388iASL: Implemented the -ts option to emit hex AML data in ASL format, as
4389an
4390ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
4391be
4392dynamically loaded via the Load() operator. Also cleaned up output for
4393the
4394-
4395ta and -tc options. ACPICA BZ 853.
4396
4397Tests: Added a new file with examples of extended iASL error checking.
4398Demonstrates the advanced error checking ability of the iASL compiler.
4399Available at tests/misc/badcode.asl.
4400
4401----------------------------------------
440231 March 2010. Summary of changes for version 20100331:
4403
44041) ACPI CA Core Subsystem:
4405
4406Completed a major update for the GPE support in order to improve support
4407for
4408shared GPEs and to simplify both host OS and ACPICA code. Added a
4409reference
4410count mechanism to support shared GPEs that require multiple device
4411drivers.
4412Several external interfaces have changed. One external interface has been
4413removed. One new external interface was added. Most of the GPE external
4414interfaces now use the GPE spinlock instead of the events mutex (and the
4415Flags parameter for many GPE interfaces has been removed.) See the
4416updated
4417ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
4418Rafael
4419Wysocki. ACPICA BZ 831.
4420
4421Changed:
4422    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
4423Removed:
4424    AcpiSetGpeType
4425New:
4426    AcpiSetGpe
4427
4428Implemented write support for DataTable operation regions. These regions
4429are
4430defined via the DataTableRegion() operator. Previously, only read support
4431was
4432implemented. The ACPI specification allows DataTableRegions to be
4433read/write,
4434however.
4435
4436Implemented a new subsystem option to force a copy of the DSDT to local
4437memory. Optionally copy the entire DSDT to local memory (instead of
4438simply
4439mapping it.) There are some (albeit very rare) BIOSs that corrupt or
4440replace
4441the original DSDT, creating the need for this option. Default is FALSE,
4442do
4443not copy the DSDT.
4444
4445Implemented detection of a corrupted or replaced DSDT. This change adds
4446support to detect a DSDT that has been corrupted and/or replaced from
4447outside
4448the OS (by firmware). This is typically catastrophic for the system, but
4449has
4450been seen on some machines. Once this problem has been detected, the DSDT
4451copy option can be enabled via system configuration. Lin Ming, Bob Moore.
4452
4453Fixed two problems with AcpiReallocateRootTable during the root table
4454copy.
4455When copying the root table to the new allocation, the length used was
4456incorrect. The new size was used instead of the current table size,
4457meaning
4458too much data was copied. Also, the count of available slots for ACPI
4459tables
4460was not set correctly. Alexey Starikovskiy, Bob Moore.
4461
4462Example Code and Data Size: These are the sizes for the OS-independent
4463acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4464debug version of the code includes the debug output trace mechanism and
4465has a
4466much larger code and data size.
4467
4468  Previous Release:
4469    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
4470    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
4471  Current Release:
4472    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
4473    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
4474
44752) iASL Compiler/Disassembler and Tools:
4476
4477iASL: Implement limited typechecking for values returned from predefined
4478control methods. The type of any returned static (unnamed) object is now
4479validated. For example, Return(1). ACPICA BZ 786.
4480
4481iASL: Fixed a predefined name object verification regression. Fixes a
4482problem
4483introduced in version 20100304. An error is incorrectly generated if a
4484predefined name is declared as a static named object with a value defined
4485using the keywords "Zero", "One", or "Ones". Lin Ming.
4486
4487iASL: Added Windows 7 support for the -g option (get local ACPI tables)
4488by
4489reducing the requested registry access rights. ACPICA BZ 842.
4490
4491Disassembler: fixed a possible fault when generating External()
4492statements.
4493Introduced in commit ae7d6fd: Properly handle externals with parent-
4494prefix
4495(carat). Fixes a string length allocation calculation. Lin Ming.
4496
4497----------------------------------------
449804 March 2010. Summary of changes for version 20100304:
4499
45001) ACPI CA Core Subsystem:
4501
4502Fixed a possible problem with the AML Mutex handling function
4503AcpiExReleaseMutex where the function could fault under the very rare
4504condition when the interpreter has blocked, the interpreter lock is
4505released,
4506the interpreter is then reentered via the same thread, and attempts to
4507acquire an AML mutex that was previously acquired. FreeBSD report 140979.
4508Lin
4509Ming.
4510
4511Implemented additional configuration support for the AML "Debug Object".
4512Output from the debug object can now be enabled via a global variable,
4513AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
4514debugging.
4515This debug output is now available in the release version of ACPICA
4516instead
4517of just the debug version. Also, the entire debug output module can now
4518be
4519configured out of the ACPICA build if desired. One new file added,
4520executer/exdebug.c. Lin Ming, Bob Moore.
4521
4522Added header support for the ACPI MCHI table (Management Controller Host
4523Interface Table). This table was added in ACPI 4.0, but the defining
4524document
4525has only recently become available.
4526
4527Standardized output of integer values for ACPICA warnings/errors. Always
4528use
45290x prefix for hex output, always use %u for unsigned integer decimal
4530output.
4531Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
4532400
4533invocations.) These invocations were converted from the original
4534ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
4535
4536Example Code and Data Size: These are the sizes for the OS-independent
4537acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4538debug version of the code includes the debug output trace mechanism and
4539has a
4540much larger code and data size.
4541
4542  Previous Release:
4543    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
4544    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
4545  Current Release:
4546    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
4547    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
4548
45492) iASL Compiler/Disassembler and Tools:
4550
4551iASL: Implemented typechecking support for static (non-control method)
4552predefined named objects that are declared with the Name() operator. For
4553example, the type of this object is now validated to be of type Integer:
4554Name(_BBN, 1). This change migrates the compiler to using the core
4555predefined
4556name table instead of maintaining a local version. Added a new file,
4557aslpredef.c. ACPICA BZ 832.
4558
4559Disassembler: Added support for the ACPI 4.0 MCHI table.
4560
4561----------------------------------------
456221 January 2010. Summary of changes for version 20100121:
4563
45641) ACPI CA Core Subsystem:
4565
4566Added the 2010 copyright to all module headers and signons. This affects
4567virtually every file in the ACPICA core subsystem, the iASL compiler, the
4568tools/utilities, and the test suites.
4569
4570Implemented a change to the AcpiGetDevices interface to eliminate
4571unnecessary
4572invocations of the _STA method. In the case where a specific _HID is
4573requested, do not run _STA until a _HID match is found. This eliminates
4574potentially dozens of _STA calls during a search for a particular
4575device/HID,
4576which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
4577
4578Implemented an additional repair for predefined method return values.
4579Attempt
4580to repair unexpected NULL elements within returned Package objects.
4581Create
4582an
4583Integer of value zero, a NULL String, or a zero-length Buffer as
4584appropriate.
4585ACPICA BZ 818. Lin Ming, Bob Moore.
4586
4587Removed the obsolete ACPI_INTEGER data type. This type was introduced as
4588the
4589code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
4590(with
459164-bit AML integers). It is now obsolete and this change removes it from
4592the
4593ACPICA code base, replaced by UINT64. The original typedef has been
4594retained
4595for now for compatibility with existing device driver code. ACPICA BZ
4596824.
4597
4598Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
4599in
4600the parse tree object.
4601
4602Added additional warning options for the gcc-4 generation. Updated the
4603source
4604accordingly. This includes some code restructuring to eliminate
4605unreachable
4606code, elimination of some gotos, elimination of unused return values,
4607some
4608additional casting, and removal of redundant declarations.
4609
4610Example Code and Data Size: These are the sizes for the OS-independent
4611acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4612debug version of the code includes the debug output trace mechanism and
4613has a
4614much larger code and data size.
4615
4616  Previous Release:
4617    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
4618    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
4619  Current Release:
4620    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
4621    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
4622
46232) iASL Compiler/Disassembler and Tools:
4624
4625No functional changes for this release.
4626
4627----------------------------------------
462814 December 2009. Summary of changes for version 20091214:
4629
46301) ACPI CA Core Subsystem:
4631
4632Enhanced automatic data type conversions for predefined name repairs.
4633This
4634change expands the automatic repairs/conversions for predefined name
4635return
4636values to make Integers, Strings, and Buffers fully interchangeable.
4637Also,
4638a
4639Buffer can be converted to a Package of Integers if necessary. The
4640nsrepair.c
4641module was completely restructured. Lin Ming, Bob Moore.
4642
4643Implemented automatic removal of null package elements during predefined
4644name
4645repairs. This change will automatically remove embedded and trailing NULL
4646package elements from returned package objects that are defined to
4647contain
4648a
4649variable number of sub-packages. The driver is then presented with a
4650package
4651with no null elements to deal with. ACPICA BZ 819.
4652
4653Implemented a repair for the predefined _FDE and _GTM names. The expected
4654return value for both names is a Buffer of 5 DWORDs. This repair fixes
4655two
4656possible problems (both seen in the field), where a package of integers
4657is
4658returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
4659Kim.
4660
4661Implemented additional module-level code support. This change will
4662properly
4663execute module-level code that is not at the root of the namespace (under
4664a
4665Device object, etc.). Now executes the code within the current scope
4666instead
4667of the root. ACPICA BZ 762. Lin Ming.
4668
4669Fixed possible mutex acquisition errors when running _REG methods. Fixes
4670a
4671problem where mutex errors can occur when running a _REG method that is
4672in
4673the same scope as a method-defined operation region or an operation
4674region
4675under a module-level IF block. This type of code is rare, so the problem
4676has
4677not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
4678
4679Fixed a possible memory leak during module-level code execution. An
4680object
4681could be leaked for each block of executed module-level code if the
4682interpreter slack mode is enabled This change deletes any implicitly
4683returned
4684object from the module-level code block. Lin Ming.
4685
4686Removed messages for successful predefined repair(s). The repair
4687mechanism
4688was considered too wordy. Now, messages are only unconditionally emitted
4689if
4690the return object cannot be repaired. Existing messages for successful
4691repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
4692827.
4693
4694Example Code and Data Size: These are the sizes for the OS-independent
4695acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4696debug version of the code includes the debug output trace mechanism and
4697has a
4698much larger code and data size.
4699
4700  Previous Release:
4701    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
4702    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
4703  Current Release:
4704    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
4705    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
4706
47072) iASL Compiler/Disassembler and Tools:
4708
4709iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
4710files
4711were no longer automatically removed at the termination of the compile.
4712
4713acpiexec: Implemented the -f option to specify default region fill value.
4714This option specifies the value used to initialize buffers that simulate
4715operation regions. Default value is zero. Useful for debugging problems
4716that
4717depend on a specific initial value for a region or field.
4718
4719----------------------------------------
472012 November 2009. Summary of changes for version 20091112:
4721
47221) ACPI CA Core Subsystem:
4723
4724Implemented a post-order callback to AcpiWalkNamespace. The existing
4725interface only has a pre-order callback. This change adds an additional
4726parameter for a post-order callback which will be more useful for bus
4727scans.
4728ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
4729
4730Modified the behavior of the operation region memory mapping cache for
4731SystemMemory. Ensure that the memory mappings created for operation
4732regions
4733do not cross 4K page boundaries. Crossing a page boundary while mapping
4734regions can cause kernel warnings on some hosts if the pages have
4735different
4736attributes. Such regions are probably BIOS bugs, and this is the
4737workaround.
4738Linux BZ 14445. Lin Ming.
4739
4740Implemented an automatic repair for predefined methods that must return
4741sorted lists. This change will repair (by sorting) packages returned by
4742_ALR,
4743_PSS, and _TSS. Drivers can now assume that the packages are correctly
4744sorted
4745and do not contain NULL package elements. Adds one new file,
4746namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
4747
4748Fixed a possible fault during predefined name validation if a return
4749Package
4750object contains NULL elements. Also adds a warning if a NULL element is
4751followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
4752may
4753include repair or removal of all such NULL elements where possible.
4754
4755Implemented additional module-level executable AML code support. This
4756change
4757will execute module-level code that is not at the root of the namespace
4758(under a Device object, etc.) at table load time. Module-level executable
4759AML
4760code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
4761
4762Implemented a new internal function to create Integer objects. This
4763function
4764simplifies miscellaneous object creation code. ACPICA BZ 823.
4765
4766Reduced the severity of predefined repair messages, Warning to Info.
4767Since
4768the object was successfully repaired, a warning is too severe. Reduced to
4769an
4770info message for now. These messages may eventually be changed to debug-
4771only.
4772ACPICA BZ 812.
4773
4774Example Code and Data Size: These are the sizes for the OS-independent
4775acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4776debug version of the code includes the debug output trace mechanism and
4777has a
4778much larger code and data size.
4779
4780  Previous Release:
4781    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
4782    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
4783  Current Release:
4784    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
4785    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
4786
47872) iASL Compiler/Disassembler and Tools:
4788
4789iASL: Implemented Switch() with While(1) so that Break works correctly.
4790This
4791change correctly implements the Switch operator with a surrounding
4792While(1)
4793so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
4794
4795iASL: Added a message if a package initializer list is shorter than
4796package
4797length. Adds a new remark for a Package() declaration if an initializer
4798list
4799exists, but is shorter than the declared length of the package. Although
4800technically legal, this is probably a coding error and it is seen in the
4801field. ACPICA BZ 815. Lin Ming, Bob Moore.
4802
4803iASL: Fixed a problem where the compiler could fault after the maximum
4804number
4805of errors was reached (200).
4806
4807acpixtract: Fixed a possible warning for pointer cast if the compiler
4808warning
4809level set very high.
4810
4811----------------------------------------
481213 October 2009. Summary of changes for version 20091013:
4813
48141) ACPI CA Core Subsystem:
4815
4816Fixed a problem where an Operation Region _REG method could be executed
4817more
4818than once. If a custom address space handler is installed by the host
4819before
4820the "initialize operation regions" phase of the ACPICA initialization,
4821any
4822_REG methods for that address space could be executed twice. This change
4823fixes the problem. ACPICA BZ 427. Lin Ming.
4824
4825Fixed a possible memory leak for the Scope() ASL operator. When the exact
4826invocation of "Scope(\)" is executed (change scope to root), one internal
4827operand object was leaked. Lin Ming.
4828
4829Implemented a run-time repair for the _MAT predefined method. If the _MAT
4830return value is defined as a Field object in the AML, and the field
4831size is less than or equal to the default width of an integer (32 or
483264),_MAT
4833can incorrectly return an Integer instead of a Buffer. ACPICA now
4834automatically repairs this problem. ACPICA BZ 810.
4835
4836Implemented a run-time repair for the _BIF and _BIX predefined methods.
4837The
4838"OEM Information" field is often incorrectly returned as an Integer with
4839value zero if the field is not supported by the platform. This is due to
4840an
4841ambiguity in the ACPI specification. The field should always be a string.
4842ACPICA now automatically repairs this problem by returning a NULL string
4843within the returned Package. ACPICA BZ 807.
4844
4845Example Code and Data Size: These are the sizes for the OS-independent
4846acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4847debug version of the code includes the debug output trace mechanism and
4848has a
4849much larger code and data size.
4850
4851  Previous Release:
4852    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
4853    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
4854  Current Release:
4855    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
4856    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
4857
48582) iASL Compiler/Disassembler and Tools:
4859
4860Disassembler: Fixed a problem where references to external symbols that
4861contained one or more parent-prefixes (carats) were not handled
4862correctly,
4863possibly causing a fault. ACPICA BZ 806. Lin Ming.
4864
4865Disassembler: Restructured the code so that all functions that handle
4866external symbols are in a single module. One new file is added,
4867common/dmextern.c.
4868
4869AML Debugger: Added a max count argument for the Batch command (which
4870executes multiple predefined methods within the namespace.)
4871
4872iASL: Updated the compiler documentation (User Reference.) Available at
4873http://www.acpica.org/documentation/. ACPICA BZ 750.
4874
4875AcpiXtract: Updated for Lint and other formatting changes. Close all open
4876files.
4877
4878----------------------------------------
487903 September 2009. Summary of changes for version 20090903:
4880
48811) ACPI CA Core Subsystem:
4882
4883For Windows Vista compatibility, added the automatic execution of an _INI
4884method located at the namespace root (\_INI). This method is executed at
4885table load time. This support is in addition to the automatic execution
4886of
4887\_SB._INI. Lin Ming.
4888
4889Fixed a possible memory leak in the interpreter for AML package objects
4890if
4891the package initializer list is longer than the defined size of the
4892package.
4893This apparently can only happen if the BIOS changes the package size on
4894the
4895fly (seen in a _PSS object), as ASL compilers do not allow this. The
4896interpreter will truncate the package to the defined size (and issue an
4897error
4898message), but previously could leave the extra objects undeleted if they
4899were
4900pre-created during the argument processing (such is the case if the
4901package
4902consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
4903
4904Fixed a problem seen when a Buffer or String is stored to itself via ASL.
4905This has been reported in the field. Previously, ACPICA would zero out
4906the
4907buffer/string. Now, the operation is treated as a noop. Provides Windows
4908compatibility. ACPICA BZ 803. Lin Ming.
4909
4910Removed an extraneous error message for ASL constructs of the form
4911Store(LocalX,LocalX) when LocalX is uninitialized. These curious
4912statements
4913are seen in many BIOSs and are once again treated as NOOPs and no error
4914is
4915emitted when they are encountered. ACPICA BZ 785.
4916
4917Fixed an extraneous warning message if a _DSM reserved method returns a
4918Package object. _DSM can return any type of object, so validation on the
4919return type cannot be performed. ACPICA BZ 802.
4920
4921Example Code and Data Size: These are the sizes for the OS-independent
4922acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
4923debug version of the code includes the debug output trace mechanism and
4924has a
4925much larger code and data size.
4926
4927  Previous Release:
4928    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
4929    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
4930  Current Release:
4931    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
4932    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
4933
49342) iASL Compiler/Disassembler and Tools:
4935
4936iASL: Fixed a problem with the use of the Alias operator and Resource
4937Templates. The correct alias is now constructed and no error is emitted.
4938ACPICA BZ 738.
4939
4940iASL: Implemented the -I option to specify additional search directories
4941for
4942include files. Allows multiple additional search paths for include files.
4943Directories are searched in the order specified on the command line
4944(after
4945the local directory is searched.) ACPICA BZ 800.
4946
4947iASL: Fixed a problem where the full pathname for include files was not
4948emitted for warnings/errors. This caused the IDE support to not work
4949properly. ACPICA BZ 765.
4950
4951iASL: Implemented the -@ option to specify a Windows-style response file
4952containing additional command line options. ACPICA BZ 801.
4953
4954AcpiExec: Added support to load multiple AML files simultaneously (such
4955as
4956a
4957DSDT and multiple SSDTs). Also added support for wildcards within the AML
4958pathname. These features allow all machine tables to be easily loaded and
4959debugged together. ACPICA BZ 804.
4960
4961Disassembler: Added missing support for disassembly of HEST table Error
4962Bank
4963subtables.
4964
4965----------------------------------------
496630 July 2009. Summary of changes for version 20090730:
4967
4968The ACPI 4.0 implementation for ACPICA is complete with this release.
4969
49701) ACPI CA Core Subsystem:
4971
4972ACPI 4.0: Added header file support for all new and changed ACPI tables.
4973Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
4974new
4975for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
4976BERT,
4977EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
4978There
4979have been some ACPI 4.0 changes to other existing tables. Split the large
4980actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
4981
4982ACPI 4.0: Implemented predefined name validation for all new names. There
4983are
498431 new names in ACPI 4.0. The predefined validation module was split into
4985two
4986files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
4987
4988Implemented support for so-called "module-level executable code". This is
4989executable AML code that exists outside of any control method and is
4990intended
4991to be executed at table load time. Although illegal since ACPI 2.0, this
4992type
4993of code still exists and is apparently still being created. Blocks of
4994this
4995code are now detected and executed as intended. Currently, the code
4996blocks
4997must exist under either an If, Else, or While construct; these are the
4998typical cases seen in the field. ACPICA BZ 762. Lin Ming.
4999
5000Implemented an automatic dynamic repair for predefined names that return
5001nested Package objects. This applies to predefined names that are defined
5002to
5003return a variable-length Package of sub-packages. If the number of sub-
5004packages is one, BIOS code is occasionally seen that creates a simple
5005single
5006package with no sub-packages. This code attempts to fix the problem by
5007wrapping a new package object around the existing package. These methods
5008can
5009be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
5010BZ
5011790.
5012
5013Fixed a regression introduced in 20090625 for the AcpiGetDevices
5014interface.
5015The _HID/_CID matching was broken and no longer matched IDs correctly.
5016ACPICA
5017BZ 793.
5018
5019Fixed a problem with AcpiReset where the reset would silently fail if the
5020register was one of the protected I/O ports. AcpiReset now bypasses the
5021port
5022validation mechanism. This may eventually be driven into the
5023AcpiRead/Write
5024interfaces.
5025
5026Fixed a regression related to the recent update of the AcpiRead/Write
5027interfaces. A sleep/suspend could fail if the optional PM2 Control
5028register
5029does not exist during an attempt to write the Bus Master Arbitration bit.
5030(However, some hosts already delete the code that writes this bit, and
5031the
5032code may in fact be obsolete at this date.) ACPICA BZ 799.
5033
5034Fixed a problem where AcpiTerminate could fault if inadvertently called
5035twice
5036in succession. ACPICA BZ 795.
5037
5038Example Code and Data Size: These are the sizes for the OS-independent
5039acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5040debug version of the code includes the debug output trace mechanism and
5041has a
5042much larger code and data size.
5043
5044  Previous Release:
5045    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
5046    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
5047  Current Release:
5048    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
5049    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
5050
50512) iASL Compiler/Disassembler and Tools:
5052
5053ACPI 4.0: Implemented disassembler support for all new ACPI tables and
5054changes to existing tables. ACPICA BZ 775.
5055
5056----------------------------------------
505725 June 2009. Summary of changes for version 20090625:
5058
5059The ACPI 4.0 Specification was released on June 16 and is available at
5060www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
5061continue for the next few releases.
5062
50631) ACPI CA Core Subsystem:
5064
5065ACPI 4.0: Implemented interpreter support for the IPMI operation region
5066address space. Includes support for bi-directional data buffers and an
5067IPMI
5068address space handler (to be installed by an IPMI device driver.) ACPICA
5069BZ
5070773. Lin Ming.
5071
5072ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
5073Includes
5074support in both the header files and the disassembler.
5075
5076Completed a major update for the AcpiGetObjectInfo external interface.
5077Changes include:
5078 - Support for variable, unlimited length HID, UID, and CID strings.
5079 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
5080etc.)
5081 - Call the _SxW power methods on behalf of a device object.
5082 - Determine if a device is a PCI root bridge.
5083 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
5084These changes will require an update to all callers of this interface.
5085See
5086the updated ACPICA Programmer Reference for details. One new source file
5087has
5088been added - utilities/utids.c. ACPICA BZ 368, 780.
5089
5090Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
5091transfers. The Value parameter has been extended from 32 bits to 64 bits
5092in
5093order to support new ACPI 4.0 tables. These changes will require an
5094update
5095to
5096all callers of these interfaces. See the ACPICA Programmer Reference for
5097details. ACPICA BZ 768.
5098
5099Fixed several problems with AcpiAttachData. The handler was not invoked
5100when
5101the host node was deleted. The data sub-object was not automatically
5102deleted
5103when the host node was deleted. The interface to the handler had an
5104unused
5105parameter, this was removed. ACPICA BZ 778.
5106
5107Enhanced the function that dumps ACPI table headers. All non-printable
5108characters in the string fields are now replaced with '?' (Signature,
5109OemId,
5110OemTableId, and CompilerId.) ACPI tables with non-printable characters in
5111these fields are occasionally seen in the field. ACPICA BZ 788.
5112
5113Fixed a problem with predefined method repair code where the code that
5114attempts to repair/convert an object of incorrect type is only executed
5115on
5116the first time the predefined method is called. The mechanism that
5117disables
5118warnings on subsequent calls was interfering with the repair mechanism.
5119ACPICA BZ 781.
5120
5121Fixed a possible memory leak in the predefined validation/repair code
5122when
5123a
5124buffer is automatically converted to an expected string object.
5125
5126Removed obsolete 16-bit files from the distribution and from the current
5127git
5128tree head. ACPICA BZ 776.
5129
5130Example Code and Data Size: These are the sizes for the OS-independent
5131acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5132debug version of the code includes the debug output trace mechanism and
5133has a
5134much larger code and data size.
5135
5136  Previous Release:
5137    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
5138    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
5139  Current Release:
5140    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
5141    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
5142
51432) iASL Compiler/Disassembler and Tools:
5144
5145ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
5146operation region keyword. ACPICA BZ 771, 772. Lin Ming.
5147
5148ACPI 4.0: iASL - implemented compile-time validation support for all new
5149predefined names and control methods (31 total). ACPICA BZ 769.
5150
5151----------------------------------------
515221 May 2009. Summary of changes for version 20090521:
5153
51541) ACPI CA Core Subsystem:
5155
5156Disabled the preservation of the SCI enable bit in the PM1 control
5157register.
5158The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
5159to
5160be
5161a "preserved" bit - "OSPM always preserves this bit position", section
51624.7.3.2.1. However, some machines fail if this bit is in fact preserved
5163because the bit needs to be explicitly set by the OS as a workaround. No
5164machines fail if the bit is not preserved. Therefore, ACPICA no longer
5165attempts to preserve this bit.
5166
5167Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
5168incorrectly formed _PRT package could cause a fault. Added validation to
5169ensure that each package element is actually a sub-package.
5170
5171Implemented a new interface to install or override a single control
5172method,
5173AcpiInstallMethod. This interface is useful when debugging in order to
5174repair
5175an existing method or to install a missing method without having to
5176override
5177the entire ACPI table. See the ACPICA Programmer Reference for use and
5178examples. Lin Ming, Bob Moore.
5179
5180Fixed several reference count issues with the DdbHandle object that is
5181created from a Load or LoadTable operator. Prevent premature deletion of
5182the
5183object. Also, mark the object as invalid once the table has been
5184unloaded.
5185This is needed because the handle itself may not be deleted after the
5186table
5187unload, depending on whether it has been stored in a named object by the
5188caller. Lin Ming.
5189
5190Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
5191mutexes of the same sync level are acquired but then not released in
5192strict
5193opposite order, the internally maintained Current Sync Level becomes
5194confused
5195and can cause subsequent execution errors. ACPICA BZ 471.
5196
5197Changed the allowable release order for ASL mutex objects. The ACPI 4.0
5198specification has been changed to make the SyncLevel for mutex objects
5199more
5200useful. When releasing a mutex, the SyncLevel of the mutex must now be
5201the
5202same as the current sync level. This makes more sense than the previous
5203rule
5204(SyncLevel less than or equal). This change updates the code to match the
5205specification.
5206
5207Fixed a problem with the local version of the AcpiOsPurgeCache function.
5208The
5209(local) cache must be locked during all cache object deletions. Andrew
5210Baumann.
5211
5212Updated the Load operator to use operation region interfaces. This
5213replaces
5214direct memory mapping with region access calls. Now, all region accesses
5215go
5216through the installed region handler as they should.
5217
5218Simplified and optimized the NsGetNextNode function. Reduced parameter
5219count
5220and reduced code for this frequently used function.
5221
5222Example Code and Data Size: These are the sizes for the OS-independent
5223acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5224debug version of the code includes the debug output trace mechanism and
5225has a
5226much larger code and data size.
5227
5228  Previous Release:
5229    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
5230    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
5231  Current Release:
5232    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
5233    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
5234
52352) iASL Compiler/Disassembler and Tools:
5236
5237Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
5238problems
5239with sub-table disassembly and handling invalid sub-tables. Attempt
5240recovery
5241after an invalid sub-table ID.
5242
5243----------------------------------------
524422 April 2009. Summary of changes for version 20090422:
5245
52461) ACPI CA Core Subsystem:
5247
5248Fixed a compatibility issue with the recently released I/O port
5249protection
5250mechanism. For windows compatibility, 1) On a port protection violation,
5251simply ignore the request and do not return an exception (allow the
5252control
5253method to continue execution.) 2) If only part of the request overlaps a
5254protected port, read/write the individual ports that are not protected.
5255Linux
5256BZ 13036. Lin Ming
5257
5258Enhanced the execution of the ASL/AML BreakPoint operator so that it
5259actually
5260breaks into the AML debugger if the debugger is present. This matches the
5261ACPI-defined behavior.
5262
5263Fixed several possible warnings related to the use of the configurable
5264ACPI_THREAD_ID. This type can now be configured as either an integer or a
5265pointer with no warnings. Also fixes several warnings in printf-like
5266statements for the 64-bit build when the type is configured as a pointer.
5267ACPICA BZ 766, 767.
5268
5269Fixed a number of possible warnings when compiling with gcc 4+ (depending
5270on
5271warning options.) Examples include printf formats, aliasing, unused
5272globals,
5273missing prototypes, missing switch default statements, use of non-ANSI
5274library functions, use of non-ANSI constructs. See generate/unix/Makefile
5275for
5276a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
5277
5278Example Code and Data Size: These are the sizes for the OS-independent
5279acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5280debug version of the code includes the debug output trace mechanism and
5281has a
5282much larger code and data size.
5283
5284  Previous Release:
5285    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
5286    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
5287  Current Release:
5288    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
5289    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
5290
52912) iASL Compiler/Disassembler and Tools:
5292
5293iASL: Fixed a generation warning from Bison 2.3 and fixed several
5294warnings
5295on
5296the 64-bit build.
5297
5298iASL: Fixed a problem where the Unix/Linux versions of the compiler could
5299not
5300correctly digest Windows/DOS formatted files (with CR/LF).
5301
5302iASL: Added a new option for "quiet mode" (-va) that produces only the
5303compilation summary, not individual errors and warnings. Useful for large
5304batch compilations.
5305
5306AcpiExec: Implemented a new option (-z) to enable a forced
5307semaphore/mutex
5308timeout that can be used to detect hang conditions during execution of
5309AML
5310code (includes both internal semaphores and AML-defined mutexes and
5311events.)
5312
5313Added new makefiles for the generation of acpica in a generic unix-like
5314environment. These makefiles are intended to generate the acpica tools
5315and
5316utilities from the original acpica git source tree structure.
5317
5318Test Suites: Updated and cleaned up the documentation files. Updated the
5319copyrights to 2009, affecting all source files. Use the new version of
5320iASL
5321with quiet mode. Increased the number of available semaphores in the
5322Windows
5323OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
5324added
5325an alternate implementation of the semaphore timeout to allow aslts to
5326execute fully on Cygwin.
5327
5328----------------------------------------
532920 March 2009. Summary of changes for version 20090320:
5330
53311) ACPI CA Core Subsystem:
5332
5333Fixed a possible race condition between AcpiWalkNamespace and dynamic
5334table
5335unloads. Added a reader/writer locking mechanism to allow multiple
5336concurrent
5337namespace walks (readers), but block a dynamic table unload until it can
5338gain
5339exclusive write access to the namespace. This fixes a problem where a
5340table
5341unload could (possibly catastrophically) delete the portion of the
5342namespace
5343that is currently being examined by a walk. Adds a new file, utlock.c,
5344that
5345implements the reader/writer lock mechanism. ACPICA BZ 749.
5346
5347Fixed a regression introduced in version 20090220 where a change to the
5348FADT
5349handling could cause the ACPICA subsystem to access non-existent I/O
5350ports.
5351
5352Modified the handling of FADT register and table (FACS/DSDT) addresses.
5353The
5354FADT can contain both 32-bit and 64-bit versions of these addresses.
5355Previously, the 64-bit versions were favored, meaning that if both 32 and
535664
5357versions were valid, but not equal, the 64-bit version was used. This was
5358found to cause some machines to fail. Now, in this case, the 32-bit
5359version
5360is used instead. This now matches the Windows behavior.
5361
5362Implemented a new mechanism to protect certain I/O ports. Provides
5363Microsoft
5364compatibility and protects the standard PC I/O ports from access via AML
5365code. Adds a new file, hwvalid.c
5366
5367Fixed a possible extraneous warning message from the FADT support. The
5368message warns of a 32/64 length mismatch between the legacy and GAS
5369definitions for a register.
5370
5371Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
5372is
5373made obsolete by the port protection mechanism above. It was previously
5374used
5375to validate the entire address range of an operation region, which could
5376be
5377incorrect if the range included illegal ports, but fields within the
5378operation region did not actually access those ports. Validation is now
5379performed on a per-field basis instead of the entire region.
5380
5381Modified the handling of the PM1 Status Register ignored bit (bit 11.)
5382Ignored bits must be "preserved" according to the ACPI spec. Usually,
5383this
5384means a read/modify/write when writing to the register. However, for
5385status
5386registers, writing a one means clear the event. Writing a zero means
5387preserve
5388the event (do not clear.) This behavior is clarified in the ACPI 4.0
5389spec,
5390and the ACPICA code now simply always writes a zero to the ignored bit.
5391
5392Modified the handling of ignored bits for the PM1 A/B Control Registers.
5393As
5394per the ACPI specification, for the control registers, preserve
5395(read/modify/write) all bits that are defined as either reserved or
5396ignored.
5397
5398Updated the handling of write-only bits in the PM1 A/B Control Registers.
5399When reading the register, zero the write-only bits as per the ACPI spec.
5400ACPICA BZ 443. Lin Ming.
5401
5402Removed "Linux" from the list of supported _OSI strings. Linux no longer
5403wants to reply true to this request. The Windows strings are the only
5404paths
5405through the AML that are tested and known to work properly.
5406
5407  Previous Release:
5408    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
5409    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
5410  Current Release:
5411    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
5412    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
5413
54142) iASL Compiler/Disassembler and Tools:
5415
5416Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
5417and
5418aetables.c
5419
5420----------------------------------------
542120 February 2009. Summary of changes for version 20090220:
5422
54231) ACPI CA Core Subsystem:
5424
5425Optimized the ACPI register locking. Removed locking for reads from the
5426ACPI
5427bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
5428is
5429not required when reading the single-bit registers. The
5430AcpiGetRegisterUnlocked function is no longer needed and has been
5431removed.
5432This will improve performance for reads on these registers. ACPICA BZ
5433760.
5434
5435Fixed the parameter validation for AcpiRead/Write. Now return
5436AE_BAD_PARAMETER if the input register pointer is null, and
5437AE_BAD_ADDRESS
5438if
5439the register has an address of zero. Previously, these cases simply
5440returned
5441AE_OK. For optional registers such as PM1B status/enable/control, the
5442caller
5443should check for a valid register address before calling. ACPICA BZ 748.
5444
5445Renamed the external ACPI bit register access functions. Renamed
5446AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
5447functions. The new names are AcpiReadBitRegister and
5448AcpiWriteBitRegister.
5449Also, restructured the code for these functions by simplifying the code
5450path
5451and condensing duplicate code to reduce code size.
5452
5453Added new functions to transparently handle the possibly split PM1 A/B
5454registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
5455functions
5456now handle the split registers for PM1 Status, Enable, and Control.
5457ACPICA
5458BZ
5459746.
5460
5461Added a function to handle the PM1 control registers,
5462AcpiHwWritePm1Control.
5463This function writes both of the PM1 control registers (A/B). These
5464registers
5465are different than the PM1 A/B status and enable registers in that
5466different
5467values can be written to the A/B registers. Most notably, the SLP_TYP
5468bits
5469can be different, as per the values returned from the _Sx predefined
5470methods.
5471
5472Removed an extra register write within AcpiHwClearAcpiStatus. This
5473function
5474was writing an optional PM1B status register twice. The existing call to
5475the
5476low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
5477A/B
5478register. ACPICA BZ 751.
5479
5480Split out the PM1 Status registers from the FADT. Added new globals for
5481these
5482registers (A/B), similar to the way the PM1 Enable registers are handled.
5483Instead of overloading the FADT Event Register blocks. This makes the
5484code
5485clearer and less prone to error.
5486
5487Fixed the warning message for when the platform contains too many ACPI
5488tables
5489for the default size of the global root table data structure. The
5490calculation
5491for the truncation value was incorrect.
5492
5493Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
5494obsolete macro, since it is now a simple reference to ->common.type.
5495There
5496were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
5497
5498Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
5499TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
5500simply SLEEP_TYPE. ACPICA BZ 754.
5501
5502Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
5503function is only needed on 64-bit host operating systems and is thus not
5504included for 32-bit hosts.
5505
5506Debug output: print the input and result for invocations of the _OSI
5507reserved
5508control method via the ACPI_LV_INFO debug level. Also, reduced some of
5509the
5510verbosity of this debug level. Len Brown.
5511
5512Example Code and Data Size: These are the sizes for the OS-independent
5513acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5514debug version of the code includes the debug output trace mechanism and
5515has a
5516much larger code and data size.
5517
5518  Previous Release:
5519    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
5520    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
5521  Current Release:
5522    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
5523    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
5524
55252) iASL Compiler/Disassembler and Tools:
5526
5527Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
5528various legal performance profiles.
5529
5530----------------------------------------
553123 January 2009. Summary of changes for version 20090123:
5532
55331) ACPI CA Core Subsystem:
5534
5535Added the 2009 copyright to all module headers and signons. This affects
5536virtually every file in the ACPICA core subsystem, the iASL compiler, and
5537the tools/utilities.
5538
5539Implemented a change to allow the host to override any ACPI table,
5540including
5541dynamically loaded tables. Previously, only the DSDT could be replaced by
5542the
5543host. With this change, the AcpiOsTableOverride interface is called for
5544each
5545table found in the RSDT/XSDT during ACPICA initialization, and also
5546whenever
5547a table is dynamically loaded via the AML Load operator.
5548
5549Updated FADT flag definitions, especially the Boot Architecture flags.
5550
5551Debugger: For the Find command, automatically pad the input ACPI name
5552with
5553underscores if the name is shorter than 4 characters. This enables a
5554match
5555with the actual namespace entry which is itself padded with underscores.
5556
5557Example Code and Data Size: These are the sizes for the OS-independent
5558acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5559debug version of the code includes the debug output trace mechanism and
5560has a
5561much larger code and data size.
5562
5563  Previous Release:
5564    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
5565    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
5566  Current Release:
5567    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
5568    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
5569
55702) iASL Compiler/Disassembler and Tools:
5571
5572Fix build error under Bison-2.4.
5573
5574Dissasembler: Enhanced FADT support. Added decoding of the Boot
5575Architecture
5576flags. Now decode all flags, regardless of the FADT version. Flag output
5577includes the FADT version which first defined each flag.
5578
5579The iASL -g option now dumps the RSDT to a file (in addition to the FADT
5580and
5581DSDT). Windows only.
5582
5583----------------------------------------
558404 December 2008. Summary of changes for version 20081204:
5585
55861) ACPI CA Core Subsystem:
5587
5588The ACPICA Programmer Reference has been completely updated and revamped
5589for
5590this release. This includes updates to the external interfaces, OSL
5591interfaces, the overview sections, and the debugger reference.
5592
5593Several new ACPICA interfaces have been implemented and documented in the
5594programmer reference:
5595AcpiReset - Writes the reset value to the FADT-defined reset register.
5596AcpiDisableAllGpes - Disable all available GPEs.
5597AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
5598AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
5599AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
5600AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
5601AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
5602
5603Most of the public ACPI hardware-related interfaces have been moved to a
5604new
5605file, components/hardware/hwxface.c
5606
5607Enhanced the FADT parsing and low-level ACPI register access: The ACPI
5608register lengths within the FADT are now used, and the low level ACPI
5609register access no longer hardcodes the ACPI register lengths. Given that
5610there may be some risk in actually trusting the FADT register lengths, a
5611run-
5612time option was added to fall back to the default hardcoded lengths if
5613the
5614FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
5615option is set to true for now, and a warning is issued if a suspicious
5616FADT
5617register length is overridden with the default value.
5618
5619Fixed a reference count issue in NsRepairObject. This problem was
5620introduced
5621in version 20081031 as part of a fix to repair Buffer objects within
5622Packages. Lin Ming.
5623
5624Added semaphore support to the Linux/Unix application OS-services layer
5625(OSL). ACPICA BZ 448. Lin Ming.
5626
5627Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
5628will
5629be implemented in the OSL, or will binary semaphores be used instead.
5630
5631Example Code and Data Size: These are the sizes for the OS-independent
5632acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5633debug version of the code includes the debug output trace mechanism and
5634has a
5635much larger code and data size.
5636
5637  Previous Release:
5638    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
5639    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
5640  Current Release:
5641    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
5642    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
5643
56442) iASL Compiler/Disassembler and Tools:
5645
5646iASL: Completed the '-e' option to include additional ACPI tables in
5647order
5648to
5649aid with disassembly and External statement generation. ACPICA BZ 742.
5650Lin
5651Ming.
5652
5653iASL: Removed the "named object in while loop" error. The compiler cannot
5654determine how many times a loop will execute. ACPICA BZ 730.
5655
5656Disassembler: Implemented support for FADT revision 2 (MS extension).
5657ACPICA
5658BZ 743.
5659
5660Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
5661MCFG).
5662
5663----------------------------------------
566431 October 2008. Summary of changes for version 20081031:
5665
56661) ACPI CA Core Subsystem:
5667
5668Restructured the ACPICA header files into public/private. acpi.h now
5669includes
5670only the "public" acpica headers. All other acpica headers are "private"
5671and
5672should not be included by acpica users. One new file, accommon.h is used
5673to
5674include the commonly used private headers for acpica code generation.
5675Future
5676plans include moving all private headers to a new subdirectory.
5677
5678Implemented an automatic Buffer->String return value conversion for
5679predefined ACPI methods. For these methods (such as _BIF), added
5680automatic
5681conversion for return objects that are required to be a String, but a
5682Buffer
5683was found instead. This can happen when reading string battery data from
5684an
5685operation region, because it used to be difficult to convert the data
5686from
5687buffer to string from within the ASL. Ensures that the host OS is
5688provided
5689with a valid null-terminated string. Linux BZ 11822.
5690
5691Updated the FACS waking vector interfaces. Split
5692AcpiSetFirmwareWakingVector
5693into two: one for the 32-bit vector, another for the 64-bit vector. This
5694is
5695required because the host OS must setup the wake much differently for
5696each
5697vector (real vs. protected mode, etc.) and the interface itself should
5698not
5699be
5700deciding which vector to use. Also, eliminated the
5701GetFirmwareWakingVector
5702interface, as it served no purpose (only the firmware reads the vector,
5703OS
5704only writes the vector.) ACPICA BZ 731.
5705
5706Implemented a mechanism to escape infinite AML While() loops. Added a
5707loop
5708counter to force exit from AML While loops if the count becomes too
5709large.
5710This can occur in poorly written AML when the hardware does not respond
5711within a while loop and the loop does not implement a timeout. The
5712maximum
5713loop count is configurable. A new exception code is returned when a loop
5714is
5715broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
5716
5717Optimized the execution of AML While loops. Previously, a control state
5718object was allocated and freed for each execution of the loop. The
5719optimization is to simply reuse the control state for each iteration.
5720This
5721speeds up the raw loop execution time by about 5%.
5722
5723Enhanced the implicit return mechanism. For Windows compatibility, return
5724an
5725implicit integer of value zero for methods that contain no executable
5726code.
5727Such methods are seen in the field as stubs (presumably), and can cause
5728drivers to fail if they expect a return value. Lin Ming.
5729
5730Allow multiple backslashes as root prefixes in namepaths. In a fully
5731qualified namepath, allow multiple backslash prefixes. This can happen
5732(and
5733is seen in the field) because of the use of a double-backslash in strings
5734(since backslash is the escape character) causing confusion. ACPICA BZ
5735739
5736Lin Ming.
5737
5738Emit a warning if two different FACS or DSDT tables are discovered in the
5739FADT. Checks if there are two valid but different addresses for the FACS
5740and
5741DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
5742
5743Consolidated the method argument count validation code. Merged the code
5744that
5745validates control method argument counts into the predefined validation
5746module. Eliminates possible multiple warnings for incorrect argument
5747counts.
5748
5749Implemented ACPICA example code. Includes code for ACPICA initialization,
5750handler installation, and calling a control method. Available at
5751source/tools/examples.
5752
5753Added a global pointer for FACS table to simplify internal FACS access.
5754Use
5755the global pointer instead of using AcpiGetTableByIndex for each FACS
5756access.
5757This simplifies the code for the Global Lock and the Firmware Waking
5758Vector(s).
5759
5760Example Code and Data Size: These are the sizes for the OS-independent
5761acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5762debug version of the code includes the debug output trace mechanism and
5763has a
5764much larger code and data size.
5765
5766  Previous Release:
5767    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
5768    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
5769  Current Release:
5770    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
5771    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
5772
57732) iASL Compiler/Disassembler and Tools:
5774
5775iASL: Improved disassembly of external method calls. Added the -e option
5776to
5777allow the inclusion of additional ACPI tables to help with the
5778disassembly
5779of
5780method invocations and the generation of external declarations during the
5781disassembly. Certain external method invocations cannot be disassembled
5782properly without the actual declaration of the method. Use the -e option
5783to
5784include the table where the external method(s) are actually declared.
5785Most
5786useful for disassembling SSDTs that make method calls back to the master
5787DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
5788-d
5789-e dsdt.aml ssdt1.aml
5790
5791iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
5792problem where the use of an alias within a namepath would result in a not
5793found error or cause the compiler to fault. Also now allows forward
5794references from the Alias operator itself. ACPICA BZ 738.
5795
5796----------------------------------------
579726 September 2008. Summary of changes for version 20080926:
5798
57991) ACPI CA Core Subsystem:
5800
5801Designed and implemented a mechanism to validate predefined ACPI methods
5802and
5803objects. This code validates the predefined ACPI objects (objects whose
5804names
5805start with underscore) that appear in the namespace, at the time they are
5806evaluated. The argument count and the type of the returned object are
5807validated against the ACPI specification. The purpose of this validation
5808is
5809to detect problems with the BIOS-implemented predefined ACPI objects
5810before
5811the results are returned to the ACPI-related drivers. Future enhancements
5812may
5813include actual repair of incorrect return objects where possible. Two new
5814files are nspredef.c and acpredef.h.
5815
5816Fixed a fault in the AML parser if a memory allocation fails during the
5817Op
5818completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
5819
5820Fixed an issue with implicit return compatibility. This change improves
5821the
5822implicit return mechanism to be more compatible with the MS interpreter.
5823Lin
5824Ming, ACPICA BZ 349.
5825
5826Implemented support for zero-length buffer-to-string conversions. Allow
5827zero
5828length strings during interpreter buffer-to-string conversions. For
5829example,
5830during the ToDecimalString and ToHexString operators, as well as implicit
5831conversions. Fiodor Suietov, ACPICA BZ 585.
5832
5833Fixed two possible memory leaks in the error exit paths of
5834AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
5835are
5836similar in that they use a stack of state objects in order to eliminate
5837recursion. The stack must be fully unwound and deallocated if an error
5838occurs. Lin Ming. ACPICA BZ 383.
5839
5840Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
5841global
5842ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
5843Moore ACPICA BZ 442.
5844
5845Removed the obsolete version number in module headers. Removed the
5846"$Revision" number that appeared in each module header. This version
5847number
5848was useful under SourceSafe and CVS, but has no meaning under git. It is
5849not
5850only incorrect, it could also be misleading.
5851
5852Example Code and Data Size: These are the sizes for the OS-independent
5853acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5854debug version of the code includes the debug output trace mechanism and
5855has a
5856much larger code and data size.
5857
5858  Previous Release:
5859    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5860    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
5861  Current Release:
5862    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
5863    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
5864
5865----------------------------------------
586629 August 2008. Summary of changes for version 20080829:
5867
58681) ACPI CA Core Subsystem:
5869
5870Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
5871Reference. Changes include the elimination of cheating on the Object
5872field
5873for the DdbHandle subtype, addition of a reference class field to
5874differentiate the various reference types (instead of an AML opcode), and
5875the
5876cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
5877
5878Reduce an error to a warning for an incorrect method argument count.
5879Previously aborted with an error if too few arguments were passed to a
5880control method via the external ACPICA interface. Now issue a warning
5881instead
5882and continue. Handles the case where the method inadvertently declares
5883too
5884many arguments, but does not actually use the extra ones. Applies mainly
5885to
5886the predefined methods. Lin Ming. Linux BZ 11032.
5887
5888Disallow the evaluation of named object types with no intrinsic value.
5889Return
5890AE_TYPE for objects that have no value and therefore evaluation is
5891undefined:
5892Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
5893of
5894these types were allowed, but an exception would be generated at some
5895point
5896during the evaluation. Now, the error is generated up front.
5897
5898Fixed a possible memory leak in the AcpiNsGetExternalPathname function
5899(nsnames.c). Fixes a leak in the error exit path.
5900
5901Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
5902debug
5903levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
5904ACPI_EXCEPTION
5905interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
5906ACPI_LV_EVENTS.
5907
5908Removed obsolete and/or unused exception codes from the acexcep.h header.
5909There is the possibility that certain device drivers may be affected if
5910they
5911use any of these exceptions.
5912
5913The ACPICA documentation has been added to the public git source tree,
5914under
5915acpica/documents. Included are the ACPICA programmer reference, the iASL
5916compiler reference, and the changes.txt release logfile.
5917
5918Example Code and Data Size: These are the sizes for the OS-independent
5919acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
5920debug version of the code includes the debug output trace mechanism and
5921has a
5922much larger code and data size.
5923
5924  Previous Release:
5925    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5926    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
5927  Current Release:
5928    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
5929    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
5930
59312) iASL Compiler/Disassembler and Tools:
5932
5933Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
5934defines _SCP with 3 arguments. Previous versions defined it with only 1
5935argument. iASL now allows both definitions.
5936
5937iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
5938zero-
5939length subtables when disassembling ACPI tables. Also fixed a couple of
5940errors where a full 16-bit table type field was not extracted from the
5941input
5942properly.
5943
5944acpisrc: Improve comment counting mechanism for generating source code
5945statistics. Count first and last lines of multi-line comments as
5946whitespace,
5947not comment lines. Handle Linux legal header in addition to standard
5948acpica
5949header.
5950
5951----------------------------------------
5952
595329 July 2008. Summary of changes for version 20080729:
5954
59551) ACPI CA Core Subsystem:
5956
5957Fix a possible deadlock in the GPE dispatch. Remove call to
5958AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
5959attempt
5960to acquire the GPE lock but can deadlock since the GPE lock is already
5961held
5962at dispatch time. This code was introduced in version 20060831 as a
5963response
5964to Linux BZ 6881 and has since been removed from Linux.
5965
5966Add a function to dereference returned reference objects. Examines the
5967return
5968object from a call to AcpiEvaluateObject. Any Index or RefOf references
5969are
5970automatically dereferenced in an attempt to return something useful
5971(these
5972reference types cannot be converted into an external ACPI_OBJECT.)
5973Provides
5974MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
5975
5976x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
5977subtables for the MADT and one new subtable for the SRAT. Includes
5978disassembler and AcpiSrc support. Data from the Intel 64 Architecture
5979x2APIC
5980Specification, June 2008.
5981
5982Additional error checking for pathname utilities. Add error check after
5983all
5984calls to AcpiNsGetPathnameLength. Add status return from
5985AcpiNsBuildExternalPath and check after all calls. Add parameter
5986validation
5987to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
5988
5989Return status from the global init function AcpiUtGlobalInitialize. This
5990is
5991used by both the kernel subsystem and the utilities such as iASL
5992compiler.
5993The function could possibly fail when the caches are initialized. Yang
5994Yi.
5995
5996Add a function to decode reference object types to strings. Created for
5997improved error messages.
5998
5999Improve object conversion error messages. Better error messages during
6000object
6001conversion from internal to the external ACPI_OBJECT. Used for external
6002calls
6003to AcpiEvaluateObject.
6004
6005Example Code and Data Size: These are the sizes for the OS-independent
6006acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6007debug version of the code includes the debug output trace mechanism and
6008has a
6009much larger code and data size.
6010
6011  Previous Release:
6012    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
6013    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
6014  Current Release:
6015    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
6016    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
6017
60182) iASL Compiler/Disassembler and Tools:
6019
6020Debugger: fix a possible hang when evaluating non-methods. Fixes a
6021problem
6022introduced in version 20080701. If the object being evaluated (via
6023execute
6024command) is not a method, the debugger can hang while trying to obtain
6025non-
6026existent parameters.
6027
6028iASL: relax error for using reserved "_T_x" identifiers. These names can
6029appear in a disassembled ASL file if they were emitted by the original
6030compiler. Instead of issuing an error or warning and forcing the user to
6031manually change these names, issue a remark instead.
6032
6033iASL: error if named object created in while loop. Emit an error if any
6034named
6035object is created within a While loop. If allowed, this code will
6036generate
6037a
6038run-time error on the second iteration of the loop when an attempt is
6039made
6040to
6041create the same named object twice. ACPICA bugzilla 730.
6042
6043iASL: Support absolute pathnames for include files. Add support for
6044absolute
6045pathnames within the Include operator. previously, only relative
6046pathnames
6047were supported.
6048
6049iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
6050Descriptor.
6051The ACPI spec requires one interrupt minimum. BZ 423
6052
6053iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
6054Handles the case for the Interrupt Resource Descriptor where
6055the ResourceSource argument is omitted but ResourceSourceIndex
6056is present. Now leave room for the Index. BZ 426
6057
6058iASL: Prevent error message if CondRefOf target does not exist. Fixes
6059cases
6060where an error message is emitted if the target does not exist. BZ 516
6061
6062iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
6063(get ACPI tables on Windows). This was apparently broken in version
606420070919.
6065
6066AcpiXtract: Handle EOF while extracting data. Correctly handle the case
6067where
6068the EOF happens immediately after the last table in the input file. Print
6069completion message. Previously, no message was displayed in this case.
6070
6071----------------------------------------
607201 July 2008. Summary of changes for version 20080701:
6073
60740) Git source tree / acpica.org
6075
6076Fixed a problem where a git-clone from http would not transfer the entire
6077source tree.
6078
60791) ACPI CA Core Subsystem:
6080
6081Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
6082enable bit. Now performs a read-change-write of the enable register
6083instead
6084of simply writing out the cached enable mask. This will prevent
6085inadvertent
6086enabling of GPEs if a rogue GPE is received during initialization (before
6087GPE
6088handlers are installed.)
6089
6090Implemented a copy for dynamically loaded tables. Previously, dynamically
6091loaded tables were simply mapped - but on some machines this memory is
6092corrupted after suspend. Now copy the table to a local buffer. For the
6093OpRegion case, added checksum verify. Use the table length from the table
6094header, not the region length. For the Buffer case, use the table length
6095also. Dennis Noordsij, Bob Moore. BZ 10734
6096
6097Fixed a problem where the same ACPI table could not be dynamically loaded
6098and
6099unloaded more than once. Without this change, a table cannot be loaded
6100again
6101once it has been loaded/unloaded one time. The current mechanism does not
6102unregister a table upon an unload. During a load, if the same table is
6103found,
6104this no longer returns an exception. BZ 722
6105
6106Fixed a problem where the wrong descriptor length was calculated for the
6107EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
6108EndTag
6109are calculated as 12 bytes long, but the actual length in the internal
6110descriptor is 16 because of the round-up to 8 on the 64-bit build.
6111Reported
6112by Linn Crosetto. BZ 728
6113
6114Fixed a possible memory leak in the Unload operator. The DdbHandle
6115returned
6116by Load() did not have its reference count decremented during unload,
6117leading
6118to a memory leak. Lin Ming. BZ 727
6119
6120Fixed a possible memory leak when deleting thermal/processor objects. Any
6121associated notify handlers (and objects) were not being deleted. Fiodor
6122Suietov. BZ 506
6123
6124Fixed the ordering of the ASCII names in the global mutex table to match
6125the
6126actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
6127only.
6128Vegard Nossum. BZ 726
6129
6130Enhanced the AcpiGetObjectInfo interface to return the number of required
6131arguments if the object is a control method. Added this call to the
6132debugger
6133so the proper number of default arguments are passed to a method. This
6134prevents a warning when executing methods from AcpiExec.
6135
6136Added a check for an invalid handle in AcpiGetObjectInfo. Return
6137AE_BAD_PARAMETER if input handle is invalid. BZ 474
6138
6139Fixed an extraneous warning from exconfig.c on the 64-bit build.
6140
6141Example Code and Data Size: These are the sizes for the OS-independent
6142acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6143debug version of the code includes the debug output trace mechanism and
6144has a
6145much larger code and data size.
6146
6147  Previous Release:
6148    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
6149    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
6150  Current Release:
6151    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
6152    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
6153
61542) iASL Compiler/Disassembler and Tools:
6155
6156iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
6157resource descriptor names.
6158
6159iASL: Detect invalid ASCII characters in input (windows version). Removed
6160the
6161"-CF" flag from the flex compile, enables correct detection of non-ASCII
6162characters in the input. BZ 441
6163
6164iASL: Eliminate warning when result of LoadTable is not used. Eliminate
6165the
6166"result of operation not used" warning when the DDB handle returned from
6167LoadTable is not used. The warning is not needed. BZ 590
6168
6169AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
6170method
6171to
6172pass address of table to the AML. Added option to disable OpRegion
6173simulation
6174to allow creation of an OpRegion with a real address that was passed to
6175_CFG.
6176All of this allows testing of the Load and Unload operators from
6177AcpiExec.
6178
6179Debugger: update tables command for unloaded tables. Handle unloaded
6180tables
6181and use the standard table header output routine.
6182
6183----------------------------------------
618409 June 2008. Summary of changes for version 20080609:
6185
61861) ACPI CA Core Subsystem:
6187
6188Implemented a workaround for reversed _PRT entries. A significant number
6189of
6190BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
6191change dynamically detects and repairs this problem. Provides
6192compatibility
6193with MS ACPI. BZ 6859
6194
6195Simplified the internal ACPI hardware interfaces to eliminate the locking
6196flag parameter from Register Read/Write. Added a new external interface,
6197AcpiGetRegisterUnlocked.
6198
6199Fixed a problem where the invocation of a GPE control method could hang.
6200This
6201was a regression introduced in 20080514. The new method argument count
6202validation mechanism can enter an infinite loop when a GPE method is
6203dispatched. Problem fixed by removing the obsolete code that passed GPE
6204block
6205information to the notify handler via the control method parameter
6206pointer.
6207
6208Fixed a problem where the _SST execution status was incorrectly returned
6209to
6210the caller of AcpiEnterSleepStatePrep. This was a regression introduced
6211in
621220080514. _SST is optional and a NOT_FOUND exception should never be
6213returned. BZ 716
6214
6215Fixed a problem where a deleted object could be accessed from within the
6216AML
6217parser. This was a regression introduced in version 20080123 as a fix for
6218the
6219Unload operator. Lin Ming. BZ 10669
6220
6221Cleaned up the debug operand dump mechanism. Eliminated unnecessary
6222operands
6223and eliminated the use of a negative index in a loop. Operands are now
6224displayed in the correct order, not backwards. This also fixes a
6225regression
6226introduced in 20080514 on 64-bit systems where the elimination of
6227ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
6228715
6229
6230Fixed a possible memory leak in EvPciConfigRegionSetup where the error
6231exit
6232path did not delete a locally allocated structure.
6233
6234Updated definitions for the DMAR and SRAT tables to synchronize with the
6235current specifications. Includes disassembler support.
6236
6237Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
6238loop termination value was used. Loop terminated on iteration early,
6239missing
6240one mutex. Linn Crosetto
6241
6242Example Code and Data Size: These are the sizes for the OS-independent
6243acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6244debug version of the code includes the debug output trace mechanism and
6245has a
6246much larger code and data size.
6247
6248  Previous Release:
6249    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
6250    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
6251  Current Release:
6252    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
6253    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
6254
62552) iASL Compiler/Disassembler and Tools:
6256
6257Disassembler: Implemented support for EisaId() within _CID objects. Now
6258disassemble integer _CID objects back to EisaId invocations, including
6259multiple integers within _CID packages. Includes single-step support for
6260debugger also.
6261
6262Disassembler: Added support for DMAR and SRAT table definition changes.
6263
6264----------------------------------------
626514 May 2008. Summary of changes for version 20080514:
6266
62671) ACPI CA Core Subsystem:
6268
6269Fixed a problem where GPEs were enabled too early during the ACPICA
6270initialization. This could lead to "handler not installed" errors on some
6271machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
6272This
6273ensures that all operation regions and devices throughout the namespace
6274have
6275been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
6276
6277Implemented a change to the enter sleep code. Moved execution of the _GTS
6278method to just before setting sleep enable bit. The execution was moved
6279from
6280AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
6281immediately before the SLP_EN bit is set, as per the ACPI specification.
6282Luming Yu, BZ 1653.
6283
6284Implemented a fix to disable unknown GPEs (2nd version). Now always
6285disable
6286the GPE, even if ACPICA thinks that that it is already disabled. It is
6287possible that the AML or some other code has enabled the GPE unbeknownst
6288to
6289the ACPICA code.
6290
6291Fixed a problem with the Field operator where zero-length fields would
6292return
6293an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
6294ASL
6295field declarations in Field(), BankField(), and IndexField(). BZ 10606.
6296
6297Implemented a fix for the Load operator, now load the table at the
6298namespace
6299root. This reverts a change introduced in version 20071019. The table is
6300now
6301loaded at the namespace root even though this goes against the ACPI
6302specification. This provides compatibility with other ACPI
6303implementations.
6304The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
6305Ming.
6306
6307Fixed a problem where ACPICA would not Load() tables with unusual
6308signatures.
6309Now ignore ACPI table signature for Load() operator. Only "SSDT" is
6310acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
6311Therefore, signature validation is worthless. Apparently MS ACPI accepts
6312such
6313signatures, ACPICA must be compatible. BZ 10454.
6314
6315Fixed a possible negative array index in AcpiUtValidateException. Added
6316NULL
6317fields to the exception string arrays to eliminate a -1 subtraction on
6318the
6319SubStatus field.
6320
6321Updated the debug tracking macros to reduce overall code and data size.
6322Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
6323instead of pointers to static strings. Jan Beulich and Bob Moore.
6324
6325Implemented argument count checking in control method invocation via
6326AcpiEvaluateObject. Now emit an error if too few arguments, warning if
6327too
6328many. This applies only to extern programmatic control method execution,
6329not
6330method-to-method calls within the AML. Lin Ming.
6331
6332Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
6333no
6334longer needed, especially with the removal of 16-bit support. It was
6335replaced
6336mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
6337bit
6338on
633932/64-bit platforms is required.
6340
6341Added the C const qualifier for appropriate string constants -- mostly
6342MODULE_NAME and printf format strings. Jan Beulich.
6343
6344Example Code and Data Size: These are the sizes for the OS-independent
6345acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6346debug version of the code includes the debug output trace mechanism and
6347has a
6348much larger code and data size.
6349
6350  Previous Release:
6351    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
6352    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
6353  Current Release:
6354    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
6355    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
6356
63572) iASL Compiler/Disassembler and Tools:
6358
6359Implemented ACPI table revision ID validation in the disassembler. Zero
6360is
6361always invalid. For DSDTs, the ID controls the interpreter integer width.
63621
6363means 32-bit and this is unusual. 2 or greater is 64-bit.
6364
6365----------------------------------------
636621 March 2008. Summary of changes for version 20080321:
6367
63681) ACPI CA Core Subsystem:
6369
6370Implemented an additional change to the GPE support in order to suppress
6371spurious or stray GPEs. The AcpiEvDisableGpe function will now
6372permanently
6373disable incoming GPEs that are neither enabled nor disabled -- meaning
6374that
6375the GPE is unknown to the system. This should prevent future interrupt
6376floods
6377from that GPE. BZ 6217 (Zhang Rui)
6378
6379Fixed a problem where NULL package elements were not returned to the
6380AcpiEvaluateObject interface correctly. The element was simply ignored
6381instead of returning a NULL ACPI_OBJECT package element, potentially
6382causing
6383a buffer overflow and/or confusing the caller who expected a fixed number
6384of
6385elements. BZ 10132 (Lin Ming, Bob Moore)
6386
6387Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
6388Dword,
6389Qword), Field, BankField, and IndexField operators when invoked from
6390inside
6391an executing control method. In this case, these operators created
6392namespace
6393nodes that were incorrectly left marked as permanent nodes instead of
6394temporary nodes. This could cause a problem if there is race condition
6395between an exiting control method and a running namespace walk. (Reported
6396by
6397Linn Crosetto)
6398
6399Fixed a problem where the CreateField and CreateXXXField operators would
6400incorrectly allow duplicate names (the name of the field) with no
6401exception
6402generated.
6403
6404Implemented several changes for Notify handling. Added support for new
6405Notify
6406values (ACPI 2.0+) and improved the Notify debug output. Notify on
6407PowerResource objects is no longer allowed, as per the ACPI
6408specification.
6409(Bob Moore, Zhang Rui)
6410
6411All Reference Objects returned via the AcpiEvaluateObject interface are
6412now
6413marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
6414for
6415NULL objects - either NULL package elements or unresolved named
6416references.
6417
6418Fixed a problem where an extraneous debug message was produced for
6419package
6420objects (when debugging enabled). The message "Package List length larger
6421than NumElements count" is now produced in the correct case, and is now
6422an
6423error message rather than a debug message. Added a debug message for the
6424opposite case, where NumElements is larger than the Package List (the
6425package
6426will be padded out with NULL elements as per the ACPI spec.)
6427
6428Implemented several improvements for the output of the ASL "Debug" object
6429to
6430clarify and keep all data for a given object on one output line.
6431
6432Fixed two size calculation issues with the variable-length Start
6433Dependent
6434resource descriptor.
6435
6436Example Code and Data Size: These are the sizes for the OS-independent
6437acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6438debug version of the code includes the debug output trace mechanism and
6439has
6440a much larger code and data size.
6441
6442  Previous Release:
6443    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
6444    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
6445  Current Release:
6446    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
6447    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
6448
64492) iASL Compiler/Disassembler and Tools:
6450
6451Fixed a problem with the use of the Switch operator where execution of
6452the
6453containing method by multiple concurrent threads could cause an
6454AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
6455actual Switch opcode, it must be simulated with local named temporary
6456variables and if/else pairs. The solution chosen was to mark any method
6457that
6458uses Switch as Serialized, thus preventing multiple thread entries. BZ
6459469.
6460
6461----------------------------------------
646213 February 2008. Summary of changes for version 20080213:
6463
64641) ACPI CA Core Subsystem:
6465
6466Implemented another MS compatibility design change for GPE/Notify
6467handling.
6468GPEs are now cleared/enabled asynchronously to allow all pending notifies
6469to
6470complete first. It is expected that the OSL will queue the enable request
6471behind all pending notify requests (may require changes to the local host
6472OSL
6473in AcpiOsExecute). Alexey Starikovskiy.
6474
6475Fixed a problem where buffer and package objects passed as arguments to a
6476control method via the external AcpiEvaluateObject interface could cause
6477an
6478AE_AML_INTERNAL exception depending on the order and type of operators
6479executed by the target control method.
6480
6481Fixed a problem where resource descriptor size optimization could cause a
6482problem when a _CRS resource template is passed to a _SRS method. The
6483_SRS
6484resource template must use the same descriptors (with the same size) as
6485returned from _CRS. This change affects the following resource
6486descriptors:
6487IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
64889487)
6489
6490Fixed a problem where a CopyObject to RegionField, BankField, and
6491IndexField
6492objects did not perform an implicit conversion as it should. These types
6493must
6494retain their initial type permanently as per the ACPI specification.
6495However,
6496a CopyObject to all other object types should not perform an implicit
6497conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
6498
6499Fixed a problem with the AcpiGetDevices interface where the mechanism to
6500match device CIDs did not examine the entire list of available CIDs, but
6501instead aborted on the first non-matching CID. Andrew Patterson.
6502
6503Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
6504was
6505inadvertently changed to return a 16-bit value instead of a 32-bit value,
6506truncating the upper dword of a 64-bit value. This macro is only used to
6507display debug output, so no incorrect calculations were made. Also,
6508reimplemented the macro so that a 64-bit shift is not performed by
6509inefficient compilers.
6510
6511Added missing va_end statements that should correspond with each va_start
6512statement.
6513
6514Example Code and Data Size: These are the sizes for the OS-independent
6515acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6516debug version of the code includes the debug output trace mechanism and
6517has
6518a much larger code and data size.
6519
6520  Previous Release:
6521    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
6522    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
6523  Current Release:
6524    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
6525    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
6526
65272) iASL Compiler/Disassembler and Tools:
6528
6529Implemented full disassembler support for the following new ACPI tables:
6530BERT, EINJ, and ERST. Implemented partial disassembler support for the
6531complicated HEST table. These tables support the Windows Hardware Error
6532Architecture (WHEA).
6533
6534----------------------------------------
653523 January 2008. Summary of changes for version 20080123:
6536
65371) ACPI CA Core Subsystem:
6538
6539Added the 2008 copyright to all module headers and signons. This affects
6540virtually every file in the ACPICA core subsystem, the iASL compiler, and
6541the tools/utilities.
6542
6543Fixed a problem with the SizeOf operator when used with Package and
6544Buffer
6545objects. These objects have deferred execution for some arguments, and
6546the
6547execution is now completed before the SizeOf is executed. This problem
6548caused
6549unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
6550BZ
65519558
6552
6553Implemented an enhancement to the interpreter "slack mode". In the
6554absence
6555of
6556an explicit return or an implicitly returned object from the last
6557executed
6558opcode, a control method will now implicitly return an integer of value 0
6559for
6560Microsoft compatibility. (Lin Ming) BZ 392
6561
6562Fixed a problem with the Load operator where an exception was not
6563returned
6564in
6565the case where the table is already loaded. (Lin Ming) BZ 463
6566
6567Implemented support for the use of DDBHandles as an Indexed Reference, as
6568per
6569the ACPI spec. (Lin Ming) BZ 486
6570
6571Implemented support for UserTerm (Method invocation) for the Unload
6572operator
6573as per the ACPI spec. (Lin Ming) BZ 580
6574
6575Fixed a problem with the LoadTable operator where the OemId and
6576OemTableId
6577input strings could cause unexpected failures if they were shorter than
6578the
6579maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
6580
6581Implemented support for UserTerm (Method invocation) for the Unload
6582operator
6583as per the ACPI spec. (Lin Ming) BZ 580
6584
6585Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
6586HEST,
6587IBFT, UEFI, WDAT. Disassembler support is forthcoming.
6588
6589Example Code and Data Size: These are the sizes for the OS-independent
6590acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6591debug version of the code includes the debug output trace mechanism and
6592has
6593a much larger code and data size.
6594
6595  Previous Release:
6596    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
6597    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
6598  Current Release:
6599    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
6600    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
6601
66022) iASL Compiler/Disassembler and Tools:
6603
6604Implemented support in the disassembler for checksum validation on
6605incoming
6606binary DSDTs and SSDTs. If incorrect, a message is displayed within the
6607table
6608header dump at the start of the disassembly.
6609
6610Implemented additional debugging information in the namespace listing
6611file
6612created during compilation. In addition to the namespace hierarchy, the
6613full
6614pathname to each namespace object is displayed.
6615
6616Fixed a problem with the disassembler where invalid ACPI tables could
6617cause
6618faults or infinite loops.
6619
6620Fixed an unexpected parse error when using the optional "parameter types"
6621list in a control method declaration. (Lin Ming) BZ 397
6622
6623Fixed a problem where two External declarations with the same name did
6624not
6625cause an error (Lin Ming) BZ 509
6626
6627Implemented support for full TermArgs (adding Argx, Localx and method
6628invocation) for the ParameterData parameter to the LoadTable operator.
6629(Lin
6630Ming) BZ 583,587
6631
6632----------------------------------------
663319 December 2007. Summary of changes for version 20071219:
6634
66351) ACPI CA Core Subsystem:
6636
6637Implemented full support for deferred execution for the TermArg string
6638arguments for DataTableRegion. This enables forward references and full
6639operand resolution for the three string arguments. Similar to
6640OperationRegion
6641deferred argument execution.) Lin Ming. BZ 430
6642
6643Implemented full argument resolution support for the BankValue argument
6644to
6645BankField. Previously, only constants were supported, now any TermArg may
6646be
6647used. Lin Ming BZ 387, 393
6648
6649Fixed a problem with AcpiGetDevices where the search of a branch of the
6650device tree could be terminated prematurely. In accordance with the ACPI
6651specification, the search down the current branch is terminated if a
6652device
6653is both not present and not functional (instead of just not present.)
6654Yakui
6655Zhao.
6656
6657Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
6658if
6659the underlying AML code changed the GPE enable registers. Now, any
6660unknown
6661incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
6662disabled
6663instead of simply ignored. Rui Zhang.
6664
6665Fixed a problem with Index Fields where the Index register was
6666incorrectly
6667limited to a maximum of 32 bits. Now any size may be used.
6668
6669Fixed a couple memory leaks associated with "implicit return" objects
6670when
6671the AML Interpreter slack mode is enabled. Lin Ming BZ 349
6672
6673Example Code and Data Size: These are the sizes for the OS-independent
6674acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6675debug version of the code includes the debug output trace mechanism and
6676has
6677a much larger code and data size.
6678
6679  Previous Release:
6680    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
6681    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
6682  Current Release:
6683    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
6684    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
6685
6686----------------------------------------
668714 November 2007. Summary of changes for version 20071114:
6688
66891) ACPI CA Core Subsystem:
6690
6691Implemented event counters for each of the Fixed Events, the ACPI SCI
6692(interrupt) itself, and control methods executed. Named
6693AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
6694These
6695should be useful for debugging and statistics.
6696
6697Implemented a new external interface, AcpiGetStatistics, to retrieve the
6698contents of the various event counters. Returns the current values for
6699AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
6700AcpiMethodCount. The interface can be expanded in the future if new
6701counters
6702are added. Device drivers should use this interface rather than access
6703the
6704counters directly.
6705
6706Fixed a problem with the FromBCD and ToBCD operators. With some
6707compilers,
6708the ShortDivide function worked incorrectly, causing problems with the
6709BCD
6710functions with large input values. A truncation from 64-bit to 32-bit
6711inadvertently occurred. Internal BZ 435. Lin Ming
6712
6713Fixed a problem with Index references passed as method arguments.
6714References
6715passed as arguments to control methods were dereferenced immediately
6716(before
6717control was passed to the called method). The references are now
6718correctly
6719passed directly to the called method. BZ 5389. Lin Ming
6720
6721Fixed a problem with CopyObject used in conjunction with the Index
6722operator.
6723The reference was incorrectly dereferenced before the copy. The reference
6724is
6725now correctly copied. BZ 5391. Lin Ming
6726
6727Fixed a problem with Control Method references within Package objects.
6728These
6729references are now correctly generated. This completes the package
6730construction overhaul that began in version 20071019.
6731
6732Example Code and Data Size: These are the sizes for the OS-independent
6733acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6734debug version of the code includes the debug output trace mechanism and
6735has
6736a much larger code and data size.
6737
6738  Previous Release:
6739    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
6740    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
6741  Current Release:
6742    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
6743    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
6744
6745
67462) iASL Compiler/Disassembler and Tools:
6747
6748The AcpiExec utility now installs handlers for all of the predefined
6749Operation Region types. New types supported are: PCI_Config, CMOS, and
6750PCIBARTarget.
6751
6752Fixed a problem with the 64-bit version of AcpiExec where the extended
6753(64-
6754bit) address fields for the DSDT and FACS within the FADT were not being
6755used, causing truncation of the upper 32-bits of these addresses. Lin
6756Ming
6757and Bob Moore
6758
6759----------------------------------------
676019 October 2007. Summary of changes for version 20071019:
6761
67621) ACPI CA Core Subsystem:
6763
6764Fixed a problem with the Alias operator when the target of the alias is a
6765named ASL operator that opens a new scope -- Scope, Device,
6766PowerResource,
6767Processor, and ThermalZone. In these cases, any children of the original
6768operator could not be accessed via the alias, potentially causing
6769unexpected
6770AE_NOT_FOUND exceptions. (BZ 9067)
6771
6772Fixed a problem with the Package operator where all named references were
6773created as object references and left otherwise unresolved. According to
6774the
6775ACPI specification, a Package can only contain Data Objects or references
6776to
6777control methods. The implication is that named references to Data Objects
6778(Integer, Buffer, String, Package, BufferField, Field) should be resolved
6779immediately upon package creation. This is the approach taken with this
6780change. References to all other named objects (Methods, Devices, Scopes,
6781etc.) are all now properly created as reference objects. (BZ 5328)
6782
6783Reverted a change to Notify handling that was introduced in version
678420070508. This version changed the Notify handling from asynchronous to
6785fully synchronous (Device driver Notify handling with respect to the
6786Notify
6787ASL operator). It was found that this change caused more problems than it
6788solved and was removed by most users.
6789
6790Fixed a problem with the Increment and Decrement operators where the type
6791of
6792the target object could be unexpectedly and incorrectly changed. (BZ 353)
6793Lin Ming.
6794
6795Fixed a problem with the Load and LoadTable operators where the table
6796location within the namespace was ignored. Instead, the table was always
6797loaded into the root or current scope. Lin Ming.
6798
6799Fixed a problem with the Load operator when loading a table from a buffer
6800object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
6801
6802Fixed a problem with the Debug object where a store of a DdbHandle
6803reference
6804object to the Debug object could cause a fault.
6805
6806Added a table checksum verification for the Load operator, in the case
6807where
6808the load is from a buffer. (BZ 578).
6809
6810Implemented additional parameter validation for the LoadTable operator.
6811The
6812length of the input strings SignatureString, OemIdString, and OemTableId
6813are
6814now checked for maximum lengths. (BZ 582) Lin Ming.
6815
6816Example Code and Data Size: These are the sizes for the OS-independent
6817acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6818debug version of the code includes the debug output trace mechanism and
6819has
6820a much larger code and data size.
6821
6822  Previous Release:
6823    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
6824    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
6825  Current Release:
6826    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
6827    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
6828
6829
68302) iASL Compiler/Disassembler:
6831
6832Fixed a problem where if a single file was specified and the file did not
6833exist, no error message was emitted. (Introduced with wildcard support in
6834version 20070917.)
6835
6836----------------------------------------
683719 September 2007. Summary of changes for version 20070919:
6838
68391) ACPI CA Core Subsystem:
6840
6841Designed and implemented new external interfaces to install and remove
6842handlers for ACPI table-related events. Current events that are defined
6843are
6844LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
6845they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
6846AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
6847
6848Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
6849(acpi_serialized option on Linux) could cause some systems to hang during
6850initialization. (Bob Moore) BZ 8171
6851
6852Fixed a problem where objects of certain types (Device, ThermalZone,
6853Processor, PowerResource) can be not found if they are declared and
6854referenced from within the same control method (Lin Ming) BZ 341
6855
6856Example Code and Data Size: These are the sizes for the OS-independent
6857acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6858debug version of the code includes the debug output trace mechanism and
6859has
6860a much larger code and data size.
6861
6862  Previous Release:
6863    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
6864    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
6865  Current Release:
6866    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
6867    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
6868
6869
68702) iASL Compiler/Disassembler:
6871
6872Implemented support to allow multiple files to be compiled/disassembled
6873in
6874a
6875single invocation. This includes command line wildcard support for both
6876the
6877Windows and Unix versions of the compiler. This feature simplifies the
6878disassembly and compilation of multiple ACPI tables in a single
6879directory.
6880
6881----------------------------------------
688208 May 2007. Summary of changes for version 20070508:
6883
68841) ACPI CA Core Subsystem:
6885
6886Implemented a Microsoft compatibility design change for the handling of
6887the
6888Notify AML operator. Previously, notify handlers were dispatched and
6889executed completely asynchronously in a deferred thread. The new design
6890still executes the notify handlers in a different thread, but the
6891original
6892thread that executed the Notify() now waits at a synchronization point
6893for
6894the notify handler to complete. Some machines depend on a synchronous
6895Notify
6896operator in order to operate correctly.
6897
6898Implemented support to allow Package objects to be passed as method
6899arguments to the external AcpiEvaluateObject interface. Previously, this
6900would return the AE_NOT_IMPLEMENTED exception. This feature had not been
6901implemented since there were no reserved control methods that required it
6902until recently.
6903
6904Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
6905that
6906contained invalid non-zero values in reserved fields could cause later
6907failures because these fields have meaning in later revisions of the
6908FADT.
6909For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
6910fields
6911are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
6912
6913Fixed a problem where the Global Lock handle was not properly updated if
6914a
6915thread that acquired the Global Lock via executing AML code then
6916attempted
6917to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
6918Joe
6919Liu.
6920
6921Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
6922could be corrupted if the interrupt being removed was at the head of the
6923list. Reported by Linn Crosetto.
6924
6925Example Code and Data Size: These are the sizes for the OS-independent
6926acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6927debug version of the code includes the debug output trace mechanism and
6928has
6929a much larger code and data size.
6930
6931  Previous Release:
6932    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
6933    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
6934  Current Release:
6935    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
6936    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
6937
6938----------------------------------------
693920 March 2007. Summary of changes for version 20070320:
6940
69411) ACPI CA Core Subsystem:
6942
6943Implemented a change to the order of interpretation and evaluation of AML
6944operand objects within the AML interpreter. The interpreter now evaluates
6945operands in the order that they appear in the AML stream (and the
6946corresponding ASL code), instead of in the reverse order (after the
6947entire
6948operand list has been parsed). The previous behavior caused several
6949subtle
6950incompatibilities with the Microsoft AML interpreter as well as being
6951somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
6952
6953Implemented a change to the ACPI Global Lock support. All interfaces to
6954the
6955global lock now allow the same thread to acquire the lock multiple times.
6956This affects the AcpiAcquireGlobalLock external interface to the global
6957lock
6958as well as the internal use of the global lock to support AML fields -- a
6959control method that is holding the global lock can now simultaneously
6960access
6961AML fields that require global lock protection. Previously, in both
6962cases,
6963this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
6964to
6965AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
6966Controller. There is no change to the behavior of the AML Acquire
6967operator,
6968as this can already be used to acquire a mutex multiple times by the same
6969thread. BZ 8066. With assistance from Alexey Starikovskiy.
6970
6971Fixed a problem where invalid objects could be referenced in the AML
6972Interpreter after error conditions. During operand evaluation, ensure
6973that
6974the internal "Return Object" field is cleared on error and only valid
6975pointers are stored there. Caused occasional access to deleted objects
6976that
6977resulted in "large reference count" warning messages. Valery Podrezov.
6978
6979Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
6980on
6981deeply nested control method invocations. BZ 7873, local BZ 487. Valery
6982Podrezov.
6983
6984Fixed an internal problem with the handling of result objects on the
6985interpreter result stack. BZ 7872. Valery Podrezov.
6986
6987Removed obsolete code that handled the case where AML_NAME_OP is the
6988target
6989of a reference (Reference.Opcode). This code was no longer necessary. BZ
69907874. Valery Podrezov.
6991
6992Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
6993was
6994a
6995remnant from the previously discontinued 16-bit support.
6996
6997Example Code and Data Size: These are the sizes for the OS-independent
6998acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
6999debug version of the code includes the debug output trace mechanism and
7000has
7001a much larger code and data size.
7002
7003  Previous Release:
7004    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7005    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7006  Current Release:
7007    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7008    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
7009
7010----------------------------------------
701126 January 2007. Summary of changes for version 20070126:
7012
70131) ACPI CA Core Subsystem:
7014
7015Added the 2007 copyright to all module headers and signons. This affects
7016virtually every file in the ACPICA core subsystem, the iASL compiler, and
7017the utilities.
7018
7019Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
7020during a table load. A bad pointer was passed in the case where the DSDT
7021is
7022overridden, causing a fault in this case.
7023
7024Example Code and Data Size: These are the sizes for the OS-independent
7025acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7026debug version of the code includes the debug output trace mechanism and
7027has
7028a much larger code and data size.
7029
7030  Previous Release:
7031    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7032    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7033  Current Release:
7034    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7035    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7036
7037----------------------------------------
703815 December 2006. Summary of changes for version 20061215:
7039
70401) ACPI CA Core Subsystem:
7041
7042Support for 16-bit ACPICA has been completely removed since it is no
7043longer
7044necessary and it clutters the code. All 16-bit macros, types, and
7045conditional compiles have been removed, cleaning up and simplifying the
7046code
7047across the entire subsystem. DOS support is no longer needed since the
7048bootable Linux firmware kit is now available.
7049
7050The handler for the Global Lock is now removed during AcpiTerminate to
7051enable a clean subsystem restart, via the implementation of the
7052AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
7053HP)
7054
7055Implemented enhancements to the multithreading support within the
7056debugger
7057to enable improved multithreading debugging and evaluation of the
7058subsystem.
7059(Valery Podrezov)
7060
7061Debugger: Enhanced the Statistics/Memory command to emit the total
7062(maximum)
7063memory used during the execution, as well as the maximum memory consumed
7064by
7065each of the various object types. (Valery Podrezov)
7066
7067Example Code and Data Size: These are the sizes for the OS-independent
7068acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7069debug version of the code includes the debug output trace mechanism and
7070has
7071a much larger code and data size.
7072
7073  Previous Release:
7074    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
7075    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
7076  Current Release:
7077    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
7078    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
7079
7080
70812) iASL Compiler/Disassembler and Tools:
7082
7083AcpiExec: Implemented a new option (-m) to display full memory use
7084statistics upon subsystem/program termination. (Valery Podrezov)
7085
7086----------------------------------------
708709 November 2006. Summary of changes for version 20061109:
7088
70891) ACPI CA Core Subsystem:
7090
7091Optimized the Load ASL operator in the case where the source operand is
7092an
7093operation region. Simply map the operation region memory, instead of
7094performing a bytewise read. (Region must be of type SystemMemory, see
7095below.)
7096
7097Fixed the Load ASL operator for the case where the source operand is a
7098region field. A buffer object is also allowed as the source operand. BZ
7099480
7100
7101Fixed a problem where the Load ASL operator allowed the source operand to
7102be
7103an operation region of any type. It is now restricted to regions of type
7104SystemMemory, as per the ACPI specification. BZ 481
7105
7106Additional cleanup and optimizations for the new Table Manager code.
7107
7108AcpiEnable will now fail if all of the required ACPI tables are not
7109loaded
7110(FADT, FACS, DSDT). BZ 477
7111
7112Added #pragma pack(8/4) to acobject.h to ensure that the structures in
7113this
7114header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
7115manually optimized to be aligned and will not work if it is byte-packed.
7116
7117Example Code and Data Size: These are the sizes for the OS-independent
7118acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7119debug version of the code includes the debug output trace mechanism and
7120has
7121a much larger code and data size.
7122
7123  Previous Release:
7124    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
7125    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
7126  Current Release:
7127    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
7128    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
7129
7130
71312) iASL Compiler/Disassembler and Tools:
7132
7133Fixed a problem where the presence of the _OSI predefined control method
7134within complex expressions could cause an internal compiler error.
7135
7136AcpiExec: Implemented full region support for multiple address spaces.
7137SpaceId is now part of the REGION object. BZ 429
7138
7139----------------------------------------
714011 October 2006. Summary of changes for version 20061011:
7141
71421) ACPI CA Core Subsystem:
7143
7144Completed an AML interpreter performance enhancement for control method
7145execution. Previously a 2-pass parse/execution, control methods are now
7146completely parsed and executed in a single pass. This improves overall
7147interpreter performance by ~25%, reduces code size, and reduces CPU stack
7148use. (Valery Podrezov + interpreter changes in version 20051202 that
7149eliminated namespace loading during the pass one parse.)
7150
7151Implemented _CID support for PCI Root Bridge detection. If the _HID does
7152not
7153match the predefined PCI Root Bridge IDs, the _CID list (if present) is
7154now
7155obtained and also checked for an ID match.
7156
7157Implemented additional support for the PCI _ADR execution: upsearch until
7158a
7159device scope is found before executing _ADR. This allows PCI_Config
7160operation regions to be declared locally within control methods
7161underneath
7162PCI device objects.
7163
7164Fixed a problem with a possible race condition between threads executing
7165AcpiWalkNamespace and the AML interpreter. This condition was removed by
7166modifying AcpiWalkNamespace to (by default) ignore all temporary
7167namespace
7168entries created during any concurrent control method execution. An
7169additional namespace race condition is known to exist between
7170AcpiWalkNamespace and the Load/Unload ASL operators and is still under
7171investigation.
7172
7173Restructured the AML ParseLoop function, breaking it into several
7174subfunctions in order to reduce CPU stack use and improve
7175maintainability.
7176(Mikhail Kouzmich)
7177
7178AcpiGetHandle: Fix for parameter validation to detect invalid
7179combinations
7180of prefix handle and pathname. BZ 478
7181
7182Example Code and Data Size: These are the sizes for the OS-independent
7183acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7184debug version of the code includes the debug output trace mechanism and
7185has
7186a much larger code and data size.
7187
7188  Previous Release:
7189    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7190    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
7191  Current Release:
7192    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
7193    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
7194
71952) iASL Compiler/Disassembler and Tools:
7196
7197Ported the -g option (get local ACPI tables) to the new ACPICA Table
7198Manager
7199to restore original behavior.
7200
7201----------------------------------------
720227 September 2006. Summary of changes for version 20060927:
7203
72041) ACPI CA Core Subsystem:
7205
7206Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
7207These functions now use a spinlock for mutual exclusion and the interrupt
7208level indication flag is not needed.
7209
7210Fixed a problem with the Global Lock where the lock could appear to be
7211obtained before it is actually obtained. The global lock semaphore was
7212inadvertently created with one unit instead of zero units. (BZ 464)
7213Fiodor
7214Suietov.
7215
7216Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
7217during
7218a read from a buffer or region field. (BZ 458) Fiodor Suietov.
7219
7220Example Code and Data Size: These are the sizes for the OS-independent
7221acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7222debug version of the code includes the debug output trace mechanism and
7223has
7224a much larger code and data size.
7225
7226  Previous Release:
7227    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7228    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
7229  Current Release:
7230    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7231    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
7232
7233
72342) iASL Compiler/Disassembler and Tools:
7235
7236Fixed a compilation problem with the pre-defined Resource Descriptor
7237field
7238names where an "object does not exist" error could be incorrectly
7239generated
7240if the parent ResourceTemplate pathname places the template within a
7241different namespace scope than the current scope. (BZ 7212)
7242
7243Fixed a problem where the compiler could hang after syntax errors
7244detected
7245in an ElseIf construct. (BZ 453)
7246
7247Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
7248operator. An incorrect output filename was produced when this parameter
7249was
7250a null string (""). Now, the original input filename is used as the AML
7251output filename, with an ".aml" extension.
7252
7253Implemented a generic batch command mode for the AcpiExec utility
7254(execute
7255any AML debugger command) (Valery Podrezov).
7256
7257----------------------------------------
725812 September 2006. Summary of changes for version 20060912:
7259
72601) ACPI CA Core Subsystem:
7261
7262Enhanced the implementation of the "serialized mode" of the interpreter
7263(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
7264specified, instead of creating a serialization semaphore per control
7265method,
7266the interpreter lock is simply no longer released before a blocking
7267operation during control method execution. This effectively makes the AML
7268Interpreter single-threaded. The overhead of a semaphore per-method is
7269eliminated.
7270
7271Fixed a regression where an error was no longer emitted if a control
7272method
7273attempts to create 2 objects of the same name. This once again returns
7274AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
7275that
7276will dynamically serialize the control method to possible prevent future
7277errors. (BZ 440)
7278
7279Integrated a fix for a problem with PCI Express HID detection in the PCI
7280Config Space setup procedure. (BZ 7145)
7281
7282Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
7283AcpiHwInitialize function - the FADT registers are now validated when the
7284table is loaded.
7285
7286Added two new warnings during FADT verification - 1) if the FADT is
7287larger
7288than the largest known FADT version, and 2) if there is a mismatch
7289between
7290a
729132-bit block address and the 64-bit X counterpart (when both are non-
7292zero.)
7293
7294Example Code and Data Size: These are the sizes for the OS-independent
7295acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7296debug version of the code includes the debug output trace mechanism and
7297has
7298a much larger code and data size.
7299
7300  Previous Release:
7301    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
7302    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
7303  Current Release:
7304    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
7305    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
7306
7307
73082) iASL Compiler/Disassembler and Tools:
7309
7310Fixed a problem with the implementation of the Switch() operator where
7311the
7312temporary variable was declared too close to the actual Switch, instead
7313of
7314at method level. This could cause a problem if the Switch() operator is
7315within a while loop, causing an error on the second iteration. (BZ 460)
7316
7317Disassembler - fix for error emitted for unknown type for target of scope
7318operator. Now, ignore it and continue.
7319
7320Disassembly of an FADT now verifies the input FADT and reports any errors
7321found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
7322
7323Disassembly of raw data buffers with byte initialization data now
7324prefixes
7325each output line with the current buffer offset.
7326
7327Disassembly of ASF! table now includes all variable-length data fields at
7328the end of some of the subtables.
7329
7330The disassembler now emits a comment if a buffer appears to be a
7331ResourceTemplate, but cannot be disassembled as such because the EndTag
7332does
7333not appear at the very end of the buffer.
7334
7335AcpiExec - Added the "-t" command line option to enable the serialized
7336mode
7337of the AML interpreter.
7338
7339----------------------------------------
734031 August 2006. Summary of changes for version 20060831:
7341
73421) ACPI CA Core Subsystem:
7343
7344Miscellaneous fixes for the Table Manager:
7345- Correctly initialize internal common FADT for all 64-bit "X" fields
7346- Fixed a couple table mapping issues during table load
7347- Fixed a couple alignment issues for IA64
7348- Initialize input array to zero in AcpiInitializeTables
7349- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
7350AcpiGetTableByIndex
7351
7352Change for GPE support: when a "wake" GPE is received, all wake GPEs are
7353now
7354immediately disabled to prevent the waking GPE from firing again and to
7355prevent other wake GPEs from interrupting the wake process.
7356
7357Added the AcpiGpeCount global that tracks the number of processed GPEs,
7358to
7359be used for debugging systems with a large number of ACPI interrupts.
7360
7361Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
7362both the ACPICA headers and the disassembler.
7363
7364Example Code and Data Size: These are the sizes for the OS-independent
7365acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7366debug version of the code includes the debug output trace mechanism and
7367has
7368a much larger code and data size.
7369
7370  Previous Release:
7371    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
7372    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
7373  Current Release:
7374    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
7375    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
7376
7377
73782) iASL Compiler/Disassembler and Tools:
7379
7380Disassembler support for the DMAR ACPI table.
7381
7382----------------------------------------
738323 August 2006. Summary of changes for version 20060823:
7384
73851) ACPI CA Core Subsystem:
7386
7387The Table Manager component has been completely redesigned and
7388reimplemented. The new design is much simpler, and reduces the overall
7389code
7390and data size of the kernel-resident ACPICA by approximately 5%. Also, it
7391is
7392now possible to obtain the ACPI tables very early during kernel
7393initialization, even before dynamic memory management is initialized.
7394(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
7395
7396Obsolete ACPICA interfaces:
7397
7398- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
7399init
7400time).
7401- AcpiLoadTable: Not needed.
7402- AcpiUnloadTable: Not needed.
7403
7404New ACPICA interfaces:
7405
7406- AcpiInitializeTables: Must be called before the table manager can be
7407used.
7408- AcpiReallocateRootTable: Used to transfer the root table to dynamically
7409allocated memory after it becomes available.
7410- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
7411tables
7412in the RSDT/XSDT.
7413
7414Other ACPICA changes:
7415
7416- AcpiGetTableHeader returns the actual mapped table header, not a copy.
7417Use
7418AcpiOsUnmapMemory to free this mapping.
7419- AcpiGetTable returns the actual mapped table. The mapping is managed
7420internally and must not be deleted by the caller. Use of this interface
7421causes no additional dynamic memory allocation.
7422- AcpiFindRootPointer: Support for physical addressing has been
7423eliminated,
7424it appeared to be unused.
7425- The interface to AcpiOsMapMemory has changed to be consistent with the
7426other allocation interfaces.
7427- The interface to AcpiOsGetRootPointer has changed to eliminate
7428unnecessary
7429parameters.
7430- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
743164-
7432bit platforms. Was previously 64 bits on all platforms.
7433- The interface to the ACPI Global Lock acquire/release macros have
7434changed
7435slightly since ACPICA no longer keeps a local copy of the FACS with a
7436constructed pointer to the actual global lock.
7437
7438Porting to the new table manager:
7439
7440- AcpiInitializeTables: Must be called once, and can be called anytime
7441during the OS initialization process. It allows the host to specify an
7442area
7443of memory to be used to store the internal version of the RSDT/XSDT (root
7444table). This allows the host to access ACPI tables before memory
7445management
7446is initialized and running.
7447- AcpiReallocateRootTable: Can be called after memory management is
7448running
7449to copy the root table to a dynamically allocated array, freeing up the
7450scratch memory specified in the call to AcpiInitializeTables.
7451- AcpiSubsystemInitialize: This existing interface is independent of the
7452Table Manager, and does not have to be called before the Table Manager
7453can
7454be used, it only must be called before the rest of ACPICA can be used.
7455- ACPI Tables: Some changes have been made to the names and structure of
7456the
7457actbl.h and actbl1.h header files and may require changes to existing
7458code.
7459For example, bitfields have been completely removed because of their lack
7460of
7461portability across C compilers.
7462- Update interfaces to the Global Lock acquire/release macros if local
7463versions are used. (see acwin.h)
7464
7465Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
7466
7467New files: tbfind.c
7468
7469Example Code and Data Size: These are the sizes for the OS-independent
7470acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7471debug version of the code includes the debug output trace mechanism and
7472has
7473a much larger code and data size.
7474
7475  Previous Release:
7476    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7477    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7478  Current Release:
7479    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
7480    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
7481
7482
74832) iASL Compiler/Disassembler and Tools:
7484
7485No changes for this release.
7486
7487----------------------------------------
748821 July 2006. Summary of changes for version 20060721:
7489
74901) ACPI CA Core Subsystem:
7491
7492The full source code for the ASL test suite used to validate the iASL
7493compiler and the ACPICA core subsystem is being released with the ACPICA
7494source for the first time. The source is contained in a separate package
7495and
7496consists of over 1100 files that exercise all ASL/AML operators. The
7497package
7498should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
7499Fiodor
7500Suietov)
7501
7502Completed a new design and implementation for support of the ACPI Global
7503Lock. On the OS side, the global lock is now treated as a standard AML
7504mutex. Previously, multiple OS threads could "acquire" the global lock
7505simultaneously. However, this could cause the BIOS to be starved out of
7506the
7507lock - especially in cases such as the Embedded Controller driver where
7508there is a tight coupling between the OS and the BIOS.
7509
7510Implemented an optimization for the ACPI Global Lock interrupt mechanism.
7511The Global Lock interrupt handler no longer queues the execution of a
7512separate thread to signal the global lock semaphore. Instead, the
7513semaphore
7514is signaled directly from the interrupt handler.
7515
7516Implemented support within the AML interpreter for package objects that
7517contain a larger AML length (package list length) than the package
7518element
7519count. In this case, the length of the package is truncated to match the
7520package element count. Some BIOS code apparently modifies the package
7521length
7522on the fly, and this change supports this behavior. Provides
7523compatibility
7524with the MS AML interpreter. (With assistance from Fiodor Suietov)
7525
7526Implemented a temporary fix for the BankValue parameter of a Bank Field
7527to
7528support all constant values, now including the Zero and One opcodes.
7529Evaluation of this parameter must eventually be converted to a full
7530TermArg
7531evaluation. A not-implemented error is now returned (temporarily) for
7532non-
7533constant values for this parameter.
7534
7535Fixed problem reports (Fiodor Suietov) integrated:
7536- Fix for premature object deletion after CopyObject on Operation Region
7537(BZ
7538350)
7539
7540Example Code and Data Size: These are the sizes for the OS-independent
7541acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7542debug version of the code includes the debug output trace mechanism and
7543has
7544a much larger code and data size.
7545
7546  Previous Release:
7547    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
7548    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
7549  Current Release:
7550    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7551    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7552
7553
75542) iASL Compiler/Disassembler and Tools:
7555
7556No changes for this release.
7557
7558----------------------------------------
755907 July 2006. Summary of changes for version 20060707:
7560
75611) ACPI CA Core Subsystem:
7562
7563Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
7564that do not allow the initialization of address pointers within packed
7565structures - even though the hardware itself may support misaligned
7566transfers. Some of the debug data structures are packed by default to
7567minimize size.
7568
7569Added an error message for the case where AcpiOsGetThreadId() returns
7570zero.
7571A non-zero value is required by the core ACPICA code to ensure the proper
7572operation of AML mutexes and recursive control methods.
7573
7574The DSDT is now the only ACPI table that determines whether the AML
7575interpreter is in 32-bit or 64-bit mode. Not really a functional change,
7576but
7577the hooks for per-table 32/64 switching have been removed from the code.
7578A
7579clarification to the ACPI specification is forthcoming in ACPI 3.0B.
7580
7581Fixed a possible leak of an OwnerID in the error path of
7582AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
7583deletion to a single place in AcpiTbUninstallTable to correct possible
7584leaks
7585when using the AcpiTbDeleteTablesByType interface (with assistance from
7586Lance Ortiz.)
7587
7588Fixed a problem with Serialized control methods where the semaphore
7589associated with the method could be over-signaled after multiple method
7590invocations.
7591
7592Fixed two issues with the locking of the internal namespace data
7593structure.
7594Both the Unload() operator and AcpiUnloadTable interface now lock the
7595namespace during the namespace deletion associated with the table unload
7596(with assistance from Linn Crosetto.)
7597
7598Fixed problem reports (Valery Podrezov) integrated:
7599- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
7600
7601Fixed problem reports (Fiodor Suietov) integrated:
7602- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
7603- On Address Space handler deletion, needless deactivation call (BZ 374)
7604- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
7605375)
7606- Possible memory leak, Notify sub-objects of Processor, Power,
7607ThermalZone
7608(BZ 376)
7609- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
7610- Minimum Length of RSDT should be validated (BZ 379)
7611- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
7612Handler (BZ (380)
7613- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
7614loaded
7615(BZ 381)
7616
7617Example Code and Data Size: These are the sizes for the OS-independent
7618acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7619debug version of the code includes the debug output trace mechanism and
7620has
7621a much larger code and data size.
7622
7623  Previous Release:
7624    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
7625    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
7626  Current Release:
7627    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
7628    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
7629
7630
76312) iASL Compiler/Disassembler and Tools:
7632
7633Fixed problem reports:
7634Compiler segfault when ASL contains a long (>1024) String declaration (BZ
7635436)
7636
7637----------------------------------------
763823 June 2006. Summary of changes for version 20060623:
7639
76401) ACPI CA Core Subsystem:
7641
7642Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
7643allows the type to be customized to the host OS for improved efficiency
7644(since a spinlock is usually a very small object.)
7645
7646Implemented support for "ignored" bits in the ACPI registers. According
7647to
7648the ACPI specification, these bits should be preserved when writing the
7649registers via a read/modify/write cycle. There are 3 bits preserved in
7650this
7651manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
7652
7653Implemented the initial deployment of new OSL mutex interfaces. Since
7654some
7655host operating systems have separate mutex and semaphore objects, this
7656feature was requested. The base code now uses mutexes (and the new mutex
7657interfaces) wherever a binary semaphore was used previously. However, for
7658the current release, the mutex interfaces are defined as macros to map
7659them
7660to the existing semaphore interfaces. Therefore, no OSL changes are
7661required
7662at this time. (See acpiosxf.h)
7663
7664Fixed several problems with the support for the control method SyncLevel
7665parameter. The SyncLevel now works according to the ACPI specification
7666and
7667in concert with the Mutex SyncLevel parameter, since the current
7668SyncLevel
7669is a property of the executing thread. Mutual exclusion for control
7670methods
7671is now implemented with a mutex instead of a semaphore.
7672
7673Fixed three instances of the use of the C shift operator in the bitfield
7674support code (exfldio.c) to avoid the use of a shift value larger than
7675the
7676target data width. The behavior of C compilers is undefined in this case
7677and
7678can cause unpredictable results, and therefore the case must be detected
7679and
7680avoided. (Fiodor Suietov)
7681
7682Added an info message whenever an SSDT or OEM table is loaded dynamically
7683via the Load() or LoadTable() ASL operators. This should improve
7684debugging
7685capability since it will show exactly what tables have been loaded
7686(beyond
7687the tables present in the RSDT/XSDT.)
7688
7689Example Code and Data Size: These are the sizes for the OS-independent
7690acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7691debug version of the code includes the debug output trace mechanism and
7692has
7693a much larger code and data size.
7694
7695  Previous Release:
7696    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
7697    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
7698  Current Release:
7699    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
7700    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
7701
7702
77032) iASL Compiler/Disassembler and Tools:
7704
7705No changes for this release.
7706
7707----------------------------------------
770808 June 2006. Summary of changes for version 20060608:
7709
77101) ACPI CA Core Subsystem:
7711
7712Converted the locking mutex used for the ACPI hardware to a spinlock.
7713This
7714change should eliminate all problems caused by attempting to acquire a
7715semaphore at interrupt level, and it means that all ACPICA external
7716interfaces that directly access the ACPI hardware can be safely called
7717from
7718interrupt level. OSL code that implements the semaphore interfaces should
7719be
7720able to eliminate any workarounds for being called at interrupt level.
7721
7722Fixed a regression introduced in 20060526 where the ACPI device
7723initialization could be prematurely aborted with an AE_NOT_FOUND if a
7724device
7725did not have an optional _INI method.
7726
7727Fixed an IndexField issue where a write to the Data Register should be
7728limited in size to the AccessSize (width) of the IndexField itself. (BZ
7729433,
7730Fiodor Suietov)
7731
7732Fixed problem reports (Valery Podrezov) integrated:
7733- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
7734
7735Fixed problem reports (Fiodor Suietov) integrated:
7736- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
7737
7738Removed four global mutexes that were obsolete and were no longer being
7739used.
7740
7741Example Code and Data Size: These are the sizes for the OS-independent
7742acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7743debug version of the code includes the debug output trace mechanism and
7744has
7745a much larger code and data size.
7746
7747  Previous Release:
7748    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
7749    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
7750  Current Release:
7751    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
7752    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
7753
7754
77552) iASL Compiler/Disassembler and Tools:
7756
7757Fixed a fault when using -g option (get tables from registry) on Windows
7758machines.
7759
7760Fixed problem reports integrated:
7761- Generate error if CreateField NumBits parameter is zero. (BZ 405)
7762- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
7763Suietov)
7764- Global table revision override (-r) is ignored (BZ 413)
7765
7766----------------------------------------
776726 May 2006. Summary of changes for version 20060526:
7768
77691) ACPI CA Core Subsystem:
7770
7771Restructured, flattened, and simplified the internal interfaces for
7772namespace object evaluation - resulting in smaller code, less CPU stack
7773use,
7774and fewer interfaces. (With assistance from Mikhail Kouzmich)
7775
7776Fixed a problem with the CopyObject operator where the first parameter
7777was
7778not typed correctly for the parser, interpreter, compiler, and
7779disassembler.
7780Caused various errors and unexpected behavior.
7781
7782Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
7783produced incorrect results with some C compilers. Since the behavior of C
7784compilers when the shift value is larger than the datatype width is
7785apparently not well defined, the interpreter now detects this condition
7786and
7787simply returns zero as expected in all such cases. (BZ 395)
7788
7789Fixed problem reports (Valery Podrezov) integrated:
7790- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
7791- Allow interpreter to handle nested method declarations (BZ 5361)
7792
7793Fixed problem reports (Fiodor Suietov) integrated:
7794- AcpiTerminate doesn't free debug memory allocation list objects (BZ
7795355)
7796- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
7797356)
7798- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
7799- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
7800- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
7801- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
7802- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
7803- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
7804- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
7805365)
7806- Status of the Global Initialization Handler call not used (BZ 366)
7807- Incorrect object parameter to Global Initialization Handler (BZ 367)
7808
7809Example Code and Data Size: These are the sizes for the OS-independent
7810acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7811debug version of the code includes the debug output trace mechanism and
7812has
7813a much larger code and data size.
7814
7815  Previous Release:
7816    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
7817    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
7818  Current Release:
7819    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
7820    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
7821
7822
78232) iASL Compiler/Disassembler and Tools:
7824
7825Modified the parser to allow the names IO, DMA, and IRQ to be used as
7826namespace identifiers with no collision with existing resource descriptor
7827macro names. This provides compatibility with other ASL compilers and is
7828most useful for disassembly/recompilation of existing tables without
7829parse
7830errors. (With assistance from Thomas Renninger)
7831
7832Disassembler: fixed an incorrect disassembly problem with the
7833DataTableRegion and CopyObject operators. Fixed a possible fault during
7834disassembly of some Alias operators.
7835
7836----------------------------------------
783712 May 2006. Summary of changes for version 20060512:
7838
78391) ACPI CA Core Subsystem:
7840
7841Replaced the AcpiOsQueueForExecution interface with a new interface named
7842AcpiOsExecute. The major difference is that the new interface does not
7843have
7844a Priority parameter, this appeared to be useless and has been replaced
7845by
7846a
7847Type parameter. The Type tells the host what type of execution is being
7848requested, such as global lock handler, notify handler, GPE handler, etc.
7849This allows the host to queue and execute the request as appropriate for
7850the
7851request type, possibly using different work queues and different
7852priorities
7853for the various request types. This enables fixes for multithreading
7854deadlock problems such as BZ #5534, and will require changes to all
7855existing
7856OS interface layers. (Alexey Starikovskiy and Bob Moore)
7857
7858Fixed a possible memory leak associated with the support for the so-
7859called
7860"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
7861Suietov)
7862
7863Fixed a problem with the Load() operator where a table load from an
7864operation region could overwrite an internal table buffer by up to 7
7865bytes
7866and cause alignment faults on IPF systems. (With assistance from Luming
7867Yu)
7868
7869Example Code and Data Size: These are the sizes for the OS-independent
7870acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7871debug version of the code includes the debug output trace mechanism and
7872has
7873a much larger code and data size.
7874
7875  Previous Release:
7876    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
7877    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
7878  Current Release:
7879    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
7880    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
7881
7882
7883
78842) iASL Compiler/Disassembler and Tools:
7885
7886Disassembler: Implemented support to cross reference the internal
7887namespace
7888and automatically generate ASL External() statements for symbols not
7889defined
7890within the current table being disassembled. This will simplify the
7891disassembly and recompilation of interdependent tables such as SSDTs
7892since
7893these statements will no longer have to be added manually.
7894
7895Disassembler: Implemented experimental support to automatically detect
7896invocations of external control methods and generate appropriate
7897External()
7898statements. This is problematic because the AML cannot be correctly
7899parsed
7900until the number of arguments for each control method is known.
7901Currently,
7902standalone method invocations and invocations as the source operand of a
7903Store() statement are supported.
7904
7905Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
7906LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
7907LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
7908more readable and likely closer to the original ASL source.
7909
7910----------------------------------------
791121 April 2006. Summary of changes for version 20060421:
7912
79131) ACPI CA Core Subsystem:
7914
7915Removed a device initialization optimization introduced in 20051216 where
7916the _STA method was not run unless an _INI was also present for the same
7917device. This optimization could cause problems because it could allow
7918_INI
7919methods to be run within a not-present device subtree. (If a not-present
7920device had no _INI, _STA would not be run, the not-present status would
7921not
7922be discovered, and the children of the device would be incorrectly
7923traversed.)
7924
7925Implemented a new _STA optimization where namespace subtrees that do not
7926contain _INI are identified and ignored during device initialization.
7927Selectively running _STA can significantly improve boot time on large
7928machines (with assistance from Len Brown.)
7929
7930Implemented support for the device initialization case where the returned
7931_STA flags indicate a device not-present but functioning. In this case,
7932_INI
7933is not run, but the device children are examined for presence, as per the
7934ACPI specification.
7935
7936Implemented an additional change to the IndexField support in order to
7937conform to MS behavior. The value written to the Index Register is not
7938simply a byte offset, it is a byte offset in units of the access width of
7939the parent Index Field. (Fiodor Suietov)
7940
7941Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
7942interface is called during the creation of all AML operation regions, and
7943allows the host OS to exert control over what addresses it will allow the
7944AML code to access. Operation Regions whose addresses are disallowed will
7945cause a runtime exception when they are actually accessed (will not
7946affect
7947or abort table loading.) See oswinxf or osunixxf for an example
7948implementation.
7949
7950Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
7951interface allows the host OS to match the various "optional"
7952interface/behavior strings for the _OSI predefined control method as
7953appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
7954for an example implementation.
7955
7956Restructured and corrected various problems in the exception handling
7957code
7958paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
7959(with assistance from Takayoshi Kochi.)
7960
7961Modified the Linux source converter to ignore quoted string literals
7962while
7963converting identifiers from mixed to lower case. This will correct
7964problems
7965with the disassembler and other areas where such strings must not be
7966modified.
7967
7968The ACPI_FUNCTION_* macros no longer require quotes around the function
7969name. This allows the Linux source converter to convert the names, now
7970that
7971the converter ignores quoted strings.
7972
7973Example Code and Data Size: These are the sizes for the OS-independent
7974acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7975debug version of the code includes the debug output trace mechanism and
7976has
7977a much larger code and data size.
7978
7979  Previous Release:
7980
7981    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
7982    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
7983  Current Release:
7984    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
7985    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
7986
7987
79882) iASL Compiler/Disassembler and Tools:
7989
7990Implemented 3 new warnings for iASL, and implemented multiple warning
7991levels
7992(w2 flag).
7993
79941) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
7995not
7996WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
7997check for the possible timeout, a warning is issued.
7998
79992) Useless operators: If an ASL operator does not specify an optional
8000target
8001operand and it also does not use the function return value from the
8002operator, a warning is issued since the operator effectively does
8003nothing.
8004
80053) Unreferenced objects: If a namespace object is created, but never
8006referenced, a warning is issued. This is a warning level 2 since there
8007are
8008cases where this is ok, such as when a secondary table is loaded that
8009uses
8010the unreferenced objects. Even so, care is taken to only flag objects
8011that
8012don't look like they will ever be used. For example, the reserved methods
8013(starting with an underscore) are usually not referenced because it is
8014expected that the OS will invoke them.
8015
8016----------------------------------------
801731 March 2006. Summary of changes for version 20060331:
8018
80191) ACPI CA Core Subsystem:
8020
8021Implemented header file support for the following additional ACPI tables:
8022ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
8023support,
8024all current and known ACPI tables are now defined in the ACPICA headers
8025and
8026are available for use by device drivers and other software.
8027
8028Implemented support to allow tables that contain ACPI names with invalid
8029characters to be loaded. Previously, this would cause the table load to
8030fail, but since there are several known cases of such tables on existing
8031machines, this change was made to enable ACPI support for them. Also,
8032this
8033matches the behavior of the Microsoft ACPI implementation.
8034
8035Fixed a couple regressions introduced during the memory optimization in
8036the
803720060317 release. The namespace node definition required additional
8038reorganization and an internal datatype that had been changed to 8-bit
8039was
8040restored to 32-bit. (Valery Podrezov)
8041
8042Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
8043could be passed through to AcpiOsReleaseObject which is unexpected. Such
8044null pointers are now trapped and ignored, matching the behavior of the
8045previous implementation before the deployment of AcpiOsReleaseObject.
8046(Valery Podrezov, Fiodor Suietov)
8047
8048Fixed a memory mapping leak during the deletion of a SystemMemory
8049operation
8050region where a cached memory mapping was not deleted. This became a
8051noticeable problem for operation regions that are defined within
8052frequently
8053used control methods. (Dana Meyers)
8054
8055Reorganized the ACPI table header files into two main files: one for the
8056ACPI tables consumed by the ACPICA core, and another for the
8057miscellaneous
8058ACPI tables that are consumed by the drivers and other software. The
8059various
8060FADT definitions were merged into one common section and three different
8061tables (ACPI 1.0, 1.0+, and 2.0)
8062
8063Example Code and Data Size: These are the sizes for the OS-independent
8064acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8065debug version of the code includes the debug output trace mechanism and
8066has
8067a much larger code and data size.
8068
8069  Previous Release:
8070    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
8071    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
8072  Current Release:
8073    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
8074    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
8075
8076
80772) iASL Compiler/Disassembler and Tools:
8078
8079Disassembler: Implemented support to decode and format all non-AML ACPI
8080tables (tables other than DSDTs and SSDTs.) This includes the new tables
8081added to the ACPICA headers, therefore all current and known ACPI tables
8082are
8083supported.
8084
8085Disassembler: The change to allow ACPI names with invalid characters also
8086enables the disassembly of such tables. Invalid characters within names
8087are
8088changed to '*' to make the name printable; the iASL compiler will still
8089generate an error for such names, however, since this is an invalid ACPI
8090character.
8091
8092Implemented an option for AcpiXtract (-a) to extract all tables found in
8093the
8094input file. The default invocation extracts only the DSDTs and SSDTs.
8095
8096Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
8097makefile for the AcpiXtract utility.
8098
8099----------------------------------------
810017 March 2006. Summary of changes for version 20060317:
8101
81021) ACPI CA Core Subsystem:
8103
8104Implemented the use of a cache object for all internal namespace nodes.
8105Since there are about 1000 static nodes in a typical system, this will
8106decrease memory use for cache implementations that minimize per-
8107allocation
8108overhead (such as a slab allocator.)
8109
8110Removed the reference count mechanism for internal namespace nodes, since
8111it
8112was deemed unnecessary. This reduces the size of each namespace node by
8113about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
8114case,
8115and 32 bytes for the 64-bit case.
8116
8117Optimized several internal data structures to reduce object size on 64-
8118bit
8119platforms by packing data within the 64-bit alignment. This includes the
8120frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
8121instances corresponding to the namespace objects.
8122
8123Added two new strings for the predefined _OSI method: "Windows 2001.1
8124SP1"
8125and "Windows 2006".
8126
8127Split the allocation tracking mechanism out to a separate file, from
8128utalloc.c to uttrack.c. This mechanism appears to be only useful for
8129application-level code. Kernels may wish to not include uttrack.c in
8130distributions.
8131
8132Removed all remnants of the obsolete ACPI_REPORT_* macros and the
8133associated
8134code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
8135macros.)
8136
8137Code and Data Size: These are the sizes for the acpica.lib produced by
8138the
8139Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
8140ACPI
8141driver or OSPM code. The debug version of the code includes the debug
8142output
8143trace mechanism and has a much larger code and data size. Note that these
8144values will vary depending on the efficiency of the compiler and the
8145compiler options used during generation.
8146
8147  Previous Release:
8148    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8149    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
8150  Current Release:
8151    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
8152    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
8153
8154
81552) iASL Compiler/Disassembler and Tools:
8156
8157Implemented an ANSI C version of the acpixtract utility. This version
8158will
8159automatically extract the DSDT and all SSDTs from the input acpidump text
8160file and dump the binary output to separate files. It can also display a
8161summary of the input file including the headers for each table found and
8162will extract any single ACPI table, with any signature. (See
8163source/tools/acpixtract)
8164
8165----------------------------------------
816610 March 2006. Summary of changes for version 20060310:
8167
81681) ACPI CA Core Subsystem:
8169
8170Tagged all external interfaces to the subsystem with the new
8171ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
8172assist
8173kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
8174macro. The default definition is NULL.
8175
8176Added the ACPI_THREAD_ID type for the return value from
8177AcpiOsGetThreadId.
8178This allows the host to define this as necessary to simplify kernel
8179integration. The default definition is ACPI_NATIVE_UINT.
8180
8181Fixed two interpreter problems related to error processing, the deletion
8182of
8183objects, and placing invalid pointers onto the internal operator result
8184stack. BZ 6028, 6151 (Valery Podrezov)
8185
8186Increased the reference count threshold where a warning is emitted for
8187large
8188reference counts in order to eliminate unnecessary warnings on systems
8189with
8190large namespaces (especially 64-bit.) Increased the value from 0x400 to
81910x800.
8192
8193Due to universal disagreement as to the meaning of the 'c' in the
8194calloc()
8195function, the ACPI_MEM_CALLOCATE macro has been renamed to
8196ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
8197ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
8198ACPI_FREE.
8199
8200Code and Data Size: These are the sizes for the acpica.lib produced by
8201the
8202Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
8203ACPI
8204driver or OSPM code. The debug version of the code includes the debug
8205output
8206trace mechanism and has a much larger code and data size. Note that these
8207values will vary depending on the efficiency of the compiler and the
8208compiler options used during generation.
8209
8210  Previous Release:
8211    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
8212    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
8213  Current Release:
8214    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8215    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
8216
8217
82182) iASL Compiler/Disassembler:
8219
8220Disassembler: implemented support for symbolic resource descriptor
8221references. If a CreateXxxxField operator references a fixed offset
8222within
8223a
8224resource descriptor, a name is assigned to the descriptor and the offset
8225is
8226translated to the appropriate resource tag and pathname. The addition of
8227this support brings the disassembled code very close to the original ASL
8228source code and helps eliminate run-time errors when the disassembled
8229code
8230is modified (and recompiled) in such a way as to invalidate the original
8231fixed offsets.
8232
8233Implemented support for a Descriptor Name as the last parameter to the
8234ASL
8235Register() macro. This parameter was inadvertently left out of the ACPI
8236specification, and will be added for ACPI 3.0b.
8237
8238Fixed a problem where the use of the "_OSI" string (versus the full path
8239"\_OSI") caused an internal compiler error. ("No back ptr to op")
8240
8241Fixed a problem with the error message that occurs when an invalid string
8242is
8243used for a _HID object (such as one with an embedded asterisk:
8244"*PNP010A".)
8245The correct message is now displayed.
8246
8247----------------------------------------
824817 February 2006. Summary of changes for version 20060217:
8249
82501) ACPI CA Core Subsystem:
8251
8252Implemented a change to the IndexField support to match the behavior of
8253the
8254Microsoft AML interpreter. The value written to the Index register is now
8255a
8256byte offset, no longer an index based upon the width of the Data
8257register.
8258This should fix IndexField problems seen on some machines where the Data
8259register is not exactly one byte wide. The ACPI specification will be
8260clarified on this point.
8261
8262Fixed a problem where several resource descriptor types could overrun the
8263internal descriptor buffer due to size miscalculation: VendorShort,
8264VendorLong, and Interrupt. This was noticed on IA64 machines, but could
8265affect all platforms.
8266
8267Fixed a problem where individual resource descriptors were misaligned
8268within
8269the internal buffer, causing alignment faults on IA64 platforms.
8270
8271Code and Data Size: These are the sizes for the acpica.lib produced by
8272the
8273Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
8274ACPI
8275driver or OSPM code. The debug version of the code includes the debug
8276output
8277trace mechanism and has a much larger code and data size. Note that these
8278values will vary depending on the efficiency of the compiler and the
8279compiler options used during generation.
8280
8281  Previous Release:
8282    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8283    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
8284  Current Release:
8285    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
8286    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
8287
8288
82892) iASL Compiler/Disassembler:
8290
8291Implemented support for new reserved names: _WDG and _WED are Microsoft
8292extensions for Windows Instrumentation Management, _TDL is a new ACPI-
8293defined method (Throttling Depth Limit.)
8294
8295Fixed a problem where a zero-length VendorShort or VendorLong resource
8296descriptor was incorrectly emitted as a descriptor of length one.
8297
8298----------------------------------------
829910 February 2006. Summary of changes for version 20060210:
8300
83011) ACPI CA Core Subsystem:
8302
8303Removed a couple of extraneous ACPI_ERROR messages that appeared during
8304normal execution. These became apparent after the conversion from
8305ACPI_DEBUG_PRINT.
8306
8307Fixed a problem where the CreateField operator could hang if the BitIndex
8308or
8309NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
8310
8311Fixed a problem where a DeRefOf operation on a buffer object incorrectly
8312failed with an exception. This also fixes a couple of related RefOf and
8313DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
8314
8315Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
8316of
8317AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
8318BZ
83195480)
8320
8321Implemented a memory cleanup at the end of the execution of each
8322iteration
8323of an AML While() loop, preventing the accumulation of outstanding
8324objects.
8325(Valery Podrezov, BZ 5427)
8326
8327Eliminated a chunk of duplicate code in the object resolution code.
8328(Valery
8329Podrezov, BZ 5336)
8330
8331Fixed several warnings during the 64-bit code generation.
8332
8333The AcpiSrc source code conversion tool now inserts one line of
8334whitespace
8335after an if() statement that is followed immediately by a comment,
8336improving
8337readability of the Linux code.
8338
8339Code and Data Size: The current and previous library sizes for the core
8340subsystem are shown below. These are the code and data sizes for the
8341acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8342These
8343values do not include any ACPI driver or OSPM code. The debug version of
8344the
8345code includes the debug output trace mechanism and has a much larger code
8346and data size. Note that these values will vary depending on the
8347efficiency
8348of the compiler and the compiler options used during generation.
8349
8350  Previous Release:
8351    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
8352    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
8353  Current Release:
8354    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
8355    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
8356
8357
83582) iASL Compiler/Disassembler:
8359
8360Fixed a problem with the disassembly of a BankField operator with a
8361complex
8362expression for the BankValue parameter.
8363
8364----------------------------------------
836527 January 2006. Summary of changes for version 20060127:
8366
83671) ACPI CA Core Subsystem:
8368
8369Implemented support in the Resource Manager to allow unresolved
8370namestring
8371references within resource package objects for the _PRT method. This
8372support
8373is in addition to the previously implemented unresolved reference support
8374within the AML parser. If the interpreter slack mode is enabled, these
8375unresolved references will be passed through to the caller as a NULL
8376package
8377entry.
8378
8379Implemented and deployed new macros and functions for error and warning
8380messages across the subsystem. These macros are simpler and generate less
8381code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
8382ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
8383macros remain defined to allow ACPI drivers time to migrate to the new
8384macros.
8385
8386Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
8387the
8388Acquire/Release Lock OSL interfaces.
8389
8390Fixed a problem where Alias ASL operators are sometimes not correctly
8391resolved, in both the interpreter and the iASL compiler.
8392
8393Fixed several problems with the implementation of the
8394ConcatenateResTemplate
8395ASL operator. As per the ACPI specification, zero length buffers are now
8396treated as a single EndTag. One-length buffers always cause a fatal
8397exception. Non-zero length buffers that do not end with a full 2-byte
8398EndTag
8399cause a fatal exception.
8400
8401Fixed a possible structure overwrite in the AcpiGetObjectInfo external
8402interface. (With assistance from Thomas Renninger)
8403
8404Code and Data Size: The current and previous library sizes for the core
8405subsystem are shown below. These are the code and data sizes for the
8406acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8407These
8408values do not include any ACPI driver or OSPM code. The debug version of
8409the
8410code includes the debug output trace mechanism and has a much larger code
8411and data size. Note that these values will vary depending on the
8412efficiency
8413of the compiler and the compiler options used during generation.
8414
8415  Previous Release:
8416    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
8417    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
8418  Current Release:
8419    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
8420    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
8421
8422
84232) iASL Compiler/Disassembler:
8424
8425Fixed an internal error that was generated for any forward references to
8426ASL
8427Alias objects.
8428
8429----------------------------------------
843013 January 2006. Summary of changes for version 20060113:
8431
84321) ACPI CA Core Subsystem:
8433
8434Added 2006 copyright to all module headers and signons. This affects
8435virtually every file in the ACPICA core subsystem, iASL compiler, and the
8436utilities.
8437
8438Enhanced the ACPICA error reporting in order to simplify user migration
8439to
8440the non-debug version of ACPICA. Replaced all instances of the
8441ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
8442debug
8443levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
8444respectively. This preserves all error and warning messages in the non-
8445debug
8446version of the ACPICA code (this has been referred to as the "debug lite"
8447option.) Over 200 cases were converted to create a total of over 380
8448error/warning messages across the ACPICA code. This increases the code
8449and
8450data size of the default non-debug version of the code somewhat (about
845113K),
8452but all error/warning reporting may be disabled if desired (and code
8453eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
8454configuration option. The size of the debug version of ACPICA remains
8455about
8456the same.
8457
8458Fixed a memory leak within the AML Debugger "Set" command. One object was
8459not properly deleted for every successful invocation of the command.
8460
8461Code and Data Size: The current and previous library sizes for the core
8462subsystem are shown below. These are the code and data sizes for the
8463acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8464These
8465values do not include any ACPI driver or OSPM code. The debug version of
8466the
8467code includes the debug output trace mechanism and has a much larger code
8468and data size. Note that these values will vary depending on the
8469efficiency
8470of the compiler and the compiler options used during generation.
8471
8472  Previous Release:
8473    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
8474    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
8475  Current Release:
8476    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
8477    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
8478
8479
84802) iASL Compiler/Disassembler:
8481
8482The compiler now officially supports the ACPI 3.0a specification that was
8483released on December 30, 2005. (Specification is available at
8484www.acpi.info)
8485
8486----------------------------------------
848716 December 2005. Summary of changes for version 20051216:
8488
84891) ACPI CA Core Subsystem:
8490
8491Implemented optional support to allow unresolved names within ASL Package
8492objects. A null object is inserted in the package when a named reference
8493cannot be located in the current namespace. Enabled via the interpreter
8494slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
8495machines
8496that contain such code.
8497
8498Implemented an optimization to the initialization sequence that can
8499improve
8500boot time. During ACPI device initialization, the _STA method is now run
8501if
8502and only if the _INI method exists. The _STA method is used to determine
8503if
8504the device is present; An _INI can only be run if _STA returns present,
8505but
8506it is a waste of time to run the _STA method if the _INI does not exist.
8507(Prototype and assistance from Dong Wei)
8508
8509Implemented use of the C99 uintptr_t for the pointer casting macros if it
8510is
8511available in the current compiler. Otherwise, the default (void *) cast
8512is
8513used as before.
8514
8515Fixed some possible memory leaks found within the execution path of the
8516Break, Continue, If, and CreateField operators. (Valery Podrezov)
8517
8518Fixed a problem introduced in the 20051202 release where an exception is
8519generated during method execution if a control method attempts to declare
8520another method.
8521
8522Moved resource descriptor string constants that are used by both the AML
8523disassembler and AML debugger to the common utilities directory so that
8524these components are independent.
8525
8526Implemented support in the AcpiExec utility (-e switch) to globally
8527ignore
8528exceptions during control method execution (method is not aborted.)
8529
8530Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
8531generation.
8532
8533Code and Data Size: The current and previous library sizes for the core
8534subsystem are shown below. These are the code and data sizes for the
8535acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8536These
8537values do not include any ACPI driver or OSPM code. The debug version of
8538the
8539code includes the debug output trace mechanism and has a much larger code
8540and data size. Note that these values will vary depending on the
8541efficiency
8542of the compiler and the compiler options used during generation.
8543
8544  Previous Release:
8545    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8546    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
8547  Current Release:
8548    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
8549    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
8550
8551
85522) iASL Compiler/Disassembler:
8553
8554Fixed a problem where a CPU stack overflow fault could occur if a
8555recursive
8556method call was made from within a Return statement.
8557
8558----------------------------------------
855902 December 2005. Summary of changes for version 20051202:
8560
85611) ACPI CA Core Subsystem:
8562
8563Modified the parsing of control methods to no longer create namespace
8564objects during the first pass of the parse. Objects are now created only
8565during the execute phase, at the moment the namespace creation operator
8566is
8567encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
8568This
8569should eliminate ALREADY_EXISTS exceptions seen on some machines where
8570reentrant control methods are protected by an AML mutex. The mutex will
8571now
8572correctly block multiple threads from attempting to create the same
8573object
8574more than once.
8575
8576Increased the number of available Owner Ids for namespace object tracking
8577from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
8578on
8579some machines with a large number of ACPI tables (either static or
8580dynamic).
8581
8582Fixed a problem with the AcpiExec utility where a fault could occur when
8583the
8584-b switch (batch mode) is used.
8585
8586Enhanced the namespace dump routine to output the owner ID for each
8587namespace object.
8588
8589Code and Data Size: The current and previous library sizes for the core
8590subsystem are shown below. These are the code and data sizes for the
8591acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8592These
8593values do not include any ACPI driver or OSPM code. The debug version of
8594the
8595code includes the debug output trace mechanism and has a much larger code
8596and data size. Note that these values will vary depending on the
8597efficiency
8598of the compiler and the compiler options used during generation.
8599
8600  Previous Release:
8601    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8602    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8603  Current Release:
8604    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8605    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
8606
8607
86082) iASL Compiler/Disassembler:
8609
8610Fixed a parse error during compilation of certain Switch/Case constructs.
8611To
8612simplify the parse, the grammar now allows for multiple Default
8613statements
8614and this error is now detected and flagged during the analysis phase.
8615
8616Disassembler: The disassembly now includes the contents of the original
8617table header within a comment at the start of the file. This includes the
8618name and version of the original ASL compiler.
8619
8620----------------------------------------
862117 November 2005. Summary of changes for version 20051117:
8622
86231) ACPI CA Core Subsystem:
8624
8625Fixed a problem in the AML parser where the method thread count could be
8626decremented below zero if any errors occurred during the method parse
8627phase.
8628This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
8629machines.
8630This also fixed a related regression with the mechanism that detects and
8631corrects methods that cannot properly handle reentrancy (related to the
8632deployment of the new OwnerId mechanism.)
8633
8634Eliminated the pre-parsing of control methods (to detect errors) during
8635table load. Related to the problem above, this was causing unwind issues
8636if
8637any errors occurred during the parse, and it seemed to be overkill. A
8638table
8639load should not be aborted if there are problems with any single control
8640method, thus rendering this feature rather pointless.
8641
8642Fixed a problem with the new table-driven resource manager where an
8643internal
8644buffer overflow could occur for small resource templates.
8645
8646Implemented a new external interface, AcpiGetVendorResource. This
8647interface
8648will find and return a vendor-defined resource descriptor within a _CRS
8649or
8650_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
8651Helgaas.
8652
8653Removed the length limit (200) on string objects as per the upcoming ACPI
86543.0A specification. This affects the following areas of the interpreter:
86551)
8656any implicit conversion of a Buffer to a String, 2) a String object
8657result
8658of the ASL Concatentate operator, 3) the String object result of the ASL
8659ToString operator.
8660
8661Fixed a problem in the Windows OS interface layer (OSL) where a
8662WAIT_FOREVER
8663on a semaphore object would incorrectly timeout. This allows the
8664multithreading features of the AcpiExec utility to work properly under
8665Windows.
8666
8667Updated the Linux makefiles for the iASL compiler and AcpiExec to include
8668the recently added file named "utresrc.c".
8669
8670Code and Data Size: The current and previous library sizes for the core
8671subsystem are shown below. These are the code and data sizes for the
8672acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8673These
8674values do not include any ACPI driver or OSPM code. The debug version of
8675the
8676code includes the debug output trace mechanism and has a much larger code
8677and data size. Note that these values will vary depending on the
8678efficiency
8679of the compiler and the compiler options used during generation.
8680
8681  Previous Release:
8682    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
8683    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8684  Current Release:
8685    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
8686    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8687
8688
86892) iASL Compiler/Disassembler:
8690
8691Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
8692specification. For the iASL compiler, this means that string literals
8693within
8694the source ASL can be of any length.
8695
8696Enhanced the listing output to dump the AML code for resource descriptors
8697immediately after the ASL code for each descriptor, instead of in a block
8698at
8699the end of the entire resource template.
8700
8701Enhanced the compiler debug output to dump the entire original parse tree
8702constructed during the parse phase, before any transforms are applied to
8703the
8704tree. The transformed tree is dumped also.
8705
8706----------------------------------------
870702 November 2005. Summary of changes for version 20051102:
8708
87091) ACPI CA Core Subsystem:
8710
8711Modified the subsystem initialization sequence to improve GPE support.
8712The
8713GPE initialization has been split into two parts in order to defer
8714execution
8715of the _PRW methods (Power Resources for Wake) until after the hardware
8716is
8717fully initialized and the SCI handler is installed. This allows the _PRW
8718methods to access fields protected by the Global Lock. This will fix
8719systems
8720where a NO_GLOBAL_LOCK exception has been seen during initialization.
8721
8722Converted the ACPI internal object disassemble and display code within
8723the
8724AML debugger to fully table-driven operation, reducing code size and
8725increasing maintainability.
8726
8727Fixed a regression with the ConcatenateResTemplate() ASL operator
8728introduced
8729in the 20051021 release.
8730
8731Implemented support for "local" internal ACPI object types within the
8732debugger "Object" command and the AcpiWalkNamespace external interfaces.
8733These local types include RegionFields, BankFields, IndexFields, Alias,
8734and
8735reference objects.
8736
8737Moved common AML resource handling code into a new file, "utresrc.c".
8738This
8739code is shared by both the Resource Manager and the AML Debugger.
8740
8741Code and Data Size: The current and previous library sizes for the core
8742subsystem are shown below. These are the code and data sizes for the
8743acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8744These
8745values do not include any ACPI driver or OSPM code. The debug version of
8746the
8747code includes the debug output trace mechanism and has a much larger code
8748and data size. Note that these values will vary depending on the
8749efficiency
8750of the compiler and the compiler options used during generation.
8751
8752  Previous Release:
8753    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
8754    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
8755  Current Release:
8756    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
8757    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
8758
8759
87602) iASL Compiler/Disassembler:
8761
8762Fixed a problem with very large initializer lists (more than 4000
8763elements)
8764for both Buffer and Package objects where the parse stack could overflow.
8765
8766Enhanced the pre-compile source code scan for non-ASCII characters to
8767ignore
8768characters within comment fields. The scan is now always performed and is
8769no
8770longer optional, detecting invalid characters within a source file
8771immediately rather than during the parse phase or later.
8772
8773Enhanced the ASL grammar definition to force early reductions on all
8774list-
8775style grammar elements so that the overall parse stack usage is greatly
8776reduced. This should improve performance and reduce the possibility of
8777parse
8778stack overflow.
8779
8780Eliminated all reduce/reduce conflicts in the iASL parser generation.
8781Also,
8782with the addition of a %expected statement, the compiler generates from
8783source with no warnings.
8784
8785Fixed a possible segment fault in the disassembler if the input filename
8786does not contain a "dot" extension (Thomas Renninger).
8787
8788----------------------------------------
878921 October 2005. Summary of changes for version 20051021:
8790
87911) ACPI CA Core Subsystem:
8792
8793Implemented support for the EM64T and other x86-64 processors. This
8794essentially entails recognizing that these processors support non-aligned
8795memory transfers. Previously, all 64-bit processors were assumed to lack
8796hardware support for non-aligned transfers.
8797
8798Completed conversion of the Resource Manager to nearly full table-driven
8799operation. Specifically, the resource conversion code (convert AML to
8800internal format and the reverse) and the debug code to dump internal
8801resource descriptors are fully table-driven, reducing code and data size
8802and
8803improving maintainability.
8804
8805The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
8806word
8807on 64-bit processors instead of a fixed 32-bit word. (With assistance
8808from
8809Alexey Starikovskiy)
8810
8811Implemented support within the resource conversion code for the Type-
8812Specific byte within the various ACPI 3.0 *WordSpace macros.
8813
8814Fixed some issues within the resource conversion code for the type-
8815specific
8816flags for both Memory and I/O address resource descriptors. For Memory,
8817implemented support for the MTP and TTP flags. For I/O, split the TRS and
8818TTP flags into two separate fields.
8819
8820Code and Data Size: The current and previous library sizes for the core
8821subsystem are shown below. These are the code and data sizes for the
8822acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8823These
8824values do not include any ACPI driver or OSPM code. The debug version of
8825the
8826code includes the debug output trace mechanism and has a much larger code
8827and data size. Note that these values will vary depending on the
8828efficiency
8829of the compiler and the compiler options used during generation.
8830
8831  Previous Release:
8832    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
8833    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
8834  Current Release:
8835    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
8836    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
8837
8838
8839
88402) iASL Compiler/Disassembler:
8841
8842Relaxed a compiler restriction that disallowed a ResourceIndex byte if
8843the
8844corresponding ResourceSource string was not also present in a resource
8845descriptor declaration. This restriction caused problems with existing
8846AML/ASL code that includes the Index byte without the string. When such
8847AML
8848was disassembled, it could not be compiled without modification. Further,
8849the modified code created a resource template with a different size than
8850the
8851original, breaking code that used fixed offsets into the resource
8852template
8853buffer.
8854
8855Removed a recent feature of the disassembler to ignore a lone
8856ResourceIndex
8857byte. This byte is now emitted if present so that the exact AML can be
8858reproduced when the disassembled code is recompiled.
8859
8860Improved comments and text alignment for the resource descriptor code
8861emitted by the disassembler.
8862
8863Implemented disassembler support for the ACPI 3.0 AccessSize field within
8864a
8865Register() resource descriptor.
8866
8867----------------------------------------
886830 September 2005. Summary of changes for version 20050930:
8869
88701) ACPI CA Core Subsystem:
8871
8872Completed a major overhaul of the Resource Manager code - specifically,
8873optimizations in the area of the AML/internal resource conversion code.
8874The
8875code has been optimized to simplify and eliminate duplicated code, CPU
8876stack
8877use has been decreased by optimizing function parameters and local
8878variables, and naming conventions across the manager have been
8879standardized
8880for clarity and ease of maintenance (this includes function, parameter,
8881variable, and struct/typedef names.) The update may force changes in some
8882driver code, depending on how resources are handled by the host OS.
8883
8884All Resource Manager dispatch and information tables have been moved to a
8885single location for clarity and ease of maintenance. One new file was
8886created, named "rsinfo.c".
8887
8888The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
8889guarantee that the argument is not evaluated twice, making them less
8890prone
8891to macro side-effects. However, since there exists the possibility of
8892additional stack use if a particular compiler cannot optimize them (such
8893as
8894in the debug generation case), the original macros are optionally
8895available.
8896Note that some invocations of the return_VALUE macro may now cause size
8897mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
8898to
8899eliminate these. (From Randy Dunlap)
8900
8901Implemented a new mechanism to enable debug tracing for individual
8902control
8903methods. A new external interface, AcpiDebugTrace, is provided to enable
8904this mechanism. The intent is to allow the host OS to easily enable and
8905disable tracing for problematic control methods. This interface can be
8906easily exposed to a user or debugger interface if desired. See the file
8907psxface.c for details.
8908
8909AcpiUtCallocate will now return a valid pointer if a length of zero is
8910specified - a length of one is used and a warning is issued. This matches
8911the behavior of AcpiUtAllocate.
8912
8913Code and Data Size: The current and previous library sizes for the core
8914subsystem are shown below. These are the code and data sizes for the
8915acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8916These
8917values do not include any ACPI driver or OSPM code. The debug version of
8918the
8919code includes the debug output trace mechanism and has a much larger code
8920and data size. Note that these values will vary depending on the
8921efficiency
8922of the compiler and the compiler options used during generation.
8923
8924  Previous Release:
8925    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
8926    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
8927  Current Release:
8928    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
8929    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
8930
8931
89322) iASL Compiler/Disassembler:
8933
8934A remark is issued if the effective compile-time length of a package or
8935buffer is zero. Previously, this was a warning.
8936
8937----------------------------------------
893816 September 2005. Summary of changes for version 20050916:
8939
89401) ACPI CA Core Subsystem:
8941
8942Fixed a problem within the Resource Manager where support for the Generic
8943Register descriptor was not fully implemented. This descriptor is now
8944fully
8945recognized, parsed, disassembled, and displayed.
8946
8947Completely restructured the Resource Manager code to utilize table-driven
8948dispatch and lookup, eliminating many of the large switch() statements.
8949This
8950reduces overall subsystem code size and code complexity. Affects the
8951resource parsing and construction, disassembly, and debug dump output.
8952
8953Cleaned up and restructured the debug dump output for all resource
8954descriptors. Improved readability of the output and reduced code size.
8955
8956Fixed a problem where changes to internal data structures caused the
8957optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
8958
8959Code and Data Size: The current and previous library sizes for the core
8960subsystem are shown below. These are the code and data sizes for the
8961acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
8962These
8963values do not include any ACPI driver or OSPM code. The debug version of
8964the
8965code includes the debug output trace mechanism and has a much larger code
8966and data size. Note that these values will vary depending on the
8967efficiency
8968of the compiler and the compiler options used during generation.
8969
8970  Previous Release:
8971    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
8972    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
8973  Current Release:
8974    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
8975    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
8976
8977
89782) iASL Compiler/Disassembler:
8979
8980Updated the disassembler to automatically insert an EndDependentFn()
8981macro
8982into the ASL stream if this macro is missing in the original AML code,
8983simplifying compilation of the resulting ASL module.
8984
8985Fixed a problem in the disassembler where a disassembled ResourceSource
8986string (within a large resource descriptor) was not surrounded by quotes
8987and
8988not followed by a comma, causing errors when the resulting ASL module was
8989compiled. Also, escape sequences within a ResourceSource string are now
8990handled correctly (especially "\\")
8991
8992----------------------------------------
899302 September 2005. Summary of changes for version 20050902:
8994
89951) ACPI CA Core Subsystem:
8996
8997Fixed a problem with the internal Owner ID allocation and deallocation
8998mechanisms for control method execution and recursive method invocation.
8999This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
9000messages seen on some systems. Recursive method invocation depth is
9001currently limited to 255. (Alexey Starikovskiy)
9002
9003Completely eliminated all vestiges of support for the "module-level
9004executable code" until this support is fully implemented and debugged.
9005This
9006should eliminate the NO_RETURN_VALUE exceptions seen during table load on
9007some systems that invoke this support.
9008
9009Fixed a problem within the resource manager code where the transaction
9010flags
9011for a 64-bit address descriptor were handled incorrectly in the type-
9012specific flag byte.
9013
9014Consolidated duplicate code within the address descriptor resource
9015manager
9016code, reducing overall subsystem code size.
9017
9018Fixed a fault when using the AML debugger "disassemble" command to
9019disassemble individual control methods.
9020
9021Removed references to the "release_current" directory within the Unix
9022release package.
9023
9024Code and Data Size: The current and previous core subsystem library sizes
9025are shown below. These are the code and data sizes for the acpica.lib
9026produced by the Microsoft Visual C++ 6.0 compiler. These values do not
9027include any ACPI driver or OSPM code. The debug version of the code
9028includes
9029the debug output trace mechanism and has a much larger code and data
9030size.
9031Note that these values will vary depending on the efficiency of the
9032compiler
9033and the compiler options used during generation.
9034
9035  Previous Release:
9036    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9037    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
9038  Current Release:
9039    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
9040    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
9041
9042
90432) iASL Compiler/Disassembler:
9044
9045Implemented an error check for illegal duplicate values in the interrupt
9046and
9047dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
9048Interrupt().
9049
9050Implemented error checking for the Irq() and IrqNoFlags() macros to
9051detect
9052too many values in the interrupt list (16 max) and invalid values in the
9053list (range 0 - 15)
9054
9055The maximum length string literal within an ASL file is now restricted to
9056200 characters as per the ACPI specification.
9057
9058Fixed a fault when using the -ln option (generate namespace listing).
9059
9060Implemented an error check to determine if a DescriptorName within a
9061resource descriptor has already been used within the current scope.
9062
9063----------------------------------------
906415 August 2005.  Summary of changes for version 20050815:
9065
90661) ACPI CA Core Subsystem:
9067
9068Implemented a full bytewise compare to determine if a table load request
9069is
9070attempting to load a duplicate table. The compare is performed if the
9071table
9072signatures and table lengths match. This will allow different tables with
9073the same OEM Table ID and revision to be loaded - probably against the
9074ACPI
9075specification, but discovered in the field nonetheless.
9076
9077Added the changes.txt logfile to each of the zipped release packages.
9078
9079Code and Data Size: Current and previous core subsystem library sizes are
9080shown below. These are the code and data sizes for the acpica.lib
9081produced
9082by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9083any ACPI driver or OSPM code. The debug version of the code includes the
9084debug output trace mechanism and has a much larger code and data size.
9085Note
9086that these values will vary depending on the efficiency of the compiler
9087and
9088the compiler options used during generation.
9089
9090  Previous Release:
9091    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9092    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
9093  Current Release:
9094    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9095    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
9096
9097
90982) iASL Compiler/Disassembler:
9099
9100Fixed a problem where incorrect AML code could be generated for Package
9101objects if optimization is disabled (via the -oa switch).
9102
9103Fixed a problem with where incorrect AML code is generated for variable-
9104length packages when the package length is not specified and the number
9105of
9106initializer values is greater than 255.
9107
9108
9109----------------------------------------
911029 July 2005.  Summary of changes for version 20050729:
9111
91121) ACPI CA Core Subsystem:
9113
9114Implemented support to ignore an attempt to install/load a particular
9115ACPI
9116table more than once. Apparently there exists BIOS code that repeatedly
9117attempts to load the same SSDT upon certain events. With assistance from
9118Venkatesh Pallipadi.
9119
9120Restructured the main interface to the AML parser in order to correctly
9121handle all exceptional conditions. This will prevent leakage of the
9122OwnerId
9123resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
9124some
9125machines. With assistance from Alexey Starikovskiy.
9126
9127Support for "module level code" has been disabled in this version due to
9128a
9129number of issues that have appeared on various machines. The support can
9130be
9131enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
9132compilation. When the issues are fully resolved, the code will be enabled
9133by
9134default again.
9135
9136Modified the internal functions for debug print support to define the
9137FunctionName parameter as a (const char *) for compatibility with
9138compiler
9139built-in macros such as __FUNCTION__, etc.
9140
9141Linted the entire ACPICA source tree for both 32-bit and 64-bit.
9142
9143Implemented support to display an object count summary for the AML
9144Debugger
9145commands Object and Methods.
9146
9147Code and Data Size: Current and previous core subsystem library sizes are
9148shown below. These are the code and data sizes for the acpica.lib
9149produced
9150by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9151any ACPI driver or OSPM code. The debug version of the code includes the
9152debug output trace mechanism and has a much larger code and data size.
9153Note
9154that these values will vary depending on the efficiency of the compiler
9155and
9156the compiler options used during generation.
9157
9158  Previous Release:
9159    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
9160    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
9161  Current Release:
9162    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
9163    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
9164
9165
91662) iASL Compiler/Disassembler:
9167
9168Fixed a regression that appeared in the 20050708 version of the compiler
9169where an error message was inadvertently emitted for invocations of the
9170_OSI
9171reserved control method.
9172
9173----------------------------------------
917408 July 2005.  Summary of changes for version 20050708:
9175
91761) ACPI CA Core Subsystem:
9177
9178The use of the CPU stack in the debug version of the subsystem has been
9179considerably reduced. Previously, a debug structure was declared in every
9180function that used the debug macros. This structure has been removed in
9181favor of declaring the individual elements as parameters to the debug
9182functions. This reduces the cumulative stack use during nested execution
9183of
9184ACPI function calls at the cost of a small increase in the code size of
9185the
9186debug version of the subsystem. With assistance from Alexey Starikovskiy
9187and
9188Len Brown.
9189
9190Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
9191headers to define a macro that will return the current function name at
9192runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
9193by
9194the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
9195compiler-dependent header, the function name is saved on the CPU stack
9196(one
9197pointer per function.) This mechanism is used because apparently there
9198exists no standard ANSI-C defined macro that that returns the function
9199name.
9200
9201Redesigned and reimplemented the "Owner ID" mechanism used to track
9202namespace objects created/deleted by ACPI tables and control method
9203execution. A bitmap is now used to allocate and free the IDs, thus
9204solving
9205the wraparound problem present in the previous implementation. The size
9206of
9207the namespace node descriptor was reduced by 2 bytes as a result (Alexey
9208Starikovskiy).
9209
9210Removed the UINT32_BIT and UINT16_BIT types that were used for the
9211bitfield
9212flag definitions within the headers for the predefined ACPI tables. These
9213have been replaced by UINT8_BIT in order to increase the code portability
9214of
9215the subsystem. If the use of UINT8 remains a problem, we may be forced to
9216eliminate bitfields entirely because of a lack of portability.
9217
9218Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
9219This
9220is a frequently used function and this improvement increases the
9221performance
9222of the entire subsystem (Alexey Starikovskiy).
9223
9224Fixed several possible memory leaks and the inverse - premature object
9225deletion (Alexey Starikovskiy).
9226
9227Code and Data Size: Current and previous core subsystem library sizes are
9228shown below. These are the code and data sizes for the acpica.lib
9229produced
9230by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9231any ACPI driver or OSPM code. The debug version of the code includes the
9232debug output trace mechanism and has a much larger code and data size.
9233Note
9234that these values will vary depending on the efficiency of the compiler
9235and
9236the compiler options used during generation.
9237
9238  Previous Release:
9239    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
9240    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
9241  Current Release:
9242    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
9243    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
9244
9245----------------------------------------
924624 June 2005.  Summary of changes for version 20050624:
9247
92481) ACPI CA Core Subsystem:
9249
9250Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
9251the host-defined cache object. This allows the OSL implementation to
9252define
9253and type this object in any manner desired, simplifying the OSL
9254implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
9255Linux, and should be defined in the OS-specific header file for other
9256operating systems as required.
9257
9258Changed the interface to AcpiOsAcquireObject to directly return the
9259requested object as the function return (instead of ACPI_STATUS.) This
9260change was made for performance reasons, since this is the purpose of the
9261interface in the first place. AcpiOsAcquireObject is now similar to the
9262AcpiOsAllocate interface.
9263
9264Implemented a new AML debugger command named Businfo. This command
9265displays
9266information about all devices that have an associate _PRT object. The
9267_ADR,
9268_HID, _UID, and _CID are displayed for these devices.
9269
9270Modified the initialization sequence in AcpiInitializeSubsystem to call
9271the
9272OSL interface AcpiOslInitialize first, before any local initialization.
9273This
9274change was required because the global initialization now calls OSL
9275interfaces.
9276
9277Enhanced the Dump command to display the entire contents of Package
9278objects
9279(including all sub-objects and their values.)
9280
9281Restructured the code base to split some files because of size and/or
9282because the code logically belonged in a separate file. New files are
9283listed
9284below. All makefiles and project files included in the ACPI CA release
9285have
9286been updated.
9287    utilities/utcache.c           /* Local cache interfaces */
9288    utilities/utmutex.c           /* Local mutex support */
9289    utilities/utstate.c           /* State object support */
9290    interpreter/parser/psloop.c   /* Main AML parse loop */
9291
9292Code and Data Size: Current and previous core subsystem library sizes are
9293shown below. These are the code and data sizes for the acpica.lib
9294produced
9295by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9296any ACPI driver or OSPM code. The debug version of the code includes the
9297debug output trace mechanism and has a much larger code and data size.
9298Note
9299that these values will vary depending on the efficiency of the compiler
9300and
9301the compiler options used during generation.
9302
9303  Previous Release:
9304    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
9305    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
9306  Current Release:
9307    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
9308    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
9309
9310
93112) iASL Compiler/Disassembler:
9312
9313Fixed a regression introduced in version 20050513 where the use of a
9314Package
9315object within a Case() statement caused a compile time exception. The
9316original behavior has been restored (a Match() operator is emitted.)
9317
9318----------------------------------------
931917 June 2005.  Summary of changes for version 20050617:
9320
93211) ACPI CA Core Subsystem:
9322
9323Moved the object cache operations into the OS interface layer (OSL) to
9324allow
9325the host OS to handle these operations if desired (for example, the Linux
9326OSL will invoke the slab allocator). This support is optional; the
9327compile
9328time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
9329cache
9330code in the ACPI CA core. The new OSL interfaces are shown below. See
9331utalloc.c for an example implementation, and acpiosxf.h for the exact
9332interface definitions. With assistance from Alexey Starikovskiy.
9333    AcpiOsCreateCache
9334    AcpiOsDeleteCache
9335    AcpiOsPurgeCache
9336    AcpiOsAcquireObject
9337    AcpiOsReleaseObject
9338
9339Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
9340return
9341and restore a flags parameter. This fits better with many OS lock models.
9342Note: the current execution state (interrupt handler or not) is no longer
9343passed to these interfaces. If necessary, the OSL must determine this
9344state
9345by itself, a simple and fast operation. With assistance from Alexey
9346Starikovskiy.
9347
9348Fixed a problem in the ACPI table handling where a valid XSDT was assumed
9349present if the revision of the RSDP was 2 or greater. According to the
9350ACPI
9351specification, the XSDT is optional in all cases, and the table manager
9352therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
9353Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
9354contain
9355only the RSDT.
9356
9357Fixed an interpreter problem with the Mid() operator in the case of an
9358input
9359string where the resulting output string is of zero length. It now
9360correctly
9361returns a valid, null terminated string object instead of a string object
9362with a null pointer.
9363
9364Fixed a problem with the control method argument handling to allow a
9365store
9366to an Arg object that already contains an object of type Device. The
9367Device
9368object is now correctly overwritten. Previously, an error was returned.
9369
9370
9371Enhanced the debugger Find command to emit object values in addition to
9372the
9373found object pathnames. The output format is the same as the dump
9374namespace
9375command.
9376
9377Enhanced the debugger Set command. It now has the ability to set the
9378value
9379of any Named integer object in the namespace (Previously, only method
9380locals
9381and args could be set.)
9382
9383Code and Data Size: Current and previous core subsystem library sizes are
9384shown below. These are the code and data sizes for the acpica.lib
9385produced
9386by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9387any ACPI driver or OSPM code. The debug version of the code includes the
9388debug output trace mechanism and has a much larger code and data size.
9389Note
9390that these values will vary depending on the efficiency of the compiler
9391and
9392the compiler options used during generation.
9393
9394  Previous Release:
9395    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
9396    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
9397  Current Release:
9398    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
9399    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
9400
9401
94022) iASL Compiler/Disassembler:
9403
9404Fixed a regression in the disassembler where if/else/while constructs
9405were
9406output incorrectly. This problem was introduced in the previous release
9407(20050526). This problem also affected the single-step disassembly in the
9408debugger.
9409
9410Fixed a problem where compiling the reserved _OSI method would randomly
9411(but
9412rarely) produce compile errors.
9413
9414Enhanced the disassembler to emit compilable code in the face of
9415incorrect
9416AML resource descriptors. If the optional ResourceSourceIndex is present,
9417but the ResourceSource is not, do not emit the ResourceSourceIndex in the
9418disassembly. Otherwise, the resulting code cannot be compiled without
9419errors.
9420
9421----------------------------------------
942226 May 2005.  Summary of changes for version 20050526:
9423
94241) ACPI CA Core Subsystem:
9425
9426Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
9427the module level (not within a control method.) These opcodes are
9428executed
9429exactly once at the time the table is loaded. This type of code was legal
9430up
9431until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
9432in
9433order to provide backwards compatibility with earlier BIOS
9434implementations.
9435This eliminates the "Encountered executable code at module level" warning
9436that was previously generated upon detection of such code.
9437
9438Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
9439inadvertently be generated during the lookup of namespace objects in the
9440second pass parse of ACPI tables and control methods. It appears that
9441this
9442problem could occur during the resolution of forward references to
9443namespace
9444objects.
9445
9446Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
9447corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
9448allows the deadlock detection debug code to be compiled out in the normal
9449case, improving mutex performance (and overall subsystem performance)
9450considerably.
9451
9452Implemented a handful of miscellaneous fixes for possible memory leaks on
9453error conditions and error handling control paths. These fixes were
9454suggested by FreeBSD and the Coverity Prevent source code analysis tool.
9455
9456Added a check for a null RSDT pointer in AcpiGetFirmwareTable
9457(tbxfroot.c)
9458to prevent a fault in this error case.
9459
9460Code and Data Size: Current and previous core subsystem library sizes are
9461shown below. These are the code and data sizes for the acpica.lib
9462produced
9463by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9464any ACPI driver or OSPM code. The debug version of the code includes the
9465debug output trace mechanism and has a much larger code and data size.
9466Note
9467that these values will vary depending on the efficiency of the compiler
9468and
9469the compiler options used during generation.
9470
9471  Previous Release:
9472    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9473    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9474  Current Release:
9475    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
9476    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
9477
9478
94792) iASL Compiler/Disassembler:
9480
9481Implemented support to allow Type 1 and Type 2 ASL operators to appear at
9482the module level (not within a control method.) These operators will be
9483executed once at the time the table is loaded. This type of code was
9484legal
9485up until the release of ACPI 2.0B (2002) and is now supported by the iASL
9486compiler in order to provide backwards compatibility with earlier BIOS
9487ASL
9488code.
9489
9490The ACPI integer width (specified via the table revision ID or the -r
9491override, 32 or 64 bits) is now used internally during compile-time
9492constant
9493folding to ensure that constants are truncated to 32 bits if necessary.
9494Previously, the revision ID value was only emitted in the AML table
9495header.
9496
9497An error message is now generated for the Mutex and Method operators if
9498the
9499SyncLevel parameter is outside the legal range of 0 through 15.
9500
9501Fixed a problem with the Method operator ParameterTypes list handling
9502(ACPI
95033.0). Previously, more than 2 types or 2 arguments generated a syntax
9504error.
9505The actual underlying implementation of method argument typechecking is
9506still under development, however.
9507
9508----------------------------------------
950913 May 2005.  Summary of changes for version 20050513:
9510
95111) ACPI CA Core Subsystem:
9512
9513Implemented support for PCI Express root bridges -- added support for
9514device
9515PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
9516
9517The interpreter now automatically truncates incoming 64-bit constants to
951832
9519bits if currently executing out of a 32-bit ACPI table (Revision < 2).
9520This
9521also affects the iASL compiler constant folding. (Note: as per below, the
9522iASL compiler no longer allows 64-bit constants within 32-bit tables.)
9523
9524Fixed a problem where string and buffer objects with "static" pointers
9525(pointers to initialization data within an ACPI table) were not handled
9526consistently. The internal object copy operation now always copies the
9527data
9528to a newly allocated buffer, regardless of whether the source object is
9529static or not.
9530
9531Fixed a problem with the FromBCD operator where an implicit result
9532conversion was improperly performed while storing the result to the
9533target
9534operand. Since this is an "explicit conversion" operator, the implicit
9535conversion should never be performed on the output.
9536
9537Fixed a problem with the CopyObject operator where a copy to an existing
9538named object did not always completely overwrite the existing object
9539stored
9540at name. Specifically, a buffer-to-buffer copy did not delete the
9541existing
9542buffer.
9543
9544Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
9545and
9546structs for consistency.
9547
9548Code and Data Size: Current and previous core subsystem library sizes are
9549shown below. These are the code and data sizes for the acpica.lib
9550produced
9551by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9552any ACPI driver or OSPM code. The debug version of the code includes the
9553debug output trace mechanism and has a much larger code and data size.
9554Note
9555that these values will vary depending on the efficiency of the compiler
9556and
9557the compiler options used during generation.
9558
9559  Previous Release:
9560    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9561    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9562  Current Release: (Same sizes)
9563    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9564    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9565
9566
95672) iASL Compiler/Disassembler:
9568
9569The compiler now emits a warning if an attempt is made to generate a 64-
9570bit
9571integer constant from within a 32-bit ACPI table (Revision < 2). The
9572integer
9573is truncated to 32 bits.
9574
9575Fixed a problem with large package objects: if the static length of the
9576package is greater than 255, the "variable length package" opcode is
9577emitted. Previously, this caused an error. This requires an update to the
9578ACPI spec, since it currently (incorrectly) states that packages larger
9579than
9580255 elements are not allowed.
9581
9582The disassembler now correctly handles variable length packages and
9583packages
9584larger than 255 elements.
9585
9586----------------------------------------
958708 April 2005.  Summary of changes for version 20050408:
9588
95891) ACPI CA Core Subsystem:
9590
9591Fixed three cases in the interpreter where an "index" argument to an ASL
9592function was still (internally) 32 bits instead of the required 64 bits.
9593This was the Index argument to the Index, Mid, and Match operators.
9594
9595The "strupr" function is now permanently local (AcpiUtStrupr), since this
9596is
9597not a POSIX-defined function and not present in most kernel-level C
9598libraries. All references to the C library strupr function have been
9599removed
9600from the headers.
9601
9602Completed the deployment of static functions/prototypes. All prototypes
9603with
9604the static attribute have been moved from the headers to the owning C
9605file.
9606
9607Implemented an extract option (-e) for the AcpiBin utility (AML binary
9608utility). This option allows the utility to extract individual ACPI
9609tables
9610from the output of AcpiDmp. It provides the same functionality of the
9611acpixtract.pl perl script without the worry of setting the correct perl
9612options. AcpiBin runs on Windows and has not yet been generated/validated
9613in
9614the Linux/Unix environment (but should be soon).
9615
9616Updated and fixed the table dump option for AcpiBin (-d). This option
9617converts a single ACPI table to a hex/ascii file, similar to the output
9618of
9619AcpiDmp.
9620
9621Code and Data Size: Current and previous core subsystem library sizes are
9622shown below. These are the code and data sizes for the acpica.lib
9623produced
9624by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9625any ACPI driver or OSPM code. The debug version of the code includes the
9626debug output trace mechanism and has a much larger code and data size.
9627Note
9628that these values will vary depending on the efficiency of the compiler
9629and
9630the compiler options used during generation.
9631
9632  Previous Release:
9633    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
9634    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
9635  Current Release:
9636    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
9637    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
9638
9639
96402) iASL Compiler/Disassembler:
9641
9642Disassembler fix: Added a check to ensure that the table length found in
9643the
9644ACPI table header within the input file is not longer than the actual
9645input
9646file size. This indicates some kind of file or table corruption.
9647
9648----------------------------------------
964929 March 2005.  Summary of changes for version 20050329:
9650
96511) ACPI CA Core Subsystem:
9652
9653An error is now generated if an attempt is made to create a Buffer Field
9654of
9655length zero (A CreateField with a length operand of zero.)
9656
9657The interpreter now issues a warning whenever executable code at the
9658module
9659level is detected during ACPI table load. This will give some idea of the
9660prevalence of this type of code.
9661
9662Implemented support for references to named objects (other than control
9663methods) within package objects.
9664
9665Enhanced package object output for the debug object. Package objects are
9666now
9667completely dumped, showing all elements.
9668
9669Enhanced miscellaneous object output for the debug object. Any object can
9670now be written to the debug object (for example, a device object can be
9671written, and the type of the object will be displayed.)
9672
9673The "static" qualifier has been added to all local functions across both
9674the
9675core subsystem and the iASL compiler.
9676
9677The number of "long" lines (> 80 chars) within the source has been
9678significantly reduced, by about 1/3.
9679
9680Cleaned up all header files to ensure that all CA/iASL functions are
9681prototyped (even static functions) and the formatting is consistent.
9682
9683Two new header files have been added, acopcode.h and acnames.h.
9684
9685Removed several obsolete functions that were no longer used.
9686
9687Code and Data Size: Current and previous core subsystem library sizes are
9688shown below. These are the code and data sizes for the acpica.lib
9689produced
9690by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9691any ACPI driver or OSPM code. The debug version of the code includes the
9692debug output trace mechanism and has a much larger code and data size.
9693Note
9694that these values will vary depending on the efficiency of the compiler
9695and
9696the compiler options used during generation.
9697
9698  Previous Release:
9699    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9700    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
9701  Current Release:
9702    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
9703    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
9704
9705
9706
97072) iASL Compiler/Disassembler:
9708
9709Fixed a problem with the resource descriptor generation/support. For the
9710ResourceSourceIndex and the ResourceSource fields, both must be present,
9711or
9712both must be not present - can't have one without the other.
9713
9714The compiler now returns non-zero from the main procedure if any errors
9715have
9716occurred during the compilation.
9717
9718
9719----------------------------------------
972009 March 2005.  Summary of changes for version 20050309:
9721
97221) ACPI CA Core Subsystem:
9723
9724The string-to-buffer implicit conversion code has been modified again
9725after
9726a change to the ACPI specification.  In order to match the behavior of
9727the
9728other major ACPI implementation, the target buffer is no longer truncated
9729if
9730the source string is smaller than an existing target buffer. This change
9731requires an update to the ACPI spec, and should eliminate the recent
9732AE_AML_BUFFER_LIMIT issues.
9733
9734The "implicit return" support was rewritten to a new algorithm that
9735solves
9736the general case. Rather than attempt to determine when a method is about
9737to
9738exit, the result of every ASL operator is saved momentarily until the
9739very
9740next ASL operator is executed. Therefore, no matter how the method exits,
9741there will always be a saved implicit return value. This feature is only
9742enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
9743eliminate
9744AE_AML_NO_RETURN_VALUE errors when enabled.
9745
9746Implemented implicit conversion support for the predicate (operand) of
9747the
9748If, Else, and While operators. String and Buffer arguments are
9749automatically
9750converted to Integers.
9751
9752Changed the string-to-integer conversion behavior to match the new ACPI
9753errata: "If no integer object exists, a new integer is created. The ASCII
9754string is interpreted as a hexadecimal constant. Each string character is
9755interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
9756with the first character as the most significant digit, and ending with
9757the
9758first non-hexadecimal character or end-of-string." This means that the
9759first
9760non-hex character terminates the conversion and this is the code that was
9761changed.
9762
9763Fixed a problem where the ObjectType operator would fail (fault) when
9764used
9765on an Index of a Package which pointed to a null package element. The
9766operator now properly returns zero (Uninitialized) in this case.
9767
9768Fixed a problem where the While operator used excessive memory by not
9769properly popping the result stack during execution. There was no memory
9770leak
9771after execution, however. (Code provided by Valery Podrezov.)
9772
9773Fixed a problem where references to control methods within Package
9774objects
9775caused the method to be invoked, instead of producing a reference object
9776pointing to the method.
9777
9778Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
9779to
9780improve performance and reduce code size. (Code provided by Alexey
9781Starikovskiy.)
9782
9783Code and Data Size: Current and previous core subsystem library sizes are
9784shown below. These are the code and data sizes for the acpica.lib
9785produced
9786by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9787any ACPI driver or OSPM code. The debug version of the code includes the
9788debug output trace mechanism and has a much larger code and data size.
9789Note
9790that these values will vary depending on the efficiency of the compiler
9791and
9792the compiler options used during generation.
9793
9794  Previous Release:
9795    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9796    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
9797  Current Release:
9798    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9799    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
9800
9801
98022) iASL Compiler/Disassembler:
9803
9804Fixed a problem with the Return operator with no arguments. Since the AML
9805grammar for the byte encoding requires an operand for the Return opcode,
9806the
9807compiler now emits a Return(Zero) for this case.  An ACPI specification
9808update has been written for this case.
9809
9810For tables other than the DSDT, namepath optimization is automatically
9811disabled. This is because SSDTs can be loaded anywhere in the namespace,
9812the
9813compiler has no knowledge of where, and thus cannot optimize namepaths.
9814
9815Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
9816inadvertently omitted from the ACPI specification, and will require an
9817update to the spec.
9818
9819The source file scan for ASCII characters is now optional (-a). This
9820change
9821was made because some vendors place non-ascii characters within comments.
9822However, the scan is simply a brute-force byte compare to ensure all
9823characters in the file are in the range 0x00 to 0x7F.
9824
9825Fixed a problem with the CondRefOf operator where the compiler was
9826inappropriately checking for the existence of the target. Since the point
9827of
9828the operator is to check for the existence of the target at run-time, the
9829compiler no longer checks for the target existence.
9830
9831Fixed a problem where errors generated from the internal AML interpreter
9832during constant folding were not handled properly, causing a fault.
9833
9834Fixed a problem with overly aggressive range checking for the Stall
9835operator. The valid range (max 255) is now only checked if the operand is
9836of
9837type Integer. All other operand types cannot be statically checked.
9838
9839Fixed a problem where control method references within the RefOf,
9840DeRefOf,
9841and ObjectType operators were not treated properly. They are now treated
9842as
9843actual references, not method invocations.
9844
9845Fixed and enhanced the "list namespace" option (-ln). This option was
9846broken
9847a number of releases ago.
9848
9849Improved error handling for the Field, IndexField, and BankField
9850operators.
9851The compiler now cleanly reports and recovers from errors in the field
9852component (FieldUnit) list.
9853
9854Fixed a disassembler problem where the optional ResourceDescriptor fields
9855TRS and TTP were not always handled correctly.
9856
9857Disassembler - Comments in output now use "//" instead of "/*"
9858
9859----------------------------------------
986028 February 2005.  Summary of changes for version 20050228:
9861
98621) ACPI CA Core Subsystem:
9863
9864Fixed a problem where the result of an Index() operator (an object
9865reference) must increment the reference count on the target object for
9866the
9867life of the object reference.
9868
9869Implemented AML Interpreter and Debugger support for the new ACPI 3.0
9870Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
9871WordSpace
9872resource descriptors.
9873
9874Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
9875Space Descriptor" string, indicating interpreter support for the
9876descriptors
9877above.
9878
9879Implemented header support for the new ACPI 3.0 FADT flag bits.
9880
9881Implemented header support for the new ACPI 3.0 PCI Express bits for the
9882PM1
9883status/enable registers.
9884
9885Updated header support for the MADT processor local Apic struct and MADT
9886platform interrupt source struct for new ACPI 3.0 fields.
9887
9888Implemented header support for the SRAT and SLIT ACPI tables.
9889
9890Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
9891flag
9892at runtime.
9893
9894Code and Data Size: Current and previous core subsystem library sizes are
9895shown below. These are the code and data sizes for the acpica.lib
9896produced
9897by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9898any ACPI driver or OSPM code. The debug version of the code includes the
9899debug output trace mechanism and has a much larger code and data size.
9900Note
9901that these values will vary depending on the efficiency of the compiler
9902and
9903the compiler options used during generation.
9904
9905  Previous Release:
9906    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
9907    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
9908  Current Release:
9909    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
9910    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
9911
9912
99132) iASL Compiler/Disassembler:
9914
9915Fixed a problem with the internal 64-bit String-to-integer conversion
9916with
9917strings less than two characters long.
9918
9919Fixed a problem with constant folding where the result of the Index()
9920operator can not be considered a constant. This means that Index() cannot
9921be
9922a type3 opcode and this will require an update to the ACPI specification.
9923
9924Disassembler: Implemented support for the TTP, MTP, and TRS resource
9925descriptor fields. These fields were inadvertently ignored and not output
9926in
9927the disassembly of the resource descriptor.
9928
9929
9930 ----------------------------------------
993111 February 2005.  Summary of changes for version 20050211:
9932
99331) ACPI CA Core Subsystem:
9934
9935Implemented ACPI 3.0 support for implicit conversion within the Match()
9936operator. MatchObjects can now be of type integer, buffer, or string
9937instead
9938of just type integer.  Package elements are implicitly converted to the
9939type
9940of the MatchObject. This change aligns the behavior of Match() with the
9941behavior of the other logical operators (LLess(), etc.) It also requires
9942an
9943errata change to the ACPI specification as this support was intended for
9944ACPI 3.0, but was inadvertently omitted.
9945
9946Fixed a problem with the internal implicit "to buffer" conversion.
9947Strings
9948that are converted to buffers will cause buffer truncation if the string
9949is
9950smaller than the target buffer. Integers that are converted to buffers
9951will
9952not cause buffer truncation, only zero extension (both as per the ACPI
9953spec.) The problem was introduced when code was added to truncate the
9954buffer, but this should not be performed in all cases, only the string
9955case.
9956
9957Fixed a problem with the Buffer and Package operators where the
9958interpreter
9959would get confused if two such operators were used as operands to an ASL
9960operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
9961stack was not being popped after the execution of these operators,
9962resulting
9963in an AE_NO_RETURN_VALUE exception.
9964
9965Fixed a problem with constructs of the form Store(Index(...),...). The
9966reference object returned from Index was inadvertently resolved to an
9967actual
9968value. This problem was introduced in version 20050114 when the behavior
9969of
9970Store() was modified to restrict the object types that can be used as the
9971source operand (to match the ACPI specification.)
9972
9973Reduced excessive stack use within the AcpiGetObjectInfo procedure.
9974
9975Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
9976
9977Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
9978
9979Code and Data Size: Current and previous core subsystem library sizes are
9980shown below. These are the code and data sizes for the acpica.lib
9981produced
9982by the Microsoft Visual C++ 6.0 compiler, and these values do not include
9983any ACPI driver or OSPM code. The debug version of the code includes the
9984debug output trace mechanism and has a much larger code and data size.
9985Note
9986that these values will vary depending on the efficiency of the compiler
9987and
9988the compiler options used during generation.
9989
9990  Previous Release:
9991    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
9992    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
9993  Current Release:
9994    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
9995    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
9996
9997
99982) iASL Compiler/Disassembler:
9999
10000Fixed a code generation problem in the constant folding optimization code
10001where incorrect code was generated if a constant was reduced to a buffer
10002object (i.e., a reduced type 5 opcode.)
10003
10004Fixed a typechecking problem for the ToBuffer operator. Caused by an
10005incorrect return type in the internal opcode information table.
10006
10007----------------------------------------
1000825 January 2005.  Summary of changes for version 20050125:
10009
100101) ACPI CA Core Subsystem:
10011
10012Fixed a recently introduced problem with the Global Lock where the
10013underlying semaphore was not created.  This problem was introduced in
10014version 20050114, and caused an AE_AML_NO_OPERAND exception during an
10015Acquire() operation on _GL.
10016
10017The local object cache is now optional, and is disabled by default. Both
10018AcpiExec and the iASL compiler enable the cache because they run in user
10019mode and this enhances their performance. #define
10020ACPI_ENABLE_OBJECT_CACHE
10021to enable the local cache.
10022
10023Fixed an issue in the internal function AcpiUtEvaluateObject concerning
10024the
10025optional "implicit return" support where an error was returned if no
10026return
10027object was expected, but one was implicitly returned. AE_OK is now
10028returned
10029in this case and the implicitly returned object is deleted.
10030AcpiUtEvaluateObject is only occasionally used, and only to execute
10031reserved
10032methods such as _STA and _INI where the return type is known up front.
10033
10034Fixed a few issues with the internal convert-to-integer code. It now
10035returns
10036an error if an attempt is made to convert a null string, a string of only
10037blanks/tabs, or a zero-length buffer. This affects both implicit
10038conversion
10039and explicit conversion via the ToInteger() operator.
10040
10041The internal debug code in AcpiUtAcquireMutex has been commented out. It
10042is
10043not needed for normal operation and should increase the performance of
10044the
10045entire subsystem. The code remains in case it is needed for debug
10046purposes
10047again.
10048
10049The AcpiExec source and makefile are included in the Unix/Linux package
10050for
10051the first time.
10052
10053Code and Data Size: Current and previous core subsystem library sizes are
10054shown below. These are the code and data sizes for the acpica.lib
10055produced
10056by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10057any ACPI driver or OSPM code. The debug version of the code includes the
10058debug output trace mechanism and has a much larger code and data size.
10059Note
10060that these values will vary depending on the efficiency of the compiler
10061and
10062the compiler options used during generation.
10063
10064  Previous Release:
10065    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
10066    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
10067  Current Release:
10068    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
10069    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
10070
100712) iASL Compiler/Disassembler:
10072
10073Switch/Case support: A warning is now issued if the type of the Switch
10074value
10075cannot be determined at compile time. For example, Switch(Arg0) will
10076generate the warning, and the type is assumed to be an integer. As per
10077the
10078ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
10079the
10080warning.
10081
10082Switch/Case support: Implemented support for buffer and string objects as
10083the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
10084buffers and strings.
10085
10086Switch/Case support: The emitted code for the LEqual() comparisons now
10087uses
10088the switch value as the first operand, not the second. The case value is
10089now
10090the second operand, and this allows the case value to be implicitly
10091converted to the type of the switch value, not the other way around.
10092
10093Switch/Case support: Temporary variables are now emitted immediately
10094within
10095the control method, not at the global level. This means that there are
10096now
1009736 temps available per-method, not 36 temps per-module as was the case
10098with
10099the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
10100
10101----------------------------------------
1010214 January 2005.  Summary of changes for version 20050114:
10103
10104Added 2005 copyright to all module headers.  This affects every module in
10105the core subsystem, iASL compiler, and the utilities.
10106
101071) ACPI CA Core Subsystem:
10108
10109Fixed an issue with the String-to-Buffer conversion code where the string
10110null terminator was not included in the buffer after conversion, but
10111there
10112is existing ASL that assumes the string null terminator is included. This
10113is
10114the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
10115introduced in the previous version when the code was updated to correctly
10116set the converted buffer size as per the ACPI specification. The ACPI
10117spec
10118is ambiguous and will be updated to specify that the null terminator must
10119be
10120included in the converted buffer. This also affects the ToBuffer() ASL
10121operator.
10122
10123Fixed a problem with the Mid() ASL/AML operator where it did not work
10124correctly on Buffer objects. Newly created sub-buffers were not being
10125marked
10126as initialized.
10127
10128
10129Fixed a problem in AcpiTbFindTable where incorrect string compares were
10130performed on the OemId and OemTableId table header fields.  These fields
10131are
10132not null terminated, so strncmp is now used instead of strcmp.
10133
10134Implemented a restriction on the Store() ASL/AML operator to align the
10135behavior with the ACPI specification.  Previously, any object could be
10136used
10137as the source operand.  Now, the only objects that may be used are
10138Integers,
10139Buffers, Strings, Packages, Object References, and DDB Handles.  If
10140necessary, the original behavior can be restored by enabling the
10141EnableInterpreterSlack flag.
10142
10143Enhanced the optional "implicit return" support to allow an implicit
10144return
10145value from methods that are invoked externally via the AcpiEvaluateObject
10146interface.  This enables implicit returns from the _STA and _INI methods,
10147for example.
10148
10149Changed the Revision() ASL/AML operator to return the current version of
10150the
10151AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
10152returned
10153the supported ACPI version (This is the function of the _REV method).
10154
10155Updated the _REV predefined method to return the currently supported
10156version
10157of ACPI, now 3.
10158
10159Implemented batch mode option for the AcpiExec utility (-b).
10160
10161Code and Data Size: Current and previous core subsystem library sizes are
10162shown below. These are the code and data sizes for the acpica.lib
10163produced
10164by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10165any ACPI driver or OSPM code. The debug version of the code includes the
10166debug output trace mechanism and has a much larger code and data size.
10167Note
10168that these values will vary depending on the efficiency of the compiler
10169and
10170the compiler options used during generation.
10171
10172  Previous Release:
10173    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10174    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
10175  Current Release:
10176    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
10177    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
10178
10179----------------------------------------
1018010 December 2004.  Summary of changes for version 20041210:
10181
10182ACPI 3.0 support is nearing completion in both the iASL compiler and the
10183ACPI CA core subsystem.
10184
101851) ACPI CA Core Subsystem:
10186
10187Fixed a problem in the ToDecimalString operator where the resulting
10188string
10189length was incorrectly calculated. The length is now calculated exactly,
10190eliminating incorrect AE_STRING_LIMIT exceptions.
10191
10192Fixed a problem in the ToHexString operator to allow a maximum 200
10193character
10194string to be produced.
10195
10196Fixed a problem in the internal string-to-buffer and buffer-to-buffer
10197copy
10198routine where the length of the resulting buffer was not truncated to the
10199new size (if the target buffer already existed).
10200
10201Code and Data Size: Current and previous core subsystem library sizes are
10202shown below. These are the code and data sizes for the acpica.lib
10203produced
10204by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10205any ACPI driver or OSPM code. The debug version of the code includes the
10206debug output trace mechanism and has a much larger code and data size.
10207Note
10208that these values will vary depending on the efficiency of the compiler
10209and
10210the compiler options used during generation.
10211
10212  Previous Release:
10213    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10214    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
10215  Current Release:
10216    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10217    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
10218
10219
102202) iASL Compiler/Disassembler:
10221
10222Implemented the new ACPI 3.0 resource template macros - DWordSpace,
10223ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
10224Includes support in the disassembler.
10225
10226Implemented support for the new (ACPI 3.0) parameter to the Register
10227macro,
10228AccessSize.
10229
10230Fixed a problem where the _HE resource name for the Interrupt macro was
10231referencing bit 0 instead of bit 1.
10232
10233Implemented check for maximum 255 interrupts in the Interrupt macro.
10234
10235Fixed a problem with the predefined resource descriptor names where
10236incorrect AML code was generated if the offset within the resource buffer
10237was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
10238but did not update the surrounding package lengths.
10239
10240Changes to the Dma macro:  All channels within the channel list must be
10241in
10242the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
10243optional (default is BusMaster).
10244
10245Implemented check for maximum 7 data bytes for the VendorShort macro.
10246
10247The ReadWrite parameter is now optional for the Memory32 and similar
10248macros.
10249
10250----------------------------------------
1025103 December 2004.  Summary of changes for version 20041203:
10252
102531) ACPI CA Core Subsystem:
10254
10255The low-level field insertion/extraction code (exfldio) has been
10256completely
10257rewritten to eliminate unnecessary complexity, bugs, and boundary
10258conditions.
10259
10260Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
10261ToDecimalString
10262operators where the input operand could be inadvertently deleted if no
10263conversion was necessary (e.g., if the input to ToInteger was an Integer
10264object.)
10265
10266Fixed a problem with the ToDecimalString and ToHexString where an
10267incorrect
10268exception code was returned if the resulting string would be > 200 chars.
10269AE_STRING_LIMIT is now returned.
10270
10271Fixed a problem with the Concatenate operator where AE_OK was always
10272returned, even if the operation failed.
10273
10274Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
10275semaphores to be allocated.
10276
10277Code and Data Size: Current and previous core subsystem library sizes are
10278shown below. These are the code and data sizes for the acpica.lib
10279produced
10280by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10281any ACPI driver or OSPM code. The debug version of the code includes the
10282debug output trace mechanism and has a much larger code and data size.
10283Note
10284that these values will vary depending on the efficiency of the compiler
10285and
10286the compiler options used during generation.
10287
10288  Previous Release:
10289    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10290    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10291  Current Release:
10292    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
10293    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
10294
10295
102962) iASL Compiler/Disassembler:
10297
10298Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
10299recently introduced in 20041119.
10300
10301Fixed a problem with the ToUUID macro where the upper nybble of each
10302buffer
10303byte was inadvertently set to zero.
10304
10305----------------------------------------
1030619 November 2004.  Summary of changes for version 20041119:
10307
103081) ACPI CA Core Subsystem:
10309
10310Fixed a problem in the internal ConvertToInteger routine where new
10311integers
10312were not truncated to 32 bits for 32-bit ACPI tables. This routine
10313converts
10314buffers and strings to integers.
10315
10316Implemented support to store a value to an Index() on a String object.
10317This
10318is an ACPI 2.0 feature that had not yet been implemented.
10319
10320Implemented new behavior for storing objects to individual package
10321elements
10322(via the Index() operator). The previous behavior was to invoke the
10323implicit
10324conversion rules if an object was already present at the index.  The new
10325behavior is to simply delete any existing object and directly store the
10326new
10327object. Although the ACPI specification seems unclear on this subject,
10328other
10329ACPI implementations behave in this manner.  (This is the root of the
10330AE_BAD_HEX_CONSTANT issue.)
10331
10332Modified the RSDP memory scan mechanism to support the extended checksum
10333for
10334ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
10335RSDP signature is found with a valid checksum.
10336
10337Code and Data Size: Current and previous core subsystem library sizes are
10338shown below. These are the code and data sizes for the acpica.lib
10339produced
10340by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10341any ACPI driver or OSPM code. The debug version of the code includes the
10342debug output trace mechanism and has a much larger code and data size.
10343Note
10344that these values will vary depending on the efficiency of the compiler
10345and
10346the compiler options used during generation.
10347
10348  Previous Release:
10349    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10350    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10351  Current Release:
10352    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10353    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10354
10355
103562) iASL Compiler/Disassembler:
10357
10358Fixed a missing semicolon in the aslcompiler.y file.
10359
10360----------------------------------------
1036105 November 2004.  Summary of changes for version 20041105:
10362
103631) ACPI CA Core Subsystem:
10364
10365Implemented support for FADT revision 2.  This was an interim table
10366(between
10367ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
10368
10369Implemented optional support to allow uninitialized LocalX and ArgX
10370variables in a control method.  The variables are initialized to an
10371Integer
10372object with a value of zero.  This support is enabled by setting the
10373AcpiGbl_EnableInterpreterSlack flag to TRUE.
10374
10375Implemented support for Integer objects for the SizeOf operator.  Either
103764
10377or 8 is returned, depending on the current integer size (32-bit or 64-
10378bit,
10379depending on the parent table revision).
10380
10381Fixed a problem in the implementation of the SizeOf and ObjectType
10382operators
10383where the operand was resolved to a value too early, causing incorrect
10384return values for some objects.
10385
10386Fixed some possible memory leaks during exceptional conditions.
10387
10388Code and Data Size: Current and previous core subsystem library sizes are
10389shown below. These are the code and data sizes for the acpica.lib
10390produced
10391by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10392any ACPI driver or OSPM code. The debug version of the code includes the
10393debug output trace mechanism and has a much larger code and data size.
10394Note
10395that these values will vary depending on the efficiency of the compiler
10396and
10397the compiler options used during generation.
10398
10399  Previous Release:
10400    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10401    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
10402  Current Release:
10403    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
10404    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
10405
10406
104072) iASL Compiler/Disassembler:
10408
10409Implemented support for all ACPI 3.0 reserved names and methods.
10410
10411Implemented all ACPI 3.0 grammar elements in the front-end, including
10412support for semicolons.
10413
10414Implemented the ACPI 3.0 Function() and ToUUID() macros
10415
10416Fixed a problem in the disassembler where a Scope() operator would not be
10417emitted properly if the target of the scope was in another table.
10418
10419----------------------------------------
1042015 October 2004.  Summary of changes for version 20041015:
10421
10422Note:  ACPI CA is currently undergoing an in-depth and complete formal
10423evaluation to test/verify the following areas. Other suggestions are
10424welcome. This will result in an increase in the frequency of releases and
10425the number of bug fixes in the next few months.
10426  - Functional tests for all ASL/AML operators
10427  - All implicit/explicit type conversions
10428  - Bit fields and operation regions
10429  - 64-bit math support and 32-bit-only "truncated" math support
10430  - Exceptional conditions, both compiler and interpreter
10431  - Dynamic object deletion and memory leaks
10432  - ACPI 3.0 support when implemented
10433  - External interfaces to the ACPI subsystem
10434
10435
104361) ACPI CA Core Subsystem:
10437
10438Fixed two alignment issues on 64-bit platforms - within debug statements
10439in
10440AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
10441Address
10442field within the non-aligned ACPI generic address structure.
10443
10444Fixed a problem in the Increment and Decrement operators where incorrect
10445operand resolution could result in the inadvertent modification of the
10446original integer when the integer is passed into another method as an
10447argument and the arg is then incremented/decremented.
10448
10449Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
10450bit
10451BCD number were truncated during conversion.
10452
10453Fixed a problem in the ToDecimal operator where the length of the
10454resulting
10455string could be set incorrectly too long if the input operand was a
10456Buffer
10457object.
10458
10459Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
10460(0)
10461within a buffer would prematurely terminate a compare between buffer
10462objects.
10463
10464Added a check for string overflow (>200 characters as per the ACPI
10465specification) during the Concatenate operator with two string operands.
10466
10467Code and Data Size: Current and previous core subsystem library sizes are
10468shown below. These are the code and data sizes for the acpica.lib
10469produced
10470by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10471any ACPI driver or OSPM code. The debug version of the code includes the
10472debug output trace mechanism and has a much larger code and data size.
10473Note
10474that these values will vary depending on the efficiency of the compiler
10475and
10476the compiler options used during generation.
10477
10478  Previous Release:
10479    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10480    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
10481  Current Release:
10482    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10483    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
10484
10485
10486
104872) iASL Compiler/Disassembler:
10488
10489Allow the use of the ObjectType operator on uninitialized Locals and Args
10490(returns 0 as per the ACPI specification).
10491
10492Fixed a problem where the compiler would fault if there was a syntax
10493error
10494in the FieldName of all of the various CreateXXXField operators.
10495
10496Disallow the use of lower case letters within the EISAID macro, as per
10497the
10498ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
10499Where
10500U is an uppercase letter and N is a hex digit.
10501
10502
10503----------------------------------------
1050406 October 2004.  Summary of changes for version 20041006:
10505
105061) ACPI CA Core Subsystem:
10507
10508Implemented support for the ACPI 3.0 Timer operator. This ASL function
10509implements a 64-bit timer with 100 nanosecond granularity.
10510
10511Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
10512implement the ACPI 3.0 Timer operator.  This allows the host OS to
10513implement
10514the timer with the best clock available. Also, it keeps the core
10515subsystem
10516out of the clock handling business, since the host OS (usually) performs
10517this function.
10518
10519Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
10520functions use a 64-bit address which is part of the packed ACPI Generic
10521Address Structure. Since the structure is non-aligned, the alignment
10522macros
10523are now used to extract the address to a local variable before use.
10524
10525Fixed a problem where the ToInteger operator assumed all input strings
10526were
10527hexadecimal. The operator now handles both decimal strings and hex
10528strings
10529(prefixed with "0x").
10530
10531Fixed a problem where the string length in the string object created as a
10532result of the internal ConvertToString procedure could be incorrect. This
10533potentially affected all implicit conversions and also the
10534ToDecimalString
10535and ToHexString operators.
10536
10537Fixed two problems in the ToString operator. If the length parameter was
10538zero, an incorrect string object was created and the value of the input
10539length parameter was inadvertently changed from zero to Ones.
10540
10541Fixed a problem where the optional ResourceSource string in the
10542ExtendedIRQ
10543resource macro was ignored.
10544
10545Simplified the interfaces to the internal division functions, reducing
10546code
10547size and complexity.
10548
10549Code and Data Size: Current and previous core subsystem library sizes are
10550shown below. These are the code and data sizes for the acpica.lib
10551produced
10552by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10553any ACPI driver or OSPM code. The debug version of the code includes the
10554debug output trace mechanism and has a much larger code and data size.
10555Note
10556that these values will vary depending on the efficiency of the compiler
10557and
10558the compiler options used during generation.
10559
10560  Previous Release:
10561    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
10562    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
10563  Current Release:
10564    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10565    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
10566
10567
105682) iASL Compiler/Disassembler:
10569
10570Implemented support for the ACPI 3.0 Timer operator.
10571
10572Fixed a problem where the Default() operator was inadvertently ignored in
10573a
10574Switch/Case block.  This was a problem in the translation of the Switch
10575statement to If...Else pairs.
10576
10577Added support to allow a standalone Return operator, with no parentheses
10578(or
10579operands).
10580
10581Fixed a problem with code generation for the ElseIf operator where the
10582translated Else...If parse tree was improperly constructed leading to the
10583loss of some code.
10584
10585----------------------------------------
1058622 September 2004.  Summary of changes for version 20040922:
10587
105881) ACPI CA Core Subsystem:
10589
10590Fixed a problem with the implementation of the LNot() operator where
10591"Ones"
10592was not returned for the TRUE case. Changed the code to return Ones
10593instead
10594of (!Arg) which was usually 1. This change affects iASL constant folding
10595for
10596this operator also.
10597
10598Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
10599not
10600initialized properly -- Now zero the entire buffer in this case where the
10601buffer already exists.
10602
10603Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
10604Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
10605related code considerably. This will require changes/updates to all OS
10606interface layers (OSLs.)
10607
10608Implemented a new external interface, AcpiInstallExceptionHandler, to
10609allow
10610a system exception handler to be installed. This handler is invoked upon
10611any
10612run-time exception that occurs during control method execution.
10613
10614Added support for the DSDT in AcpiTbFindTable. This allows the
10615DataTableRegion() operator to access the local copy of the DSDT.
10616
10617Code and Data Size: Current and previous core subsystem library sizes are
10618shown below. These are the code and data sizes for the acpica.lib
10619produced
10620by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10621any ACPI driver or OSPM code. The debug version of the code includes the
10622debug output trace mechanism and has a much larger code and data size.
10623Note
10624that these values will vary depending on the efficiency of the compiler
10625and
10626the compiler options used during generation.
10627
10628  Previous Release:
10629    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
10630    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
10631  Current Release:
10632    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
10633    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
10634
10635
106362) iASL Compiler/Disassembler:
10637
10638Fixed a problem with constant folding and the LNot operator. LNot was
10639returning 1 in the TRUE case, not Ones as per the ACPI specification.
10640This
10641could result in the generation of an incorrect folded/reduced constant.
10642
10643End-Of-File is now allowed within a "//"-style comment.  A parse error no
10644longer occurs if such a comment is at the very end of the input ASL
10645source
10646file.
10647
10648Implemented the "-r" option to override the Revision in the table header.
10649The initial use of this option will be to simplify the evaluation of the
10650AML
10651interpreter by allowing a single ASL source module to be compiled for
10652either
1065332-bit or 64-bit integers.
10654
10655
10656----------------------------------------
1065727 August 2004.  Summary of changes for version 20040827:
10658
106591) ACPI CA Core Subsystem:
10660
10661- Implemented support for implicit object conversion in the non-numeric
10662logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
10663and
10664LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
10665the second operand is implicitly converted on the fly to match the type
10666of
10667the first operand.  For example:
10668
10669    LEqual (Source1, Source2)
10670
10671Source1 and Source2 must each evaluate to an integer, a string, or a
10672buffer.
10673The data type of Source1 dictates the required type of Source2. Source2
10674is
10675implicitly converted if necessary to match the type of Source1.
10676
10677- Updated and corrected the behavior of the string conversion support.
10678The
10679rules concerning conversion of buffers to strings (according to the ACPI
10680specification) are as follows:
10681
10682ToDecimalString - explicit byte-wise conversion of buffer to string of
10683decimal values (0-255) separated by commas. ToHexString - explicit byte-
10684wise
10685conversion of buffer to string of hex values (0-FF) separated by commas.
10686ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
10687byte
10688copy with no transform except NULL terminated. Any other implicit buffer-
10689to-
10690string conversion - byte-wise conversion of buffer to string of hex
10691values
10692(0-FF) separated by spaces.
10693
10694- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
10695
10696- Fixed a problem in AcpiNsGetPathnameLength where the returned length
10697was
10698one byte too short in the case of a node in the root scope.  This could
10699cause a fault during debug output.
10700
10701- Code and Data Size: Current and previous core subsystem library sizes
10702are
10703shown below.  These are the code and data sizes for the acpica.lib
10704produced
10705by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10706any ACPI driver or OSPM code.  The debug version of the code includes the
10707debug output trace mechanism and has a much larger code and data size.
10708Note
10709that these values will vary depending on the efficiency of the compiler
10710and
10711the compiler options used during generation.
10712
10713  Previous Release:
10714    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
10715    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
10716  Current Release:
10717    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
10718    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
10719
10720
107212) iASL Compiler/Disassembler:
10722
10723- Fixed a Linux generation error.
10724
10725
10726----------------------------------------
1072716 August 2004.  Summary of changes for version 20040816:
10728
107291) ACPI CA Core Subsystem:
10730
10731Designed and implemented support within the AML interpreter for the so-
10732called "implicit return".  This support returns the result of the last
10733ASL
10734operation within a control method, in the absence of an explicit Return()
10735operator.  A few machines depend on this behavior, even though it is not
10736explicitly supported by the ASL language.  It is optional support that
10737can
10738be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
10739
10740Removed support for the PCI_Config address space from the internal low
10741level
10742hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
10743support was not used internally, and would not work correctly anyway
10744because
10745the PCI bus number and segment number were not supported.  There are
10746separate interfaces for PCI configuration space access because of the
10747unique
10748interface.
10749
10750Code and Data Size: Current and previous core subsystem library sizes are
10751shown below.  These are the code and data sizes for the acpica.lib
10752produced
10753by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10754any ACPI driver or OSPM code.  The debug version of the code includes the
10755debug output trace mechanism and has a much larger code and data size.
10756Note
10757that these values will vary depending on the efficiency of the compiler
10758and
10759the compiler options used during generation.
10760
10761  Previous Release:
10762    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10763    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
10764  Current Release:
10765    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
10766    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
10767
10768
107692) iASL Compiler/Disassembler:
10770
10771Fixed a problem where constants in ASL expressions at the root level (not
10772within a control method) could be inadvertently truncated during code
10773generation.  This problem was introduced in the 20040715 release.
10774
10775
10776----------------------------------------
1077715 July 2004.  Summary of changes for version 20040715:
10778
107791) ACPI CA Core Subsystem:
10780
10781Restructured the internal HW GPE interfaces to pass/track the current
10782state
10783of interrupts (enabled/disabled) in order to avoid possible deadlock and
10784increase flexibility of the interfaces.
10785
10786Implemented a "lexicographical compare" for String and Buffer objects
10787within
10788the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
10789-
10790as per further clarification to the ACPI specification.  Behavior is
10791similar
10792to C library "strcmp".
10793
10794Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
10795external function.  In the 32-bit non-debug case, the stack use has been
10796reduced from 168 bytes to 32 bytes.
10797
10798Deployed a new run-time configuration flag,
10799AcpiGbl_EnableInterpreterSlack,
10800whose purpose is to allow the AML interpreter to forgive certain bad AML
10801constructs.  Default setting is FALSE.
10802
10803Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
10804IO
10805support code.  If enabled, it allows field access to go beyond the end of
10806a
10807region definition if the field is within the region length rounded up to
10808the
10809next access width boundary (a common coding error.)
10810
10811Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
10812ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
10813these
10814symbols are lowercased by the latest version of the AcpiSrc tool.
10815
10816The prototypes for the PCI interfaces in acpiosxf.h have been updated to
10817rename "Register" to simply "Reg" to prevent certain compilers from
10818complaining.
10819
10820Code and Data Size: Current and previous core subsystem library sizes are
10821shown below.  These are the code and data sizes for the acpica.lib
10822produced
10823by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10824any ACPI driver or OSPM code.  The debug version of the code includes the
10825debug output trace mechanism and has a much larger code and data size.
10826Note
10827that these values will vary depending on the efficiency of the compiler
10828and
10829the compiler options used during generation.
10830
10831  Previous Release:
10832    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10833    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
10834  Current Release:
10835    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
10836    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
10837
10838
108392) iASL Compiler/Disassembler:
10840
10841Implemented full support for Package objects within the Case() operator.
10842Note: The Break() operator is currently not supported within Case blocks
10843(TermLists) as there is some question about backward compatibility with
10844ACPI
108451.0 interpreters.
10846
10847
10848Fixed a problem where complex terms were not supported properly within
10849the
10850Switch() operator.
10851
10852Eliminated extraneous warning for compiler-emitted reserved names of the
10853form "_T_x".  (Used in Switch/Case operators.)
10854
10855Eliminated optimization messages for "_T_x" objects and small constants
10856within the DefinitionBlock operator.
10857
10858
10859----------------------------------------
1086015 June 2004.  Summary of changes for version 20040615:
10861
108621) ACPI CA Core Subsystem:
10863
10864Implemented support for Buffer and String objects (as per ACPI 2.0) for
10865the
10866following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
10867LLessEqual.
10868
10869All directory names in the entire source package are lower case, as they
10870were in earlier releases.
10871
10872Implemented "Disassemble" command in the AML debugger that will
10873disassemble
10874a single control method.
10875
10876Code and Data Size: Current and previous core subsystem library sizes are
10877shown below.  These are the code and data sizes for the acpica.lib
10878produced
10879by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10880any ACPI driver or OSPM code.  The debug version of the code includes the
10881debug output trace mechanism and has a much larger code and data size.
10882Note
10883that these values will vary depending on the efficiency of the compiler
10884and
10885the compiler options used during generation.
10886
10887  Previous Release:
10888    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
10889    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
10890
10891  Current Release:
10892    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
10893    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
10894
10895
108962) iASL Compiler/Disassembler:
10897
10898Implemented support for Buffer and String objects (as per ACPI 2.0) for
10899the
10900following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
10901LLessEqual.
10902
10903All directory names in the entire source package are lower case, as they
10904were in earlier releases.
10905
10906Fixed a fault when using the -g or -d<nofilename> options if the FADT was
10907not found.
10908
10909Fixed an issue with the Windows version of the compiler where later
10910versions
10911of Windows place the FADT in the registry under the name "FADT" and not
10912"FACP" as earlier versions did.  This applies when using the -g or -
10913d<nofilename> options.  The compiler now looks for both strings as
10914necessary.
10915
10916Fixed a problem with compiler namepath optimization where a namepath
10917within
10918the Scope() operator could not be optimized if the namepath was a subpath
10919of
10920the current scope path.
10921
10922----------------------------------------
1092327 May 2004.  Summary of changes for version 20040527:
10924
109251) ACPI CA Core Subsystem:
10926
10927Completed a new design and implementation for EBDA (Extended BIOS Data
10928Area)
10929support in the RSDP scan code.  The original code improperly scanned for
10930the
10931EBDA by simply scanning from memory location 0 to 0x400.  The correct
10932method
10933is to first obtain the EBDA pointer from within the BIOS data area, then
10934scan 1K of memory starting at the EBDA pointer.  There appear to be few
10935if
10936any machines that place the RSDP in the EBDA, however.
10937
10938Integrated a fix for a possible fault during evaluation of BufferField
10939arguments.  Obsolete code that was causing the problem was removed.
10940
10941Found and fixed a problem in the Field Support Code where data could be
10942corrupted on a bit field read that starts on an aligned boundary but does
10943not end on an aligned boundary.  Merged the read/write "datum length"
10944calculation code into a common procedure.
10945
10946Rolled in a couple of changes to the FreeBSD-specific header.
10947
10948
10949Code and Data Size: Current and previous core subsystem library sizes are
10950shown below.  These are the code and data sizes for the acpica.lib
10951produced
10952by the Microsoft Visual C++ 6.0 compiler, and these values do not include
10953any ACPI driver or OSPM code.  The debug version of the code includes the
10954debug output trace mechanism and has a much larger code and data size.
10955Note
10956that these values will vary depending on the efficiency of the compiler
10957and
10958the compiler options used during generation.
10959
10960  Previous Release:
10961    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
10962    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
10963  Current Release:
10964    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
10965    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
10966
10967
109682) iASL Compiler/Disassembler:
10969
10970Fixed a generation warning produced by some overly-verbose compilers for
10971a
1097264-bit constant.
10973
10974----------------------------------------
1097514 May 2004.  Summary of changes for version 20040514:
10976
109771) ACPI CA Core Subsystem:
10978
10979Fixed a problem where hardware GPE enable bits sometimes not set properly
10980during and after GPE method execution.  Result of 04/27 changes.
10981
10982Removed extra "clear all GPEs" when sleeping/waking.
10983
10984Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
10985AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
10986to
10987the new AcpiEv* calls as appropriate.
10988
10989ACPI_OS_NAME was removed from the OS-specific headers.  The default name
10990is
10991now "Microsoft Windows NT" for maximum compatibility.  However this can
10992be
10993changed by modifying the acconfig.h file.
10994
10995Allow a single invocation of AcpiInstallNotifyHandler for a handler that
10996traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
10997
10998Run _INI methods on ThermalZone objects.  This is against the ACPI
10999specification, but there is apparently ASL code in the field that has
11000these
11001_INI methods, and apparently "other" AML interpreters execute them.
11002
11003Performed a full 16/32/64 bit lint that resulted in some small changes.
11004
11005Added a sleep simulation command to the AML debugger to test sleep code.
11006
11007Code and Data Size: Current and previous core subsystem library sizes are
11008shown below.  These are the code and data sizes for the acpica.lib
11009produced
11010by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11011any ACPI driver or OSPM code.  The debug version of the code includes the
11012debug output trace mechanism and has a much larger code and data size.
11013Note
11014that these values will vary depending on the efficiency of the compiler
11015and
11016the compiler options used during generation.
11017
11018  Previous Release:
11019    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11020    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
11021  Current Release:
11022    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11023    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
11024
11025----------------------------------------
1102627 April 2004.  Summary of changes for version 20040427:
11027
110281) ACPI CA Core Subsystem:
11029
11030Completed a major overhaul of the GPE handling within ACPI CA.  There are
11031now three types of GPEs:  wake-only, runtime-only, and combination
11032wake/run.
11033The only GPEs allowed to be combination wake/run are for button-style
11034devices such as a control-method power button, control-method sleep
11035button,
11036or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
11037not
11038referenced by any _PRW methods are marked for "runtime" and hardware
11039enabled.  Any GPE that is referenced by a _PRW method is marked for
11040"wake"
11041(and disabled at runtime).  However, at sleep time, only those GPEs that
11042have been specifically enabled for wake via the AcpiEnableGpe interface
11043will
11044actually be hardware enabled.
11045
11046A new external interface has been added, AcpiSetGpeType(), that is meant
11047to
11048be used by device drivers to force a GPE to a particular type.  It will
11049be
11050especially useful for the drivers for the button devices mentioned above.
11051
11052Completed restructuring of the ACPI CA initialization sequence so that
11053default operation region handlers are installed before GPEs are
11054initialized
11055and the _PRW methods are executed.  This will prevent errors when the
11056_PRW
11057methods attempt to access system memory or I/O space.
11058
11059GPE enable/disable no longer reads the GPE enable register.  We now keep
11060the
11061enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
11062thus no longer depend on the hardware to maintain these bits.
11063
11064Always clear the wake status and fixed/GPE status bits before sleep, even
11065for state S5.
11066
11067Improved the AML debugger output for displaying the GPE blocks and their
11068current status.
11069
11070Added new strings for the _OSI method, of the form "Windows 2001 SPx"
11071where
11072x = 0,1,2,3,4.
11073
11074Fixed a problem where the physical address was incorrectly calculated
11075when
11076the Load() operator was used to directly load from an Operation Region
11077(vs.
11078loading from a Field object.)  Also added check for minimum table length
11079for
11080this case.
11081
11082Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
11083mutex release.
11084
11085Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
11086consistency with the other fields returned.
11087
11088Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
11089structure for each GPE in the system, so the size of this structure is
11090important.
11091
11092CPU stack requirement reduction:  Cleaned up the method execution and
11093object
11094evaluation paths so that now a parameter structure is passed, instead of
11095copying the various method parameters over and over again.
11096
11097In evregion.c:  Correctly exit and reenter the interpreter region if and
11098only if dispatching an operation region request to a user-installed
11099handler.
11100Do not exit/reenter when dispatching to a default handler (e.g., default
11101system memory or I/O handlers)
11102
11103
11104Notes for updating drivers for the new GPE support.  The following
11105changes
11106must be made to ACPI-related device drivers that are attached to one or
11107more
11108GPEs: (This information will be added to the ACPI CA Programmer
11109Reference.)
11110
111111) AcpiInstallGpeHandler no longer automatically enables the GPE, you
11112must
11113explicitly call AcpiEnableGpe.
111142) There is a new interface called AcpiSetGpeType. This should be called
11115before enabling the GPE.  Also, this interface will automatically disable
11116the GPE if it is currently enabled.
111173) AcpiEnableGpe no longer supports a GPE type flag.
11118
11119Specific drivers that must be changed:
111201) EC driver:
11121    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
11122AeGpeHandler, NULL);
11123    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
11124    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
11125
111262) Button Drivers (Power, Lid, Sleep):
11127Run _PRW method under parent device
11128If _PRW exists: /* This is a control-method button */
11129    Extract GPE number and possibly GpeDevice
11130    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
11131    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
11132
11133For all other devices that have _PRWs, we automatically set the GPE type
11134to
11135ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
11136This
11137must be done on a selective basis, usually requiring some kind of user
11138app
11139to allow the user to pick the wake devices.
11140
11141
11142Code and Data Size: Current and previous core subsystem library sizes are
11143shown below.  These are the code and data sizes for the acpica.lib
11144produced
11145by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11146any ACPI driver or OSPM code.  The debug version of the code includes the
11147debug output trace mechanism and has a much larger code and data size.
11148Note
11149that these values will vary depending on the efficiency of the compiler
11150and
11151the compiler options used during generation.
11152
11153  Previous Release:
11154    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
11155    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
11156  Current Release:
11157
11158    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
11159    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
11160
11161
11162
11163----------------------------------------
1116402 April 2004.  Summary of changes for version 20040402:
11165
111661) ACPI CA Core Subsystem:
11167
11168Fixed an interpreter problem where an indirect store through an ArgX
11169parameter was incorrectly applying the "implicit conversion rules" during
11170the store.  From the ACPI specification: "If the target is a method local
11171or
11172argument (LocalX or ArgX), no conversion is performed and the result is
11173stored directly to the target".  The new behavior is to disable implicit
11174conversion during ALL stores to an ArgX.
11175
11176Changed the behavior of the _PRW method scan to ignore any and all errors
11177returned by a given _PRW.  This prevents the scan from aborting from the
11178failure of any single _PRW.
11179
11180Moved the runtime configuration parameters from the global init procedure
11181to
11182static variables in acglobal.h.  This will allow the host to override the
11183default values easily.
11184
11185Code and Data Size: Current and previous core subsystem library sizes are
11186shown below.  These are the code and data sizes for the acpica.lib
11187produced
11188by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11189any ACPI driver or OSPM code.  The debug version of the code includes the
11190debug output trace mechanism and has a much larger code and data size.
11191Note
11192that these values will vary depending on the efficiency of the compiler
11193and
11194the compiler options used during generation.
11195
11196  Previous Release:
11197    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
11198    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
11199  Current Release:
11200    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
11201    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
11202
11203
112042) iASL Compiler/Disassembler:
11205
11206iASL now fully disassembles SSDTs.  However, External() statements are
11207not
11208generated automatically for unresolved symbols at this time.  This is a
11209planned feature for future implementation.
11210
11211Fixed a scoping problem in the disassembler that occurs when the type of
11212the
11213target of a Scope() operator is overridden.  This problem caused an
11214incorrectly nested internal namespace to be constructed.
11215
11216Any warnings or errors that are emitted during disassembly are now
11217commented
11218out automatically so that the resulting file can be recompiled without
11219any
11220hand editing.
11221
11222----------------------------------------
1122326 March 2004.  Summary of changes for version 20040326:
11224
112251) ACPI CA Core Subsystem:
11226
11227Implemented support for "wake" GPEs via interaction between GPEs and the
11228_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
11229identified as a WAKE GPE and by default will no longer be enabled at
11230runtime.  Previously, we were blindly enabling all GPEs with a
11231corresponding
11232_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
11233We
11234believe this has been the cause of thousands of "spurious" GPEs on some
11235systems.
11236
11237This new GPE behavior is can be reverted to the original behavior (enable
11238ALL GPEs at runtime) via a runtime flag.
11239
11240Fixed a problem where aliased control methods could not access objects
11241properly.  The proper scope within the namespace was not initialized
11242(transferred to the target of the aliased method) before executing the
11243target method.
11244
11245Fixed a potential race condition on internal object deletion on the
11246return
11247object in AcpiEvaluateObject.
11248
11249Integrated a fix for resource descriptors where both _MEM and _MTP were
11250being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
11251wide, 0x0F instead of 0x03.)
11252
11253Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
11254preventing
11255a
11256fault in some cases.
11257
11258Updated Notify() values for debug statements in evmisc.c
11259
11260Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
11261
11262Code and Data Size: Current and previous core subsystem library sizes are
11263shown below.  These are the code and data sizes for the acpica.lib
11264produced
11265by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11266any ACPI driver or OSPM code.  The debug version of the code includes the
11267debug output trace mechanism and has a much larger code and data size.
11268Note
11269that these values will vary depending on the efficiency of the compiler
11270and
11271the compiler options used during generation.
11272
11273  Previous Release:
11274
11275    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
11276    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
11277  Current Release:
11278    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
11279    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
11280
11281----------------------------------------
1128211 March 2004.  Summary of changes for version 20040311:
11283
112841) ACPI CA Core Subsystem:
11285
11286Fixed a problem where errors occurring during the parse phase of control
11287method execution did not abort cleanly.  For example, objects created and
11288installed in the namespace were not deleted.  This caused all subsequent
11289invocations of the method to return the AE_ALREADY_EXISTS exception.
11290
11291Implemented a mechanism to force a control method to "Serialized"
11292execution
11293if the method attempts to create namespace objects. (The root of the
11294AE_ALREADY_EXISTS problem.)
11295
11296Implemented support for the predefined _OSI "internal" control method.
11297Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
11298and
11299"Windows 2001.1", and can be easily upgraded for new strings as
11300necessary.
11301This feature will allow "other" operating systems to execute the fully
11302tested, "Windows" code path through the ASL code
11303
11304Global Lock Support:  Now allows multiple acquires and releases with any
11305internal thread.  Removed concept of "owning thread" for this special
11306mutex.
11307
11308Fixed two functions that were inappropriately declaring large objects on
11309the
11310CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
11311during
11312method execution considerably.
11313
11314Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
11315S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
11316
11317Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
11318defined on the machine.
11319
11320Implemented two runtime options:  One to force all control method
11321execution
11322to "Serialized" to mimic Windows behavior, another to disable _OSI
11323support
11324if it causes problems on a given machine.
11325
11326Code and Data Size: Current and previous core subsystem library sizes are
11327shown below.  These are the code and data sizes for the acpica.lib
11328produced
11329by the Microsoft Visual C++ 6.0 compiler, and these values do not include
11330any ACPI driver or OSPM code.  The debug version of the code includes the
11331debug output trace mechanism and has a much larger code and data size.
11332Note
11333that these values will vary depending on the efficiency of the compiler
11334and
11335the compiler options used during generation.
11336
11337  Previous Release:
11338    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
11339    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
11340  Current Release:
11341    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
11342    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
11343
113442) iASL Compiler/Disassembler:
11345
11346Fixed an array size problem for FreeBSD that would cause the compiler to
11347fault.
11348
11349----------------------------------------
1135020 February 2004.  Summary of changes for version 20040220:
11351
11352
113531) ACPI CA Core Subsystem:
11354
11355Implemented execution of _SxD methods for Device objects in the
11356GetObjectInfo interface.
11357
11358Fixed calls to _SST method to pass the correct arguments.
11359
11360Added a call to _SST on wake to restore to "working" state.
11361
11362Check for End-Of-Buffer failure case in the WalkResources interface.
11363
11364Integrated fix for 64-bit alignment issue in acglobal.h by moving two
11365structures to the beginning of the file.
11366
11367After wake, clear GPE status register(s) before enabling GPEs.
11368
11369After wake, clear/enable power button.  (Perhaps we should clear/enable
11370all
11371fixed events upon wake.)
11372
11373Fixed a couple of possible memory leaks in the Namespace manager.
11374
11375Integrated latest acnetbsd.h file.
11376
11377----------------------------------------
1137811 February 2004.  Summary of changes for version 20040211:
11379
11380
113811) ACPI CA Core Subsystem:
11382
11383Completed investigation and implementation of the call-by-reference
11384mechanism for control method arguments.
11385
11386Fixed a problem where a store of an object into an indexed package could
11387fail if the store occurs within a different method than the method that
11388created the package.
11389
11390Fixed a problem where the ToDecimal operator could return incorrect
11391results.
11392
11393Fixed a problem where the CopyObject operator could fail on some of the
11394more
11395obscure objects (e.g., Reference objects.)
11396
11397Improved the output of the Debug object to display buffer, package, and
11398index objects.
11399
11400Fixed a problem where constructs of the form "RefOf (ArgX)" did not
11401return
11402the expected result.
11403
11404Added permanent ACPI_REPORT_ERROR macros for all instances of the
11405ACPI_AML_INTERNAL exception.
11406
11407Integrated latest version of acfreebsd.h
11408
11409----------------------------------------
1141016 January 2004.  Summary of changes for version 20040116:
11411
11412The purpose of this release is primarily to update the copyright years in
11413each module, thus causing a huge number of diffs.  There are a few small
11414functional changes, however.
11415
114161) ACPI CA Core Subsystem:
11417
11418Improved error messages when there is a problem finding one or more of
11419the
11420required base ACPI tables
11421
11422Reintroduced the definition of APIC_HEADER in actbl.h
11423
11424Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
11425
11426Removed extraneous reference to NewObj in dsmthdat.c
11427
114282) iASL compiler
11429
11430Fixed a problem introduced in December that disabled the correct
11431disassembly
11432of Resource Templates
11433
11434
11435----------------------------------------
1143603 December 2003.  Summary of changes for version 20031203:
11437
114381) ACPI CA Core Subsystem:
11439
11440Changed the initialization of Operation Regions during subsystem
11441init to perform two entire walks of the ACPI namespace; The first
11442to initialize the regions themselves, the second to execute the
11443_REG methods.  This fixed some interdependencies across _REG
11444methods found on some machines.
11445
11446Fixed a problem where a Store(Local0, Local1) could simply update
11447the object reference count, and not create a new copy of the
11448object if the Local1 is uninitialized.
11449
11450Implemented support for the _SST reserved method during sleep
11451transitions.
11452
11453Implemented support to clear the SLP_TYP and SLP_EN bits when
11454waking up, this is apparently required by some machines.
11455
11456When sleeping, clear the wake status only if SleepState is not S5.
11457
11458Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
11459pointer arithmetic advanced a string pointer too far.
11460
11461Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
11462could be returned if the requested table has not been loaded.
11463
11464Within the support for IRQ resources, restructured the handling of
11465the active and edge/level bits.
11466
11467Fixed a few problems in AcpiPsxExecute() where memory could be
11468leaked under certain error conditions.
11469
11470Improved error messages for the cases where the ACPI mode could
11471not be entered.
11472
11473Code and Data Size: Current and previous core subsystem library
11474sizes are shown below.  These are the code and data sizes for the
11475acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11476these values do not include any ACPI driver or OSPM code.  The
11477debug version of the code includes the debug output trace
11478mechanism and has a much larger code and data size.  Note that
11479these values will vary depending on the efficiency of the compiler
11480and the compiler options used during generation.
11481
11482  Previous Release (20031029):
11483    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
11484    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
11485  Current Release:
11486    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
11487    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
11488
114892) iASL Compiler/Disassembler:
11490
11491Implemented a fix for the iASL disassembler where a bad index was
11492generated.  This was most noticeable on 64-bit platforms
11493
11494
11495----------------------------------------
1149629 October 2003.  Summary of changes for version 20031029:
11497
114981) ACPI CA Core Subsystem:
11499
11500
11501Fixed a problem where a level-triggered GPE with an associated
11502_Lxx control method was incorrectly cleared twice.
11503
11504Fixed a problem with the Field support code where an access can
11505occur beyond the end-of-region if the field is non-aligned but
11506extends to the very end of the parent region (resulted in an
11507AE_AML_REGION_LIMIT exception.)
11508
11509Fixed a problem with ACPI Fixed Events where an RT Clock handler
11510would not get invoked on an RTC event.  The RTC event bitmasks for
11511the PM1 registers were not being initialized properly.
11512
11513Implemented support for executing _STA and _INI methods for
11514Processor objects.  Although this is currently not part of the
11515ACPI specification, there is existing ASL code that depends on the
11516init-time execution of these methods.
11517
11518Implemented and deployed a GetDescriptorName function to decode
11519the various types of internal descriptors.  Guards against null
11520descriptors during debug output also.
11521
11522Implemented and deployed a GetNodeName function to extract the 4-
11523character namespace node name.  This function simplifies the debug
11524and error output, as well as guarding against null pointers during
11525output.
11526
11527Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
11528simplify the debug and error output of 64-bit integers.  This
11529macro replaces the HIDWORD and LODWORD macros for dumping these
11530integers.
11531
11532Updated the implementation of the Stall() operator to only call
11533AcpiOsStall(), and also return an error if the operand is larger
11534than 255.  This preserves the required behavior of not
11535relinquishing the processor, as would happen if AcpiOsSleep() was
11536called for "long stalls".
11537
11538Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
11539initialized are now treated as NOOPs.
11540
11541Cleaned up a handful of warnings during 64-bit generation.
11542
11543Fixed a reported error where and incorrect GPE number was passed
11544to the GPE dispatch handler.  This value is only used for error
11545output, however.  Used this opportunity to clean up and streamline
11546the GPE dispatch code.
11547
11548Code and Data Size: Current and previous core subsystem library
11549sizes are shown below.  These are the code and data sizes for the
11550acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11551these values do not include any ACPI driver or OSPM code.  The
11552
11553debug version of the code includes the debug output trace
11554mechanism and has a much larger code and data size.  Note that
11555these values will vary depending on the efficiency of the compiler
11556and the compiler options used during generation.
11557
11558  Previous Release (20031002):
11559    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
11560    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
11561  Current Release:
11562    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
11563    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
11564
11565
115662) iASL Compiler/Disassembler:
11567
11568Updated the iASL compiler to return an error if the operand to the
11569Stall() operator is larger than 255.
11570
11571
11572----------------------------------------
1157302 October 2003.  Summary of changes for version 20031002:
11574
11575
115761) ACPI CA Core Subsystem:
11577
11578Fixed a problem with Index Fields where the index was not
11579incremented for fields that require multiple writes to the
11580index/data registers (Fields that are wider than the data
11581register.)
11582
11583Fixed a problem with all Field objects where a write could go
11584beyond the end-of-field if the field was larger than the access
11585granularity and therefore required multiple writes to complete the
11586request.  An extra write beyond the end of the field could happen
11587inadvertently.
11588
11589Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
11590would incorrectly be returned if the width of the Data Register
11591was larger than the specified field access width.
11592
11593Completed fixes for LoadTable() and Unload() and verified their
11594operation.  Implemented full support for the "DdbHandle" object
11595throughout the ACPI CA subsystem.
11596
11597Implemented full support for the MADT and ECDT tables in the ACPI
11598CA header files.  Even though these tables are not directly
11599consumed by ACPI CA, the header definitions are useful for ACPI
11600device drivers.
11601
11602Integrated resource descriptor fixes posted to the Linux ACPI
11603list.  This included checks for minimum descriptor length, and
11604support for trailing NULL strings within descriptors that have
11605optional string elements.
11606
11607Code and Data Size: Current and previous core subsystem library
11608sizes are shown below.  These are the code and data sizes for the
11609acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11610these values do not include any ACPI driver or OSPM code.  The
11611debug version of the code includes the debug output trace
11612mechanism and has a much larger code and data size.  Note that
11613these values will vary depending on the efficiency of the compiler
11614and the compiler options used during generation.
11615
11616  Previous Release (20030918):
11617    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
11618    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
11619  Current Release:
11620    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
11621    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
11622
11623
116242) iASL Compiler:
11625
11626Implemented detection of non-ASCII characters within the input
11627source ASL file.  This catches attempts to compile binary (AML)
11628files early in the compile, with an informative error message.
11629
11630Fixed a problem where the disassembler would fault if the output
11631filename could not be generated or if the output file could not be
11632opened.
11633
11634----------------------------------------
1163518 September 2003.  Summary of changes for version 20030918:
11636
11637
116381) ACPI CA Core Subsystem:
11639
11640Found and fixed a longstanding problem with the late execution of
11641the various deferred AML opcodes (such as Operation Regions,
11642Buffer Fields, Buffers, and Packages).  If the name string
11643specified for the name of the new object placed the object in a
11644scope other than the current scope, the initialization/execution
11645of the opcode failed.  The solution to this problem was to
11646implement a mechanism where the late execution of such opcodes
11647does not attempt to lookup/create the name a second time in an
11648incorrect scope.  This fixes the "region size computed
11649incorrectly" problem.
11650
11651Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
11652Global Lock AE_BAD_PARAMETER error.
11653
11654Fixed several 64-bit issues with prototypes, casting and data
11655types.
11656
11657Removed duplicate prototype from acdisasm.h
11658
11659Fixed an issue involving EC Operation Region Detach (Shaohua Li)
11660
11661Code and Data Size: Current and previous core subsystem library
11662sizes are shown below.  These are the code and data sizes for the
11663acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11664these values do not include any ACPI driver or OSPM code.  The
11665debug version of the code includes the debug output trace
11666mechanism and has a much larger code and data size.  Note that
11667these values will vary depending on the efficiency of the compiler
11668and the compiler options used during generation.
11669
11670  Previous Release:
11671
11672    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
11673    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
11674  Current Release:
11675    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
11676    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
11677
11678
116792) Linux:
11680
11681Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
11682correct sleep time in seconds.
11683
11684----------------------------------------
1168514 July 2003.  Summary of changes for version 20030619:
11686
116871) ACPI CA Core Subsystem:
11688
11689Parse SSDTs in order discovered, as opposed to reverse order
11690(Hrvoje Habjanic)
11691
11692Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
11693Klausner,
11694   Nate Lawson)
11695
11696
116972) Linux:
11698
11699Dynamically allocate SDT list (suggested by Andi Kleen)
11700
11701proc function return value cleanups (Andi Kleen)
11702
11703Correctly handle NMI watchdog during long stalls (Andrew Morton)
11704
11705Make it so acpismp=force works (reported by Andrew Morton)
11706
11707
11708----------------------------------------
1170919 June 2003.  Summary of changes for version 20030619:
11710
117111) ACPI CA Core Subsystem:
11712
11713Fix To/FromBCD, eliminating the need for an arch-specific #define.
11714
11715Do not acquire a semaphore in the S5 shutdown path.
11716
11717Fix ex_digits_needed for 0. (Takayoshi Kochi)
11718
11719Fix sleep/stall code reversal. (Andi Kleen)
11720
11721Revert a change having to do with control method calling
11722semantics.
11723
117242) Linux:
11725
11726acpiphp update (Takayoshi Kochi)
11727
11728Export acpi_disabled for sonypi (Stelian Pop)
11729
11730Mention acpismp=force in config help
11731
11732Re-add acpitable.c and acpismp=force. This improves backwards
11733
11734compatibility and also cleans up the code to a significant degree.
11735
11736Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
11737
11738----------------------------------------
1173922 May 2003.  Summary of changes for version 20030522:
11740
117411) ACPI CA Core Subsystem:
11742
11743Found and fixed a reported problem where an AE_NOT_FOUND error
11744occurred occasionally during _BST evaluation.  This turned out to
11745be an Owner ID allocation issue where a called method did not get
11746a new ID assigned to it.  Eventually, (after 64k calls), the Owner
11747ID UINT16 would wraparound so that the ID would be the same as the
11748caller's and the called method would delete the caller's
11749namespace.
11750
11751Implemented extended error reporting for control methods that are
11752aborted due to a run-time exception.  Output includes the exact
11753AML instruction that caused the method abort, a dump of the method
11754locals and arguments at the time of the abort, and a trace of all
11755nested control method calls.
11756
11757Modified the interpreter to allow the creation of buffers of zero
11758length from the AML code. Implemented new code to ensure that no
11759attempt is made to actually allocate a memory buffer (of length
11760zero) - instead, a simple buffer object with a NULL buffer pointer
11761and length zero is created.  A warning is no longer issued when
11762the AML attempts to create a zero-length buffer.
11763
11764Implemented a workaround for the "leading asterisk issue" in
11765_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
11766asterisk is automatically removed if present in any HID, UID, or
11767CID strings.  The iASL compiler will still flag this asterisk as
11768an error, however.
11769
11770Implemented full support for _CID methods that return a package of
11771multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
11772now additionally returns a device _CID list if present.  This
11773required a change to the external interface in order to pass an
11774ACPI_BUFFER object as a parameter since the _CID list is of
11775variable length.
11776
11777Fixed a problem with the new AE_SAME_HANDLER exception where
11778handler initialization code did not know about this exception.
11779
11780Code and Data Size: Current and previous core subsystem library
11781sizes are shown below.  These are the code and data sizes for the
11782acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
11783these values do not include any ACPI driver or OSPM code.  The
11784debug version of the code includes the debug output trace
11785mechanism and has a much larger code and data size.  Note that
11786these values will vary depending on the efficiency of the compiler
11787and the compiler options used during generation.
11788
11789  Previous Release (20030509):
11790    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
11791    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
11792  Current Release:
11793    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
11794    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
11795
11796
117972) Linux:
11798
11799Fixed a bug in which we would reinitialize the ACPI interrupt
11800after it was already working, thus disabling all ACPI and the IRQs
11801for any other device sharing the interrupt. (Thanks to Stian
11802Jordet)
11803
11804Toshiba driver update (John Belmonte)
11805
11806Return only 0 or 1 for our interrupt handler status (Andrew
11807Morton)
11808
11809
118103) iASL Compiler:
11811
11812Fixed a reported problem where multiple (nested) ElseIf()
11813statements were not handled correctly by the compiler, resulting
11814in incorrect warnings and incorrect AML code.  This was a problem
11815in both the ASL parser and the code generator.
11816
11817
118184) Documentation:
11819
11820Added changes to existing interfaces, new exception codes, and new
11821text concerning reference count object management versus garbage
11822collection.
11823
11824----------------------------------------
1182509 May 2003.  Summary of changes for version 20030509.
11826
11827
118281) ACPI CA Core Subsystem:
11829
11830Changed the subsystem initialization sequence to hold off
11831installation of address space handlers until the hardware has been
11832initialized and the system has entered ACPI mode.  This is because
11833the installation of space handlers can cause _REG methods to be
11834run.  Previously, the _REG methods could potentially be run before
11835ACPI mode was enabled.
11836
11837Fixed some memory leak issues related to address space handler and
11838notify handler installation.  There were some problems with the
11839reference count mechanism caused by the fact that the handler
11840objects are shared across several namespace objects.
11841
11842Fixed a reported problem where reference counts within the
11843namespace were not properly updated when named objects created by
11844method execution were deleted.
11845
11846Fixed a reported problem where multiple SSDTs caused a deletion
11847issue during subsystem termination.  Restructured the table data
11848structures to simplify the linked lists and the related code.
11849
11850Fixed a problem where the table ID associated with secondary
11851tables (SSDTs) was not being propagated into the namespace objects
11852created by those tables.  This would only present a problem for
11853tables that are unloaded at run-time, however.
11854
11855Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
11856type as the length parameter (instead of UINT32).
11857
11858Solved a long-standing problem where an ALREADY_EXISTS error
11859appears on various systems.  This problem could happen when there
11860are multiple PCI_Config operation regions under a single PCI root
11861bus.  This doesn't happen very frequently, but there are some
11862systems that do this in the ASL.
11863
11864Fixed a reported problem where the internal DeleteNode function
11865was incorrectly handling the case where a namespace node was the
11866first in the parent's child list, and had additional peers (not
11867the only child, but first in the list of children.)
11868
11869Code and Data Size: Current core subsystem library sizes are shown
11870below.  These are the code and data sizes for the acpica.lib
11871produced by the Microsoft Visual C++ 6.0 compiler, and these
11872values do not include any ACPI driver or OSPM code.  The debug
11873version of the code includes the debug output trace mechanism and
11874has a much larger code and data size.  Note that these values will
11875vary depending on the efficiency of the compiler and the compiler
11876options used during generation.
11877
11878  Previous Release
11879    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
11880    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
11881  Current Release:
11882    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
11883    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
11884
11885
118862) Linux:
11887
11888Allow ":" in OS override string (Ducrot Bruno)
11889
11890Kobject fix (Greg KH)
11891
11892
118933 iASL Compiler/Disassembler:
11894
11895Fixed a problem in the generation of the C source code files (AML
11896is emitted in C source statements for BIOS inclusion) where the
11897Ascii dump that appears within a C comment at the end of each line
11898could cause a compile time error if the AML sequence happens to
11899have an open comment or close comment sequence embedded.
11900
11901
11902----------------------------------------
1190324 April 2003.  Summary of changes for version 20030424.
11904
11905
119061) ACPI CA Core Subsystem:
11907
11908Support for big-endian systems has been implemented.  Most of the
11909support has been invisibly added behind big-endian versions of the
11910ACPI_MOVE_* macros.
11911
11912Fixed a problem in AcpiHwDisableGpeBlock() and
11913AcpiHwClearGpeBlock() where an incorrect offset was passed to the
11914low level hardware write routine.  The offset parameter was
11915actually eliminated from the low level read/write routines because
11916they had become obsolete.
11917
11918Fixed a problem where a handler object was deleted twice during
11919the removal of a fixed event handler.
11920
11921
119222) Linux:
11923
11924A fix for SMP systems with link devices was contributed by
11925
11926Compaq's Dan Zink.
11927
11928(2.5) Return whether we handled the interrupt in our IRQ handler.
11929(Linux ISRs no longer return void, so we can propagate the handler
11930return value from the ACPI CA core back to the OS.)
11931
11932
11933
119343) Documentation:
11935
11936The ACPI CA Programmer Reference has been updated to reflect new
11937interfaces and changes to existing interfaces.
11938
11939----------------------------------------
1194028 March 2003.  Summary of changes for version 20030328.
11941
119421) ACPI CA Core Subsystem:
11943
11944The GPE Block Device support has been completed.  New interfaces
11945are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
11946interfaces (enable, disable, clear, getstatus) have been split
11947into separate interfaces for Fixed Events and General Purpose
11948Events (GPEs) in order to support GPE Block Devices properly.
11949
11950Fixed a problem where the error message "Failed to acquire
11951semaphore" would appear during operations on the embedded
11952controller (EC).
11953
11954Code and Data Size: Current core subsystem library sizes are shown
11955below.  These are the code and data sizes for the acpica.lib
11956produced by the Microsoft Visual C++ 6.0 compiler, and these
11957values do not include any ACPI driver or OSPM code.  The debug
11958version of the code includes the debug output trace mechanism and
11959has a much larger code and data size.  Note that these values will
11960vary depending on the efficiency of the compiler and the compiler
11961options used during generation.
11962
11963  Previous Release
11964    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
11965    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
11966  Current Release:
11967    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
11968    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
11969
11970
11971----------------------------------------
1197228 February 2003.  Summary of changes for version 20030228.
11973
11974
119751) ACPI CA Core Subsystem:
11976
11977The GPE handling and dispatch code has been completely overhauled
11978in preparation for support of GPE Block Devices (ID ACPI0006).
11979This affects internal data structures and code only; there should
11980be no differences visible externally.  One new file has been
11981added, evgpeblk.c
11982
11983The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
11984fields that are used to determine the GPE block lengths.  The
11985REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
11986structures are ignored.  This is per the ACPI specification but it
11987isn't very clear.  The full 256 Block 0/1 GPEs are now supported
11988(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
11989
11990In the SCI interrupt handler, removed the read of the PM1_CONTROL
11991register to look at the SCI_EN bit.  On some machines, this read
11992causes an SMI event and greatly slows down SCI events.  (This may
11993in fact be the cause of slow battery status response on some
11994systems.)
11995
11996Fixed a problem where a store of a NULL string to a package object
11997could cause the premature deletion of the object.  This was seen
11998during execution of the battery _BIF method on some systems,
11999resulting in no battery data being returned.
12000
12001Added AcpiWalkResources interface to simplify parsing of resource
12002lists.
12003
12004Code and Data Size: Current core subsystem library sizes are shown
12005below.  These are the code and data sizes for the acpica.lib
12006produced by the Microsoft Visual C++ 6.0 compiler, and these
12007values do not include any ACPI driver or OSPM code.  The debug
12008version of the code includes the debug output trace mechanism and
12009has a much larger code and data size.  Note that these values will
12010vary depending on the efficiency of the compiler and the compiler
12011options used during generation.
12012
12013  Previous Release
12014    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12015    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12016  Current Release:
12017    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
12018    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
12019
12020
120212) Linux
12022
12023S3 fixes (Ole Rohne)
12024
12025Update ACPI PHP driver with to use new acpi_walk_resource API
12026(Bjorn Helgaas)
12027
12028Add S4BIOS support (Pavel Machek)
12029
12030Map in entire table before performing checksum (John Stultz)
12031
12032Expand the mem= cmdline to allow the specification of reserved and
12033ACPI DATA blocks (Pavel Machek)
12034
12035Never use ACPI on VISWS
12036
12037Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
12038
12039Revert a change that allowed P_BLK lengths to be 4 or 5. This is
12040causing us to think that some systems support C2 when they really
12041don't.
12042
12043Do not count processor objects for non-present CPUs (Thanks to
12044Dominik Brodowski)
12045
12046
120473) iASL Compiler:
12048
12049Fixed a problem where ASL include files could not be found and
12050opened.
12051
12052Added support for the _PDC reserved name.
12053
12054
12055----------------------------------------
1205622 January 2003.  Summary of changes for version 20030122.
12057
12058
120591) ACPI CA Core Subsystem:
12060
12061Added a check for constructs of the form:  Store (Local0, Local0)
12062where Local0 is not initialized.  Apparently, some BIOS
12063programmers believe that this is a NOOP.  Since this store doesn't
12064do anything anyway, the new prototype behavior will ignore this
12065error.  This is a case where we can relax the strict checking in
12066the interpreter in the name of compatibility.
12067
12068
120692) Linux
12070
12071The AcpiSrc Source Conversion Utility has been released with the
12072Linux package for the first time.  This is the utility that is
12073used to convert the ACPI CA base source code to the Linux version.
12074
12075(Both) Handle P_BLK lengths shorter than 6 more gracefully
12076
12077(Both) Move more headers to include/acpi, and delete an unused
12078header.
12079
12080(Both) Move drivers/acpi/include directory to include/acpi
12081
12082(Both) Boot functions don't use cmdline, so don't pass it around
12083
12084(Both) Remove include of unused header (Adrian Bunk)
12085
12086(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
12087the
12088former now also includes the latter, acpiphp.h only needs the one,
12089now.
12090
12091(2.5) Make it possible to select method of bios restoring after S3
12092resume. [=> no more ugly ifdefs] (Pavel Machek)
12093
12094(2.5) Make proc write interfaces work (Pavel Machek)
12095
12096(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
12097
12098(2.5) Break out ACPI Perf code into its own module, under cpufreq
12099(Dominik Brodowski)
12100
12101(2.4) S4BIOS support (Ducrot Bruno)
12102
12103(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
12104Visinoni)
12105
12106
121073) iASL Compiler:
12108
12109Added support to disassemble SSDT and PSDTs.
12110
12111Implemented support to obtain SSDTs from the Windows registry if
12112available.
12113
12114
12115----------------------------------------
1211609 January 2003.  Summary of changes for version 20030109.
12117
121181) ACPI CA Core Subsystem:
12119
12120Changed the behavior of the internal Buffer-to-String conversion
12121function.  The current ACPI specification states that the contents
12122of the buffer are "converted to a string of two-character
12123hexadecimal numbers, each separated by a space".  Unfortunately,
12124this definition is not backwards compatible with existing ACPI 1.0
12125implementations (although the behavior was not defined in the ACPI
121261.0 specification).  The new behavior simply copies data from the
12127buffer to the string until a null character is found or the end of
12128the buffer is reached.  The new String object is always null
12129terminated.  This problem was seen during the generation of _BIF
12130battery data where incorrect strings were returned for battery
12131type, etc.  This will also require an errata to the ACPI
12132specification.
12133
12134Renamed all instances of NATIVE_UINT and NATIVE_INT to
12135ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
12136
12137Copyright in all module headers (both Linux and non-Linux) has be
12138updated to 2003.
12139
12140Code and Data Size: Current core subsystem library sizes are shown
12141below.  These are the code and data sizes for the acpica.lib
12142produced by the Microsoft Visual C++ 6.0 compiler, and these
12143values do not include any ACPI driver or OSPM code.  The debug
12144version of the code includes the debug output trace mechanism and
12145has a much larger code and data size.  Note that these values will
12146vary depending on the efficiency of the compiler and the compiler
12147options used during generation.
12148
12149  Previous Release
12150    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12151    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12152  Current Release:
12153    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12154    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12155
12156
121572) Linux
12158
12159Fixed an oops on module insertion/removal (Matthew Tippett)
12160
12161(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
12162
12163(2.5) Replace pr_debug (Randy Dunlap)
12164
12165(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
12166
12167(Both) Eliminate spawning of thread from timer callback, in favor
12168of schedule_work()
12169
12170(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
12171
12172(Both) Added define for Fixed Function HW region (Matthew Wilcox)
12173
12174(Both) Add missing statics to button.c (Pavel Machek)
12175
12176Several changes have been made to the source code translation
12177utility that generates the Linux Code in order to make the code
12178more "Linux-like":
12179
12180All typedefs on structs and unions have been removed in keeping
12181with the Linux coding style.
12182
12183Removed the non-Linux SourceSafe module revision number from each
12184module header.
12185
12186Completed major overhaul of symbols to be lowercased for linux.
12187Doubled the number of symbols that are lowercased.
12188
12189Fixed a problem where identifiers within procedure headers and
12190within quotes were not fully lower cased (they were left with a
12191starting capital.)
12192
12193Some C macros whose only purpose is to allow the generation of 16-
12194bit code are now completely removed in the Linux code, increasing
12195readability and maintainability.
12196
12197----------------------------------------
12198
1219912 December 2002.  Summary of changes for version 20021212.
12200
12201
122021) ACPI CA Core Subsystem:
12203
12204Fixed a problem where the creation of a zero-length AML Buffer
12205would cause a fault.
12206
12207Fixed a problem where a Buffer object that pointed to a static AML
12208buffer (in an ACPI table) could inadvertently be deleted, causing
12209memory corruption.
12210
12211Fixed a problem where a user buffer (passed in to the external
12212ACPI CA interfaces) could be overwritten if the buffer was too
12213small to complete the operation, causing memory corruption.
12214
12215Fixed a problem in the Buffer-to-String conversion code where a
12216string of length one was always returned, regardless of the size
12217of the input Buffer object.
12218
12219Removed the NATIVE_CHAR data type across the entire source due to
12220lack of need and lack of consistent use.
12221
12222Code and Data Size: Current core subsystem library sizes are shown
12223below.  These are the code and data sizes for the acpica.lib
12224produced by the Microsoft Visual C++ 6.0 compiler, and these
12225values do not include any ACPI driver or OSPM code.  The debug
12226version of the code includes the debug output trace mechanism and
12227has a much larger code and data size.  Note that these values will
12228vary depending on the efficiency of the compiler and the compiler
12229options used during generation.
12230
12231  Previous Release
12232    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
12233    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
12234  Current Release:
12235    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
12236    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
12237
12238
12239----------------------------------------
1224005 December 2002.  Summary of changes for version 20021205.
12241
122421) ACPI CA Core Subsystem:
12243
12244Fixed a problem where a store to a String or Buffer object could
12245cause corruption of the DSDT if the object type being stored was
12246the same as the target object type and the length of the object
12247being stored was equal to or smaller than the original (existing)
12248target object.  This was seen to cause corruption of battery _BIF
12249buffers if the _BIF method modified the buffer on the fly.
12250
12251Fixed a problem where an internal error was generated if a control
12252method invocation was used in an OperationRegion, Buffer, or
12253Package declaration.  This was caused by the deferred parsing of
12254the control method and thus the deferred creation of the internal
12255method object.  The solution to this problem was to create the
12256internal method object at the moment the method is encountered in
12257the first pass - so that subsequent references to the method will
12258able to obtain the required parameter count and thus properly
12259parse the method invocation.  This problem presented itself as an
12260AE_AML_INTERNAL during the pass 1 parse phase during table load.
12261
12262Fixed a problem where the internal String object copy routine did
12263not always allocate sufficient memory for the target String object
12264and caused memory corruption.  This problem was seen to cause
12265"Allocation already present in list!" errors as memory allocation
12266became corrupted.
12267
12268Implemented a new function for the evaluation of namespace objects
12269that allows the specification of the allowable return object
12270types.  This simplifies a lot of code that checks for a return
12271object of one or more specific objects returned from the
12272evaluation (such as _STA, etc.)  This may become and external
12273function if it would be useful to ACPI-related drivers.
12274
12275Completed another round of prefixing #defines with "ACPI_" for
12276clarity.
12277
12278Completed additional code restructuring to allow more modular
12279linking for iASL compiler and AcpiExec.  Several files were split
12280creating new files.  New files:  nsparse.c dsinit.c evgpe.c
12281
12282Implemented an abort mechanism to terminate an executing control
12283method via the AML debugger.  This feature is useful for debugging
12284control methods that depend (wait) for specific hardware
12285responses.
12286
12287Code and Data Size: Current core subsystem library sizes are shown
12288below.  These are the code and data sizes for the acpica.lib
12289produced by the Microsoft Visual C++ 6.0 compiler, and these
12290values do not include any ACPI driver or OSPM code.  The debug
12291version of the code includes the debug output trace mechanism and
12292has a much larger code and data size.  Note that these values will
12293vary depending on the efficiency of the compiler and the compiler
12294options used during generation.
12295
12296  Previous Release
12297    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12298    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
12299  Current Release:
12300    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
12301    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
12302
12303
123042) iASL Compiler/Disassembler
12305
12306Fixed a compiler code generation problem for "Interrupt" Resource
12307Descriptors.  If specified in the ASL, the optional "Resource
12308Source Index" and "Resource Source" fields were not inserted into
12309the correct location within the AML resource descriptor, creating
12310an invalid descriptor.
12311
12312Fixed a disassembler problem for "Interrupt" resource descriptors.
12313The optional "Resource Source Index" and "Resource Source" fields
12314were ignored.
12315
12316
12317----------------------------------------
1231822 November 2002.  Summary of changes for version 20021122.
12319
12320
123211) ACPI CA Core Subsystem:
12322
12323Fixed a reported problem where an object stored to a Method Local
12324or Arg was not copied to a new object during the store - the
12325object pointer was simply copied to the Local/Arg.  This caused
12326all subsequent operations on the Local/Arg to also affect the
12327original source of the store operation.
12328
12329Fixed a problem where a store operation to a Method Local or Arg
12330was not completed properly if the Local/Arg contained a reference
12331(from RefOf) to a named field.  The general-purpose store-to-
12332namespace-node code is now used so that this case is handled
12333automatically.
12334
12335Fixed a problem where the internal object copy routine would cause
12336a protection fault if the object being copied was a Package and
12337contained either 1) a NULL package element or 2) a nested sub-
12338package.
12339
12340Fixed a problem with the GPE initialization that resulted from an
12341ambiguity in the ACPI specification.  One section of the
12342specification states that both the address and length of the GPE
12343block must be zero if the block is not supported.  Another section
12344implies that only the address need be zero if the block is not
12345supported.  The code has been changed so that both the address and
12346the length must be non-zero to indicate a valid GPE block (i.e.,
12347if either the address or the length is zero, the GPE block is
12348invalid.)
12349
12350Code and Data Size: Current core subsystem library sizes are shown
12351below.  These are the code and data sizes for the acpica.lib
12352produced by the Microsoft Visual C++ 6.0 compiler, and these
12353values do not include any ACPI driver or OSPM code.  The debug
12354version of the code includes the debug output trace mechanism and
12355has a much larger code and data size.  Note that these values will
12356vary depending on the efficiency of the compiler and the compiler
12357options used during generation.
12358
12359  Previous Release
12360    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
12361    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
12362  Current Release:
12363    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12364    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
12365
12366
123672) Linux
12368
12369Cleaned up EC driver. Exported an external EC read/write
12370interface. By going through this, other drivers (most notably
12371sonypi) will be able to serialize access to the EC.
12372
12373
123743) iASL Compiler/Disassembler
12375
12376Implemented support to optionally generate include files for both
12377ASM and C (the -i switch).  This simplifies BIOS development by
12378automatically creating include files that contain external
12379declarations for the symbols that are created within the
12380
12381(optionally generated) ASM and C AML source files.
12382
12383
12384----------------------------------------
1238515 November 2002.  Summary of changes for version 20021115.
12386
123871) ACPI CA Core Subsystem:
12388
12389Fixed a memory leak problem where an error during resolution of
12390
12391method arguments during a method invocation from another method
12392failed to cleanup properly by deleting all successfully resolved
12393argument objects.
12394
12395Fixed a problem where the target of the Index() operator was not
12396correctly constructed if the source object was a package.  This
12397problem has not been detected because the use of a target operand
12398with Index() is very rare.
12399
12400Fixed a problem with the Index() operator where an attempt was
12401made to delete the operand objects twice.
12402
12403Fixed a problem where an attempt was made to delete an operand
12404twice during execution of the CondRefOf() operator if the target
12405did not exist.
12406
12407Implemented the first of perhaps several internal create object
12408functions that create and initialize a specific object type.  This
12409consolidates duplicated code wherever the object is created, thus
12410shrinking the size of the subsystem.
12411
12412Implemented improved debug/error messages for errors that occur
12413during nested method invocations.  All executing method pathnames
12414are displayed (with the error) as the call stack is unwound - thus
12415simplifying debug.
12416
12417Fixed a problem introduced in the 10/02 release that caused
12418premature deletion of a buffer object if a buffer was used as an
12419ASL operand where an integer operand is required (Thus causing an
12420implicit object conversion from Buffer to Integer.)  The change in
12421the 10/02 release was attempting to fix a memory leak (albeit
12422incorrectly.)
12423
12424Code and Data Size: Current core subsystem library sizes are shown
12425below.  These are the code and data sizes for the acpica.lib
12426produced by the Microsoft Visual C++ 6.0 compiler, and these
12427values do not include any ACPI driver or OSPM code.  The debug
12428version of the code includes the debug output trace mechanism and
12429has a much larger code and data size.  Note that these values will
12430vary depending on the efficiency of the compiler and the compiler
12431options used during generation.
12432
12433  Previous Release
12434    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
12435    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
12436  Current Release:
12437    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
12438    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
12439
12440
124412) Linux
12442
12443Changed the implementation of the ACPI semaphores to use down()
12444instead of down_interruptable().  It is important that the
12445execution of ACPI control methods not be interrupted by signals.
12446Methods must run to completion, or the system may be left in an
12447unknown/unstable state.
12448
12449Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
12450(Shawn Starr)
12451
12452
124533) iASL Compiler/Disassembler
12454
12455
12456Changed the default location of output files.  All output files
12457are now placed in the current directory by default instead of in
12458the directory of the source file.  This change may affect some
12459existing makefiles, but it brings the behavior of the compiler in
12460line with other similar tools.  The location of the output files
12461can be overridden with the -p command line switch.
12462
12463
12464----------------------------------------
1246511 November 2002.  Summary of changes for version 20021111.
12466
12467
124680) ACPI Specification 2.0B is released and is now available at:
12469http://www.acpi.info/index.html
12470
12471
124721) ACPI CA Core Subsystem:
12473
12474Implemented support for the ACPI 2.0 SMBus Operation Regions.
12475This includes the early detection and handoff of the request to
12476the SMBus region handler (avoiding all of the complex field
12477support code), and support for the bidirectional return packet
12478from an SMBus write operation.  This paves the way for the
12479development of SMBus drivers in each host operating system.
12480
12481Fixed a problem where the semaphore WAIT_FOREVER constant was
12482defined as 32 bits, but must be 16 bits according to the ACPI
12483specification.  This had the side effect of causing ASL
12484Mutex/Event timeouts even though the ASL code requested a wait
12485forever.  Changed all internal references to the ACPI timeout
12486parameter to 16 bits to prevent future problems.  Changed the name
12487of WAIT_FOREVER to ACPI_WAIT_FOREVER.
12488
12489Code and Data Size: Current core subsystem library sizes are shown
12490below.  These are the code and data sizes for the acpica.lib
12491produced by the Microsoft Visual C++ 6.0 compiler, and these
12492values do not include any ACPI driver or OSPM code.  The debug
12493version of the code includes the debug output trace mechanism and
12494has a much larger code and data size.  Note that these values will
12495vary depending on the efficiency of the compiler and the compiler
12496options used during generation.
12497
12498  Previous Release
12499    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12500    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
12501  Current Release:
12502    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
12503    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
12504
12505
125062) Linux
12507
12508Module loading/unloading fixes (John Cagle)
12509
12510
125113) iASL Compiler/Disassembler
12512
12513Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
12514
12515Implemented support for the disassembly of all SMBus protocol
12516keywords (SMBQuick, SMBWord, etc.)
12517
12518----------------------------------------
1251901 November 2002.  Summary of changes for version 20021101.
12520
12521
125221) ACPI CA Core Subsystem:
12523
12524Fixed a problem where platforms that have a GPE1 block but no GPE0
12525block were not handled correctly.  This resulted in a "GPE
12526overlap" error message.  GPE0 is no longer required.
12527
12528Removed code added in the previous release that inserted nodes
12529into the namespace in alphabetical order.  This caused some side-
12530effects on various machines.  The root cause of the problem is
12531still under investigation since in theory, the internal ordering
12532of the namespace nodes should not matter.
12533
12534
12535Enhanced error reporting for the case where a named object is not
12536found during control method execution.  The full ACPI namepath
12537(name reference) of the object that was not found is displayed in
12538this case.
12539
12540Note: as a result of the overhaul of the namespace object types in
12541the previous release, the namespace nodes for the predefined
12542scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
12543instead of ACPI_TYPE_ANY.  This simplifies the namespace
12544management code but may affect code that walks the namespace tree
12545looking for specific object types.
12546
12547Code and Data Size: Current core subsystem library sizes are shown
12548below.  These are the code and data sizes for the acpica.lib
12549produced by the Microsoft Visual C++ 6.0 compiler, and these
12550values do not include any ACPI driver or OSPM code.  The debug
12551version of the code includes the debug output trace mechanism and
12552has a much larger code and data size.  Note that these values will
12553vary depending on the efficiency of the compiler and the compiler
12554options used during generation.
12555
12556  Previous Release
12557    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
12558    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
12559  Current Release:
12560    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
12561    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
12562
12563
125642) Linux
12565
12566Fixed a problem introduced in the previous release where the
12567Processor and Thermal objects were not recognized and installed in
12568/proc.  This was related to the scope type change described above.
12569
12570
125713) iASL Compiler/Disassembler
12572
12573Implemented the -g option to get all of the required ACPI tables
12574from the registry and save them to files (Windows version of the
12575compiler only.)  The required tables are the FADT, FACS, and DSDT.
12576
12577Added ACPI table checksum validation during table disassembly in
12578order to catch corrupted tables.
12579
12580
12581----------------------------------------
1258222 October 2002.  Summary of changes for version 20021022.
12583
125841) ACPI CA Core Subsystem:
12585
12586Implemented a restriction on the Scope operator that the target
12587must already exist in the namespace at the time the operator is
12588encountered (during table load or method execution).  In other
12589words, forward references are not allowed and Scope() cannot
12590create a new object. This changes the previous behavior where the
12591interpreter would create the name if not found.  This new behavior
12592correctly enables the search-to-root algorithm during namespace
12593lookup of the target name.  Because of this upsearch, this fixes
12594the known Compaq _SB_.OKEC problem and makes both the AML
12595interpreter and iASL compiler compatible with other ACPI
12596implementations.
12597
12598Completed a major overhaul of the internal ACPI object types for
12599the ACPI Namespace and the associated operand objects.  Many of
12600these types had become obsolete with the introduction of the two-
12601pass namespace load.  This cleanup simplifies the code and makes
12602the entire namespace load mechanism much clearer and easier to
12603understand.
12604
12605Improved debug output for tracking scope opening/closing to help
12606diagnose scoping issues.  The old scope name as well as the new
12607scope name are displayed.  Also improved error messages for
12608problems with ASL Mutex objects and error messages for GPE
12609problems.
12610
12611Cleaned up the namespace dump code, removed obsolete code.
12612
12613All string output (for all namespace/object dumps) now uses the
12614common ACPI string output procedure which handles escapes properly
12615and does not emit non-printable characters.
12616
12617Fixed some issues with constants in the 64-bit version of the
12618local C library (utclib.c)
12619
12620
126212) Linux
12622
12623EC Driver:  No longer attempts to acquire the Global Lock at
12624interrupt level.
12625
12626
126273) iASL Compiler/Disassembler
12628
12629Implemented ACPI 2.0B grammar change that disallows all Type 1 and
126302 opcodes outside of a control method.  This means that the
12631"executable" operators (versus the "namespace" operators) cannot
12632be used at the table level; they can only be used within a control
12633method.
12634
12635Implemented the restriction on the Scope() operator where the
12636target must already exist in the namespace at the time the
12637operator is encountered (during ASL compilation). In other words,
12638forward references are not allowed and Scope() cannot create a new
12639object.  This makes the iASL compiler compatible with other ACPI
12640implementations and makes the Scope() implementation adhere to the
12641ACPI specification.
12642
12643Fixed a problem where namepath optimization for the Alias operator
12644was optimizing the wrong path (of the two namepaths.)  This caused
12645a "Missing alias link" error message.
12646
12647Fixed a problem where an "unknown reserved name" warning could be
12648incorrectly generated for names like "_SB" when the trailing
12649underscore is not used in the original ASL.
12650
12651Fixed a problem where the reserved name check did not handle
12652NamePaths with multiple NameSegs correctly.  The first nameseg of
12653the NamePath was examined instead of the last NameSeg.
12654
12655
12656----------------------------------------
12657
1265802 October 2002.  Summary of changes for this release.
12659
12660
126611) ACPI CA Core Subsystem version 20021002:
12662
12663Fixed a problem where a store/copy of a string to an existing
12664string did not always set the string length properly in the String
12665object.
12666
12667Fixed a reported problem with the ToString operator where the
12668behavior was identical to the ToHexString operator instead of just
12669simply converting a raw buffer to a string data type.
12670
12671Fixed a problem where CopyObject and the other "explicit"
12672conversion operators were not updating the internal namespace node
12673type as part of the store operation.
12674
12675Fixed a memory leak during implicit source operand conversion
12676where the original object was not deleted if it was converted to a
12677new object of a different type.
12678
12679Enhanced error messages for all problems associated with namespace
12680lookups.  Common procedure generates and prints the lookup name as
12681well as the formatted status.
12682
12683Completed implementation of a new design for the Alias support
12684within the namespace.  The existing design did not handle the case
12685where a new object was assigned to one of the two names due to the
12686use of an explicit conversion operator, resulting in the two names
12687pointing to two different objects.  The new design simply points
12688the Alias name to the original name node - not to the object.
12689This results in a level of indirection that must be handled in the
12690name resolution mechanism.
12691
12692Code and Data Size: Current core subsystem library sizes are shown
12693below.  These are the code and data sizes for the acpica.lib
12694produced by the Microsoft Visual C++ 6.0 compiler, and these
12695values do not include any ACPI driver or OSPM code.  The debug
12696version of the code includes the debug output trace mechanism and
12697has a larger code and data size.  Note that these values will vary
12698depending on the efficiency of the compiler and the compiler
12699options used during generation.
12700
12701  Previous Release
12702    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
12703    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
12704  Current Release:
12705    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
12706    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
12707
12708
127092) Linux
12710
12711Initialize thermal driver's timer before it is used. (Knut
12712Neumann)
12713
12714Allow handling negative celsius values. (Kochi Takayoshi)
12715
12716Fix thermal management and make trip points. R/W (Pavel Machek)
12717
12718Fix /proc/acpi/sleep. (P. Christeas)
12719
12720IA64 fixes. (David Mosberger)
12721
12722Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
12723
12724Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
12725Brodowski)
12726
12727
127283) iASL Compiler/Disassembler
12729
12730Clarified some warning/error messages.
12731
12732
12733----------------------------------------
1273418 September 2002.  Summary of changes for this release.
12735
12736
127371) ACPI CA Core Subsystem version 20020918:
12738
12739Fixed a reported problem with reference chaining (via the Index()
12740and RefOf() operators) in the ObjectType() and SizeOf() operators.
12741The definition of these operators includes the dereferencing of
12742all chained references to return information on the base object.
12743
12744Fixed a problem with stores to indexed package elements - the
12745existing code would not complete the store if an "implicit
12746conversion" was not performed.  In other words, if the existing
12747object (package element) was to be replaced completely, the code
12748didn't handle this case.
12749
12750Relaxed typechecking on the ASL "Scope" operator to allow the
12751target name to refer to an object of type Integer, String, or
12752Buffer, in addition to the scoping object types (Device,
12753predefined Scopes, Processor, PowerResource, and ThermalZone.)
12754This allows existing AML code that has workarounds for a bug in
12755Windows to function properly.  A warning is issued, however.  This
12756affects both the AML interpreter and the iASL compiler. Below is
12757an example of this type of ASL code:
12758
12759      Name(DEB,0x00)
12760      Scope(DEB)
12761      {
12762
12763Fixed some reported problems with 64-bit integer support in the
12764local implementation of C library functions (clib.c)
12765
12766
127672) Linux
12768
12769Use ACPI fix map region instead of IOAPIC region, since it is
12770undefined in non-SMP.
12771
12772Ensure that the SCI has the proper polarity and trigger, even on
12773systems that do not have an interrupt override entry in the MADT.
12774
127752.5 big driver reorganization (Pat Mochel)
12776
12777Use early table mapping code from acpitable.c (Andi Kleen)
12778
12779New blacklist entries (Andi Kleen)
12780
12781Blacklist improvements. Split blacklist code out into a separate
12782file. Move checking the blacklist to very early. Previously, we
12783would use ACPI tables, and then halfway through init, check the
12784blacklist -- too late. Now, it's early enough to completely fall-
12785back to non-ACPI.
12786
12787
127883) iASL Compiler/Disassembler version 20020918:
12789
12790Fixed a problem where the typechecking code didn't know that an
12791alias could point to a method.  In other words, aliases were not
12792being dereferenced during typechecking.
12793
12794
12795----------------------------------------
1279629 August 2002.  Summary of changes for this release.
12797
127981) ACPI CA Core Subsystem Version 20020829:
12799
12800If the target of a Scope() operator already exists, it must be an
12801object type that actually opens a scope -- such as a Device,
12802Method, Scope, etc.  This is a fatal runtime error.  Similar error
12803check has been added to the iASL compiler also.
12804
12805Tightened up the namespace load to disallow multiple names in the
12806same scope.  This previously was allowed if both objects were of
12807the same type.  (i.e., a lookup was the same as entering a new
12808name).
12809
12810
128112) Linux
12812
12813Ensure that the ACPI interrupt has the proper trigger and
12814polarity.
12815
12816local_irq_disable is extraneous. (Matthew Wilcox)
12817
12818Make "acpi=off" actually do what it says, and not use the ACPI
12819interpreter *or* the tables.
12820
12821Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
12822Takayoshi)
12823
12824
128253) iASL Compiler/Disassembler  Version 20020829:
12826
12827Implemented namepath optimization for name declarations.  For
12828example, a declaration like "Method (\_SB_.ABCD)" would get
12829optimized to "Method (ABCD)" if the declaration is within the
12830\_SB_ scope.  This optimization is in addition to the named
12831reference path optimization first released in the previous
12832version. This would seem to complete all possible optimizations
12833for namepaths within the ASL/AML.
12834
12835If the target of a Scope() operator already exists, it must be an
12836object type that actually opens a scope -- such as a Device,
12837Method, Scope, etc.
12838
12839Implemented a check and warning for unreachable code in the same
12840block below a Return() statement.
12841
12842Fixed a problem where the listing file was not generated if the
12843compiler aborted if the maximum error count was exceeded (200).
12844
12845Fixed a problem where the typechecking of method return values was
12846broken.  This includes the check for a return value when the
12847method is invoked as a TermArg (a return value is expected.)
12848
12849Fixed a reported problem where EOF conditions during a quoted
12850string or comment caused a fault.
12851
12852
12853----------------------------------------
1285415 August 2002.  Summary of changes for this release.
12855
128561) ACPI CA Core Subsystem Version 20020815:
12857
12858Fixed a reported problem where a Store to a method argument that
12859contains a reference did not perform the indirect store correctly.
12860This problem was created during the conversion to the new
12861reference object model - the indirect store to a method argument
12862code was not updated to reflect the new model.
12863
12864Reworked the ACPI mode change code to better conform to ACPI 2.0,
12865handle corner cases, and improve code legibility (Kochi Takayoshi)
12866
12867Fixed a problem with the pathname parsing for the carat (^)
12868prefix.  The heavy use of the carat operator by the new namepath
12869optimization in the iASL compiler uncovered a problem with the AML
12870interpreter handling of this prefix.  In the case where one or
12871more carats precede a single nameseg, the nameseg was treated as
12872standalone and the search rule (to root) was inadvertently
12873applied.  This could cause both the iASL compiler and the
12874interpreter to find the wrong object or to miss the error that
12875should occur if the object does not exist at that exact pathname.
12876
12877Found and fixed the problem where the HP Pavilion DSDT would not
12878load.  This was a relatively minor tweak to the table loading code
12879(a problem caused by the unexpected encounter with a method
12880invocation not within a control method), but it does not solve the
12881overall issue of the execution of AML code at the table level.
12882This investigation is still ongoing.
12883
12884Code and Data Size: Current core subsystem library sizes are shown
12885below.  These are the code and data sizes for the acpica.lib
12886produced by the Microsoft Visual C++ 6.0 compiler, and these
12887values do not include any ACPI driver or OSPM code.  The debug
12888version of the code includes the debug output trace mechanism and
12889has a larger code and data size.  Note that these values will vary
12890depending on the efficiency of the compiler and the compiler
12891options used during generation.
12892
12893  Previous Release
12894    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
12895    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
12896  Current Release:
12897    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
12898    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
12899
12900
129012) Linux
12902
12903Remove redundant slab.h include (Brad Hards)
12904
12905Fix several bugs in thermal.c (Herbert Nachtnebel)
12906
12907Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
12908
12909Change acpi_system_suspend to use updated irq functions (Pavel
12910Machek)
12911
12912Export acpi_get_firmware_table (Matthew Wilcox)
12913
12914Use proper root proc entry for ACPI (Kochi Takayoshi)
12915
12916Fix early-boot table parsing (Bjorn Helgaas)
12917
12918
129193) iASL Compiler/Disassembler
12920
12921Reworked the compiler options to make them more consistent and to
12922use two-letter options where appropriate.  We were running out of
12923sensible letters.   This may break some makefiles, so check the
12924current options list by invoking the compiler with no parameters.
12925
12926Completed the design and implementation of the ASL namepath
12927optimization option for the compiler.  This option optimizes all
12928references to named objects to the shortest possible path.  The
12929first attempt tries to utilize a single nameseg (4 characters) and
12930the "search-to-root" algorithm used by the interpreter.  If that
12931cannot be used (because either the name is not in the search path
12932or there is a conflict with another object with the same name),
12933the pathname is optimized using the carat prefix (usually a
12934shorter string than specifying the entire path from the root.)
12935
12936Implemented support to obtain the DSDT from the Windows registry
12937(when the disassembly option is specified with no input file).
12938Added this code as the implementation for AcpiOsTableOverride in
12939the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
12940utility) to scan memory for the DSDT to the AcpiOsTableOverride
12941function in the DOS OSL to make the disassembler truly OS
12942independent.
12943
12944Implemented a new option to disassemble and compile in one step.
12945When used without an input filename, this option will grab the
12946DSDT from the local machine, disassemble it, and compile it in one
12947step.
12948
12949Added a warning message for invalid escapes (a backslash followed
12950by any character other than the allowable escapes).  This catches
12951the quoted string error "\_SB_" (which should be "\\_SB_" ).
12952
12953Also, there are numerous instances in the ACPI specification where
12954this error occurs.
12955
12956Added a compiler option to disable all optimizations.  This is
12957basically the "compatibility mode" because by using this option,
12958the AML code will come out exactly the same as other ASL
12959compilers.
12960
12961Added error messages for incorrectly ordered dependent resource
12962functions.  This includes: missing EndDependentFn macro at end of
12963dependent resource list, nested dependent function macros (both
12964start and end), and missing StartDependentFn macro.  These are
12965common errors that should be caught at compile time.
12966
12967Implemented _OSI support for the disassembler and compiler.  _OSI
12968must be included in the namespace for proper disassembly (because
12969the disassembler must know the number of arguments.)
12970
12971Added an "optimization" message type that is optional (off by
12972default).  This message is used for all optimizations - including
12973constant folding, integer optimization, and namepath optimization.
12974
12975----------------------------------------
1297625 July 2002.  Summary of changes for this release.
12977
12978
129791) ACPI CA Core Subsystem Version 20020725:
12980
12981The AML Disassembler has been enhanced to produce compilable ASL
12982code and has been integrated into the iASL compiler (see below) as
12983well as the single-step disassembly for the AML debugger and the
12984disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
12985resource templates and macros are fully supported.  The
12986disassembler has been tested on over 30 different AML files,
12987producing identical AML when the resulting disassembled ASL file
12988is recompiled with the same ASL compiler.
12989
12990Modified the Resource Manager to allow zero interrupts and zero
12991dma channels during the GetCurrentResources call.  This was
12992causing problems on some platforms.
12993
12994Added the AcpiOsRedirectOutput interface to the OSL to simplify
12995output redirection for the AcpiOsPrintf and AcpiOsVprintf
12996interfaces.
12997
12998Code and Data Size: Current core subsystem library sizes are shown
12999below.  These are the code and data sizes for the acpica.lib
13000produced by the Microsoft Visual C++ 6.0 compiler, and these
13001values do not include any ACPI driver or OSPM code.  The debug
13002version of the code includes the debug output trace mechanism and
13003has a larger code and data size.  Note that these values will vary
13004depending on the efficiency of the compiler and the compiler
13005options used during generation.
13006
13007  Previous Release
13008    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
13009    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
13010  Current Release:
13011    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
13012    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
13013
13014
130152) Linux
13016
13017Fixed a panic in the EC driver (Dominik Brodowski)
13018
13019Implemented checksum of the R/XSDT itself during Linux table scan
13020(Richard Schaal)
13021
13022
130233) iASL compiler
13024
13025The AML disassembler is integrated into the compiler.  The "-d"
13026option invokes the disassembler  to completely disassemble an
13027input AML file, producing as output a text ASL file with the
13028extension ".dsl" (to avoid name collisions with existing .asl
13029source files.)  A future enhancement will allow the disassembler
13030to obtain the BIOS DSDT from the registry under Windows.
13031
13032Fixed a problem with the VendorShort and VendorLong resource
13033descriptors where an invalid AML sequence was created.
13034
13035Implemented a fix for BufferData term in the ASL parser.  It was
13036inadvertently defined twice, allowing invalid syntax to pass and
13037causing reduction conflicts.
13038
13039Fixed a problem where the Ones opcode could get converted to a
13040value of zero if "Ones" was used where a byte, word or dword value
13041was expected.  The 64-bit value is now truncated to the correct
13042size with the correct value.
13043
13044
13045
13046----------------------------------------
1304702 July 2002.  Summary of changes for this release.
13048
13049
130501) ACPI CA Core Subsystem Version 20020702:
13051
13052The Table Manager code has been restructured to add several new
13053features.  Tables that are not required by the core subsystem
13054(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
13055validated in any way and are returned from AcpiGetFirmwareTable if
13056requested.  The AcpiOsTableOverride interface is now called for
13057each table that is loaded by the subsystem in order to allow the
13058host to override any table it chooses.  Previously, only the DSDT
13059could be overridden.  Added one new files, tbrsdt.c and
13060tbgetall.c.
13061
13062Fixed a problem with the conversion of internal package objects to
13063external objects (when a package is returned from a control
13064method.)  The return buffer length was set to zero instead of the
13065proper length of the package object.
13066
13067Fixed a reported problem with the use of the RefOf and DeRefOf
13068operators when passing reference arguments to control methods.  A
13069new type of Reference object is used internally for references
13070produced by the RefOf operator.
13071
13072Added additional error messages in the Resource Manager to explain
13073AE_BAD_DATA errors when they occur during resource parsing.
13074
13075Split the AcpiEnableSubsystem into two primitives to enable a
13076finer granularity initialization sequence.  These two calls should
13077be called in this order: AcpiEnableSubsystem (flags),
13078AcpiInitializeObjects (flags).  The flags parameter remains the
13079same.
13080
13081
130822) Linux
13083
13084Updated the ACPI utilities module to understand the new style of
13085fully resolved package objects that are now returned from the core
13086subsystem.  This eliminates errors of the form:
13087
13088    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
13089    acpi_utils-0430 [145] acpi_evaluate_reference:
13090        Invalid element in package (not a device reference)
13091
13092The method evaluation utility uses the new buffer allocation
13093scheme instead of calling AcpiEvaluate Object twice.
13094
13095Added support for ECDT. This allows the use of the Embedded
13096
13097Controller before the namespace has been fully initialized, which
13098is necessary for ACPI 2.0 support, and for some laptops to
13099initialize properly. (Laptops using ECDT are still rare, so only
13100limited testing was performed of the added functionality.)
13101
13102Fixed memory leaks in the EC driver.
13103
13104Eliminated a brittle code structure in acpi_bus_init().
13105
13106Eliminated the acpi_evaluate() helper function in utils.c. It is
13107no longer needed since acpi_evaluate_object can optionally
13108allocate memory for the return object.
13109
13110Implemented fix for keyboard hang when getting battery readings on
13111some systems (Stephen White)
13112
13113PCI IRQ routing update (Dominik Brodowski)
13114
13115Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
13116support
13117
13118----------------------------------------
1311911 June 2002.  Summary of changes for this release.
13120
13121
131221) ACPI CA Core Subsystem Version 20020611:
13123
13124Fixed a reported problem where constants such as Zero and One
13125appearing within _PRT packages were not handled correctly within
13126the resource manager code.  Originally reported against the ASL
13127compiler because the code generator now optimizes integers to
13128their minimal AML representation (i.e. AML constants if possible.)
13129The _PRT code now handles all AML constant opcodes correctly
13130(Zero, One, Ones, Revision).
13131
13132Fixed a problem with the Concatenate operator in the AML
13133interpreter where a buffer result object was incorrectly marked as
13134not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
13135
13136All package sub-objects are now fully resolved before they are
13137returned from the external ACPI interfaces.  This means that name
13138strings are resolved to object handles, and constant operators
13139(Zero, One, Ones, Revision) are resolved to Integers.
13140
13141Implemented immediate resolution of the AML Constant opcodes
13142(Zero, One, Ones, Revision) to Integer objects upon detection
13143within the AML stream. This has simplified and reduced the
13144generated code size of the subsystem by eliminating about 10
13145switch statements for these constants (which previously were
13146contained in Reference objects.)  The complicating issues are that
13147the Zero opcode is used as a "placeholder" for unspecified
13148optional target operands and stores to constants are defined to be
13149no-ops.
13150
13151Code and Data Size: Current core subsystem library sizes are shown
13152below. These are the code and data sizes for the acpica.lib
13153produced by the Microsoft Visual C++ 6.0 compiler, and these
13154values do not include any ACPI driver or OSPM code.  The debug
13155version of the code includes the debug output trace mechanism and
13156has a larger code and data size.  Note that these values will vary
13157depending on the efficiency of the compiler and the compiler
13158options used during generation.
13159
13160  Previous Release
13161    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
13162    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
13163  Current Release:
13164    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
13165    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
13166
13167
131682) Linux
13169
13170
13171Added preliminary support for obtaining _TRA data for PCI root
13172bridges (Bjorn Helgaas).
13173
13174
131753) iASL Compiler Version X2046:
13176
13177Fixed a problem where the "_DDN" reserved name was defined to be a
13178control method with one argument.  There are no arguments, and
13179_DDN does not have to be a control method.
13180
13181Fixed a problem with the Linux version of the compiler where the
13182source lines printed with error messages were the wrong lines.
13183This turned out to be the "LF versus CR/LF" difference between
13184Windows and Unix.  This appears to be the longstanding issue
13185concerning listing output and error messages.
13186
13187Fixed a problem with the Linux version of compiler where opcode
13188names within error messages were wrong.  This was caused by a
13189slight difference in the output of the Flex tool on Linux versus
13190Windows.
13191
13192Fixed a problem with the Linux compiler where the hex output files
13193contained some garbage data caused by an internal buffer overrun.
13194
13195
13196----------------------------------------
1319717 May 2002.  Summary of changes for this release.
13198
13199
132001) ACPI CA Core Subsystem Version 20020517:
13201
13202Implemented a workaround to an BIOS bug discovered on the HP
13203OmniBook where the FADT revision number and the table size are
13204inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
13205behavior is to fallback to using only the ACPI 1.0 fields of the
13206FADT if the table is too small to be a ACPI 2.0 table as claimed
13207by the revision number.  Although this is a BIOS bug, this is a
13208case where the workaround is simple enough and with no side
13209effects, so it seemed prudent to add it.  A warning message is
13210issued, however.
13211
13212Implemented minimum size checks for the fixed-length ACPI tables -
13213- the FADT and FACS, as well as consistency checks between the
13214revision number and the table size.
13215
13216Fixed a reported problem in the table override support where the
13217new table pointer was incorrectly treated as a physical address
13218instead of a logical address.
13219
13220Eliminated the use of the AE_AML_ERROR exception and replaced it
13221with more descriptive codes.
13222
13223Fixed a problem where an exception would occur if an ASL Field was
13224defined with no named Field Units underneath it (used by some
13225index fields).
13226
13227Code and Data Size: Current core subsystem library sizes are shown
13228below.  These are the code and data sizes for the acpica.lib
13229produced by the Microsoft Visual C++ 6.0 compiler, and these
13230values do not include any ACPI driver or OSPM code.  The debug
13231version of the code includes the debug output trace mechanism and
13232has a larger code and data size.  Note that these values will vary
13233depending on the efficiency of the compiler and the compiler
13234options used during generation.
13235
13236  Previous Release
13237    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
13238    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
13239  Current Release:
13240    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
13241    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
13242
13243
13244
132452) Linux
13246
13247Much work done on ACPI init (MADT and PCI IRQ routing support).
13248(Paul D. and Dominik Brodowski)
13249
13250Fix PCI IRQ-related panic on boot (Sam Revitch)
13251
13252Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
13253
13254Fix "MHz" typo (Dominik Brodowski)
13255
13256Fix RTC year 2000 issue (Dominik Brodowski)
13257
13258Preclude multiple button proc entries (Eric Brunet)
13259
13260Moved arch-specific code out of include/platform/aclinux.h
13261
132623) iASL Compiler Version X2044:
13263
13264Implemented error checking for the string used in the EISAID macro
13265(Usually used in the definition of the _HID object.)  The code now
13266strictly enforces the PnP format - exactly 7 characters, 3
13267uppercase letters and 4 hex digits.
13268
13269If a raw string is used in the definition of the _HID object
13270(instead of the EISAID macro), the string must contain all
13271alphanumeric characters (e.g., "*PNP0011" is not allowed because
13272of the asterisk.)
13273
13274Implemented checking for invalid use of ACPI reserved names for
13275most of the name creation operators (Name, Device, Event, Mutex,
13276OperationRegion, PowerResource, Processor, and ThermalZone.)
13277Previously, this check was only performed for control methods.
13278
13279Implemented an additional check on the Name operator to emit an
13280error if a reserved name that must be implemented in ASL as a
13281control method is used.  We know that a reserved name must be a
13282method if it is defined with input arguments.
13283
13284The warning emitted when a namespace object reference is not found
13285during the cross reference phase has been changed into an error.
13286The "External" directive should be used for names defined in other
13287modules.
13288
13289
132904) Tools and Utilities
13291
13292The 16-bit tools (adump16 and aexec16) have been regenerated and
13293tested.
13294
13295Fixed a problem with the output of both acpidump and adump16 where
13296the indentation of closing parentheses and brackets was not
13297
13298aligned properly with the parent block.
13299
13300
13301----------------------------------------
1330203 May 2002.  Summary of changes for this release.
13303
13304
133051) ACPI CA Core Subsystem Version 20020503:
13306
13307Added support a new OSL interface that allows the host operating
13308
13309system software to override the DSDT found in the firmware -
13310AcpiOsTableOverride.  With this interface, the OSL can examine the
13311version of the firmware DSDT and replace it with a different one
13312if desired.
13313
13314Added new external interfaces for accessing ACPI registers from
13315device drivers and other system software - AcpiGetRegister and
13316AcpiSetRegister.  This was simply an externalization of the
13317existing AcpiHwBitRegister interfaces.
13318
13319Fixed a regression introduced in the previous build where the
13320ASL/AML CreateField operator always returned an error,
13321"destination must be a NS Node".
13322
13323Extended the maximum time (before failure) to successfully enable
13324ACPI mode to 3 seconds.
13325
13326Code and Data Size: Current core subsystem library sizes are shown
13327below.  These are the code and data sizes for the acpica.lib
13328produced by the Microsoft Visual C++ 6.0 compiler, and these
13329values do not include any ACPI driver or OSPM code.  The debug
13330version of the code includes the debug output trace mechanism and
13331has a larger code and data size.  Note that these values will vary
13332depending on the efficiency of the compiler and the compiler
13333options used during generation.
13334
13335  Previous Release
13336    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
13337    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
13338  Current Release:
13339    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
13340    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
13341
13342
133432) Linux
13344
13345Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
13346free. While 3 out of 4 of our in-house systems work fine, the last
13347one still hangs when testing the LAPIC timer.
13348
13349Renamed many files in 2.5 kernel release to omit "acpi_" from the
13350name.
13351
13352Added warning on boot for Presario 711FR.
13353
13354Sleep improvements (Pavel Machek)
13355
13356ACPI can now be built without CONFIG_PCI enabled.
13357
13358IA64: Fixed memory map functions (JI Lee)
13359
13360
133613) iASL Compiler Version X2043:
13362
13363Added support to allow the compiler to be integrated into the MS
13364VC++ development environment for one-button compilation of single
13365files or entire projects -- with error-to-source-line mapping.
13366
13367Implemented support for compile-time constant folding for the
13368Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
13369specification.  This allows the ASL writer to use expressions
13370instead of Integer/Buffer/String constants in terms that must
13371evaluate to constants at compile time and will also simplify the
13372emitted AML in any such sub-expressions that can be folded
13373(evaluated at compile-time.)  This increases the size of the
13374compiler significantly because a portion of the ACPI CA AML
13375interpreter is included within the compiler in order to pre-
13376evaluate constant expressions.
13377
13378
13379Fixed a problem with the "Unicode" ASL macro that caused the
13380compiler to fault.  (This macro is used in conjunction with the
13381_STR reserved name.)
13382
13383Implemented an AML opcode optimization to use the Zero, One, and
13384Ones opcodes where possible to further reduce the size of integer
13385constants and thus reduce the overall size of the generated AML
13386code.
13387
13388Implemented error checking for new reserved terms for ACPI version
133892.0A.
13390
13391Implemented the -qr option to display the current list of ACPI
13392reserved names known to the compiler.
13393
13394Implemented the -qc option to display the current list of ASL
13395operators that are allowed within constant expressions and can
13396therefore be folded at compile time if the operands are constants.
13397
13398
133994) Documentation
13400
13401Updated the Programmer's Reference for new interfaces, data types,
13402and memory allocation model options.
13403
13404Updated the iASL Compiler User Reference to apply new format and
13405add information about new features and options.
13406
13407----------------------------------------
1340819 April 2002.  Summary of changes for this release.
13409
134101) ACPI CA Core Subsystem Version 20020419:
13411
13412The source code base for the Core Subsystem has been completely
13413cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
13414versions.  The Lint option files used are included in the
13415/acpi/generate/lint directory.
13416
13417Implemented enhanced status/error checking across the entire
13418Hardware manager subsystem.  Any hardware errors (reported from
13419the OSL) are now bubbled up and will abort a running control
13420method.
13421
13422
13423Fixed a problem where the per-ACPI-table integer width (32 or 64)
13424was stored only with control method nodes, causing a fault when
13425non-control method code was executed during table loading.  The
13426solution implemented uses a global variable to indicate table
13427width across the entire ACPI subsystem.  Therefore, ACPI CA does
13428not support mixed integer widths across different ACPI tables
13429(DSDT, SSDT).
13430
13431Fixed a problem where NULL extended fields (X fields) in an ACPI
134322.0 ACPI FADT caused the table load to fail.  Although the
13433existing ACPI specification is a bit fuzzy on this topic, the new
13434behavior is to fall back on a ACPI 1.0 field if the corresponding
13435ACPI 2.0 X field is zero (even though the table revision indicates
13436a full ACPI 2.0 table.)  The ACPI specification will be updated to
13437clarify this issue.
13438
13439Fixed a problem with the SystemMemory operation region handler
13440where memory was always accessed byte-wise even if the AML-
13441specified access width was larger than a byte.  This caused
13442problems on systems with memory-mapped I/O.  Memory is now
13443accessed with the width specified.  On systems that do not support
13444non-aligned transfers, a check is made to guarantee proper address
13445alignment before proceeding in order to avoid an AML-caused
13446alignment fault within the kernel.
13447
13448
13449Fixed a problem with the ExtendedIrq resource where only one byte
13450of the 4-byte Irq field was extracted.
13451
13452Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
13453function was out of date and required a rewrite.
13454
13455Code and Data Size: Current core subsystem library sizes are shown
13456below.  These are the code and data sizes for the acpica.lib
13457produced by the Microsoft Visual C++ 6.0 compiler, and these
13458values do not include any ACPI driver or OSPM code.  The debug
13459version of the code includes the debug output trace mechanism and
13460has a larger code and data size.  Note that these values will vary
13461depending on the efficiency of the compiler and the compiler
13462options used during generation.
13463
13464  Previous Release
13465    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
13466    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
13467  Current Release:
13468    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
13469    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
13470
13471
134722) Linux
13473
13474PCI IRQ routing fixes (Dominik Brodowski)
13475
13476
134773) iASL Compiler Version X2042:
13478
13479Implemented an additional compile-time error check for a field
13480unit whose size + minimum access width would cause a run-time
13481access beyond the end-of-region.  Previously, only the field size
13482itself was checked.
13483
13484The Core subsystem and iASL compiler now share a common parse
13485object in preparation for compile-time evaluation of the type
134863/4/5 ASL operators.
13487
13488
13489----------------------------------------
13490Summary of changes for this release: 03_29_02
13491
134921) ACPI CA Core Subsystem Version 20020329:
13493
13494Implemented support for late evaluation of TermArg operands to
13495Buffer and Package objects.  This allows complex expressions to be
13496used in the declarations of these object types.
13497
13498Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
134991.0, if the field was larger than 32 bits, it was returned as a
13500buffer - otherwise it was returned as an integer.  In ACPI 2.0,
13501the field is returned as a buffer only if the field is larger than
1350264 bits.  The TableRevision is now considered when making this
13503conversion to avoid incompatibility with existing ASL code.
13504
13505Implemented logical addressing for AcpiOsGetRootPointer.  This
13506allows an RSDP with either a logical or physical address.  With
13507this support, the host OS can now override all ACPI tables with
13508one logical RSDP.  Includes implementation of  "typed" pointer
13509support to allow a common data type for both physical and logical
13510pointers internally.  This required a change to the
13511AcpiOsGetRootPointer interface.
13512
13513Implemented the use of ACPI 2.0 Generic Address Structures for all
13514GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
13515mapped I/O for these ACPI features.
13516
13517Initialization now ignores not only non-required tables (All
13518tables other than the FADT, FACS, DSDT, and SSDTs), but also does
13519not validate the table headers of unrecognized tables.
13520
13521Fixed a problem where a notify handler could only be
13522installed/removed on an object of type Device.  All "notify"
13523
13524objects are now supported -- Devices, Processor, Power, and
13525Thermal.
13526
13527Removed most verbosity from the ACPI_DB_INFO debug level.  Only
13528critical information is returned when this debug level is enabled.
13529
13530Code and Data Size: Current core subsystem library sizes are shown
13531below.  These are the code and data sizes for the acpica.lib
13532produced by the Microsoft Visual C++ 6.0 compiler, and these
13533values do not include any ACPI driver or OSPM code.  The debug
13534version of the code includes the debug output trace mechanism and
13535has a larger code and data size.  Note that these values will vary
13536depending on the efficiency of the compiler and the compiler
13537options used during generation.
13538
13539  Previous Release
13540    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
13541    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
13542  Current Release:
13543    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
13544    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
13545
13546
135472) Linux:
13548
13549The processor driver (acpi_processor.c) now fully supports ACPI
135502.0-based processor performance control (e.g. Intel(R)
13551SpeedStep(TM) technology) Note that older laptops that only have
13552the Intel "applet" interface are not supported through this.  The
13553'limit' and 'performance' interface (/proc) are fully functional.
13554[Note that basic policy for controlling performance state
13555transitions will be included in the next version of ospmd.]  The
13556idle handler was modified to more aggressively use C2, and PIIX4
13557errata handling underwent a complete overhaul (big thanks to
13558Dominik Brodowski).
13559
13560Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
13561based devices in the ACPI namespace are now dynamically bound
13562(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
13563This allows, among other things, ACPI to resolve bus numbers for
13564subordinate PCI bridges.
13565
13566Enhanced PCI IRQ routing to get the proper bus number for _PRT
13567entries defined underneath PCI bridges.
13568
13569Added IBM 600E to bad bios list due to invalid _ADR value for
13570PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
13571
13572In the process of adding full MADT support (e.g. IOAPIC) for IA32
13573(acpi.c, mpparse.c) -- stay tuned.
13574
13575Added back visual differentiation between fixed-feature and
13576control-method buttons in dmesg.  Buttons are also subtyped (e.g.
13577button/power/PWRF) to simplify button identification.
13578
13579We no longer use -Wno-unused when compiling debug. Please ignore
13580any "_THIS_MODULE defined but not used" messages.
13581
13582Can now shut down the system using "magic sysrq" key.
13583
13584
135853) iASL Compiler version 2041:
13586
13587Fixed a problem where conversion errors for hex/octal/decimal
13588constants were not reported.
13589
13590Implemented a fix for the General Register template Address field.
13591This field was 8 bits when it should be 64.
13592
13593Fixed a problem where errors/warnings were no longer being emitted
13594within the listing output file.
13595
13596Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
13597exactly 4 characters, alphanumeric only.
13598
13599
13600
13601
13602----------------------------------------
13603Summary of changes for this release: 03_08_02
13604
13605
136061) ACPI CA Core Subsystem Version 20020308:
13607
13608Fixed a problem with AML Fields where the use of the "AccessAny"
13609keyword could cause an interpreter error due to attempting to read
13610or write beyond the end of the parent Operation Region.
13611
13612Fixed a problem in the SystemMemory Operation Region handler where
13613an attempt was made to map memory beyond the end of the region.
13614This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
13615errors on some Linux systems.
13616
13617Fixed a problem where the interpreter/namespace "search to root"
13618algorithm was not functioning for some object types.  Relaxed the
13619internal restriction on the search to allow upsearches for all
13620external object types as well as most internal types.
13621
13622
136232) Linux:
13624
13625We now use safe_halt() macro versus individual calls to sti | hlt.
13626
13627Writing to the processor limit interface should now work. "echo 1"
13628will increase the limit, 2 will decrease, and 0 will reset to the
13629
13630default.
13631
13632
136333) ASL compiler:
13634
13635Fixed segfault on Linux version.
13636
13637
13638----------------------------------------
13639Summary of changes for this release: 02_25_02
13640
136411) ACPI CA Core Subsystem:
13642
13643
13644Fixed a problem where the GPE bit masks were not initialized
13645properly, causing erratic GPE behavior.
13646
13647Implemented limited support for multiple calling conventions.  The
13648code can be generated with either the VPL (variable parameter
13649list, or "C") convention, or the FPL (fixed parameter list, or
13650"Pascal") convention.  The core subsystem is about 3.4% smaller
13651when generated with FPL.
13652
13653
136542) Linux
13655
13656Re-add some /proc/acpi/event functionality that was lost during
13657the rewrite
13658
13659Resolved issue with /proc events for fixed-feature buttons showing
13660up as the system device.
13661
13662Fixed checks on C2/C3 latencies to be inclusive of maximum values.
13663
13664Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
13665
13666Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
13667
13668Fixed limit interface & usage to fix bugs with passive cooling
13669hysterisis.
13670
13671Restructured PRT support.
13672
13673
13674----------------------------------------
13675Summary of changes for this label: 02_14_02
13676
13677
136781) ACPI CA Core Subsystem:
13679
13680Implemented support in AcpiLoadTable to allow loading of FACS and
13681FADT tables.
13682
13683Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
13684been removed.  All 64-bit platforms should be migrated to the ACPI
136852.0 tables.  The actbl71.h header has been removed from the source
13686tree.
13687
13688All C macros defined within the subsystem have been prefixed with
13689"ACPI_" to avoid collision with other system include files.
13690
13691Removed the return value for the two AcpiOsPrint interfaces, since
13692it is never used and causes lint warnings for ignoring the return
13693value.
13694
13695Added error checking to all internal mutex acquire and release
13696calls.  Although a failure from one of these interfaces is
13697probably a fatal system error, these checks will cause the
13698immediate abort of the currently executing method or interface.
13699
13700Fixed a problem where the AcpiSetCurrentResources interface could
13701fault.  This was a side effect of the deployment of the new memory
13702allocation model.
13703
13704Fixed a couple of problems with the Global Lock support introduced
13705in the last major build.  The "common" (1.0/2.0) internal FACS was
13706being overwritten with the FACS signature and clobbering the
13707Global Lock pointer.  Also, the actual firmware FACS was being
13708unmapped after construction of the "common" FACS, preventing
13709access to the actual Global Lock field within it.  The "common"
13710internal FACS is no longer installed as an actual ACPI table; it
13711is used simply as a global.
13712
13713Code and Data Size: Current core subsystem library sizes are shown
13714below.  These are the code and data sizes for the acpica.lib
13715produced by the Microsoft Visual C++ 6.0 compiler, and these
13716values do not include any ACPI driver or OSPM code.  The debug
13717version of the code includes the debug output trace mechanism and
13718has a larger code and data size.  Note that these values will vary
13719depending on the efficiency of the compiler and the compiler
13720options used during generation.
13721
13722  Previous Release (02_07_01)
13723    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
13724    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
13725  Current Release:
13726    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
13727    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
13728
13729
137302) Linux
13731
13732Updated Linux-specific code for core macro and OSL interface
13733changes described above.
13734
13735Improved /proc/acpi/event. It now can be opened only once and has
13736proper poll functionality.
13737
13738Fixed and restructured power management (acpi_bus).
13739
13740Only create /proc "view by type" when devices of that class exist.
13741
13742Fixed "charging/discharging" bug (and others) in acpi_battery.
13743
13744Improved thermal zone code.
13745
13746
137473) ASL Compiler, version X2039:
13748
13749
13750Implemented the new compiler restriction on ASL String hex/octal
13751escapes to non-null, ASCII values.  An error results if an invalid
13752value is used.  (This will require an ACPI 2.0 specification
13753change.)
13754
13755AML object labels that are output to the optional C and ASM source
13756are now prefixed with both the ACPI table signature and table ID
13757to help guarantee uniqueness within a large BIOS project.
13758
13759
13760----------------------------------------
13761Summary of changes for this label: 02_01_02
13762
137631) ACPI CA Core Subsystem:
13764
13765ACPI 2.0 support is complete in the entire Core Subsystem and the
13766ASL compiler. All new ACPI 2.0 operators are implemented and all
13767other changes for ACPI 2.0 support are complete.  With
13768simultaneous code and data optimizations throughout the subsystem,
13769ACPI 2.0 support has been implemented with almost no additional
13770cost in terms of code and data size.
13771
13772Implemented a new mechanism for allocation of return buffers.  If
13773the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
13774be allocated on behalf of the caller.  Consolidated all return
13775buffer validation and allocation to a common procedure.  Return
13776buffers will be allocated via the primary OSL allocation interface
13777since it appears that a separate pool is not needed by most users.
13778If a separate pool is required for these buffers, the caller can
13779still use the original mechanism and pre-allocate the buffer(s).
13780
13781Implemented support for string operands within the DerefOf
13782operator.
13783
13784Restructured the Hardware and Event managers to be table driven,
13785simplifying the source code and reducing the amount of generated
13786code.
13787
13788Split the common read/write low-level ACPI register bitfield
13789procedure into a separate read and write, simplifying the code
13790considerably.
13791
13792Obsoleted the AcpiOsCallocate OSL interface.  This interface was
13793used only a handful of times and didn't have enough critical mass
13794for a separate interface.  Replaced with a common calloc procedure
13795in the core.
13796
13797Fixed a reported problem with the GPE number mapping mechanism
13798that allows GPE1 numbers to be non-contiguous with GPE0.
13799Reorganized the GPE information and shrunk a large array that was
13800originally large enough to hold info for all possible GPEs (256)
13801to simply large enough to hold all GPEs up to the largest GPE
13802number on the machine.
13803
13804Fixed a reported problem with resource structure alignment on 64-
13805bit platforms.
13806
13807Changed the AcpiEnableEvent and AcpiDisableEvent external
13808interfaces to not require any flags for the common case of
13809enabling/disabling a GPE.
13810
13811Implemented support to allow a "Notify" on a Processor object.
13812
13813Most TBDs in comments within the source code have been resolved
13814and eliminated.
13815
13816
13817Fixed a problem in the interpreter where a standalone parent
13818prefix (^) was not handled correctly in the interpreter and
13819debugger.
13820
13821Removed obsolete and unnecessary GPE save/restore code.
13822
13823Implemented Field support in the ASL Load operator.  This allows a
13824table to be loaded from a named field, in addition to loading a
13825table directly from an Operation Region.
13826
13827Implemented timeout and handle support in the external Global Lock
13828interfaces.
13829
13830Fixed a problem in the AcpiDump utility where pathnames were no
13831longer being generated correctly during the dump of named objects.
13832
13833Modified the AML debugger to give a full display of if/while
13834predicates instead of just one AML opcode at a time.  (The
13835predicate can have several nested ASL statements.)  The old method
13836was confusing during single stepping.
13837
13838Code and Data Size: Current core subsystem library sizes are shown
13839below. These are the code and data sizes for the acpica.lib
13840produced by the Microsoft Visual C++ 6.0 compiler, and these
13841values do not include any ACPI driver or OSPM code.  The debug
13842version of the code includes the debug output trace mechanism and
13843has a larger code and data size.  Note that these values will vary
13844depending on the efficiency of the compiler and the compiler
13845options used during generation.
13846
13847  Previous Release (12_18_01)
13848     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
13849     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
13850   Current Release:
13851     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
13852     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
13853
138542) Linux
13855
13856 Implemented fix for PIIX reverse throttling errata (Processor
13857driver)
13858
13859Added new Limit interface (Processor and Thermal drivers)
13860
13861New thermal policy (Thermal driver)
13862
13863Many updates to /proc
13864
13865Battery "low" event support (Battery driver)
13866
13867Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
13868
13869IA32 - IA64 initialization unification, no longer experimental
13870
13871Menuconfig options redesigned
13872
138733) ASL Compiler, version X2037:
13874
13875Implemented several new output features to simplify integration of
13876AML code into  firmware: 1) Output the AML in C source code with
13877labels for each named ASL object.  The    original ASL source code
13878is interleaved as C comments. 2) Output the AML in ASM source code
13879with labels and interleaved ASL    source. 3) Output the AML in
13880raw hex table form, in either C or ASM.
13881
13882Implemented support for optional string parameters to the
13883LoadTable operator.
13884
13885Completed support for embedded escape sequences within string
13886literals.  The compiler now supports all single character escapes
13887as well as the Octal and Hex escapes.  Note: the insertion of a
13888null byte into a string literal (via the hex/octal escape) causes
13889the string to be immediately terminated.  A warning is issued.
13890
13891Fixed a problem where incorrect AML was generated for the case
13892where an ASL namepath consists of a single parent prefix (
13893
13894) with no trailing name segments.
13895
13896The compiler has been successfully generated with a 64-bit C
13897compiler.
13898
13899
13900
13901
13902----------------------------------------
13903Summary of changes for this label: 12_18_01
13904
139051) Linux
13906
13907Enhanced blacklist with reason and severity fields. Any table's
13908signature may now be used to identify a blacklisted system.
13909
13910Call _PIC control method to inform the firmware which interrupt
13911model the OS is using. Turn on any disabled link devices.
13912
13913Cleaned up busmgr /proc error handling (Andreas Dilger)
13914
13915 2) ACPI CA Core Subsystem:
13916
13917Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
13918while loop)
13919
13920Completed implementation of the ACPI 2.0 "Continue",
13921"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
13922operators.  All new ACPI 2.0 operators are now implemented in both
13923the ASL compiler and the AML interpreter.  The only remaining ACPI
139242.0 task is support for the String data type in the DerefOf
13925operator.  Fixed a problem with AcquireMutex where the status code
13926was lost if the caller had to actually wait for the mutex.
13927
13928Increased the maximum ASL Field size from 64K bits to 4G bits.
13929
13930Completed implementation of the external Global Lock interfaces --
13931AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
13932Handler parameters were added.
13933
13934Completed another pass at removing warnings and issues when
13935compiling with 64-bit compilers.  The code now compiles cleanly
13936with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
13937add and subtract (diff) macros have changed considerably.
13938
13939
13940Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1394164-bit platforms, 32-bits on all others.  This type is used
13942wherever memory allocation and/or the C sizeof() operator is used,
13943and affects the OSL memory allocation interfaces AcpiOsAllocate
13944and AcpiOsCallocate.
13945
13946Implemented sticky user breakpoints in the AML debugger.
13947
13948Code and Data Size: Current core subsystem library sizes are shown
13949below. These are the code and data sizes for the acpica.lib
13950produced by the Microsoft Visual C++ 6.0 compiler, and these
13951values do not include any ACPI driver or OSPM code.  The debug
13952version of the code includes the debug output trace mechanism and
13953has a larger code and data size. Note that these values will vary
13954depending on the efficiency of the compiler and the compiler
13955options used during generation.
13956
13957  Previous Release (12_05_01)
13958     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
13959     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
13960   Current Release:
13961     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
13962     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
13963
13964 3) ASL Compiler, version X2034:
13965
13966Now checks for (and generates an error if detected) the use of a
13967Break or Continue statement without an enclosing While statement.
13968
13969
13970Successfully generated the compiler with the Intel 64-bit C
13971compiler.
13972
13973 ----------------------------------------
13974Summary of changes for this label: 12_05_01
13975
13976 1) ACPI CA Core Subsystem:
13977
13978The ACPI 2.0 CopyObject operator is fully implemented.  This
13979operator creates a new copy of an object (and is also used to
13980bypass the "implicit conversion" mechanism of the Store operator.)
13981
13982The ACPI 2.0 semantics for the SizeOf operator are fully
13983implemented.  The change is that performing a SizeOf on a
13984reference object causes an automatic dereference of the object to
13985tha actual value before the size is evaluated. This behavior was
13986undefined in ACPI 1.0.
13987
13988The ACPI 2.0 semantics for the Extended IRQ resource descriptor
13989have been implemented.  The interrupt polarity and mode are now
13990independently set.
13991
13992Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
13993appearing in Package objects were not properly converted to
13994integers when the internal Package was converted to an external
13995object (via the AcpiEvaluateObject interface.)
13996
13997Fixed a problem with the namespace object deletion mechanism for
13998objects created by control methods.  There were two parts to this
13999problem: 1) Objects created during the initialization phase method
14000parse were not being deleted, and 2) The object owner ID mechanism
14001to track objects was broken.
14002
14003Fixed a problem where the use of the ASL Scope operator within a
14004control method would result in an invalid opcode exception.
14005
14006Fixed a problem introduced in the previous label where the buffer
14007length required for the _PRT structure was not being returned
14008correctly.
14009
14010Code and Data Size: Current core subsystem library sizes are shown
14011below. These are the code and data sizes for the acpica.lib
14012produced by the Microsoft Visual C++ 6.0 compiler, and these
14013values do not include any ACPI driver or OSPM code.  The debug
14014version of the code includes the debug output trace mechanism and
14015has a larger code and data size.  Note that these values will vary
14016depending on the efficiency of the compiler and the compiler
14017options used during generation.
14018
14019  Previous Release (11_20_01)
14020     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
14021     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
14022
14023  Current Release:
14024     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
14025     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
14026
14027 2) Linux:
14028
14029Updated all files to apply cleanly against 2.4.16.
14030
14031Added basic PCI Interrupt Routing Table (PRT) support for IA32
14032(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
14033version supports both static and dyanmic PRT entries, but dynamic
14034entries are treated as if they were static (not yet
14035reconfigurable).  Architecture- specific code to use this data is
14036absent on IA32 but should be available shortly.
14037
14038Changed the initialization sequence to start the ACPI interpreter
14039(acpi_init) prior to initialization of the PCI driver (pci_init)
14040in init/main.c.  This ordering is required to support PRT and
14041facilitate other (future) enhancement.  A side effect is that the
14042ACPI bus driver and certain device drivers can no longer be loaded
14043as modules.
14044
14045Modified the 'make menuconfig' options to allow PCI Interrupt
14046Routing support to be included without the ACPI Bus and other
14047device drivers.
14048
14049 3) ASL Compiler, version X2033:
14050
14051Fixed some issues with the use of the new CopyObject and
14052DataTableRegion operators.  Both are fully functional.
14053
14054 ----------------------------------------
14055Summary of changes for this label: 11_20_01
14056
14057 20 November 2001.  Summary of changes for this release.
14058
14059 1) ACPI CA Core Subsystem:
14060
14061Updated Index support to match ACPI 2.0 semantics.  Storing a
14062Integer, String, or Buffer to an Index of a Buffer will store only
14063the least-significant byte of the source to the Indexed buffer
14064byte.  Multiple writes are not performed.
14065
14066Fixed a problem where the access type used in an AccessAs ASL
14067operator was not recorded correctly into the field object.
14068
14069Fixed a problem where ASL Event objects were created in a
14070signalled state. Events are now created in an unsignalled state.
14071
14072The internal object cache is now purged after table loading and
14073initialization to reduce the use of dynamic kernel memory -- on
14074the assumption that object use is greatest during the parse phase
14075of the entire table (versus the run-time use of individual control
14076methods.)
14077
14078ACPI 2.0 variable-length packages are now fully operational.
14079
14080Code and Data Size: Code and Data optimizations have permitted new
14081feature development with an actual reduction in the library size.
14082Current core subsystem library sizes are shown below.  These are
14083the code and data sizes for the acpica.lib produced by the
14084Microsoft Visual C++ 6.0 compiler, and these values do not include
14085any ACPI driver or OSPM code.  The debug version of the code
14086includes the debug output trace mechanism and has a larger code
14087and data size.  Note that these values will vary depending on the
14088efficiency of the compiler and the compiler options used during
14089generation.
14090
14091  Previous Release (11_09_01):
14092     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
14093     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
14094
14095  Current Release:
14096     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
14097     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
14098
14099 2) Linux:
14100
14101Enhanced the ACPI boot-time initialization code to allow the use
14102of Local APIC tables for processor enumeration on IA-32, and to
14103pave the way for a fully MPS-free boot (on SMP systems) in the
14104near future.  This functionality replaces
14105arch/i386/kernel/acpitables.c, which was introduced in an earlier
141062.4.15-preX release.  To enable this feature you must add
14107"acpi_boot=on" to the kernel command line -- see the help entry
14108for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
14109the works...
14110
14111Restructured the configuration options to allow boot-time table
14112parsing support without inclusion of the ACPI Interpreter (and
14113other) code.
14114
14115NOTE: This release does not include fixes for the reported events,
14116power-down, and thermal passive cooling issues (coming soon).
14117
14118 3) ASL Compiler:
14119
14120Added additional typechecking for Fields within restricted access
14121Operation Regions.  All fields within EC and CMOS regions must be
14122declared with ByteAcc. All fields withing SMBus regions must be
14123declared with the BufferAcc access type.
14124
14125Fixed a problem where the listing file output of control methods
14126no longer interleaved the actual AML code with the ASL source
14127code.
14128
14129
14130
14131
14132----------------------------------------
14133Summary of changes for this label: 11_09_01
14134
141351) ACPI CA Core Subsystem:
14136
14137Implemented ACPI 2.0-defined support for writes to fields with a
14138Buffer, String, or Integer source operand that is smaller than the
14139target field. In these cases, the source operand is zero-extended
14140to fill the target field.
14141
14142Fixed a problem where a Field starting bit offset (within the
14143parent operation region) was calculated incorrectly if the
14144
14145alignment of the field differed from the access width.  This
14146affected CreateWordField, CreateDwordField, CreateQwordField, and
14147possibly other fields that use the "AccessAny" keyword.
14148
14149Fixed a problem introduced in the 11_02_01 release where indirect
14150stores through method arguments did not operate correctly.
14151
141522) Linux:
14153
14154Implemented boot-time ACPI table parsing support
14155(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
14156facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
14157legacy BIOS interfaces (e.g. MPS) for the configuration of system
14158processors, memory, and interrupts during setup_arch().  Note that
14159this patch does not include the required architecture-specific
14160changes required to apply this information -- subsequent patches
14161will be posted for both IA32 and IA64 to achieve this.
14162
14163Added low-level sleep support for IA32 platforms, courtesy of Pat
14164Mochel. This allows IA32 systems to transition to/from various
14165sleeping states (e.g. S1, S3), although the lack of a centralized
14166driver model and power-manageable drivers will prevent its
14167(successful) use on most systems.
14168
14169Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
14170submenu, unified IA32 and IA64 options, added new "Boot using ACPI
14171tables" option, etc.
14172
14173Increased the default timeout for the EC driver from 1ms to 10ms
14174(1000 cycles of 10us) to try to address AE_TIME errors during EC
14175transactions.
14176
14177 ----------------------------------------
14178Summary of changes for this label: 11_02_01
14179
141801) ACPI CA Core Subsystem:
14181
14182ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
14183(QWordAcc keyword). All ACPI 2.0 64-bit support is now
14184implemented.
14185
14186OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
14187changes to support ACPI 2.0 Qword field access.  Read/Write
14188PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
14189accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
14190the value parameter for the address space handler interface is now
14191an ACPI_INTEGER.  OSL implementations of these interfaces must now
14192handle the case where the Width parameter is 64.
14193
14194Index Fields: Fixed a problem where unaligned bit assembly and
14195disassembly for IndexFields was not supported correctly.
14196
14197Index and Bank Fields:  Nested Index and Bank Fields are now
14198supported. During field access, a check is performed to ensure
14199that the value written to an Index or Bank register is not out of
14200the range of the register.  The Index (or Bank) register is
14201written before each access to the field data. Future support will
14202include allowing individual IndexFields to be wider than the
14203DataRegister width.
14204
14205Fields: Fixed a problem where the AML interpreter was incorrectly
14206attempting to write beyond the end of a Field/OpRegion.  This was
14207a boundary case that occurred when a DWORD field was written to a
14208BYTE access OpRegion, forcing multiple writes and causing the
14209interpreter to write one datum too many.
14210
14211Fields: Fixed a problem with Field/OpRegion access where the
14212starting bit address of a field was incorrectly calculated if the
14213current access type was wider than a byte (WordAcc, DwordAcc, or
14214QwordAcc).
14215
14216Fields: Fixed a problem where forward references to individual
14217FieldUnits (individual Field names within a Field definition) were
14218not resolved during the AML table load.
14219
14220Fields: Fixed a problem where forward references from a Field
14221definition to the parent Operation Region definition were not
14222resolved during the AML table load.
14223
14224Fields: Duplicate FieldUnit names within a scope are now detected
14225during AML table load.
14226
14227Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
14228returned an incorrect name for the root node.
14229
14230Code and Data Size: Code and Data optimizations have permitted new
14231feature development with an actual reduction in the library size.
14232Current core subsystem library sizes are shown below.  These are
14233the code and data sizes for the acpica.lib produced by the
14234Microsoft Visual C++ 6.0 compiler, and these values do not include
14235any ACPI driver or OSPM code.  The debug version of the code
14236includes the debug output trace mechanism and has a larger code
14237and data size.  Note that these values will vary depending on the
14238efficiency of the compiler and the compiler options used during
14239generation.
14240
14241  Previous Release (10_18_01):
14242     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
14243     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
14244
14245  Current Release:
14246     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
14247     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
14248
14249 2) Linux:
14250
14251Improved /proc processor output (Pavel Machek) Re-added
14252MODULE_LICENSE("GPL") to all modules.
14253
14254 3) ASL Compiler version X2030:
14255
14256Duplicate FieldUnit names within a scope are now detected and
14257flagged as errors.
14258
14259 4) Documentation:
14260
14261Programmer Reference updated to reflect OSL and address space
14262handler interface changes described above.
14263
14264----------------------------------------
14265Summary of changes for this label: 10_18_01
14266
14267ACPI CA Core Subsystem:
14268
14269Fixed a problem with the internal object reference count mechanism
14270that occasionally caused premature object deletion. This resolves
14271all of the outstanding problem reports where an object is deleted
14272in the middle of an interpreter evaluation.  Although this problem
14273only showed up in rather obscure cases, the solution to the
14274problem involved an adjustment of all reference counts involving
14275objects attached to namespace nodes.
14276
14277Fixed a problem with Field support in the interpreter where
14278writing to an aligned field whose length is an exact multiple (2
14279or greater) of the field access granularity would cause an attempt
14280to write beyond the end of the field.
14281
14282The top level AML opcode execution functions within the
14283interpreter have been renamed with a more meaningful and
14284consistent naming convention.  The modules exmonad.c and
14285exdyadic.c were eliminated.  New modules are exoparg1.c,
14286exoparg2.c, exoparg3.c, and exoparg6.c.
14287
14288Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
14289
14290Fixed a problem where the AML debugger was causing some internal
14291objects to not be deleted during subsystem termination.
14292
14293Fixed a problem with the external AcpiEvaluateObject interface
14294where the subsystem would fault if the named object to be
14295evaluated refered to a constant such as Zero, Ones, etc.
14296
14297Fixed a problem with IndexFields and BankFields where the
14298subsystem would fault if the index, data, or bank registers were
14299not defined in the same scope as the field itself.
14300
14301Added printf format string checking for compilers that support
14302this feature.  Corrected more than 50 instances of issues with
14303format specifiers within invocations of ACPI_DEBUG_PRINT
14304throughout the core subsystem code.
14305
14306The ASL "Revision" operator now returns the ACPI support level
14307implemented in the core - the value "2" since the ACPI 2.0 support
14308is more than 50% implemented.
14309
14310Enhanced the output of the AML debugger "dump namespace" command
14311to output in a more human-readable form.
14312
14313Current core subsystem library code sizes are shown below.  These
14314
14315are the code and data sizes for the acpica.lib produced by the
14316Microsoft Visual C++ 6.0 compiler, and these values do not include
14317any ACPI driver or OSPM code.  The debug version of the code
14318includes the full debug trace mechanism -- leading to a much
14319
14320larger code and data size.  Note that these values will vary
14321depending on the efficiency of the compiler and the compiler
14322options used during generation.
14323
14324     Previous Label (09_20_01):
14325     Non-Debug Version:    65K Code,     5K Data,     70K Total
14326     Debug Version:       138K Code,    58K Data,    196K Total
14327
14328     This Label:
14329
14330     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
14331     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
14332
14333Linux:
14334
14335Implemented a "Bad BIOS Blacklist" to track machines that have
14336known ASL/AML problems.
14337
14338Enhanced the /proc interface for the thermal zone driver and added
14339support for _HOT (the critical suspend trip point).  The 'info'
14340file now includes threshold/policy information, and allows setting
14341of _SCP (cooling preference) and _TZP (polling frequency) values
14342to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
14343frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
14344preference to the passive/quiet mode (if supported by the ASL).
14345
14346Implemented a workaround for a gcc bug that resuted in an OOPs
14347when loading the control method battery driver.
14348
14349 ----------------------------------------
14350Summary of changes for this label: 09_20_01
14351
14352 ACPI CA Core Subsystem:
14353
14354The AcpiEnableEvent and AcpiDisableEvent interfaces have been
14355modified to allow individual GPE levels to be flagged as wake-
14356enabled (i.e., these GPEs are to remain enabled when the platform
14357sleeps.)
14358
14359The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
14360support wake-enabled GPEs.  This means that upon entering the
14361sleep state, all GPEs that are not wake-enabled are disabled.
14362When leaving the sleep state, these GPEs are reenabled.
14363
14364A local double-precision divide/modulo module has been added to
14365enhance portability to OS kernels where a 64-bit math library is
14366not available.  The new module is "utmath.c".
14367
14368Several optimizations have been made to reduce the use of CPU
14369stack.  Originally over 2K, the maximum stack usage is now below
143702K at 1860  bytes (1.82k)
14371
14372Fixed a problem with the AcpiGetFirmwareTable interface where the
14373root table pointer was not mapped into a logical address properly.
14374
14375Fixed a problem where a NULL pointer was being dereferenced in the
14376interpreter code for the ASL Notify operator.
14377
14378Fixed a problem where the use of the ASL Revision operator
14379returned an error. This operator now returns the current version
14380of the ACPI CA core subsystem.
14381
14382Fixed a problem where objects passed as control method parameters
14383to AcpiEvaluateObject were always deleted at method termination.
14384However, these objects may end up being stored into the namespace
14385by the called method.  The object reference count mechanism was
14386applied to these objects instead of a force delete.
14387
14388Fixed a problem where static strings or buffers (contained in the
14389AML code) that are declared as package elements within the ASL
14390code could cause a fault because the interpreter would attempt to
14391delete them.  These objects are now marked with the "static
14392object" flag to prevent any attempt to delete them.
14393
14394Implemented an interpreter optimization to use operands directly
14395from the state object instead of extracting the operands to local
14396variables.  This reduces stack use and code size, and improves
14397performance.
14398
14399The module exxface.c was eliminated as it was an unnecessary extra
14400layer of code.
14401
14402Current core subsystem library code sizes are shown below.  These
14403are the code and data sizes for the acpica.lib produced by the
14404Microsoft Visual C++ 6.0 compiler, and these values do not include
14405any ACPI driver or OSPM code.  The debug version of the code
14406includes the full debug trace mechanism -- leading to a much
14407larger code and data size.  Note that these values will vary
14408depending on the efficiency of the compiler and the compiler
14409options used during generation.
14410
14411  Non-Debug Version:  65K Code,   5K Data,   70K Total
14412(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
14413Total  (Previously 195K)
14414
14415Linux:
14416
14417Support for ACPI 2.0 64-bit integers has been added.   All ACPI
14418Integer objects are now 64 bits wide
14419
14420All Acpi data types and structures are now in lower case.  Only
14421Acpi macros are upper case for differentiation.
14422
14423 Documentation:
14424
14425Changes to the external interfaces as described above.
14426
14427 ----------------------------------------
14428Summary of changes for this label: 08_31_01
14429
14430 ACPI CA Core Subsystem:
14431
14432A bug with interpreter implementation of the ASL Divide operator
14433was found and fixed.  The implicit function return value (not the
14434explicit store operands) was returning the remainder instead of
14435the quotient.  This was a longstanding bug and it fixes several
14436known outstanding issues on various platforms.
14437
14438The ACPI_DEBUG_PRINT and function trace entry/exit macros have
14439been further optimized for size.  There are 700 invocations of the
14440DEBUG_PRINT macro alone, so each optimization reduces the size of
14441the debug version of the subsystem significantly.
14442
14443A stack trace mechanism has been implemented.  The maximum stack
14444usage is about 2K on 32-bit platforms.  The debugger command "stat
14445stack" will display the current maximum stack usage.
14446
14447All public symbols and global variables within the subsystem are
14448now prefixed with the string "Acpi".  This keeps all of the
14449symbols grouped together in a kernel map, and avoids conflicts
14450with other kernel subsystems.
14451
14452Most of the internal fixed lookup tables have been moved into the
14453code segment via the const operator.
14454
14455Several enhancements have been made to the interpreter to both
14456reduce the code size and improve performance.
14457
14458Current core subsystem library code sizes are shown below.  These
14459are the code and data sizes for the acpica.lib produced by the
14460Microsoft Visual C++ 6.0 compiler, and these values do not include
14461any ACPI driver or OSPM code.  The debug version of the code
14462includes the full debug trace mechanism which contains over 700
14463invocations of the DEBUG_PRINT macro, 500 function entry macro
14464invocations, and over 900 function exit macro invocations --
14465leading to a much larger code and data size.  Note that these
14466values will vary depending on the efficiency of the compiler and
14467the compiler options used during generation.
14468
14469        Non-Debug Version:  64K Code,   5K Data,   69K Total
14470Debug Version:     137K Code,  58K Data,  195K Total
14471
14472 Linux:
14473
14474Implemented wbinvd() macro, pending a kernel-wide definition.
14475
14476Fixed /proc/acpi/event to handle poll() and short reads.
14477
14478 ASL Compiler, version X2026:
14479
14480Fixed a problem introduced in the previous label where the AML
14481
14482code emitted for package objects produced packages with zero
14483length.
14484
14485 ----------------------------------------
14486Summary of changes for this label: 08_16_01
14487
14488ACPI CA Core Subsystem:
14489
14490The following ACPI 2.0 ASL operators have been implemented in the
14491AML interpreter (These are already supported by the Intel ASL
14492compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
14493ToBuffer.  Support for 64-bit AML constants is implemented in the
14494AML parser, debugger, and disassembler.
14495
14496The internal memory tracking mechanism (leak detection code) has
14497been upgraded to reduce the memory overhead (a separate tracking
14498block is no longer allocated for each memory allocation), and now
14499supports all of the internal object caches.
14500
14501The data structures and code for the internal object caches have
14502been coelesced and optimized so that there is a single cache and
14503memory list data structure and a single group of functions that
14504implement generic cache management.  This has reduced the code
14505size in both the debug and release versions of the subsystem.
14506
14507The DEBUG_PRINT macro(s) have been optimized for size and replaced
14508by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
14509different, because it generates a single call to an internal
14510function.  This results in a savings of about 90 bytes per
14511invocation, resulting in an overall code and data savings of about
1451216% in the debug version of the subsystem.
14513
14514 Linux:
14515
14516Fixed C3 disk corruption problems and re-enabled C3 on supporting
14517machines.
14518
14519Integrated low-level sleep code by Patrick Mochel.
14520
14521Further tweaked source code Linuxization.
14522
14523Other minor fixes.
14524
14525 ASL Compiler:
14526
14527Support for ACPI 2.0 variable length packages is fixed/completed.
14528
14529Fixed a problem where the optional length parameter for the ACPI
145302.0 ToString operator.
14531
14532Fixed multiple extraneous error messages when a syntax error is
14533detected within the declaration line of a control method.
14534
14535 ----------------------------------------
14536Summary of changes for this label: 07_17_01
14537
14538ACPI CA Core Subsystem:
14539
14540Added a new interface named AcpiGetFirmwareTable to obtain any
14541ACPI table via the ACPI signature.  The interface can be called at
14542any time during kernel initialization, even before the kernel
14543virtual memory manager is initialized and paging is enabled.  This
14544allows kernel subsystems to obtain ACPI tables very early, even
14545before the ACPI CA subsystem is initialized.
14546
14547Fixed a problem where Fields defined with the AnyAcc attribute
14548could be resolved to the incorrect address under the following
14549conditions: 1) the field width is larger than 8 bits and 2) the
14550parent operation region is not defined on a DWORD boundary.
14551
14552Fixed a problem where the interpreter is not being locked during
14553namespace initialization (during execution of the _INI control
14554methods), causing an error when an attempt is made to release it
14555later.
14556
14557ACPI 2.0 support in the AML Interpreter has begun and will be
14558ongoing throughout the rest of this year.  In this label, The Mod
14559operator is implemented.
14560
14561Added a new data type to contain full PCI addresses named
14562ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
14563and Function values.
14564
14565 Linux:
14566
14567Enhanced the Linux version of the source code to change most
14568capitalized ACPI type names to lowercase. For example, all
14569instances of ACPI_STATUS are changed to acpi_status.  This will
14570result in a large diff, but the change is strictly cosmetic and
14571aligns the CA code closer to the Linux coding standard.
14572
14573OSL Interfaces:
14574
14575The interfaces to the PCI configuration space have been changed to
14576add the PCI Segment number and to split the single 32-bit combined
14577DeviceFunction field into two 16-bit fields.  This was
14578accomplished by moving the four values that define an address in
14579PCI configuration space (segment, bus, device, and function) to
14580the new ACPI_PCI_ID structure.
14581
14582The changes to the PCI configuration space interfaces led to a
14583reexamination of the complete set of address space access
14584interfaces for PCI, I/O, and Memory.  The previously existing 18
14585interfaces have proven difficult to maintain (any small change
14586must be propagated across at least 6 interfaces) and do not easily
14587allow for future expansion to 64 bits if necessary.  Also, on some
14588systems, it would not be appropriate to demultiplex the access
14589width (8, 16, 32,or 64) before calling the OSL if the
14590corresponding native OS interfaces contain a similar access width
14591parameter.  For these reasons, the 18 address space interfaces
14592have been replaced by these 6 new ones:
14593
14594AcpiOsReadPciConfiguration
14595AcpiOsWritePciConfiguration
14596AcpiOsReadMemory
14597AcpiOsWriteMemory
14598AcpiOsReadPort
14599AcpiOsWritePort
14600
14601Added a new interface named AcpiOsGetRootPointer to allow the OSL
14602to perform the platform and/or OS-specific actions necessary to
14603obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
14604interface will simply call down to the CA core to perform the low-
14605memory search for the table.  On IA-64, the RSDP is obtained from
14606EFI.  Migrating this interface to the OSL allows the CA core to
14607
14608remain OS and platform independent.
14609
14610Added a new interface named AcpiOsSignal to provide a generic
14611"function code and pointer" interface for various miscellaneous
14612signals and notifications that must be made to the host OS.   The
14613first such signals are intended to support the ASL Fatal and
14614Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
14615interface has been obsoleted.
14616
14617The definition of the AcpiFormatException interface has been
14618changed to simplify its use.  The caller no longer must supply a
14619buffer to the call; A pointer to a const string is now returned
14620directly.  This allows the call to be easily used in printf
14621statements, etc. since the caller does not have to manage a local
14622buffer.
14623
14624
14625 ASL Compiler, Version X2025:
14626
14627The ACPI 2.0 Switch/Case/Default operators have been implemented
14628and are fully functional.  They will work with all ACPI 1.0
14629interpreters, since the operators are simply translated to If/Else
14630pairs.
14631
14632The ACPI 2.0 ElseIf operator is implemented and will also work
14633with 1.0 interpreters, for the same reason.
14634
14635Implemented support for ACPI 2.0 variable-length packages.  These
14636packages have a separate opcode, and their size is determined by
14637the interpreter at run-time.
14638
14639Documentation The ACPI CA Programmer Reference has been updated to
14640reflect the new interfaces and changes to existing interfaces.
14641
14642 ------------------------------------------
14643Summary of changes for this label: 06_15_01
14644
14645 ACPI CA Core Subsystem:
14646
14647Fixed a problem where a DWORD-accessed field within a Buffer
14648object would get its byte address inadvertently rounded down to
14649the nearest DWORD.  Buffers are always Byte-accessible.
14650
14651 ASL Compiler, version X2024:
14652
14653Fixed a problem where the Switch() operator would either fault or
14654hang the compiler.  Note however, that the AML code for this ACPI
146552.0 operator is not yet implemented.
14656
14657Compiler uses the new AcpiOsGetTimer interface to obtain compile
14658timings.
14659
14660Implementation of the CreateField operator automatically converts
14661a reference to a named field within a resource descriptor from a
14662byte offset to a bit offset if required.
14663
14664Added some missing named fields from the resource descriptor
14665support. These are the names that are automatically created by the
14666compiler to reference fields within a descriptor.  They are only
14667valid at compile time and are not passed through to the AML
14668interpreter.
14669
14670Resource descriptor named fields are now typed as Integers and
14671subject to compile-time typechecking when used in expressions.
14672
14673 ------------------------------------------
14674Summary of changes for this label: 05_18_01
14675
14676 ACPI CA Core Subsystem:
14677
14678Fixed a couple of problems in the Field support code where bits
14679from adjacent fields could be returned along with the proper field
14680bits. Restructured the field support code to improve performance,
14681readability and maintainability.
14682
14683New DEBUG_PRINTP macro automatically inserts the procedure name
14684into the output, saving hundreds of copies of procedure name
14685strings within the source, shrinking the memory footprint of the
14686debug version of the core subsystem.
14687
14688 Source Code Structure:
14689
14690The source code directory tree was restructured to reflect the
14691current organization of the component architecture.  Some files
14692and directories have been moved and/or renamed.
14693
14694 Linux:
14695
14696Fixed leaking kacpidpc processes.
14697
14698Fixed queueing event data even when /proc/acpi/event is not
14699opened.
14700
14701 ASL Compiler, version X2020:
14702
14703Memory allocation performance enhancement - over 24X compile time
14704improvement on large ASL files.  Parse nodes and namestring
14705buffers are now allocated from a large internal compiler buffer.
14706
14707The temporary .SRC file is deleted unless the "-s" option is
14708specified
14709
14710The "-d" debug output option now sends all output to the .DBG file
14711instead of the console.
14712
14713"External" second parameter is now optional
14714
14715"ElseIf" syntax now properly allows the predicate
14716
14717Last operand to "Load" now recognized as a Target operand
14718
14719Debug object can now be used anywhere as a normal object.
14720
14721ResourceTemplate now returns an object of type BUFFER
14722
14723EISAID now returns an object of type INTEGER
14724
14725"Index" now works with a STRING operand
14726
14727"LoadTable" now accepts optional parameters
14728
14729"ToString" length parameter is now optional
14730
14731"Interrupt (ResourceType," parse error fixed.
14732
14733"Register" with a user-defined region space parse error fixed
14734
14735Escaped backslash at the end of a string ("\\") scan/parse error
14736fixed
14737
14738"Revision" is now an object of type INTEGER.
14739
14740
14741
14742------------------------------------------
14743Summary of changes for this label: 05_02_01
14744
14745Linux:
14746
14747/proc/acpi/event now blocks properly.
14748
14749Removed /proc/sys/acpi. You can still dump your DSDT from
14750/proc/acpi/dsdt.
14751
14752 ACPI CA Core Subsystem:
14753
14754Fixed a problem introduced in the previous label where some of the
14755"small" resource descriptor types were not recognized.
14756
14757Improved error messages for the case where an ASL Field is outside
14758the range of the parent operation region.
14759
14760 ASL Compiler, version X2018:
14761
14762
14763Added error detection for ASL Fields that extend beyond the length
14764of the parent operation region (only if the length of the region
14765is known at compile time.)  This includes fields that have a
14766minimum access width that is smaller than the parent region, and
14767individual field units that are partially or entirely beyond the
14768extent of the parent.
14769
14770
14771
14772------------------------------------------
14773Summary of changes for this label: 04_27_01
14774
14775 ACPI CA Core Subsystem:
14776
14777Fixed a problem where the namespace mutex could be released at the
14778wrong time during execution of AcpiRemoveAddressSpaceHandler.
14779
14780Added optional thread ID output for debug traces, to simplify
14781debugging of multiple threads.  Added context switch notification
14782when the debug code realizes that a different thread is now
14783executing ACPI code.
14784
14785Some additional external data types have been prefixed with the
14786string "ACPI_" for consistency.  This may effect existing code.
14787The data types affected are the external callback typedefs - e.g.,
14788
14789WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
14790
14791 Linux:
14792
14793Fixed an issue with the OSL semaphore implementation where a
14794thread was waking up with an error from receiving a SIGCHLD
14795signal.
14796
14797Linux version of ACPI CA now uses the system C library for string
14798manipulation routines instead of a local implementation.
14799
14800Cleaned up comments and removed TBDs.
14801
14802 ASL Compiler, version X2017:
14803
14804Enhanced error detection and reporting for all file I/O
14805operations.
14806
14807 Documentation:
14808
14809Programmer Reference updated to version 1.06.
14810
14811
14812
14813------------------------------------------
14814Summary of changes for this label: 04_13_01
14815
14816 ACPI CA Core Subsystem:
14817
14818Restructured support for BufferFields and RegionFields.
14819BankFields support is now fully operational.  All known 32-bit
14820limitations on field sizes have been removed.  Both BufferFields
14821and (Operation) RegionFields are now supported by the same field
14822management code.
14823
14824Resource support now supports QWORD address and IO resources. The
1482516/32/64 bit address structures and the Extended IRQ structure
14826have been changed to properly handle Source Resource strings.
14827
14828A ThreadId of -1 is now used to indicate a "mutex not acquired"
14829condition internally and must never be returned by AcpiOsThreadId.
14830This reserved value was changed from 0 since Unix systems allow a
14831thread ID of 0.
14832
14833Linux:
14834
14835Driver code reorganized to enhance portability
14836
14837Added a kernel configuration option to control ACPI_DEBUG
14838
14839Fixed the EC driver to honor _GLK.
14840
14841ASL Compiler, version X2016:
14842
14843Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
14844address space was set to 0, not 0x7f as it should be.
14845
14846 ------------------------------------------
14847Summary of changes for this label: 03_13_01
14848
14849 ACPI CA Core Subsystem:
14850
14851During ACPI initialization, the _SB_._INI method is now run if
14852present.
14853
14854Notify handler fix - notifies are deferred until the parent method
14855completes execution.  This fixes the "mutex already acquired"
14856issue seen occasionally.
14857
14858Part of the "implicit conversion" rules in ACPI 2.0 have been
14859found to cause compatibility problems with existing ASL/AML.  The
14860convert "result-to-target-type" implementation has been removed
14861for stores to method Args and Locals.  Source operand conversion
14862is still fully implemented.  Possible changes to ACPI 2.0
14863specification pending.
14864
14865Fix to AcpiRsCalculatePciRoutingTableLength to return correct
14866length.
14867
14868Fix for compiler warnings for 64-bit compiles.
14869
14870 Linux:
14871
14872/proc output aligned for easier parsing.
14873
14874Release-version compile problem fixed.
14875
14876New kernel configuration options documented in Configure.help.
14877
14878IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
14879context" message.
14880
14881 OSPM:
14882
14883Power resource driver integrated with bus manager.
14884
14885Fixed kernel fault during active cooling for thermal zones.
14886
14887Source Code:
14888
14889The source code tree has been restructured.
14890
14891
14892
14893------------------------------------------
14894Summary of changes for this label: 03_02_01
14895
14896 Linux OS Services Layer (OSL):
14897
14898Major revision of all Linux-specific code.
14899
14900Modularized all ACPI-specific drivers.
14901
14902Added new thermal zone and power resource drivers.
14903
14904Revamped /proc interface (new functionality is under /proc/acpi).
14905
14906New kernel configuration options.
14907
14908 Linux known issues:
14909
14910New kernel configuration options not documented in Configure.help
14911yet.
14912
14913
14914Module dependencies not currently implemented. If used, they
14915should be loaded in this order: busmgr, power, ec, system,
14916processor, battery, ac_adapter, button, thermal.
14917
14918Modules will not load if CONFIG_MODVERSION is set.
14919
14920IBM 600E - entering S5 may reboot instead of shutting down.
14921
14922IBM 600E - Sleep button may generate "Invalid <NULL> context"
14923message.
14924
14925Some systems may fail with "execution mutex already acquired"
14926message.
14927
14928 ACPI CA Core Subsystem:
14929
14930Added a new OSL Interface, AcpiOsGetThreadId.  This was required
14931for the  deadlock detection code. Defined to return a non-zero, 32-
14932bit thread ID for the currently executing thread.  May be a non-
14933zero constant integer on single-thread systems.
14934
14935Implemented deadlock detection for internal subsystem mutexes.  We
14936may add conditional compilation for this code (debug only) later.
14937
14938ASL/AML Mutex object semantics are now fully supported.  This
14939includes multiple acquires/releases by owner and support for the
14940
14941Mutex SyncLevel parameter.
14942
14943A new "Force Release" mechanism automatically frees all ASL
14944Mutexes that have been acquired but not released when a thread
14945exits the interpreter.  This forces conformance to the ACPI spec
14946("All mutexes must be released when an invocation exits") and
14947prevents deadlocked ASL threads.  This mechanism can be expanded
14948(later) to monitor other resource acquisitions if OEM ASL code
14949continues to misbehave (which it will).
14950
14951Several new ACPI exception codes have been added for the Mutex
14952support.
14953
14954Recursive method calls are now allowed and supported (the ACPI
14955spec does in fact allow recursive method calls.)  The number of
14956recursive calls is subject to the restrictions imposed by the
14957SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
14958parameter.
14959
14960Implemented support for the SyncLevel parameter for control
14961methods (ACPI 2.0 feature)
14962
14963Fixed a deadlock problem when multiple threads attempted to use
14964the interpreter.
14965
14966Fixed a problem where the string length of a String package
14967element was not always set in a package returned from
14968AcpiEvaluateObject.
14969
14970Fixed a problem where the length of a String package element was
14971not always included in the length of the overall package returned
14972from AcpiEvaluateObject.
14973
14974Added external interfaces (Acpi*) to the ACPI debug memory
14975manager.  This manager keeps a list of all outstanding
14976allocations, and can therefore detect memory leaks and attempts to
14977free memory blocks more than once. Useful for code such as the
14978power manager, etc.  May not be appropriate for device drivers.
14979Performance with the debug code enabled is slow.
14980
14981The ACPI Global Lock is now an optional hardware element.
14982
14983 ASL Compiler Version X2015:
14984
14985Integrated changes to allow the compiler to be generated on
14986multiple platforms.
14987
14988Linux makefile added to generate the compiler on Linux
14989
14990 Source Code:
14991
14992All platform-specific headers have been moved to their own
14993subdirectory, Include/Platform.
14994
14995New source file added, Interpreter/ammutex.c
14996
14997New header file, Include/acstruct.h
14998
14999 Documentation:
15000
15001The programmer reference has been updated for the following new
15002interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
15003
15004 ------------------------------------------
15005Summary of changes for this label: 02_08_01
15006
15007Core ACPI CA Subsystem: Fixed a problem where an error was
15008incorrectly returned if the return resource buffer was larger than
15009the actual data (in the resource interfaces).
15010
15011References to named objects within packages are resolved to the
15012
15013full pathname string before packages are returned directly (via
15014the AcpiEvaluateObject interface) or indirectly via the resource
15015interfaces.
15016
15017Linux OS Services Layer (OSL):
15018
15019Improved /proc battery interface.
15020
15021
15022Added C-state debugging output and other miscellaneous fixes.
15023
15024ASL Compiler Version X2014:
15025
15026All defined method arguments can now be used as local variables,
15027including the ones that are not actually passed in as parameters.
15028The compiler tracks initialization of the arguments and issues an
15029exception if they are used without prior assignment (just like
15030locals).
15031
15032The -o option now specifies a filename prefix that is used for all
15033output files, including the AML output file.  Otherwise, the
15034default behavior is as follows:  1) the AML goes to the file
15035specified in the DSDT.  2) all other output files use the input
15036source filename as the base.
15037
15038 ------------------------------------------
15039Summary of changes for this label: 01_25_01
15040
15041Core ACPI CA Subsystem: Restructured the implementation of object
15042store support within the  interpreter.  This includes support for
15043the Store operator as well  as any ASL operators that include a
15044target operand.
15045
15046Partially implemented support for Implicit Result-to-Target
15047conversion. This is when a result object is converted on the fly
15048to the type of  an existing target object.  Completion of this
15049support is pending  further analysis of the ACPI specification
15050concerning this matter.
15051
15052CPU-specific code has been removed from the subsystem (hardware
15053directory).
15054
15055New Power Management Timer functions added
15056
15057Linux OS Services Layer (OSL): Moved system state transition code
15058to the core, fixed it, and modified  Linux OSL accordingly.
15059
15060Fixed C2 and C3 latency calculations.
15061
15062
15063We no longer use the compilation date for the version message on
15064initialization, but retrieve the version from AcpiGetSystemInfo().
15065
15066Incorporated for fix Sony VAIO machines.
15067
15068Documentation:  The Programmer Reference has been updated and
15069reformatted.
15070
15071
15072ASL Compiler:  Version X2013: Fixed a problem where the line
15073numbering and error reporting could get out  of sync in the
15074presence of multiple include files.
15075
15076 ------------------------------------------
15077Summary of changes for this label: 01_15_01
15078
15079Core ACPI CA Subsystem:
15080
15081Implemented support for type conversions in the execution of the
15082ASL  Concatenate operator (The second operand is converted to
15083match the type  of the first operand before concatenation.)
15084
15085Support for implicit source operand conversion is partially
15086implemented.   The ASL source operand types Integer, Buffer, and
15087String are freely  interchangeable for most ASL operators and are
15088converted by the interpreter  on the fly as required.  Implicit
15089Target operand conversion (where the  result is converted to the
15090target type before storing) is not yet implemented.
15091
15092Support for 32-bit and 64-bit BCD integers is implemented.
15093
15094Problem fixed where a field read on an aligned field could cause a
15095read  past the end of the field.
15096
15097New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
15098does not return a value, but the caller expects one.  (The ASL
15099compiler flags this as a warning.)
15100
15101ASL Compiler:
15102
15103Version X2011:
151041. Static typechecking of all operands is implemented. This
15105prevents the use of invalid objects (such as using a Package where
15106an Integer is required) at compile time instead of at interpreter
15107run-time.
151082. The ASL source line is printed with ALL errors and warnings.
151093. Bug fix for source EOF without final linefeed.
151104. Debug option is split into a parse trace and a namespace trace.
151115. Namespace output option (-n) includes initial values for
15112integers and strings.
151136. Parse-only option added for quick syntax checking.
151147. Compiler checks for duplicate ACPI name declarations
15115
15116Version X2012:
151171. Relaxed typechecking to allow interchangeability between
15118strings, integers, and buffers.  These types are now converted by
15119the interpreter at runtime.
151202. Compiler reports time taken by each internal subsystem in the
15121debug         output file.
15122
15123
15124 ------------------------------------------
15125Summary of changes for this label: 12_14_00
15126
15127ASL Compiler:
15128
15129This is the first official release of the compiler. Since the
15130compiler requires elements of the Core Subsystem, this label
15131synchronizes everything.
15132
15133------------------------------------------
15134Summary of changes for this label: 12_08_00
15135
15136
15137Fixed a problem where named references within the ASL definition
15138of both OperationRegions and CreateXXXFields did not work
15139properly.  The symptom was an AE_AML_OPERAND_TYPE during
15140initialization of the region/field. This is similar (but not
15141related internally) to the problem that was fixed in the last
15142label.
15143
15144Implemented both 32-bit and 64-bit support for the BCD ASL
15145functions ToBCD and FromBCD.
15146
15147Updated all legal headers to include "2000" in the copyright
15148years.
15149
15150 ------------------------------------------
15151Summary of changes for this label: 12_01_00
15152
15153Fixed a problem where method invocations within the ASL definition
15154of both OperationRegions and CreateXXXFields did not work
15155properly.  The symptom was an AE_AML_OPERAND_TYPE during
15156initialization of the region/field:
15157
15158  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
15159[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
15160(0x3005)
15161
15162Fixed a problem where operators with more than one nested
15163subexpression would fail.  The symptoms were varied, by mostly
15164AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
15165problem that has gone unnoticed until now.
15166
15167  Subtract (Add (1,2), Multiply (3,4))
15168
15169Fixed a problem where AcpiGetHandle didn't quite get fixed in the
15170previous build (The prefix part of a relative path was handled
15171incorrectly).
15172
15173Fixed a problem where Operation Region initialization failed if
15174the operation region name was a "namepath" instead of a simple
15175"nameseg". Symptom was an AE_NO_OPERAND error.
15176
15177Fixed a problem where an assignment to a local variable via the
15178indirect RefOf mechanism only worked for the first such
15179assignment.  Subsequent assignments were ignored.
15180
15181 ------------------------------------------
15182Summary of changes for this label: 11_15_00
15183
15184ACPI 2.0 table support with backwards support for ACPI 1.0 and the
151850.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
15186the AML  interpreter does NOT have support for the new 2.0 ASL
15187grammar terms at this time.
15188
15189All ACPI hardware access is via the GAS structures in the ACPI 2.0
15190FADT.
15191
15192All physical memory addresses across all platforms are now 64 bits
15193wide. Logical address width remains dependent on the platform
15194(i.e., "void *").
15195
15196AcpiOsMapMemory interface changed to a 64-bit physical address.
15197
15198The AML interpreter integer size is now 64 bits, as per the ACPI
151992.0 specification.
15200
15201For backwards compatibility with ACPI 1.0, ACPI tables with a
15202revision number less than 2 use 32-bit integers only.
15203
15204Fixed a problem where the evaluation of OpRegion operands did not
15205always resolve them to numbers properly.
15206
15207------------------------------------------
15208Summary of changes for this label: 10_20_00
15209
15210Fix for CBN_._STA issue.  This fix will allow correct access to
15211CBN_ OpRegions when the _STA returns 0x8.
15212
15213Support to convert ACPI constants (Ones, Zeros, One) to actual
15214values before a package object is returned
15215
15216Fix for method call as predicate to if/while construct causing
15217incorrect if/while behavior
15218
15219Fix for Else block package lengths sometimes calculated wrong (if
15220block > 63 bytes)
15221
15222Fix for Processor object length field, was always zero
15223
15224Table load abort if FACP sanity check fails
15225
15226Fix for problem with Scope(name) if name already exists
15227
15228Warning emitted if a named object referenced cannot be found
15229(resolved) during method execution.
15230
15231
15232
15233
15234
15235------------------------------------------
15236Summary of changes for this label: 9_29_00
15237
15238New table initialization interfaces: AcpiInitializeSubsystem no
15239longer has any parameters AcpiFindRootPointer - Find the RSDP (if
15240necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
15241>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
15242AcpiLoadTables
15243
15244Note: These interface changes require changes to all existing OSDs
15245
15246The PCI_Config default address space handler is always installed
15247at the root namespace object.
15248
15249-------------------------------------------
15250Summary of changes for this label: 09_15_00
15251
15252The new initialization architecture is implemented.  New
15253interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
15254AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
15255
15256(Namespace is automatically loaded when a table is loaded)
15257
15258The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1525952 bytes to 32 bytes.  There is usually one of these for every
15260namespace object, so the memory savings is significant.
15261
15262Implemented just-in-time evaluation of the CreateField operators.
15263
15264Bug fixes for IA-64 support have been integrated.
15265
15266Additional code review comments have been implemented
15267
15268The so-called "third pass parse" has been replaced by a final walk
15269through the namespace to initialize all operation regions (address
15270spaces) and fields that have not yet been initialized during the
15271execution of the various _INI and REG methods.
15272
15273New file - namespace/nsinit.c
15274
15275-------------------------------------------
15276Summary of changes for this label: 09_01_00
15277
15278Namespace manager data structures have been reworked to change the
15279primary  object from a table to a single object.  This has
15280resulted in dynamic memory  savings of 3X within the namespace and
152812X overall in the ACPI CA subsystem.
15282
15283Fixed problem where the call to AcpiEvFindPciRootBuses was
15284inadvertently left  commented out.
15285
15286Reduced the warning count when generating the source with the GCC
15287compiler.
15288
15289Revision numbers added to each module header showing the
15290SourceSafe version of the file.  Please refer to this version
15291number when giving us feedback or comments on individual modules.
15292
15293The main object types within the subsystem have been renamed to
15294clarify their  purpose:
15295
15296ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
15297ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
15298ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
15299
15300NOTE: no changes to the initialization sequence are included in
15301this label.
15302
15303-------------------------------------------
15304Summary of changes for this label: 08_23_00
15305
15306Fixed problem where TerminateControlMethod was being called
15307multiple times per  method
15308
15309Fixed debugger problem where single stepping caused a semaphore to
15310be  oversignalled
15311
15312Improved performance through additional parse object caching -
15313added  ACPI_EXTENDED_OP type
15314
15315-------------------------------------------
15316Summary of changes for this label: 08_10_00
15317
15318Parser/Interpreter integration:  Eliminated the creation of
15319complete parse trees  for ACPI tables and control methods.
15320Instead, parse subtrees are created and  then deleted as soon as
15321they are processed (Either entered into the namespace or  executed
15322by the interpreter).  This reduces the use of dynamic kernel
15323memory  significantly. (about 10X)
15324
15325Exception codes broken into classes and renumbered.  Be sure to
15326recompile all  code that includes acexcep.h.  Hopefully we won't
15327have to renumber the codes  again now that they are split into
15328classes (environment, programmer, AML code,  ACPI table, and
15329internal).
15330
15331Fixed some additional alignment issues in the Resource Manager
15332subcomponent
15333
15334Implemented semaphore tracking in the AcpiExec utility, and fixed
15335several places  where mutexes/semaphores were being unlocked
15336without a corresponding lock  operation.  There are no known
15337semaphore or mutex "leaks" at this time.
15338
15339Fixed the case where an ASL Return operator is used to return an
15340unnamed  package.
15341
15342-------------------------------------------
15343Summary of changes for this label: 07_28_00
15344
15345Fixed a problem with the way addresses were calculated in
15346AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
15347manifested itself when a Field was  created with WordAccess or
15348DwordAccess, but the field unit defined within the  Field was less
15349
15350than a Word or Dword.
15351
15352Fixed a problem in AmlDumpOperands() module's loop to pull
15353operands off of the  operand stack to display information. The
15354problem manifested itself as a TLB  error on 64-bit systems when
15355accessing an operand stack with two or more  operands.
15356
15357Fixed a problem with the PCI configuration space handlers where
15358context was  getting confused between accesses. This required a
15359change to the generic address  space handler and address space
15360setup definitions. Handlers now get both a  global handler context
15361(this is the one passed in by the user when executing
15362AcpiInstallAddressSpaceHandler() and a specific region context
15363that is unique to  each region (For example, the _ADR, _SEG and
15364_BBN values associated with a  specific region). The generic
15365function definitions have changed to the  following:
15366
15367typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
15368UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
15369*HandlerContext, // This used to be void *Context void
15370*RegionContext); // This is an additional parameter
15371
15372typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
15373RegionHandle, UINT32 Function, void *HandlerContext,  void
15374**RegionContext); // This used to be **ReturnContext
15375
15376-------------------------------------------
15377Summary of changes for this label: 07_21_00
15378
15379Major file consolidation and rename.  All files within the
15380interpreter have been  renamed as well as most header files.  This
15381was done to prevent collisions with  existing files in the host
15382OSs -- filenames such as "config.h" and "global.h"  seem to be
15383quite common.  The VC project files have been updated.  All
15384makefiles  will require modification.
15385
15386The parser/interpreter integration continues in Phase 5 with the
15387implementation  of a complete 2-pass parse (the AML is parsed
15388twice) for each table;  This  avoids the construction of a huge
15389parse tree and therefore reduces the amount of  dynamic memory
15390required by the subsystem.  Greater use of the parse object cache
15391means that performance is unaffected.
15392
15393Many comments from the two code reviews have been rolled in.
15394
15395The 64-bit alignment support is complete.
15396
15397-------------------------------------------
15398Summary of changes for this label: 06_30_00
15399
15400With a nod and a tip of the hat to the technology of yesteryear,
15401we've added  support in the source code for 80 column output
15402devices.  The code is now mostly  constrained to 80 columns or
15403less to support environments and editors that 1)  cannot display
15404or print more than 80 characters on a single line, and 2) cannot
15405disable line wrapping.
15406
15407A major restructuring of the namespace data structure has been
15408completed.  The  result is 1) cleaner and more
15409understandable/maintainable code, and 2) a  significant reduction
15410in the dynamic memory requirement for each named ACPI  object
15411(almost half).
15412
15413-------------------------------------------
15414Summary of changes for this label: 06_23_00
15415
15416Linux support has been added.  In order to obtain approval to get
15417the ACPI CA  subsystem into the Linux kernel, we've had to make
15418quite a few changes to the  base subsystem that will affect all
15419users (all the changes are generic and OS- independent).  The
15420effects of these global changes have been somewhat far  reaching.
15421Files have been merged and/or renamed and interfaces have been
15422renamed.   The major changes are described below.
15423
15424Osd* interfaces renamed to AcpiOs* to eliminate namespace
15425pollution/confusion  within our target kernels.  All OSD
15426interfaces must be modified to match the new  naming convention.
15427
15428Files merged across the subsystem.  A number of the smaller source
15429and header  files have been merged to reduce the file count and
15430increase the density of the  existing files.  There are too many
15431to list here.  In general, makefiles that  call out individual
15432files will require rebuilding.
15433
15434Interpreter files renamed.  All interpreter files now have the
15435prefix am*  instead of ie* and is*.
15436
15437Header files renamed:  The acapi.h file is now acpixf.h.  The
15438acpiosd.h file is  now acpiosxf.h.  We are removing references to
15439the acronym "API" since it is  somewhat windowsy. The new name is
15440"external interface" or xface or xf in the  filenames.j
15441
15442
15443All manifest constants have been forced to upper case (some were
15444mixed case.)   Also, the string "ACPI_" has been prepended to many
15445(not all) of the constants,  typedefs, and structs.
15446
15447The globals "DebugLevel" and "DebugLayer" have been renamed
15448"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
15449
15450All other globals within the subsystem are now prefixed with
15451"AcpiGbl_" Internal procedures within the subsystem are now
15452prefixed with "Acpi" (with only  a few exceptions).  The original
15453two-letter abbreviation for the subcomponent  remains after "Acpi"
15454- for example, CmCallocate became AcpiCmCallocate.
15455
15456Added a source code translation/conversion utility.  Used to
15457generate the Linux  source code, it can be modified to generate
15458other types of source as well. Can  also be used to cleanup
15459existing source by removing extraneous spaces and blank  lines.
15460Found in tools/acpisrc/*
15461
15462OsdUnMapMemory was renamed to OsdUnmapMemory and then
15463AcpiOsUnmapMemory.  (UnMap  became Unmap).
15464
15465A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
15466When set to  one, this indicates that the caller wants to use the
15467
15468semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
15469both types.  However, implementers of this  call may want to use
15470different OS primitives depending on the type of semaphore
15471requested.  For example, some operating systems provide separate
15472
15473"mutex" and  "semaphore" interfaces - where the mutex interface is
15474much faster because it  doesn't have all the overhead of a full
15475semaphore implementation.
15476
15477Fixed a deadlock problem where a method that accesses the PCI
15478address space can  block forever if it is the first access to the
15479space.
15480
15481-------------------------------------------
15482Summary of changes for this label: 06_02_00
15483
15484Support for environments that cannot handle unaligned data
15485accesses (e.g.  firmware and OS environments devoid of alignment
15486handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
15487been added (via configurable macros) in  these three areas: -
15488Transfer of data from the raw AML byte stream is done via byte
15489moves instead of    word/dword/qword moves. - External objects are
15490aligned within the user buffer, including package   elements (sub-
15491objects). - Conversion of name strings to UINT32 Acpi Names is now
15492done byte-wise.
15493
15494The Store operator was modified to mimic Microsoft's
15495implementation when storing  to a Buffer Field.
15496
15497Added a check of the BM_STS bit before entering C3.
15498
15499The methods subdirectory has been obsoleted and removed.  A new
15500file, cmeval.c  subsumes the functionality.
15501
15502A 16-bit (DOS) version of AcpiExec has been developed.  The
15503makefile is under  the acpiexec directory.
15504