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