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