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