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