xref: /titanic_50/usr/src/uts/intel/io/acpica/changes.txt (revision d22e11eb92a44ef85ea64989dbff7134a35829cc)
1----------------------------------------
229 August 2008. Summary of changes for version 20080829:
3
41) ACPI CA Core Subsystem:
5
6Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
7Reference. Changes include the elimination of cheating on the Object field
8for the DdbHandle subtype, addition of a reference class field to
9differentiate the various reference types (instead of an AML opcode), and the
10cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
11
12Reduce an error to a warning for an incorrect method argument count.
13Previously aborted with an error if too few arguments were passed to a
14control method via the external ACPICA interface. Now issue a warning instead
15and continue. Handles the case where the method inadvertently declares too
16many arguments, but does not actually use the extra ones. Applies mainly to
17the predefined methods. Lin Ming. Linux BZ 11032.
18
19Disallow the evaluation of named object types with no intrinsic value. Return
20AE_TYPE for objects that have no value and therefore evaluation is undefined:
21Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation of
22these types were allowed, but an exception would be generated at some point
23during the evaluation. Now, the error is generated up front.
24
25Fixed a possible memory leak in the AcpiNsGetExternalPathname function
26(nsnames.c). Fixes a leak in the error exit path.
27
28Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These debug
29levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and ACPI_EXCEPTION
30interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
31ACPI_LV_EVENTS.
32
33Removed obsolete and/or unused exception codes from the acexcep.h header.
34There is the possibility that certain device drivers may be affected if they
35use any of these exceptions.
36
37The ACPICA documentation has been added to the public git source tree, under
38acpica/documents. Included are the ACPICA programmer reference, the iASL
39compiler reference, and the changes.txt release logfile.
40
41Example Code and Data Size: These are the sizes for the OS-independent
42acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
43debug version of the code includes the debug output trace mechanism and has a
44much larger code and data size.
45
46  Previous Release:
47    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
48    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
49  Current Release:
50    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
51    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
52
532) iASL Compiler/Disassembler and Tools:
54
55Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
56defines _SCP with 3 arguments. Previous versions defined it with only 1
57argument. iASL now allows both definitions.
58
59iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for zero-
60length subtables when disassembling ACPI tables. Also fixed a couple of
61errors where a full 16-bit table type field was not extracted from the input
62properly.
63
64acpisrc: Improve comment counting mechanism for generating source code
65statistics. Count first and last lines of multi-line comments as whitespace,
66not comment lines. Handle Linux legal header in addition to standard acpica
67header.
68
69----------------------------------------
70
7129 July 2008. Summary of changes for version 20080729:
72
73This release is available at http://acpica.org/downloads
74Direct git access via http://www.acpica.org/repos/acpica.git
75
761) ACPI CA Core Subsystem:
77
78Fix a possible deadlock in the GPE dispatch. Remove call to
79AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will attempt
80to acquire the GPE lock but can deadlock since the GPE lock is already held
81at dispatch time. This code was introduced in version 20060831 as a response
82to Linux BZ 6881 and has since been removed from Linux.
83
84Add a function to dereference returned reference objects. Examines the return
85object from a call to AcpiEvaluateObject. Any Index or RefOf references are
86automatically dereferenced in an attempt to return something useful (these
87reference types cannot be converted into an external ACPI_OBJECT.) Provides
88MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
89
90x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
91subtables for the MADT and one new subtable for the SRAT. Includes
92disassembler and AcpiSrc support. Data from the Intel 64 Architecture x2APIC
93Specification, June 2008.
94
95Additional error checking for pathname utilities. Add error check after all
96calls to AcpiNsGetPathnameLength. Add status return from
97AcpiNsBuildExternalPath and check after all calls. Add parameter validation
98to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
99
100Return status from the global init function AcpiUtGlobalInitialize. This is
101used by both the kernel subsystem and the utilities such as iASL compiler.
102The function could possibly fail when the caches are initialized. Yang Yi.
103
104Add a function to decode reference object types to strings. Created for
105improved error messages.
106
107Improve object conversion error messages. Better error messages during object
108conversion from internal to the external ACPI_OBJECT. Used for external calls
109to AcpiEvaluateObject.
110
111Example Code and Data Size: These are the sizes for the OS-independent
112acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
113debug version of the code includes the debug output trace mechanism and has a
114much larger code and data size.
115
116  Previous Release:
117    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
118    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
119  Current Release:
120    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
121    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
122
1232) iASL Compiler/Disassembler and Tools:
124
125Debugger: fix a possible hang when evaluating non-methods. Fixes a problem
126introduced in version 20080701. If the object being evaluated (via execute
127command) is not a method, the debugger can hang while trying to obtain non-
128existent parameters.
129
130iASL: relax error for using reserved "_T_x" identifiers. These names can
131appear in a disassembled ASL file if they were emitted by the original
132compiler. Instead of issuing an error or warning and forcing the user to
133manually change these names, issue a remark instead.
134
135iASL: error if named object created in while loop. Emit an error if any named
136object is created within a While loop. If allowed, this code will generate a
137run-time error on the second iteration of the loop when an attempt is made to
138create the same named object twice. ACPICA bugzilla 730.
139
140iASL: Support absolute pathnames for include files. Add support for absolute
141pathnames within the Include operator. previously, only relative pathnames
142were supported.
143
144iASL: Enforce minimum 1 interrupt in interrupt macro and Resource Descriptor.
145The ACPI spec requires one interrupt minimum. BZ 423
146
147iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
148Handles the case for the Interrupt Resource Descriptor where
149the ResourceSource argument is omitted but ResourceSourceIndex
150is present. Now leave room for the Index. BZ 426
151
152iASL: Prevent error message if CondRefOf target does not exist. Fixes cases
153where an error message is emitted if the target does not exist. BZ 516
154
155iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
156(get ACPI tables on Windows). This was apparently broken in version 20070919.
157
158AcpiXtract: Handle EOF while extracting data. Correctly handle the case where
159the EOF happens immediately after the last table in the input file. Print
160completion message. Previously, no message was displayed in this case.
161
162----------------------------------------
16301 July 2008. Summary of changes for version 20080701:
164
165This release is available at http://acpica.org/downloads
166Direct git access via http://www.acpica.org/repos/acpica.git
167
1680) Git source tree / acpica.org
169
170Fixed a problem where a git-clone from http would not transfer the entire
171source
172tree.
173
1741) ACPI CA Core Subsystem:
175
176Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
177enable
178bit. Now performs a read-change-write of the enable register instead of
179simply
180writing out the cached enable mask. This will prevent inadvertent enabling of
181GPEs if a rogue GPE is received during initialization (before GPE handlers
182are
183installed.)
184
185Implemented a copy for dynamically loaded tables. Previously, dynamically
186loaded
187tables were simply mapped - but on some machines this memory is corrupted
188after
189suspend. Now copy the table to a local buffer. For the OpRegion case, added
190checksum verify. Use the table length from the table header, not the region
191length. For the Buffer case, use the table length also. Dennis Noordsij, Bob
192Moore. BZ 10734
193
194Fixed a problem where the same ACPI table could not be dynamically loaded and
195unloaded more than once. Without this change, a table cannot be loaded again
196once it has been loaded/unloaded one time. The current mechanism does not
197unregister a table upon an unload. During a load, if the same table is found,
198this no longer returns an exception. BZ 722
199
200Fixed a problem where the wrong descriptor length was calculated for the
201EndTag
202descriptor in 64-bit mode. The "minimal" descriptors such as EndTag are
203calculated as 12 bytes long, but the actual length in the internal descriptor
204is
20516 because of the round-up to 8 on the 64-bit build. Reported by Linn
206Crosetto.
207BZ 728
208
209Fixed a possible memory leak in the Unload operator. The DdbHandle returned
210by
211Load() did not have its reference count decremented during unload, leading to
212a
213memory leak. Lin Ming. BZ 727
214
215Fixed a possible memory leak when deleting thermal/processor objects. Any
216associated notify handlers (and objects) were not being deleted. Fiodor
217Suietov.
218BZ 506
219
220Fixed the ordering of the ASCII names in the global mutex table to match the
221actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug only.
222Vegard Nossum. BZ 726
223
224Enhanced the AcpiGetObjectInfo interface to return the number of required
225arguments if the object is a control method. Added this call to the debugger
226so
227the proper number of default arguments are passed to a method. This prevents
228a
229warning when executing methods from AcpiExec.
230
231Added a check for an invalid handle in AcpiGetObjectInfo. Return
232AE_BAD_PARAMETER if input handle is invalid. BZ 474
233
234Fixed an extraneous warning from exconfig.c on the 64-bit build.
235
236Example Code and Data Size: These are the sizes for the OS-independent
237acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
238debug
239version of the code includes the debug output trace mechanism and has a much
240larger code and data size.
241
242  Previous Release:
243    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
244    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
245  Current Release:
246    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
247    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
248
2492) iASL Compiler/Disassembler and Tools:
250
251iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
252resource
253descriptor names.
254
255iASL: Detect invalid ASCII characters in input (windows version). Removed the
256"-
257CF" flag from the flex compile, enables correct detection of non-ASCII
258characters in the input. BZ 441
259
260iASL: Eliminate warning when result of LoadTable is not used. Eliminate the
261"result of operation not used" warning when the DDB handle returned from
262LoadTable is not used. The warning is not needed. BZ 590
263
264AcpiExec: Add support for dynamic table load/unload. Now calls _CFG method to
265pass address of table to the AML. Added option to disable OpRegion simulation
266to
267allow creation of an OpRegion with a real address that was passed to _CFG.
268All
269of this allows testing of the Load and Unload operators from AcpiExec.
270
271Debugger: update tables command for unloaded tables. Handle unloaded tables
272and
273use the standard table header output routine.
274
275----------------------------------------
27609 June 2008. Summary of changes for version 20080609:
277
2781) ACPI CA Core Subsystem:
279
280Implemented a workaround for reversed _PRT entries. A significant number of
281BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
282change dynamically detects and repairs this problem. Provides compatibility
283with MS ACPI. BZ 6859
284
285Simplified the internal ACPI hardware interfaces to eliminate the locking
286flag parameter from Register Read/Write. Added a new external interface,
287AcpiGetRegisterUnlocked.
288
289Fixed a problem where the invocation of a GPE control method could hang. This
290was a regression introduced in 20080514. The new method argument count
291validation mechanism can enter an infinite loop when a GPE method is
292dispatched. Problem fixed by removing the obsolete code that passed GPE block
293information to the notify handler via the control method parameter pointer.
294
295Fixed a problem where the _SST execution status was incorrectly returned to
296the caller of AcpiEnterSleepStatePrep. This was a regression introduced in
29720080514. _SST is optional and a NOT_FOUND exception should never be
298returned. BZ 716
299
300Fixed a problem where a deleted object could be accessed from within the AML
301parser. This was a regression introduced in version 20080123 as a fix for the
302Unload operator. Lin Ming. BZ 10669
303
304Cleaned up the debug operand dump mechanism. Eliminated unnecessary operands
305and eliminated the use of a negative index in a loop. Operands are now
306displayed in the correct order, not backwards. This also fixes a regression
307introduced in 20080514 on 64-bit systems where the elimination of
308ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 715
309
310Fixed a possible memory leak in EvPciConfigRegionSetup where the error exit
311path did not delete a locally allocated structure.
312
313Updated definitions for the DMAR and SRAT tables to synchronize with the
314current specifications. Includes disassembler support.
315
316Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
317loop termination value was used. Loop terminated on iteration early, missing
318one mutex. Linn Crosetto
319
320Example Code and Data Size: These are the sizes for the OS-independent
321acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
322debug version of the code includes the debug output trace mechanism and has a
323much larger code and data size.
324
325  Previous Release:
326    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
327    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
328  Current Release:
329    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
330    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
331
3322) iASL Compiler/Disassembler and Tools:
333
334Disassembler: Implemented support for EisaId() within _CID objects. Now
335disassemble integer _CID objects back to EisaId invocations, including
336multiple integers within _CID packages. Includes single-step support for
337debugger also.
338
339Disassembler: Added support for DMAR and SRAT table definition changes.
340
341----------------------------------------
34214 May 2008. Summary of changes for version 20080514:
343
3441) ACPI CA Core Subsystem:
345
346Fixed a problem where GPEs were enabled too early during the ACPICA
347initialization. This could lead to "handler not installed" errors on some
348machines. Moved GPE enable until after _REG/_STA/_INI methods are run. This
349ensures that all operation regions and devices throughout the namespace have
350been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
351
352Implemented a change to the enter sleep code. Moved execution of the _GTS
353method to just before setting sleep enable bit. The execution was moved from
354AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
355immediately before the SLP_EN bit is set, as per the ACPI specification.
356Luming Yu, BZ 1653.
357
358Implemented a fix to disable unknown GPEs (2nd version). Now always disable
359the GPE, even if ACPICA thinks that that it is already disabled. It is
360possible that the AML or some other code has enabled the GPE unbeknownst to
361the ACPICA code.
362
363Fixed a problem with the Field operator where zero-length fields would return
364an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length ASL
365field declarations in Field(), BankField(), and IndexField(). BZ 10606.
366
367Implemented a fix for the Load operator, now load the table at the namespace
368root. This reverts a change introduced in version 20071019. The table is now
369loaded at the namespace root even though this goes against the ACPI
370specification. This provides compatibility with other ACPI implementations.
371The ACPI specification will be updated to reflect this in ACPI 4.0. Lin Ming.
372
373Fixed a problem where ACPICA would not Load() tables with unusual signatures.
374Now ignore ACPI table signature for Load() operator. Only "SSDT" is
375acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
376Therefore, signature validation is worthless. Apparently MS ACPI accepts such
377signatures, ACPICA must be compatible. BZ 10454.
378
379Fixed a possible negative array index in AcpiUtValidateException. Added NULL
380fields to the exception string arrays to eliminate a -1 subtraction on the
381SubStatus field.
382
383Updated the debug tracking macros to reduce overall code and data size.
384Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
385instead of pointers to static strings. Jan Beulich and Bob Moore.
386
387Implemented argument count checking in control method invocation via
388AcpiEvaluateObject. Now emit an error if too few arguments, warning if too
389many. This applies only to extern programmatic control method execution, not
390method-to-method calls within the AML. Lin Ming.
391
392Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is no
393longer needed, especially with the removal of 16-bit support. It was replaced
394mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 bit on
39532/64-bit platforms is required.
396
397Added the C const qualifier for appropriate string constants -- mostly
398MODULE_NAME and printf format strings. Jan Beulich.
399
400Example Code and Data Size: These are the sizes for the OS-independent
401acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
402debug version of the code includes the debug output trace mechanism and has a
403much larger code and data size.
404
405  Previous Release:
406    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
407    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
408  Current Release:
409    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
410    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
411
4122) iASL Compiler/Disassembler and Tools:
413
414Implemented ACPI table revision ID validation in the disassembler. Zero is
415always invalid. For DSDTs, the ID controls the interpreter integer width. 1
416means 32-bit and this is unusual. 2 or greater is 64-bit.
417
418----------------------------------------
41921 March 2008. Summary of changes for version 20080321:
420
4211) ACPI CA Core Subsystem:
422
423Implemented an additional change to the GPE support in order to suppress
424spurious or stray GPEs. The AcpiEvDisableGpe function will now permanently
425disable incoming GPEs that are neither enabled nor disabled -- meaning that
426the GPE is unknown to the system. This should prevent future interrupt floods
427from that GPE. BZ 6217 (Zhang Rui)
428
429Fixed a problem where NULL package elements were not returned to the
430AcpiEvaluateObject interface correctly. The element was simply ignored
431instead of returning a NULL ACPI_OBJECT package element, potentially causing
432a buffer overflow and/or confusing the caller who expected a fixed number of
433elements. BZ 10132 (Lin Ming, Bob Moore)
434
435Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, Dword,
436Qword), Field, BankField, and IndexField operators when invoked from inside
437an executing control method. In this case, these operators created namespace
438nodes that were incorrectly left marked as permanent nodes instead of
439temporary nodes. This could cause a problem if there is race condition
440between an exiting control method and a running namespace walk. (Reported by
441Linn Crosetto)
442
443Fixed a problem where the CreateField and CreateXXXField operators would
444incorrectly allow duplicate names (the name of the field) with no exception
445generated.
446
447Implemented several changes for Notify handling. Added support for new Notify
448values (ACPI 2.0+) and improved the Notify debug output. Notify on
449PowerResource objects is no longer allowed, as per the ACPI specification.
450(Bob Moore, Zhang Rui)
451
452All Reference Objects returned via the AcpiEvaluateObject interface are now
453marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved for
454NULL objects - either NULL package elements or unresolved named references.
455
456Fixed a problem where an extraneous debug message was produced for package
457objects (when debugging enabled). The message "Package List length larger
458than NumElements count" is now produced in the correct case, and is now an
459error message rather than a debug message. Added a debug message for the
460opposite case, where NumElements is larger than the Package List (the package
461will be padded out with NULL elements as per the ACPI spec.)
462
463Implemented several improvements for the output of the ASL "Debug" object to
464clarify and keep all data for a given object on one output line.
465
466Fixed two size calculation issues with the variable-length Start Dependent
467resource descriptor.
468
469Example Code and Data Size: These are the sizes for the OS-independent
470acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
471debug version of the code includes the debug output trace mechanism and has
472a much larger code and data size.
473
474  Previous Release:
475    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
476    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
477  Current Release:
478    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
479    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
480
4812) iASL Compiler/Disassembler and Tools:
482
483Fixed a problem with the use of the Switch operator where execution of the
484containing method by multiple concurrent threads could cause an
485AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
486actual Switch opcode, it must be simulated with local named temporary
487variables and if/else pairs. The solution chosen was to mark any method that
488uses Switch as Serialized, thus preventing multiple thread entries. BZ 469.
489
490----------------------------------------
49113 February 2008. Summary of changes for version 20080213:
492
4931) ACPI CA Core Subsystem:
494
495Implemented another MS compatibility design change for GPE/Notify handling.
496GPEs are now cleared/enabled asynchronously to allow all pending notifies to
497complete first. It is expected that the OSL will queue the enable request
498behind all pending notify requests (may require changes to the local host OSL
499in AcpiOsExecute). Alexey Starikovskiy.
500
501Fixed a problem where buffer and package objects passed as arguments to a
502control method via the external AcpiEvaluateObject interface could cause an
503AE_AML_INTERNAL exception depending on the order and type of operators
504executed by the target control method.
505
506Fixed a problem where resource descriptor size optimization could cause a
507problem when a _CRS resource template is passed to a _SRS method. The _SRS
508resource template must use the same descriptors (with the same size) as
509returned from _CRS. This change affects the following resource descriptors:
510IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 9487)
511
512Fixed a problem where a CopyObject to RegionField, BankField, and IndexField
513objects did not perform an implicit conversion as it should. These types must
514retain their initial type permanently as per the ACPI specification. However,
515a CopyObject to all other object types should not perform an implicit
516conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
517
518Fixed a problem with the AcpiGetDevices interface where the mechanism to
519match device CIDs did not examine the entire list of available CIDs, but
520instead aborted on the first non-matching CID. Andrew Patterson.
521
522Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro was
523inadvertently changed to return a 16-bit value instead of a 32-bit value,
524truncating the upper dword of a 64-bit value. This macro is only used to
525display debug output, so no incorrect calculations were made. Also,
526reimplemented the macro so that a 64-bit shift is not performed by
527inefficient compilers.
528
529Added missing va_end statements that should correspond with each va_start
530statement.
531
532Example Code and Data Size: These are the sizes for the OS-independent
533acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
534debug version of the code includes the debug output trace mechanism and has
535a much larger code and data size.
536
537  Previous Release:
538    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
539    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
540  Current Release:
541    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
542    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
543
5442) iASL Compiler/Disassembler and Tools:
545
546Implemented full disassembler support for the following new ACPI tables:
547BERT, EINJ, and ERST. Implemented partial disassembler support for the
548complicated HEST table. These tables support the Windows Hardware Error
549Architecture (WHEA).
550
551----------------------------------------
55223 January 2008. Summary of changes for version 20080123:
553
5541) ACPI CA Core Subsystem:
555
556Added the 2008 copyright to all module headers and signons. This affects
557virtually every file in the ACPICA core subsystem, the iASL compiler, and
558the tools/utilities.
559
560Fixed a problem with the SizeOf operator when used with Package and Buffer
561objects. These objects have deferred execution for some arguments, and the
562execution is now completed before the SizeOf is executed. This problem caused
563unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) BZ
5649558
565
566Implemented an enhancement to the interpreter "slack mode". In the absence of
567an explicit return or an implicitly returned object from the last executed
568opcode, a control method will now implicitly return an integer of value 0 for
569Microsoft compatibility. (Lin Ming) BZ 392
570
571Fixed a problem with the Load operator where an exception was not returned in
572the case where the table is already loaded. (Lin Ming) BZ 463
573
574Implemented support for the use of DDBHandles as an Indexed Reference, as per
575the ACPI spec. (Lin Ming) BZ 486
576
577Implemented support for UserTerm (Method invocation) for the Unload operator
578as per the ACPI spec. (Lin Ming) BZ 580
579
580Fixed a problem with the LoadTable operator where the OemId and OemTableId
581input strings could cause unexpected failures if they were shorter than the
582maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
583
584Implemented support for UserTerm (Method invocation) for the Unload operator
585as per the ACPI spec. (Lin Ming) BZ 580
586
587Implemented header file support for new ACPI tables - BERT, ERST, EINJ, HEST,
588IBFT, UEFI, WDAT. Disassembler support is forthcoming.
589
590Example Code and Data Size: These are the sizes for the OS-independent
591acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
592debug version of the code includes the debug output trace mechanism and has
593a much larger code and data size.
594
595  Previous Release:
596    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
597    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
598  Current Release:
599    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
600    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
601
6022) iASL Compiler/Disassembler and Tools:
603
604Implemented support in the disassembler for checksum validation on incoming
605binary DSDTs and SSDTs. If incorrect, a message is displayed within the table
606header dump at the start of the disassembly.
607
608Implemented additional debugging information in the namespace listing file
609created during compilation. In addition to the namespace hierarchy, the full
610pathname to each namespace object is displayed.
611
612Fixed a problem with the disassembler where invalid ACPI tables could cause
613faults or infinite loops.
614
615Fixed an unexpected parse error when using the optional "parameter types"
616list in a control method declaration. (Lin Ming) BZ 397
617
618Fixed a problem where two External declarations with the same name did not
619cause an error (Lin Ming) BZ 509
620
621Implemented support for full TermArgs (adding Argx, Localx and method
622invocation) for the ParameterData parameter to the LoadTable operator. (Lin
623Ming) BZ 583,587
624
625----------------------------------------
62619 December 2007. Summary of changes for version 20071219:
627
6281) ACPI CA Core Subsystem:
629
630Implemented full support for deferred execution for the TermArg string
631arguments for DataTableRegion. This enables forward references and full
632operand resolution for the three string arguments. Similar to OperationRegion
633deferred argument execution.) Lin Ming. BZ 430
634
635Implemented full argument resolution support for the BankValue argument to
636BankField. Previously, only constants were supported, now any TermArg may be
637used. Lin Ming BZ 387, 393
638
639Fixed a problem with AcpiGetDevices where the search of a branch of the
640device tree could be terminated prematurely. In accordance with the ACPI
641specification, the search down the current branch is terminated if a device
642is both not present and not functional (instead of just not present.) Yakui
643Zhao.
644
645Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly if
646the underlying AML code changed the GPE enable registers. Now, any unknown
647incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately disabled
648instead of simply ignored. Rui Zhang.
649
650Fixed a problem with Index Fields where the Index register was incorrectly
651limited to a maximum of 32 bits. Now any size may be used.
652
653Fixed a couple memory leaks associated with "implicit return" objects when
654the AML Interpreter slack mode is enabled. Lin Ming BZ 349
655
656Example Code and Data Size: These are the sizes for the OS-independent
657acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
658debug version of the code includes the debug output trace mechanism and has
659a much larger code and data size.
660
661  Previous Release:
662    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
663    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
664  Current Release:
665    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
666    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
667
668----------------------------------------
66914 November 2007. Summary of changes for version 20071114:
670
6711) ACPI CA Core Subsystem:
672
673Implemented event counters for each of the Fixed Events, the ACPI SCI
674(interrupt) itself, and control methods executed. Named
675AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. These
676should be useful for debugging and statistics.
677
678Implemented a new external interface, AcpiGetStatistics, to retrieve the
679contents of the various event counters. Returns the current values for
680AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
681AcpiMethodCount. The interface can be expanded in the future if new counters
682are added. Device drivers should use this interface rather than access the
683counters directly.
684
685Fixed a problem with the FromBCD and ToBCD operators. With some compilers,
686the ShortDivide function worked incorrectly, causing problems with the BCD
687functions with large input values. A truncation from 64-bit to 32-bit
688inadvertently occurred. Internal BZ 435. Lin Ming
689
690Fixed a problem with Index references passed as method arguments. References
691passed as arguments to control methods were dereferenced immediately (before
692control was passed to the called method). The references are now correctly
693passed directly to the called method. BZ 5389. Lin Ming
694
695Fixed a problem with CopyObject used in conjunction with the Index operator.
696The reference was incorrectly dereferenced before the copy. The reference is
697now correctly copied. BZ 5391. Lin Ming
698
699Fixed a problem with Control Method references within Package objects. These
700references are now correctly generated. This completes the package
701construction overhaul that began in version 20071019.
702
703Example Code and Data Size: These are the sizes for the OS-independent
704acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
705debug version of the code includes the debug output trace mechanism and has
706a much larger code and data size.
707
708  Previous Release:
709    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
710    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
711  Current Release:
712    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
713    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
714
715
7162) iASL Compiler/Disassembler and Tools:
717
718The AcpiExec utility now installs handlers for all of the predefined
719Operation Region types. New types supported are: PCI_Config, CMOS, and
720PCIBARTarget.
721
722Fixed a problem with the 64-bit version of AcpiExec where the extended (64-
723bit) address fields for the DSDT and FACS within the FADT were not being
724used, causing truncation of the upper 32-bits of these addresses. Lin Ming
725and Bob Moore
726
727----------------------------------------
72819 October 2007. Summary of changes for version 20071019:
729
7301) ACPI CA Core Subsystem:
731
732Fixed a problem with the Alias operator when the target of the alias is a
733named ASL operator that opens a new scope -- Scope, Device, PowerResource,
734Processor, and ThermalZone. In these cases, any children of the original
735operator could not be accessed via the alias, potentially causing unexpected
736AE_NOT_FOUND exceptions. (BZ 9067)
737
738Fixed a problem with the Package operator where all named references were
739created as object references and left otherwise unresolved. According to the
740ACPI specification, a Package can only contain Data Objects or references to
741control methods. The implication is that named references to Data Objects
742(Integer, Buffer, String, Package, BufferField, Field) should be resolved
743immediately upon package creation. This is the approach taken with this
744change. References to all other named objects (Methods, Devices, Scopes,
745etc.) are all now properly created as reference objects. (BZ 5328)
746
747Reverted a change to Notify handling that was introduced in version
74820070508. This version changed the Notify handling from asynchronous to
749fully synchronous (Device driver Notify handling with respect to the Notify
750ASL operator). It was found that this change caused more problems than it
751solved and was removed by most users.
752
753Fixed a problem with the Increment and Decrement operators where the type of
754the target object could be unexpectedly and incorrectly changed. (BZ 353)
755Lin Ming.
756
757Fixed a problem with the Load and LoadTable operators where the table
758location within the namespace was ignored. Instead, the table was always
759loaded into the root or current scope. Lin Ming.
760
761Fixed a problem with the Load operator when loading a table from a buffer
762object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
763
764Fixed a problem with the Debug object where a store of a DdbHandle reference
765object to the Debug object could cause a fault.
766
767Added a table checksum verification for the Load operator, in the case where
768the load is from a buffer. (BZ 578).
769
770Implemented additional parameter validation for the LoadTable operator. The
771length of the input strings SignatureString, OemIdString, and OemTableId are
772now checked for maximum lengths. (BZ 582) Lin Ming.
773
774Example Code and Data Size: These are the sizes for the OS-independent
775acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
776debug version of the code includes the debug output trace mechanism and has
777a much larger code and data size.
778
779  Previous Release:
780    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
781    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
782  Current Release:
783    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
784    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
785
786
7872) iASL Compiler/Disassembler:
788
789Fixed a problem where if a single file was specified and the file did not
790exist, no error message was emitted. (Introduced with wildcard support in
791version 20070917.)
792
793----------------------------------------
79419 September 2007. Summary of changes for version 20070919:
795
7961) ACPI CA Core Subsystem:
797
798Designed and implemented new external interfaces to install and remove
799handlers for ACPI table-related events. Current events that are defined are
800LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
801they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
802AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
803
804Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
805(acpi_serialized option on Linux) could cause some systems to hang during
806initialization. (Bob Moore) BZ 8171
807
808Fixed a problem where objects of certain types (Device, ThermalZone,
809Processor, PowerResource) can be not found if they are declared and
810referenced from within the same control method (Lin Ming) BZ 341
811
812Example Code and Data Size: These are the sizes for the OS-independent
813acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
814debug version of the code includes the debug output trace mechanism and has
815a much larger code and data size.
816
817  Previous Release:
818    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
819    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
820  Current Release:
821    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
822    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
823
824
8252) iASL Compiler/Disassembler:
826
827Implemented support to allow multiple files to be compiled/disassembled in a
828single invocation. This includes command line wildcard support for both the
829Windows and Unix versions of the compiler. This feature simplifies the
830disassembly and compilation of multiple ACPI tables in a single directory.
831
832----------------------------------------
83308 May 2007. Summary of changes for version 20070508:
834
8351) ACPI CA Core Subsystem:
836
837Implemented a Microsoft compatibility design change for the handling of the
838Notify AML operator. Previously, notify handlers were dispatched and
839executed completely asynchronously in a deferred thread. The new design
840still executes the notify handlers in a different thread, but the original
841thread that executed the Notify() now waits at a synchronization point for
842the notify handler to complete. Some machines depend on a synchronous Notify
843operator in order to operate correctly.
844
845Implemented support to allow Package objects to be passed as method
846arguments to the external AcpiEvaluateObject interface. Previously, this
847would return the AE_NOT_IMPLEMENTED exception. This feature had not been
848implemented since there were no reserved control methods that required it
849until recently.
850
851Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs that
852contained invalid non-zero values in reserved fields could cause later
853failures because these fields have meaning in later revisions of the FADT.
854For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The fields
855are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
856
857Fixed a problem where the Global Lock handle was not properly updated if a
858thread that acquired the Global Lock via executing AML code then attempted
859to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by Joe
860Liu.
861
862Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
863could be corrupted if the interrupt being removed was at the head of the
864list. Reported by Linn Crosetto.
865
866Example Code and Data Size: These are the sizes for the OS-independent
867acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
868debug version of the code includes the debug output trace mechanism and has
869a much larger code and data size.
870
871  Previous Release:
872    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
873    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
874  Current Release:
875    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
876    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
877
878----------------------------------------
87920 March 2007. Summary of changes for version 20070320:
880
8811) ACPI CA Core Subsystem:
882
883Implemented a change to the order of interpretation and evaluation of AML
884operand objects within the AML interpreter. The interpreter now evaluates
885operands in the order that they appear in the AML stream (and the
886corresponding ASL code), instead of in the reverse order (after the entire
887operand list has been parsed). The previous behavior caused several subtle
888incompatibilities with the Microsoft AML interpreter as well as being
889somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
890
891Implemented a change to the ACPI Global Lock support. All interfaces to the
892global lock now allow the same thread to acquire the lock multiple times.
893This affects the AcpiAcquireGlobalLock external interface to the global lock
894as well as the internal use of the global lock to support AML fields -- a
895control method that is holding the global lock can now simultaneously access
896AML fields that require global lock protection. Previously, in both cases,
897this would have resulted in an AE_ALREADY_ACQUIRED exception. The change to
898AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
899Controller. There is no change to the behavior of the AML Acquire operator,
900as this can already be used to acquire a mutex multiple times by the same
901thread. BZ 8066. With assistance from Alexey Starikovskiy.
902
903Fixed a problem where invalid objects could be referenced in the AML
904Interpreter after error conditions. During operand evaluation, ensure that
905the internal "Return Object" field is cleared on error and only valid
906pointers are stored there. Caused occasional access to deleted objects that
907resulted in "large reference count" warning messages. Valery Podrezov.
908
909Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur on
910deeply nested control method invocations. BZ 7873, local BZ 487. Valery
911Podrezov.
912
913Fixed an internal problem with the handling of result objects on the
914interpreter result stack. BZ 7872. Valery Podrezov.
915
916Removed obsolete code that handled the case where AML_NAME_OP is the target
917of a reference (Reference.Opcode). This code was no longer necessary. BZ
9187874. Valery Podrezov.
919
920Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This was a
921remnant from the previously discontinued 16-bit support.
922
923Example Code and Data Size: These are the sizes for the OS-independent
924acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
925debug version of the code includes the debug output trace mechanism and has
926a much larger code and data size.
927
928  Previous Release:
929    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
930    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
931  Current Release:
932    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
933    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
934
935----------------------------------------
93626 January 2007. Summary of changes for version 20070126:
937
9381) ACPI CA Core Subsystem:
939
940Added the 2007 copyright to all module headers and signons. This affects
941virtually every file in the ACPICA core subsystem, the iASL compiler, and
942the utilities.
943
944Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
945during a table load. A bad pointer was passed in the case where the DSDT is
946overridden, causing a fault in this case.
947
948Example Code and Data Size: These are the sizes for the OS-independent
949acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
950debug version of the code includes the debug output trace mechanism and has
951a much larger code and data size.
952
953  Previous Release:
954    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
955    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
956  Current Release:
957    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
958    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
959
960----------------------------------------
96115 December 2006. Summary of changes for version 20061215:
962
9631) ACPI CA Core Subsystem:
964
965Support for 16-bit ACPICA has been completely removed since it is no longer
966necessary and it clutters the code. All 16-bit macros, types, and
967conditional compiles have been removed, cleaning up and simplifying the code
968across the entire subsystem. DOS support is no longer needed since the
969bootable Linux firmware kit is now available.
970
971The handler for the Global Lock is now removed during AcpiTerminate to
972enable a clean subsystem restart, via the implementation of the
973AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
974HP)
975
976Implemented enhancements to the multithreading support within the debugger
977to enable improved multithreading debugging and evaluation of the subsystem.
978(Valery Podrezov)
979
980Debugger: Enhanced the Statistics/Memory command to emit the total (maximum)
981memory used during the execution, as well as the maximum memory consumed by
982each of the various object types. (Valery Podrezov)
983
984Example Code and Data Size: These are the sizes for the OS-independent
985acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
986debug version of the code includes the debug output trace mechanism and has
987a much larger code and data size.
988
989  Previous Release:
990    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
991    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
992  Current Release:
993    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
994    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
995
996
9972) iASL Compiler/Disassembler and Tools:
998
999AcpiExec: Implemented a new option (-m) to display full memory use
1000statistics upon subsystem/program termination. (Valery Podrezov)
1001
1002----------------------------------------
100309 November 2006. Summary of changes for version 20061109:
1004
10051) ACPI CA Core Subsystem:
1006
1007Optimized the Load ASL operator in the case where the source operand is an
1008operation region. Simply map the operation region memory, instead of
1009performing a bytewise read. (Region must be of type SystemMemory, see
1010below.)
1011
1012Fixed the Load ASL operator for the case where the source operand is a
1013region field. A buffer object is also allowed as the source operand. BZ 480
1014
1015Fixed a problem where the Load ASL operator allowed the source operand to be
1016an operation region of any type. It is now restricted to regions of type
1017SystemMemory, as per the ACPI specification. BZ 481
1018
1019Additional cleanup and optimizations for the new Table Manager code.
1020
1021AcpiEnable will now fail if all of the required ACPI tables are not loaded
1022(FADT, FACS, DSDT). BZ 477
1023
1024Added #pragma pack(8/4) to acobject.h to ensure that the structures in this
1025header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
1026manually optimized to be aligned and will not work if it is byte-packed.
1027
1028Example Code and Data Size: These are the sizes for the OS-independent
1029acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1030debug version of the code includes the debug output trace mechanism and has
1031a much larger code and data size.
1032
1033  Previous Release:
1034    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
1035    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
1036  Current Release:
1037    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
1038    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
1039
1040
10412) iASL Compiler/Disassembler and Tools:
1042
1043Fixed a problem where the presence of the _OSI predefined control method
1044within complex expressions could cause an internal compiler error.
1045
1046AcpiExec: Implemented full region support for multiple address spaces.
1047SpaceId is now part of the REGION object. BZ 429
1048
1049----------------------------------------
105011 October 2006. Summary of changes for version 20061011:
1051
10521) ACPI CA Core Subsystem:
1053
1054Completed an AML interpreter performance enhancement for control method
1055execution. Previously a 2-pass parse/execution, control methods are now
1056completely parsed and executed in a single pass. This improves overall
1057interpreter performance by ~25%, reduces code size, and reduces CPU stack
1058use. (Valery Podrezov + interpreter changes in version 20051202 that
1059eliminated namespace loading during the pass one parse.)
1060
1061Implemented _CID support for PCI Root Bridge detection. If the _HID does not
1062match the predefined PCI Root Bridge IDs, the _CID list (if present) is now
1063obtained and also checked for an ID match.
1064
1065Implemented additional support for the PCI _ADR execution: upsearch until a
1066device scope is found before executing _ADR. This allows PCI_Config
1067operation regions to be declared locally within control methods underneath
1068PCI device objects.
1069
1070Fixed a problem with a possible race condition between threads executing
1071AcpiWalkNamespace and the AML interpreter. This condition was removed by
1072modifying AcpiWalkNamespace to (by default) ignore all temporary namespace
1073entries created during any concurrent control method execution. An
1074additional namespace race condition is known to exist between
1075AcpiWalkNamespace and the Load/Unload ASL operators and is still under
1076investigation.
1077
1078Restructured the AML ParseLoop function, breaking it into several
1079subfunctions in order to reduce CPU stack use and improve maintainability.
1080(Mikhail Kouzmich)
1081
1082AcpiGetHandle: Fix for parameter validation to detect invalid combinations
1083of prefix handle and pathname. BZ 478
1084
1085Example Code and Data Size: These are the sizes for the OS-independent
1086acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1087debug version of the code includes the debug output trace mechanism and has
1088a much larger code and data size.
1089
1090  Previous Release:
1091    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
1092    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
1093  Current Release:
1094    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
1095    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
1096
10972) iASL Compiler/Disassembler and Tools:
1098
1099Ported the -g option (get local ACPI tables) to the new ACPICA Table Manager
1100to restore original behavior.
1101
1102----------------------------------------
110327 September 2006. Summary of changes for version 20060927:
1104
11051) ACPI CA Core Subsystem:
1106
1107Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
1108These functions now use a spinlock for mutual exclusion and the interrupt
1109level indication flag is not needed.
1110
1111Fixed a problem with the Global Lock where the lock could appear to be
1112obtained before it is actually obtained. The global lock semaphore was
1113inadvertently created with one unit instead of zero units. (BZ 464) Fiodor
1114Suietov.
1115
1116Fixed a possible memory leak and fault in AcpiExResolveObjectToValue during
1117a read from a buffer or region field. (BZ 458) Fiodor Suietov.
1118
1119Example Code and Data Size: These are the sizes for the OS-independent
1120acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1121debug version of the code includes the debug output trace mechanism and has
1122a much larger code and data size.
1123
1124  Previous Release:
1125    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
1126    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
1127  Current Release:
1128    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
1129    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
1130
1131
11322) iASL Compiler/Disassembler and Tools:
1133
1134Fixed a compilation problem with the pre-defined Resource Descriptor field
1135names where an "object does not exist" error could be incorrectly generated
1136if the parent ResourceTemplate pathname places the template within a
1137different namespace scope than the current scope. (BZ 7212)
1138
1139Fixed a problem where the compiler could hang after syntax errors detected
1140in an ElseIf construct. (BZ 453)
1141
1142Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
1143operator. An incorrect output filename was produced when this parameter was
1144a null string (""). Now, the original input filename is used as the AML
1145output filename, with an ".aml" extension.
1146
1147Implemented a generic batch command mode for the AcpiExec utility (execute
1148any AML debugger command) (Valery Podrezov).
1149
1150----------------------------------------
115112 September 2006. Summary of changes for version 20060912:
1152
11531) ACPI CA Core Subsystem:
1154
1155Enhanced the implementation of the "serialized mode" of the interpreter
1156(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
1157specified, instead of creating a serialization semaphore per control method,
1158the interpreter lock is simply no longer released before a blocking
1159operation during control method execution. This effectively makes the AML
1160Interpreter single-threaded. The overhead of a semaphore per-method is
1161eliminated.
1162
1163Fixed a regression where an error was no longer emitted if a control method
1164attempts to create 2 objects of the same name. This once again returns
1165AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism that
1166will dynamically serialize the control method to possible prevent future
1167errors. (BZ 440)
1168
1169Integrated a fix for a problem with PCI Express HID detection in the PCI
1170Config Space setup procedure. (BZ 7145)
1171
1172Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
1173AcpiHwInitialize function - the FADT registers are now validated when the
1174table is loaded.
1175
1176Added two new warnings during FADT verification - 1) if the FADT is larger
1177than the largest known FADT version, and 2) if there is a mismatch between a
117832-bit block address and the 64-bit X counterpart (when both are non-zero.)
1179
1180Example Code and Data Size: These are the sizes for the OS-independent
1181acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1182debug version of the code includes the debug output trace mechanism and has
1183a much larger code and data size.
1184
1185  Previous Release:
1186    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
1187    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
1188  Current Release:
1189    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
1190    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
1191
1192
11932) iASL Compiler/Disassembler and Tools:
1194
1195Fixed a problem with the implementation of the Switch() operator where the
1196temporary variable was declared too close to the actual Switch, instead of
1197at method level. This could cause a problem if the Switch() operator is
1198within a while loop, causing an error on the second iteration. (BZ 460)
1199
1200Disassembler - fix for error emitted for unknown type for target of scope
1201operator. Now, ignore it and continue.
1202
1203Disassembly of an FADT now verifies the input FADT and reports any errors
1204found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
1205
1206Disassembly of raw data buffers with byte initialization data now prefixes
1207each output line with the current buffer offset.
1208
1209Disassembly of ASF! table now includes all variable-length data fields at
1210the end of some of the subtables.
1211
1212The disassembler now emits a comment if a buffer appears to be a
1213ResourceTemplate, but cannot be disassembled as such because the EndTag does
1214not appear at the very end of the buffer.
1215
1216AcpiExec - Added the "-t" command line option to enable the serialized mode
1217of the AML interpreter.
1218
1219----------------------------------------
122031 August 2006. Summary of changes for version 20060831:
1221
12221) ACPI CA Core Subsystem:
1223
1224Miscellaneous fixes for the Table Manager:
1225- Correctly initialize internal common FADT for all 64-bit "X" fields
1226- Fixed a couple table mapping issues during table load
1227- Fixed a couple alignment issues for IA64
1228- Initialize input array to zero in AcpiInitializeTables
1229- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
1230AcpiGetTableByIndex
1231
1232Change for GPE support: when a "wake" GPE is received, all wake GPEs are now
1233immediately disabled to prevent the waking GPE from firing again and to
1234prevent other wake GPEs from interrupting the wake process.
1235
1236Added the AcpiGpeCount global that tracks the number of processed GPEs, to
1237be used for debugging systems with a large number of ACPI interrupts.
1238
1239Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
1240both the ACPICA headers and the disassembler.
1241
1242Example Code and Data Size: These are the sizes for the OS-independent
1243acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1244debug version of the code includes the debug output trace mechanism and has
1245a much larger code and data size.
1246
1247  Previous Release:
1248    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
1249    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
1250  Current Release:
1251    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
1252    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
1253
1254
12552) iASL Compiler/Disassembler and Tools:
1256
1257Disassembler support for the DMAR ACPI table.
1258
1259----------------------------------------
126023 August 2006. Summary of changes for version 20060823:
1261
12621) ACPI CA Core Subsystem:
1263
1264The Table Manager component has been completely redesigned and
1265reimplemented. The new design is much simpler, and reduces the overall code
1266and data size of the kernel-resident ACPICA by approximately 5%. Also, it is
1267now possible to obtain the ACPI tables very early during kernel
1268initialization, even before dynamic memory management is initialized.
1269(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
1270
1271Obsolete ACPICA interfaces:
1272
1273- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel init
1274time).
1275- AcpiLoadTable: Not needed.
1276- AcpiUnloadTable: Not needed.
1277
1278New ACPICA interfaces:
1279
1280- AcpiInitializeTables: Must be called before the table manager can be used.
1281- AcpiReallocateRootTable: Used to transfer the root table to dynamically
1282allocated memory after it becomes available.
1283- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI tables
1284in the RSDT/XSDT.
1285
1286Other ACPICA changes:
1287
1288- AcpiGetTableHeader returns the actual mapped table header, not a copy. Use
1289AcpiOsUnmapMemory to free this mapping.
1290- AcpiGetTable returns the actual mapped table. The mapping is managed
1291internally and must not be deleted by the caller. Use of this interface
1292causes no additional dynamic memory allocation.
1293- AcpiFindRootPointer: Support for physical addressing has been eliminated,
1294it appeared to be unused.
1295- The interface to AcpiOsMapMemory has changed to be consistent with the
1296other allocation interfaces.
1297- The interface to AcpiOsGetRootPointer has changed to eliminate unnecessary
1298parameters.
1299- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 64-
1300bit platforms. Was previously 64 bits on all platforms.
1301- The interface to the ACPI Global Lock acquire/release macros have changed
1302slightly since ACPICA no longer keeps a local copy of the FACS with a
1303constructed pointer to the actual global lock.
1304
1305Porting to the new table manager:
1306
1307- AcpiInitializeTables: Must be called once, and can be called anytime
1308during the OS initialization process. It allows the host to specify an area
1309of memory to be used to store the internal version of the RSDT/XSDT (root
1310table). This allows the host to access ACPI tables before memory management
1311is initialized and running.
1312- AcpiReallocateRootTable: Can be called after memory management is running
1313to copy the root table to a dynamically allocated array, freeing up the
1314scratch memory specified in the call to AcpiInitializeTables.
1315- AcpiSubsystemInitialize: This existing interface is independent of the
1316Table Manager, and does not have to be called before the Table Manager can
1317be used, it only must be called before the rest of ACPICA can be used.
1318- ACPI Tables: Some changes have been made to the names and structure of the
1319actbl.h and actbl1.h header files and may require changes to existing code.
1320For example, bitfields have been completely removed because of their lack of
1321portability across C compilers.
1322- Update interfaces to the Global Lock acquire/release macros if local
1323versions are used. (see acwin.h)
1324
1325Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
1326
1327New files: tbfind.c
1328
1329Example Code and Data Size: These are the sizes for the OS-independent
1330acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1331debug version of the code includes the debug output trace mechanism and has
1332a much larger code and data size.
1333
1334  Previous Release:
1335    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
1336    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
1337  Current Release:
1338    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
1339    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
1340
1341
13422) iASL Compiler/Disassembler and Tools:
1343
1344No changes for this release.
1345
1346----------------------------------------
134721 July 2006. Summary of changes for version 20060721:
1348
13491) ACPI CA Core Subsystem:
1350
1351The full source code for the ASL test suite used to validate the iASL
1352compiler and the ACPICA core subsystem is being released with the ACPICA
1353source for the first time. The source is contained in a separate package and
1354consists of over 1100 files that exercise all ASL/AML operators. The package
1355should appear on the Intel/ACPI web site shortly. (Valery Podrezov, Fiodor
1356Suietov)
1357
1358Completed a new design and implementation for support of the ACPI Global
1359Lock. On the OS side, the global lock is now treated as a standard AML
1360mutex. Previously, multiple OS threads could "acquire" the global lock
1361simultaneously. However, this could cause the BIOS to be starved out of the
1362lock - especially in cases such as the Embedded Controller driver where
1363there is a tight coupling between the OS and the BIOS.
1364
1365Implemented an optimization for the ACPI Global Lock interrupt mechanism.
1366The Global Lock interrupt handler no longer queues the execution of a
1367separate thread to signal the global lock semaphore. Instead, the semaphore
1368is signaled directly from the interrupt handler.
1369
1370Implemented support within the AML interpreter for package objects that
1371contain a larger AML length (package list length) than the package element
1372count. In this case, the length of the package is truncated to match the
1373package element count. Some BIOS code apparently modifies the package length
1374on the fly, and this change supports this behavior. Provides compatibility
1375with the MS AML interpreter. (With assistance from Fiodor Suietov)
1376
1377Implemented a temporary fix for the BankValue parameter of a Bank Field to
1378support all constant values, now including the Zero and One opcodes.
1379Evaluation of this parameter must eventually be converted to a full TermArg
1380evaluation. A not-implemented error is now returned (temporarily) for non-
1381constant values for this parameter.
1382
1383Fixed problem reports (Fiodor Suietov) integrated:
1384- Fix for premature object deletion after CopyObject on Operation Region (BZ
1385350)
1386
1387Example Code and Data Size: These are the sizes for the OS-independent
1388acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1389debug version of the code includes the debug output trace mechanism and has
1390a much larger code and data size.
1391
1392  Previous Release:
1393    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
1394    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
1395  Current Release:
1396    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
1397    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
1398
1399
14002) iASL Compiler/Disassembler and Tools:
1401
1402No changes for this release.
1403
1404----------------------------------------
140507 July 2006. Summary of changes for version 20060707:
1406
14071) ACPI CA Core Subsystem:
1408
1409Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
1410that do not allow the initialization of address pointers within packed
1411structures - even though the hardware itself may support misaligned
1412transfers. Some of the debug data structures are packed by default to
1413minimize size.
1414
1415Added an error message for the case where AcpiOsGetThreadId() returns zero.
1416A non-zero value is required by the core ACPICA code to ensure the proper
1417operation of AML mutexes and recursive control methods.
1418
1419The DSDT is now the only ACPI table that determines whether the AML
1420interpreter is in 32-bit or 64-bit mode. Not really a functional change, but
1421the hooks for per-table 32/64 switching have been removed from the code. A
1422clarification to the ACPI specification is forthcoming in ACPI 3.0B.
1423
1424Fixed a possible leak of an OwnerID in the error path of
1425AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
1426deletion to a single place in AcpiTbUninstallTable to correct possible leaks
1427when using the AcpiTbDeleteTablesByType interface (with assistance from
1428Lance Ortiz.)
1429
1430Fixed a problem with Serialized control methods where the semaphore
1431associated with the method could be over-signaled after multiple method
1432invocations.
1433
1434Fixed two issues with the locking of the internal namespace data structure.
1435Both the Unload() operator and AcpiUnloadTable interface now lock the
1436namespace during the namespace deletion associated with the table unload
1437(with assistance from Linn Crosetto.)
1438
1439Fixed problem reports (Valery Podrezov) integrated:
1440- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
1441
1442Fixed problem reports (Fiodor Suietov) integrated:
1443- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
1444- On Address Space handler deletion, needless deactivation call (BZ 374)
1445- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 375)
1446- Possible memory leak, Notify sub-objects of Processor, Power, ThermalZone
1447(BZ 376)
1448- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
1449- Minimum Length of RSDT should be validated (BZ 379)
1450- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
1451Handler (BZ (380)
1452- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type loaded
1453(BZ 381)
1454
1455Example Code and Data Size: These are the sizes for the OS-independent
1456acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1457debug version of the code includes the debug output trace mechanism and has
1458a much larger code and data size.
1459
1460  Previous Release:
1461    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
1462    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
1463  Current Release:
1464    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
1465    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
1466
1467
14682) iASL Compiler/Disassembler and Tools:
1469
1470Fixed problem reports:
1471Compiler segfault when ASL contains a long (>1024) String declaration (BZ
1472436)
1473
1474----------------------------------------
147523 June 2006. Summary of changes for version 20060623:
1476
14771) ACPI CA Core Subsystem:
1478
1479Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
1480allows the type to be customized to the host OS for improved efficiency
1481(since a spinlock is usually a very small object.)
1482
1483Implemented support for "ignored" bits in the ACPI registers. According to
1484the ACPI specification, these bits should be preserved when writing the
1485registers via a read/modify/write cycle. There are 3 bits preserved in this
1486manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
1487
1488Implemented the initial deployment of new OSL mutex interfaces. Since some
1489host operating systems have separate mutex and semaphore objects, this
1490feature was requested. The base code now uses mutexes (and the new mutex
1491interfaces) wherever a binary semaphore was used previously. However, for
1492the current release, the mutex interfaces are defined as macros to map them
1493to the existing semaphore interfaces. Therefore, no OSL changes are required
1494at this time. (See acpiosxf.h)
1495
1496Fixed several problems with the support for the control method SyncLevel
1497parameter. The SyncLevel now works according to the ACPI specification and
1498in concert with the Mutex SyncLevel parameter, since the current SyncLevel
1499is a property of the executing thread. Mutual exclusion for control methods
1500is now implemented with a mutex instead of a semaphore.
1501
1502Fixed three instances of the use of the C shift operator in the bitfield
1503support code (exfldio.c) to avoid the use of a shift value larger than the
1504target data width. The behavior of C compilers is undefined in this case and
1505can cause unpredictable results, and therefore the case must be detected and
1506avoided. (Fiodor Suietov)
1507
1508Added an info message whenever an SSDT or OEM table is loaded dynamically
1509via the Load() or LoadTable() ASL operators. This should improve debugging
1510capability since it will show exactly what tables have been loaded (beyond
1511the tables present in the RSDT/XSDT.)
1512
1513Example Code and Data Size: These are the sizes for the OS-independent
1514acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1515debug version of the code includes the debug output trace mechanism and has
1516a much larger code and data size.
1517
1518  Previous Release:
1519    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
1520    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
1521  Current Release:
1522    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
1523    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
1524
1525
15262) iASL Compiler/Disassembler and Tools:
1527
1528No changes for this release.
1529
1530----------------------------------------
153108 June 2006. Summary of changes for version 20060608:
1532
15331) ACPI CA Core Subsystem:
1534
1535Converted the locking mutex used for the ACPI hardware to a spinlock. This
1536change should eliminate all problems caused by attempting to acquire a
1537semaphore at interrupt level, and it means that all ACPICA external
1538interfaces that directly access the ACPI hardware can be safely called from
1539interrupt level. OSL code that implements the semaphore interfaces should be
1540able to eliminate any workarounds for being called at interrupt level.
1541
1542Fixed a regression introduced in 20060526 where the ACPI device
1543initialization could be prematurely aborted with an AE_NOT_FOUND if a device
1544did not have an optional _INI method.
1545
1546Fixed an IndexField issue where a write to the Data Register should be
1547limited in size to the AccessSize (width) of the IndexField itself. (BZ 433,
1548Fiodor Suietov)
1549
1550Fixed problem reports (Valery Podrezov) integrated:
1551- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
1552
1553Fixed problem reports (Fiodor Suietov) integrated:
1554- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
1555
1556Removed four global mutexes that were obsolete and were no longer being
1557used.
1558
1559Example Code and Data Size: These are the sizes for the OS-independent
1560acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1561debug version of the code includes the debug output trace mechanism and has
1562a much larger code and data size.
1563
1564  Previous Release:
1565    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
1566    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
1567  Current Release:
1568    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
1569    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
1570
1571
15722) iASL Compiler/Disassembler and Tools:
1573
1574Fixed a fault when using -g option (get tables from registry) on Windows
1575machines.
1576
1577Fixed problem reports integrated:
1578- Generate error if CreateField NumBits parameter is zero. (BZ 405)
1579- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
1580Suietov)
1581- Global table revision override (-r) is ignored (BZ 413)
1582
1583----------------------------------------
158426 May 2006. Summary of changes for version 20060526:
1585
15861) ACPI CA Core Subsystem:
1587
1588Restructured, flattened, and simplified the internal interfaces for
1589namespace object evaluation - resulting in smaller code, less CPU stack use,
1590and fewer interfaces. (With assistance from Mikhail Kouzmich)
1591
1592Fixed a problem with the CopyObject operator where the first parameter was
1593not typed correctly for the parser, interpreter, compiler, and disassembler.
1594Caused various errors and unexpected behavior.
1595
1596Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
1597produced incorrect results with some C compilers. Since the behavior of C
1598compilers when the shift value is larger than the datatype width is
1599apparently not well defined, the interpreter now detects this condition and
1600simply returns zero as expected in all such cases. (BZ 395)
1601
1602Fixed problem reports (Valery Podrezov) integrated:
1603- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
1604- Allow interpreter to handle nested method declarations (BZ 5361)
1605
1606Fixed problem reports (Fiodor Suietov) integrated:
1607- AcpiTerminate doesn't free debug memory allocation list objects (BZ 355)
1608- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 356)
1609- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
1610- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
1611- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
1612- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
1613- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
1614- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
1615- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 365)
1616- Status of the Global Initialization Handler call not used (BZ 366)
1617- Incorrect object parameter to Global Initialization Handler (BZ 367)
1618
1619Example Code and Data Size: These are the sizes for the OS-independent
1620acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1621debug version of the code includes the debug output trace mechanism and has
1622a much larger code and data size.
1623
1624  Previous Release:
1625    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
1626    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
1627  Current Release:
1628    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
1629    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
1630
1631
16322) iASL Compiler/Disassembler and Tools:
1633
1634Modified the parser to allow the names IO, DMA, and IRQ to be used as
1635namespace identifiers with no collision with existing resource descriptor
1636macro names. This provides compatibility with other ASL compilers and is
1637most useful for disassembly/recompilation of existing tables without parse
1638errors. (With assistance from Thomas Renninger)
1639
1640Disassembler: fixed an incorrect disassembly problem with the
1641DataTableRegion and CopyObject operators. Fixed a possible fault during
1642disassembly of some Alias operators.
1643
1644----------------------------------------
164512 May 2006. Summary of changes for version 20060512:
1646
16471) ACPI CA Core Subsystem:
1648
1649Replaced the AcpiOsQueueForExecution interface with a new interface named
1650AcpiOsExecute. The major difference is that the new interface does not have
1651a Priority parameter, this appeared to be useless and has been replaced by a
1652Type parameter. The Type tells the host what type of execution is being
1653requested, such as global lock handler, notify handler, GPE handler, etc.
1654This allows the host to queue and execute the request as appropriate for the
1655request type, possibly using different work queues and different priorities
1656for the various request types. This enables fixes for multithreading
1657deadlock problems such as BZ #5534, and will require changes to all existing
1658OS interface layers. (Alexey Starikovskiy and Bob Moore)
1659
1660Fixed a possible memory leak associated with the support for the so-called
1661"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
1662Suietov)
1663
1664Fixed a problem with the Load() operator where a table load from an
1665operation region could overwrite an internal table buffer by up to 7 bytes
1666and cause alignment faults on IPF systems. (With assistance from Luming Yu)
1667
1668Example Code and Data Size: These are the sizes for the OS-independent
1669acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1670debug version of the code includes the debug output trace mechanism and has
1671a much larger code and data size.
1672
1673  Previous Release:
1674    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
1675    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
1676  Current Release:
1677    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
1678    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
1679
1680
1681
16822) iASL Compiler/Disassembler and Tools:
1683
1684Disassembler: Implemented support to cross reference the internal namespace
1685and automatically generate ASL External() statements for symbols not defined
1686within the current table being disassembled. This will simplify the
1687disassembly and recompilation of interdependent tables such as SSDTs since
1688these statements will no longer have to be added manually.
1689
1690Disassembler: Implemented experimental support to automatically detect
1691invocations of external control methods and generate appropriate External()
1692statements. This is problematic because the AML cannot be correctly parsed
1693until the number of arguments for each control method is known. Currently,
1694standalone method invocations and invocations as the source operand of a
1695Store() statement are supported.
1696
1697Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
1698LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
1699LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
1700more readable and likely closer to the original ASL source.
1701
1702----------------------------------------
170321 April 2006. Summary of changes for version 20060421:
1704
17051) ACPI CA Core Subsystem:
1706
1707Removed a device initialization optimization introduced in 20051216 where
1708the _STA method was not run unless an _INI was also present for the same
1709device. This optimization could cause problems because it could allow _INI
1710methods to be run within a not-present device subtree. (If a not-present
1711device had no _INI, _STA would not be run, the not-present status would not
1712be discovered, and the children of the device would be incorrectly
1713traversed.)
1714
1715Implemented a new _STA optimization where namespace subtrees that do not
1716contain _INI are identified and ignored during device initialization.
1717Selectively running _STA can significantly improve boot time on large
1718machines (with assistance from Len Brown.)
1719
1720Implemented support for the device initialization case where the returned
1721_STA flags indicate a device not-present but functioning. In this case, _INI
1722is not run, but the device children are examined for presence, as per the
1723ACPI specification.
1724
1725Implemented an additional change to the IndexField support in order to
1726conform to MS behavior. The value written to the Index Register is not
1727simply a byte offset, it is a byte offset in units of the access width of
1728the parent Index Field. (Fiodor Suietov)
1729
1730Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
1731interface is called during the creation of all AML operation regions, and
1732allows the host OS to exert control over what addresses it will allow the
1733AML code to access. Operation Regions whose addresses are disallowed will
1734cause a runtime exception when they are actually accessed (will not affect
1735or abort table loading.) See oswinxf or osunixxf for an example
1736implementation.
1737
1738Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
1739interface allows the host OS to match the various "optional"
1740interface/behavior strings for the _OSI predefined control method as
1741appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
1742for an example implementation.
1743
1744Restructured and corrected various problems in the exception handling code
1745paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
1746(with assistance from Takayoshi Kochi.)
1747
1748Modified the Linux source converter to ignore quoted string literals while
1749converting identifiers from mixed to lower case. This will correct problems
1750with the disassembler and other areas where such strings must not be
1751modified.
1752
1753The ACPI_FUNCTION_* macros no longer require quotes around the function
1754name. This allows the Linux source converter to convert the names, now that
1755the converter ignores quoted strings.
1756
1757Example Code and Data Size: These are the sizes for the OS-independent
1758acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1759debug version of the code includes the debug output trace mechanism and has
1760a much larger code and data size.
1761
1762  Previous Release:
1763
1764    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
1765    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
1766  Current Release:
1767    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
1768    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
1769
1770
17712) iASL Compiler/Disassembler and Tools:
1772
1773Implemented 3 new warnings for iASL, and implemented multiple warning levels
1774(w2 flag).
1775
17761) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is not
1777WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
1778check for the possible timeout, a warning is issued.
1779
17802) Useless operators: If an ASL operator does not specify an optional target
1781operand and it also does not use the function return value from the
1782operator, a warning is issued since the operator effectively does nothing.
1783
17843) Unreferenced objects: If a namespace object is created, but never
1785referenced, a warning is issued. This is a warning level 2 since there are
1786cases where this is ok, such as when a secondary table is loaded that uses
1787the unreferenced objects. Even so, care is taken to only flag objects that
1788don't look like they will ever be used. For example, the reserved methods
1789(starting with an underscore) are usually not referenced because it is
1790expected that the OS will invoke them.
1791
1792----------------------------------------
179331 March 2006. Summary of changes for version 20060331:
1794
17951) ACPI CA Core Subsystem:
1796
1797Implemented header file support for the following additional ACPI tables:
1798ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this support,
1799all current and known ACPI tables are now defined in the ACPICA headers and
1800are available for use by device drivers and other software.
1801
1802Implemented support to allow tables that contain ACPI names with invalid
1803characters to be loaded. Previously, this would cause the table load to
1804fail, but since there are several known cases of such tables on existing
1805machines, this change was made to enable ACPI support for them. Also, this
1806matches the behavior of the Microsoft ACPI implementation.
1807
1808Fixed a couple regressions introduced during the memory optimization in the
180920060317 release. The namespace node definition required additional
1810reorganization and an internal datatype that had been changed to 8-bit was
1811restored to 32-bit. (Valery Podrezov)
1812
1813Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
1814could be passed through to AcpiOsReleaseObject which is unexpected. Such
1815null pointers are now trapped and ignored, matching the behavior of the
1816previous implementation before the deployment of AcpiOsReleaseObject.
1817(Valery Podrezov, Fiodor Suietov)
1818
1819Fixed a memory mapping leak during the deletion of a SystemMemory operation
1820region where a cached memory mapping was not deleted. This became a
1821noticeable problem for operation regions that are defined within frequently
1822used control methods. (Dana Meyers)
1823
1824Reorganized the ACPI table header files into two main files: one for the
1825ACPI tables consumed by the ACPICA core, and another for the miscellaneous
1826ACPI tables that are consumed by the drivers and other software. The various
1827FADT definitions were merged into one common section and three different
1828tables (ACPI 1.0, 1.0+, and 2.0)
1829
1830Example Code and Data Size: These are the sizes for the OS-independent
1831acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
1832debug version of the code includes the debug output trace mechanism and has
1833a much larger code and data size.
1834
1835  Previous Release:
1836    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
1837    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
1838  Current Release:
1839    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
1840    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
1841
1842
18432) iASL Compiler/Disassembler and Tools:
1844
1845Disassembler: Implemented support to decode and format all non-AML ACPI
1846tables (tables other than DSDTs and SSDTs.) This includes the new tables
1847added to the ACPICA headers, therefore all current and known ACPI tables are
1848supported.
1849
1850Disassembler: The change to allow ACPI names with invalid characters also
1851enables the disassembly of such tables. Invalid characters within names are
1852changed to '*' to make the name printable; the iASL compiler will still
1853generate an error for such names, however, since this is an invalid ACPI
1854character.
1855
1856Implemented an option for AcpiXtract (-a) to extract all tables found in the
1857input file. The default invocation extracts only the DSDTs and SSDTs.
1858
1859Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
1860makefile for the AcpiXtract utility.
1861
1862----------------------------------------
186317 March 2006. Summary of changes for version 20060317:
1864
18651) ACPI CA Core Subsystem:
1866
1867Implemented the use of a cache object for all internal namespace nodes.
1868Since there are about 1000 static nodes in a typical system, this will
1869decrease memory use for cache implementations that minimize per-allocation
1870overhead (such as a slab allocator.)
1871
1872Removed the reference count mechanism for internal namespace nodes, since it
1873was deemed unnecessary. This reduces the size of each namespace node by
1874about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit case,
1875and 32 bytes for the 64-bit case.
1876
1877Optimized several internal data structures to reduce object size on 64-bit
1878platforms by packing data within the 64-bit alignment. This includes the
1879frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
1880instances corresponding to the namespace objects.
1881
1882Added two new strings for the predefined _OSI method: "Windows 2001.1 SP1"
1883and "Windows 2006".
1884
1885Split the allocation tracking mechanism out to a separate file, from
1886utalloc.c to uttrack.c. This mechanism appears to be only useful for
1887application-level code. Kernels may wish to not include uttrack.c in
1888distributions.
1889
1890Removed all remnants of the obsolete ACPI_REPORT_* macros and the associated
1891code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
1892macros.)
1893
1894Code and Data Size: These are the sizes for the acpica.lib produced by the
1895Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI
1896driver or OSPM code. The debug version of the code includes the debug output
1897trace mechanism and has a much larger code and data size. Note that these
1898values will vary depending on the efficiency of the compiler and the
1899compiler options used during generation.
1900
1901  Previous Release:
1902    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
1903    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
1904  Current Release:
1905    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
1906    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
1907
1908
19092) iASL Compiler/Disassembler and Tools:
1910
1911Implemented an ANSI C version of the acpixtract utility. This version will
1912automatically extract the DSDT and all SSDTs from the input acpidump text
1913file and dump the binary output to separate files. It can also display a
1914summary of the input file including the headers for each table found and
1915will extract any single ACPI table, with any signature. (See
1916source/tools/acpixtract)
1917
1918----------------------------------------
191910 March 2006. Summary of changes for version 20060310:
1920
19211) ACPI CA Core Subsystem:
1922
1923Tagged all external interfaces to the subsystem with the new
1924ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to assist
1925kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
1926macro. The default definition is NULL.
1927
1928Added the ACPI_THREAD_ID type for the return value from AcpiOsGetThreadId.
1929This allows the host to define this as necessary to simplify kernel
1930integration. The default definition is ACPI_NATIVE_UINT.
1931
1932Fixed two interpreter problems related to error processing, the deletion of
1933objects, and placing invalid pointers onto the internal operator result
1934stack. BZ 6028, 6151 (Valery Podrezov)
1935
1936Increased the reference count threshold where a warning is emitted for large
1937reference counts in order to eliminate unnecessary warnings on systems with
1938large namespaces (especially 64-bit.) Increased the value from 0x400 to
19390x800.
1940
1941Due to universal disagreement as to the meaning of the 'c' in the calloc()
1942function, the ACPI_MEM_CALLOCATE macro has been renamed to
1943ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
1944ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
1945ACPI_FREE.
1946
1947Code and Data Size: These are the sizes for the acpica.lib produced by the
1948Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI
1949driver or OSPM code. The debug version of the code includes the debug output
1950trace mechanism and has a much larger code and data size. Note that these
1951values will vary depending on the efficiency of the compiler and the
1952compiler options used during generation.
1953
1954  Previous Release:
1955    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
1956    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
1957  Current Release:
1958    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
1959    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
1960
1961
19622) iASL Compiler/Disassembler:
1963
1964Disassembler: implemented support for symbolic resource descriptor
1965references. If a CreateXxxxField operator references a fixed offset within a
1966resource descriptor, a name is assigned to the descriptor and the offset is
1967translated to the appropriate resource tag and pathname. The addition of
1968this support brings the disassembled code very close to the original ASL
1969source code and helps eliminate run-time errors when the disassembled code
1970is modified (and recompiled) in such a way as to invalidate the original
1971fixed offsets.
1972
1973Implemented support for a Descriptor Name as the last parameter to the ASL
1974Register() macro. This parameter was inadvertently left out of the ACPI
1975specification, and will be added for ACPI 3.0b.
1976
1977Fixed a problem where the use of the "_OSI" string (versus the full path
1978"\_OSI") caused an internal compiler error. ("No back ptr to op")
1979
1980Fixed a problem with the error message that occurs when an invalid string is
1981used for a _HID object (such as one with an embedded asterisk: "*PNP010A".)
1982The correct message is now displayed.
1983
1984----------------------------------------
198517 February 2006. Summary of changes for version 20060217:
1986
19871) ACPI CA Core Subsystem:
1988
1989Implemented a change to the IndexField support to match the behavior of the
1990Microsoft AML interpreter. The value written to the Index register is now a
1991byte offset, no longer an index based upon the width of the Data register.
1992This should fix IndexField problems seen on some machines where the Data
1993register is not exactly one byte wide. The ACPI specification will be
1994clarified on this point.
1995
1996Fixed a problem where several resource descriptor types could overrun the
1997internal descriptor buffer due to size miscalculation: VendorShort,
1998VendorLong, and Interrupt. This was noticed on IA64 machines, but could
1999affect all platforms.
2000
2001Fixed a problem where individual resource descriptors were misaligned within
2002the internal buffer, causing alignment faults on IA64 platforms.
2003
2004Code and Data Size: These are the sizes for the acpica.lib produced by the
2005Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any ACPI
2006driver or OSPM code. The debug version of the code includes the debug output
2007trace mechanism and has a much larger code and data size. Note that these
2008values will vary depending on the efficiency of the compiler and the
2009compiler options used during generation.
2010
2011  Previous Release:
2012    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
2013    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
2014  Current Release:
2015    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
2016    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
2017
2018
20192) iASL Compiler/Disassembler:
2020
2021Implemented support for new reserved names: _WDG and _WED are Microsoft
2022extensions for Windows Instrumentation Management, _TDL is a new ACPI-
2023defined method (Throttling Depth Limit.)
2024
2025Fixed a problem where a zero-length VendorShort or VendorLong resource
2026descriptor was incorrectly emitted as a descriptor of length one.
2027
2028----------------------------------------
202910 February 2006. Summary of changes for version 20060210:
2030
20311) ACPI CA Core Subsystem:
2032
2033Removed a couple of extraneous ACPI_ERROR messages that appeared during
2034normal execution. These became apparent after the conversion from
2035ACPI_DEBUG_PRINT.
2036
2037Fixed a problem where the CreateField operator could hang if the BitIndex or
2038NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
2039
2040Fixed a problem where a DeRefOf operation on a buffer object incorrectly
2041failed with an exception. This also fixes a couple of related RefOf and
2042DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
2043
2044Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead of
2045AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, BZ
20465480)
2047
2048Implemented a memory cleanup at the end of the execution of each iteration
2049of an AML While() loop, preventing the accumulation of outstanding objects.
2050(Valery Podrezov, BZ 5427)
2051
2052Eliminated a chunk of duplicate code in the object resolution code. (Valery
2053Podrezov, BZ 5336)
2054
2055Fixed several warnings during the 64-bit code generation.
2056
2057The AcpiSrc source code conversion tool now inserts one line of whitespace
2058after an if() statement that is followed immediately by a comment, improving
2059readability of the Linux code.
2060
2061Code and Data Size: The current and previous library sizes for the core
2062subsystem are shown below. These are the code and data sizes for the
2063acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
2064values do not include any ACPI driver or OSPM code. The debug version of the
2065code includes the debug output trace mechanism and has a much larger code
2066and data size. Note that these values will vary depending on the efficiency
2067of the compiler and the compiler options used during generation.
2068
2069  Previous Release:
2070    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
2071    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
2072  Current Release:
2073    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
2074    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
2075
2076
20772) iASL Compiler/Disassembler:
2078
2079Fixed a problem with the disassembly of a BankField operator with a complex
2080expression for the BankValue parameter.
2081
2082----------------------------------------
208327 January 2006. Summary of changes for version 20060127:
2084
20851) ACPI CA Core Subsystem:
2086
2087Implemented support in the Resource Manager to allow unresolved namestring
2088references within resource package objects for the _PRT method. This support
2089is in addition to the previously implemented unresolved reference support
2090within the AML parser. If the interpreter slack mode is enabled, these
2091unresolved references will be passed through to the caller as a NULL package
2092entry.
2093
2094Implemented and deployed new macros and functions for error and warning
2095messages across the subsystem. These macros are simpler and generate less
2096code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
2097ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
2098macros remain defined to allow ACPI drivers time to migrate to the new
2099macros.
2100
2101Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of the
2102Acquire/Release Lock OSL interfaces.
2103
2104Fixed a problem where Alias ASL operators are sometimes not correctly
2105resolved, in both the interpreter and the iASL compiler.
2106
2107Fixed several problems with the implementation of the ConcatenateResTemplate
2108ASL operator. As per the ACPI specification, zero length buffers are now
2109treated as a single EndTag. One-length buffers always cause a fatal
2110exception. Non-zero length buffers that do not end with a full 2-byte EndTag
2111cause a fatal exception.
2112
2113Fixed a possible structure overwrite in the AcpiGetObjectInfo external
2114interface. (With assistance from Thomas Renninger)
2115
2116Code and Data Size: The current and previous library sizes for the core
2117subsystem are shown below. These are the code and data sizes for the
2118acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
2119values do not include any ACPI driver or OSPM code. The debug version of the
2120code includes the debug output trace mechanism and has a much larger code
2121and data size. Note that these values will vary depending on the efficiency
2122of the compiler and the compiler options used during generation.
2123
2124  Previous Release:
2125    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
2126    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
2127  Current Release:
2128    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
2129    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
2130
2131
21322) iASL Compiler/Disassembler:
2133
2134Fixed an internal error that was generated for any forward references to ASL
2135Alias objects.
2136
2137----------------------------------------
213813 January 2006. Summary of changes for version 20060113:
2139
21401) ACPI CA Core Subsystem:
2141
2142Added 2006 copyright to all module headers and signons. This affects
2143virtually every file in the ACPICA core subsystem, iASL compiler, and the
2144utilities.
2145
2146Enhanced the ACPICA error reporting in order to simplify user migration to
2147the non-debug version of ACPICA. Replaced all instances of the
2148ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN debug
2149levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
2150respectively. This preserves all error and warning messages in the non-debug
2151version of the ACPICA code (this has been referred to as the "debug lite"
2152option.) Over 200 cases were converted to create a total of over 380
2153error/warning messages across the ACPICA code. This increases the code and
2154data size of the default non-debug version of the code somewhat (about 13K),
2155but all error/warning reporting may be disabled if desired (and code
2156eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
2157configuration option. The size of the debug version of ACPICA remains about
2158the same.
2159
2160Fixed a memory leak within the AML Debugger "Set" command. One object was
2161not properly deleted for every successful invocation of the command.
2162
2163Code and Data Size: The current and previous library sizes for the core
2164subsystem are shown below. These are the code and data sizes for the
2165acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
2166values do not include any ACPI driver or OSPM code. The debug version of the
2167code includes the debug output trace mechanism and has a much larger code
2168and data size. Note that these values will vary depending on the efficiency
2169of the compiler and the compiler options used during generation.
2170
2171  Previous Release:
2172    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
2173    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
2174  Current Release:
2175    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
2176    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
2177
2178
21792) iASL Compiler/Disassembler:
2180
2181The compiler now officially supports the ACPI 3.0a specification that was
2182released on December 30, 2005. (Specification is available at www.acpi.info)
2183
2184----------------------------------------
218516 December 2005. Summary of changes for version 20051216:
2186
21871) ACPI CA Core Subsystem:
2188
2189Implemented optional support to allow unresolved names within ASL Package
2190objects. A null object is inserted in the package when a named reference
2191cannot be located in the current namespace. Enabled via the interpreter
2192slack flag, this should eliminate AE_NOT_FOUND exceptions seen on machines
2193that contain such code.
2194
2195Implemented an optimization to the initialization sequence that can improve
2196boot time. During ACPI device initialization, the _STA method is now run if
2197and only if the _INI method exists. The _STA method is used to determine if
2198the device is present; An _INI can only be run if _STA returns present, but
2199it is a waste of time to run the _STA method if the _INI does not exist.
2200(Prototype and assistance from Dong Wei)
2201
2202Implemented use of the C99 uintptr_t for the pointer casting macros if it is
2203available in the current compiler. Otherwise, the default (void *) cast is
2204used as before.
2205
2206Fixed some possible memory leaks found within the execution path of the
2207Break, Continue, If, and CreateField operators. (Valery Podrezov)
2208
2209Fixed a problem introduced in the 20051202 release where an exception is
2210generated during method execution if a control method attempts to declare
2211another method.
2212
2213Moved resource descriptor string constants that are used by both the AML
2214disassembler and AML debugger to the common utilities directory so that
2215these components are independent.
2216
2217Implemented support in the AcpiExec utility (-e switch) to globally ignore
2218exceptions during control method execution (method is not aborted.)
2219
2220Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
2221generation.
2222
2223Code and Data Size: The current and previous library sizes for the core
2224subsystem are shown below. These are the code and data sizes for the
2225acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
2226values do not include any ACPI driver or OSPM code. The debug version of the
2227code includes the debug output trace mechanism and has a much larger code
2228and data size. Note that these values will vary depending on the efficiency
2229of the compiler and the compiler options used during generation.
2230
2231  Previous Release:
2232    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
2233    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
2234  Current Release:
2235    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
2236    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
2237
2238
22392) iASL Compiler/Disassembler:
2240
2241Fixed a problem where a CPU stack overflow fault could occur if a recursive
2242method call was made from within a Return statement.
2243
2244----------------------------------------
224502 December 2005. Summary of changes for version 20051202:
2246
22471) ACPI CA Core Subsystem:
2248
2249Modified the parsing of control methods to no longer create namespace
2250objects during the first pass of the parse. Objects are now created only
2251during the execute phase, at the moment the namespace creation operator is
2252encountered in the AML (Name, OperationRegion, CreateByteField, etc.) This
2253should eliminate ALREADY_EXISTS exceptions seen on some machines where
2254reentrant control methods are protected by an AML mutex. The mutex will now
2255correctly block multiple threads from attempting to create the same object
2256more than once.
2257
2258Increased the number of available Owner Ids for namespace object tracking
2259from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen on
2260some machines with a large number of ACPI tables (either static or dynamic).
2261
2262Fixed a problem with the AcpiExec utility where a fault could occur when the
2263-b switch (batch mode) is used.
2264
2265Enhanced the namespace dump routine to output the owner ID for each
2266namespace object.
2267
2268Code and Data Size: The current and previous library sizes for the core
2269subsystem are shown below. These are the code and data sizes for the
2270acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
2271values do not include any ACPI driver or OSPM code. The debug version of the
2272code includes the debug output trace mechanism and has a much larger code
2273and data size. Note that these values will vary depending on the efficiency
2274of the compiler and the compiler options used during generation.
2275
2276  Previous Release:
2277    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
2278    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
2279  Current Release:
2280    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
2281    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
2282
2283
22842) iASL Compiler/Disassembler:
2285
2286Fixed a parse error during compilation of certain Switch/Case constructs. To
2287simplify the parse, the grammar now allows for multiple Default statements
2288and this error is now detected and flagged during the analysis phase.
2289
2290Disassembler: The disassembly now includes the contents of the original
2291table header within a comment at the start of the file. This includes the
2292name and version of the original ASL compiler.
2293
2294----------------------------------------
229517 November 2005. Summary of changes for version 20051117:
2296
22971) ACPI CA Core Subsystem:
2298
2299Fixed a problem in the AML parser where the method thread count could be
2300decremented below zero if any errors occurred during the method parse phase.
2301This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some machines.
2302This also fixed a related regression with the mechanism that detects and
2303corrects methods that cannot properly handle reentrancy (related to the
2304deployment of the new OwnerId mechanism.)
2305
2306Eliminated the pre-parsing of control methods (to detect errors) during
2307table load. Related to the problem above, this was causing unwind issues if
2308any errors occurred during the parse, and it seemed to be overkill. A table
2309load should not be aborted if there are problems with any single control
2310method, thus rendering this feature rather pointless.
2311
2312Fixed a problem with the new table-driven resource manager where an internal
2313buffer overflow could occur for small resource templates.
2314
2315Implemented a new external interface, AcpiGetVendorResource. This interface
2316will find and return a vendor-defined resource descriptor within a _CRS or
2317_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn Helgaas.
2318
2319Removed the length limit (200) on string objects as per the upcoming ACPI
23203.0A specification. This affects the following areas of the interpreter: 1)
2321any implicit conversion of a Buffer to a String, 2) a String object result
2322of the ASL Concatentate operator, 3) the String object result of the ASL
2323ToString operator.
2324
2325Fixed a problem in the Windows OS interface layer (OSL) where a WAIT_FOREVER
2326on a semaphore object would incorrectly timeout. This allows the
2327multithreading features of the AcpiExec utility to work properly under
2328Windows.
2329
2330Updated the Linux makefiles for the iASL compiler and AcpiExec to include
2331the recently added file named "utresrc.c".
2332
2333Code and Data Size: The current and previous library sizes for the core
2334subsystem are shown below. These are the code and data sizes for the
2335acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
2336values do not include any ACPI driver or OSPM code. The debug version of the
2337code includes the debug output trace mechanism and has a much larger code
2338and data size. Note that these values will vary depending on the efficiency
2339of the compiler and the compiler options used during generation.
2340
2341  Previous Release:
2342    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
2343    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
2344  Current Release:
2345    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
2346    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
2347
2348
23492) iASL Compiler/Disassembler:
2350
2351Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
2352specification. For the iASL compiler, this means that string literals within
2353the source ASL can be of any length.
2354
2355Enhanced the listing output to dump the AML code for resource descriptors
2356immediately after the ASL code for each descriptor, instead of in a block at
2357the end of the entire resource template.
2358
2359Enhanced the compiler debug output to dump the entire original parse tree
2360constructed during the parse phase, before any transforms are applied to the
2361tree. The transformed tree is dumped also.
2362
2363----------------------------------------
236402 November 2005. Summary of changes for version 20051102:
2365
23661) ACPI CA Core Subsystem:
2367
2368Modified the subsystem initialization sequence to improve GPE support. The
2369GPE initialization has been split into two parts in order to defer execution
2370of the _PRW methods (Power Resources for Wake) until after the hardware is
2371fully initialized and the SCI handler is installed. This allows the _PRW
2372methods to access fields protected by the Global Lock. This will fix systems
2373where a NO_GLOBAL_LOCK exception has been seen during initialization.
2374
2375Converted the ACPI internal object disassemble and display code within the
2376AML debugger to fully table-driven operation, reducing code size and
2377increasing maintainability.
2378
2379Fixed a regression with the ConcatenateResTemplate() ASL operator introduced
2380in the 20051021 release.
2381
2382Implemented support for "local" internal ACPI object types within the
2383debugger "Object" command and the AcpiWalkNamespace external interfaces.
2384These local types include RegionFields, BankFields, IndexFields, Alias, and
2385reference objects.
2386
2387Moved common AML resource handling code into a new file, "utresrc.c". This
2388code is shared by both the Resource Manager and the AML Debugger.
2389
2390Code and Data Size: The current and previous library sizes for the core
2391subsystem are shown below. These are the code and data sizes for the
2392acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
2393values do not include any ACPI driver or OSPM code. The debug version of the
2394code includes the debug output trace mechanism and has a much larger code
2395and data size. Note that these values will vary depending on the efficiency
2396of the compiler and the compiler options used during generation.
2397
2398  Previous Release:
2399    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
2400    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
2401  Current Release:
2402    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
2403    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
2404
2405
24062) iASL Compiler/Disassembler:
2407
2408Fixed a problem with very large initializer lists (more than 4000 elements)
2409for both Buffer and Package objects where the parse stack could overflow.
2410
2411Enhanced the pre-compile source code scan for non-ASCII characters to ignore
2412characters within comment fields. The scan is now always performed and is no
2413longer optional, detecting invalid characters within a source file
2414immediately rather than during the parse phase or later.
2415
2416Enhanced the ASL grammar definition to force early reductions on all list-
2417style grammar elements so that the overall parse stack usage is greatly
2418reduced. This should improve performance and reduce the possibility of parse
2419stack overflow.
2420
2421Eliminated all reduce/reduce conflicts in the iASL parser generation. Also,
2422with the addition of a %expected statement, the compiler generates from
2423source with no warnings.
2424
2425Fixed a possible segment fault in the disassembler if the input filename
2426does not contain a "dot" extension (Thomas Renninger).
2427
2428----------------------------------------
242921 October 2005. Summary of changes for version 20051021:
2430
24311) ACPI CA Core Subsystem:
2432
2433Implemented support for the EM64T and other x86-64 processors. This
2434essentially entails recognizing that these processors support non-aligned
2435memory transfers. Previously, all 64-bit processors were assumed to lack
2436hardware support for non-aligned transfers.
2437
2438Completed conversion of the Resource Manager to nearly full table-driven
2439operation. Specifically, the resource conversion code (convert AML to
2440internal format and the reverse) and the debug code to dump internal
2441resource descriptors are fully table-driven, reducing code and data size and
2442improving maintainability.
2443
2444The OSL interfaces for Acquire and Release Lock now use a 64-bit flag word
2445on 64-bit processors instead of a fixed 32-bit word. (With assistance from
2446Alexey Starikovskiy)
2447
2448Implemented support within the resource conversion code for the Type-
2449Specific byte within the various ACPI 3.0 *WordSpace macros.
2450
2451Fixed some issues within the resource conversion code for the type-specific
2452flags for both Memory and I/O address resource descriptors. For Memory,
2453implemented support for the MTP and TTP flags. For I/O, split the TRS and
2454TTP flags into two separate fields.
2455
2456Code and Data Size: The current and previous library sizes for the core
2457subsystem are shown below. These are the code and data sizes for the
2458acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
2459values do not include any ACPI driver or OSPM code. The debug version of the
2460code includes the debug output trace mechanism and has a much larger code
2461and data size. Note that these values will vary depending on the efficiency
2462of the compiler and the compiler options used during generation.
2463
2464  Previous Release:
2465    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
2466    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
2467  Current Release:
2468    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
2469    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
2470
2471
2472
24732) iASL Compiler/Disassembler:
2474
2475Relaxed a compiler restriction that disallowed a ResourceIndex byte if the
2476corresponding ResourceSource string was not also present in a resource
2477descriptor declaration. This restriction caused problems with existing
2478AML/ASL code that includes the Index byte without the string. When such AML
2479was disassembled, it could not be compiled without modification. Further,
2480the modified code created a resource template with a different size than the
2481original, breaking code that used fixed offsets into the resource template
2482buffer.
2483
2484Removed a recent feature of the disassembler to ignore a lone ResourceIndex
2485byte. This byte is now emitted if present so that the exact AML can be
2486reproduced when the disassembled code is recompiled.
2487
2488Improved comments and text alignment for the resource descriptor code
2489emitted by the disassembler.
2490
2491Implemented disassembler support for the ACPI 3.0 AccessSize field within a
2492Register() resource descriptor.
2493
2494----------------------------------------
249530 September 2005. Summary of changes for version 20050930:
2496
24971) ACPI CA Core Subsystem:
2498
2499Completed a major overhaul of the Resource Manager code - specifically,
2500optimizations in the area of the AML/internal resource conversion code. The
2501code has been optimized to simplify and eliminate duplicated code, CPU stack
2502use has been decreased by optimizing function parameters and local
2503variables, and naming conventions across the manager have been standardized
2504for clarity and ease of maintenance (this includes function, parameter,
2505variable, and struct/typedef names.) The update may force changes in some
2506driver code, depending on how resources are handled by the host OS.
2507
2508All Resource Manager dispatch and information tables have been moved to a
2509single location for clarity and ease of maintenance. One new file was
2510created, named "rsinfo.c".
2511
2512The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
2513guarantee that the argument is not evaluated twice, making them less prone
2514to macro side-effects. However, since there exists the possibility of
2515additional stack use if a particular compiler cannot optimize them (such as
2516in the debug generation case), the original macros are optionally available.
2517Note that some invocations of the return_VALUE macro may now cause size
2518mismatch warnings; the return_UINT8 and return_UINT32 macros are provided to
2519eliminate these. (From Randy Dunlap)
2520
2521Implemented a new mechanism to enable debug tracing for individual control
2522methods. A new external interface, AcpiDebugTrace, is provided to enable
2523this mechanism. The intent is to allow the host OS to easily enable and
2524disable tracing for problematic control methods. This interface can be
2525easily exposed to a user or debugger interface if desired. See the file
2526psxface.c for details.
2527
2528AcpiUtCallocate will now return a valid pointer if a length of zero is
2529specified - a length of one is used and a warning is issued. This matches
2530the behavior of AcpiUtAllocate.
2531
2532Code and Data Size: The current and previous library sizes for the core
2533subsystem are shown below. These are the code and data sizes for the
2534acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
2535values do not include any ACPI driver or OSPM code. The debug version of the
2536code includes the debug output trace mechanism and has a much larger code
2537and data size. Note that these values will vary depending on the efficiency
2538of the compiler and the compiler options used during generation.
2539
2540  Previous Release:
2541    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
2542    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
2543  Current Release:
2544    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
2545    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
2546
2547
25482) iASL Compiler/Disassembler:
2549
2550A remark is issued if the effective compile-time length of a package or
2551buffer is zero. Previously, this was a warning.
2552
2553----------------------------------------
255416 September 2005. Summary of changes for version 20050916:
2555
25561) ACPI CA Core Subsystem:
2557
2558Fixed a problem within the Resource Manager where support for the Generic
2559Register descriptor was not fully implemented. This descriptor is now fully
2560recognized, parsed, disassembled, and displayed.
2561
2562Completely restructured the Resource Manager code to utilize table-driven
2563dispatch and lookup, eliminating many of the large switch() statements. This
2564reduces overall subsystem code size and code complexity. Affects the
2565resource parsing and construction, disassembly, and debug dump output.
2566
2567Cleaned up and restructured the debug dump output for all resource
2568descriptors. Improved readability of the output and reduced code size.
2569
2570Fixed a problem where changes to internal data structures caused the
2571optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
2572
2573Code and Data Size: The current and previous library sizes for the core
2574subsystem are shown below. These are the code and data sizes for the
2575acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. These
2576values do not include any ACPI driver or OSPM code. The debug version of the
2577code includes the debug output trace mechanism and has a much larger code
2578and data size. Note that these values will vary depending on the efficiency
2579of the compiler and the compiler options used during generation.
2580
2581  Previous Release:
2582    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
2583    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
2584  Current Release:
2585    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
2586    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
2587
2588
25892) iASL Compiler/Disassembler:
2590
2591Updated the disassembler to automatically insert an EndDependentFn() macro
2592into the ASL stream if this macro is missing in the original AML code,
2593simplifying compilation of the resulting ASL module.
2594
2595Fixed a problem in the disassembler where a disassembled ResourceSource
2596string (within a large resource descriptor) was not surrounded by quotes and
2597not followed by a comma, causing errors when the resulting ASL module was
2598compiled. Also, escape sequences within a ResourceSource string are now
2599handled correctly (especially "\\")
2600
2601----------------------------------------
260202 September 2005. Summary of changes for version 20050902:
2603
26041) ACPI CA Core Subsystem:
2605
2606Fixed a problem with the internal Owner ID allocation and deallocation
2607mechanisms for control method execution and recursive method invocation.
2608This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
2609messages seen on some systems. Recursive method invocation depth is
2610currently limited to 255. (Alexey Starikovskiy)
2611
2612Completely eliminated all vestiges of support for the "module-level
2613executable code" until this support is fully implemented and debugged. This
2614should eliminate the NO_RETURN_VALUE exceptions seen during table load on
2615some systems that invoke this support.
2616
2617Fixed a problem within the resource manager code where the transaction flags
2618for a 64-bit address descriptor were handled incorrectly in the type-
2619specific flag byte.
2620
2621Consolidated duplicate code within the address descriptor resource manager
2622code, reducing overall subsystem code size.
2623
2624Fixed a fault when using the AML debugger "disassemble" command to
2625disassemble individual control methods.
2626
2627Removed references to the "release_current" directory within the Unix
2628release package.
2629
2630Code and Data Size: The current and previous core subsystem library sizes
2631are shown below. These are the code and data sizes for the acpica.lib
2632produced by the Microsoft Visual C++ 6.0 compiler. These values do not
2633include any ACPI driver or OSPM code. The debug version of the code includes
2634the debug output trace mechanism and has a much larger code and data size.
2635Note that these values will vary depending on the efficiency of the compiler
2636and the compiler options used during generation.
2637
2638  Previous Release:
2639    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
2640    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
2641  Current Release:
2642    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
2643    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
2644
2645
26462) iASL Compiler/Disassembler:
2647
2648Implemented an error check for illegal duplicate values in the interrupt and
2649dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
2650Interrupt().
2651
2652Implemented error checking for the Irq() and IrqNoFlags() macros to detect
2653too many values in the interrupt list (16 max) and invalid values in the
2654list (range 0 - 15)
2655
2656The maximum length string literal within an ASL file is now restricted to
2657200 characters as per the ACPI specification.
2658
2659Fixed a fault when using the -ln option (generate namespace listing).
2660
2661Implemented an error check to determine if a DescriptorName within a
2662resource descriptor has already been used within the current scope.
2663
2664----------------------------------------
266515 August 2005.  Summary of changes for version 20050815:
2666
26671) ACPI CA Core Subsystem:
2668
2669Implemented a full bytewise compare to determine if a table load request is
2670attempting to load a duplicate table. The compare is performed if the table
2671signatures and table lengths match. This will allow different tables with
2672the same OEM Table ID and revision to be loaded - probably against the ACPI
2673specification, but discovered in the field nonetheless.
2674
2675Added the changes.txt logfile to each of the zipped release packages.
2676
2677Code and Data Size: Current and previous core subsystem library sizes are
2678shown below. These are the code and data sizes for the acpica.lib produced
2679by the Microsoft Visual C++ 6.0 compiler, and these values do not include
2680any ACPI driver or OSPM code. The debug version of the code includes the
2681debug output trace mechanism and has a much larger code and data size. Note
2682that these values will vary depending on the efficiency of the compiler and
2683the compiler options used during generation.
2684
2685  Previous Release:
2686    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
2687    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
2688  Current Release:
2689    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
2690    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
2691
2692
26932) iASL Compiler/Disassembler:
2694
2695Fixed a problem where incorrect AML code could be generated for Package
2696objects if optimization is disabled (via the -oa switch).
2697
2698Fixed a problem with where incorrect AML code is generated for variable-
2699length packages when the package length is not specified and the number of
2700initializer values is greater than 255.
2701
2702
2703----------------------------------------
270429 July 2005.  Summary of changes for version 20050729:
2705
27061) ACPI CA Core Subsystem:
2707
2708Implemented support to ignore an attempt to install/load a particular ACPI
2709table more than once. Apparently there exists BIOS code that repeatedly
2710attempts to load the same SSDT upon certain events. With assistance from
2711Venkatesh Pallipadi.
2712
2713Restructured the main interface to the AML parser in order to correctly
2714handle all exceptional conditions. This will prevent leakage of the OwnerId
2715resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on some
2716machines. With assistance from Alexey Starikovskiy.
2717
2718Support for "module level code" has been disabled in this version due to a
2719number of issues that have appeared on various machines. The support can be
2720enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
2721compilation. When the issues are fully resolved, the code will be enabled by
2722default again.
2723
2724Modified the internal functions for debug print support to define the
2725FunctionName parameter as a (const char *) for compatibility with compiler
2726built-in macros such as __FUNCTION__, etc.
2727
2728Linted the entire ACPICA source tree for both 32-bit and 64-bit.
2729
2730Implemented support to display an object count summary for the AML Debugger
2731commands Object and Methods.
2732
2733Code and Data Size: Current and previous core subsystem library sizes are
2734shown below. These are the code and data sizes for the acpica.lib produced
2735by the Microsoft Visual C++ 6.0 compiler, and these values do not include
2736any ACPI driver or OSPM code. The debug version of the code includes the
2737debug output trace mechanism and has a much larger code and data size. Note
2738that these values will vary depending on the efficiency of the compiler and
2739the compiler options used during generation.
2740
2741  Previous Release:
2742    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
2743    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
2744  Current Release:
2745    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
2746    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
2747
2748
27492) iASL Compiler/Disassembler:
2750
2751Fixed a regression that appeared in the 20050708 version of the compiler
2752where an error message was inadvertently emitted for invocations of the _OSI
2753reserved control method.
2754
2755----------------------------------------
275608 July 2005.  Summary of changes for version 20050708:
2757
27581) ACPI CA Core Subsystem:
2759
2760The use of the CPU stack in the debug version of the subsystem has been
2761considerably reduced. Previously, a debug structure was declared in every
2762function that used the debug macros. This structure has been removed in
2763favor of declaring the individual elements as parameters to the debug
2764functions. This reduces the cumulative stack use during nested execution of
2765ACPI function calls at the cost of a small increase in the code size of the
2766debug version of the subsystem. With assistance from Alexey Starikovskiy and
2767Len Brown.
2768
2769Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
2770headers to define a macro that will return the current function name at
2771runtime (such as __FUNCTION__ or _func_, etc.) The function name is used by
2772the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
2773compiler-dependent header, the function name is saved on the CPU stack (one
2774pointer per function.) This mechanism is used because apparently there
2775exists no standard ANSI-C defined macro that that returns the function name.
2776
2777Redesigned and reimplemented the "Owner ID" mechanism used to track
2778namespace objects created/deleted by ACPI tables and control method
2779execution. A bitmap is now used to allocate and free the IDs, thus solving
2780the wraparound problem present in the previous implementation. The size of
2781the namespace node descriptor was reduced by 2 bytes as a result (Alexey
2782Starikovskiy).
2783
2784Removed the UINT32_BIT and UINT16_BIT types that were used for the bitfield
2785flag definitions within the headers for the predefined ACPI tables. These
2786have been replaced by UINT8_BIT in order to increase the code portability of
2787the subsystem. If the use of UINT8 remains a problem, we may be forced to
2788eliminate bitfields entirely because of a lack of portability.
2789
2790Enhanced the performance of the AcpiUtUpdateObjectReference procedure. This
2791is a frequently used function and this improvement increases the performance
2792of the entire subsystem (Alexey Starikovskiy).
2793
2794Fixed several possible memory leaks and the inverse - premature object
2795deletion (Alexey Starikovskiy).
2796
2797Code and Data Size: Current and previous core subsystem library sizes are
2798shown below. These are the code and data sizes for the acpica.lib produced
2799by the Microsoft Visual C++ 6.0 compiler, and these values do not include
2800any ACPI driver or OSPM code. The debug version of the code includes the
2801debug output trace mechanism and has a much larger code and data size. Note
2802that these values will vary depending on the efficiency of the compiler and
2803the compiler options used during generation.
2804
2805  Previous Release:
2806    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
2807    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
2808  Current Release:
2809    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
2810    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
2811
2812----------------------------------------
281324 June 2005.  Summary of changes for version 20050624:
2814
28151) ACPI CA Core Subsystem:
2816
2817Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
2818the host-defined cache object. This allows the OSL implementation to define
2819and type this object in any manner desired, simplifying the OSL
2820implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
2821Linux, and should be defined in the OS-specific header file for other
2822operating systems as required.
2823
2824Changed the interface to AcpiOsAcquireObject to directly return the
2825requested object as the function return (instead of ACPI_STATUS.) This
2826change was made for performance reasons, since this is the purpose of the
2827interface in the first place. AcpiOsAcquireObject is now similar to the
2828AcpiOsAllocate interface.
2829
2830Implemented a new AML debugger command named Businfo. This command displays
2831information about all devices that have an associate _PRT object. The _ADR,
2832_HID, _UID, and _CID are displayed for these devices.
2833
2834Modified the initialization sequence in AcpiInitializeSubsystem to call the
2835OSL interface AcpiOslInitialize first, before any local initialization. This
2836change was required because the global initialization now calls OSL
2837interfaces.
2838
2839Enhanced the Dump command to display the entire contents of Package objects
2840(including all sub-objects and their values.)
2841
2842Restructured the code base to split some files because of size and/or
2843because the code logically belonged in a separate file. New files are listed
2844below. All makefiles and project files included in the ACPI CA release have
2845been updated.
2846    utilities/utcache.c           /* Local cache interfaces */
2847    utilities/utmutex.c           /* Local mutex support */
2848    utilities/utstate.c           /* State object support */
2849    interpreter/parser/psloop.c   /* Main AML parse loop */
2850
2851Code and Data Size: Current and previous core subsystem library sizes are
2852shown below. These are the code and data sizes for the acpica.lib produced
2853by the Microsoft Visual C++ 6.0 compiler, and these values do not include
2854any ACPI driver or OSPM code. The debug version of the code includes the
2855debug output trace mechanism and has a much larger code and data size. Note
2856that these values will vary depending on the efficiency of the compiler and
2857the compiler options used during generation.
2858
2859  Previous Release:
2860    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
2861    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
2862  Current Release:
2863    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
2864    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
2865
2866
28672) iASL Compiler/Disassembler:
2868
2869Fixed a regression introduced in version 20050513 where the use of a Package
2870object within a Case() statement caused a compile time exception. The
2871original behavior has been restored (a Match() operator is emitted.)
2872
2873----------------------------------------
287417 June 2005.  Summary of changes for version 20050617:
2875
28761) ACPI CA Core Subsystem:
2877
2878Moved the object cache operations into the OS interface layer (OSL) to allow
2879the host OS to handle these operations if desired (for example, the Linux
2880OSL will invoke the slab allocator). This support is optional; the compile
2881time define ACPI_USE_LOCAL_CACHE may be used to utilize the original cache
2882code in the ACPI CA core. The new OSL interfaces are shown below. See
2883utalloc.c for an example implementation, and acpiosxf.h for the exact
2884interface definitions. With assistance from Alexey Starikovskiy.
2885    AcpiOsCreateCache
2886    AcpiOsDeleteCache
2887    AcpiOsPurgeCache
2888    AcpiOsAcquireObject
2889    AcpiOsReleaseObject
2890
2891Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to return
2892and restore a flags parameter. This fits better with many OS lock models.
2893Note: the current execution state (interrupt handler or not) is no longer
2894passed to these interfaces. If necessary, the OSL must determine this state
2895by itself, a simple and fast operation. With assistance from Alexey
2896Starikovskiy.
2897
2898Fixed a problem in the ACPI table handling where a valid XSDT was assumed
2899present if the revision of the RSDP was 2 or greater. According to the ACPI
2900specification, the XSDT is optional in all cases, and the table manager
2901therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
2902Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs contain
2903only the RSDT.
2904
2905Fixed an interpreter problem with the Mid() operator in the case of an input
2906string where the resulting output string is of zero length. It now correctly
2907returns a valid, null terminated string object instead of a string object
2908with a null pointer.
2909
2910Fixed a problem with the control method argument handling to allow a store
2911to an Arg object that already contains an object of type Device. The Device
2912object is now correctly overwritten. Previously, an error was returned.
2913
2914
2915Enhanced the debugger Find command to emit object values in addition to the
2916found object pathnames. The output format is the same as the dump namespace
2917command.
2918
2919Enhanced the debugger Set command. It now has the ability to set the value
2920of any Named integer object in the namespace (Previously, only method locals
2921and args could be set.)
2922
2923Code and Data Size: Current and previous core subsystem library sizes are
2924shown below. These are the code and data sizes for the acpica.lib produced
2925by the Microsoft Visual C++ 6.0 compiler, and these values do not include
2926any ACPI driver or OSPM code. The debug version of the code includes the
2927debug output trace mechanism and has a much larger code and data size. Note
2928that these values will vary depending on the efficiency of the compiler and
2929the compiler options used during generation.
2930
2931  Previous Release:
2932    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
2933    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
2934  Current Release:
2935    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
2936    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
2937
2938
29392) iASL Compiler/Disassembler:
2940
2941Fixed a regression in the disassembler where if/else/while constructs were
2942output incorrectly. This problem was introduced in the previous release
2943(20050526). This problem also affected the single-step disassembly in the
2944debugger.
2945
2946Fixed a problem where compiling the reserved _OSI method would randomly (but
2947rarely) produce compile errors.
2948
2949Enhanced the disassembler to emit compilable code in the face of incorrect
2950AML resource descriptors. If the optional ResourceSourceIndex is present,
2951but the ResourceSource is not, do not emit the ResourceSourceIndex in the
2952disassembly. Otherwise, the resulting code cannot be compiled without
2953errors.
2954
2955----------------------------------------
295626 May 2005.  Summary of changes for version 20050526:
2957
29581) ACPI CA Core Subsystem:
2959
2960Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
2961the module level (not within a control method.) These opcodes are executed
2962exactly once at the time the table is loaded. This type of code was legal up
2963until the release of ACPI 2.0B (2002) and is now supported within ACPI CA in
2964order to provide backwards compatibility with earlier BIOS implementations.
2965This eliminates the "Encountered executable code at module level" warning
2966that was previously generated upon detection of such code.
2967
2968Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
2969inadvertently be generated during the lookup of namespace objects in the
2970second pass parse of ACPI tables and control methods. It appears that this
2971problem could occur during the resolution of forward references to namespace
2972objects.
2973
2974Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
2975corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
2976allows the deadlock detection debug code to be compiled out in the normal
2977case, improving mutex performance (and overall subsystem performance)
2978considerably.
2979
2980Implemented a handful of miscellaneous fixes for possible memory leaks on
2981error conditions and error handling control paths. These fixes were
2982suggested by FreeBSD and the Coverity Prevent source code analysis tool.
2983
2984Added a check for a null RSDT pointer in AcpiGetFirmwareTable (tbxfroot.c)
2985to prevent a fault in this error case.
2986
2987Code and Data Size: Current and previous core subsystem library sizes are
2988shown below. These are the code and data sizes for the acpica.lib produced
2989by the Microsoft Visual C++ 6.0 compiler, and these values do not include
2990any ACPI driver or OSPM code. The debug version of the code includes the
2991debug output trace mechanism and has a much larger code and data size. Note
2992that these values will vary depending on the efficiency of the compiler and
2993the compiler options used during generation.
2994
2995  Previous Release:
2996    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
2997    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
2998  Current Release:
2999    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
3000    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
3001
3002
30032) iASL Compiler/Disassembler:
3004
3005Implemented support to allow Type 1 and Type 2 ASL operators to appear at
3006the module level (not within a control method.) These operators will be
3007executed once at the time the table is loaded. This type of code was legal
3008up until the release of ACPI 2.0B (2002) and is now supported by the iASL
3009compiler in order to provide backwards compatibility with earlier BIOS ASL
3010code.
3011
3012The ACPI integer width (specified via the table revision ID or the -r
3013override, 32 or 64 bits) is now used internally during compile-time constant
3014folding to ensure that constants are truncated to 32 bits if necessary.
3015Previously, the revision ID value was only emitted in the AML table header.
3016
3017An error message is now generated for the Mutex and Method operators if the
3018SyncLevel parameter is outside the legal range of 0 through 15.
3019
3020Fixed a problem with the Method operator ParameterTypes list handling (ACPI
30213.0). Previously, more than 2 types or 2 arguments generated a syntax error.
3022The actual underlying implementation of method argument typechecking is
3023still under development, however.
3024
3025----------------------------------------
302613 May 2005.  Summary of changes for version 20050513:
3027
30281) ACPI CA Core Subsystem:
3029
3030Implemented support for PCI Express root bridges -- added support for device
3031PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
3032
3033The interpreter now automatically truncates incoming 64-bit constants to 32
3034bits if currently executing out of a 32-bit ACPI table (Revision < 2). This
3035also affects the iASL compiler constant folding. (Note: as per below, the
3036iASL compiler no longer allows 64-bit constants within 32-bit tables.)
3037
3038Fixed a problem where string and buffer objects with "static" pointers
3039(pointers to initialization data within an ACPI table) were not handled
3040consistently. The internal object copy operation now always copies the data
3041to a newly allocated buffer, regardless of whether the source object is
3042static or not.
3043
3044Fixed a problem with the FromBCD operator where an implicit result
3045conversion was improperly performed while storing the result to the target
3046operand. Since this is an "explicit conversion" operator, the implicit
3047conversion should never be performed on the output.
3048
3049Fixed a problem with the CopyObject operator where a copy to an existing
3050named object did not always completely overwrite the existing object stored
3051at name. Specifically, a buffer-to-buffer copy did not delete the existing
3052buffer.
3053
3054Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces and
3055structs for consistency.
3056
3057Code and Data Size: Current and previous core subsystem library sizes are
3058shown below. These are the code and data sizes for the acpica.lib produced
3059by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3060any ACPI driver or OSPM code. The debug version of the code includes the
3061debug output trace mechanism and has a much larger code and data size. Note
3062that these values will vary depending on the efficiency of the compiler and
3063the compiler options used during generation.
3064
3065  Previous Release:
3066    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
3067    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
3068  Current Release: (Same sizes)
3069    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
3070    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
3071
3072
30732) iASL Compiler/Disassembler:
3074
3075The compiler now emits a warning if an attempt is made to generate a 64-bit
3076integer constant from within a 32-bit ACPI table (Revision < 2). The integer
3077is truncated to 32 bits.
3078
3079Fixed a problem with large package objects: if the static length of the
3080package is greater than 255, the "variable length package" opcode is
3081emitted. Previously, this caused an error. This requires an update to the
3082ACPI spec, since it currently (incorrectly) states that packages larger than
3083255 elements are not allowed.
3084
3085The disassembler now correctly handles variable length packages and packages
3086larger than 255 elements.
3087
3088----------------------------------------
308908 April 2005.  Summary of changes for version 20050408:
3090
30911) ACPI CA Core Subsystem:
3092
3093Fixed three cases in the interpreter where an "index" argument to an ASL
3094function was still (internally) 32 bits instead of the required 64 bits.
3095This was the Index argument to the Index, Mid, and Match operators.
3096
3097The "strupr" function is now permanently local (AcpiUtStrupr), since this is
3098not a POSIX-defined function and not present in most kernel-level C
3099libraries. All references to the C library strupr function have been removed
3100from the headers.
3101
3102Completed the deployment of static functions/prototypes. All prototypes with
3103the static attribute have been moved from the headers to the owning C file.
3104
3105Implemented an extract option (-e) for the AcpiBin utility (AML binary
3106utility). This option allows the utility to extract individual ACPI tables
3107from the output of AcpiDmp. It provides the same functionality of the
3108acpixtract.pl perl script without the worry of setting the correct perl
3109options. AcpiBin runs on Windows and has not yet been generated/validated in
3110the Linux/Unix environment (but should be soon).
3111
3112Updated and fixed the table dump option for AcpiBin (-d). This option
3113converts a single ACPI table to a hex/ascii file, similar to the output of
3114AcpiDmp.
3115
3116Code and Data Size: Current and previous core subsystem library sizes are
3117shown below. These are the code and data sizes for the acpica.lib produced
3118by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3119any ACPI driver or OSPM code. The debug version of the code includes the
3120debug output trace mechanism and has a much larger code and data size. Note
3121that these values will vary depending on the efficiency of the compiler and
3122the compiler options used during generation.
3123
3124  Previous Release:
3125    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
3126    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
3127  Current Release:
3128    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
3129    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
3130
3131
31322) iASL Compiler/Disassembler:
3133
3134Disassembler fix: Added a check to ensure that the table length found in the
3135ACPI table header within the input file is not longer than the actual input
3136file size. This indicates some kind of file or table corruption.
3137
3138----------------------------------------
313929 March 2005.  Summary of changes for version 20050329:
3140
31411) ACPI CA Core Subsystem:
3142
3143An error is now generated if an attempt is made to create a Buffer Field of
3144length zero (A CreateField with a length operand of zero.)
3145
3146The interpreter now issues a warning whenever executable code at the module
3147level is detected during ACPI table load. This will give some idea of the
3148prevalence of this type of code.
3149
3150Implemented support for references to named objects (other than control
3151methods) within package objects.
3152
3153Enhanced package object output for the debug object. Package objects are now
3154completely dumped, showing all elements.
3155
3156Enhanced miscellaneous object output for the debug object. Any object can
3157now be written to the debug object (for example, a device object can be
3158written, and the type of the object will be displayed.)
3159
3160The "static" qualifier has been added to all local functions across both the
3161core subsystem and the iASL compiler.
3162
3163The number of "long" lines (> 80 chars) within the source has been
3164significantly reduced, by about 1/3.
3165
3166Cleaned up all header files to ensure that all CA/iASL functions are
3167prototyped (even static functions) and the formatting is consistent.
3168
3169Two new header files have been added, acopcode.h and acnames.h.
3170
3171Removed several obsolete functions that were no longer used.
3172
3173Code and Data Size: Current and previous core subsystem library sizes are
3174shown below. These are the code and data sizes for the acpica.lib produced
3175by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3176any ACPI driver or OSPM code. The debug version of the code includes the
3177debug output trace mechanism and has a much larger code and data size. Note
3178that these values will vary depending on the efficiency of the compiler and
3179the compiler options used during generation.
3180
3181  Previous Release:
3182    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
3183    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
3184  Current Release:
3185    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
3186    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
3187
3188
3189
31902) iASL Compiler/Disassembler:
3191
3192Fixed a problem with the resource descriptor generation/support. For the
3193ResourceSourceIndex and the ResourceSource fields, both must be present, or
3194both must be not present - can't have one without the other.
3195
3196The compiler now returns non-zero from the main procedure if any errors have
3197occurred during the compilation.
3198
3199
3200----------------------------------------
320109 March 2005.  Summary of changes for version 20050309:
3202
32031) ACPI CA Core Subsystem:
3204
3205The string-to-buffer implicit conversion code has been modified again after
3206a change to the ACPI specification.  In order to match the behavior of the
3207other major ACPI implementation, the target buffer is no longer truncated if
3208the source string is smaller than an existing target buffer. This change
3209requires an update to the ACPI spec, and should eliminate the recent
3210AE_AML_BUFFER_LIMIT issues.
3211
3212The "implicit return" support was rewritten to a new algorithm that solves
3213the general case. Rather than attempt to determine when a method is about to
3214exit, the result of every ASL operator is saved momentarily until the very
3215next ASL operator is executed. Therefore, no matter how the method exits,
3216there will always be a saved implicit return value. This feature is only
3217enabled with the AcpiGbl_EnableInterpreterSlack flag, and should eliminate
3218AE_AML_NO_RETURN_VALUE errors when enabled.
3219
3220Implemented implicit conversion support for the predicate (operand) of the
3221If, Else, and While operators. String and Buffer arguments are automatically
3222converted to Integers.
3223
3224Changed the string-to-integer conversion behavior to match the new ACPI
3225errata: "If no integer object exists, a new integer is created. The ASCII
3226string is interpreted as a hexadecimal constant. Each string character is
3227interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
3228with the first character as the most significant digit, and ending with the
3229first non-hexadecimal character or end-of-string." This means that the first
3230non-hex character terminates the conversion and this is the code that was
3231changed.
3232
3233Fixed a problem where the ObjectType operator would fail (fault) when used
3234on an Index of a Package which pointed to a null package element. The
3235operator now properly returns zero (Uninitialized) in this case.
3236
3237Fixed a problem where the While operator used excessive memory by not
3238properly popping the result stack during execution. There was no memory leak
3239after execution, however. (Code provided by Valery Podrezov.)
3240
3241Fixed a problem where references to control methods within Package objects
3242caused the method to be invoked, instead of producing a reference object
3243pointing to the method.
3244
3245Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) to
3246improve performance and reduce code size. (Code provided by Alexey
3247Starikovskiy.)
3248
3249Code and Data Size: Current and previous core subsystem library sizes are
3250shown below. These are the code and data sizes for the acpica.lib produced
3251by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3252any ACPI driver or OSPM code. The debug version of the code includes the
3253debug output trace mechanism and has a much larger code and data size. Note
3254that these values will vary depending on the efficiency of the compiler and
3255the compiler options used during generation.
3256
3257  Previous Release:
3258    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
3259    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
3260  Current Release:
3261    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
3262    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
3263
3264
32652) iASL Compiler/Disassembler:
3266
3267Fixed a problem with the Return operator with no arguments. Since the AML
3268grammar for the byte encoding requires an operand for the Return opcode, the
3269compiler now emits a Return(Zero) for this case.  An ACPI specification
3270update has been written for this case.
3271
3272For tables other than the DSDT, namepath optimization is automatically
3273disabled. This is because SSDTs can be loaded anywhere in the namespace, the
3274compiler has no knowledge of where, and thus cannot optimize namepaths.
3275
3276Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
3277inadvertently omitted from the ACPI specification, and will require an
3278update to the spec.
3279
3280The source file scan for ASCII characters is now optional (-a). This change
3281was made because some vendors place non-ascii characters within comments.
3282However, the scan is simply a brute-force byte compare to ensure all
3283characters in the file are in the range 0x00 to 0x7F.
3284
3285Fixed a problem with the CondRefOf operator where the compiler was
3286inappropriately checking for the existence of the target. Since the point of
3287the operator is to check for the existence of the target at run-time, the
3288compiler no longer checks for the target existence.
3289
3290Fixed a problem where errors generated from the internal AML interpreter
3291during constant folding were not handled properly, causing a fault.
3292
3293Fixed a problem with overly aggressive range checking for the Stall
3294operator. The valid range (max 255) is now only checked if the operand is of
3295type Integer. All other operand types cannot be statically checked.
3296
3297Fixed a problem where control method references within the RefOf, DeRefOf,
3298and ObjectType operators were not treated properly. They are now treated as
3299actual references, not method invocations.
3300
3301Fixed and enhanced the "list namespace" option (-ln). This option was broken
3302a number of releases ago.
3303
3304Improved error handling for the Field, IndexField, and BankField operators.
3305The compiler now cleanly reports and recovers from errors in the field
3306component (FieldUnit) list.
3307
3308Fixed a disassembler problem where the optional ResourceDescriptor fields
3309TRS and TTP were not always handled correctly.
3310
3311Disassembler - Comments in output now use "//" instead of "/*"
3312
3313----------------------------------------
331428 February 2005.  Summary of changes for version 20050228:
3315
33161) ACPI CA Core Subsystem:
3317
3318Fixed a problem where the result of an Index() operator (an object
3319reference) must increment the reference count on the target object for the
3320life of the object reference.
3321
3322Implemented AML Interpreter and Debugger support for the new ACPI 3.0
3323Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and WordSpace
3324resource descriptors.
3325
3326Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
3327Space Descriptor" string, indicating interpreter support for the descriptors
3328above.
3329
3330Implemented header support for the new ACPI 3.0 FADT flag bits.
3331
3332Implemented header support for the new ACPI 3.0 PCI Express bits for the PM1
3333status/enable registers.
3334
3335Updated header support for the MADT processor local Apic struct and MADT
3336platform interrupt source struct for new ACPI 3.0 fields.
3337
3338Implemented header support for the SRAT and SLIT ACPI tables.
3339
3340Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" flag
3341at runtime.
3342
3343Code and Data Size: Current and previous core subsystem library sizes are
3344shown below. These are the code and data sizes for the acpica.lib produced
3345by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3346any ACPI driver or OSPM code. The debug version of the code includes the
3347debug output trace mechanism and has a much larger code and data size. Note
3348that these values will vary depending on the efficiency of the compiler and
3349the compiler options used during generation.
3350
3351  Previous Release:
3352    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
3353    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
3354  Current Release:
3355    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
3356    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
3357
3358
33592) iASL Compiler/Disassembler:
3360
3361Fixed a problem with the internal 64-bit String-to-integer conversion with
3362strings less than two characters long.
3363
3364Fixed a problem with constant folding where the result of the Index()
3365operator can not be considered a constant. This means that Index() cannot be
3366a type3 opcode and this will require an update to the ACPI specification.
3367
3368Disassembler: Implemented support for the TTP, MTP, and TRS resource
3369descriptor fields. These fields were inadvertently ignored and not output in
3370the disassembly of the resource descriptor.
3371
3372
3373 ----------------------------------------
337411 February 2005.  Summary of changes for version 20050211:
3375
33761) ACPI CA Core Subsystem:
3377
3378Implemented ACPI 3.0 support for implicit conversion within the Match()
3379operator. MatchObjects can now be of type integer, buffer, or string instead
3380of just type integer.  Package elements are implicitly converted to the type
3381of the MatchObject. This change aligns the behavior of Match() with the
3382behavior of the other logical operators (LLess(), etc.) It also requires an
3383errata change to the ACPI specification as this support was intended for
3384ACPI 3.0, but was inadvertently omitted.
3385
3386Fixed a problem with the internal implicit "to buffer" conversion. Strings
3387that are converted to buffers will cause buffer truncation if the string is
3388smaller than the target buffer. Integers that are converted to buffers will
3389not cause buffer truncation, only zero extension (both as per the ACPI
3390spec.) The problem was introduced when code was added to truncate the
3391buffer, but this should not be performed in all cases, only the string case.
3392
3393Fixed a problem with the Buffer and Package operators where the interpreter
3394would get confused if two such operators were used as operands to an ASL
3395operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
3396stack was not being popped after the execution of these operators, resulting
3397in an AE_NO_RETURN_VALUE exception.
3398
3399Fixed a problem with constructs of the form Store(Index(...),...). The
3400reference object returned from Index was inadvertently resolved to an actual
3401value. This problem was introduced in version 20050114 when the behavior of
3402Store() was modified to restrict the object types that can be used as the
3403source operand (to match the ACPI specification.)
3404
3405Reduced excessive stack use within the AcpiGetObjectInfo procedure.
3406
3407Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
3408
3409Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
3410
3411Code and Data Size: Current and previous core subsystem library sizes are
3412shown below. These are the code and data sizes for the acpica.lib produced
3413by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3414any ACPI driver or OSPM code. The debug version of the code includes the
3415debug output trace mechanism and has a much larger code and data size. Note
3416that these values will vary depending on the efficiency of the compiler and
3417the compiler options used during generation.
3418
3419  Previous Release:
3420    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
3421    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
3422  Current Release:
3423    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
3424    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
3425
3426
34272) iASL Compiler/Disassembler:
3428
3429Fixed a code generation problem in the constant folding optimization code
3430where incorrect code was generated if a constant was reduced to a buffer
3431object (i.e., a reduced type 5 opcode.)
3432
3433Fixed a typechecking problem for the ToBuffer operator. Caused by an
3434incorrect return type in the internal opcode information table.
3435
3436----------------------------------------
343725 January 2005.  Summary of changes for version 20050125:
3438
34391) ACPI CA Core Subsystem:
3440
3441Fixed a recently introduced problem with the Global Lock where the
3442underlying semaphore was not created.  This problem was introduced in
3443version 20050114, and caused an AE_AML_NO_OPERAND exception during an
3444Acquire() operation on _GL.
3445
3446The local object cache is now optional, and is disabled by default. Both
3447AcpiExec and the iASL compiler enable the cache because they run in user
3448mode and this enhances their performance. #define ACPI_ENABLE_OBJECT_CACHE
3449to enable the local cache.
3450
3451Fixed an issue in the internal function AcpiUtEvaluateObject concerning the
3452optional "implicit return" support where an error was returned if no return
3453object was expected, but one was implicitly returned. AE_OK is now returned
3454in this case and the implicitly returned object is deleted.
3455AcpiUtEvaluateObject is only occasionally used, and only to execute reserved
3456methods such as _STA and _INI where the return type is known up front.
3457
3458Fixed a few issues with the internal convert-to-integer code. It now returns
3459an error if an attempt is made to convert a null string, a string of only
3460blanks/tabs, or a zero-length buffer. This affects both implicit conversion
3461and explicit conversion via the ToInteger() operator.
3462
3463The internal debug code in AcpiUtAcquireMutex has been commented out. It is
3464not needed for normal operation and should increase the performance of the
3465entire subsystem. The code remains in case it is needed for debug purposes
3466again.
3467
3468The AcpiExec source and makefile are included in the Unix/Linux package for
3469the first time.
3470
3471Code and Data Size: Current and previous core subsystem library sizes are
3472shown below. These are the code and data sizes for the acpica.lib produced
3473by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3474any ACPI driver or OSPM code. The debug version of the code includes the
3475debug output trace mechanism and has a much larger code and data size. Note
3476that these values will vary depending on the efficiency of the compiler and
3477the compiler options used during generation.
3478
3479  Previous Release:
3480    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
3481    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
3482  Current Release:
3483    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
3484    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
3485
34862) iASL Compiler/Disassembler:
3487
3488Switch/Case support: A warning is now issued if the type of the Switch value
3489cannot be determined at compile time. For example, Switch(Arg0) will
3490generate the warning, and the type is assumed to be an integer. As per the
3491ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate the
3492warning.
3493
3494Switch/Case support: Implemented support for buffer and string objects as
3495the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
3496buffers and strings.
3497
3498Switch/Case support: The emitted code for the LEqual() comparisons now uses
3499the switch value as the first operand, not the second. The case value is now
3500the second operand, and this allows the case value to be implicitly
3501converted to the type of the switch value, not the other way around.
3502
3503Switch/Case support: Temporary variables are now emitted immediately within
3504the control method, not at the global level. This means that there are now
350536 temps available per-method, not 36 temps per-module as was the case with
3506the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
3507
3508----------------------------------------
350914 January 2005.  Summary of changes for version 20050114:
3510
3511Added 2005 copyright to all module headers.  This affects every module in
3512the core subsystem, iASL compiler, and the utilities.
3513
35141) ACPI CA Core Subsystem:
3515
3516Fixed an issue with the String-to-Buffer conversion code where the string
3517null terminator was not included in the buffer after conversion, but there
3518is existing ASL that assumes the string null terminator is included. This is
3519the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
3520introduced in the previous version when the code was updated to correctly
3521set the converted buffer size as per the ACPI specification. The ACPI spec
3522is ambiguous and will be updated to specify that the null terminator must be
3523included in the converted buffer. This also affects the ToBuffer() ASL
3524operator.
3525
3526Fixed a problem with the Mid() ASL/AML operator where it did not work
3527correctly on Buffer objects. Newly created sub-buffers were not being marked
3528as initialized.
3529
3530
3531Fixed a problem in AcpiTbFindTable where incorrect string compares were
3532performed on the OemId and OemTableId table header fields.  These fields are
3533not null terminated, so strncmp is now used instead of strcmp.
3534
3535Implemented a restriction on the Store() ASL/AML operator to align the
3536behavior with the ACPI specification.  Previously, any object could be used
3537as the source operand.  Now, the only objects that may be used are Integers,
3538Buffers, Strings, Packages, Object References, and DDB Handles.  If
3539necessary, the original behavior can be restored by enabling the
3540EnableInterpreterSlack flag.
3541
3542Enhanced the optional "implicit return" support to allow an implicit return
3543value from methods that are invoked externally via the AcpiEvaluateObject
3544interface.  This enables implicit returns from the _STA and _INI methods,
3545for example.
3546
3547Changed the Revision() ASL/AML operator to return the current version of the
3548AML interpreter, in the YYYYMMDD format. Previously, it incorrectly returned
3549the supported ACPI version (This is the function of the _REV method).
3550
3551Updated the _REV predefined method to return the currently supported version
3552of ACPI, now 3.
3553
3554Implemented batch mode option for the AcpiExec utility (-b).
3555
3556Code and Data Size: Current and previous core subsystem library sizes are
3557shown below. These are the code and data sizes for the acpica.lib produced
3558by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3559any ACPI driver or OSPM code. The debug version of the code includes the
3560debug output trace mechanism and has a much larger code and data size. Note
3561that these values will vary depending on the efficiency of the compiler and
3562the compiler options used during generation.
3563
3564  Previous Release:
3565    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
3566    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
3567  Current Release:
3568    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
3569    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
3570
3571----------------------------------------
357210 December 2004.  Summary of changes for version 20041210:
3573
3574ACPI 3.0 support is nearing completion in both the iASL compiler and the
3575ACPI CA core subsystem.
3576
35771) ACPI CA Core Subsystem:
3578
3579Fixed a problem in the ToDecimalString operator where the resulting string
3580length was incorrectly calculated. The length is now calculated exactly,
3581eliminating incorrect AE_STRING_LIMIT exceptions.
3582
3583Fixed a problem in the ToHexString operator to allow a maximum 200 character
3584string to be produced.
3585
3586Fixed a problem in the internal string-to-buffer and buffer-to-buffer copy
3587routine where the length of the resulting buffer was not truncated to the
3588new size (if the target buffer already existed).
3589
3590Code and Data Size: Current and previous core subsystem library sizes are
3591shown below. These are the code and data sizes for the acpica.lib produced
3592by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3593any ACPI driver or OSPM code. The debug version of the code includes the
3594debug output trace mechanism and has a much larger code and data size. Note
3595that these values will vary depending on the efficiency of the compiler and
3596the compiler options used during generation.
3597
3598  Previous Release:
3599    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
3600    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
3601  Current Release:
3602    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
3603    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
3604
3605
36062) iASL Compiler/Disassembler:
3607
3608Implemented the new ACPI 3.0 resource template macros - DWordSpace,
3609ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
3610Includes support in the disassembler.
3611
3612Implemented support for the new (ACPI 3.0) parameter to the Register macro,
3613AccessSize.
3614
3615Fixed a problem where the _HE resource name for the Interrupt macro was
3616referencing bit 0 instead of bit 1.
3617
3618Implemented check for maximum 255 interrupts in the Interrupt macro.
3619
3620Fixed a problem with the predefined resource descriptor names where
3621incorrect AML code was generated if the offset within the resource buffer
3622was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
3623but did not update the surrounding package lengths.
3624
3625Changes to the Dma macro:  All channels within the channel list must be in
3626the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
3627optional (default is BusMaster).
3628
3629Implemented check for maximum 7 data bytes for the VendorShort macro.
3630
3631The ReadWrite parameter is now optional for the Memory32 and similar macros.
3632
3633----------------------------------------
363403 December 2004.  Summary of changes for version 20041203:
3635
36361) ACPI CA Core Subsystem:
3637
3638The low-level field insertion/extraction code (exfldio) has been completely
3639rewritten to eliminate unnecessary complexity, bugs, and boundary
3640conditions.
3641
3642Fixed a problem in the ToInteger, ToBuffer, ToHexString, and ToDecimalString
3643operators where the input operand could be inadvertently deleted if no
3644conversion was necessary (e.g., if the input to ToInteger was an Integer
3645object.)
3646
3647Fixed a problem with the ToDecimalString and ToHexString where an incorrect
3648exception code was returned if the resulting string would be > 200 chars.
3649AE_STRING_LIMIT is now returned.
3650
3651Fixed a problem with the Concatenate operator where AE_OK was always
3652returned, even if the operation failed.
3653
3654Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
3655semaphores to be allocated.
3656
3657Code and Data Size: Current and previous core subsystem library sizes are
3658shown below. These are the code and data sizes for the acpica.lib produced
3659by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3660any ACPI driver or OSPM code. The debug version of the code includes the
3661debug output trace mechanism and has a much larger code and data size. Note
3662that these values will vary depending on the efficiency of the compiler and
3663the compiler options used during generation.
3664
3665  Previous Release:
3666    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
3667    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
3668  Current Release:
3669    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
3670    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
3671
3672
36732) iASL Compiler/Disassembler:
3674
3675Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
3676recently introduced in 20041119.
3677
3678Fixed a problem with the ToUUID macro where the upper nybble of each buffer
3679byte was inadvertently set to zero.
3680
3681----------------------------------------
368219 November 2004.  Summary of changes for version 20041119:
3683
36841) ACPI CA Core Subsystem:
3685
3686Fixed a problem in the internal ConvertToInteger routine where new integers
3687were not truncated to 32 bits for 32-bit ACPI tables. This routine converts
3688buffers and strings to integers.
3689
3690Implemented support to store a value to an Index() on a String object. This
3691is an ACPI 2.0 feature that had not yet been implemented.
3692
3693Implemented new behavior for storing objects to individual package elements
3694(via the Index() operator). The previous behavior was to invoke the implicit
3695conversion rules if an object was already present at the index.  The new
3696behavior is to simply delete any existing object and directly store the new
3697object. Although the ACPI specification seems unclear on this subject, other
3698ACPI implementations behave in this manner.  (This is the root of the
3699AE_BAD_HEX_CONSTANT issue.)
3700
3701Modified the RSDP memory scan mechanism to support the extended checksum for
3702ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
3703RSDP signature is found with a valid checksum.
3704
3705Code and Data Size: Current and previous core subsystem library sizes are
3706shown below. These are the code and data sizes for the acpica.lib produced
3707by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3708any ACPI driver or OSPM code. The debug version of the code includes the
3709debug output trace mechanism and has a much larger code and data size. Note
3710that these values will vary depending on the efficiency of the compiler and
3711the compiler options used during generation.
3712
3713  Previous Release:
3714    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
3715    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
3716  Current Release:
3717    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
3718    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
3719
3720
37212) iASL Compiler/Disassembler:
3722
3723Fixed a missing semicolon in the aslcompiler.y file.
3724
3725----------------------------------------
372605 November 2004.  Summary of changes for version 20041105:
3727
37281) ACPI CA Core Subsystem:
3729
3730Implemented support for FADT revision 2.  This was an interim table (between
3731ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
3732
3733Implemented optional support to allow uninitialized LocalX and ArgX
3734variables in a control method.  The variables are initialized to an Integer
3735object with a value of zero.  This support is enabled by setting the
3736AcpiGbl_EnableInterpreterSlack flag to TRUE.
3737
3738Implemented support for Integer objects for the SizeOf operator.  Either 4
3739or 8 is returned, depending on the current integer size (32-bit or 64-bit,
3740depending on the parent table revision).
3741
3742Fixed a problem in the implementation of the SizeOf and ObjectType operators
3743where the operand was resolved to a value too early, causing incorrect
3744return values for some objects.
3745
3746Fixed some possible memory leaks during exceptional conditions.
3747
3748Code and Data Size: Current and previous core subsystem library sizes are
3749shown below. These are the code and data sizes for the acpica.lib produced
3750by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3751any ACPI driver or OSPM code. The debug version of the code includes the
3752debug output trace mechanism and has a much larger code and data size. Note
3753that these values will vary depending on the efficiency of the compiler and
3754the compiler options used during generation.
3755
3756  Previous Release:
3757    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
3758    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
3759  Current Release:
3760    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
3761    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
3762
3763
37642) iASL Compiler/Disassembler:
3765
3766Implemented support for all ACPI 3.0 reserved names and methods.
3767
3768Implemented all ACPI 3.0 grammar elements in the front-end, including
3769support for semicolons.
3770
3771Implemented the ACPI 3.0 Function() and ToUUID() macros
3772
3773Fixed a problem in the disassembler where a Scope() operator would not be
3774emitted properly if the target of the scope was in another table.
3775
3776----------------------------------------
377715 October 2004.  Summary of changes for version 20041015:
3778
3779Note:  ACPI CA is currently undergoing an in-depth and complete formal
3780evaluation to test/verify the following areas. Other suggestions are
3781welcome. This will result in an increase in the frequency of releases and
3782the number of bug fixes in the next few months.
3783  - Functional tests for all ASL/AML operators
3784  - All implicit/explicit type conversions
3785  - Bit fields and operation regions
3786  - 64-bit math support and 32-bit-only "truncated" math support
3787  - Exceptional conditions, both compiler and interpreter
3788  - Dynamic object deletion and memory leaks
3789  - ACPI 3.0 support when implemented
3790  - External interfaces to the ACPI subsystem
3791
3792
37931) ACPI CA Core Subsystem:
3794
3795Fixed two alignment issues on 64-bit platforms - within debug statements in
3796AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the Address
3797field within the non-aligned ACPI generic address structure.
3798
3799Fixed a problem in the Increment and Decrement operators where incorrect
3800operand resolution could result in the inadvertent modification of the
3801original integer when the integer is passed into another method as an
3802argument and the arg is then incremented/decremented.
3803
3804Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-bit
3805BCD number were truncated during conversion.
3806
3807Fixed a problem in the ToDecimal operator where the length of the resulting
3808string could be set incorrectly too long if the input operand was a Buffer
3809object.
3810
3811Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte (0)
3812within a buffer would prematurely terminate a compare between buffer
3813objects.
3814
3815Added a check for string overflow (>200 characters as per the ACPI
3816specification) during the Concatenate operator with two string operands.
3817
3818Code and Data Size: Current and previous core subsystem library sizes are
3819shown below. These are the code and data sizes for the acpica.lib produced
3820by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3821any ACPI driver or OSPM code. The debug version of the code includes the
3822debug output trace mechanism and has a much larger code and data size. Note
3823that these values will vary depending on the efficiency of the compiler and
3824the compiler options used during generation.
3825
3826  Previous Release:
3827    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
3828    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
3829  Current Release:
3830    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
3831    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
3832
3833
3834
38352) iASL Compiler/Disassembler:
3836
3837Allow the use of the ObjectType operator on uninitialized Locals and Args
3838(returns 0 as per the ACPI specification).
3839
3840Fixed a problem where the compiler would fault if there was a syntax error
3841in the FieldName of all of the various CreateXXXField operators.
3842
3843Disallow the use of lower case letters within the EISAID macro, as per the
3844ACPI specification.  All EISAID strings must be of the form "UUUNNNN" Where
3845U is an uppercase letter and N is a hex digit.
3846
3847
3848----------------------------------------
384906 October 2004.  Summary of changes for version 20041006:
3850
38511) ACPI CA Core Subsystem:
3852
3853Implemented support for the ACPI 3.0 Timer operator. This ASL function
3854implements a 64-bit timer with 100 nanosecond granularity.
3855
3856Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
3857implement the ACPI 3.0 Timer operator.  This allows the host OS to implement
3858the timer with the best clock available. Also, it keeps the core subsystem
3859out of the clock handling business, since the host OS (usually) performs
3860this function.
3861
3862Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
3863functions use a 64-bit address which is part of the packed ACPI Generic
3864Address Structure. Since the structure is non-aligned, the alignment macros
3865are now used to extract the address to a local variable before use.
3866
3867Fixed a problem where the ToInteger operator assumed all input strings were
3868hexadecimal. The operator now handles both decimal strings and hex strings
3869(prefixed with "0x").
3870
3871Fixed a problem where the string length in the string object created as a
3872result of the internal ConvertToString procedure could be incorrect. This
3873potentially affected all implicit conversions and also the ToDecimalString
3874and ToHexString operators.
3875
3876Fixed two problems in the ToString operator. If the length parameter was
3877zero, an incorrect string object was created and the value of the input
3878length parameter was inadvertently changed from zero to Ones.
3879
3880Fixed a problem where the optional ResourceSource string in the ExtendedIRQ
3881resource macro was ignored.
3882
3883Simplified the interfaces to the internal division functions, reducing code
3884size and complexity.
3885
3886Code and Data Size: Current and previous core subsystem library sizes are
3887shown below. These are the code and data sizes for the acpica.lib produced
3888by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3889any ACPI driver or OSPM code. The debug version of the code includes the
3890debug output trace mechanism and has a much larger code and data size. Note
3891that these values will vary depending on the efficiency of the compiler and
3892the compiler options used during generation.
3893
3894  Previous Release:
3895    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
3896    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
3897  Current Release:
3898    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
3899    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
3900
3901
39022) iASL Compiler/Disassembler:
3903
3904Implemented support for the ACPI 3.0 Timer operator.
3905
3906Fixed a problem where the Default() operator was inadvertently ignored in a
3907Switch/Case block.  This was a problem in the translation of the Switch
3908statement to If...Else pairs.
3909
3910Added support to allow a standalone Return operator, with no parentheses (or
3911operands).
3912
3913Fixed a problem with code generation for the ElseIf operator where the
3914translated Else...If parse tree was improperly constructed leading to the
3915loss of some code.
3916
3917----------------------------------------
391822 September 2004.  Summary of changes for version 20040922:
3919
39201) ACPI CA Core Subsystem:
3921
3922Fixed a problem with the implementation of the LNot() operator where "Ones"
3923was not returned for the TRUE case. Changed the code to return Ones instead
3924of (!Arg) which was usually 1. This change affects iASL constant folding for
3925this operator also.
3926
3927Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was not
3928initialized properly -- Now zero the entire buffer in this case where the
3929buffer already exists.
3930
3931Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
3932Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
3933related code considerably. This will require changes/updates to all OS
3934interface layers (OSLs.)
3935
3936Implemented a new external interface, AcpiInstallExceptionHandler, to allow
3937a system exception handler to be installed. This handler is invoked upon any
3938run-time exception that occurs during control method execution.
3939
3940Added support for the DSDT in AcpiTbFindTable. This allows the
3941DataTableRegion() operator to access the local copy of the DSDT.
3942
3943Code and Data Size: Current and previous core subsystem library sizes are
3944shown below. These are the code and data sizes for the acpica.lib produced
3945by the Microsoft Visual C++ 6.0 compiler, and these values do not include
3946any ACPI driver or OSPM code. The debug version of the code includes the
3947debug output trace mechanism and has a much larger code and data size. Note
3948that these values will vary depending on the efficiency of the compiler and
3949the compiler options used during generation.
3950
3951  Previous Release:
3952    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
3953    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
3954  Current Release:
3955    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
3956    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
3957
3958
39592) iASL Compiler/Disassembler:
3960
3961Fixed a problem with constant folding and the LNot operator. LNot was
3962returning 1 in the TRUE case, not Ones as per the ACPI specification. This
3963could result in the generation of an incorrect folded/reduced constant.
3964
3965End-Of-File is now allowed within a "//"-style comment.  A parse error no
3966longer occurs if such a comment is at the very end of the input ASL source
3967file.
3968
3969Implemented the "-r" option to override the Revision in the table header.
3970The initial use of this option will be to simplify the evaluation of the AML
3971interpreter by allowing a single ASL source module to be compiled for either
397232-bit or 64-bit integers.
3973
3974
3975----------------------------------------
397627 August 2004.  Summary of changes for version 20040827:
3977
39781) ACPI CA Core Subsystem:
3979
3980- Implemented support for implicit object conversion in the non-numeric
3981logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, and
3982LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
3983the second operand is implicitly converted on the fly to match the type of
3984the first operand.  For example:
3985
3986    LEqual (Source1, Source2)
3987
3988Source1 and Source2 must each evaluate to an integer, a string, or a buffer.
3989The data type of Source1 dictates the required type of Source2. Source2 is
3990implicitly converted if necessary to match the type of Source1.
3991
3992- Updated and corrected the behavior of the string conversion support.  The
3993rules concerning conversion of buffers to strings (according to the ACPI
3994specification) are as follows:
3995
3996ToDecimalString - explicit byte-wise conversion of buffer to string of
3997decimal values (0-255) separated by commas. ToHexString - explicit byte-wise
3998conversion of buffer to string of hex values (0-FF) separated by commas.
3999ToString - explicit byte-wise conversion of buffer to string.  Byte-by-byte
4000copy with no transform except NULL terminated. Any other implicit buffer-to-
4001string conversion - byte-wise conversion of buffer to string of hex values
4002(0-FF) separated by spaces.
4003
4004- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
4005
4006- Fixed a problem in AcpiNsGetPathnameLength where the returned length was
4007one byte too short in the case of a node in the root scope.  This could
4008cause a fault during debug output.
4009
4010- Code and Data Size: Current and previous core subsystem library sizes are
4011shown below.  These are the code and data sizes for the acpica.lib produced
4012by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4013any ACPI driver or OSPM code.  The debug version of the code includes the
4014debug output trace mechanism and has a much larger code and data size.  Note
4015that these values will vary depending on the efficiency of the compiler and
4016the compiler options used during generation.
4017
4018  Previous Release:
4019    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
4020    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
4021  Current Release:
4022    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
4023    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
4024
4025
40262) iASL Compiler/Disassembler:
4027
4028- Fixed a Linux generation error.
4029
4030
4031----------------------------------------
403216 August 2004.  Summary of changes for version 20040816:
4033
40341) ACPI CA Core Subsystem:
4035
4036Designed and implemented support within the AML interpreter for the so-
4037called "implicit return".  This support returns the result of the last ASL
4038operation within a control method, in the absence of an explicit Return()
4039operator.  A few machines depend on this behavior, even though it is not
4040explicitly supported by the ASL language.  It is optional support that can
4041be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
4042
4043Removed support for the PCI_Config address space from the internal low level
4044hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
4045support was not used internally, and would not work correctly anyway because
4046the PCI bus number and segment number were not supported.  There are
4047separate interfaces for PCI configuration space access because of the unique
4048interface.
4049
4050Code and Data Size: Current and previous core subsystem library sizes are
4051shown below.  These are the code and data sizes for the acpica.lib produced
4052by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4053any ACPI driver or OSPM code.  The debug version of the code includes the
4054debug output trace mechanism and has a much larger code and data size.  Note
4055that these values will vary depending on the efficiency of the compiler and
4056the compiler options used during generation.
4057
4058  Previous Release:
4059    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
4060    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
4061  Current Release:
4062    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
4063    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
4064
4065
40662) iASL Compiler/Disassembler:
4067
4068Fixed a problem where constants in ASL expressions at the root level (not
4069within a control method) could be inadvertently truncated during code
4070generation.  This problem was introduced in the 20040715 release.
4071
4072
4073----------------------------------------
407415 July 2004.  Summary of changes for version 20040715:
4075
40761) ACPI CA Core Subsystem:
4077
4078Restructured the internal HW GPE interfaces to pass/track the current state
4079of interrupts (enabled/disabled) in order to avoid possible deadlock and
4080increase flexibility of the interfaces.
4081
4082Implemented a "lexicographical compare" for String and Buffer objects within
4083the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual --
4084as per further clarification to the ACPI specification.  Behavior is similar
4085to C library "strcmp".
4086
4087Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
4088external function.  In the 32-bit non-debug case, the stack use has been
4089reduced from 168 bytes to 32 bytes.
4090
4091Deployed a new run-time configuration flag, AcpiGbl_EnableInterpreterSlack,
4092whose purpose is to allow the AML interpreter to forgive certain bad AML
4093constructs.  Default setting is FALSE.
4094
4095Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field IO
4096support code.  If enabled, it allows field access to go beyond the end of a
4097region definition if the field is within the region length rounded up to the
4098next access width boundary (a common coding error.)
4099
4100Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
4101ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also, these
4102symbols are lowercased by the latest version of the AcpiSrc tool.
4103
4104The prototypes for the PCI interfaces in acpiosxf.h have been updated to
4105rename "Register" to simply "Reg" to prevent certain compilers from
4106complaining.
4107
4108Code and Data Size: Current and previous core subsystem library sizes are
4109shown below.  These are the code and data sizes for the acpica.lib produced
4110by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4111any ACPI driver or OSPM code.  The debug version of the code includes the
4112debug output trace mechanism and has a much larger code and data size.  Note
4113that these values will vary depending on the efficiency of the compiler and
4114the compiler options used during generation.
4115
4116  Previous Release:
4117    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
4118    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
4119  Current Release:
4120    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
4121    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
4122
4123
41242) iASL Compiler/Disassembler:
4125
4126Implemented full support for Package objects within the Case() operator.
4127Note: The Break() operator is currently not supported within Case blocks
4128(TermLists) as there is some question about backward compatibility with ACPI
41291.0 interpreters.
4130
4131
4132Fixed a problem where complex terms were not supported properly within the
4133Switch() operator.
4134
4135Eliminated extraneous warning for compiler-emitted reserved names of the
4136form "_T_x".  (Used in Switch/Case operators.)
4137
4138Eliminated optimization messages for "_T_x" objects and small constants
4139within the DefinitionBlock operator.
4140
4141
4142----------------------------------------
414315 June 2004.  Summary of changes for version 20040615:
4144
41451) ACPI CA Core Subsystem:
4146
4147Implemented support for Buffer and String objects (as per ACPI 2.0) for the
4148following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
4149LLessEqual.
4150
4151All directory names in the entire source package are lower case, as they
4152were in earlier releases.
4153
4154Implemented "Disassemble" command in the AML debugger that will disassemble
4155a single control method.
4156
4157Code and Data Size: Current and previous core subsystem library sizes are
4158shown below.  These are the code and data sizes for the acpica.lib produced
4159by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4160any ACPI driver or OSPM code.  The debug version of the code includes the
4161debug output trace mechanism and has a much larger code and data size.  Note
4162that these values will vary depending on the efficiency of the compiler and
4163the compiler options used during generation.
4164
4165  Previous Release:
4166    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
4167    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
4168
4169  Current Release:
4170    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
4171    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
4172
4173
41742) iASL Compiler/Disassembler:
4175
4176Implemented support for Buffer and String objects (as per ACPI 2.0) for the
4177following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
4178LLessEqual.
4179
4180All directory names in the entire source package are lower case, as they
4181were in earlier releases.
4182
4183Fixed a fault when using the -g or -d<nofilename> options if the FADT was
4184not found.
4185
4186Fixed an issue with the Windows version of the compiler where later versions
4187of Windows place the FADT in the registry under the name "FADT" and not
4188"FACP" as earlier versions did.  This applies when using the -g or -
4189d<nofilename> options.  The compiler now looks for both strings as
4190necessary.
4191
4192Fixed a problem with compiler namepath optimization where a namepath within
4193the Scope() operator could not be optimized if the namepath was a subpath of
4194the current scope path.
4195
4196----------------------------------------
419727 May 2004.  Summary of changes for version 20040527:
4198
41991) ACPI CA Core Subsystem:
4200
4201Completed a new design and implementation for EBDA (Extended BIOS Data Area)
4202support in the RSDP scan code.  The original code improperly scanned for the
4203EBDA by simply scanning from memory location 0 to 0x400.  The correct method
4204is to first obtain the EBDA pointer from within the BIOS data area, then
4205scan 1K of memory starting at the EBDA pointer.  There appear to be few if
4206any machines that place the RSDP in the EBDA, however.
4207
4208Integrated a fix for a possible fault during evaluation of BufferField
4209arguments.  Obsolete code that was causing the problem was removed.
4210
4211Found and fixed a problem in the Field Support Code where data could be
4212corrupted on a bit field read that starts on an aligned boundary but does
4213not end on an aligned boundary.  Merged the read/write "datum length"
4214calculation code into a common procedure.
4215
4216Rolled in a couple of changes to the FreeBSD-specific header.
4217
4218
4219Code and Data Size: Current and previous core subsystem library sizes are
4220shown below.  These are the code and data sizes for the acpica.lib produced
4221by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4222any ACPI driver or OSPM code.  The debug version of the code includes the
4223debug output trace mechanism and has a much larger code and data size.  Note
4224that these values will vary depending on the efficiency of the compiler and
4225the compiler options used during generation.
4226
4227  Previous Release:
4228    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
4229    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
4230  Current Release:
4231    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
4232    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
4233
4234
42352) iASL Compiler/Disassembler:
4236
4237Fixed a generation warning produced by some overly-verbose compilers for a
423864-bit constant.
4239
4240----------------------------------------
424114 May 2004.  Summary of changes for version 20040514:
4242
42431) ACPI CA Core Subsystem:
4244
4245Fixed a problem where hardware GPE enable bits sometimes not set properly
4246during and after GPE method execution.  Result of 04/27 changes.
4247
4248Removed extra "clear all GPEs" when sleeping/waking.
4249
4250Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
4251AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above to
4252the new AcpiEv* calls as appropriate.
4253
4254ACPI_OS_NAME was removed from the OS-specific headers.  The default name is
4255now "Microsoft Windows NT" for maximum compatibility.  However this can be
4256changed by modifying the acconfig.h file.
4257
4258Allow a single invocation of AcpiInstallNotifyHandler for a handler that
4259traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
4260
4261Run _INI methods on ThermalZone objects.  This is against the ACPI
4262specification, but there is apparently ASL code in the field that has these
4263_INI methods, and apparently "other" AML interpreters execute them.
4264
4265Performed a full 16/32/64 bit lint that resulted in some small changes.
4266
4267Added a sleep simulation command to the AML debugger to test sleep code.
4268
4269Code and Data Size: Current and previous core subsystem library sizes are
4270shown below.  These are the code and data sizes for the acpica.lib produced
4271by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4272any ACPI driver or OSPM code.  The debug version of the code includes the
4273debug output trace mechanism and has a much larger code and data size.  Note
4274that these values will vary depending on the efficiency of the compiler and
4275the compiler options used during generation.
4276
4277  Previous Release:
4278    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
4279    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
4280  Current Release:
4281    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
4282    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
4283
4284----------------------------------------
428527 April 2004.  Summary of changes for version 20040427:
4286
42871) ACPI CA Core Subsystem:
4288
4289Completed a major overhaul of the GPE handling within ACPI CA.  There are
4290now three types of GPEs:  wake-only, runtime-only, and combination wake/run.
4291The only GPEs allowed to be combination wake/run are for button-style
4292devices such as a control-method power button, control-method sleep button,
4293or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are not
4294referenced by any _PRW methods are marked for "runtime" and hardware
4295enabled.  Any GPE that is referenced by a _PRW method is marked for "wake"
4296(and disabled at runtime).  However, at sleep time, only those GPEs that
4297have been specifically enabled for wake via the AcpiEnableGpe interface will
4298actually be hardware enabled.
4299
4300A new external interface has been added, AcpiSetGpeType(), that is meant to
4301be used by device drivers to force a GPE to a particular type.  It will be
4302especially useful for the drivers for the button devices mentioned above.
4303
4304Completed restructuring of the ACPI CA initialization sequence so that
4305default operation region handlers are installed before GPEs are initialized
4306and the _PRW methods are executed.  This will prevent errors when the _PRW
4307methods attempt to access system memory or I/O space.
4308
4309GPE enable/disable no longer reads the GPE enable register.  We now keep the
4310enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
4311thus no longer depend on the hardware to maintain these bits.
4312
4313Always clear the wake status and fixed/GPE status bits before sleep, even
4314for state S5.
4315
4316Improved the AML debugger output for displaying the GPE blocks and their
4317current status.
4318
4319Added new strings for the _OSI method, of the form "Windows 2001 SPx" where
4320x = 0,1,2,3,4.
4321
4322Fixed a problem where the physical address was incorrectly calculated when
4323the Load() operator was used to directly load from an Operation Region (vs.
4324loading from a Field object.)  Also added check for minimum table length for
4325this case.
4326
4327Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
4328mutex release.
4329
4330Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
4331consistency with the other fields returned.
4332
4333Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
4334structure for each GPE in the system, so the size of this structure is
4335important.
4336
4337CPU stack requirement reduction:  Cleaned up the method execution and object
4338evaluation paths so that now a parameter structure is passed, instead of
4339copying the various method parameters over and over again.
4340
4341In evregion.c:  Correctly exit and reenter the interpreter region if and
4342only if dispatching an operation region request to a user-installed handler.
4343Do not exit/reenter when dispatching to a default handler (e.g., default
4344system memory or I/O handlers)
4345
4346
4347Notes for updating drivers for the new GPE support.  The following changes
4348must be made to ACPI-related device drivers that are attached to one or more
4349GPEs: (This information will be added to the ACPI CA Programmer Reference.)
4350
43511) AcpiInstallGpeHandler no longer automatically enables the GPE, you must
4352explicitly call AcpiEnableGpe.
43532) There is a new interface called AcpiSetGpeType. This should be called
4354before enabling the GPE.  Also, this interface will automatically disable
4355the GPE if it is currently enabled.
43563) AcpiEnableGpe no longer supports a GPE type flag.
4357
4358Specific drivers that must be changed:
43591) EC driver:
4360    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
4361AeGpeHandler, NULL);
4362    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
4363    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
4364
43652) Button Drivers (Power, Lid, Sleep):
4366Run _PRW method under parent device
4367If _PRW exists: /* This is a control-method button */
4368    Extract GPE number and possibly GpeDevice
4369    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
4370    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
4371
4372For all other devices that have _PRWs, we automatically set the GPE type to
4373ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.  This
4374must be done on a selective basis, usually requiring some kind of user app
4375to allow the user to pick the wake devices.
4376
4377
4378Code and Data Size: Current and previous core subsystem library sizes are
4379shown below.  These are the code and data sizes for the acpica.lib produced
4380by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4381any ACPI driver or OSPM code.  The debug version of the code includes the
4382debug output trace mechanism and has a much larger code and data size.  Note
4383that these values will vary depending on the efficiency of the compiler and
4384the compiler options used during generation.
4385
4386  Previous Release:
4387    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
4388    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
4389  Current Release:
4390
4391    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
4392    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
4393
4394
4395
4396----------------------------------------
439702 April 2004.  Summary of changes for version 20040402:
4398
43991) ACPI CA Core Subsystem:
4400
4401Fixed an interpreter problem where an indirect store through an ArgX
4402parameter was incorrectly applying the "implicit conversion rules" during
4403the store.  From the ACPI specification: "If the target is a method local or
4404argument (LocalX or ArgX), no conversion is performed and the result is
4405stored directly to the target".  The new behavior is to disable implicit
4406conversion during ALL stores to an ArgX.
4407
4408Changed the behavior of the _PRW method scan to ignore any and all errors
4409returned by a given _PRW.  This prevents the scan from aborting from the
4410failure of any single _PRW.
4411
4412Moved the runtime configuration parameters from the global init procedure to
4413static variables in acglobal.h.  This will allow the host to override the
4414default values easily.
4415
4416Code and Data Size: Current and previous core subsystem library sizes are
4417shown below.  These are the code and data sizes for the acpica.lib produced
4418by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4419any ACPI driver or OSPM code.  The debug version of the code includes the
4420debug output trace mechanism and has a much larger code and data size.  Note
4421that these values will vary depending on the efficiency of the compiler and
4422the compiler options used during generation.
4423
4424  Previous Release:
4425    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
4426    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
4427  Current Release:
4428    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
4429    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
4430
4431
44322) iASL Compiler/Disassembler:
4433
4434iASL now fully disassembles SSDTs.  However, External() statements are not
4435generated automatically for unresolved symbols at this time.  This is a
4436planned feature for future implementation.
4437
4438Fixed a scoping problem in the disassembler that occurs when the type of the
4439target of a Scope() operator is overridden.  This problem caused an
4440incorrectly nested internal namespace to be constructed.
4441
4442Any warnings or errors that are emitted during disassembly are now commented
4443out automatically so that the resulting file can be recompiled without any
4444hand editing.
4445
4446----------------------------------------
444726 March 2004.  Summary of changes for version 20040326:
4448
44491) ACPI CA Core Subsystem:
4450
4451Implemented support for "wake" GPEs via interaction between GPEs and the
4452_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
4453identified as a WAKE GPE and by default will no longer be enabled at
4454runtime.  Previously, we were blindly enabling all GPEs with a corresponding
4455_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.  We
4456believe this has been the cause of thousands of "spurious" GPEs on some
4457systems.
4458
4459This new GPE behavior is can be reverted to the original behavior (enable
4460ALL GPEs at runtime) via a runtime flag.
4461
4462Fixed a problem where aliased control methods could not access objects
4463properly.  The proper scope within the namespace was not initialized
4464(transferred to the target of the aliased method) before executing the
4465target method.
4466
4467Fixed a potential race condition on internal object deletion on the return
4468object in AcpiEvaluateObject.
4469
4470Integrated a fix for resource descriptors where both _MEM and _MTP were
4471being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
4472wide, 0x0F instead of 0x03.)
4473
4474Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, preventing a
4475fault in some cases.
4476
4477Updated Notify() values for debug statements in evmisc.c
4478
4479Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
4480
4481Code and Data Size: Current and previous core subsystem library sizes are
4482shown below.  These are the code and data sizes for the acpica.lib produced
4483by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4484any ACPI driver or OSPM code.  The debug version of the code includes the
4485debug output trace mechanism and has a much larger code and data size.  Note
4486that these values will vary depending on the efficiency of the compiler and
4487the compiler options used during generation.
4488
4489  Previous Release:
4490
4491    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
4492    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
4493  Current Release:
4494    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
4495    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
4496
4497----------------------------------------
449811 March 2004.  Summary of changes for version 20040311:
4499
45001) ACPI CA Core Subsystem:
4501
4502Fixed a problem where errors occurring during the parse phase of control
4503method execution did not abort cleanly.  For example, objects created and
4504installed in the namespace were not deleted.  This caused all subsequent
4505invocations of the method to return the AE_ALREADY_EXISTS exception.
4506
4507Implemented a mechanism to force a control method to "Serialized" execution
4508if the method attempts to create namespace objects. (The root of the
4509AE_ALREADY_EXISTS problem.)
4510
4511Implemented support for the predefined _OSI "internal" control method.
4512Initial supported strings are "Linux", "Windows 2000", "Windows 2001", and
4513"Windows 2001.1", and can be easily upgraded for new strings as necessary.
4514This feature will allow "other" operating systems to execute the fully
4515tested, "Windows" code path through the ASL code
4516
4517Global Lock Support:  Now allows multiple acquires and releases with any
4518internal thread.  Removed concept of "owning thread" for this special mutex.
4519
4520Fixed two functions that were inappropriately declaring large objects on the
4521CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage during
4522method execution considerably.
4523
4524Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
4525S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
4526
4527Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
4528defined on the machine.
4529
4530Implemented two runtime options:  One to force all control method execution
4531to "Serialized" to mimic Windows behavior, another to disable _OSI support
4532if it causes problems on a given machine.
4533
4534Code and Data Size: Current and previous core subsystem library sizes are
4535shown below.  These are the code and data sizes for the acpica.lib produced
4536by the Microsoft Visual C++ 6.0 compiler, and these values do not include
4537any ACPI driver or OSPM code.  The debug version of the code includes the
4538debug output trace mechanism and has a much larger code and data size.  Note
4539that these values will vary depending on the efficiency of the compiler and
4540the compiler options used during generation.
4541
4542  Previous Release:
4543    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
4544    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
4545  Current Release:
4546    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
4547    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
4548
45492) iASL Compiler/Disassembler:
4550
4551Fixed an array size problem for FreeBSD that would cause the compiler to
4552fault.
4553
4554----------------------------------------
455520 February 2004.  Summary of changes for version 20040220:
4556
4557
45581) ACPI CA Core Subsystem:
4559
4560Implemented execution of _SxD methods for Device objects in the
4561GetObjectInfo interface.
4562
4563Fixed calls to _SST method to pass the correct arguments.
4564
4565Added a call to _SST on wake to restore to "working" state.
4566
4567Check for End-Of-Buffer failure case in the WalkResources interface.
4568
4569Integrated fix for 64-bit alignment issue in acglobal.h by moving two
4570structures to the beginning of the file.
4571
4572After wake, clear GPE status register(s) before enabling GPEs.
4573
4574After wake, clear/enable power button.  (Perhaps we should clear/enable all
4575fixed events upon wake.)
4576
4577Fixed a couple of possible memory leaks in the Namespace manager.
4578
4579Integrated latest acnetbsd.h file.
4580
4581----------------------------------------
458211 February 2004.  Summary of changes for version 20040211:
4583
4584
45851) ACPI CA Core Subsystem:
4586
4587Completed investigation and implementation of the call-by-reference
4588mechanism for control method arguments.
4589
4590Fixed a problem where a store of an object into an indexed package could
4591fail if the store occurs within a different method than the method that
4592created the package.
4593
4594Fixed a problem where the ToDecimal operator could return incorrect results.
4595
4596Fixed a problem where the CopyObject operator could fail on some of the more
4597obscure objects (e.g., Reference objects.)
4598
4599Improved the output of the Debug object to display buffer, package, and
4600index objects.
4601
4602Fixed a problem where constructs of the form "RefOf (ArgX)" did not return
4603the expected result.
4604
4605Added permanent ACPI_REPORT_ERROR macros for all instances of the
4606ACPI_AML_INTERNAL exception.
4607
4608Integrated latest version of acfreebsd.h
4609
4610----------------------------------------
461116 January 2004.  Summary of changes for version 20040116:
4612
4613The purpose of this release is primarily to update the copyright years in
4614each module, thus causing a huge number of diffs.  There are a few small
4615functional changes, however.
4616
46171) ACPI CA Core Subsystem:
4618
4619Improved error messages when there is a problem finding one or more of the
4620required base ACPI tables
4621
4622Reintroduced the definition of APIC_HEADER in actbl.h
4623
4624Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
4625
4626Removed extraneous reference to NewObj in dsmthdat.c
4627
46282) iASL compiler
4629
4630Fixed a problem introduced in December that disabled the correct disassembly
4631of Resource Templates
4632
4633
4634----------------------------------------
463503 December 2003.  Summary of changes for version 20031203:
4636
46371) ACPI CA Core Subsystem:
4638
4639Changed the initialization of Operation Regions during subsystem
4640init to perform two entire walks of the ACPI namespace; The first
4641to initialize the regions themselves, the second to execute the
4642_REG methods.  This fixed some interdependencies across _REG
4643methods found on some machines.
4644
4645Fixed a problem where a Store(Local0, Local1) could simply update
4646the object reference count, and not create a new copy of the
4647object if the Local1 is uninitialized.
4648
4649Implemented support for the _SST reserved method during sleep
4650transitions.
4651
4652Implemented support to clear the SLP_TYP and SLP_EN bits when
4653waking up, this is apparently required by some machines.
4654
4655When sleeping, clear the wake status only if SleepState is not S5.
4656
4657Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
4658pointer arithmetic advanced a string pointer too far.
4659
4660Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
4661could be returned if the requested table has not been loaded.
4662
4663Within the support for IRQ resources, restructured the handling of
4664the active and edge/level bits.
4665
4666Fixed a few problems in AcpiPsxExecute() where memory could be
4667leaked under certain error conditions.
4668
4669Improved error messages for the cases where the ACPI mode could
4670not be entered.
4671
4672Code and Data Size: Current and previous core subsystem library
4673sizes are shown below.  These are the code and data sizes for the
4674acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
4675these values do not include any ACPI driver or OSPM code.  The
4676debug version of the code includes the debug output trace
4677mechanism and has a much larger code and data size.  Note that
4678these values will vary depending on the efficiency of the compiler
4679and the compiler options used during generation.
4680
4681  Previous Release (20031029):
4682    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
4683    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
4684  Current Release:
4685    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
4686    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
4687
46882) iASL Compiler/Disassembler:
4689
4690Implemented a fix for the iASL disassembler where a bad index was
4691generated.  This was most noticeable on 64-bit platforms
4692
4693
4694----------------------------------------
469529 October 2003.  Summary of changes for version 20031029:
4696
46971) ACPI CA Core Subsystem:
4698
4699
4700Fixed a problem where a level-triggered GPE with an associated
4701_Lxx control method was incorrectly cleared twice.
4702
4703Fixed a problem with the Field support code where an access can
4704occur beyond the end-of-region if the field is non-aligned but
4705extends to the very end of the parent region (resulted in an
4706AE_AML_REGION_LIMIT exception.)
4707
4708Fixed a problem with ACPI Fixed Events where an RT Clock handler
4709would not get invoked on an RTC event.  The RTC event bitmasks for
4710the PM1 registers were not being initialized properly.
4711
4712Implemented support for executing _STA and _INI methods for
4713Processor objects.  Although this is currently not part of the
4714ACPI specification, there is existing ASL code that depends on the
4715init-time execution of these methods.
4716
4717Implemented and deployed a GetDescriptorName function to decode
4718the various types of internal descriptors.  Guards against null
4719descriptors during debug output also.
4720
4721Implemented and deployed a GetNodeName function to extract the 4-
4722character namespace node name.  This function simplifies the debug
4723and error output, as well as guarding against null pointers during
4724output.
4725
4726Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
4727simplify the debug and error output of 64-bit integers.  This
4728macro replaces the HIDWORD and LODWORD macros for dumping these
4729integers.
4730
4731Updated the implementation of the Stall() operator to only call
4732AcpiOsStall(), and also return an error if the operand is larger
4733than 255.  This preserves the required behavior of not
4734relinquishing the processor, as would happen if AcpiOsSleep() was
4735called for "long stalls".
4736
4737Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
4738initialized are now treated as NOOPs.
4739
4740Cleaned up a handful of warnings during 64-bit generation.
4741
4742Fixed a reported error where and incorrect GPE number was passed
4743to the GPE dispatch handler.  This value is only used for error
4744output, however.  Used this opportunity to clean up and streamline
4745the GPE dispatch code.
4746
4747Code and Data Size: Current and previous core subsystem library
4748sizes are shown below.  These are the code and data sizes for the
4749acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
4750these values do not include any ACPI driver or OSPM code.  The
4751
4752debug version of the code includes the debug output trace
4753mechanism and has a much larger code and data size.  Note that
4754these values will vary depending on the efficiency of the compiler
4755and the compiler options used during generation.
4756
4757  Previous Release (20031002):
4758    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
4759    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
4760  Current Release:
4761    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
4762    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
4763
4764
47652) iASL Compiler/Disassembler:
4766
4767Updated the iASL compiler to return an error if the operand to the
4768Stall() operator is larger than 255.
4769
4770
4771----------------------------------------
477202 October 2003.  Summary of changes for version 20031002:
4773
4774
47751) ACPI CA Core Subsystem:
4776
4777Fixed a problem with Index Fields where the index was not
4778incremented for fields that require multiple writes to the
4779index/data registers (Fields that are wider than the data
4780register.)
4781
4782Fixed a problem with all Field objects where a write could go
4783beyond the end-of-field if the field was larger than the access
4784granularity and therefore required multiple writes to complete the
4785request.  An extra write beyond the end of the field could happen
4786inadvertently.
4787
4788Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
4789would incorrectly be returned if the width of the Data Register
4790was larger than the specified field access width.
4791
4792Completed fixes for LoadTable() and Unload() and verified their
4793operation.  Implemented full support for the "DdbHandle" object
4794throughout the ACPI CA subsystem.
4795
4796Implemented full support for the MADT and ECDT tables in the ACPI
4797CA header files.  Even though these tables are not directly
4798consumed by ACPI CA, the header definitions are useful for ACPI
4799device drivers.
4800
4801Integrated resource descriptor fixes posted to the Linux ACPI
4802list.  This included checks for minimum descriptor length, and
4803support for trailing NULL strings within descriptors that have
4804optional string elements.
4805
4806Code and Data Size: Current and previous core subsystem library
4807sizes are shown below.  These are the code and data sizes for the
4808acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
4809these values do not include any ACPI driver or OSPM code.  The
4810debug version of the code includes the debug output trace
4811mechanism and has a much larger code and data size.  Note that
4812these values will vary depending on the efficiency of the compiler
4813and the compiler options used during generation.
4814
4815  Previous Release (20030918):
4816    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
4817    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
4818  Current Release:
4819    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
4820    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
4821
4822
48232) iASL Compiler:
4824
4825Implemented detection of non-ASCII characters within the input
4826source ASL file.  This catches attempts to compile binary (AML)
4827files early in the compile, with an informative error message.
4828
4829Fixed a problem where the disassembler would fault if the output
4830filename could not be generated or if the output file could not be
4831opened.
4832
4833----------------------------------------
483418 September 2003.  Summary of changes for version 20030918:
4835
4836
48371) ACPI CA Core Subsystem:
4838
4839Found and fixed a longstanding problem with the late execution of
4840the various deferred AML opcodes (such as Operation Regions,
4841Buffer Fields, Buffers, and Packages).  If the name string
4842specified for the name of the new object placed the object in a
4843scope other than the current scope, the initialization/execution
4844of the opcode failed.  The solution to this problem was to
4845implement a mechanism where the late execution of such opcodes
4846does not attempt to lookup/create the name a second time in an
4847incorrect scope.  This fixes the "region size computed
4848incorrectly" problem.
4849
4850Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
4851Global Lock AE_BAD_PARAMETER error.
4852
4853Fixed several 64-bit issues with prototypes, casting and data
4854types.
4855
4856Removed duplicate prototype from acdisasm.h
4857
4858Fixed an issue involving EC Operation Region Detach (Shaohua Li)
4859
4860Code and Data Size: Current and previous core subsystem library
4861sizes are shown below.  These are the code and data sizes for the
4862acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
4863these values do not include any ACPI driver or OSPM code.  The
4864debug version of the code includes the debug output trace
4865mechanism and has a much larger code and data size.  Note that
4866these values will vary depending on the efficiency of the compiler
4867and the compiler options used during generation.
4868
4869  Previous Release:
4870
4871    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
4872    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
4873  Current Release:
4874    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
4875    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
4876
4877
48782) Linux:
4879
4880Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
4881correct sleep time in seconds.
4882
4883----------------------------------------
488414 July 2003.  Summary of changes for version 20030619:
4885
48861) ACPI CA Core Subsystem:
4887
4888Parse SSDTs in order discovered, as opposed to reverse order
4889(Hrvoje Habjanic)
4890
4891Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
4892Klausner,
4893   Nate Lawson)
4894
4895
48962) Linux:
4897
4898Dynamically allocate SDT list (suggested by Andi Kleen)
4899
4900proc function return value cleanups (Andi Kleen)
4901
4902Correctly handle NMI watchdog during long stalls (Andrew Morton)
4903
4904Make it so acpismp=force works (reported by Andrew Morton)
4905
4906
4907----------------------------------------
490819 June 2003.  Summary of changes for version 20030619:
4909
49101) ACPI CA Core Subsystem:
4911
4912Fix To/FromBCD, eliminating the need for an arch-specific #define.
4913
4914Do not acquire a semaphore in the S5 shutdown path.
4915
4916Fix ex_digits_needed for 0. (Takayoshi Kochi)
4917
4918Fix sleep/stall code reversal. (Andi Kleen)
4919
4920Revert a change having to do with control method calling
4921semantics.
4922
49232) Linux:
4924
4925acpiphp update (Takayoshi Kochi)
4926
4927Export acpi_disabled for sonypi (Stelian Pop)
4928
4929Mention acpismp=force in config help
4930
4931Re-add acpitable.c and acpismp=force. This improves backwards
4932
4933compatibility and also cleans up the code to a significant degree.
4934
4935Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
4936
4937----------------------------------------
493822 May 2003.  Summary of changes for version 20030522:
4939
49401) ACPI CA Core Subsystem:
4941
4942Found and fixed a reported problem where an AE_NOT_FOUND error
4943occurred occasionally during _BST evaluation.  This turned out to
4944be an Owner ID allocation issue where a called method did not get
4945a new ID assigned to it.  Eventually, (after 64k calls), the Owner
4946ID UINT16 would wraparound so that the ID would be the same as the
4947caller's and the called method would delete the caller's
4948namespace.
4949
4950Implemented extended error reporting for control methods that are
4951aborted due to a run-time exception.  Output includes the exact
4952AML instruction that caused the method abort, a dump of the method
4953locals and arguments at the time of the abort, and a trace of all
4954nested control method calls.
4955
4956Modified the interpreter to allow the creation of buffers of zero
4957length from the AML code. Implemented new code to ensure that no
4958attempt is made to actually allocate a memory buffer (of length
4959zero) - instead, a simple buffer object with a NULL buffer pointer
4960and length zero is created.  A warning is no longer issued when
4961the AML attempts to create a zero-length buffer.
4962
4963Implemented a workaround for the "leading asterisk issue" in
4964_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
4965asterisk is automatically removed if present in any HID, UID, or
4966CID strings.  The iASL compiler will still flag this asterisk as
4967an error, however.
4968
4969Implemented full support for _CID methods that return a package of
4970multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
4971now additionally returns a device _CID list if present.  This
4972required a change to the external interface in order to pass an
4973ACPI_BUFFER object as a parameter since the _CID list is of
4974variable length.
4975
4976Fixed a problem with the new AE_SAME_HANDLER exception where
4977handler initialization code did not know about this exception.
4978
4979Code and Data Size: Current and previous core subsystem library
4980sizes are shown below.  These are the code and data sizes for the
4981acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
4982these values do not include any ACPI driver or OSPM code.  The
4983debug version of the code includes the debug output trace
4984mechanism and has a much larger code and data size.  Note that
4985these values will vary depending on the efficiency of the compiler
4986and the compiler options used during generation.
4987
4988  Previous Release (20030509):
4989    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
4990    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
4991  Current Release:
4992    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
4993    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
4994
4995
49962) Linux:
4997
4998Fixed a bug in which we would reinitialize the ACPI interrupt
4999after it was already working, thus disabling all ACPI and the IRQs
5000for any other device sharing the interrupt. (Thanks to Stian
5001Jordet)
5002
5003Toshiba driver update (John Belmonte)
5004
5005Return only 0 or 1 for our interrupt handler status (Andrew
5006Morton)
5007
5008
50093) iASL Compiler:
5010
5011Fixed a reported problem where multiple (nested) ElseIf()
5012statements were not handled correctly by the compiler, resulting
5013in incorrect warnings and incorrect AML code.  This was a problem
5014in both the ASL parser and the code generator.
5015
5016
50174) Documentation:
5018
5019Added changes to existing interfaces, new exception codes, and new
5020text concerning reference count object management versus garbage
5021collection.
5022
5023----------------------------------------
502409 May 2003.  Summary of changes for version 20030509.
5025
5026
50271) ACPI CA Core Subsystem:
5028
5029Changed the subsystem initialization sequence to hold off
5030installation of address space handlers until the hardware has been
5031initialized and the system has entered ACPI mode.  This is because
5032the installation of space handlers can cause _REG methods to be
5033run.  Previously, the _REG methods could potentially be run before
5034ACPI mode was enabled.
5035
5036Fixed some memory leak issues related to address space handler and
5037notify handler installation.  There were some problems with the
5038reference count mechanism caused by the fact that the handler
5039objects are shared across several namespace objects.
5040
5041Fixed a reported problem where reference counts within the
5042namespace were not properly updated when named objects created by
5043method execution were deleted.
5044
5045Fixed a reported problem where multiple SSDTs caused a deletion
5046issue during subsystem termination.  Restructured the table data
5047structures to simplify the linked lists and the related code.
5048
5049Fixed a problem where the table ID associated with secondary
5050tables (SSDTs) was not being propagated into the namespace objects
5051created by those tables.  This would only present a problem for
5052tables that are unloaded at run-time, however.
5053
5054Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
5055type as the length parameter (instead of UINT32).
5056
5057Solved a long-standing problem where an ALREADY_EXISTS error
5058appears on various systems.  This problem could happen when there
5059are multiple PCI_Config operation regions under a single PCI root
5060bus.  This doesn't happen very frequently, but there are some
5061systems that do this in the ASL.
5062
5063Fixed a reported problem where the internal DeleteNode function
5064was incorrectly handling the case where a namespace node was the
5065first in the parent's child list, and had additional peers (not
5066the only child, but first in the list of children.)
5067
5068Code and Data Size: Current core subsystem library sizes are shown
5069below.  These are the code and data sizes for the acpica.lib
5070produced by the Microsoft Visual C++ 6.0 compiler, and these
5071values do not include any ACPI driver or OSPM code.  The debug
5072version of the code includes the debug output trace mechanism and
5073has a much larger code and data size.  Note that these values will
5074vary depending on the efficiency of the compiler and the compiler
5075options used during generation.
5076
5077  Previous Release
5078    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
5079    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
5080  Current Release:
5081    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
5082    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
5083
5084
50852) Linux:
5086
5087Allow ":" in OS override string (Ducrot Bruno)
5088
5089Kobject fix (Greg KH)
5090
5091
50923 iASL Compiler/Disassembler:
5093
5094Fixed a problem in the generation of the C source code files (AML
5095is emitted in C source statements for BIOS inclusion) where the
5096Ascii dump that appears within a C comment at the end of each line
5097could cause a compile time error if the AML sequence happens to
5098have an open comment or close comment sequence embedded.
5099
5100
5101----------------------------------------
510224 April 2003.  Summary of changes for version 20030424.
5103
5104
51051) ACPI CA Core Subsystem:
5106
5107Support for big-endian systems has been implemented.  Most of the
5108support has been invisibly added behind big-endian versions of the
5109ACPI_MOVE_* macros.
5110
5111Fixed a problem in AcpiHwDisableGpeBlock() and
5112AcpiHwClearGpeBlock() where an incorrect offset was passed to the
5113low level hardware write routine.  The offset parameter was
5114actually eliminated from the low level read/write routines because
5115they had become obsolete.
5116
5117Fixed a problem where a handler object was deleted twice during
5118the removal of a fixed event handler.
5119
5120
51212) Linux:
5122
5123A fix for SMP systems with link devices was contributed by
5124
5125Compaq's Dan Zink.
5126
5127(2.5) Return whether we handled the interrupt in our IRQ handler.
5128(Linux ISRs no longer return void, so we can propagate the handler
5129return value from the ACPI CA core back to the OS.)
5130
5131
5132
51333) Documentation:
5134
5135The ACPI CA Programmer Reference has been updated to reflect new
5136interfaces and changes to existing interfaces.
5137
5138----------------------------------------
513928 March 2003.  Summary of changes for version 20030328.
5140
51411) ACPI CA Core Subsystem:
5142
5143The GPE Block Device support has been completed.  New interfaces
5144are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
5145interfaces (enable, disable, clear, getstatus) have been split
5146into separate interfaces for Fixed Events and General Purpose
5147Events (GPEs) in order to support GPE Block Devices properly.
5148
5149Fixed a problem where the error message "Failed to acquire
5150semaphore" would appear during operations on the embedded
5151controller (EC).
5152
5153Code and Data Size: Current core subsystem library sizes are shown
5154below.  These are the code and data sizes for the acpica.lib
5155produced by the Microsoft Visual C++ 6.0 compiler, and these
5156values do not include any ACPI driver or OSPM code.  The debug
5157version of the code includes the debug output trace mechanism and
5158has a much larger code and data size.  Note that these values will
5159vary depending on the efficiency of the compiler and the compiler
5160options used during generation.
5161
5162  Previous Release
5163    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
5164    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
5165  Current Release:
5166    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
5167    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
5168
5169
5170----------------------------------------
517128 February 2003.  Summary of changes for version 20030228.
5172
5173
51741) ACPI CA Core Subsystem:
5175
5176The GPE handling and dispatch code has been completely overhauled
5177in preparation for support of GPE Block Devices (ID ACPI0006).
5178This affects internal data structures and code only; there should
5179be no differences visible externally.  One new file has been
5180added, evgpeblk.c
5181
5182The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
5183fields that are used to determine the GPE block lengths.  The
5184REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
5185structures are ignored.  This is per the ACPI specification but it
5186isn't very clear.  The full 256 Block 0/1 GPEs are now supported
5187(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
5188
5189In the SCI interrupt handler, removed the read of the PM1_CONTROL
5190register to look at the SCI_EN bit.  On some machines, this read
5191causes an SMI event and greatly slows down SCI events.  (This may
5192in fact be the cause of slow battery status response on some
5193systems.)
5194
5195Fixed a problem where a store of a NULL string to a package object
5196could cause the premature deletion of the object.  This was seen
5197during execution of the battery _BIF method on some systems,
5198resulting in no battery data being returned.
5199
5200Added AcpiWalkResources interface to simplify parsing of resource
5201lists.
5202
5203Code and Data Size: Current core subsystem library sizes are shown
5204below.  These are the code and data sizes for the acpica.lib
5205produced by the Microsoft Visual C++ 6.0 compiler, and these
5206values do not include any ACPI driver or OSPM code.  The debug
5207version of the code includes the debug output trace mechanism and
5208has a much larger code and data size.  Note that these values will
5209vary depending on the efficiency of the compiler and the compiler
5210options used during generation.
5211
5212  Previous Release
5213    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
5214    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
5215  Current Release:
5216    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
5217    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
5218
5219
52202) Linux
5221
5222S3 fixes (Ole Rohne)
5223
5224Update ACPI PHP driver with to use new acpi_walk_resource API
5225(Bjorn Helgaas)
5226
5227Add S4BIOS support (Pavel Machek)
5228
5229Map in entire table before performing checksum (John Stultz)
5230
5231Expand the mem= cmdline to allow the specification of reserved and
5232ACPI DATA blocks (Pavel Machek)
5233
5234Never use ACPI on VISWS
5235
5236Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
5237
5238Revert a change that allowed P_BLK lengths to be 4 or 5. This is
5239causing us to think that some systems support C2 when they really
5240don't.
5241
5242Do not count processor objects for non-present CPUs (Thanks to
5243Dominik Brodowski)
5244
5245
52463) iASL Compiler:
5247
5248Fixed a problem where ASL include files could not be found and
5249opened.
5250
5251Added support for the _PDC reserved name.
5252
5253
5254----------------------------------------
525522 January 2003.  Summary of changes for version 20030122.
5256
5257
52581) ACPI CA Core Subsystem:
5259
5260Added a check for constructs of the form:  Store (Local0, Local0)
5261where Local0 is not initialized.  Apparently, some BIOS
5262programmers believe that this is a NOOP.  Since this store doesn't
5263do anything anyway, the new prototype behavior will ignore this
5264error.  This is a case where we can relax the strict checking in
5265the interpreter in the name of compatibility.
5266
5267
52682) Linux
5269
5270The AcpiSrc Source Conversion Utility has been released with the
5271Linux package for the first time.  This is the utility that is
5272used to convert the ACPI CA base source code to the Linux version.
5273
5274(Both) Handle P_BLK lengths shorter than 6 more gracefully
5275
5276(Both) Move more headers to include/acpi, and delete an unused
5277header.
5278
5279(Both) Move drivers/acpi/include directory to include/acpi
5280
5281(Both) Boot functions don't use cmdline, so don't pass it around
5282
5283(Both) Remove include of unused header (Adrian Bunk)
5284
5285(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
5286the
5287former now also includes the latter, acpiphp.h only needs the one,
5288now.
5289
5290(2.5) Make it possible to select method of bios restoring after S3
5291resume. [=> no more ugly ifdefs] (Pavel Machek)
5292
5293(2.5) Make proc write interfaces work (Pavel Machek)
5294
5295(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
5296
5297(2.5) Break out ACPI Perf code into its own module, under cpufreq
5298(Dominik Brodowski)
5299
5300(2.4) S4BIOS support (Ducrot Bruno)
5301
5302(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
5303Visinoni)
5304
5305
53063) iASL Compiler:
5307
5308Added support to disassemble SSDT and PSDTs.
5309
5310Implemented support to obtain SSDTs from the Windows registry if
5311available.
5312
5313
5314----------------------------------------
531509 January 2003.  Summary of changes for version 20030109.
5316
53171) ACPI CA Core Subsystem:
5318
5319Changed the behavior of the internal Buffer-to-String conversion
5320function.  The current ACPI specification states that the contents
5321of the buffer are "converted to a string of two-character
5322hexadecimal numbers, each separated by a space".  Unfortunately,
5323this definition is not backwards compatible with existing ACPI 1.0
5324implementations (although the behavior was not defined in the ACPI
53251.0 specification).  The new behavior simply copies data from the
5326buffer to the string until a null character is found or the end of
5327the buffer is reached.  The new String object is always null
5328terminated.  This problem was seen during the generation of _BIF
5329battery data where incorrect strings were returned for battery
5330type, etc.  This will also require an errata to the ACPI
5331specification.
5332
5333Renamed all instances of NATIVE_UINT and NATIVE_INT to
5334ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
5335
5336Copyright in all module headers (both Linux and non-Linux) has be
5337updated to 2003.
5338
5339Code and Data Size: Current core subsystem library sizes are shown
5340below.  These are the code and data sizes for the acpica.lib
5341produced by the Microsoft Visual C++ 6.0 compiler, and these
5342values do not include any ACPI driver or OSPM code.  The debug
5343version of the code includes the debug output trace mechanism and
5344has a much larger code and data size.  Note that these values will
5345vary depending on the efficiency of the compiler and the compiler
5346options used during generation.
5347
5348  Previous Release
5349    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
5350    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
5351  Current Release:
5352    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
5353    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
5354
5355
53562) Linux
5357
5358Fixed an oops on module insertion/removal (Matthew Tippett)
5359
5360(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
5361
5362(2.5) Replace pr_debug (Randy Dunlap)
5363
5364(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
5365
5366(Both) Eliminate spawning of thread from timer callback, in favor
5367of schedule_work()
5368
5369(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
5370
5371(Both) Added define for Fixed Function HW region (Matthew Wilcox)
5372
5373(Both) Add missing statics to button.c (Pavel Machek)
5374
5375Several changes have been made to the source code translation
5376utility that generates the Linux Code in order to make the code
5377more "Linux-like":
5378
5379All typedefs on structs and unions have been removed in keeping
5380with the Linux coding style.
5381
5382Removed the non-Linux SourceSafe module revision number from each
5383module header.
5384
5385Completed major overhaul of symbols to be lowercased for linux.
5386Doubled the number of symbols that are lowercased.
5387
5388Fixed a problem where identifiers within procedure headers and
5389within quotes were not fully lower cased (they were left with a
5390starting capital.)
5391
5392Some C macros whose only purpose is to allow the generation of 16-
5393bit code are now completely removed in the Linux code, increasing
5394readability and maintainability.
5395
5396----------------------------------------
5397
539812 December 2002.  Summary of changes for version 20021212.
5399
5400
54011) ACPI CA Core Subsystem:
5402
5403Fixed a problem where the creation of a zero-length AML Buffer
5404would cause a fault.
5405
5406Fixed a problem where a Buffer object that pointed to a static AML
5407buffer (in an ACPI table) could inadvertently be deleted, causing
5408memory corruption.
5409
5410Fixed a problem where a user buffer (passed in to the external
5411ACPI CA interfaces) could be overwritten if the buffer was too
5412small to complete the operation, causing memory corruption.
5413
5414Fixed a problem in the Buffer-to-String conversion code where a
5415string of length one was always returned, regardless of the size
5416of the input Buffer object.
5417
5418Removed the NATIVE_CHAR data type across the entire source due to
5419lack of need and lack of consistent use.
5420
5421Code and Data Size: Current core subsystem library sizes are shown
5422below.  These are the code and data sizes for the acpica.lib
5423produced by the Microsoft Visual C++ 6.0 compiler, and these
5424values do not include any ACPI driver or OSPM code.  The debug
5425version of the code includes the debug output trace mechanism and
5426has a much larger code and data size.  Note that these values will
5427vary depending on the efficiency of the compiler and the compiler
5428options used during generation.
5429
5430  Previous Release
5431    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
5432    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
5433  Current Release:
5434    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
5435    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
5436
5437
5438----------------------------------------
543905 December 2002.  Summary of changes for version 20021205.
5440
54411) ACPI CA Core Subsystem:
5442
5443Fixed a problem where a store to a String or Buffer object could
5444cause corruption of the DSDT if the object type being stored was
5445the same as the target object type and the length of the object
5446being stored was equal to or smaller than the original (existing)
5447target object.  This was seen to cause corruption of battery _BIF
5448buffers if the _BIF method modified the buffer on the fly.
5449
5450Fixed a problem where an internal error was generated if a control
5451method invocation was used in an OperationRegion, Buffer, or
5452Package declaration.  This was caused by the deferred parsing of
5453the control method and thus the deferred creation of the internal
5454method object.  The solution to this problem was to create the
5455internal method object at the moment the method is encountered in
5456the first pass - so that subsequent references to the method will
5457able to obtain the required parameter count and thus properly
5458parse the method invocation.  This problem presented itself as an
5459AE_AML_INTERNAL during the pass 1 parse phase during table load.
5460
5461Fixed a problem where the internal String object copy routine did
5462not always allocate sufficient memory for the target String object
5463and caused memory corruption.  This problem was seen to cause
5464"Allocation already present in list!" errors as memory allocation
5465became corrupted.
5466
5467Implemented a new function for the evaluation of namespace objects
5468that allows the specification of the allowable return object
5469types.  This simplifies a lot of code that checks for a return
5470object of one or more specific objects returned from the
5471evaluation (such as _STA, etc.)  This may become and external
5472function if it would be useful to ACPI-related drivers.
5473
5474Completed another round of prefixing #defines with "ACPI_" for
5475clarity.
5476
5477Completed additional code restructuring to allow more modular
5478linking for iASL compiler and AcpiExec.  Several files were split
5479creating new files.  New files:  nsparse.c dsinit.c evgpe.c
5480
5481Implemented an abort mechanism to terminate an executing control
5482method via the AML debugger.  This feature is useful for debugging
5483control methods that depend (wait) for specific hardware
5484responses.
5485
5486Code and Data Size: Current core subsystem library sizes are shown
5487below.  These are the code and data sizes for the acpica.lib
5488produced by the Microsoft Visual C++ 6.0 compiler, and these
5489values do not include any ACPI driver or OSPM code.  The debug
5490version of the code includes the debug output trace mechanism and
5491has a much larger code and data size.  Note that these values will
5492vary depending on the efficiency of the compiler and the compiler
5493options used during generation.
5494
5495  Previous Release
5496    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
5497    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
5498  Current Release:
5499    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
5500    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
5501
5502
55032) iASL Compiler/Disassembler
5504
5505Fixed a compiler code generation problem for "Interrupt" Resource
5506Descriptors.  If specified in the ASL, the optional "Resource
5507Source Index" and "Resource Source" fields were not inserted into
5508the correct location within the AML resource descriptor, creating
5509an invalid descriptor.
5510
5511Fixed a disassembler problem for "Interrupt" resource descriptors.
5512The optional "Resource Source Index" and "Resource Source" fields
5513were ignored.
5514
5515
5516----------------------------------------
551722 November 2002.  Summary of changes for version 20021122.
5518
5519
55201) ACPI CA Core Subsystem:
5521
5522Fixed a reported problem where an object stored to a Method Local
5523or Arg was not copied to a new object during the store - the
5524object pointer was simply copied to the Local/Arg.  This caused
5525all subsequent operations on the Local/Arg to also affect the
5526original source of the store operation.
5527
5528Fixed a problem where a store operation to a Method Local or Arg
5529was not completed properly if the Local/Arg contained a reference
5530(from RefOf) to a named field.  The general-purpose store-to-
5531namespace-node code is now used so that this case is handled
5532automatically.
5533
5534Fixed a problem where the internal object copy routine would cause
5535a protection fault if the object being copied was a Package and
5536contained either 1) a NULL package element or 2) a nested sub-
5537package.
5538
5539Fixed a problem with the GPE initialization that resulted from an
5540ambiguity in the ACPI specification.  One section of the
5541specification states that both the address and length of the GPE
5542block must be zero if the block is not supported.  Another section
5543implies that only the address need be zero if the block is not
5544supported.  The code has been changed so that both the address and
5545the length must be non-zero to indicate a valid GPE block (i.e.,
5546if either the address or the length is zero, the GPE block is
5547invalid.)
5548
5549Code and Data Size: Current core subsystem library sizes are shown
5550below.  These are the code and data sizes for the acpica.lib
5551produced by the Microsoft Visual C++ 6.0 compiler, and these
5552values do not include any ACPI driver or OSPM code.  The debug
5553version of the code includes the debug output trace mechanism and
5554has a much larger code and data size.  Note that these values will
5555vary depending on the efficiency of the compiler and the compiler
5556options used during generation.
5557
5558  Previous Release
5559    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
5560    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
5561  Current Release:
5562    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
5563    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
5564
5565
55662) Linux
5567
5568Cleaned up EC driver. Exported an external EC read/write
5569interface. By going through this, other drivers (most notably
5570sonypi) will be able to serialize access to the EC.
5571
5572
55733) iASL Compiler/Disassembler
5574
5575Implemented support to optionally generate include files for both
5576ASM and C (the -i switch).  This simplifies BIOS development by
5577automatically creating include files that contain external
5578declarations for the symbols that are created within the
5579
5580(optionally generated) ASM and C AML source files.
5581
5582
5583----------------------------------------
558415 November 2002.  Summary of changes for version 20021115.
5585
55861) ACPI CA Core Subsystem:
5587
5588Fixed a memory leak problem where an error during resolution of
5589
5590method arguments during a method invocation from another method
5591failed to cleanup properly by deleting all successfully resolved
5592argument objects.
5593
5594Fixed a problem where the target of the Index() operator was not
5595correctly constructed if the source object was a package.  This
5596problem has not been detected because the use of a target operand
5597with Index() is very rare.
5598
5599Fixed a problem with the Index() operator where an attempt was
5600made to delete the operand objects twice.
5601
5602Fixed a problem where an attempt was made to delete an operand
5603twice during execution of the CondRefOf() operator if the target
5604did not exist.
5605
5606Implemented the first of perhaps several internal create object
5607functions that create and initialize a specific object type.  This
5608consolidates duplicated code wherever the object is created, thus
5609shrinking the size of the subsystem.
5610
5611Implemented improved debug/error messages for errors that occur
5612during nested method invocations.  All executing method pathnames
5613are displayed (with the error) as the call stack is unwound - thus
5614simplifying debug.
5615
5616Fixed a problem introduced in the 10/02 release that caused
5617premature deletion of a buffer object if a buffer was used as an
5618ASL operand where an integer operand is required (Thus causing an
5619implicit object conversion from Buffer to Integer.)  The change in
5620the 10/02 release was attempting to fix a memory leak (albeit
5621incorrectly.)
5622
5623Code and Data Size: Current core subsystem library sizes are shown
5624below.  These are the code and data sizes for the acpica.lib
5625produced by the Microsoft Visual C++ 6.0 compiler, and these
5626values do not include any ACPI driver or OSPM code.  The debug
5627version of the code includes the debug output trace mechanism and
5628has a much larger code and data size.  Note that these values will
5629vary depending on the efficiency of the compiler and the compiler
5630options used during generation.
5631
5632  Previous Release
5633    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
5634    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
5635  Current Release:
5636    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
5637    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
5638
5639
56402) Linux
5641
5642Changed the implementation of the ACPI semaphores to use down()
5643instead of down_interruptable().  It is important that the
5644execution of ACPI control methods not be interrupted by signals.
5645Methods must run to completion, or the system may be left in an
5646unknown/unstable state.
5647
5648Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
5649(Shawn Starr)
5650
5651
56523) iASL Compiler/Disassembler
5653
5654
5655Changed the default location of output files.  All output files
5656are now placed in the current directory by default instead of in
5657the directory of the source file.  This change may affect some
5658existing makefiles, but it brings the behavior of the compiler in
5659line with other similar tools.  The location of the output files
5660can be overridden with the -p command line switch.
5661
5662
5663----------------------------------------
566411 November 2002.  Summary of changes for version 20021111.
5665
5666
56670) ACPI Specification 2.0B is released and is now available at:
5668http://www.acpi.info/index.html
5669
5670
56711) ACPI CA Core Subsystem:
5672
5673Implemented support for the ACPI 2.0 SMBus Operation Regions.
5674This includes the early detection and handoff of the request to
5675the SMBus region handler (avoiding all of the complex field
5676support code), and support for the bidirectional return packet
5677from an SMBus write operation.  This paves the way for the
5678development of SMBus drivers in each host operating system.
5679
5680Fixed a problem where the semaphore WAIT_FOREVER constant was
5681defined as 32 bits, but must be 16 bits according to the ACPI
5682specification.  This had the side effect of causing ASL
5683Mutex/Event timeouts even though the ASL code requested a wait
5684forever.  Changed all internal references to the ACPI timeout
5685parameter to 16 bits to prevent future problems.  Changed the name
5686of WAIT_FOREVER to ACPI_WAIT_FOREVER.
5687
5688Code and Data Size: Current core subsystem library sizes are shown
5689below.  These are the code and data sizes for the acpica.lib
5690produced by the Microsoft Visual C++ 6.0 compiler, and these
5691values do not include any ACPI driver or OSPM code.  The debug
5692version of the code includes the debug output trace mechanism and
5693has a much larger code and data size.  Note that these values will
5694vary depending on the efficiency of the compiler and the compiler
5695options used during generation.
5696
5697  Previous Release
5698    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
5699    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
5700  Current Release:
5701    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
5702    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
5703
5704
57052) Linux
5706
5707Module loading/unloading fixes (John Cagle)
5708
5709
57103) iASL Compiler/Disassembler
5711
5712Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
5713
5714Implemented support for the disassembly of all SMBus protocol
5715keywords (SMBQuick, SMBWord, etc.)
5716
5717----------------------------------------
571801 November 2002.  Summary of changes for version 20021101.
5719
5720
57211) ACPI CA Core Subsystem:
5722
5723Fixed a problem where platforms that have a GPE1 block but no GPE0
5724block were not handled correctly.  This resulted in a "GPE
5725overlap" error message.  GPE0 is no longer required.
5726
5727Removed code added in the previous release that inserted nodes
5728into the namespace in alphabetical order.  This caused some side-
5729effects on various machines.  The root cause of the problem is
5730still under investigation since in theory, the internal ordering
5731of the namespace nodes should not matter.
5732
5733
5734Enhanced error reporting for the case where a named object is not
5735found during control method execution.  The full ACPI namepath
5736(name reference) of the object that was not found is displayed in
5737this case.
5738
5739Note: as a result of the overhaul of the namespace object types in
5740the previous release, the namespace nodes for the predefined
5741scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
5742instead of ACPI_TYPE_ANY.  This simplifies the namespace
5743management code but may affect code that walks the namespace tree
5744looking for specific object types.
5745
5746Code and Data Size: Current core subsystem library sizes are shown
5747below.  These are the code and data sizes for the acpica.lib
5748produced by the Microsoft Visual C++ 6.0 compiler, and these
5749values do not include any ACPI driver or OSPM code.  The debug
5750version of the code includes the debug output trace mechanism and
5751has a much larger code and data size.  Note that these values will
5752vary depending on the efficiency of the compiler and the compiler
5753options used during generation.
5754
5755  Previous Release
5756    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
5757    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
5758  Current Release:
5759    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
5760    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
5761
5762
57632) Linux
5764
5765Fixed a problem introduced in the previous release where the
5766Processor and Thermal objects were not recognized and installed in
5767/proc.  This was related to the scope type change described above.
5768
5769
57703) iASL Compiler/Disassembler
5771
5772Implemented the -g option to get all of the required ACPI tables
5773from the registry and save them to files (Windows version of the
5774compiler only.)  The required tables are the FADT, FACS, and DSDT.
5775
5776Added ACPI table checksum validation during table disassembly in
5777order to catch corrupted tables.
5778
5779
5780----------------------------------------
578122 October 2002.  Summary of changes for version 20021022.
5782
57831) ACPI CA Core Subsystem:
5784
5785Implemented a restriction on the Scope operator that the target
5786must already exist in the namespace at the time the operator is
5787encountered (during table load or method execution).  In other
5788words, forward references are not allowed and Scope() cannot
5789create a new object. This changes the previous behavior where the
5790interpreter would create the name if not found.  This new behavior
5791correctly enables the search-to-root algorithm during namespace
5792lookup of the target name.  Because of this upsearch, this fixes
5793the known Compaq _SB_.OKEC problem and makes both the AML
5794interpreter and iASL compiler compatible with other ACPI
5795implementations.
5796
5797Completed a major overhaul of the internal ACPI object types for
5798the ACPI Namespace and the associated operand objects.  Many of
5799these types had become obsolete with the introduction of the two-
5800pass namespace load.  This cleanup simplifies the code and makes
5801the entire namespace load mechanism much clearer and easier to
5802understand.
5803
5804Improved debug output for tracking scope opening/closing to help
5805diagnose scoping issues.  The old scope name as well as the new
5806scope name are displayed.  Also improved error messages for
5807problems with ASL Mutex objects and error messages for GPE
5808problems.
5809
5810Cleaned up the namespace dump code, removed obsolete code.
5811
5812All string output (for all namespace/object dumps) now uses the
5813common ACPI string output procedure which handles escapes properly
5814and does not emit non-printable characters.
5815
5816Fixed some issues with constants in the 64-bit version of the
5817local C library (utclib.c)
5818
5819
58202) Linux
5821
5822EC Driver:  No longer attempts to acquire the Global Lock at
5823interrupt level.
5824
5825
58263) iASL Compiler/Disassembler
5827
5828Implemented ACPI 2.0B grammar change that disallows all Type 1 and
58292 opcodes outside of a control method.  This means that the
5830"executable" operators (versus the "namespace" operators) cannot
5831be used at the table level; they can only be used within a control
5832method.
5833
5834Implemented the restriction on the Scope() operator where the
5835target must already exist in the namespace at the time the
5836operator is encountered (during ASL compilation). In other words,
5837forward references are not allowed and Scope() cannot create a new
5838object.  This makes the iASL compiler compatible with other ACPI
5839implementations and makes the Scope() implementation adhere to the
5840ACPI specification.
5841
5842Fixed a problem where namepath optimization for the Alias operator
5843was optimizing the wrong path (of the two namepaths.)  This caused
5844a "Missing alias link" error message.
5845
5846Fixed a problem where an "unknown reserved name" warning could be
5847incorrectly generated for names like "_SB" when the trailing
5848underscore is not used in the original ASL.
5849
5850Fixed a problem where the reserved name check did not handle
5851NamePaths with multiple NameSegs correctly.  The first nameseg of
5852the NamePath was examined instead of the last NameSeg.
5853
5854
5855----------------------------------------
5856
585702 October 2002.  Summary of changes for this release.
5858
5859
58601) ACPI CA Core Subsystem version 20021002:
5861
5862Fixed a problem where a store/copy of a string to an existing
5863string did not always set the string length properly in the String
5864object.
5865
5866Fixed a reported problem with the ToString operator where the
5867behavior was identical to the ToHexString operator instead of just
5868simply converting a raw buffer to a string data type.
5869
5870Fixed a problem where CopyObject and the other "explicit"
5871conversion operators were not updating the internal namespace node
5872type as part of the store operation.
5873
5874Fixed a memory leak during implicit source operand conversion
5875where the original object was not deleted if it was converted to a
5876new object of a different type.
5877
5878Enhanced error messages for all problems associated with namespace
5879lookups.  Common procedure generates and prints the lookup name as
5880well as the formatted status.
5881
5882Completed implementation of a new design for the Alias support
5883within the namespace.  The existing design did not handle the case
5884where a new object was assigned to one of the two names due to the
5885use of an explicit conversion operator, resulting in the two names
5886pointing to two different objects.  The new design simply points
5887the Alias name to the original name node - not to the object.
5888This results in a level of indirection that must be handled in the
5889name resolution mechanism.
5890
5891Code and Data Size: Current core subsystem library sizes are shown
5892below.  These are the code and data sizes for the acpica.lib
5893produced by the Microsoft Visual C++ 6.0 compiler, and these
5894values do not include any ACPI driver or OSPM code.  The debug
5895version of the code includes the debug output trace mechanism and
5896has a larger code and data size.  Note that these values will vary
5897depending on the efficiency of the compiler and the compiler
5898options used during generation.
5899
5900  Previous Release
5901    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
5902    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
5903  Current Release:
5904    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
5905    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
5906
5907
59082) Linux
5909
5910Initialize thermal driver's timer before it is used. (Knut
5911Neumann)
5912
5913Allow handling negative celsius values. (Kochi Takayoshi)
5914
5915Fix thermal management and make trip points. R/W (Pavel Machek)
5916
5917Fix /proc/acpi/sleep. (P. Christeas)
5918
5919IA64 fixes. (David Mosberger)
5920
5921Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
5922
5923Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
5924Brodowski)
5925
5926
59273) iASL Compiler/Disassembler
5928
5929Clarified some warning/error messages.
5930
5931
5932----------------------------------------
593318 September 2002.  Summary of changes for this release.
5934
5935
59361) ACPI CA Core Subsystem version 20020918:
5937
5938Fixed a reported problem with reference chaining (via the Index()
5939and RefOf() operators) in the ObjectType() and SizeOf() operators.
5940The definition of these operators includes the dereferencing of
5941all chained references to return information on the base object.
5942
5943Fixed a problem with stores to indexed package elements - the
5944existing code would not complete the store if an "implicit
5945conversion" was not performed.  In other words, if the existing
5946object (package element) was to be replaced completely, the code
5947didn't handle this case.
5948
5949Relaxed typechecking on the ASL "Scope" operator to allow the
5950target name to refer to an object of type Integer, String, or
5951Buffer, in addition to the scoping object types (Device,
5952predefined Scopes, Processor, PowerResource, and ThermalZone.)
5953This allows existing AML code that has workarounds for a bug in
5954Windows to function properly.  A warning is issued, however.  This
5955affects both the AML interpreter and the iASL compiler. Below is
5956an example of this type of ASL code:
5957
5958      Name(DEB,0x00)
5959      Scope(DEB)
5960      {
5961
5962Fixed some reported problems with 64-bit integer support in the
5963local implementation of C library functions (clib.c)
5964
5965
59662) Linux
5967
5968Use ACPI fix map region instead of IOAPIC region, since it is
5969undefined in non-SMP.
5970
5971Ensure that the SCI has the proper polarity and trigger, even on
5972systems that do not have an interrupt override entry in the MADT.
5973
59742.5 big driver reorganization (Pat Mochel)
5975
5976Use early table mapping code from acpitable.c (Andi Kleen)
5977
5978New blacklist entries (Andi Kleen)
5979
5980Blacklist improvements. Split blacklist code out into a separate
5981file. Move checking the blacklist to very early. Previously, we
5982would use ACPI tables, and then halfway through init, check the
5983blacklist -- too late. Now, it's early enough to completely fall-
5984back to non-ACPI.
5985
5986
59873) iASL Compiler/Disassembler version 20020918:
5988
5989Fixed a problem where the typechecking code didn't know that an
5990alias could point to a method.  In other words, aliases were not
5991being dereferenced during typechecking.
5992
5993
5994----------------------------------------
599529 August 2002.  Summary of changes for this release.
5996
59971) ACPI CA Core Subsystem Version 20020829:
5998
5999If the target of a Scope() operator already exists, it must be an
6000object type that actually opens a scope -- such as a Device,
6001Method, Scope, etc.  This is a fatal runtime error.  Similar error
6002check has been added to the iASL compiler also.
6003
6004Tightened up the namespace load to disallow multiple names in the
6005same scope.  This previously was allowed if both objects were of
6006the same type.  (i.e., a lookup was the same as entering a new
6007name).
6008
6009
60102) Linux
6011
6012Ensure that the ACPI interrupt has the proper trigger and
6013polarity.
6014
6015local_irq_disable is extraneous. (Matthew Wilcox)
6016
6017Make "acpi=off" actually do what it says, and not use the ACPI
6018interpreter *or* the tables.
6019
6020Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
6021Takayoshi)
6022
6023
60243) iASL Compiler/Disassembler  Version 20020829:
6025
6026Implemented namepath optimization for name declarations.  For
6027example, a declaration like "Method (\_SB_.ABCD)" would get
6028optimized to "Method (ABCD)" if the declaration is within the
6029\_SB_ scope.  This optimization is in addition to the named
6030reference path optimization first released in the previous
6031version. This would seem to complete all possible optimizations
6032for namepaths within the ASL/AML.
6033
6034If the target of a Scope() operator already exists, it must be an
6035object type that actually opens a scope -- such as a Device,
6036Method, Scope, etc.
6037
6038Implemented a check and warning for unreachable code in the same
6039block below a Return() statement.
6040
6041Fixed a problem where the listing file was not generated if the
6042compiler aborted if the maximum error count was exceeded (200).
6043
6044Fixed a problem where the typechecking of method return values was
6045broken.  This includes the check for a return value when the
6046method is invoked as a TermArg (a return value is expected.)
6047
6048Fixed a reported problem where EOF conditions during a quoted
6049string or comment caused a fault.
6050
6051
6052----------------------------------------
605315 August 2002.  Summary of changes for this release.
6054
60551) ACPI CA Core Subsystem Version 20020815:
6056
6057Fixed a reported problem where a Store to a method argument that
6058contains a reference did not perform the indirect store correctly.
6059This problem was created during the conversion to the new
6060reference object model - the indirect store to a method argument
6061code was not updated to reflect the new model.
6062
6063Reworked the ACPI mode change code to better conform to ACPI 2.0,
6064handle corner cases, and improve code legibility (Kochi Takayoshi)
6065
6066Fixed a problem with the pathname parsing for the carat (^)
6067prefix.  The heavy use of the carat operator by the new namepath
6068optimization in the iASL compiler uncovered a problem with the AML
6069interpreter handling of this prefix.  In the case where one or
6070more carats precede a single nameseg, the nameseg was treated as
6071standalone and the search rule (to root) was inadvertently
6072applied.  This could cause both the iASL compiler and the
6073interpreter to find the wrong object or to miss the error that
6074should occur if the object does not exist at that exact pathname.
6075
6076Found and fixed the problem where the HP Pavilion DSDT would not
6077load.  This was a relatively minor tweak to the table loading code
6078(a problem caused by the unexpected encounter with a method
6079invocation not within a control method), but it does not solve the
6080overall issue of the execution of AML code at the table level.
6081This investigation is still ongoing.
6082
6083Code and Data Size: Current core subsystem library sizes are shown
6084below.  These are the code and data sizes for the acpica.lib
6085produced by the Microsoft Visual C++ 6.0 compiler, and these
6086values do not include any ACPI driver or OSPM code.  The debug
6087version of the code includes the debug output trace mechanism and
6088has a larger code and data size.  Note that these values will vary
6089depending on the efficiency of the compiler and the compiler
6090options used during generation.
6091
6092  Previous Release
6093    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
6094    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
6095  Current Release:
6096    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
6097    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
6098
6099
61002) Linux
6101
6102Remove redundant slab.h include (Brad Hards)
6103
6104Fix several bugs in thermal.c (Herbert Nachtnebel)
6105
6106Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
6107
6108Change acpi_system_suspend to use updated irq functions (Pavel
6109Machek)
6110
6111Export acpi_get_firmware_table (Matthew Wilcox)
6112
6113Use proper root proc entry for ACPI (Kochi Takayoshi)
6114
6115Fix early-boot table parsing (Bjorn Helgaas)
6116
6117
61183) iASL Compiler/Disassembler
6119
6120Reworked the compiler options to make them more consistent and to
6121use two-letter options where appropriate.  We were running out of
6122sensible letters.   This may break some makefiles, so check the
6123current options list by invoking the compiler with no parameters.
6124
6125Completed the design and implementation of the ASL namepath
6126optimization option for the compiler.  This option optimizes all
6127references to named objects to the shortest possible path.  The
6128first attempt tries to utilize a single nameseg (4 characters) and
6129the "search-to-root" algorithm used by the interpreter.  If that
6130cannot be used (because either the name is not in the search path
6131or there is a conflict with another object with the same name),
6132the pathname is optimized using the carat prefix (usually a
6133shorter string than specifying the entire path from the root.)
6134
6135Implemented support to obtain the DSDT from the Windows registry
6136(when the disassembly option is specified with no input file).
6137Added this code as the implementation for AcpiOsTableOverride in
6138the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
6139utility) to scan memory for the DSDT to the AcpiOsTableOverride
6140function in the DOS OSL to make the disassembler truly OS
6141independent.
6142
6143Implemented a new option to disassemble and compile in one step.
6144When used without an input filename, this option will grab the
6145DSDT from the local machine, disassemble it, and compile it in one
6146step.
6147
6148Added a warning message for invalid escapes (a backslash followed
6149by any character other than the allowable escapes).  This catches
6150the quoted string error "\_SB_" (which should be "\\_SB_" ).
6151
6152Also, there are numerous instances in the ACPI specification where
6153this error occurs.
6154
6155Added a compiler option to disable all optimizations.  This is
6156basically the "compatibility mode" because by using this option,
6157the AML code will come out exactly the same as other ASL
6158compilers.
6159
6160Added error messages for incorrectly ordered dependent resource
6161functions.  This includes: missing EndDependentFn macro at end of
6162dependent resource list, nested dependent function macros (both
6163start and end), and missing StartDependentFn macro.  These are
6164common errors that should be caught at compile time.
6165
6166Implemented _OSI support for the disassembler and compiler.  _OSI
6167must be included in the namespace for proper disassembly (because
6168the disassembler must know the number of arguments.)
6169
6170Added an "optimization" message type that is optional (off by
6171default).  This message is used for all optimizations - including
6172constant folding, integer optimization, and namepath optimization.
6173
6174----------------------------------------
617525 July 2002.  Summary of changes for this release.
6176
6177
61781) ACPI CA Core Subsystem Version 20020725:
6179
6180The AML Disassembler has been enhanced to produce compilable ASL
6181code and has been integrated into the iASL compiler (see below) as
6182well as the single-step disassembly for the AML debugger and the
6183disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
6184resource templates and macros are fully supported.  The
6185disassembler has been tested on over 30 different AML files,
6186producing identical AML when the resulting disassembled ASL file
6187is recompiled with the same ASL compiler.
6188
6189Modified the Resource Manager to allow zero interrupts and zero
6190dma channels during the GetCurrentResources call.  This was
6191causing problems on some platforms.
6192
6193Added the AcpiOsRedirectOutput interface to the OSL to simplify
6194output redirection for the AcpiOsPrintf and AcpiOsVprintf
6195interfaces.
6196
6197Code and Data Size: Current core subsystem library sizes are shown
6198below.  These are the code and data sizes for the acpica.lib
6199produced by the Microsoft Visual C++ 6.0 compiler, and these
6200values do not include any ACPI driver or OSPM code.  The debug
6201version of the code includes the debug output trace mechanism and
6202has a larger code and data size.  Note that these values will vary
6203depending on the efficiency of the compiler and the compiler
6204options used during generation.
6205
6206  Previous Release
6207    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
6208    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
6209  Current Release:
6210    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
6211    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
6212
6213
62142) Linux
6215
6216Fixed a panic in the EC driver (Dominik Brodowski)
6217
6218Implemented checksum of the R/XSDT itself during Linux table scan
6219(Richard Schaal)
6220
6221
62223) iASL compiler
6223
6224The AML disassembler is integrated into the compiler.  The "-d"
6225option invokes the disassembler  to completely disassemble an
6226input AML file, producing as output a text ASL file with the
6227extension ".dsl" (to avoid name collisions with existing .asl
6228source files.)  A future enhancement will allow the disassembler
6229to obtain the BIOS DSDT from the registry under Windows.
6230
6231Fixed a problem with the VendorShort and VendorLong resource
6232descriptors where an invalid AML sequence was created.
6233
6234Implemented a fix for BufferData term in the ASL parser.  It was
6235inadvertently defined twice, allowing invalid syntax to pass and
6236causing reduction conflicts.
6237
6238Fixed a problem where the Ones opcode could get converted to a
6239value of zero if "Ones" was used where a byte, word or dword value
6240was expected.  The 64-bit value is now truncated to the correct
6241size with the correct value.
6242
6243
6244
6245----------------------------------------
624602 July 2002.  Summary of changes for this release.
6247
6248
62491) ACPI CA Core Subsystem Version 20020702:
6250
6251The Table Manager code has been restructured to add several new
6252features.  Tables that are not required by the core subsystem
6253(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
6254validated in any way and are returned from AcpiGetFirmwareTable if
6255requested.  The AcpiOsTableOverride interface is now called for
6256each table that is loaded by the subsystem in order to allow the
6257host to override any table it chooses.  Previously, only the DSDT
6258could be overridden.  Added one new files, tbrsdt.c and
6259tbgetall.c.
6260
6261Fixed a problem with the conversion of internal package objects to
6262external objects (when a package is returned from a control
6263method.)  The return buffer length was set to zero instead of the
6264proper length of the package object.
6265
6266Fixed a reported problem with the use of the RefOf and DeRefOf
6267operators when passing reference arguments to control methods.  A
6268new type of Reference object is used internally for references
6269produced by the RefOf operator.
6270
6271Added additional error messages in the Resource Manager to explain
6272AE_BAD_DATA errors when they occur during resource parsing.
6273
6274Split the AcpiEnableSubsystem into two primitives to enable a
6275finer granularity initialization sequence.  These two calls should
6276be called in this order: AcpiEnableSubsystem (flags),
6277AcpiInitializeObjects (flags).  The flags parameter remains the
6278same.
6279
6280
62812) Linux
6282
6283Updated the ACPI utilities module to understand the new style of
6284fully resolved package objects that are now returned from the core
6285subsystem.  This eliminates errors of the form:
6286
6287    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
6288    acpi_utils-0430 [145] acpi_evaluate_reference:
6289        Invalid element in package (not a device reference)
6290
6291The method evaluation utility uses the new buffer allocation
6292scheme instead of calling AcpiEvaluate Object twice.
6293
6294Added support for ECDT. This allows the use of the Embedded
6295
6296Controller before the namespace has been fully initialized, which
6297is necessary for ACPI 2.0 support, and for some laptops to
6298initialize properly. (Laptops using ECDT are still rare, so only
6299limited testing was performed of the added functionality.)
6300
6301Fixed memory leaks in the EC driver.
6302
6303Eliminated a brittle code structure in acpi_bus_init().
6304
6305Eliminated the acpi_evaluate() helper function in utils.c. It is
6306no longer needed since acpi_evaluate_object can optionally
6307allocate memory for the return object.
6308
6309Implemented fix for keyboard hang when getting battery readings on
6310some systems (Stephen White)
6311
6312PCI IRQ routing update (Dominik Brodowski)
6313
6314Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
6315support
6316
6317----------------------------------------
631811 June 2002.  Summary of changes for this release.
6319
6320
63211) ACPI CA Core Subsystem Version 20020611:
6322
6323Fixed a reported problem where constants such as Zero and One
6324appearing within _PRT packages were not handled correctly within
6325the resource manager code.  Originally reported against the ASL
6326compiler because the code generator now optimizes integers to
6327their minimal AML representation (i.e. AML constants if possible.)
6328The _PRT code now handles all AML constant opcodes correctly
6329(Zero, One, Ones, Revision).
6330
6331Fixed a problem with the Concatenate operator in the AML
6332interpreter where a buffer result object was incorrectly marked as
6333not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
6334
6335All package sub-objects are now fully resolved before they are
6336returned from the external ACPI interfaces.  This means that name
6337strings are resolved to object handles, and constant operators
6338(Zero, One, Ones, Revision) are resolved to Integers.
6339
6340Implemented immediate resolution of the AML Constant opcodes
6341(Zero, One, Ones, Revision) to Integer objects upon detection
6342within the AML stream. This has simplified and reduced the
6343generated code size of the subsystem by eliminating about 10
6344switch statements for these constants (which previously were
6345contained in Reference objects.)  The complicating issues are that
6346the Zero opcode is used as a "placeholder" for unspecified
6347optional target operands and stores to constants are defined to be
6348no-ops.
6349
6350Code and Data Size: Current core subsystem library sizes are shown
6351below. These are the code and data sizes for the acpica.lib
6352produced by the Microsoft Visual C++ 6.0 compiler, and these
6353values do not include any ACPI driver or OSPM code.  The debug
6354version of the code includes the debug output trace mechanism and
6355has a larger code and data size.  Note that these values will vary
6356depending on the efficiency of the compiler and the compiler
6357options used during generation.
6358
6359  Previous Release
6360    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
6361    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
6362  Current Release:
6363    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
6364    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
6365
6366
63672) Linux
6368
6369
6370Added preliminary support for obtaining _TRA data for PCI root
6371bridges (Bjorn Helgaas).
6372
6373
63743) iASL Compiler Version X2046:
6375
6376Fixed a problem where the "_DDN" reserved name was defined to be a
6377control method with one argument.  There are no arguments, and
6378_DDN does not have to be a control method.
6379
6380Fixed a problem with the Linux version of the compiler where the
6381source lines printed with error messages were the wrong lines.
6382This turned out to be the "LF versus CR/LF" difference between
6383Windows and Unix.  This appears to be the longstanding issue
6384concerning listing output and error messages.
6385
6386Fixed a problem with the Linux version of compiler where opcode
6387names within error messages were wrong.  This was caused by a
6388slight difference in the output of the Flex tool on Linux versus
6389Windows.
6390
6391Fixed a problem with the Linux compiler where the hex output files
6392contained some garbage data caused by an internal buffer overrun.
6393
6394
6395----------------------------------------
639617 May 2002.  Summary of changes for this release.
6397
6398
63991) ACPI CA Core Subsystem Version 20020517:
6400
6401Implemented a workaround to an BIOS bug discovered on the HP
6402OmniBook where the FADT revision number and the table size are
6403inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
6404behavior is to fallback to using only the ACPI 1.0 fields of the
6405FADT if the table is too small to be a ACPI 2.0 table as claimed
6406by the revision number.  Although this is a BIOS bug, this is a
6407case where the workaround is simple enough and with no side
6408effects, so it seemed prudent to add it.  A warning message is
6409issued, however.
6410
6411Implemented minimum size checks for the fixed-length ACPI tables -
6412- the FADT and FACS, as well as consistency checks between the
6413revision number and the table size.
6414
6415Fixed a reported problem in the table override support where the
6416new table pointer was incorrectly treated as a physical address
6417instead of a logical address.
6418
6419Eliminated the use of the AE_AML_ERROR exception and replaced it
6420with more descriptive codes.
6421
6422Fixed a problem where an exception would occur if an ASL Field was
6423defined with no named Field Units underneath it (used by some
6424index fields).
6425
6426Code and Data Size: Current core subsystem library sizes are shown
6427below.  These are the code and data sizes for the acpica.lib
6428produced by the Microsoft Visual C++ 6.0 compiler, and these
6429values do not include any ACPI driver or OSPM code.  The debug
6430version of the code includes the debug output trace mechanism and
6431has a larger code and data size.  Note that these values will vary
6432depending on the efficiency of the compiler and the compiler
6433options used during generation.
6434
6435  Previous Release
6436    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
6437    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
6438  Current Release:
6439    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
6440    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
6441
6442
6443
64442) Linux
6445
6446Much work done on ACPI init (MADT and PCI IRQ routing support).
6447(Paul D. and Dominik Brodowski)
6448
6449Fix PCI IRQ-related panic on boot (Sam Revitch)
6450
6451Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
6452
6453Fix "MHz" typo (Dominik Brodowski)
6454
6455Fix RTC year 2000 issue (Dominik Brodowski)
6456
6457Preclude multiple button proc entries (Eric Brunet)
6458
6459Moved arch-specific code out of include/platform/aclinux.h
6460
64613) iASL Compiler Version X2044:
6462
6463Implemented error checking for the string used in the EISAID macro
6464(Usually used in the definition of the _HID object.)  The code now
6465strictly enforces the PnP format - exactly 7 characters, 3
6466uppercase letters and 4 hex digits.
6467
6468If a raw string is used in the definition of the _HID object
6469(instead of the EISAID macro), the string must contain all
6470alphanumeric characters (e.g., "*PNP0011" is not allowed because
6471of the asterisk.)
6472
6473Implemented checking for invalid use of ACPI reserved names for
6474most of the name creation operators (Name, Device, Event, Mutex,
6475OperationRegion, PowerResource, Processor, and ThermalZone.)
6476Previously, this check was only performed for control methods.
6477
6478Implemented an additional check on the Name operator to emit an
6479error if a reserved name that must be implemented in ASL as a
6480control method is used.  We know that a reserved name must be a
6481method if it is defined with input arguments.
6482
6483The warning emitted when a namespace object reference is not found
6484during the cross reference phase has been changed into an error.
6485The "External" directive should be used for names defined in other
6486modules.
6487
6488
64894) Tools and Utilities
6490
6491The 16-bit tools (adump16 and aexec16) have been regenerated and
6492tested.
6493
6494Fixed a problem with the output of both acpidump and adump16 where
6495the indentation of closing parentheses and brackets was not
6496
6497aligned properly with the parent block.
6498
6499
6500----------------------------------------
650103 May 2002.  Summary of changes for this release.
6502
6503
65041) ACPI CA Core Subsystem Version 20020503:
6505
6506Added support a new OSL interface that allows the host operating
6507
6508system software to override the DSDT found in the firmware -
6509AcpiOsTableOverride.  With this interface, the OSL can examine the
6510version of the firmware DSDT and replace it with a different one
6511if desired.
6512
6513Added new external interfaces for accessing ACPI registers from
6514device drivers and other system software - AcpiGetRegister and
6515AcpiSetRegister.  This was simply an externalization of the
6516existing AcpiHwBitRegister interfaces.
6517
6518Fixed a regression introduced in the previous build where the
6519ASL/AML CreateField operator always returned an error,
6520"destination must be a NS Node".
6521
6522Extended the maximum time (before failure) to successfully enable
6523ACPI mode to 3 seconds.
6524
6525Code and Data Size: Current core subsystem library sizes are shown
6526below.  These are the code and data sizes for the acpica.lib
6527produced by the Microsoft Visual C++ 6.0 compiler, and these
6528values do not include any ACPI driver or OSPM code.  The debug
6529version of the code includes the debug output trace mechanism and
6530has a larger code and data size.  Note that these values will vary
6531depending on the efficiency of the compiler and the compiler
6532options used during generation.
6533
6534  Previous Release
6535    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
6536    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
6537  Current Release:
6538    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
6539    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
6540
6541
65422) Linux
6543
6544Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
6545free. While 3 out of 4 of our in-house systems work fine, the last
6546one still hangs when testing the LAPIC timer.
6547
6548Renamed many files in 2.5 kernel release to omit "acpi_" from the
6549name.
6550
6551Added warning on boot for Presario 711FR.
6552
6553Sleep improvements (Pavel Machek)
6554
6555ACPI can now be built without CONFIG_PCI enabled.
6556
6557IA64: Fixed memory map functions (JI Lee)
6558
6559
65603) iASL Compiler Version X2043:
6561
6562Added support to allow the compiler to be integrated into the MS
6563VC++ development environment for one-button compilation of single
6564files or entire projects -- with error-to-source-line mapping.
6565
6566Implemented support for compile-time constant folding for the
6567Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
6568specification.  This allows the ASL writer to use expressions
6569instead of Integer/Buffer/String constants in terms that must
6570evaluate to constants at compile time and will also simplify the
6571emitted AML in any such sub-expressions that can be folded
6572(evaluated at compile-time.)  This increases the size of the
6573compiler significantly because a portion of the ACPI CA AML
6574interpreter is included within the compiler in order to pre-
6575evaluate constant expressions.
6576
6577
6578Fixed a problem with the "Unicode" ASL macro that caused the
6579compiler to fault.  (This macro is used in conjunction with the
6580_STR reserved name.)
6581
6582Implemented an AML opcode optimization to use the Zero, One, and
6583Ones opcodes where possible to further reduce the size of integer
6584constants and thus reduce the overall size of the generated AML
6585code.
6586
6587Implemented error checking for new reserved terms for ACPI version
65882.0A.
6589
6590Implemented the -qr option to display the current list of ACPI
6591reserved names known to the compiler.
6592
6593Implemented the -qc option to display the current list of ASL
6594operators that are allowed within constant expressions and can
6595therefore be folded at compile time if the operands are constants.
6596
6597
65984) Documentation
6599
6600Updated the Programmer's Reference for new interfaces, data types,
6601and memory allocation model options.
6602
6603Updated the iASL Compiler User Reference to apply new format and
6604add information about new features and options.
6605
6606----------------------------------------
660719 April 2002.  Summary of changes for this release.
6608
66091) ACPI CA Core Subsystem Version 20020419:
6610
6611The source code base for the Core Subsystem has been completely
6612cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
6613versions.  The Lint option files used are included in the
6614/acpi/generate/lint directory.
6615
6616Implemented enhanced status/error checking across the entire
6617Hardware manager subsystem.  Any hardware errors (reported from
6618the OSL) are now bubbled up and will abort a running control
6619method.
6620
6621
6622Fixed a problem where the per-ACPI-table integer width (32 or 64)
6623was stored only with control method nodes, causing a fault when
6624non-control method code was executed during table loading.  The
6625solution implemented uses a global variable to indicate table
6626width across the entire ACPI subsystem.  Therefore, ACPI CA does
6627not support mixed integer widths across different ACPI tables
6628(DSDT, SSDT).
6629
6630Fixed a problem where NULL extended fields (X fields) in an ACPI
66312.0 ACPI FADT caused the table load to fail.  Although the
6632existing ACPI specification is a bit fuzzy on this topic, the new
6633behavior is to fall back on a ACPI 1.0 field if the corresponding
6634ACPI 2.0 X field is zero (even though the table revision indicates
6635a full ACPI 2.0 table.)  The ACPI specification will be updated to
6636clarify this issue.
6637
6638Fixed a problem with the SystemMemory operation region handler
6639where memory was always accessed byte-wise even if the AML-
6640specified access width was larger than a byte.  This caused
6641problems on systems with memory-mapped I/O.  Memory is now
6642accessed with the width specified.  On systems that do not support
6643non-aligned transfers, a check is made to guarantee proper address
6644alignment before proceeding in order to avoid an AML-caused
6645alignment fault within the kernel.
6646
6647
6648Fixed a problem with the ExtendedIrq resource where only one byte
6649of the 4-byte Irq field was extracted.
6650
6651Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
6652function was out of date and required a rewrite.
6653
6654Code and Data Size: Current core subsystem library sizes are shown
6655below.  These are the code and data sizes for the acpica.lib
6656produced by the Microsoft Visual C++ 6.0 compiler, and these
6657values do not include any ACPI driver or OSPM code.  The debug
6658version of the code includes the debug output trace mechanism and
6659has a larger code and data size.  Note that these values will vary
6660depending on the efficiency of the compiler and the compiler
6661options used during generation.
6662
6663  Previous Release
6664    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
6665    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
6666  Current Release:
6667    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
6668    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
6669
6670
66712) Linux
6672
6673PCI IRQ routing fixes (Dominik Brodowski)
6674
6675
66763) iASL Compiler Version X2042:
6677
6678Implemented an additional compile-time error check for a field
6679unit whose size + minimum access width would cause a run-time
6680access beyond the end-of-region.  Previously, only the field size
6681itself was checked.
6682
6683The Core subsystem and iASL compiler now share a common parse
6684object in preparation for compile-time evaluation of the type
66853/4/5 ASL operators.
6686
6687
6688----------------------------------------
6689Summary of changes for this release: 03_29_02
6690
66911) ACPI CA Core Subsystem Version 20020329:
6692
6693Implemented support for late evaluation of TermArg operands to
6694Buffer and Package objects.  This allows complex expressions to be
6695used in the declarations of these object types.
6696
6697Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
66981.0, if the field was larger than 32 bits, it was returned as a
6699buffer - otherwise it was returned as an integer.  In ACPI 2.0,
6700the field is returned as a buffer only if the field is larger than
670164 bits.  The TableRevision is now considered when making this
6702conversion to avoid incompatibility with existing ASL code.
6703
6704Implemented logical addressing for AcpiOsGetRootPointer.  This
6705allows an RSDP with either a logical or physical address.  With
6706this support, the host OS can now override all ACPI tables with
6707one logical RSDP.  Includes implementation of  "typed" pointer
6708support to allow a common data type for both physical and logical
6709pointers internally.  This required a change to the
6710AcpiOsGetRootPointer interface.
6711
6712Implemented the use of ACPI 2.0 Generic Address Structures for all
6713GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
6714mapped I/O for these ACPI features.
6715
6716Initialization now ignores not only non-required tables (All
6717tables other than the FADT, FACS, DSDT, and SSDTs), but also does
6718not validate the table headers of unrecognized tables.
6719
6720Fixed a problem where a notify handler could only be
6721installed/removed on an object of type Device.  All "notify"
6722
6723objects are now supported -- Devices, Processor, Power, and
6724Thermal.
6725
6726Removed most verbosity from the ACPI_DB_INFO debug level.  Only
6727critical information is returned when this debug level is enabled.
6728
6729Code and Data Size: Current core subsystem library sizes are shown
6730below.  These are the code and data sizes for the acpica.lib
6731produced by the Microsoft Visual C++ 6.0 compiler, and these
6732values do not include any ACPI driver or OSPM code.  The debug
6733version of the code includes the debug output trace mechanism and
6734has a larger code and data size.  Note that these values will vary
6735depending on the efficiency of the compiler and the compiler
6736options used during generation.
6737
6738  Previous Release
6739    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
6740    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
6741  Current Release:
6742    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
6743    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
6744
6745
67462) Linux:
6747
6748The processor driver (acpi_processor.c) now fully supports ACPI
67492.0-based processor performance control (e.g. Intel(R)
6750SpeedStep(TM) technology) Note that older laptops that only have
6751the Intel "applet" interface are not supported through this.  The
6752'limit' and 'performance' interface (/proc) are fully functional.
6753[Note that basic policy for controlling performance state
6754transitions will be included in the next version of ospmd.]  The
6755idle handler was modified to more aggressively use C2, and PIIX4
6756errata handling underwent a complete overhaul (big thanks to
6757Dominik Brodowski).
6758
6759Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
6760based devices in the ACPI namespace are now dynamically bound
6761(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
6762This allows, among other things, ACPI to resolve bus numbers for
6763subordinate PCI bridges.
6764
6765Enhanced PCI IRQ routing to get the proper bus number for _PRT
6766entries defined underneath PCI bridges.
6767
6768Added IBM 600E to bad bios list due to invalid _ADR value for
6769PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
6770
6771In the process of adding full MADT support (e.g. IOAPIC) for IA32
6772(acpi.c, mpparse.c) -- stay tuned.
6773
6774Added back visual differentiation between fixed-feature and
6775control-method buttons in dmesg.  Buttons are also subtyped (e.g.
6776button/power/PWRF) to simplify button identification.
6777
6778We no longer use -Wno-unused when compiling debug. Please ignore
6779any "_THIS_MODULE defined but not used" messages.
6780
6781Can now shut down the system using "magic sysrq" key.
6782
6783
67843) iASL Compiler version 2041:
6785
6786Fixed a problem where conversion errors for hex/octal/decimal
6787constants were not reported.
6788
6789Implemented a fix for the General Register template Address field.
6790This field was 8 bits when it should be 64.
6791
6792Fixed a problem where errors/warnings were no longer being emitted
6793within the listing output file.
6794
6795Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
6796exactly 4 characters, alphanumeric only.
6797
6798
6799
6800
6801----------------------------------------
6802Summary of changes for this release: 03_08_02
6803
6804
68051) ACPI CA Core Subsystem Version 20020308:
6806
6807Fixed a problem with AML Fields where the use of the "AccessAny"
6808keyword could cause an interpreter error due to attempting to read
6809or write beyond the end of the parent Operation Region.
6810
6811Fixed a problem in the SystemMemory Operation Region handler where
6812an attempt was made to map memory beyond the end of the region.
6813This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
6814errors on some Linux systems.
6815
6816Fixed a problem where the interpreter/namespace "search to root"
6817algorithm was not functioning for some object types.  Relaxed the
6818internal restriction on the search to allow upsearches for all
6819external object types as well as most internal types.
6820
6821
68222) Linux:
6823
6824We now use safe_halt() macro versus individual calls to sti | hlt.
6825
6826Writing to the processor limit interface should now work. "echo 1"
6827will increase the limit, 2 will decrease, and 0 will reset to the
6828
6829default.
6830
6831
68323) ASL compiler:
6833
6834Fixed segfault on Linux version.
6835
6836
6837----------------------------------------
6838Summary of changes for this release: 02_25_02
6839
68401) ACPI CA Core Subsystem:
6841
6842
6843Fixed a problem where the GPE bit masks were not initialized
6844properly, causing erratic GPE behavior.
6845
6846Implemented limited support for multiple calling conventions.  The
6847code can be generated with either the VPL (variable parameter
6848list, or "C") convention, or the FPL (fixed parameter list, or
6849"Pascal") convention.  The core subsystem is about 3.4% smaller
6850when generated with FPL.
6851
6852
68532) Linux
6854
6855Re-add some /proc/acpi/event functionality that was lost during
6856the rewrite
6857
6858Resolved issue with /proc events for fixed-feature buttons showing
6859up as the system device.
6860
6861Fixed checks on C2/C3 latencies to be inclusive of maximum values.
6862
6863Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
6864
6865Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
6866
6867Fixed limit interface & usage to fix bugs with passive cooling
6868hysterisis.
6869
6870Restructured PRT support.
6871
6872
6873----------------------------------------
6874Summary of changes for this label: 02_14_02
6875
6876
68771) ACPI CA Core Subsystem:
6878
6879Implemented support in AcpiLoadTable to allow loading of FACS and
6880FADT tables.
6881
6882Suport for the now-obsolete interim 0.71 64-bit ACPI tables has
6883been removed.  All 64-bit platforms should be migrated to the ACPI
68842.0 tables.  The actbl71.h header has been removed from the source
6885tree.
6886
6887All C macros defined within the subsystem have been prefixed with
6888"ACPI_" to avoid collision with other system include files.
6889
6890Removed the return value for the two AcpiOsPrint interfaces, since
6891it is never used and causes lint warnings for ignoring the return
6892value.
6893
6894Added error checking to all internal mutex acquire and release
6895calls.  Although a failure from one of these interfaces is
6896probably a fatal system error, these checks will cause the
6897immediate abort of the currently executing method or interface.
6898
6899Fixed a problem where the AcpiSetCurrentResources interface could
6900fault.  This was a side effect of the deployment of the new memory
6901allocation model.
6902
6903Fixed a couple of problems with the Global Lock support introduced
6904in the last major build.  The "common" (1.0/2.0) internal FACS was
6905being overwritten with the FACS signature and clobbering the
6906Global Lock pointer.  Also, the actual firmware FACS was being
6907unmapped after construction of the "common" FACS, preventing
6908access to the actual Global Lock field within it.  The "common"
6909internal FACS is no longer installed as an actual ACPI table; it
6910is used simply as a global.
6911
6912Code and Data Size: Current core subsystem library sizes are shown
6913below.  These are the code and data sizes for the acpica.lib
6914produced by the Microsoft Visual C++ 6.0 compiler, and these
6915values do not include any ACPI driver or OSPM code.  The debug
6916version of the code includes the debug output trace mechanism and
6917has a larger code and data size.  Note that these values will vary
6918depending on the efficiency of the compiler and the compiler
6919options used during generation.
6920
6921  Previous Release (02_07_01)
6922    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
6923    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
6924  Current Release:
6925    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
6926    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
6927
6928
69292) Linux
6930
6931Updated Linux-specific code for core macro and OSL interface
6932changes described above.
6933
6934Improved /proc/acpi/event. It now can be opened only once and has
6935proper poll functionality.
6936
6937Fixed and restructured power management (acpi_bus).
6938
6939Only create /proc "view by type" when devices of that class exist.
6940
6941Fixed "charging/discharging" bug (and others) in acpi_battery.
6942
6943Improved thermal zone code.
6944
6945
69463) ASL Compiler, version X2039:
6947
6948
6949Implemented the new compiler restriction on ASL String hex/octal
6950escapes to non-null, ASCII values.  An error results if an invalid
6951value is used.  (This will require an ACPI 2.0 specification
6952change.)
6953
6954AML object labels that are output to the optional C and ASM source
6955are now prefixed with both the ACPI table signature and table ID
6956to help guarantee uniqueness within a large BIOS project.
6957
6958
6959----------------------------------------
6960Summary of changes for this label: 02_01_02
6961
69621) ACPI CA Core Subsystem:
6963
6964ACPI 2.0 support is complete in the entire Core Subsystem and the
6965ASL compiler. All new ACPI 2.0 operators are implemented and all
6966other changes for ACPI 2.0 support are complete.  With
6967simultaneous code and data optimizations throughout the subsystem,
6968ACPI 2.0 support has been implemented with almost no additional
6969cost in terms of code and data size.
6970
6971Implemented a new mechanism for allocation of return buffers.  If
6972the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
6973be allocated on behalf of the caller.  Consolidated all return
6974buffer validation and allocation to a common procedure.  Return
6975buffers will be allocated via the primary OSL allocation interface
6976since it appears that a separate pool is not needed by most users.
6977If a separate pool is required for these buffers, the caller can
6978still use the original mechanism and pre-allocate the buffer(s).
6979
6980Implemented support for string operands within the DerefOf
6981operator.
6982
6983Restructured the Hardware and Event managers to be table driven,
6984simplifying the source code and reducing the amount of generated
6985code.
6986
6987Split the common read/write low-level ACPI register bitfield
6988procedure into a separate read and write, simplifying the code
6989considerably.
6990
6991Obsoleted the AcpiOsCallocate OSL interface.  This interface was
6992used only a handful of times and didn't have enough critical mass
6993for a separate interface.  Replaced with a common calloc procedure
6994in the core.
6995
6996Fixed a reported problem with the GPE number mapping mechanism
6997that allows GPE1 numbers to be non-contiguous with GPE0.
6998Reorganized the GPE information and shrunk a large array that was
6999originally large enough to hold info for all possible GPEs (256)
7000to simply large enough to hold all GPEs up to the largest GPE
7001number on the machine.
7002
7003Fixed a reported problem with resource structure alignment on 64-
7004bit platforms.
7005
7006Changed the AcpiEnableEvent and AcpiDisableEvent external
7007interfaces to not require any flags for the common case of
7008enabling/disabling a GPE.
7009
7010Implemented support to allow a "Notify" on a Processor object.
7011
7012Most TBDs in comments within the source code have been resolved
7013and eliminated.
7014
7015
7016Fixed a problem in the interpreter where a standalone parent
7017prefix (^) was not handled correctly in the interpreter and
7018debugger.
7019
7020Removed obsolete and unnecessary GPE save/restore code.
7021
7022Implemented Field support in the ASL Load operator.  This allows a
7023table to be loaded from a named field, in addition to loading a
7024table directly from an Operation Region.
7025
7026Implemented timeout and handle support in the external Global Lock
7027interfaces.
7028
7029Fixed a problem in the AcpiDump utility where pathnames were no
7030longer being generated correctly during the dump of named objects.
7031
7032Modified the AML debugger to give a full display of if/while
7033predicates instead of just one AML opcode at a time.  (The
7034predicate can have several nested ASL statements.)  The old method
7035was confusing during single stepping.
7036
7037Code and Data Size: Current core subsystem library sizes are shown
7038below. These are the code and data sizes for the acpica.lib
7039produced by the Microsoft Visual C++ 6.0 compiler, and these
7040values do not include any ACPI driver or OSPM code.  The debug
7041version of the code includes the debug output trace mechanism and
7042has a larger code and data size.  Note that these values will vary
7043depending on the efficiency of the compiler and the compiler
7044options used during generation.
7045
7046  Previous Release (12_18_01)
7047     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
7048     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
7049   Current Release:
7050     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
7051     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
7052
70532) Linux
7054
7055 Implemented fix for PIIX reverse throttling errata (Processor
7056driver)
7057
7058Added new Limit interface (Processor and Thermal drivers)
7059
7060New thermal policy (Thermal driver)
7061
7062Many updates to /proc
7063
7064Battery "low" event support (Battery driver)
7065
7066Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
7067
7068IA32 - IA64 initialization unification, no longer experimental
7069
7070Menuconfig options redesigned
7071
70723) ASL Compiler, version X2037:
7073
7074Implemented several new output features to simplify integration of
7075AML code into  firmware: 1) Output the AML in C source code with
7076labels for each named ASL object.  The    original ASL source code
7077is interleaved as C comments. 2) Output the AML in ASM source code
7078with labels and interleaved ASL    source. 3) Output the AML in
7079raw hex table form, in either C or ASM.
7080
7081Implemented support for optional string parameters to the
7082LoadTable operator.
7083
7084Completed support for embedded escape sequences within string
7085literals.  The compiler now supports all single character escapes
7086as well as the Octal and Hex escapes.  Note: the insertion of a
7087null byte into a string literal (via the hex/octal escape) causes
7088the string to be immediately terminated.  A warning is issued.
7089
7090Fixed a problem where incorrect AML was generated for the case
7091where an ASL namepath consists of a single parent prefix (
7092
7093) with no trailing name segments.
7094
7095The compiler has been successfully generated with a 64-bit C
7096compiler.
7097
7098
7099
7100
7101----------------------------------------
7102Summary of changes for this label: 12_18_01
7103
71041) Linux
7105
7106Enhanced blacklist with reason and severity fields. Any table's
7107signature may now be used to identify a blacklisted system.
7108
7109Call _PIC control method to inform the firmware which interrupt
7110model the OS is using. Turn on any disabled link devices.
7111
7112Cleaned up busmgr /proc error handling (Andreas Dilger)
7113
7114 2) ACPI CA Core Subsystem:
7115
7116Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
7117while loop)
7118
7119Completed implementation of the ACPI 2.0 "Continue",
7120"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
7121operators.  All new ACPI 2.0 operators are now implemented in both
7122the ASL compiler and the AML interpreter.  The only remaining ACPI
71232.0 task is support for the String data type in the DerefOf
7124operator.  Fixed a problem with AcquireMutex where the status code
7125was lost if the caller had to actually wait for the mutex.
7126
7127Increased the maximum ASL Field size from 64K bits to 4G bits.
7128
7129Completed implementation of the external Global Lock interfaces --
7130AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
7131Handler parameters were added.
7132
7133Completed another pass at removing warnings and issues when
7134compiling with 64-bit compilers.  The code now compiles cleanly
7135with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
7136add and subtract (diff) macros have changed considerably.
7137
7138
7139Created and deployed a new ACPI_SIZE type that is 64-bits wide on
714064-bit platforms, 32-bits on all others.  This type is used
7141wherever memory allocation and/or the C sizeof() operator is used,
7142and affects the OSL memory allocation interfaces AcpiOsAllocate
7143and AcpiOsCallocate.
7144
7145Implemented sticky user breakpoints in the AML debugger.
7146
7147Code and Data Size: Current core subsystem library sizes are shown
7148below. These are the code and data sizes for the acpica.lib
7149produced by the Microsoft Visual C++ 6.0 compiler, and these
7150values do not include any ACPI driver or OSPM code.  The debug
7151version of the code includes the debug output trace mechanism and
7152has a larger code and data size. Note that these values will vary
7153depending on the efficiency of the compiler and the compiler
7154options used during generation.
7155
7156  Previous Release (12_05_01)
7157     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
7158     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
7159   Current Release:
7160     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
7161     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
7162
7163 3) ASL Compiler, version X2034:
7164
7165Now checks for (and generates an error if detected) the use of a
7166Break or Continue statement without an enclosing While statement.
7167
7168
7169Successfully generated the compiler with the Intel 64-bit C
7170compiler.
7171
7172 ----------------------------------------
7173Summary of changes for this label: 12_05_01
7174
7175 1) ACPI CA Core Subsystem:
7176
7177The ACPI 2.0 CopyObject operator is fully implemented.  This
7178operator creates a new copy of an object (and is also used to
7179bypass the "implicit conversion" mechanism of the Store operator.)
7180
7181The ACPI 2.0 semantics for the SizeOf operator are fully
7182implemented.  The change is that performing a SizeOf on a
7183reference object causes an automatic dereference of the object to
7184tha actual value before the size is evaluated. This behavior was
7185undefined in ACPI 1.0.
7186
7187The ACPI 2.0 semantics for the Extended IRQ resource descriptor
7188have been implemented.  The interrupt polarity and mode are now
7189independently set.
7190
7191Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
7192appearing in Package objects were not properly converted to
7193integers when the internal Package was converted to an external
7194object (via the AcpiEvaluateObject interface.)
7195
7196Fixed a problem with the namespace object deletion mechanism for
7197objects created by control methods.  There were two parts to this
7198problem: 1) Objects created during the initialization phase method
7199parse were not being deleted, and 2) The object owner ID mechanism
7200to track objects was broken.
7201
7202Fixed a problem where the use of the ASL Scope operator within a
7203control method would result in an invalid opcode exception.
7204
7205Fixed a problem introduced in the previous label where the buffer
7206length required for the _PRT structure was not being returned
7207correctly.
7208
7209Code and Data Size: Current core subsystem library sizes are shown
7210below. These are the code and data sizes for the acpica.lib
7211produced by the Microsoft Visual C++ 6.0 compiler, and these
7212values do not include any ACPI driver or OSPM code.  The debug
7213version of the code includes the debug output trace mechanism and
7214has a larger code and data size.  Note that these values will vary
7215depending on the efficiency of the compiler and the compiler
7216options used during generation.
7217
7218  Previous Release (11_20_01)
7219     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
7220     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
7221
7222  Current Release:
7223     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
7224     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
7225
7226 2) Linux:
7227
7228Updated all files to apply cleanly against 2.4.16.
7229
7230Added basic PCI Interrupt Routing Table (PRT) support for IA32
7231(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
7232version supports both static and dyanmic PRT entries, but dynamic
7233entries are treated as if they were static (not yet
7234reconfigurable).  Architecture- specific code to use this data is
7235absent on IA32 but should be available shortly.
7236
7237Changed the initialization sequence to start the ACPI interpreter
7238(acpi_init) prior to initialization of the PCI driver (pci_init)
7239in init/main.c.  This ordering is required to support PRT and
7240facilitate other (future) enhancement.  A side effect is that the
7241ACPI bus driver and certain device drivers can no longer be loaded
7242as modules.
7243
7244Modified the 'make menuconfig' options to allow PCI Interrupt
7245Routing support to be included without the ACPI Bus and other
7246device drivers.
7247
7248 3) ASL Compiler, version X2033:
7249
7250Fixed some issues with the use of the new CopyObject and
7251DataTableRegion operators.  Both are fully functional.
7252
7253 ----------------------------------------
7254Summary of changes for this label: 11_20_01
7255
7256 20 November 2001.  Summary of changes for this release.
7257
7258 1) ACPI CA Core Subsystem:
7259
7260Updated Index support to match ACPI 2.0 semantics.  Storing a
7261Integer, String, or Buffer to an Index of a Buffer will store only
7262the least-significant byte of the source to the Indexed buffer
7263byte.  Multiple writes are not performed.
7264
7265Fixed a problem where the access type used in an AccessAs ASL
7266operator was not recorded correctly into the field object.
7267
7268Fixed a problem where ASL Event objects were created in a
7269signalled state. Events are now created in an unsignalled state.
7270
7271The internal object cache is now purged after table loading and
7272initialization to reduce the use of dynamic kernel memory -- on
7273the assumption that object use is greatest during the parse phase
7274of the entire table (versus the run-time use of individual control
7275methods.)
7276
7277ACPI 2.0 variable-length packages are now fully operational.
7278
7279Code and Data Size: Code and Data optimizations have permitted new
7280feature development with an actual reduction in the library size.
7281Current core subsystem library sizes are shown below.  These are
7282the code and data sizes for the acpica.lib produced by the
7283Microsoft Visual C++ 6.0 compiler, and these values do not include
7284any ACPI driver or OSPM code.  The debug version of the code
7285includes the debug output trace mechanism and has a larger code
7286and data size.  Note that these values will vary depending on the
7287efficiency of the compiler and the compiler options used during
7288generation.
7289
7290  Previous Release (11_09_01):
7291     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
7292     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
7293
7294  Current Release:
7295     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
7296     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
7297
7298 2) Linux:
7299
7300Enhanced the ACPI boot-time initialization code to allow the use
7301of Local APIC tables for processor enumeration on IA-32, and to
7302pave the way for a fully MPS-free boot (on SMP systems) in the
7303near future.  This functionality replaces
7304arch/i386/kernel/acpitables.c, which was introduced in an earlier
73052.4.15-preX release.  To enable this feature you must add
7306"acpi_boot=on" to the kernel command line -- see the help entry
7307for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
7308the works...
7309
7310Restructured the configuration options to allow boot-time table
7311parsing support without inclusion of the ACPI Interpreter (and
7312other) code.
7313
7314NOTE: This release does not include fixes for the reported events,
7315power-down, and thermal passive cooling issues (coming soon).
7316
7317 3) ASL Compiler:
7318
7319Added additional typechecking for Fields within restricted access
7320Operation Regions.  All fields within EC and CMOS regions must be
7321declared with ByteAcc. All fields withing SMBus regions must be
7322declared with the BufferAcc access type.
7323
7324Fixed a problem where the listing file output of control methods
7325no longer interleaved the actual AML code with the ASL source
7326code.
7327
7328
7329
7330
7331----------------------------------------
7332Summary of changes for this label: 11_09_01
7333
73341) ACPI CA Core Subsystem:
7335
7336Implemented ACPI 2.0-defined support for writes to fields with a
7337Buffer, String, or Integer source operand that is smaller than the
7338target field. In these cases, the source operand is zero-extended
7339to fill the target field.
7340
7341Fixed a problem where a Field starting bit offset (within the
7342parent operation region) was calculated incorrectly if the
7343
7344alignment of the field differed from the access width.  This
7345affected CreateWordField, CreateDwordField, CreateQwordField, and
7346possibly other fields that use the "AccessAny" keyword.
7347
7348Fixed a problem introduced in the 11_02_01 release where indirect
7349stores through method arguments did not operate correctly.
7350
73512) Linux:
7352
7353Implemented boot-time ACPI table parsing support
7354(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
7355facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
7356legacy BIOS interfaces (e.g. MPS) for the configuration of system
7357processors, memory, and interrupts during setup_arch().  Note that
7358this patch does not include the required architecture-specific
7359changes required to apply this information -- subsequent patches
7360will be posted for both IA32 and IA64 to achieve this.
7361
7362Added low-level sleep support for IA32 platforms, courtesy of Pat
7363Mochel. This allows IA32 systems to transition to/from various
7364sleeping states (e.g. S1, S3), although the lack of a centralized
7365driver model and power-manageable drivers will prevent its
7366(successful) use on most systems.
7367
7368Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
7369submenu, unified IA32 and IA64 options, added new "Boot using ACPI
7370tables" option, etc.
7371
7372Increased the default timeout for the EC driver from 1ms to 10ms
7373(1000 cycles of 10us) to try to address AE_TIME errors during EC
7374transactions.
7375
7376 ----------------------------------------
7377Summary of changes for this label: 11_02_01
7378
73791) ACPI CA Core Subsystem:
7380
7381ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
7382(QWordAcc keyword). All ACPI 2.0 64-bit support is now
7383implemented.
7384
7385OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
7386changes to support ACPI 2.0 Qword field access.  Read/Write
7387PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
7388accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
7389the value parameter for the address space handler interface is now
7390an ACPI_INTEGER.  OSL implementations of these interfaces must now
7391handle the case where the Width parameter is 64.
7392
7393Index Fields: Fixed a problem where unaligned bit assembly and
7394disassembly for IndexFields was not supported correctly.
7395
7396Index and Bank Fields:  Nested Index and Bank Fields are now
7397supported. During field access, a check is performed to ensure
7398that the value written to an Index or Bank register is not out of
7399the range of the register.  The Index (or Bank) register is
7400written before each access to the field data. Future support will
7401include allowing individual IndexFields to be wider than the
7402DataRegister width.
7403
7404Fields: Fixed a problem where the AML interpreter was incorrectly
7405attempting to write beyond the end of a Field/OpRegion.  This was
7406a boundary case that occurred when a DWORD field was written to a
7407BYTE access OpRegion, forcing multiple writes and causing the
7408interpreter to write one datum too many.
7409
7410Fields: Fixed a problem with Field/OpRegion access where the
7411starting bit address of a field was incorrectly calculated if the
7412current access type was wider than a byte (WordAcc, DwordAcc, or
7413QwordAcc).
7414
7415Fields: Fixed a problem where forward references to individual
7416FieldUnits (individual Field names within a Field definition) were
7417not resolved during the AML table load.
7418
7419Fields: Fixed a problem where forward references from a Field
7420definition to the parent Operation Region definition were not
7421resolved during the AML table load.
7422
7423Fields: Duplicate FieldUnit names within a scope are now detected
7424during AML table load.
7425
7426Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
7427returned an incorrect name for the root node.
7428
7429Code and Data Size: Code and Data optimizations have permitted new
7430feature development with an actual reduction in the library size.
7431Current core subsystem library sizes are shown below.  These are
7432the code and data sizes for the acpica.lib produced by the
7433Microsoft Visual C++ 6.0 compiler, and these values do not include
7434any ACPI driver or OSPM code.  The debug version of the code
7435includes the debug output trace mechanism and has a larger code
7436and data size.  Note that these values will vary depending on the
7437efficiency of the compiler and the compiler options used during
7438generation.
7439
7440  Previous Release (10_18_01):
7441     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
7442     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
7443
7444  Current Release:
7445     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
7446     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
7447
7448 2) Linux:
7449
7450Improved /proc processor output (Pavel Machek) Re-added
7451MODULE_LICENSE("GPL") to all modules.
7452
7453 3) ASL Compiler version X2030:
7454
7455Duplicate FieldUnit names within a scope are now detected and
7456flagged as errors.
7457
7458 4) Documentation:
7459
7460Programmer Reference updated to reflect OSL and address space
7461handler interface changes described above.
7462
7463----------------------------------------
7464Summary of changes for this label: 10_18_01
7465
7466ACPI CA Core Subsystem:
7467
7468Fixed a problem with the internal object reference count mechanism
7469that occasionally caused premature object deletion. This resolves
7470all of the outstanding problem reports where an object is deleted
7471in the middle of an interpreter evaluation.  Although this problem
7472only showed up in rather obscure cases, the solution to the
7473problem involved an adjustment of all reference counts involving
7474objects attached to namespace nodes.
7475
7476Fixed a problem with Field support in the interpreter where
7477writing to an aligned field whose length is an exact multiple (2
7478or greater) of the field access granularity would cause an attempt
7479to write beyond the end of the field.
7480
7481The top level AML opcode execution functions within the
7482interpreter have been renamed with a more meaningful and
7483consistent naming convention.  The modules exmonad.c and
7484exdyadic.c were eliminated.  New modules are exoparg1.c,
7485exoparg2.c, exoparg3.c, and exoparg6.c.
7486
7487Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
7488
7489Fixed a problem where the AML debugger was causing some internal
7490objects to not be deleted during subsystem termination.
7491
7492Fixed a problem with the external AcpiEvaluateObject interface
7493where the subsystem would fault if the named object to be
7494evaluated refered to a constant such as Zero, Ones, etc.
7495
7496Fixed a problem with IndexFields and BankFields where the
7497subsystem would fault if the index, data, or bank registers were
7498not defined in the same scope as the field itself.
7499
7500Added printf format string checking for compilers that support
7501this feature.  Corrected more than 50 instances of issues with
7502format specifiers within invocations of ACPI_DEBUG_PRINT
7503throughout the core subsystem code.
7504
7505The ASL "Revision" operator now returns the ACPI support level
7506implemented in the core - the value "2" since the ACPI 2.0 support
7507is more than 50% implemented.
7508
7509Enhanced the output of the AML debugger "dump namespace" command
7510to output in a more human-readable form.
7511
7512Current core subsystem library code sizes are shown below.  These
7513
7514are the code and data sizes for the acpica.lib produced by the
7515Microsoft Visual C++ 6.0 compiler, and these values do not include
7516any ACPI driver or OSPM code.  The debug version of the code
7517includes the full debug trace mechanism -- leading to a much
7518
7519larger code and data size.  Note that these values will vary
7520depending on the efficiency of the compiler and the compiler
7521options used during generation.
7522
7523     Previous Label (09_20_01):
7524     Non-Debug Version:    65K Code,     5K Data,     70K Total
7525     Debug Version:       138K Code,    58K Data,    196K Total
7526
7527     This Label:
7528
7529     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
7530     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
7531
7532Linux:
7533
7534Implemented a "Bad BIOS Blacklist" to track machines that have
7535known ASL/AML problems.
7536
7537Enhanced the /proc interface for the thermal zone driver and added
7538support for _HOT (the critical suspend trip point).  The 'info'
7539file now includes threshold/policy information, and allows setting
7540of _SCP (cooling preference) and _TZP (polling frequency) values
7541to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
7542frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
7543preference to the passive/quiet mode (if supported by the ASL).
7544
7545Implemented a workaround for a gcc bug that resuted in an OOPs
7546when loading the control method battery driver.
7547
7548 ----------------------------------------
7549Summary of changes for this label: 09_20_01
7550
7551 ACPI CA Core Subsystem:
7552
7553The AcpiEnableEvent and AcpiDisableEvent interfaces have been
7554modified to allow individual GPE levels to be flagged as wake-
7555enabled (i.e., these GPEs are to remain enabled when the platform
7556sleeps.)
7557
7558The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
7559support wake-enabled GPEs.  This means that upon entering the
7560sleep state, all GPEs that are not wake-enabled are disabled.
7561When leaving the sleep state, these GPEs are reenabled.
7562
7563A local double-precision divide/modulo module has been added to
7564enhance portability to OS kernels where a 64-bit math library is
7565not available.  The new module is "utmath.c".
7566
7567Several optimizations have been made to reduce the use of CPU
7568stack.  Originally over 2K, the maximum stack usage is now below
75692K at 1860  bytes (1.82k)
7570
7571Fixed a problem with the AcpiGetFirmwareTable interface where the
7572root table pointer was not mapped into a logical address properly.
7573
7574Fixed a problem where a NULL pointer was being dereferenced in the
7575interpreter code for the ASL Notify operator.
7576
7577Fixed a problem where the use of the ASL Revision operator
7578returned an error. This operator now returns the current version
7579of the ACPI CA core subsystem.
7580
7581Fixed a problem where objects passed as control method parameters
7582to AcpiEvaluateObject were always deleted at method termination.
7583However, these objects may end up being stored into the namespace
7584by the called method.  The object reference count mechanism was
7585applied to these objects instead of a force delete.
7586
7587Fixed a problem where static strings or buffers (contained in the
7588AML code) that are declared as package elements within the ASL
7589code could cause a fault because the interpreter would attempt to
7590delete them.  These objects are now marked with the "static
7591object" flag to prevent any attempt to delete them.
7592
7593Implemented an interpreter optimization to use operands directly
7594from the state object instead of extracting the operands to local
7595variables.  This reduces stack use and code size, and improves
7596performance.
7597
7598The module exxface.c was eliminated as it was an unnecessary extra
7599layer of code.
7600
7601Current core subsystem library code sizes are shown below.  These
7602are the code and data sizes for the acpica.lib produced by the
7603Microsoft Visual C++ 6.0 compiler, and these values do not include
7604any ACPI driver or OSPM code.  The debug version of the code
7605includes the full debug trace mechanism -- leading to a much
7606larger code and data size.  Note that these values will vary
7607depending on the efficiency of the compiler and the compiler
7608options used during generation.
7609
7610  Non-Debug Version:  65K Code,   5K Data,   70K Total
7611(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
7612Total  (Previously 195K)
7613
7614Linux:
7615
7616Support for ACPI 2.0 64-bit integers has been added.   All ACPI
7617Integer objects are now 64 bits wide
7618
7619All Acpi data types and structures are now in lower case.  Only
7620Acpi macros are upper case for differentiation.
7621
7622 Documentation:
7623
7624Changes to the external interfaces as described above.
7625
7626 ----------------------------------------
7627Summary of changes for this label: 08_31_01
7628
7629 ACPI CA Core Subsystem:
7630
7631A bug with interpreter implementation of the ASL Divide operator
7632was found and fixed.  The implicit function return value (not the
7633explicit store operands) was returning the remainder instead of
7634the quotient.  This was a longstanding bug and it fixes several
7635known outstanding issues on various platforms.
7636
7637The ACPI_DEBUG_PRINT and function trace entry/exit macros have
7638been further optimized for size.  There are 700 invocations of the
7639DEBUG_PRINT macro alone, so each optimization reduces the size of
7640the debug version of the subsystem significantly.
7641
7642A stack trace mechanism has been implemented.  The maximum stack
7643usage is about 2K on 32-bit platforms.  The debugger command "stat
7644stack" will display the current maximum stack usage.
7645
7646All public symbols and global variables within the subsystem are
7647now prefixed with the string "Acpi".  This keeps all of the
7648symbols grouped together in a kernel map, and avoids conflicts
7649with other kernel subsystems.
7650
7651Most of the internal fixed lookup tables have been moved into the
7652code segment via the const operator.
7653
7654Several enhancements have been made to the interpreter to both
7655reduce the code size and improve performance.
7656
7657Current core subsystem library code sizes are shown below.  These
7658are the code and data sizes for the acpica.lib produced by the
7659Microsoft Visual C++ 6.0 compiler, and these values do not include
7660any ACPI driver or OSPM code.  The debug version of the code
7661includes the full debug trace mechanism which contains over 700
7662invocations of the DEBUG_PRINT macro, 500 function entry macro
7663invocations, and over 900 function exit macro invocations --
7664leading to a much larger code and data size.  Note that these
7665values will vary depending on the efficiency of the compiler and
7666the compiler options used during generation.
7667
7668        Non-Debug Version:  64K Code,   5K Data,   69K Total
7669Debug Version:     137K Code,  58K Data,  195K Total
7670
7671 Linux:
7672
7673Implemented wbinvd() macro, pending a kernel-wide definition.
7674
7675Fixed /proc/acpi/event to handle poll() and short reads.
7676
7677 ASL Compiler, version X2026:
7678
7679Fixed a problem introduced in the previous label where the AML
7680
7681code emitted for package objects produced packages with zero
7682length.
7683
7684 ----------------------------------------
7685Summary of changes for this label: 08_16_01
7686
7687ACPI CA Core Subsystem:
7688
7689The following ACPI 2.0 ASL operators have been implemented in the
7690AML interpreter (These are already supported by the Intel ASL
7691compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
7692ToBuffer.  Support for 64-bit AML constants is implemented in the
7693AML parser, debugger, and disassembler.
7694
7695The internal memory tracking mechanism (leak detection code) has
7696been upgraded to reduce the memory overhead (a separate tracking
7697block is no longer allocated for each memory allocation), and now
7698supports all of the internal object caches.
7699
7700The data structures and code for the internal object caches have
7701been coelesced and optimized so that there is a single cache and
7702memory list data structure and a single group of functions that
7703implement generic cache management.  This has reduced the code
7704size in both the debug and release versions of the subsystem.
7705
7706The DEBUG_PRINT macro(s) have been optimized for size and replaced
7707by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
7708different, because it generates a single call to an internal
7709function.  This results in a savings of about 90 bytes per
7710invocation, resulting in an overall code and data savings of about
771116% in the debug version of the subsystem.
7712
7713 Linux:
7714
7715Fixed C3 disk corruption problems and re-enabled C3 on supporting
7716machines.
7717
7718Integrated low-level sleep code by Patrick Mochel.
7719
7720Further tweaked source code Linuxization.
7721
7722Other minor fixes.
7723
7724 ASL Compiler:
7725
7726Support for ACPI 2.0 variable length packages is fixed/completed.
7727
7728Fixed a problem where the optional length parameter for the ACPI
77292.0 ToString operator.
7730
7731Fixed multiple extraneous error messages when a syntax error is
7732detected within the declaration line of a control method.
7733
7734 ----------------------------------------
7735Summary of changes for this label: 07_17_01
7736
7737ACPI CA Core Subsystem:
7738
7739Added a new interface named AcpiGetFirmwareTable to obtain any
7740ACPI table via the ACPI signature.  The interface can be called at
7741any time during kernel initialization, even before the kernel
7742virtual memory manager is initialized and paging is enabled.  This
7743allows kernel subsystems to obtain ACPI tables very early, even
7744before the ACPI CA subsystem is initialized.
7745
7746Fixed a problem where Fields defined with the AnyAcc attribute
7747could be resolved to the incorrect address under the following
7748conditions: 1) the field width is larger than 8 bits and 2) the
7749parent operation region is not defined on a DWORD boundary.
7750
7751Fixed a problem where the interpreter is not being locked during
7752namespace initialization (during execution of the _INI control
7753methods), causing an error when an attempt is made to release it
7754later.
7755
7756ACPI 2.0 support in the AML Interpreter has begun and will be
7757ongoing throughout the rest of this year.  In this label, The Mod
7758operator is implemented.
7759
7760Added a new data type to contain full PCI addresses named
7761ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
7762and Function values.
7763
7764 Linux:
7765
7766Enhanced the Linux version of the source code to change most
7767capitalized ACPI type names to lowercase. For example, all
7768instances of ACPI_STATUS are changed to acpi_status.  This will
7769result in a large diff, but the change is strictly cosmetic and
7770aligns the CA code closer to the Linux coding standard.
7771
7772OSL Interfaces:
7773
7774The interfaces to the PCI configuration space have been changed to
7775add the PCI Segment number and to split the single 32-bit combined
7776DeviceFunction field into two 16-bit fields.  This was
7777accomplished by moving the four values that define an address in
7778PCI configuration space (segment, bus, device, and function) to
7779the new ACPI_PCI_ID structure.
7780
7781The changes to the PCI configuration space interfaces led to a
7782reexamination of the complete set of address space access
7783interfaces for PCI, I/O, and Memory.  The previously existing 18
7784interfaces have proven difficult to maintain (any small change
7785must be propagated across at least 6 interfaces) and do not easily
7786allow for future expansion to 64 bits if necessary.  Also, on some
7787systems, it would not be appropriate to demultiplex the access
7788width (8, 16, 32,or 64) before calling the OSL if the
7789corresponding native OS interfaces contain a similar access width
7790parameter.  For these reasons, the 18 address space interfaces
7791have been replaced by these 6 new ones:
7792
7793AcpiOsReadPciConfiguration
7794AcpiOsWritePciConfiguration
7795AcpiOsReadMemory
7796AcpiOsWriteMemory
7797AcpiOsReadPort
7798AcpiOsWritePort
7799
7800Added a new interface named AcpiOsGetRootPointer to allow the OSL
7801to perform the platform and/or OS-specific actions necessary to
7802obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
7803interface will simply call down to the CA core to perform the low-
7804memory search for the table.  On IA-64, the RSDP is obtained from
7805EFI.  Migrating this interface to the OSL allows the CA core to
7806
7807remain OS and platform independent.
7808
7809Added a new interface named AcpiOsSignal to provide a generic
7810"function code and pointer" interface for various miscellaneous
7811signals and notifications that must be made to the host OS.   The
7812first such signals are intended to support the ASL Fatal and
7813Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
7814interface has been obsoleted.
7815
7816The definition of the AcpiFormatException interface has been
7817changed to simplify its use.  The caller no longer must supply a
7818buffer to the call; A pointer to a const string is now returned
7819directly.  This allows the call to be easily used in printf
7820statements, etc. since the caller does not have to manage a local
7821buffer.
7822
7823
7824 ASL Compiler, Version X2025:
7825
7826The ACPI 2.0 Switch/Case/Default operators have been implemented
7827and are fully functional.  They will work with all ACPI 1.0
7828interpreters, since the operators are simply translated to If/Else
7829pairs.
7830
7831The ACPI 2.0 ElseIf operator is implemented and will also work
7832with 1.0 interpreters, for the same reason.
7833
7834Implemented support for ACPI 2.0 variable-length packages.  These
7835packages have a separate opcode, and their size is determined by
7836the interpreter at run-time.
7837
7838Documentation The ACPI CA Programmer Reference has been updated to
7839reflect the new interfaces and changes to existing interfaces.
7840
7841 ------------------------------------------
7842Summary of changes for this label: 06_15_01
7843
7844 ACPI CA Core Subsystem:
7845
7846Fixed a problem where a DWORD-accessed field within a Buffer
7847object would get its byte address inadvertently rounded down to
7848the nearest DWORD.  Buffers are always Byte-accessible.
7849
7850 ASL Compiler, version X2024:
7851
7852Fixed a problem where the Switch() operator would either fault or
7853hang the compiler.  Note however, that the AML code for this ACPI
78542.0 operator is not yet implemented.
7855
7856Compiler uses the new AcpiOsGetTimer interface to obtain compile
7857timings.
7858
7859Implementation of the CreateField operator automatically converts
7860a reference to a named field within a resource descriptor from a
7861byte offset to a bit offset if required.
7862
7863Added some missing named fields from the resource descriptor
7864support. These are the names that are automatically created by the
7865compiler to reference fields within a descriptor.  They are only
7866valid at compile time and are not passed through to the AML
7867interpreter.
7868
7869Resource descriptor named fields are now typed as Integers and
7870subject to compile-time typechecking when used in expressions.
7871
7872 ------------------------------------------
7873Summary of changes for this label: 05_18_01
7874
7875 ACPI CA Core Subsystem:
7876
7877Fixed a couple of problems in the Field support code where bits
7878from adjacent fields could be returned along with the proper field
7879bits. Restructured the field support code to improve performance,
7880readability and maintainability.
7881
7882New DEBUG_PRINTP macro automatically inserts the procedure name
7883into the output, saving hundreds of copies of procedure name
7884strings within the source, shrinking the memory footprint of the
7885debug version of the core subsystem.
7886
7887 Source Code Structure:
7888
7889The source code directory tree was restructured to reflect the
7890current organization of the component architecture.  Some files
7891and directories have been moved and/or renamed.
7892
7893 Linux:
7894
7895Fixed leaking kacpidpc processes.
7896
7897Fixed queueing event data even when /proc/acpi/event is not
7898opened.
7899
7900 ASL Compiler, version X2020:
7901
7902Memory allocation performance enhancement - over 24X compile time
7903improvement on large ASL files.  Parse nodes and namestring
7904buffers are now allocated from a large internal compiler buffer.
7905
7906The temporary .SRC file is deleted unless the "-s" option is
7907specified
7908
7909The "-d" debug output option now sends all output to the .DBG file
7910instead of the console.
7911
7912"External" second parameter is now optional
7913
7914"ElseIf" syntax now properly allows the predicate
7915
7916Last operand to "Load" now recognized as a Target operand
7917
7918Debug object can now be used anywhere as a normal object.
7919
7920ResourceTemplate now returns an object of type BUFFER
7921
7922EISAID now returns an object of type INTEGER
7923
7924"Index" now works with a STRING operand
7925
7926"LoadTable" now accepts optional parameters
7927
7928"ToString" length parameter is now optional
7929
7930"Interrupt (ResourceType," parse error fixed.
7931
7932"Register" with a user-defined region space parse error fixed
7933
7934Escaped backslash at the end of a string ("\\") scan/parse error
7935fixed
7936
7937"Revision" is now an object of type INTEGER.
7938
7939
7940
7941------------------------------------------
7942Summary of changes for this label: 05_02_01
7943
7944Linux:
7945
7946/proc/acpi/event now blocks properly.
7947
7948Removed /proc/sys/acpi. You can still dump your DSDT from
7949/proc/acpi/dsdt.
7950
7951 ACPI CA Core Subsystem:
7952
7953Fixed a problem introduced in the previous label where some of the
7954"small" resource descriptor types were not recognized.
7955
7956Improved error messages for the case where an ASL Field is outside
7957the range of the parent operation region.
7958
7959 ASL Compiler, version X2018:
7960
7961
7962Added error detection for ASL Fields that extend beyond the length
7963of the parent operation region (only if the length of the region
7964is known at compile time.)  This includes fields that have a
7965minimum access width that is smaller than the parent region, and
7966individual field units that are partially or entirely beyond the
7967extent of the parent.
7968
7969
7970
7971------------------------------------------
7972Summary of changes for this label: 04_27_01
7973
7974 ACPI CA Core Subsystem:
7975
7976Fixed a problem where the namespace mutex could be released at the
7977wrong time during execution of AcpiRemoveAddressSpaceHandler.
7978
7979Added optional thread ID output for debug traces, to simplify
7980debugging of multiple threads.  Added context switch notification
7981when the debug code realizes that a different thread is now
7982executing ACPI code.
7983
7984Some additional external data types have been prefixed with the
7985string "ACPI_" for consistency.  This may effect existing code.
7986The data types affected are the external callback typedefs - e.g.,
7987
7988WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
7989
7990 Linux:
7991
7992Fixed an issue with the OSL semaphore implementation where a
7993thread was waking up with an error from receiving a SIGCHLD
7994signal.
7995
7996Linux version of ACPI CA now uses the system C library for string
7997manipulation routines instead of a local implementation.
7998
7999Cleaned up comments and removed TBDs.
8000
8001 ASL Compiler, version X2017:
8002
8003Enhanced error detection and reporting for all file I/O
8004operations.
8005
8006 Documentation:
8007
8008Programmer Reference updated to version 1.06.
8009
8010
8011
8012------------------------------------------
8013Summary of changes for this label: 04_13_01
8014
8015 ACPI CA Core Subsystem:
8016
8017Restructured support for BufferFields and RegionFields.
8018BankFields support is now fully operational.  All known 32-bit
8019limitations on field sizes have been removed.  Both BufferFields
8020and (Operation) RegionFields are now supported by the same field
8021management code.
8022
8023Resource support now supports QWORD address and IO resources. The
802416/32/64 bit address structures and the Extended IRQ structure
8025have been changed to properly handle Source Resource strings.
8026
8027A ThreadId of -1 is now used to indicate a "mutex not acquired"
8028condition internally and must never be returned by AcpiOsThreadId.
8029This reserved value was changed from 0 since Unix systems allow a
8030thread ID of 0.
8031
8032Linux:
8033
8034Driver code reorganized to enhance portability
8035
8036Added a kernel configuration option to control ACPI_DEBUG
8037
8038Fixed the EC driver to honor _GLK.
8039
8040ASL Compiler, version X2016:
8041
8042Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
8043address space was set to 0, not 0x7f as it should be.
8044
8045 ------------------------------------------
8046Summary of changes for this label: 03_13_01
8047
8048 ACPI CA Core Subsystem:
8049
8050During ACPI initialization, the _SB_._INI method is now run if
8051present.
8052
8053Notify handler fix - notifies are deferred until the parent method
8054completes execution.  This fixes the "mutex already acquired"
8055issue seen occasionally.
8056
8057Part of the "implicit conversion" rules in ACPI 2.0 have been
8058found to cause compatibility problems with existing ASL/AML.  The
8059convert "result-to-target-type" implementation has been removed
8060for stores to method Args and Locals.  Source operand conversion
8061is still fully implemented.  Possible changes to ACPI 2.0
8062specification pending.
8063
8064Fix to AcpiRsCalculatePciRoutingTableLength to return correct
8065length.
8066
8067Fix for compiler warnings for 64-bit compiles.
8068
8069 Linux:
8070
8071/proc output aligned for easier parsing.
8072
8073Release-version compile problem fixed.
8074
8075New kernel configuration options documented in Configure.help.
8076
8077IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
8078context" message.
8079
8080 OSPM:
8081
8082Power resource driver integrated with bus manager.
8083
8084Fixed kernel fault during active cooling for thermal zones.
8085
8086Source Code:
8087
8088The source code tree has been restructured.
8089
8090
8091
8092------------------------------------------
8093Summary of changes for this label: 03_02_01
8094
8095 Linux OS Services Layer (OSL):
8096
8097Major revision of all Linux-specific code.
8098
8099Modularized all ACPI-specific drivers.
8100
8101Added new thermal zone and power resource drivers.
8102
8103Revamped /proc interface (new functionality is under /proc/acpi).
8104
8105New kernel configuration options.
8106
8107 Linux known issues:
8108
8109New kernel configuration options not documented in Configure.help
8110yet.
8111
8112
8113Module dependencies not currently implemented. If used, they
8114should be loaded in this order: busmgr, power, ec, system,
8115processor, battery, ac_adapter, button, thermal.
8116
8117Modules will not load if CONFIG_MODVERSION is set.
8118
8119IBM 600E - entering S5 may reboot instead of shutting down.
8120
8121IBM 600E - Sleep button may generate "Invalid <NULL> context"
8122message.
8123
8124Some systems may fail with "execution mutex already acquired"
8125message.
8126
8127 ACPI CA Core Subsystem:
8128
8129Added a new OSL Interface, AcpiOsGetThreadId.  This was required
8130for the  deadlock detection code. Defined to return a non-zero, 32-
8131bit thread ID for the currently executing thread.  May be a non-
8132zero constant integer on single-thread systems.
8133
8134Implemented deadlock detection for internal subsystem mutexes.  We
8135may add conditional compilation for this code (debug only) later.
8136
8137ASL/AML Mutex object semantics are now fully supported.  This
8138includes multiple acquires/releases by owner and support for the
8139
8140Mutex SyncLevel parameter.
8141
8142A new "Force Release" mechanism automatically frees all ASL
8143Mutexes that have been acquired but not released when a thread
8144exits the interpreter.  This forces conformance to the ACPI spec
8145("All mutexes must be released when an invocation exits") and
8146prevents deadlocked ASL threads.  This mechanism can be expanded
8147(later) to monitor other resource acquisitions if OEM ASL code
8148continues to misbehave (which it will).
8149
8150Several new ACPI exception codes have been added for the Mutex
8151support.
8152
8153Recursive method calls are now allowed and supported (the ACPI
8154spec does in fact allow recursive method calls.)  The number of
8155recursive calls is subject to the restrictions imposed by the
8156SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
8157parameter.
8158
8159Implemented support for the SyncLevel parameter for control
8160methods (ACPI 2.0 feature)
8161
8162Fixed a deadlock problem when multiple threads attempted to use
8163the interpreter.
8164
8165Fixed a problem where the string length of a String package
8166element was not always set in a package returned from
8167AcpiEvaluateObject.
8168
8169Fixed a problem where the length of a String package element was
8170not always included in the length of the overall package returned
8171from AcpiEvaluateObject.
8172
8173Added external interfaces (Acpi*) to the ACPI debug memory
8174manager.  This manager keeps a list of all outstanding
8175allocations, and can therefore detect memory leaks and attempts to
8176free memory blocks more than once. Useful for code such as the
8177power manager, etc.  May not be appropriate for device drivers.
8178Performance with the debug code enabled is slow.
8179
8180The ACPI Global Lock is now an optional hardware element.
8181
8182 ASL Compiler Version X2015:
8183
8184Integrated changes to allow the compiler to be generated on
8185multiple platforms.
8186
8187Linux makefile added to generate the compiler on Linux
8188
8189 Source Code:
8190
8191All platform-specific headers have been moved to their own
8192subdirectory, Include/Platform.
8193
8194New source file added, Interpreter/ammutex.c
8195
8196New header file, Include/acstruct.h
8197
8198 Documentation:
8199
8200The programmer reference has been updated for the following new
8201interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
8202
8203 ------------------------------------------
8204Summary of changes for this label: 02_08_01
8205
8206Core ACPI CA Subsystem: Fixed a problem where an error was
8207incorrectly returned if the return resource buffer was larger than
8208the actual data (in the resource interfaces).
8209
8210References to named objects within packages are resolved to the
8211
8212full pathname string before packages are returned directly (via
8213the AcpiEvaluateObject interface) or indirectly via the resource
8214interfaces.
8215
8216Linux OS Services Layer (OSL):
8217
8218Improved /proc battery interface.
8219
8220
8221Added C-state debugging output and other miscellaneous fixes.
8222
8223ASL Compiler Version X2014:
8224
8225All defined method arguments can now be used as local variables,
8226including the ones that are not actually passed in as parameters.
8227The compiler tracks initialization of the arguments and issues an
8228exception if they are used without prior assignment (just like
8229locals).
8230
8231The -o option now specifies a filename prefix that is used for all
8232output files, including the AML output file.  Otherwise, the
8233default behavior is as follows:  1) the AML goes to the file
8234specified in the DSDT.  2) all other output files use the input
8235source filename as the base.
8236
8237 ------------------------------------------
8238Summary of changes for this label: 01_25_01
8239
8240Core ACPI CA Subsystem: Restructured the implementation of object
8241store support within the  interpreter.  This includes support for
8242the Store operator as well  as any ASL operators that include a
8243target operand.
8244
8245Partially implemented support for Implicit Result-to-Target
8246conversion. This is when a result object is converted on the fly
8247to the type of  an existing target object.  Completion of this
8248support is pending  further analysis of the ACPI specification
8249concerning this matter.
8250
8251CPU-specific code has been removed from the subsystem (hardware
8252directory).
8253
8254New Power Management Timer functions added
8255
8256Linux OS Services Layer (OSL): Moved system state transition code
8257to the core, fixed it, and modified  Linux OSL accordingly.
8258
8259Fixed C2 and C3 latency calculations.
8260
8261
8262We no longer use the compilation date for the version message on
8263initialization, but retrieve the version from AcpiGetSystemInfo().
8264
8265Incorporated for fix Sony VAIO machines.
8266
8267Documentation:  The Programmer Reference has been updated and
8268reformatted.
8269
8270
8271ASL Compiler:  Version X2013: Fixed a problem where the line
8272numbering and error reporting could get out  of sync in the
8273presence of multiple include files.
8274
8275 ------------------------------------------
8276Summary of changes for this label: 01_15_01
8277
8278Core ACPI CA Subsystem:
8279
8280Implemented support for type conversions in the execution of the
8281ASL  Concatenate operator (The second operand is converted to
8282match the type  of the first operand before concatenation.)
8283
8284Support for implicit source operand conversion is partially
8285implemented.   The ASL source operand types Integer, Buffer, and
8286String are freely  interchangeable for most ASL operators and are
8287converted by the interpreter  on the fly as required.  Implicit
8288Target operand conversion (where the  result is converted to the
8289target type before storing) is not yet implemented.
8290
8291Support for 32-bit and 64-bit BCD integers is implemented.
8292
8293Problem fixed where a field read on an aligned field could cause a
8294read  past the end of the field.
8295
8296New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
8297does not return a value, but the caller expects one.  (The ASL
8298compiler flags this as a warning.)
8299
8300ASL Compiler:
8301
8302Version X2011:
83031. Static typechecking of all operands is implemented. This
8304prevents the use of invalid objects (such as using a Package where
8305an Integer is required) at compile time instead of at interpreter
8306run-time.
83072. The ASL source line is printed with ALL errors and warnings.
83083. Bug fix for source EOF without final linefeed.
83094. Debug option is split into a parse trace and a namespace trace.
83105. Namespace output option (-n) includes initial values for
8311integers and strings.
83126. Parse-only option added for quick syntax checking.
83137. Compiler checks for duplicate ACPI name declarations
8314
8315Version X2012:
83161. Relaxed typechecking to allow interchangeability between
8317strings, integers, and buffers.  These types are now converted by
8318the interpreter at runtime.
83192. Compiler reports time taken by each internal subsystem in the
8320debug         output file.
8321
8322
8323 ------------------------------------------
8324Summary of changes for this label: 12_14_00
8325
8326ASL Compiler:
8327
8328This is the first official release of the compiler. Since the
8329compiler requires elements of the Core Subsystem, this label
8330synchronizes everything.
8331
8332------------------------------------------
8333Summary of changes for this label: 12_08_00
8334
8335
8336Fixed a problem where named references within the ASL definition
8337of both OperationRegions and CreateXXXFields did not work
8338properly.  The symptom was an AE_AML_OPERAND_TYPE during
8339initialization of the region/field. This is similar (but not
8340related internally) to the problem that was fixed in the last
8341label.
8342
8343Implemented both 32-bit and 64-bit support for the BCD ASL
8344functions ToBCD and FromBCD.
8345
8346Updated all legal headers to include "2000" in the copyright
8347years.
8348
8349 ------------------------------------------
8350Summary of changes for this label: 12_01_00
8351
8352Fixed a problem where method invocations within the ASL definition
8353of both OperationRegions and CreateXXXFields did not work
8354properly.  The symptom was an AE_AML_OPERAND_TYPE during
8355initialization of the region/field:
8356
8357  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
8358[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
8359(0x3005)
8360
8361Fixed a problem where operators with more than one nested
8362subexpression would fail.  The symptoms were varied, by mostly
8363AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
8364problem that has gone unnoticed until now.
8365
8366  Subtract (Add (1,2), Multiply (3,4))
8367
8368Fixed a problem where AcpiGetHandle didn't quite get fixed in the
8369previous build (The prefix part of a relative path was handled
8370incorrectly).
8371
8372Fixed a problem where Operation Region initialization failed if
8373the operation region name was a "namepath" instead of a simple
8374"nameseg". Symptom was an AE_NO_OPERAND error.
8375
8376Fixed a problem where an assignment to a local variable via the
8377indirect RefOf mechanism only worked for the first such
8378assignment.  Subsequent assignments were ignored.
8379
8380 ------------------------------------------
8381Summary of changes for this label: 11_15_00
8382
8383ACPI 2.0 table support with backwards support for ACPI 1.0 and the
83840.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
8385the AML  interpreter does NOT have support for the new 2.0 ASL
8386grammar terms at this time.
8387
8388All ACPI hardware access is via the GAS structures in the ACPI 2.0
8389FADT.
8390
8391All physical memory addresses across all platforms are now 64 bits
8392wide. Logical address width remains dependent on the platform
8393(i.e., "void *").
8394
8395AcpiOsMapMemory interface changed to a 64-bit physical address.
8396
8397The AML interpreter integer size is now 64 bits, as per the ACPI
83982.0 specification.
8399
8400For backwards compatibility with ACPI 1.0, ACPI tables with a
8401revision number less than 2 use 32-bit integers only.
8402
8403Fixed a problem where the evaluation of OpRegion operands did not
8404always resolve them to numbers properly.
8405
8406------------------------------------------
8407Summary of changes for this label: 10_20_00
8408
8409Fix for CBN_._STA issue.  This fix will allow correct access to
8410CBN_ OpRegions when the _STA returns 0x8.
8411
8412Support to convert ACPI constants (Ones, Zeros, One) to actual
8413values before a package object is returned
8414
8415Fix for method call as predicate to if/while construct causing
8416incorrect if/while behavior
8417
8418Fix for Else block package lengths sometimes calculated wrong (if
8419block > 63 bytes)
8420
8421Fix for Processor object length field, was always zero
8422
8423Table load abort if FACP sanity check fails
8424
8425Fix for problem with Scope(name) if name already exists
8426
8427Warning emitted if a named object referenced cannot be found
8428(resolved) during method execution.
8429
8430
8431
8432
8433
8434------------------------------------------
8435Summary of changes for this label: 9_29_00
8436
8437New table initialization interfaces: AcpiInitializeSubsystem no
8438longer has any parameters AcpiFindRootPointer - Find the RSDP (if
8439necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
8440>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
8441AcpiLoadTables
8442
8443Note: These interface changes require changes to all existing OSDs
8444
8445The PCI_Config default address space handler is always installed
8446at the root namespace object.
8447
8448-------------------------------------------
8449Summary of changes for this label: 09_15_00
8450
8451The new initialization architecture is implemented.  New
8452interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
8453AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
8454
8455(Namespace is automatically loaded when a table is loaded)
8456
8457The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
845852 bytes to 32 bytes.  There is usually one of these for every
8459namespace object, so the memory savings is significant.
8460
8461Implemented just-in-time evaluation of the CreateField operators.
8462
8463Bug fixes for IA-64 support have been integrated.
8464
8465Additional code review comments have been implemented
8466
8467The so-called "third pass parse" has been replaced by a final walk
8468through the namespace to initialize all operation regions (address
8469spaces) and fields that have not yet been initialized during the
8470execution of the various _INI and REG methods.
8471
8472New file - namespace/nsinit.c
8473
8474-------------------------------------------
8475Summary of changes for this label: 09_01_00
8476
8477Namespace manager data structures have been reworked to change the
8478primary  object from a table to a single object.  This has
8479resulted in dynamic memory  savings of 3X within the namespace and
84802X overall in the ACPI CA subsystem.
8481
8482Fixed problem where the call to AcpiEvFindPciRootBuses was
8483inadvertently left  commented out.
8484
8485Reduced the warning count when generating the source with the GCC
8486compiler.
8487
8488Revision numbers added to each module header showing the
8489SourceSafe version of the file.  Please refer to this version
8490number when giving us feedback or comments on individual modules.
8491
8492The main object types within the subsystem have been renamed to
8493clarify their  purpose:
8494
8495ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
8496ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
8497ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
8498
8499NOTE: no changes to the initialization sequence are included in
8500this label.
8501
8502-------------------------------------------
8503Summary of changes for this label: 08_23_00
8504
8505Fixed problem where TerminateControlMethod was being called
8506multiple times per  method
8507
8508Fixed debugger problem where single stepping caused a semaphore to
8509be  oversignalled
8510
8511Improved performance through additional parse object caching -
8512added  ACPI_EXTENDED_OP type
8513
8514-------------------------------------------
8515Summary of changes for this label: 08_10_00
8516
8517Parser/Interpreter integration:  Eliminated the creation of
8518complete parse trees  for ACPI tables and control methods.
8519Instead, parse subtrees are created and  then deleted as soon as
8520they are processed (Either entered into the namespace or  executed
8521by the interpreter).  This reduces the use of dynamic kernel
8522memory  significantly. (about 10X)
8523
8524Exception codes broken into classes and renumbered.  Be sure to
8525recompile all  code that includes acexcep.h.  Hopefully we won't
8526have to renumber the codes  again now that they are split into
8527classes (environment, programmer, AML code,  ACPI table, and
8528internal).
8529
8530Fixed some additional alignment issues in the Resource Manager
8531subcomponent
8532
8533Implemented semaphore tracking in the AcpiExec utility, and fixed
8534several places  where mutexes/semaphores were being unlocked
8535without a corresponding lock  operation.  There are no known
8536semaphore or mutex "leaks" at this time.
8537
8538Fixed the case where an ASL Return operator is used to return an
8539unnamed  package.
8540
8541-------------------------------------------
8542Summary of changes for this label: 07_28_00
8543
8544Fixed a problem with the way addresses were calculated in
8545AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
8546manifested itself when a Field was  created with WordAccess or
8547DwordAccess, but the field unit defined within the  Field was less
8548
8549than a Word or Dword.
8550
8551Fixed a problem in AmlDumpOperands() module's loop to pull
8552operands off of the  operand stack to display information. The
8553problem manifested itself as a TLB  error on 64-bit systems when
8554accessing an operand stack with two or more  operands.
8555
8556Fixed a problem with the PCI configuration space handlers where
8557context was  getting confused between accesses. This required a
8558change to the generic address  space handler and address space
8559setup definitions. Handlers now get both a  global handler context
8560(this is the one passed in by the user when executing
8561AcpiInstallAddressSpaceHandler() and a specific region context
8562that is unique to  each region (For example, the _ADR, _SEG and
8563_BBN values associated with a  specific region). The generic
8564function definitions have changed to the  following:
8565
8566typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
8567UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
8568*HandlerContext, // This used to be void *Context void
8569*RegionContext); // This is an additional parameter
8570
8571typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
8572RegionHandle, UINT32 Function, void *HandlerContext,  void
8573**RegionContext); // This used to be **ReturnContext
8574
8575-------------------------------------------
8576Summary of changes for this label: 07_21_00
8577
8578Major file consolidation and rename.  All files within the
8579interpreter have been  renamed as well as most header files.  This
8580was done to prevent collisions with  existing files in the host
8581OSs -- filenames such as "config.h" and "global.h"  seem to be
8582quite common.  The VC project files have been updated.  All
8583makefiles  will require modification.
8584
8585The parser/interpreter integration continues in Phase 5 with the
8586implementation  of a complete 2-pass parse (the AML is parsed
8587twice) for each table;  This  avoids the construction of a huge
8588parse tree and therefore reduces the amount of  dynamic memory
8589required by the subsystem.  Greater use of the parse object cache
8590means that performance is unaffected.
8591
8592Many comments from the two code reviews have been rolled in.
8593
8594The 64-bit alignment support is complete.
8595
8596-------------------------------------------
8597Summary of changes for this label: 06_30_00
8598
8599With a nod and a tip of the hat to the technology of yesteryear,
8600we've added  support in the source code for 80 column output
8601devices.  The code is now mostly  constrained to 80 columns or
8602less to support environments and editors that 1)  cannot display
8603or print more than 80 characters on a single line, and 2) cannot
8604disable line wrapping.
8605
8606A major restructuring of the namespace data structure has been
8607completed.  The  result is 1) cleaner and more
8608understandable/maintainable code, and 2) a  significant reduction
8609in the dynamic memory requirement for each named ACPI  object
8610(almost half).
8611
8612-------------------------------------------
8613Summary of changes for this label: 06_23_00
8614
8615Linux support has been added.  In order to obtain approval to get
8616the ACPI CA  subsystem into the Linux kernel, we've had to make
8617quite a few changes to the  base subsystem that will affect all
8618users (all the changes are generic and OS- independent).  The
8619effects of these global changes have been somewhat far  reaching.
8620Files have been merged and/or renamed and interfaces have been
8621renamed.   The major changes are described below.
8622
8623Osd* interfaces renamed to AcpiOs* to eliminate namespace
8624pollution/confusion  within our target kernels.  All OSD
8625interfaces must be modified to match the new  naming convention.
8626
8627Files merged across the subsystem.  A number of the smaller source
8628and header  files have been merged to reduce the file count and
8629increase the density of the  existing files.  There are too many
8630to list here.  In general, makefiles that  call out individual
8631files will require rebuilding.
8632
8633Interpreter files renamed.  All interpreter files now have the
8634prefix am*  instead of ie* and is*.
8635
8636Header files renamed:  The acapi.h file is now acpixf.h.  The
8637acpiosd.h file is  now acpiosxf.h.  We are removing references to
8638the acronym "API" since it is  somewhat windowsy. The new name is
8639"external interface" or xface or xf in the  filenames.j
8640
8641
8642All manifest constants have been forced to upper case (some were
8643mixed case.)   Also, the string "ACPI_" has been prepended to many
8644(not all) of the constants,  typedefs, and structs.
8645
8646The globals "DebugLevel" and "DebugLayer" have been renamed
8647"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
8648
8649All other globals within the subsystem are now prefixed with
8650"AcpiGbl_" Internal procedures within the subsystem are now
8651prefixed with "Acpi" (with only  a few exceptions).  The original
8652two-letter abbreviation for the subcomponent  remains after "Acpi"
8653- for example, CmCallocate became AcpiCmCallocate.
8654
8655Added a source code translation/conversion utility.  Used to
8656generate the Linux  source code, it can be modified to generate
8657other types of source as well. Can  also be used to cleanup
8658existing source by removing extraneous spaces and blank  lines.
8659Found in tools/acpisrc/*
8660
8661OsdUnMapMemory was renamed to OsdUnmapMemory and then
8662AcpiOsUnmapMemory.  (UnMap  became Unmap).
8663
8664A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
8665When set to  one, this indicates that the caller wants to use the
8666
8667semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
8668both types.  However, implementers of this  call may want to use
8669different OS primitives depending on the type of semaphore
8670requested.  For example, some operating systems provide separate
8671
8672"mutex" and  "semaphore" interfaces - where the mutex interface is
8673much faster because it  doesn't have all the overhead of a full
8674semaphore implementation.
8675
8676Fixed a deadlock problem where a method that accesses the PCI
8677address space can  block forever if it is the first access to the
8678space.
8679
8680-------------------------------------------
8681Summary of changes for this label: 06_02_00
8682
8683Support for environments that cannot handle unaligned data
8684accesses (e.g.  firmware and OS environments devoid of alignment
8685handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
8686been added (via configurable macros) in  these three areas: -
8687Transfer of data from the raw AML byte stream is done via byte
8688moves instead of    word/dword/qword moves. - External objects are
8689aligned within the user buffer, including package   elements (sub-
8690objects). - Conversion of name strings to UINT32 Acpi Names is now
8691done byte-wise.
8692
8693The Store operator was modified to mimic Microsoft's
8694implementation when storing  to a Buffer Field.
8695
8696Added a check of the BM_STS bit before entering C3.
8697
8698The methods subdirectory has been obsoleted and removed.  A new
8699file, cmeval.c  subsumes the functionality.
8700
8701A 16-bit (DOS) version of AcpiExec has been developed.  The
8702makefile is under  the acpiexec directory.
8703