changes.txt revision 117521
1---------------------------------------- 219 June 2003. Summary of changes for version 20030619: 3 41) ACPI CA Core Subsystem: 5 6Fix To/FromBCD, eliminating the need for an arch-specific 7#define. 8 9Do not acquire a semaphore in the S5 shutdown path. 10 11Fix ex_digits_needed for 0. (Takayoshi Kochi) 12 13Fix sleep/stall code reversal. (Andi Kleen) 14 15Revert a change having to do with control method calling 16semantics. 17 182) Linux: 19 20acpiphp update (Takayoshi Kochi) 21 22Export acpi_disabled for sonypi (Stelian Pop) 23 24Mention acpismp=force in config help 25 26Re-add acpitable.c and acpismp=force. This improves backwards 27compatibility and also cleans up the code to a significant 28degree. 29 30Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 31 32 33 34---------------------------------------- 3522 May 2003. Summary of changes for version 20030522: 36 371) ACPI CA Core Subsystem: 38 39Found and fixed a reported problem where an AE_NOT_FOUND error 40occurred occasionally during _BST evaluation. This turned out to 41be an Owner ID allocation issue where a called method did not get 42a new ID assigned to it. Eventually, (after 64k calls), the 43Owner ID UINT16 would wraparound so that the ID would be the same 44as the caller's and the called method would delete the caller's 45namespace. 46 47Implemented extended error reporting for control methods that are 48aborted due to a run-time exception. Output includes the exact 49AML instruction that caused the method abort, a dump of the 50method locals and arguments at the time of the abort, and a trace 51of all nested control method calls. 52 53Modified the interpreter to allow the creation of buffers of zero 54length from the AML code. Implemented new code to ensure that no 55attempt is made to actually allocate a memory buffer (of length 56zero) - instead, a simple buffer object with a NULL buffer 57pointer and length zero is created. A warning is no longer 58issued when the AML attempts to create a zero-length buffer. 59 60Implemented a workaround for the "leading asterisk issue" in 61_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 62asterisk is automatically removed if present in any HID, UID, or 63CID strings. The iASL compiler will still flag this asterisk as 64an error, however. 65 66Implemented full support for _CID methods that return a package 67of multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() 68interface now additionally returns a device _CID list if present. 69This required a change to the external interface in order to pass 70an ACPI_BUFFER object as a parameter since the _CID list is of 71variable length. 72 73Fixed a problem with the new AE_SAME_HANDLER exception where 74handler initialization code did not know about this exception. 75 76Code and Data Size: Current and previous core subsystem library 77sizes are shown below. These are the code and data sizes for the 78acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 79these values do not include any ACPI driver or OSPM code. The 80debug version of the code includes the debug output trace 81mechanism and has a much larger code and data size. Note that 82these values will vary depending on the efficiency of the 83compiler and the compiler options used during generation. 84 85 Previous Release (20030509): 86 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 87 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 88 Current Release: 89 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 90 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 91 92 932) Linux: 94 95Fixed a bug in which we would reinitialize the ACPI interrupt 96after it was already working, thus disabling all ACPI and the 97IRQs for any other device sharing the interrupt. (Thanks to Stian 98Jordet) 99 100Toshiba driver update (John Belmonte) 101 102Return only 0 or 1 for our interrupt handler status (Andrew 103Morton) 104 105 1063) iASL Compiler: 107 108Fixed a reported problem where multiple (nested) ElseIf() 109statements were not handled correctly by the compiler, resulting 110in incorrect warnings and incorrect AML code. This was a problem 111in both the ASL parser and the code generator. 112 113 1144) Documentation: 115 116Added changes to existing interfaces, new exception codes, and 117new text concerning reference count object management versus 118garbage collection. 119 120---------------------------------------- 12109 May 2003. Summary of changes for version 20030509. 122 123 1241) ACPI CA Core Subsystem: 125 126Changed the subsystem initialization sequence to hold off 127installation of address space handlers until the hardware has 128been initialized and the system has entered ACPI mode. This is 129because the installation of space handlers can cause _REG methods 130to be run. Previously, the _REG methods could potentially be run 131before ACPI mode was enabled. 132 133Fixed some memory leak issues related to address space handler 134and notify handler installation. There were some problems with 135the reference count mechanism caused by the fact that the handler 136objects are shared across several namespace objects. 137 138Fixed a reported problem where reference counts within the 139namespace were not properly updated when named objects created by 140method execution were deleted. 141 142Fixed a reported problem where multiple SSDTs caused a deletion 143issue during subsystem termination. Restructured the table data 144structures to simplify the linked lists and the related code. 145 146Fixed a problem where the table ID associated with secondary 147tables (SSDTs) was not being propagated into the namespace 148objects created by those tables. This would only present a 149problem for tables that are unloaded at run-time, however. 150 151Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 152type as the length parameter (instead of UINT32). 153 154Solved a long-standing problem where an ALREADY_EXISTS error 155appears on various systems. This problem could happen when there 156are multiple PCI_Config operation regions under a single PCI root 157bus. This doesn't happen very frequently, but there are some 158systems that do this in the ASL. 159 160Fixed a reported problem where the internal DeleteNode function 161was incorrectly handling the case where a namespace node was the 162first in the parent's child list, and had additional peers (not 163the only child, but first in the list of children.) 164 165Code and Data Size: Current core subsystem library sizes are 166shown below. These are the code and data sizes for the 167acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 168these values do not include any ACPI driver or OSPM code. The 169debug version of the code includes the debug output trace 170mechanism and has a much larger code and data size. Note that 171these values will vary depending on the efficiency of the 172compiler and the compiler options used during generation. 173 174 Previous Release 175 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 176 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 177 Current Release: 178 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 179 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 180 181 1822) Linux: 183 184Allow ":" in OS override string (Ducrot Bruno) 185 186Kobject fix (Greg KH) 187 188 1893 iASL Compiler/Disassembler: 190 191Fixed a problem in the generation of the C source code files (AML 192is emitted in C source statements for BIOS inclusion) where the 193Ascii dump that appears within a C comment at the end of each 194line could cause a compile time error if the AML sequence happens 195to have an open comment or close comment sequence embedded. 196 197 198---------------------------------------- 19924 April 2003. Summary of changes for version 20030424. 200 201 2021) ACPI CA Core Subsystem: 203 204Support for big-endian systems has been implemented. Most of the 205support has been invisibly added behind big-endian versions of 206the ACPI_MOVE_* macros. 207 208Fixed a problem in AcpiHwDisableGpeBlock() and 209AcpiHwClearGpeBlock() where an incorrect offset was passed to the 210low level hardware write routine. The offset parameter was 211actually eliminated from the low level read/write routines 212because they had become obsolete. 213 214Fixed a problem where a handler object was deleted twice during 215the removal of a fixed event handler. 216 217 2182) Linux: 219 220A fix for SMP systems with link devices was contributed by 221Compaq's Dan Zink. 222 223(2.5) Return whether we handled the interrupt in our IRQ handler. 224(Linux ISRs no longer return void, so we can propagate the 225handler return value from the ACPI CA core back to the OS.) 226 227 2283) Documentation: 229 230The ACPI CA Programmer Reference has been updated to reflect new 231interfaces and changes to existing interfaces. 232 233---------------------------------------- 23428 March 2003. Summary of changes for version 20030328. 235 2361) ACPI CA Core Subsystem: 237 238The GPE Block Device support has been completed. New interfaces 239are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 240interfaces (enable, disable, clear, getstatus) have been split 241into separate interfaces for Fixed Events and General Purpose 242Events (GPEs) in order to support GPE Block Devices properly. 243 244Fixed a problem where the error message "Failed to acquire 245semaphore" would appear during operations on the embedded 246controller (EC). 247 248Code and Data Size: Current core subsystem library sizes are 249shown below. These are the code and data sizes for the 250acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 251these values do not include any ACPI driver or OSPM code. The 252debug version of the code includes the debug output trace 253mechanism and has a much larger code and data size. Note that 254these values will vary depending on the efficiency of the 255compiler and the compiler options used during generation. 256 257 Previous Release 258 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 259 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 260 Current Release: 261 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 262 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 263 264 265---------------------------------------- 26628 February 2003. Summary of changes for version 20030228. 267 268 2691) ACPI CA Core Subsystem: 270 271The GPE handling and dispatch code has been completely overhauled 272in preparation for support of GPE Block Devices (ID ACPI0006). 273This affects internal data structures and code only; there should 274be no differences visible externally. One new file has been 275added, evgpeblk.c 276 277The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 278fields that are used to determine the GPE block lengths. The 279REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 280structures are ignored. This is per the ACPI specification but 281it isn't very clear. The full 256 Block 0/1 GPEs are now 282supported (the use of REGISTER_BIT_WIDTH limited the number of 283GPEs to 128). 284 285In the SCI interrupt handler, removed the read of the PM1_CONTROL 286register to look at the SCI_EN bit. On some machines, this read 287causes an SMI event and greatly slows down SCI events. (This may 288in fact be the cause of slow battery status response on some 289systems.) 290 291Fixed a problem where a store of a NULL string to a package 292object could cause the premature deletion of the object. This 293was seen during execution of the battery _BIF method on some 294systems, resulting in no battery data being returned. 295 296Added AcpiWalkResources interface to simplify parsing of resource 297lists. 298 299Code and Data Size: Current core subsystem library sizes are 300shown below. These are the code and data sizes for the 301acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 302these values do not include any ACPI driver or OSPM code. The 303debug version of the code includes the debug output trace 304mechanism and has a much larger code and data size. Note that 305these values will vary depending on the efficiency of the 306compiler and the compiler options used during generation. 307 308 Previous Release 309 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 310 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 311 Current Release: 312 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 313 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 314 315 3162) Linux 317 318S3 fixes (Ole Rohne) 319 320Update ACPI PHP driver with to use new acpi_walk_resource API 321(Bjorn Helgaas) 322 323Add S4BIOS support (Pavel Machek) 324 325Map in entire table before performing checksum (John Stultz) 326 327Expand the mem= cmdline to allow the specification of reserved 328and ACPI DATA blocks (Pavel Machek) 329 330Never use ACPI on VISWS 331 332Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 333 334Revert a change that allowed P_BLK lengths to be 4 or 5. This is 335causing us to think that some systems support C2 when they really 336don't. 337 338Do not count processor objects for non-present CPUs (Thanks to 339Dominik Brodowski) 340 341 3423) iASL Compiler: 343 344Fixed a problem where ASL include files could not be found and 345opened. 346 347Added support for the _PDC reserved name. 348 349 350---------------------------------------- 35122 January 2003. Summary of changes for version 20030122. 352 353 3541) ACPI CA Core Subsystem: 355 356Added a check for constructs of the form: Store (Local0, Local0) 357where Local0 is not initialized. Apparently, some BIOS 358programmers believe that this is a NOOP. Since this store 359doesn't do anything anyway, the new prototype behavior will 360ignore this error. This is a case where we can relax the strict 361checking in the interpreter in the name of compatibility. 362 363 3642) Linux 365 366The AcpiSrc Source Conversion Utility has been released with the 367Linux package for the first time. This is the utility that is 368used to convert the ACPI CA base source code to the Linux 369version. 370 371(Both) Handle P_BLK lengths shorter than 6 more gracefully 372 373(Both) Move more headers to include/acpi, and delete an unused 374header. 375 376(Both) Move drivers/acpi/include directory to include/acpi 377 378(Both) Boot functions don't use cmdline, so don't pass it around 379 380(Both) Remove include of unused header (Adrian Bunk) 381 382(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 383the 384former now also includes the latter, acpiphp.h only needs the 385one, now. 386 387(2.5) Make it possible to select method of bios restoring after 388S3 389resume. [=> no more ugly ifdefs] (Pavel Machek) 390 391(2.5) Make proc write interfaces work (Pavel Machek) 392 393(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 394 395(2.5) Break out ACPI Perf code into its own module, under cpufreq 396(Dominik Brodowski) 397 398(2.4) S4BIOS support (Ducrot Bruno) 399 400(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 401Visinoni) 402 403 4043) iASL Compiler: 405 406Added support to disassemble SSDT and PSDTs. 407 408Implemented support to obtain SSDTs from the Windows registry if 409available. 410 411 412---------------------------------------- 41309 January 2003. Summary of changes for version 20030109. 414 4151) ACPI CA Core Subsystem: 416 417Changed the behavior of the internal Buffer-to-String conversion 418function. The current ACPI specification states that the 419contents of the buffer are "converted to a string of two- 420character hexadecimal numbers, each separated by a space". 421Unfortunately, this definition is not backwards compatible with 422existing ACPI 1.0 implementations (although the behavior was not 423defined in the ACPI 1.0 specification). The new behavior simply 424copies data from the buffer to the string until a null character 425is found or the end of the buffer is reached. The new String 426object is always null terminated. This problem was seen during 427the generation of _BIF battery data where incorrect strings were 428returned for battery type, etc. This will also require an errata 429to the ACPI specification. 430 431Renamed all instances of NATIVE_UINT and NATIVE_INT to 432ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 433 434Copyright in all module headers (both Linux and non-Linux) has be 435updated to 2003. 436 437Code and Data Size: Current core subsystem library sizes are 438shown below. These are the code and data sizes for the 439acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 440these values do not include any ACPI driver or OSPM code. The 441debug version of the code includes the debug output trace 442mechanism and has a much larger code and data size. Note that 443these values will vary depending on the efficiency of the 444compiler and the compiler options used during generation. 445 446 Previous Release 447 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 448 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 449 Current Release: 450 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 451 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 452 453 4542) Linux 455 456Fixed an oops on module insertion/removal (Matthew Tippett) 457 458(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 459 460(2.5) Replace pr_debug (Randy Dunlap) 461 462(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 463 464(Both) Eliminate spawning of thread from timer callback, in favor 465of schedule_work() 466 467(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 468 469(Both) Added define for Fixed Function HW region (Matthew Wilcox) 470 471(Both) Add missing statics to button.c (Pavel Machek) 472 473Several changes have been made to the source code translation 474utility that generates the Linux Code in order to make the code 475more "Linux-like": 476 477All typedefs on structs and unions have been removed in keeping 478with the Linux coding style. 479 480Removed the non-Linux SourceSafe module revision number from each 481module header. 482 483Completed major overhaul of symbols to be lowercased for linux. 484Doubled the number of symbols that are lowercased. 485 486Fixed a problem where identifiers within procedure headers and 487within quotes were not fully lower cased (they were left with a 488starting capital.) 489 490Some C macros whose only purpose is to allow the generation of 16- 491bit code are now completely removed in the Linux code, increasing 492readability and maintainability. 493 494---------------------------------------- 495 49612 December 2002. Summary of changes for version 20021212. 497 498 4991) ACPI CA Core Subsystem: 500 501Fixed a problem where the creation of a zero-length AML Buffer 502would cause a fault. 503 504Fixed a problem where a Buffer object that pointed to a static 505AML buffer (in an ACPI table) could inadvertently be deleted, 506causing memory corruption. 507 508Fixed a problem where a user buffer (passed in to the external 509ACPI CA interfaces) could be overwritten if the buffer was too 510small to complete the operation, causing memory corruption. 511 512Fixed a problem in the Buffer-to-String conversion code where a 513string of length one was always returned, regardless of the size 514of the input Buffer object. 515 516Removed the NATIVE_CHAR data type across the entire source due to 517lack of need and lack of consistent use. 518 519Code and Data Size: Current core subsystem library sizes are 520shown below. These are the code and data sizes for the 521acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 522these values do not include any ACPI driver or OSPM code. The 523debug version of the code includes the debug output trace 524mechanism and has a much larger code and data size. Note that 525these values will vary depending on the efficiency of the 526compiler and the compiler options used during generation. 527 528 Previous Release 529 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 530 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 531 Current Release: 532 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 533 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 534 535 536---------------------------------------- 53705 December 2002. Summary of changes for version 20021205. 538 5391) ACPI CA Core Subsystem: 540 541Fixed a problem where a store to a String or Buffer object could 542cause corruption of the DSDT if the object type being stored was 543the same as the target object type and the length of the object 544being stored was equal to or smaller than the original (existing) 545target object. This was seen to cause corruption of battery _BIF 546buffers if the _BIF method modified the buffer on the fly. 547 548Fixed a problem where an internal error was generated if a 549control method invocation was used in an OperationRegion, Buffer, 550or Package declaration. This was caused by the deferred parsing 551of the control method and thus the deferred creation of the 552internal method object. The solution to this problem was to 553create the internal method object at the moment the method is 554encountered in the first pass - so that subsequent references to 555the method will able to obtain the required parameter count and 556thus properly parse the method invocation. This problem 557presented itself as an AE_AML_INTERNAL during the pass 1 parse 558phase during table load. 559 560Fixed a problem where the internal String object copy routine did 561not always allocate sufficient memory for the target String 562object and caused memory corruption. This problem was seen to 563cause "Allocation already present in list!" errors as memory 564allocation became corrupted. 565 566Implemented a new function for the evaluation of namespace 567objects that allows the specification of the allowable return 568object types. This simplifies a lot of code that checks for a 569return object of one or more specific objects returned from the 570evaluation (such as _STA, etc.) This may become and external 571function if it would be useful to ACPI-related drivers. 572 573Completed another round of prefixing #defines with "ACPI_" for 574clarity. 575 576Completed additional code restructuring to allow more modular 577linking for iASL compiler and AcpiExec. Several files were split 578creating new files. New files: nsparse.c dsinit.c evgpe.c 579 580Implemented an abort mechanism to terminate an executing control 581method via the AML debugger. This feature is useful for 582debugging control methods that depend (wait) for specific 583hardware responses. 584 585Code and Data Size: Current core subsystem library sizes are 586shown below. These are the code and data sizes for the 587acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 588these values do not include any ACPI driver or OSPM code. The 589debug version of the code includes the debug output trace 590mechanism and has a much larger code and data size. Note that 591these values will vary depending on the efficiency of the 592compiler and the compiler options used during generation. 593 594 Previous Release 595 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 596 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 597 Current Release: 598 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 599 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 600 601 6022) iASL Compiler/Disassembler 603 604Fixed a compiler code generation problem for "Interrupt" Resource 605Descriptors. If specified in the ASL, the optional "Resource 606Source Index" and "Resource Source" fields were not inserted into 607the correct location within the AML resource descriptor, creating 608an invalid descriptor. 609 610Fixed a disassembler problem for "Interrupt" resource 611descriptors. The optional "Resource Source Index" and "Resource 612Source" fields were ignored. 613 614 615---------------------------------------- 61622 November 2002. Summary of changes for version 20021122. 617 618 6191) ACPI CA Core Subsystem: 620 621Fixed a reported problem where an object stored to a Method Local 622or Arg was not copied to a new object during the store - the 623object pointer was simply copied to the Local/Arg. This caused 624all subsequent operations on the Local/Arg to also affect the 625original source of the store operation. 626 627Fixed a problem where a store operation to a Method Local or Arg 628was not completed properly if the Local/Arg contained a reference 629(from RefOf) to a named field. The general-purpose store-to- 630namespace-node code is now used so that this case is handled 631automatically. 632 633Fixed a problem where the internal object copy routine would 634cause a protection fault if the object being copied was a Package 635and contained either 1) a NULL package element or 2) a nested sub- 636package. 637 638Fixed a problem with the GPE initialization that resulted from an 639ambiguity in the ACPI specification. One section of the 640specification states that both the address and length of the GPE 641block must be zero if the block is not supported. Another 642section implies that only the address need be zero if the block 643is not supported. The code has been changed so that both the 644address and the length must be non-zero to indicate a valid GPE 645block (i.e., if either the address or the length is zero, the GPE 646block is invalid.) 647 648Code and Data Size: Current core subsystem library sizes are 649shown below. These are the code and data sizes for the 650acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 651these values do not include any ACPI driver or OSPM code. The 652debug version of the code includes the debug output trace 653mechanism and has a much larger code and data size. Note that 654these values will vary depending on the efficiency of the 655compiler and the compiler options used during generation. 656 657 Previous Release 658 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 659 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 660 Current Release: 661 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 662 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 663 664 6652) Linux 666 667Cleaned up EC driver. Exported an external EC read/write 668interface. By going through this, other drivers (most notably 669sonypi) will be able to serialize access to the EC. 670 671 6723) iASL Compiler/Disassembler 673 674Implemented support to optionally generate include files for both 675ASM and C (the -i switch). This simplifies BIOS development by 676automatically creating include files that contain external 677declarations for the symbols that are created within the 678(optionally generated) ASM and C AML source files. 679 680 681---------------------------------------- 68215 November 2002. Summary of changes for version 20021115. 683 6841) ACPI CA Core Subsystem: 685 686Fixed a memory leak problem where an error during resolution of 687method arguments during a method invocation from another method 688failed to cleanup properly by deleting all successfully resolved 689argument objects. 690 691Fixed a problem where the target of the Index() operator was not 692correctly constructed if the source object was a package. This 693problem has not been detected because the use of a target operand 694with Index() is very rare. 695 696Fixed a problem with the Index() operator where an attempt was 697made to delete the operand objects twice. 698 699Fixed a problem where an attempt was made to delete an operand 700twice during execution of the CondRefOf() operator if the target 701did not exist. 702 703Implemented the first of perhaps several internal create object 704functions that create and initialize a specific object type. 705This consolidates duplicated code wherever the object is created, 706thus shrinking the size of the subsystem. 707 708Implemented improved debug/error messages for errors that occur 709during nested method invocations. All executing method pathnames 710are displayed (with the error) as the call stack is unwound - 711thus simplifying debug. 712 713Fixed a problem introduced in the 10/02 release that caused 714premature deletion of a buffer object if a buffer was used as an 715ASL operand where an integer operand is required (Thus causing an 716implicit object conversion from Buffer to Integer.) The change 717in the 10/02 release was attempting to fix a memory leak (albeit 718incorrectly.) 719 720Code and Data Size: Current core subsystem library sizes are 721shown below. These are the code and data sizes for the 722acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 723these values do not include any ACPI driver or OSPM code. The 724debug version of the code includes the debug output trace 725mechanism and has a much larger code and data size. Note that 726these values will vary depending on the efficiency of the 727compiler and the compiler options used during generation. 728 729 Previous Release 730 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 731 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 732 Current Release: 733 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 734 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 735 736 7372) Linux 738 739Changed the implementation of the ACPI semaphores to use down() 740instead of down_interruptable(). It is important that the 741execution of ACPI control methods not be interrupted by signals. 742Methods must run to completion, or the system may be left in an 743unknown/unstable state. 744 745Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not 746set. (Shawn Starr) 747 748 7493) iASL Compiler/Disassembler 750 751 752Changed the default location of output files. All output files 753are now placed in the current directory by default instead of in 754the directory of the source file. This change may affect some 755existing makefiles, but it brings the behavior of the compiler in 756line with other similar tools. The location of the output files 757can be overridden with the -p command line switch. 758 759 760---------------------------------------- 76111 November 2002. Summary of changes for version 20021111. 762 763 7640) ACPI Specification 2.0B is released and is now available at: 765http://www.acpi.info/index.html 766 767 7681) ACPI CA Core Subsystem: 769 770Implemented support for the ACPI 2.0 SMBus Operation Regions. 771This includes the early detection and handoff of the request to 772the SMBus region handler (avoiding all of the complex field 773support code), and support for the bidirectional return packet 774from an SMBus write operation. This paves the way for the 775development of SMBus drivers in each host operating system. 776 777Fixed a problem where the semaphore WAIT_FOREVER constant was 778defined as 32 bits, but must be 16 bits according to the ACPI 779specification. This had the side effect of causing ASL 780Mutex/Event timeouts even though the ASL code requested a wait 781forever. Changed all internal references to the ACPI timeout 782parameter to 16 bits to prevent future problems. Changed the 783name of WAIT_FOREVER to ACPI_WAIT_FOREVER. 784 785Code and Data Size: Current core subsystem library sizes are 786shown below. These are the code and data sizes for the 787acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 788these values do not include any ACPI driver or OSPM code. The 789debug version of the code includes the debug output trace 790mechanism and has a much larger code and data size. Note that 791these values will vary depending on the efficiency of the 792compiler and the compiler options used during generation. 793 794 Previous Release 795 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 796 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 797 Current Release: 798 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 799 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 800 801 8022) Linux 803 804Module loading/unloading fixes (John Cagle) 805 806 8073) iASL Compiler/Disassembler 808 809Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 810 811Implemented support for the disassembly of all SMBus protocol 812keywords (SMBQuick, SMBWord, etc.) 813 814---------------------------------------- 81501 November 2002. Summary of changes for version 20021101. 816 817 8181) ACPI CA Core Subsystem: 819 820Fixed a problem where platforms that have a GPE1 block but no 821GPE0 block were not handled correctly. This resulted in a "GPE 822overlap" error message. GPE0 is no longer required. 823 824Removed code added in the previous release that inserted nodes 825into the namespace in alphabetical order. This caused some side- 826effects on various machines. The root cause of the problem is 827still under investigation since in theory, the internal ordering 828of the namespace nodes should not matter. 829 830 831Enhanced error reporting for the case where a named object is not 832found during control method execution. The full ACPI namepath 833(name reference) of the object that was not found is displayed in 834this case. 835 836Note: as a result of the overhaul of the namespace object types 837in the previous release, the namespace nodes for the predefined 838scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 839instead of ACPI_TYPE_ANY. This simplifies the namespace 840management code but may affect code that walks the namespace tree 841looking for specific object types. 842 843Code and Data Size: Current core subsystem library sizes are 844shown below. These are the code and data sizes for the 845acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 846these values do not include any ACPI driver or OSPM code. The 847debug version of the code includes the debug output trace 848mechanism and has a much larger code and data size. Note that 849these values will vary depending on the efficiency of the 850compiler and the compiler options used during generation. 851 852 Previous Release 853 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 854 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 855 Current Release: 856 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 857 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 858 859 8602) Linux 861 862Fixed a problem introduced in the previous release where the 863Processor and Thermal objects were not recognized and installed 864in /proc. This was related to the scope type change described 865above. 866 867 8683) iASL Compiler/Disassembler 869 870Implemented the -g option to get all of the required ACPI tables 871from the registry and save them to files (Windows version of the 872compiler only.) The required tables are the FADT, FACS, and 873DSDT. 874 875Added ACPI table checksum validation during table disassembly in 876order to catch corrupted tables. 877 878 879---------------------------------------- 88022 October 2002. Summary of changes for version 20021022. 881 8821) ACPI CA Core Subsystem: 883 884Implemented a restriction on the Scope operator that the target 885must already exist in the namespace at the time the operator is 886encountered (during table load or method execution). In other 887words, forward references are not allowed and Scope() cannot 888create a new object. This changes the previous behavior where the 889interpreter would create the name if not found. This new 890behavior correctly enables the search-to-root algorithm during 891namespace lookup of the target name. Because of this upsearch, 892this fixes the known Compaq _SB_.OKEC problem and makes both the 893AML interpreter and iASL compiler compatible with other ACPI 894implementations. 895 896Completed a major overhaul of the internal ACPI object types for 897the ACPI Namespace and the associated operand objects. Many of 898these types had become obsolete with the introduction of the two- 899pass namespace load. This cleanup simplifies the code and makes 900the entire namespace load mechanism much clearer and easier to 901understand. 902 903Improved debug output for tracking scope opening/closing to help 904diagnose scoping issues. The old scope name as well as the new 905scope name are displayed. Also improved error messages for 906problems with ASL Mutex objects and error messages for GPE 907problems. 908 909Cleaned up the namespace dump code, removed obsolete code. 910 911All string output (for all namespace/object dumps) now uses the 912common ACPI string output procedure which handles escapes 913properly and does not emit non-printable characters. 914 915Fixed some issues with constants in the 64-bit version of the 916local C library (utclib.c) 917 918 9192) Linux 920 921EC Driver: No longer attempts to acquire the Global Lock at 922interrupt level. 923 924 9253) iASL Compiler/Disassembler 926 927Implemented ACPI 2.0B grammar change that disallows all Type 1 928and 2 opcodes outside of a control method. This means that the 929"executable" operators (versus the "namespace" operators) cannot 930be used at the table level; they can only be used within a 931control method. 932 933Implemented the restriction on the Scope() operator where the 934target must already exist in the namespace at the time the 935operator is encountered (during ASL compilation). In other words, 936forward references are not allowed and Scope() cannot create a 937new object. This makes the iASL compiler compatible with other 938ACPI implementations and makes the Scope() implementation adhere 939to the ACPI specification. 940 941Fixed a problem where namepath optimization for the Alias 942operator was optimizing the wrong path (of the two namepaths.) 943This caused a "Missing alias link" error message. 944 945Fixed a problem where an "unknown reserved name" warning could be 946incorrectly generated for names like "_SB" when the trailing 947underscore is not used in the original ASL. 948 949Fixed a problem where the reserved name check did not handle 950NamePaths with multiple NameSegs correctly. The first nameseg of 951the NamePath was examined instead of the last NameSeg. 952 953 954---------------------------------------- 955 95602 October 2002. Summary of changes for this release. 957 958 9591) ACPI CA Core Subsystem version 20021002: 960 961Fixed a problem where a store/copy of a string to an existing 962string did not always set the string length properly in the 963String object. 964 965Fixed a reported problem with the ToString operator where the 966behavior was identical to the ToHexString operator instead of 967just simply converting a raw buffer to a string data type. 968 969Fixed a problem where CopyObject and the other "explicit" 970conversion operators were not updating the internal namespace 971node type as part of the store operation. 972 973Fixed a memory leak during implicit source operand conversion 974where the original object was not deleted if it was converted to 975a new object of a different type. 976 977Enhanced error messages for all problems associated with 978namespace lookups. Common procedure generates and prints the 979lookup name as well as the formatted status. 980 981Completed implementation of a new design for the Alias support 982within the namespace. The existing design did not handle the 983case where a new object was assigned to one of the two names due 984to the use of an explicit conversion operator, resulting in the 985two names pointing to two different objects. The new design 986simply points the Alias name to the original name node - not to 987the object. This results in a level of indirection that must be 988handled in the name resolution mechanism. 989 990Code and Data Size: Current core subsystem library sizes are 991shown below. These are the code and data sizes for the 992acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 993these values do not include any ACPI driver or OSPM code. The 994debug version of the code includes the debug output trace 995mechanism and has a larger code and data size. Note that these 996values will vary depending on the efficiency of the compiler and 997the compiler options used during generation. 998 999 Previous Release 1000 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 1001 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 1002 Current Release: 1003 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 1004 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 1005 1006 10072) Linux 1008 1009Initialize thermal driver's timer before it is used. (Knut 1010Neumann) 1011 1012Allow handling negative celsius values. (Kochi Takayoshi) 1013 1014Fix thermal management and make trip points. R/W (Pavel Machek) 1015 1016Fix /proc/acpi/sleep. (P. Christeas) 1017 1018IA64 fixes. (David Mosberger) 1019 1020Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 1021 1022Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 1023Brodowski) 1024 1025 10263) iASL Compiler/Disassembler 1027 1028Clarified some warning/error messages. 1029 1030 1031---------------------------------------- 103218 September 2002. Summary of changes for this release. 1033 1034 10351) ACPI CA Core Subsystem version 20020918: 1036 1037Fixed a reported problem with reference chaining (via the Index() 1038and RefOf() operators) in the ObjectType() and SizeOf() 1039operators. The definition of these operators includes the 1040dereferencing of all chained references to return information on 1041the base object. 1042 1043Fixed a problem with stores to indexed package elements - the 1044existing code would not complete the store if an "implicit 1045conversion" was not performed. In other words, if the existing 1046object (package element) was to be replaced completely, the code 1047didn't handle this case. 1048 1049Relaxed typechecking on the ASL "Scope" operator to allow the 1050target name to refer to an object of type Integer, String, or 1051Buffer, in addition to the scoping object types (Device, 1052predefined Scopes, Processor, PowerResource, and ThermalZone.) 1053This allows existing AML code that has workarounds for a bug in 1054Windows to function properly. A warning is issued, however. 1055This affects both the AML interpreter and the iASL compiler. 1056Below is an example of this type of ASL code: 1057 1058 Name(DEB,0x00) 1059 Scope(DEB) 1060 { 1061 1062Fixed some reported problems with 64-bit integer support in the 1063local implementation of C library functions (clib.c) 1064 1065 10662) Linux 1067 1068Use ACPI fix map region instead of IOAPIC region, since it is 1069undefined in non-SMP. 1070 1071Ensure that the SCI has the proper polarity and trigger, even on 1072systems that do not have an interrupt override entry in the MADT. 1073 10742.5 big driver reorganization (Pat Mochel) 1075 1076Use early table mapping code from acpitable.c (Andi Kleen) 1077 1078New blacklist entries (Andi Kleen) 1079 1080Blacklist improvements. Split blacklist code out into a separate 1081file. Move checking the blacklist to very early. Previously, we 1082would use ACPI tables, and then halfway through init, check the 1083blacklist -- too late. Now, it's early enough to completely fall- 1084back to non-ACPI. 1085 1086 10873) iASL Compiler/Disassembler version 20020918: 1088 1089Fixed a problem where the typechecking code didn't know that an 1090alias could point to a method. In other words, aliases were not 1091being dereferenced during typechecking. 1092 1093 1094---------------------------------------- 109529 August 2002. Summary of changes for this release. 1096 10971) ACPI CA Core Subsystem Version 20020829: 1098 1099If the target of a Scope() operator already exists, it must be an 1100object type that actually opens a scope -- such as a Device, 1101Method, Scope, etc. This is a fatal runtime error. Similar 1102error check has been added to the iASL compiler also. 1103 1104Tightened up the namespace load to disallow multiple names in the 1105same scope. This previously was allowed if both objects were of 1106the same type. (i.e., a lookup was the same as entering a new 1107name). 1108 1109 11102) Linux 1111 1112Ensure that the ACPI interrupt has the proper trigger and 1113polarity. 1114 1115local_irq_disable is extraneous. (Matthew Wilcox) 1116 1117Make "acpi=off" actually do what it says, and not use the ACPI 1118interpreter *or* the tables. 1119 1120Added arch-neutral support for parsing SLIT and SRAT tables 1121(Kochi Takayoshi) 1122 1123 11243) iASL Compiler/Disassembler Version 20020829: 1125 1126Implemented namepath optimization for name declarations. For 1127example, a declaration like "Method (\_SB_.ABCD)" would get 1128optimized to "Method (ABCD)" if the declaration is within the 1129\_SB_ scope. This optimization is in addition to the named 1130reference path optimization first released in the previous 1131version. This would seem to complete all possible optimizations 1132for namepaths within the ASL/AML. 1133 1134If the target of a Scope() operator already exists, it must be an 1135object type that actually opens a scope -- such as a Device, 1136Method, Scope, etc. 1137 1138Implemented a check and warning for unreachable code in the same 1139block below a Return() statement. 1140 1141Fixed a problem where the listing file was not generated if the 1142compiler aborted if the maximum error count was exceeded (200). 1143 1144Fixed a problem where the typechecking of method return values 1145was broken. This includes the check for a return value when the 1146method is invoked as a TermArg (a return value is expected.) 1147 1148Fixed a reported problem where EOF conditions during a quoted 1149string or comment caused a fault. 1150 1151 1152---------------------------------------- 115315 August 2002. Summary of changes for this release. 1154 11551) ACPI CA Core Subsystem Version 20020815: 1156 1157Fixed a reported problem where a Store to a method argument that 1158contains a reference did not perform the indirect store 1159correctly. This problem was created during the conversion to the 1160new reference object model - the indirect store to a method 1161argument code was not updated to reflect the new model. 1162 1163Reworked the ACPI mode change code to better conform to ACPI 2.0, 1164handle corner cases, and improve code legibility (Kochi 1165Takayoshi) 1166 1167Fixed a problem with the pathname parsing for the carat (^) 1168prefix. The heavy use of the carat operator by the new namepath 1169optimization in the iASL compiler uncovered a problem with the 1170AML interpreter handling of this prefix. In the case where one 1171or more carats precede a single nameseg, the nameseg was treated 1172as standalone and the search rule (to root) was inadvertently 1173applied. This could cause both the iASL compiler and the 1174interpreter to find the wrong object or to miss the error that 1175should occur if the object does not exist at that exact pathname. 1176 1177Found and fixed the problem where the HP Pavilion DSDT would not 1178load. This was a relatively minor tweak to the table loading 1179code (a problem caused by the unexpected encounter with a method 1180invocation not within a control method), but it does not solve 1181the overall issue of the execution of AML code at the table 1182level. This investigation is still ongoing. 1183 1184Code and Data Size: Current core subsystem library sizes are 1185shown below. These are the code and data sizes for the 1186acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1187these values do not include any ACPI driver or OSPM code. The 1188debug version of the code includes the debug output trace 1189mechanism and has a larger code and data size. Note that these 1190values will vary depending on the efficiency of the compiler and 1191the compiler options used during generation. 1192 1193 Previous Release 1194 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 1195 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 1196 Current Release: 1197 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 1198 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 1199 1200 12012) Linux 1202 1203Remove redundant slab.h include (Brad Hards) 1204 1205Fix several bugs in thermal.c (Herbert Nachtnebel) 1206 1207Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 1208 1209Change acpi_system_suspend to use updated irq functions (Pavel 1210Machek) 1211 1212Export acpi_get_firmware_table (Matthew Wilcox) 1213 1214Use proper root proc entry for ACPI (Kochi Takayoshi) 1215 1216Fix early-boot table parsing (Bjorn Helgaas) 1217 1218 12193) iASL Compiler/Disassembler 1220 1221Reworked the compiler options to make them more consistent and to 1222use two-letter options where appropriate. We were running out of 1223sensible letters. This may break some makefiles, so check the 1224current options list by invoking the compiler with no parameters. 1225 1226Completed the design and implementation of the ASL namepath 1227optimization option for the compiler. This option optimizes all 1228references to named objects to the shortest possible path. The 1229first attempt tries to utilize a single nameseg (4 characters) 1230and the "search-to-root" algorithm used by the interpreter. If 1231that cannot be used (because either the name is not in the search 1232path or there is a conflict with another object with the same 1233name), the pathname is optimized using the carat prefix (usually 1234a shorter string than specifying the entire path from the root.) 1235 1236Implemented support to obtain the DSDT from the Windows registry 1237(when the disassembly option is specified with no input file). 1238Added this code as the implementation for AcpiOsTableOverride in 1239the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 1240utility) to scan memory for the DSDT to the AcpiOsTableOverride 1241function in the DOS OSL to make the disassembler truly OS 1242independent. 1243 1244Implemented a new option to disassemble and compile in one step. 1245When used without an input filename, this option will grab the 1246DSDT from the local machine, disassemble it, and compile it in 1247one step. 1248 1249Added a warning message for invalid escapes (a backslash followed 1250by any character other than the allowable escapes). This catches 1251the quoted string error "\_SB_" (which should be "\\_SB_" ). 1252Also, there are numerous instances in the ACPI specification 1253where this error occurs. 1254 1255Added a compiler option to disable all optimizations. This is 1256basically the "compatibility mode" because by using this option, 1257the AML code will come out exactly the same as other ASL 1258compilers. 1259 1260Added error messages for incorrectly ordered dependent resource 1261functions. This includes: missing EndDependentFn macro at end of 1262dependent resource list, nested dependent function macros (both 1263start and end), and missing StartDependentFn macro. These are 1264common errors that should be caught at compile time. 1265 1266Implemented _OSI support for the disassembler and compiler. _OSI 1267must be included in the namespace for proper disassembly (because 1268the disassembler must know the number of arguments.) 1269 1270Added an "optimization" message type that is optional (off by 1271default). This message is used for all optimizations - including 1272constant folding, integer optimization, and namepath 1273optimization. 1274 1275---------------------------------------- 127625 July 2002. Summary of changes for this release. 1277 1278 12791) ACPI CA Core Subsystem Version 20020725: 1280 1281The AML Disassembler has been enhanced to produce compilable ASL 1282code and has been integrated into the iASL compiler (see below) 1283as well as the single-step disassembly for the AML debugger and 1284the disassembler for the AcpiDump utility. All ACPI 2.0A 1285opcodes, resource templates and macros are fully supported. The 1286disassembler has been tested on over 30 different AML files, 1287producing identical AML when the resulting disassembled ASL file 1288is recompiled with the same ASL compiler. 1289 1290Modified the Resource Manager to allow zero interrupts and zero 1291dma channels during the GetCurrentResources call. This was 1292causing problems on some platforms. 1293 1294Added the AcpiOsRedirectOutput interface to the OSL to simplify 1295output redirection for the AcpiOsPrintf and AcpiOsVprintf 1296interfaces. 1297 1298Code and Data Size: Current core subsystem library sizes are 1299shown below. These are the code and data sizes for the 1300acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1301these values do not include any ACPI driver or OSPM code. The 1302debug version of the code includes the debug output trace 1303mechanism and has a larger code and data size. Note that these 1304values will vary depending on the efficiency of the compiler and 1305the compiler options used during generation. 1306 1307 Previous Release 1308 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 1309 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 1310 Current Release: 1311 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 1312 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 1313 1314 13152) Linux 1316 1317Fixed a panic in the EC driver (Dominik Brodowski) 1318 1319Implemented checksum of the R/XSDT itself during Linux table scan 1320(Richard Schaal) 1321 1322 13233) iASL compiler 1324 1325The AML disassembler is integrated into the compiler. The "-d" 1326option invokes the disassembler to completely disassemble an 1327input AML file, producing as output a text ASL file with the 1328extension ".dsl" (to avoid name collisions with existing .asl 1329source files.) A future enhancement will allow the disassembler 1330to obtain the BIOS DSDT from the registry under Windows. 1331 1332Fixed a problem with the VendorShort and VendorLong resource 1333descriptors where an invalid AML sequence was created. 1334 1335Implemented a fix for BufferData term in the ASL parser. It was 1336inadvertently defined twice, allowing invalid syntax to pass and 1337causing reduction conflicts. 1338 1339Fixed a problem where the Ones opcode could get converted to a 1340value of zero if "Ones" was used where a byte, word or dword 1341value was expected. The 64-bit value is now truncated to the 1342correct size with the correct value. 1343 1344 1345---------------------------------------- 134602 July 2002. Summary of changes for this release. 1347 1348 13491) ACPI CA Core Subsystem Version 20020702: 1350 1351The Table Manager code has been restructured to add several new 1352features. Tables that are not required by the core subsystem 1353(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 1354validated in any way and are returned from AcpiGetFirmwareTable 1355if requested. The AcpiOsTableOverride interface is now called 1356for each table that is loaded by the subsystem in order to allow 1357the host to override any table it chooses. Previously, only the 1358DSDT could be overridden. Added one new files, tbrsdt.c and 1359tbgetall.c. 1360 1361Fixed a problem with the conversion of internal package objects 1362to external objects (when a package is returned from a control 1363method.) The return buffer length was set to zero instead of the 1364proper length of the package object. 1365 1366Fixed a reported problem with the use of the RefOf and DeRefOf 1367operators when passing reference arguments to control methods. A 1368new type of Reference object is used internally for references 1369produced by the RefOf operator. 1370 1371Added additional error messages in the Resource Manager to 1372explain AE_BAD_DATA errors when they occur during resource 1373parsing. 1374 1375Split the AcpiEnableSubsystem into two primitives to enable a 1376finer granularity initialization sequence. These two calls 1377should be called in this order: AcpiEnableSubsystem (flags), 1378AcpiInitializeObjects (flags). The flags parameter remains the 1379same. 1380 1381 13822) Linux 1383 1384Updated the ACPI utilities module to understand the new style of 1385fully resolved package objects that are now returned from the 1386core subsystem. This eliminates errors of the form: 1387 1388 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 1389 acpi_utils-0430 [145] acpi_evaluate_reference: 1390 Invalid element in package (not a device reference) 1391 1392The method evaluation utility uses the new buffer allocation 1393scheme instead of calling AcpiEvaluate Object twice. 1394 1395Added support for ECDT. This allows the use of the Embedded 1396Controller before the namespace has been fully initialized, which 1397is necessary for ACPI 2.0 support, and for some laptops to 1398initialize properly. (Laptops using ECDT are still rare, so only 1399limited testing was performed of the added functionality.) 1400 1401Fixed memory leaks in the EC driver. 1402 1403Eliminated a brittle code structure in acpi_bus_init(). 1404 1405Eliminated the acpi_evaluate() helper function in utils.c. It is 1406no longer needed since acpi_evaluate_object can optionally 1407allocate memory for the return object. 1408 1409Implemented fix for keyboard hang when getting battery readings 1410on some systems (Stephen White) 1411 1412PCI IRQ routing update (Dominik Brodowski) 1413 1414Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 1415support 1416 1417---------------------------------------- 141811 June 2002. Summary of changes for this release. 1419 1420 14211) ACPI CA Core Subsystem Version 20020611: 1422 1423Fixed a reported problem where constants such as Zero and One 1424appearing within _PRT packages were not handled correctly within 1425the resource manager code. Originally reported against the ASL 1426compiler because the code generator now optimizes integers to 1427their minimal AML representation (i.e. AML constants if 1428possible.) The _PRT code now handles all AML constant opcodes 1429correctly (Zero, One, Ones, Revision). 1430 1431Fixed a problem with the Concatenate operator in the AML 1432interpreter where a buffer result object was incorrectly marked 1433as not fully evaluated, causing a run-time error of 1434AE_AML_INTERNAL. 1435 1436All package sub-objects are now fully resolved before they are 1437returned from the external ACPI interfaces. This means that name 1438strings are resolved to object handles, and constant operators 1439(Zero, One, Ones, Revision) are resolved to Integers. 1440 1441Implemented immediate resolution of the AML Constant opcodes 1442(Zero, One, Ones, Revision) to Integer objects upon detection 1443within the AML stream. This has simplified and reduced the 1444generated code size of the subsystem by eliminating about 10 1445switch statements for these constants (which previously were 1446contained in Reference objects.) The complicating issues are 1447that the Zero opcode is used as a "placeholder" for unspecified 1448optional target operands and stores to constants are defined to 1449be no-ops. 1450 1451Code and Data Size: Current core subsystem library sizes are 1452shown below. These are the code and data sizes for the acpica.lib 1453produced by the Microsoft Visual C++ 6.0 compiler, and these 1454values do not include any ACPI driver or OSPM code. The debug 1455version of the code includes the debug output trace mechanism and 1456has a larger code and data size. Note that these values will 1457vary depending on the efficiency of the compiler and the compiler 1458options used during generation. 1459 1460 Previous Release 1461 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 1462 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 1463 Current Release: 1464 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 1465 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 1466 1467 14682) Linux 1469 1470Added preliminary support for obtaining _TRA data for PCI root 1471bridges (Bjorn Helgaas). 1472 1473 14743) iASL Compiler Version X2046: 1475 1476Fixed a problem where the "_DDN" reserved name was defined to be 1477a control method with one argument. There are no arguments, and 1478_DDN does not have to be a control method. 1479 1480Fixed a problem with the Linux version of the compiler where the 1481source lines printed with error messages were the wrong lines. 1482This turned out to be the "LF versus CR/LF" difference between 1483Windows and Unix. This appears to be the longstanding issue 1484concerning listing output and error messages. 1485 1486Fixed a problem with the Linux version of compiler where opcode 1487names within error messages were wrong. This was caused by a 1488slight difference in the output of the Flex tool on Linux versus 1489Windows. 1490 1491Fixed a problem with the Linux compiler where the hex output 1492files contained some garbage data caused by an internal buffer 1493overrun. 1494 1495 1496---------------------------------------- 149717 May 2002. Summary of changes for this release. 1498 1499 15001) ACPI CA Core Subsystem Version 20020517: 1501 1502Implemented a workaround to an BIOS bug discovered on the HP 1503OmniBook where the FADT revision number and the table size are 1504inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The 1505new behavior is to fallback to using only the ACPI 1.0 fields of 1506the FADT if the table is too small to be a ACPI 2.0 table as 1507claimed by the revision number. Although this is a BIOS bug, 1508this is a case where the workaround is simple enough and with no 1509side effects, so it seemed prudent to add it. A warning message 1510is issued, however. 1511 1512Implemented minimum size checks for the fixed-length ACPI tables 1513-- the FADT and FACS, as well as consistency checks between the 1514revision number and the table size. 1515 1516Fixed a reported problem in the table override support where the 1517new table pointer was incorrectly treated as a physical address 1518instead of a logical address. 1519 1520Eliminated the use of the AE_AML_ERROR exception and replaced it 1521with more descriptive codes. 1522 1523Fixed a problem where an exception would occur if an ASL Field 1524was defined with no named Field Units underneath it (used by some 1525index fields). 1526 1527Code and Data Size: Current core subsystem library sizes are 1528shown below. These are the code and data sizes for the 1529acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1530these values do not include any ACPI driver or OSPM code. The 1531debug version of the code includes the debug output trace 1532mechanism and has a larger code and data size. Note that these 1533values will vary depending on the efficiency of the compiler and 1534the compiler options used during generation. 1535 1536 Previous Release 1537 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 1538 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 1539 Current Release: 1540 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 1541 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 1542 1543 1544 15452) Linux 1546 1547Much work done on ACPI init (MADT and PCI IRQ routing support). 1548(Paul D. and Dominik Brodowski) 1549 1550Fix PCI IRQ-related panic on boot (Sam Revitch) 1551 1552Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 1553 1554Fix "MHz" typo (Dominik Brodowski) 1555 1556Fix RTC year 2000 issue (Dominik Brodowski) 1557 1558Preclude multiple button proc entries (Eric Brunet) 1559 1560Moved arch-specific code out of include/platform/aclinux.h 1561 15623) iASL Compiler Version X2044: 1563 1564Implemented error checking for the string used in the EISAID 1565macro (Usually used in the definition of the _HID object.) The 1566code now strictly enforces the PnP format - exactly 7 characters, 15673 uppercase letters and 4 hex digits. 1568 1569If a raw string is used in the definition of the _HID object 1570(instead of the EISAID macro), the string must contain all 1571alphanumeric characters (e.g., "*PNP0011" is not allowed because 1572of the asterisk.) 1573 1574Implemented checking for invalid use of ACPI reserved names for 1575most of the name creation operators (Name, Device, Event, Mutex, 1576OperationRegion, PowerResource, Processor, and ThermalZone.) 1577Previously, this check was only performed for control methods. 1578 1579Implemented an additional check on the Name operator to emit an 1580error if a reserved name that must be implemented in ASL as a 1581control method is used. We know that a reserved name must be a 1582method if it is defined with input arguments. 1583 1584The warning emitted when a namespace object reference is not 1585found during the cross reference phase has been changed into an 1586error. The "External" directive should be used for names defined 1587in other modules. 1588 1589 15904) Tools and Utilities 1591 1592The 16-bit tools (adump16 and aexec16) have been regenerated and 1593tested. 1594 1595Fixed a problem with the output of both acpidump and adump16 1596where the indentation of closing parentheses and brackets was not 1597aligned properly with the parent block. 1598 1599 1600---------------------------------------- 160103 May 2002. Summary of changes for this release. 1602 1603 16041) ACPI CA Core Subsystem Version 20020503: 1605 1606Added support a new OSL interface that allows the host operating 1607system software to override the DSDT found in the firmware - 1608AcpiOsTableOverride. With this interface, the OSL can examine 1609the version of the firmware DSDT and replace it with a different 1610one if desired. 1611 1612Added new external interfaces for accessing ACPI registers from 1613device drivers and other system software - AcpiGetRegister and 1614AcpiSetRegister. This was simply an externalization of the 1615existing AcpiHwBitRegister interfaces. 1616 1617Fixed a regression introduced in the previous build where the 1618ASL/AML CreateField operator always returned an error, 1619"destination must be a NS Node". 1620 1621Extended the maximum time (before failure) to successfully enable 1622ACPI mode to 3 seconds. 1623 1624Code and Data Size: Current core subsystem library sizes are 1625shown below. These are the code and data sizes for the 1626acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1627these values do not include any ACPI driver or OSPM code. The 1628debug version of the code includes the debug output trace 1629mechanism and has a larger code and data size. Note that these 1630values will vary depending on the efficiency of the compiler and 1631the compiler options used during generation. 1632 1633 Previous Release 1634 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 1635 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 1636 Current Release: 1637 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 1638 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 1639 1640 16412) Linux 1642 1643Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 1644free. While 3 out of 4 of our in-house systems work fine, the 1645last one still hangs when testing the LAPIC timer. 1646 1647Renamed many files in 2.5 kernel release to omit "acpi_" from the 1648name. 1649 1650Added warning on boot for Presario 711FR. 1651 1652Sleep improvements (Pavel Machek) 1653 1654ACPI can now be built without CONFIG_PCI enabled. 1655 1656IA64: Fixed memory map functions (JI Lee) 1657 1658 16593) iASL Compiler Version X2043: 1660 1661Added support to allow the compiler to be integrated into the MS 1662VC++ development environment for one-button compilation of single 1663files or entire projects -- with error-to-source-line mapping. 1664 1665Implemented support for compile-time constant folding for the 1666Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 1667specification. This allows the ASL writer to use expressions 1668instead of Integer/Buffer/String constants in terms that must 1669evaluate to constants at compile time and will also simplify the 1670emitted AML in any such sub-expressions that can be folded 1671(evaluated at compile-time.) This increases the size of the 1672compiler significantly because a portion of the ACPI CA AML 1673interpreter is included within the compiler in order to pre- 1674evaluate constant expressions. 1675 1676 1677Fixed a problem with the "Unicode" ASL macro that caused the 1678compiler to fault. (This macro is used in conjunction with the 1679_STR reserved name.) 1680 1681Implemented an AML opcode optimization to use the Zero, One, and 1682Ones opcodes where possible to further reduce the size of integer 1683constants and thus reduce the overall size of the generated AML 1684code. 1685 1686Implemented error checking for new reserved terms for ACPI 1687version 2.0A. 1688 1689Implemented the -qr option to display the current list of ACPI 1690reserved names known to the compiler. 1691 1692Implemented the -qc option to display the current list of ASL 1693operators that are allowed within constant expressions and can 1694therefore be folded at compile time if the operands are 1695constants. 1696 1697 16984) Documentation 1699 1700Updated the Programmer's Reference for new interfaces, data 1701types, and memory allocation model options. 1702 1703Updated the iASL Compiler User Reference to apply new format and 1704add information about new features and options. 1705 1706---------------------------------------- 170719 April 2002. Summary of changes for this release. 1708 17091) ACPI CA Core Subsystem Version 20020419: 1710 1711The source code base for the Core Subsystem has been completely 1712cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 1713versions. The Lint option files used are included in the 1714/acpi/generate/lint directory. 1715 1716Implemented enhanced status/error checking across the entire 1717Hardware manager subsystem. Any hardware errors (reported from 1718the OSL) are now bubbled up and will abort a running control 1719method. 1720 1721Fixed a problem where the per-ACPI-table integer width (32 or 64) 1722was stored only with control method nodes, causing a fault when 1723non-control method code was executed during table loading. The 1724solution implemented uses a global variable to indicate table 1725width across the entire ACPI subsystem. Therefore, ACPI CA does 1726not support mixed integer widths across different ACPI tables 1727(DSDT, SSDT). 1728 1729Fixed a problem where NULL extended fields (X fields) in an ACPI 17302.0 ACPI FADT caused the table load to fail. Although the 1731existing ACPI specification is a bit fuzzy on this topic, the new 1732behavior is to fall back on a ACPI 1.0 field if the corresponding 1733ACPI 2.0 X field is zero (even though the table revision 1734indicates a full ACPI 2.0 table.) The ACPI specification will be 1735updated to clarify this issue. 1736 1737Fixed a problem with the SystemMemory operation region handler 1738where memory was always accessed byte-wise even if the AML- 1739specified access width was larger than a byte. This caused 1740problems on systems with memory-mapped I/O. Memory is now 1741accessed with the width specified. On systems that do not 1742support non-aligned transfers, a check is made to guarantee 1743proper address alignment before proceeding in order to avoid an 1744AML-caused alignment fault within the kernel. 1745 1746 1747Fixed a problem with the ExtendedIrq resource where only one byte 1748of the 4-byte Irq field was extracted. 1749 1750Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 1751function was out of date and required a rewrite. 1752 1753Code and Data Size: Current core subsystem library sizes are 1754shown below. These are the code and data sizes for the 1755acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1756these values do not include any ACPI driver or OSPM code. The 1757debug version of the code includes the debug output trace 1758mechanism and has a larger code and data size. Note that these 1759values will vary depending on the efficiency of the compiler and 1760the compiler options used during generation. 1761 1762 Previous Release 1763 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 1764 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 1765 Current Release: 1766 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 1767 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 1768 1769 17702) Linux 1771 1772PCI IRQ routing fixes (Dominik Brodowski) 1773 1774 17753) iASL Compiler Version X2042: 1776 1777Implemented an additional compile-time error check for a field 1778unit whose size + minimum access width would cause a run-time 1779access beyond the end-of-region. Previously, only the field size 1780itself was checked. 1781 1782The Core subsystem and iASL compiler now share a common parse 1783object in preparation for compile-time evaluation of the type 17843/4/5 ASL operators. 1785 1786 1787---------------------------------------- 1788Summary of changes for this release: 03_29_02 1789 17901) ACPI CA Core Subsystem Version 20020329: 1791 1792Implemented support for late evaluation of TermArg operands to 1793Buffer and Package objects. This allows complex expressions to 1794be used in the declarations of these object types. 1795 1796Fixed an ACPI 1.0 compatibility issue when reading Fields. In 1797ACPI 1.0, if the field was larger than 32 bits, it was returned 1798as a buffer - otherwise it was returned as an integer. In ACPI 17992.0, the field is returned as a buffer only if the field is 1800larger than 64 bits. The TableRevision is now considered when 1801making this conversion to avoid incompatibility with existing ASL 1802code. 1803 1804Implemented logical addressing for AcpiOsGetRootPointer. This 1805allows an RSDP with either a logical or physical address. With 1806this support, the host OS can now override all ACPI tables with 1807one logical RSDP. Includes implementation of "typed" pointer 1808support to allow a common data type for both physical and logical 1809pointers internally. This required a change to the 1810AcpiOsGetRootPointer interface. 1811 1812Implemented the use of ACPI 2.0 Generic Address Structures for 1813all GPE, Fixed Event, and PM Timer I/O. This allows the use of 1814memory mapped I/O for these ACPI features. 1815 1816Initialization now ignores not only non-required tables (All 1817tables other than the FADT, FACS, DSDT, and SSDTs), but also does 1818not validate the table headers of unrecognized tables. 1819 1820Fixed a problem where a notify handler could only be 1821installed/removed on an object of type Device. All "notify" 1822objects are now supported -- Devices, Processor, Power, and 1823Thermal. 1824 1825Removed most verbosity from the ACPI_DB_INFO debug level. Only 1826critical information is returned when this debug level is 1827enabled. 1828 1829Code and Data Size: Current core subsystem library sizes are 1830shown below. These are the code and data sizes for the 1831acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1832these values do not include any ACPI driver or OSPM code. The 1833debug version of the code includes the debug output trace 1834mechanism and has a larger code and data size. Note that these 1835values will vary depending on the efficiency of the compiler and 1836the compiler options used during generation. 1837 1838 Previous Release 1839 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 1840 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 1841 Current Release: 1842 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 1843 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 1844 1845 18462) Linux: 1847 1848The processor driver (acpi_processor.c) now fully supports ACPI 18492.0-based processor performance control (e.g. Intel(R) 1850SpeedStep(TM) technology) Note that older laptops that only have 1851the Intel "applet" interface are not supported through this. The 1852'limit' and 'performance' interface (/proc) are fully functional. 1853[Note that basic policy for controlling performance state 1854transitions will be included in the next version of ospmd.] The 1855idle handler was modified to more aggressively use C2, and PIIX4 1856errata handling underwent a complete overhaul (big thanks to 1857Dominik Brodowski). 1858 1859Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 1860based devices in the ACPI namespace are now dynamically bound 1861(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 1862This allows, among other things, ACPI to resolve bus numbers for 1863subordinate PCI bridges. 1864 1865Enhanced PCI IRQ routing to get the proper bus number for _PRT 1866entries defined underneath PCI bridges. 1867 1868Added IBM 600E to bad bios list due to invalid _ADR value for 1869PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 1870 1871In the process of adding full MADT support (e.g. IOAPIC) for IA32 1872(acpi.c, mpparse.c) -- stay tuned. 1873 1874Added back visual differentiation between fixed-feature and 1875control-method buttons in dmesg. Buttons are also subtyped (e.g. 1876button/power/PWRF) to simplify button identification. 1877 1878We no longer use -Wno-unused when compiling debug. Please ignore 1879any "_THIS_MODULE defined but not used" messages. 1880 1881Can now shut down the system using "magic sysrq" key. 1882 1883 18843) iASL Compiler version 2041: 1885 1886Fixed a problem where conversion errors for hex/octal/decimal 1887constants were not reported. 1888 1889Implemented a fix for the General Register template Address 1890field. This field was 8 bits when it should be 64. 1891 1892Fixed a problem where errors/warnings were no longer being 1893emitted within the listing output file. 1894 1895Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 1896exactly 4 characters, alphanumeric only. 1897 1898 1899 1900 1901---------------------------------------- 1902Summary of changes for this release: 03_08_02 1903 1904 19051) ACPI CA Core Subsystem Version 20020308: 1906 1907Fixed a problem with AML Fields where the use of the "AccessAny" 1908keyword could cause an interpreter error due to attempting to 1909read or write beyond the end of the parent Operation Region. 1910 1911Fixed a problem in the SystemMemory Operation Region handler 1912where an attempt was made to map memory beyond the end of the 1913region. This was the root cause of the "AE_ERROR" and 1914"AE_NO_MEMORY" errors on some Linux systems. 1915 1916Fixed a problem where the interpreter/namespace "search to root" 1917algorithm was not functioning for some object types. Relaxed the 1918internal restriction on the search to allow upsearches for all 1919external object types as well as most internal types. 1920 1921 19222) Linux: 1923 1924We now use safe_halt() macro versus individual calls to sti | 1925hlt. 1926 1927Writing to the processor limit interface should now work. "echo 19281" will increase the limit, 2 will decrease, and 0 will reset to 1929the default. 1930 1931 19323) ASL compiler: 1933 1934Fixed segfault on Linux version. 1935 1936 1937---------------------------------------- 1938Summary of changes for this release: 02_25_02 1939 19401) ACPI CA Core Subsystem: 1941 1942 1943Fixed a problem where the GPE bit masks were not initialized 1944properly, causing erratic GPE behavior. 1945 1946Implemented limited support for multiple calling conventions. 1947The code can be generated with either the VPL (variable parameter 1948list, or "C") convention, or the FPL (fixed parameter list, or 1949"Pascal") convention. The core subsystem is about 3.4% smaller 1950when generated with FPL. 1951 1952 19532) Linux 1954 1955Re-add some /proc/acpi/event functionality that was lost during 1956the rewrite 1957 1958Resolved issue with /proc events for fixed-feature buttons 1959showing up as the system device. 1960 1961Fixed checks on C2/C3 latencies to be inclusive of maximum 1962values. 1963 1964Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 1965 1966Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 1967 1968Fixed limit interface & usage to fix bugs with passive cooling 1969hysterisis. 1970 1971Restructured PRT support. 1972 1973 1974---------------------------------------- 1975Summary of changes for this label: 02_14_02 1976 1977 19781) ACPI CA Core Subsystem: 1979 1980Implemented support in AcpiLoadTable to allow loading of FACS and 1981FADT tables. 1982 1983Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 1984been removed. All 64-bit platforms should be migrated to the 1985ACPI 2.0 tables. The actbl71.h header has been removed from the 1986source tree. 1987 1988All C macros defined within the subsystem have been prefixed with 1989"ACPI_" to avoid collision with other system include files. 1990 1991Removed the return value for the two AcpiOsPrint interfaces, 1992since it is never used and causes lint warnings for ignoring the 1993return value. 1994 1995Added error checking to all internal mutex acquire and release 1996calls. Although a failure from one of these interfaces is 1997probably a fatal system error, these checks will cause the 1998immediate abort of the currently executing method or interface. 1999 2000Fixed a problem where the AcpiSetCurrentResources interface could 2001fault. This was a side effect of the deployment of the new 2002memory allocation model. 2003 2004Fixed a couple of problems with the Global Lock support 2005introduced in the last major build. The "common" (1.0/2.0) 2006internal FACS was being overwritten with the FACS signature and 2007clobbering the Global Lock pointer. Also, the actual firmware 2008FACS was being unmapped after construction of the "common" FACS, 2009preventing access to the actual Global Lock field within it. The 2010"common" internal FACS is no longer installed as an actual ACPI 2011table; it is used simply as a global. 2012 2013Code and Data Size: Current core subsystem library sizes are 2014shown below. These are the code and data sizes for the 2015acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 2016these values do not include any ACPI driver or OSPM code. The 2017debug version of the code includes the debug output trace 2018mechanism and has a larger code and data size. Note that these 2019values will vary depending on the efficiency of the compiler and 2020the compiler options used during generation. 2021 2022 Previous Release (02_07_01) 2023 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 2024 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 2025 Current Release: 2026 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 2027 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 2028 2029 20302) Linux 2031 2032Updated Linux-specific code for core macro and OSL interface 2033changes described above. 2034 2035Improved /proc/acpi/event. It now can be opened only once and has 2036proper poll functionality. 2037 2038Fixed and restructured power management (acpi_bus). 2039 2040Only create /proc "view by type" when devices of that class 2041exist. 2042 2043Fixed "charging/discharging" bug (and others) in acpi_battery. 2044 2045Improved thermal zone code. 2046 2047 20483) ASL Compiler, version X2039: 2049 2050 2051Implemented the new compiler restriction on ASL String hex/octal 2052escapes to non-null, ASCII values. An error results if an 2053invalid value is used. (This will require an ACPI 2.0 2054specification change.) 2055 2056AML object labels that are output to the optional C and ASM 2057source are now prefixed with both the ACPI table signature and 2058table ID to help guarantee uniqueness within a large BIOS 2059project. 2060 2061 2062---------------------------------------- 2063Summary of changes for this label: 02_01_02 2064 20651) ACPI CA Core Subsystem: 2066 2067ACPI 2.0 support is complete in the entire Core Subsystem and the 2068ASL compiler. All new ACPI 2.0 operators are implemented and all 2069other changes for ACPI 2.0 support are complete. With 2070simultaneous code and data optimizations throughout the 2071subsystem, ACPI 2.0 support has been implemented with almost no 2072additional cost in terms of code and data size. 2073 2074Implemented a new mechanism for allocation of return buffers. If 2075the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 2076be allocated on behalf of the caller. Consolidated all return 2077buffer validation and allocation to a common procedure. Return 2078buffers will be allocated via the primary OSL allocation 2079interface since it appears that a separate pool is not needed by 2080most users. If a separate pool is required for these buffers, 2081the caller can still use the original mechanism and pre-allocate 2082the buffer(s). 2083 2084Implemented support for string operands within the DerefOf 2085operator. 2086 2087Restructured the Hardware and Event managers to be table driven, 2088simplifying the source code and reducing the amount of generated 2089code. 2090 2091Split the common read/write low-level ACPI register bitfield 2092procedure into a separate read and write, simplifying the code 2093considerably. 2094 2095Obsoleted the AcpiOsCallocate OSL interface. This interface was 2096used only a handful of times and didn't have enough critical mass 2097for a separate interface. Replaced with a common calloc 2098procedure in the core. 2099 2100Fixed a reported problem with the GPE number mapping mechanism 2101that allows GPE1 numbers to be non-contiguous with GPE0. 2102Reorganized the GPE information and shrunk a large array that was 2103originally large enough to hold info for all possible GPEs (256) 2104to simply large enough to hold all GPEs up to the largest GPE 2105number on the machine. 2106 2107Fixed a reported problem with resource structure alignment on 64- 2108bit platforms. 2109 2110Changed the AcpiEnableEvent and AcpiDisableEvent external 2111interfaces to not require any flags for the common case of 2112enabling/disabling a GPE. 2113 2114Implemented support to allow a "Notify" on a Processor object. 2115 2116Most TBDs in comments within the source code have been resolved 2117and eliminated. 2118 2119Fixed a problem in the interpreter where a standalone parent 2120prefix (^) was not handled correctly in the interpreter and 2121debugger. 2122 2123Removed obsolete and unnecessary GPE save/restore code. 2124 2125Implemented Field support in the ASL Load operator. This allows 2126a table to be loaded from a named field, in addition to loading a 2127table directly from an Operation Region. 2128 2129Implemented timeout and handle support in the external Global 2130Lock interfaces. 2131 2132Fixed a problem in the AcpiDump utility where pathnames were no 2133longer being generated correctly during the dump of named 2134objects. 2135 2136Modified the AML debugger to give a full display of if/while 2137predicates instead of just one AML opcode at a time. (The 2138predicate can have several nested ASL statements.) The old 2139method was confusing during single stepping. 2140 2141Code and Data Size: Current core subsystem library sizes are 2142shown below. These are the code and data sizes for the acpica.lib 2143produced by the Microsoft Visual C++ 6.0 compiler, and these 2144values do not include any ACPI driver or OSPM code. The debug 2145version of the code includes the debug output trace mechanism and 2146has a larger code and data size. Note that these values will 2147vary depending on the efficiency of the compiler and the compiler 2148options used during generation. 2149 2150 Previous Release (12_18_01) 2151 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 2152 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 2153 Current Release: 2154 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 2155 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 2156 21572) Linux 2158 2159 Implemented fix for PIIX reverse throttling errata (Processor 2160driver) 2161 2162Added new Limit interface (Processor and Thermal drivers) 2163 2164New thermal policy (Thermal driver) 2165 2166Many updates to /proc 2167 2168Battery "low" event support (Battery driver) 2169 2170Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 2171 2172IA32 - IA64 initialization unification, no longer experimental 2173 2174Menuconfig options redesigned 2175 21763) ASL Compiler, version X2037: 2177 2178Implemented several new output features to simplify integration 2179of AML code into firmware: 1) Output the AML in C source code 2180with labels for each named ASL object. The original ASL 2181source code is interleaved as C comments. 2) Output the AML in 2182ASM source code with labels and interleaved ASL source. 3) 2183Output the AML in raw hex table form, in either C or ASM. 2184 2185Implemented support for optional string parameters to the 2186LoadTable operator. 2187 2188Completed support for embedded escape sequences within string 2189literals. The compiler now supports all single character escapes 2190as well as the Octal and Hex escapes. Note: the insertion of a 2191null byte into a string literal (via the hex/octal escape) causes 2192the string to be immediately terminated. A warning is issued. 2193 2194Fixed a problem where incorrect AML was generated for the case 2195where an ASL namepath consists of a single parent prefix ( 2196 2197) with no trailing name segments. 2198 2199The compiler has been successfully generated with a 64-bit C 2200compiler. 2201 2202 2203 2204 2205---------------------------------------- 2206Summary of changes for this label: 12_18_01 2207 22081) Linux 2209 2210Enhanced blacklist with reason and severity fields. Any table's 2211signature may now be used to identify a blacklisted system. 2212 2213Call _PIC control method to inform the firmware which interrupt 2214model the OS is using. Turn on any disabled link devices. 2215 2216Cleaned up busmgr /proc error handling (Andreas Dilger) 2217 2218 2) ACPI CA Core Subsystem: 2219 2220Implemented ACPI 2.0 semantics for the "Break" operator (Exit 2221from while loop) 2222 2223Completed implementation of the ACPI 2.0 "Continue", 2224"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 2225operators. All new ACPI 2.0 operators are now implemented in 2226both the ASL compiler and the AML interpreter. The only 2227remaining ACPI 2.0 task is support for the String data type in 2228the DerefOf operator. Fixed a problem with AcquireMutex where 2229the status code was lost if the caller had to actually wait for 2230the mutex. 2231 2232Increased the maximum ASL Field size from 64K bits to 4G bits. 2233 2234Completed implementation of the external Global Lock interfaces - 2235- AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout 2236and Handler parameters were added. 2237 2238Completed another pass at removing warnings and issues when 2239compiling with 64-bit compilers. The code now compiles cleanly 2240with the Intel 64-bit C/C++ compiler. Most notably, the pointer 2241add and subtract (diff) macros have changed considerably. 2242 2243Created and deployed a new ACPI_SIZE type that is 64-bits wide on 224464-bit platforms, 32-bits on all others. This type is used 2245wherever memory allocation and/or the C sizeof() operator is 2246used, and affects the OSL memory allocation interfaces 2247AcpiOsAllocate and AcpiOsCallocate. 2248 2249Implemented sticky user breakpoints in the AML debugger. 2250 2251Code and Data Size: Current core subsystem library sizes are 2252shown below. These are the code and data sizes for the acpica.lib 2253produced by the Microsoft Visual C++ 6.0 compiler, and these 2254values do not include any ACPI driver or OSPM code. The debug 2255version of the code includes the debug output trace mechanism and 2256has a larger code and data size. Note that these values will vary 2257depending on the efficiency of the compiler and the compiler 2258options used during generation. 2259 2260 Previous Release (12_05_01) 2261 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 2262 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 2263 Current Release: 2264 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 2265 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 2266 2267 3) ASL Compiler, version X2034: 2268 2269Now checks for (and generates an error if detected) the use of a 2270Break or Continue statement without an enclosing While statement. 2271 2272Successfully generated the compiler with the Intel 64-bit C 2273compiler. 2274 2275 ---------------------------------------- 2276Summary of changes for this label: 12_05_01 2277 2278 1) ACPI CA Core Subsystem: 2279 2280The ACPI 2.0 CopyObject operator is fully implemented. This 2281operator creates a new copy of an object (and is also used to 2282bypass the "implicit conversion" mechanism of the Store 2283operator.) 2284 2285The ACPI 2.0 semantics for the SizeOf operator are fully 2286implemented. The change is that performing a SizeOf on a 2287reference object causes an automatic dereference of the object to 2288tha actual value before the size is evaluated. This behavior was 2289undefined in ACPI 1.0. 2290 2291The ACPI 2.0 semantics for the Extended IRQ resource descriptor 2292have been implemented. The interrupt polarity and mode are now 2293independently set. 2294 2295Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 2296appearing in Package objects were not properly converted to 2297integers when the internal Package was converted to an external 2298object (via the AcpiEvaluateObject interface.) 2299 2300Fixed a problem with the namespace object deletion mechanism for 2301objects created by control methods. There were two parts to this 2302problem: 1) Objects created during the initialization phase 2303method parse were not being deleted, and 2) The object owner ID 2304mechanism to track objects was broken. 2305 2306Fixed a problem where the use of the ASL Scope operator within a 2307control method would result in an invalid opcode exception. 2308 2309Fixed a problem introduced in the previous label where the buffer 2310length required for the _PRT structure was not being returned 2311correctly. 2312 2313Code and Data Size: Current core subsystem library sizes are 2314shown below. These are the code and data sizes for the acpica.lib 2315produced by the Microsoft Visual C++ 6.0 compiler, and these 2316values do not include any ACPI driver or OSPM code. The debug 2317version of the code includes the debug output trace mechanism and 2318has a larger code and data size. Note that these values will 2319vary depending on the efficiency of the compiler and the compiler 2320options used during generation. 2321 2322 Previous Release (11_20_01) 2323 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 2324 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 2325 2326 Current Release: 2327 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 2328 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 2329 2330 2) Linux: 2331 2332Updated all files to apply cleanly against 2.4.16. 2333 2334Added basic PCI Interrupt Routing Table (PRT) support for IA32 2335(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 2336version supports both static and dyanmic PRT entries, but dynamic 2337entries are treated as if they were static (not yet 2338reconfigurable). Architecture- specific code to use this data is 2339absent on IA32 but should be available shortly. 2340 2341Changed the initialization sequence to start the ACPI interpreter 2342(acpi_init) prior to initialization of the PCI driver (pci_init) 2343in init/main.c. This ordering is required to support PRT and 2344facilitate other (future) enhancement. A side effect is that the 2345ACPI bus driver and certain device drivers can no longer be 2346loaded as modules. 2347 2348Modified the 'make menuconfig' options to allow PCI Interrupt 2349Routing support to be included without the ACPI Bus and other 2350device drivers. 2351 2352 3) ASL Compiler, version X2033: 2353 2354Fixed some issues with the use of the new CopyObject and 2355DataTableRegion operators. Both are fully functional. 2356 2357 ---------------------------------------- 2358Summary of changes for this label: 11_20_01 2359 2360 20 November 2001. Summary of changes for this release. 2361 2362 1) ACPI CA Core Subsystem: 2363 2364Updated Index support to match ACPI 2.0 semantics. Storing a 2365Integer, String, or Buffer to an Index of a Buffer will store 2366only the least-significant byte of the source to the Indexed 2367buffer byte. Multiple writes are not performed. 2368 2369Fixed a problem where the access type used in an AccessAs ASL 2370operator was not recorded correctly into the field object. 2371 2372Fixed a problem where ASL Event objects were created in a 2373signalled state. Events are now created in an unsignalled state. 2374 2375The internal object cache is now purged after table loading and 2376initialization to reduce the use of dynamic kernel memory -- on 2377the assumption that object use is greatest during the parse phase 2378of the entire table (versus the run-time use of individual 2379control methods.) 2380 2381ACPI 2.0 variable-length packages are now fully operational. 2382 2383Code and Data Size: Code and Data optimizations have permitted 2384new feature development with an actual reduction in the library 2385size. Current core subsystem library sizes are shown below. 2386These are the code and data sizes for the acpica.lib produced by 2387the Microsoft Visual C++ 6.0 compiler, and these values do not 2388include any ACPI driver or OSPM code. The debug version of the 2389code includes the debug output trace mechanism and has a larger 2390code and data size. Note that these values will vary depending 2391on the efficiency of the compiler and the compiler options used 2392during generation. 2393 2394 Previous Release (11_09_01): 2395 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 2396 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 2397 2398 Current Release: 2399 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 2400 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 2401 2402 2) Linux: 2403 2404Enhanced the ACPI boot-time initialization code to allow the use 2405of Local APIC tables for processor enumeration on IA-32, and to 2406pave the way for a fully MPS-free boot (on SMP systems) in the 2407near future. This functionality replaces 2408arch/i386/kernel/acpitables.c, which was introduced in an earlier 24092.4.15-preX release. To enable this feature you must add 2410"acpi_boot=on" to the kernel command line -- see the help entry 2411for CONFIG_ACPI_BOOT for more information. An IA-64 release is 2412in the works... 2413 2414Restructured the configuration options to allow boot-time table 2415parsing support without inclusion of the ACPI Interpreter (and 2416other) code. 2417 2418NOTE: This release does not include fixes for the reported 2419events, power-down, and thermal passive cooling issues (coming 2420soon). 2421 2422 3) ASL Compiler: 2423 2424Added additional typechecking for Fields within restricted access 2425Operation Regions. All fields within EC and CMOS regions must be 2426declared with ByteAcc. All fields withing SMBus regions must be 2427declared with the BufferAcc access type. 2428 2429Fixed a problem where the listing file output of control methods 2430no longer interleaved the actual AML code with the ASL source 2431code. 2432 2433 2434 2435---------------------------------------- 2436Summary of changes for this label: 11_09_01 2437 24381) ACPI CA Core Subsystem: 2439 2440Implemented ACPI 2.0-defined support for writes to fields with a 2441Buffer, String, or Integer source operand that is smaller than 2442the target field. In these cases, the source operand is zero- 2443extended to fill the target field. 2444 2445Fixed a problem where a Field starting bit offset (within the 2446parent operation region) was calculated incorrectly if the 2447alignment of the field differed from the access width. This 2448affected CreateWordField, CreateDwordField, CreateQwordField, and 2449possibly other fields that use the "AccessAny" keyword. 2450 2451Fixed a problem introduced in the 11_02_01 release where indirect 2452stores through method arguments did not operate correctly. 2453 24542) Linux: 2455 2456Implemented boot-time ACPI table parsing support 2457(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 2458facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 2459legacy BIOS interfaces (e.g. MPS) for the configuration of system 2460processors, memory, and interrupts during setup_arch(). Note 2461that this patch does not include the required architecture- 2462specific changes required to apply this information -- subsequent 2463patches will be posted for both IA32 and IA64 to achieve this. 2464 2465Added low-level sleep support for IA32 platforms, courtesy of Pat 2466Mochel. This allows IA32 systems to transition to/from various 2467sleeping states (e.g. S1, S3), although the lack of a centralized 2468driver model and power-manageable drivers will prevent its 2469(successful) use on most systems. 2470 2471Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 2472submenu, unified IA32 and IA64 options, added new "Boot using 2473ACPI tables" option, etc. 2474 2475Increased the default timeout for the EC driver from 1ms to 10ms 2476(1000 cycles of 10us) to try to address AE_TIME errors during EC 2477transactions. 2478 2479 ---------------------------------------- 2480Summary of changes for this label: 11_02_01 2481 24821) ACPI CA Core Subsystem: 2483 2484ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 2485(QWordAcc keyword). All ACPI 2.0 64-bit support is now 2486implemented. 2487 2488OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 2489changes to support ACPI 2.0 Qword field access. Read/Write 2490PciConfiguration(), Read/Write Memory(), and Read/Write Port() 2491now accept an ACPI_INTEGER (64 bits) as the value parameter. 2492Also, the value parameter for the address space handler interface 2493is now an ACPI_INTEGER. OSL implementations of these interfaces 2494must now handle the case where the Width parameter is 64. 2495 2496Index Fields: Fixed a problem where unaligned bit assembly and 2497disassembly for IndexFields was not supported correctly. 2498 2499Index and Bank Fields: Nested Index and Bank Fields are now 2500supported. During field access, a check is performed to ensure 2501that the value written to an Index or Bank register is not out of 2502the range of the register. The Index (or Bank) register is 2503written before each access to the field data. Future support will 2504include allowing individual IndexFields to be wider than the 2505DataRegister width. 2506 2507Fields: Fixed a problem where the AML interpreter was incorrectly 2508attempting to write beyond the end of a Field/OpRegion. This was 2509a boundary case that occurred when a DWORD field was written to a 2510BYTE access OpRegion, forcing multiple writes and causing the 2511interpreter to write one datum too many. 2512 2513Fields: Fixed a problem with Field/OpRegion access where the 2514starting bit address of a field was incorrectly calculated if the 2515current access type was wider than a byte (WordAcc, DwordAcc, or 2516QwordAcc). 2517 2518Fields: Fixed a problem where forward references to individual 2519FieldUnits (individual Field names within a Field definition) 2520were not resolved during the AML table load. 2521 2522Fields: Fixed a problem where forward references from a Field 2523definition to the parent Operation Region definition were not 2524resolved during the AML table load. 2525 2526Fields: Duplicate FieldUnit names within a scope are now detected 2527during AML table load. 2528 2529Acpi Interfaces: Fixed a problem where the AcpiGetName() 2530interface returned an incorrect name for the root node. 2531 2532Code and Data Size: Code and Data optimizations have permitted 2533new feature development with an actual reduction in the library 2534size. Current core subsystem library sizes are shown below. 2535These are the code and data sizes for the acpica.lib produced by 2536the Microsoft Visual C++ 6.0 compiler, and these values do not 2537include any ACPI driver or OSPM code. The debug version of the 2538code includes the debug output trace mechanism and has a larger 2539code and data size. Note that these values will vary depending 2540on the efficiency of the compiler and the compiler options used 2541during generation. 2542 2543 Previous Release (10_18_01): 2544 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 2545 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 2546 2547 Current Release: 2548 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 2549 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 2550 2551 2) Linux: 2552 2553Improved /proc processor output (Pavel Machek) Re-added 2554MODULE_LICENSE("GPL") to all modules. 2555 2556 3) ASL Compiler version X2030: 2557 2558Duplicate FieldUnit names within a scope are now detected and 2559flagged as errors. 2560 2561 4) Documentation: 2562 2563Programmer Reference updated to reflect OSL and address space 2564handler interface changes described above. 2565 2566---------------------------------------- 2567Summary of changes for this label: 10_18_01 2568 2569ACPI CA Core Subsystem: 2570 2571Fixed a problem with the internal object reference count 2572mechanism that occasionally caused premature object deletion. 2573This resolves all of the outstanding problem reports where an 2574object is deleted in the middle of an interpreter evaluation. 2575Although this problem only showed up in rather obscure cases, the 2576solution to the problem involved an adjustment of all reference 2577counts involving objects attached to namespace nodes. 2578 2579Fixed a problem with Field support in the interpreter where 2580writing to an aligned field whose length is an exact multiple (2 2581or greater) of the field access granularity would cause an 2582attempt to write beyond the end of the field. 2583 2584The top level AML opcode execution functions within the 2585interpreter have been renamed with a more meaningful and 2586consistent naming convention. The modules exmonad.c and 2587exdyadic.c were eliminated. New modules are exoparg1.c, 2588exoparg2.c, exoparg3.c, and exoparg6.c. 2589 2590Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 2591 2592Fixed a problem where the AML debugger was causing some internal 2593objects to not be deleted during subsystem termination. 2594 2595Fixed a problem with the external AcpiEvaluateObject interface 2596where the subsystem would fault if the named object to be 2597evaluated refered to a constant such as Zero, Ones, etc. 2598 2599Fixed a problem with IndexFields and BankFields where the 2600subsystem would fault if the index, data, or bank registers were 2601not defined in the same scope as the field itself. 2602 2603Added printf format string checking for compilers that support 2604this feature. Corrected more than 50 instances of issues with 2605format specifiers within invocations of ACPI_DEBUG_PRINT 2606throughout the core subsystem code. 2607 2608The ASL "Revision" operator now returns the ACPI support level 2609implemented in the core - the value "2" since the ACPI 2.0 2610support is more than 50% implemented. 2611 2612Enhanced the output of the AML debugger "dump namespace" command 2613to output in a more human-readable form. 2614 2615Current core subsystem library code sizes are shown below. These 2616are the code and data sizes for the acpica.lib produced by the 2617Microsoft Visual C++ 6.0 compiler, and these values do not 2618include any ACPI driver or OSPM code. The debug version of the 2619code includes the full debug trace mechanism -- leading to a much 2620larger code and data size. Note that these values will vary 2621depending on the efficiency of the compiler and the compiler 2622options used during generation. 2623 2624 Previous Label (09_20_01): 2625 Non-Debug Version: 65K Code, 5K Data, 70K Total 2626 Debug Version: 138K Code, 58K Data, 196K Total 2627 2628 This Label: 2629 2630 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 2631 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 2632 2633Linux: 2634 2635Implemented a "Bad BIOS Blacklist" to track machines that have 2636known ASL/AML problems. 2637 2638Enhanced the /proc interface for the thermal zone driver and 2639added support for _HOT (the critical suspend trip point). The 2640'info' file now includes threshold/policy information, and allows 2641setting of _SCP (cooling preference) and _TZP (polling frequency) 2642values to the 'info' file. Examples: "echo tzp=5 > info" sets the 2643polling frequency to 5 seconds, and "echo scp=1 > info" sets the 2644cooling preference to the passive/quiet mode (if supported by the 2645ASL). 2646 2647Implemented a workaround for a gcc bug that resuted in an OOPs 2648when loading the control method battery driver. 2649 2650 ---------------------------------------- 2651Summary of changes for this label: 09_20_01 2652 2653 ACPI CA Core Subsystem: 2654 2655The AcpiEnableEvent and AcpiDisableEvent interfaces have been 2656modified to allow individual GPE levels to be flagged as wake- 2657enabled (i.e., these GPEs are to remain enabled when the platform 2658sleeps.) 2659 2660The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 2661support wake-enabled GPEs. This means that upon entering the 2662sleep state, all GPEs that are not wake-enabled are disabled. 2663When leaving the sleep state, these GPEs are reenabled. 2664 2665A local double-precision divide/modulo module has been added to 2666enhance portability to OS kernels where a 64-bit math library is 2667not available. The new module is "utmath.c". 2668 2669Several optimizations have been made to reduce the use of CPU 2670stack. Originally over 2K, the maximum stack usage is now below 26712K at 1860 bytes (1.82k) 2672 2673Fixed a problem with the AcpiGetFirmwareTable interface where the 2674root table pointer was not mapped into a logical address 2675properly. 2676 2677Fixed a problem where a NULL pointer was being dereferenced in 2678the interpreter code for the ASL Notify operator. 2679 2680Fixed a problem where the use of the ASL Revision operator 2681returned an error. This operator now returns the current version 2682of the ACPI CA core subsystem. 2683 2684Fixed a problem where objects passed as control method parameters 2685to AcpiEvaluateObject were always deleted at method termination. 2686However, these objects may end up being stored into the namespace 2687by the called method. The object reference count mechanism was 2688applied to these objects instead of a force delete. 2689 2690Fixed a problem where static strings or buffers (contained in the 2691AML code) that are declared as package elements within the ASL 2692code could cause a fault because the interpreter would attempt to 2693delete them. These objects are now marked with the "static 2694object" flag to prevent any attempt to delete them. 2695 2696Implemented an interpreter optimization to use operands directly 2697from the state object instead of extracting the operands to local 2698variables. This reduces stack use and code size, and improves 2699performance. 2700 2701The module exxface.c was eliminated as it was an unnecessary 2702extra layer of code. 2703 2704Current core subsystem library code sizes are shown below. These 2705are the code and data sizes for the acpica.lib produced by the 2706Microsoft Visual C++ 6.0 compiler, and these values do not 2707include any ACPI driver or OSPM code. The debug version of the 2708code includes the full debug trace mechanism -- leading to a much 2709larger code and data size. Note that these values will vary 2710depending on the efficiency of the compiler and the compiler 2711options used during generation. 2712 2713 Non-Debug Version: 65K Code, 5K Data, 70K Total 2714(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 2715Total (Previously 195K) 2716 2717Linux: 2718 2719Support for ACPI 2.0 64-bit integers has been added. All ACPI 2720Integer objects are now 64 bits wide 2721 2722All Acpi data types and structures are now in lower case. Only 2723Acpi macros are upper case for differentiation. 2724 2725 Documentation: 2726 2727Changes to the external interfaces as described above. 2728 2729 ---------------------------------------- 2730Summary of changes for this label: 08_31_01 2731 2732 ACPI CA Core Subsystem: 2733 2734A bug with interpreter implementation of the ASL Divide operator 2735was found and fixed. The implicit function return value (not the 2736explicit store operands) was returning the remainder instead of 2737the quotient. This was a longstanding bug and it fixes several 2738known outstanding issues on various platforms. 2739 2740The ACPI_DEBUG_PRINT and function trace entry/exit macros have 2741been further optimized for size. There are 700 invocations of 2742the DEBUG_PRINT macro alone, so each optimization reduces the 2743size of the debug version of the subsystem significantly. 2744 2745A stack trace mechanism has been implemented. The maximum stack 2746usage is about 2K on 32-bit platforms. The debugger command 2747"stat stack" will display the current maximum stack usage. 2748 2749All public symbols and global variables within the subsystem are 2750now prefixed with the string "Acpi". This keeps all of the 2751symbols grouped together in a kernel map, and avoids conflicts 2752with other kernel subsystems. 2753 2754Most of the internal fixed lookup tables have been moved into the 2755code segment via the const operator. 2756 2757Several enhancements have been made to the interpreter to both 2758reduce the code size and improve performance. 2759 2760Current core subsystem library code sizes are shown below. These 2761are the code and data sizes for the acpica.lib produced by the 2762Microsoft Visual C++ 6.0 compiler, and these values do not 2763include any ACPI driver or OSPM code. The debug version of the 2764code includes the full debug trace mechanism which contains over 2765700 invocations of the DEBUG_PRINT macro, 500 function entry 2766macro invocations, and over 900 function exit macro invocations - 2767- leading to a much larger code and data size. Note that these 2768values will vary depending on the efficiency of the compiler and 2769the compiler options used during generation. 2770 2771 Non-Debug Version: 64K Code, 5K Data, 69K Total 2772Debug Version: 137K Code, 58K Data, 195K Total 2773 2774 Linux: 2775 2776Implemented wbinvd() macro, pending a kernel-wide definition. 2777 2778Fixed /proc/acpi/event to handle poll() and short reads. 2779 2780 ASL Compiler, version X2026: 2781 2782Fixed a problem introduced in the previous label where the AML 2783code emitted for package objects produced packages with zero 2784length. 2785 2786 ---------------------------------------- 2787Summary of changes for this label: 08_16_01 2788 2789ACPI CA Core Subsystem: 2790 2791The following ACPI 2.0 ASL operators have been implemented in the 2792AML interpreter (These are already supported by the Intel ASL 2793compiler): ToDecimalString, ToHexString, ToString, ToInteger, 2794and ToBuffer. Support for 64-bit AML constants is implemented in 2795the AML parser, debugger, and disassembler. 2796 2797The internal memory tracking mechanism (leak detection code) has 2798been upgraded to reduce the memory overhead (a separate tracking 2799block is no longer allocated for each memory allocation), and now 2800supports all of the internal object caches. 2801 2802The data structures and code for the internal object caches have 2803been coelesced and optimized so that there is a single cache and 2804memory list data structure and a single group of functions that 2805implement generic cache management. This has reduced the code 2806size in both the debug and release versions of the subsystem. 2807 2808The DEBUG_PRINT macro(s) have been optimized for size and 2809replaced by ACPI_DEBUG_PRINT. The syntax for this macro is 2810slightly different, because it generates a single call to an 2811internal function. This results in a savings of about 90 bytes 2812per invocation, resulting in an overall code and data savings of 2813about 16% in the debug version of the subsystem. 2814 2815 Linux: 2816 2817Fixed C3 disk corruption problems and re-enabled C3 on supporting 2818machines. 2819 2820Integrated low-level sleep code by Patrick Mochel. 2821 2822Further tweaked source code Linuxization. 2823 2824Other minor fixes. 2825 2826 ASL Compiler: 2827 2828Support for ACPI 2.0 variable length packages is fixed/completed. 2829 2830Fixed a problem where the optional length parameter for the ACPI 28312.0 ToString operator. 2832 2833Fixed multiple extraneous error messages when a syntax error is 2834detected within the declaration line of a control method. 2835 2836 ---------------------------------------- 2837Summary of changes for this label: 07_17_01 2838 2839ACPI CA Core Subsystem: 2840 2841Added a new interface named AcpiGetFirmwareTable to obtain any 2842ACPI table via the ACPI signature. The interface can be called 2843at any time during kernel initialization, even before the kernel 2844virtual memory manager is initialized and paging is enabled. 2845This allows kernel subsystems to obtain ACPI tables very early, 2846even before the ACPI CA subsystem is initialized. 2847 2848Fixed a problem where Fields defined with the AnyAcc attribute 2849could be resolved to the incorrect address under the following 2850conditions: 1) the field width is larger than 8 bits and 2) the 2851parent operation region is not defined on a DWORD boundary. 2852 2853Fixed a problem where the interpreter is not being locked during 2854namespace initialization (during execution of the _INI control 2855methods), causing an error when an attempt is made to release it 2856later. 2857 2858ACPI 2.0 support in the AML Interpreter has begun and will be 2859ongoing throughout the rest of this year. In this label, The Mod 2860operator is implemented. 2861 2862Added a new data type to contain full PCI addresses named 2863ACPI_PCI_ID. This structure contains the PCI Segment, Bus, 2864Device, and Function values. 2865 2866 Linux: 2867 2868Enhanced the Linux version of the source code to change most 2869capitalized ACPI type names to lowercase. For example, all 2870instances of ACPI_STATUS are changed to acpi_status. This will 2871result in a large diff, but the change is strictly cosmetic and 2872aligns the CA code closer to the Linux coding standard. 2873 2874OSL Interfaces: 2875 2876The interfaces to the PCI configuration space have been changed 2877to add the PCI Segment number and to split the single 32-bit 2878combined DeviceFunction field into two 16-bit fields. This was 2879accomplished by moving the four values that define an address in 2880PCI configuration space (segment, bus, device, and function) to 2881the new ACPI_PCI_ID structure. 2882 2883The changes to the PCI configuration space interfaces led to a 2884reexamination of the complete set of address space access 2885interfaces for PCI, I/O, and Memory. The previously existing 18 2886interfaces have proven difficult to maintain (any small change 2887must be propagated across at least 6 interfaces) and do not 2888easily allow for future expansion to 64 bits if necessary. Also, 2889on some systems, it would not be appropriate to demultiplex the 2890access width (8, 16, 32,or 64) before calling the OSL if the 2891corresponding native OS interfaces contain a similar access width 2892parameter. For these reasons, the 18 address space interfaces 2893have been replaced by these 6 new ones: 2894 2895AcpiOsReadPciConfiguration 2896AcpiOsWritePciConfiguration 2897AcpiOsReadMemory 2898AcpiOsWriteMemory 2899AcpiOsReadPort 2900AcpiOsWritePort 2901 2902Added a new interface named AcpiOsGetRootPointer to allow the OSL 2903to perform the platform and/or OS-specific actions necessary to 2904obtain the ACPI RSDP table pointer. On IA-32 platforms, this 2905interface will simply call down to the CA core to perform the low- 2906memory search for the table. On IA-64, the RSDP is obtained from 2907EFI. Migrating this interface to the OSL allows the CA core to 2908remain OS and platform independent. 2909 2910Added a new interface named AcpiOsSignal to provide a generic 2911"function code and pointer" interface for various miscellaneous 2912signals and notifications that must be made to the host OS. The 2913first such signals are intended to support the ASL Fatal and 2914Breakpoint operators. In the latter case, the AcpiOsBreakpoint 2915interface has been obsoleted. 2916 2917The definition of the AcpiFormatException interface has been 2918changed to simplify its use. The caller no longer must supply a 2919buffer to the call; A pointer to a const string is now returned 2920directly. This allows the call to be easily used in printf 2921statements, etc. since the caller does not have to manage a local 2922buffer. 2923 2924 2925 ASL Compiler, Version X2025: 2926 2927The ACPI 2.0 Switch/Case/Default operators have been implemented 2928and are fully functional. They will work with all ACPI 1.0 2929interpreters, since the operators are simply translated to 2930If/Else pairs. 2931 2932The ACPI 2.0 ElseIf operator is implemented and will also work 2933with 1.0 interpreters, for the same reason. 2934 2935Implemented support for ACPI 2.0 variable-length packages. These 2936packages have a separate opcode, and their size is determined by 2937the interpreter at run-time. 2938 2939Documentation The ACPI CA Programmer Reference has been updated 2940to reflect the new interfaces and changes to existing interfaces. 2941 2942 ------------------------------------------ 2943Summary of changes for this label: 06_15_01 2944 2945 ACPI CA Core Subsystem: 2946 2947Fixed a problem where a DWORD-accessed field within a Buffer 2948object would get its byte address inadvertently rounded down to 2949the nearest DWORD. Buffers are always Byte-accessible. 2950 2951 ASL Compiler, version X2024: 2952 2953Fixed a problem where the Switch() operator would either fault or 2954hang the compiler. Note however, that the AML code for this ACPI 29552.0 operator is not yet implemented. 2956 2957Compiler uses the new AcpiOsGetTimer interface to obtain compile 2958timings. 2959 2960Implementation of the CreateField operator automatically converts 2961a reference to a named field within a resource descriptor from a 2962byte offset to a bit offset if required. 2963 2964Added some missing named fields from the resource descriptor 2965support. These are the names that are automatically created by 2966the compiler to reference fields within a descriptor. They are 2967only valid at compile time and are not passed through to the AML 2968interpreter. 2969 2970Resource descriptor named fields are now typed as Integers and 2971subject to compile-time typechecking when used in expressions. 2972 2973 ------------------------------------------ 2974Summary of changes for this label: 05_18_01 2975 2976 ACPI CA Core Subsystem: 2977 2978Fixed a couple of problems in the Field support code where bits 2979from adjacent fields could be returned along with the proper 2980field bits. Restructured the field support code to improve 2981performance, readability and maintainability. 2982 2983New DEBUG_PRINTP macro automatically inserts the procedure name 2984into the output, saving hundreds of copies of procedure name 2985strings within the source, shrinking the memory footprint of the 2986debug version of the core subsystem. 2987 2988 Source Code Structure: 2989 2990The source code directory tree was restructured to reflect the 2991current organization of the component architecture. Some files 2992and directories have been moved and/or renamed. 2993 2994 Linux: 2995 2996Fixed leaking kacpidpc processes. 2997 2998Fixed queueing event data even when /proc/acpi/event is not 2999opened. 3000 3001 ASL Compiler, version X2020: 3002 3003Memory allocation performance enhancement - over 24X compile time 3004improvement on large ASL files. Parse nodes and namestring 3005buffers are now allocated from a large internal compiler buffer. 3006 3007The temporary .SRC file is deleted unless the "-s" option is 3008specified 3009 3010The "-d" debug output option now sends all output to the .DBG 3011file instead of the console. 3012 3013"External" second parameter is now optional 3014 3015"ElseIf" syntax now properly allows the predicate 3016 3017Last operand to "Load" now recognized as a Target operand 3018 3019Debug object can now be used anywhere as a normal object. 3020 3021ResourceTemplate now returns an object of type BUFFER 3022 3023EISAID now returns an object of type INTEGER 3024 3025"Index" now works with a STRING operand 3026 3027"LoadTable" now accepts optional parameters 3028 3029"ToString" length parameter is now optional 3030 3031"Interrupt (ResourceType," parse error fixed. 3032 3033"Register" with a user-defined region space parse error fixed 3034 3035Escaped backslash at the end of a string ("\\") scan/parse error 3036fixed 3037 3038"Revision" is now an object of type INTEGER. 3039 3040 3041 3042------------------------------------------ 3043Summary of changes for this label: 05_02_01 3044 3045Linux: 3046 3047/proc/acpi/event now blocks properly. 3048 3049Removed /proc/sys/acpi. You can still dump your DSDT from 3050/proc/acpi/dsdt. 3051 3052 ACPI CA Core Subsystem: 3053 3054Fixed a problem introduced in the previous label where some of 3055the "small" resource descriptor types were not recognized. 3056 3057Improved error messages for the case where an ASL Field is 3058outside the range of the parent operation region. 3059 3060 ASL Compiler, version X2018: 3061 3062Added error detection for ASL Fields that extend beyond the 3063length of the parent operation region (only if the length of the 3064region is known at compile time.) This includes fields that have 3065a minimum access width that is smaller than the parent region, 3066and individual field units that are partially or entirely beyond 3067the extent of the parent. 3068 3069 3070 3071------------------------------------------ 3072Summary of changes for this label: 04_27_01 3073 3074 ACPI CA Core Subsystem: 3075 3076Fixed a problem where the namespace mutex could be released at 3077the wrong time during execution of AcpiRemoveAddressSpaceHandler. 3078 3079Added optional thread ID output for debug traces, to simplify 3080debugging of multiple threads. Added context switch notification 3081when the debug code realizes that a different thread is now 3082executing ACPI code. 3083 3084Some additional external data types have been prefixed with the 3085string "ACPI_" for consistency. This may effect existing code. 3086The data types affected are the external callback typedefs - 3087e.g., WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 3088 3089 Linux: 3090 3091Fixed an issue with the OSL semaphore implementation where a 3092thread was waking up with an error from receiving a SIGCHLD 3093signal. 3094 3095Linux version of ACPI CA now uses the system C library for string 3096manipulation routines instead of a local implementation. 3097 3098Cleaned up comments and removed TBDs. 3099 3100 ASL Compiler, version X2017: 3101 3102Enhanced error detection and reporting for all file I/O 3103operations. 3104 3105 Documentation: 3106 3107Programmer Reference updated to version 1.06. 3108 3109 3110 3111------------------------------------------ 3112Summary of changes for this label: 04_13_01 3113 3114 ACPI CA Core Subsystem: 3115 3116Restructured support for BufferFields and RegionFields. 3117BankFields support is now fully operational. All known 32-bit 3118limitations on field sizes have been removed. Both BufferFields 3119and (Operation) RegionFields are now supported by the same field 3120management code. 3121 3122Resource support now supports QWORD address and IO resources. The 312316/32/64 bit address structures and the Extended IRQ structure 3124have been changed to properly handle Source Resource strings. 3125 3126A ThreadId of -1 is now used to indicate a "mutex not acquired" 3127condition internally and must never be returned by 3128AcpiOsThreadId. This reserved value was changed from 0 since Unix 3129systems allow a thread ID of 0. 3130 3131Linux: 3132 3133Driver code reorganized to enhance portability 3134 3135Added a kernel configuration option to control ACPI_DEBUG 3136 3137Fixed the EC driver to honor _GLK. 3138 3139ASL Compiler, version X2016: 3140 3141Fixed support for the "FixedHw" keyword. Previously, the FixedHw 3142address space was set to 0, not 0x7f as it should be. 3143 3144 ------------------------------------------ 3145Summary of changes for this label: 03_13_01 3146 3147 ACPI CA Core Subsystem: 3148 3149During ACPI initialization, the _SB_._INI method is now run if 3150present. 3151 3152Notify handler fix - notifies are deferred until the parent 3153method completes execution. This fixes the "mutex already 3154acquired" issue seen occasionally. 3155 3156Part of the "implicit conversion" rules in ACPI 2.0 have been 3157found to cause compatibility problems with existing ASL/AML. The 3158convert "result-to-target-type" implementation has been removed 3159for stores to method Args and Locals. Source operand conversion 3160is still fully implemented. Possible changes to ACPI 2.0 3161specification pending. 3162 3163Fix to AcpiRsCalculatePciRoutingTableLength to return correct 3164length. 3165 3166Fix for compiler warnings for 64-bit compiles. 3167 3168 Linux: 3169 3170/proc output aligned for easier parsing. 3171 3172Release-version compile problem fixed. 3173 3174New kernel configuration options documented in Configure.help. 3175 3176IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 3177context" message. 3178 3179 OSPM: 3180 3181Power resource driver integrated with bus manager. 3182 3183Fixed kernel fault during active cooling for thermal zones. 3184 3185Source Code: 3186 3187The source code tree has been restructured. 3188 3189 3190 3191------------------------------------------ 3192Summary of changes for this label: 03_02_01 3193 3194 Linux OS Services Layer (OSL): 3195 3196Major revision of all Linux-specific code. 3197 3198Modularized all ACPI-specific drivers. 3199 3200Added new thermal zone and power resource drivers. 3201 3202Revamped /proc interface (new functionality is under /proc/acpi). 3203 3204New kernel configuration options. 3205 3206 Linux known issues: 3207 3208New kernel configuration options not documented in Configure.help 3209yet. 3210 3211 3212Module dependencies not currently implemented. If used, they 3213should be loaded in this order: busmgr, power, ec, system, 3214processor, battery, ac_adapter, button, thermal. 3215 3216Modules will not load if CONFIG_MODVERSION is set. 3217 3218IBM 600E - entering S5 may reboot instead of shutting down. 3219 3220IBM 600E - Sleep button may generate "Invalid <NULL> context" 3221message. 3222 3223Some systems may fail with "execution mutex already acquired" 3224message. 3225 3226 ACPI CA Core Subsystem: 3227 3228Added a new OSL Interface, AcpiOsGetThreadId. This was required 3229for the deadlock detection code. Defined to return a non-zero, 323032-bit thread ID for the currently executing thread. May be a 3231non-zero constant integer on single-thread systems. 3232 3233Implemented deadlock detection for internal subsystem mutexes. 3234We may add conditional compilation for this code (debug only) 3235later. 3236 3237ASL/AML Mutex object semantics are now fully supported. This 3238includes multiple acquires/releases by owner and support for the 3239Mutex SyncLevel parameter. 3240 3241A new "Force Release" mechanism automatically frees all ASL 3242Mutexes that have been acquired but not released when a thread 3243exits the interpreter. This forces conformance to the ACPI spec 3244("All mutexes must be released when an invocation exits") and 3245prevents deadlocked ASL threads. This mechanism can be expanded 3246(later) to monitor other resource acquisitions if OEM ASL code 3247continues to misbehave (which it will). 3248 3249Several new ACPI exception codes have been added for the Mutex 3250support. 3251 3252Recursive method calls are now allowed and supported (the ACPI 3253spec does in fact allow recursive method calls.) The number of 3254recursive calls is subject to the restrictions imposed by the 3255SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 3256parameter. 3257 3258Implemented support for the SyncLevel parameter for control 3259methods (ACPI 2.0 feature) 3260 3261Fixed a deadlock problem when multiple threads attempted to use 3262the interpreter. 3263 3264Fixed a problem where the string length of a String package 3265element was not always set in a package returned from 3266AcpiEvaluateObject. 3267 3268Fixed a problem where the length of a String package element was 3269not always included in the length of the overall package returned 3270from AcpiEvaluateObject. 3271 3272Added external interfaces (Acpi*) to the ACPI debug memory 3273manager. This manager keeps a list of all outstanding 3274allocations, and can therefore detect memory leaks and attempts 3275to free memory blocks more than once. Useful for code such as the 3276power manager, etc. May not be appropriate for device drivers. 3277Performance with the debug code enabled is slow. 3278 3279The ACPI Global Lock is now an optional hardware element. 3280 3281 ASL Compiler Version X2015: 3282 3283Integrated changes to allow the compiler to be generated on 3284multiple platforms. 3285 3286Linux makefile added to generate the compiler on Linux 3287 3288 Source Code: 3289 3290All platform-specific headers have been moved to their own 3291subdirectory, Include/Platform. 3292 3293New source file added, Interpreter/ammutex.c 3294 3295New header file, Include/acstruct.h 3296 3297 Documentation: 3298 3299The programmer reference has been updated for the following new 3300interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 3301 3302 ------------------------------------------ 3303Summary of changes for this label: 02_08_01 3304 3305Core ACPI CA Subsystem: Fixed a problem where an error was 3306incorrectly returned if the return resource buffer was larger 3307than the actual data (in the resource interfaces). 3308 3309References to named objects within packages are resolved to the 3310full pathname string before packages are returned directly (via 3311the AcpiEvaluateObject interface) or indirectly via the resource 3312interfaces. 3313 3314Linux OS Services Layer (OSL): 3315 3316Improved /proc battery interface. 3317 3318 3319Added C-state debugging output and other miscellaneous fixes. 3320 3321ASL Compiler Version X2014: 3322 3323All defined method arguments can now be used as local variables, 3324including the ones that are not actually passed in as parameters. 3325The compiler tracks initialization of the arguments and issues an 3326exception if they are used without prior assignment (just like 3327locals). 3328 3329The -o option now specifies a filename prefix that is used for 3330all output files, including the AML output file. Otherwise, the 3331default behavior is as follows: 1) the AML goes to the file 3332specified in the DSDT. 2) all other output files use the input 3333source filename as the base. 3334 3335 ------------------------------------------ 3336Summary of changes for this label: 01_25_01 3337 3338Core ACPI CA Subsystem: Restructured the implementation of object 3339store support within the interpreter. This includes support for 3340the Store operator as well as any ASL operators that include a 3341target operand. 3342 3343Partially implemented support for Implicit Result-to-Target 3344conversion. This is when a result object is converted on the fly 3345to the type of an existing target object. Completion of this 3346support is pending further analysis of the ACPI specification 3347concerning this matter. 3348 3349CPU-specific code has been removed from the subsystem (hardware 3350directory). 3351 3352New Power Management Timer functions added 3353 3354Linux OS Services Layer (OSL): Moved system state transition code 3355to the core, fixed it, and modified Linux OSL accordingly. 3356 3357Fixed C2 and C3 latency calculations. 3358 3359 3360We no longer use the compilation date for the version message on 3361initialization, but retrieve the version from 3362AcpiGetSystemInfo(). 3363 3364Incorporated for fix Sony VAIO machines. 3365 3366Documentation: The Programmer Reference has been updated and 3367reformatted. 3368 3369 3370ASL Compiler: Version X2013: Fixed a problem where the line 3371numbering and error reporting could get out of sync in the 3372presence of multiple include files. 3373 3374 ------------------------------------------ 3375Summary of changes for this label: 01_15_01 3376 3377Core ACPI CA Subsystem: 3378 3379Implemented support for type conversions in the execution of the 3380ASL Concatenate operator (The second operand is converted to 3381match the type of the first operand before concatenation.) 3382 3383Support for implicit source operand conversion is partially 3384implemented. The ASL source operand types Integer, Buffer, and 3385String are freely interchangeable for most ASL operators and are 3386converted by the interpreter on the fly as required. Implicit 3387Target operand conversion (where the result is converted to the 3388target type before storing) is not yet implemented. 3389 3390Support for 32-bit and 64-bit BCD integers is implemented. 3391 3392Problem fixed where a field read on an aligned field could cause 3393a read past the end of the field. 3394 3395New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 3396does not return a value, but the caller expects one. (The ASL 3397compiler flags this as a warning.) 3398 3399ASL Compiler: 3400 3401Version X2011: 34021. Static typechecking of all operands is implemented. This 3403prevents the use of invalid objects (such as using a Package 3404where an Integer is required) at compile time instead of at 3405interpreter run-time. 34062. The ASL source line is printed with ALL errors and warnings. 34073. Bug fix for source EOF without final linefeed. 34084. Debug option is split into a parse trace and a namespace 3409trace. 34105. Namespace output option (-n) includes initial values for 3411integers and strings. 34126. Parse-only option added for quick syntax checking. 34137. Compiler checks for duplicate ACPI name declarations 3414 3415Version X2012: 34161. Relaxed typechecking to allow interchangeability between 3417strings, integers, and buffers. These types are now converted by 3418the interpreter at runtime. 34192. Compiler reports time taken by each internal subsystem in the 3420debug output file. 3421 3422 3423 ------------------------------------------ 3424Summary of changes for this label: 12_14_00 3425 3426ASL Compiler: 3427 3428This is the first official release of the compiler. Since the 3429compiler requires elements of the Core Subsystem, this label 3430synchronizes everything. 3431 3432------------------------------------------ 3433Summary of changes for this label: 12_08_00 3434 3435 3436Fixed a problem where named references within the ASL definition 3437of both OperationRegions and CreateXXXFields did not work 3438properly. The symptom was an AE_AML_OPERAND_TYPE during 3439initialization of the region/field. This is similar (but not 3440related internally) to the problem that was fixed in the last 3441label. 3442 3443Implemented both 32-bit and 64-bit support for the BCD ASL 3444functions ToBCD and FromBCD. 3445 3446Updated all legal headers to include "2000" in the copyright 3447years. 3448 3449 ------------------------------------------ 3450Summary of changes for this label: 12_01_00 3451 3452Fixed a problem where method invocations within the ASL 3453definition of both OperationRegions and CreateXXXFields did not 3454work properly. The symptom was an AE_AML_OPERAND_TYPE during 3455initialization of the region/field: 3456 3457 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 3458[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 3459(0x3005) 3460 3461Fixed a problem where operators with more than one nested 3462subexpression would fail. The symptoms were varied, by mostly 3463AE_AML_OPERAND_TYPE errors. This was actually a rather serious 3464problem that has gone unnoticed until now. 3465 3466 Subtract (Add (1,2), Multiply (3,4)) 3467 3468Fixed a problem where AcpiGetHandle didn't quite get fixed in the 3469previous build (The prefix part of a relative path was handled 3470incorrectly). 3471 3472Fixed a problem where Operation Region initialization failed if 3473the operation region name was a "namepath" instead of a simple 3474"nameseg". Symptom was an AE_NO_OPERAND error. 3475 3476Fixed a problem where an assignment to a local variable via the 3477indirect RefOf mechanism only worked for the first such 3478assignment. Subsequent assignments were ignored. 3479 3480 ------------------------------------------ 3481Summary of changes for this label: 11_15_00 3482 3483ACPI 2.0 table support with backwards support for ACPI 1.0 and 3484the 0.71 extensions. Note: although we can read ACPI 2.0 BIOS 3485tables, the AML interpreter does NOT have support for the new 34862.0 ASL grammar terms at this time. 3487 3488All ACPI hardware access is via the GAS structures in the ACPI 34892.0 FADT. 3490 3491All physical memory addresses across all platforms are now 64 3492bits wide. Logical address width remains dependent on the 3493platform (i.e., "void *"). 3494 3495AcpiOsMapMemory interface changed to a 64-bit physical address. 3496 3497The AML interpreter integer size is now 64 bits, as per the ACPI 34982.0 specification. 3499 3500For backwards compatibility with ACPI 1.0, ACPI tables with a 3501revision number less than 2 use 32-bit integers only. 3502 3503Fixed a problem where the evaluation of OpRegion operands did not 3504always resolve them to numbers properly. 3505 3506------------------------------------------ 3507Summary of changes for this label: 10_20_00 3508 3509Fix for CBN_._STA issue. This fix will allow correct access to 3510CBN_ OpRegions when the _STA returns 0x8. 3511 3512Support to convert ACPI constants (Ones, Zeros, One) to actual 3513values before a package object is returned 3514 3515Fix for method call as predicate to if/while construct causing 3516incorrect if/while behavior 3517 3518Fix for Else block package lengths sometimes calculated wrong (if 3519block > 63 bytes) 3520 3521Fix for Processor object length field, was always zero 3522 3523Table load abort if FACP sanity check fails 3524 3525Fix for problem with Scope(name) if name already exists 3526 3527Warning emitted if a named object referenced cannot be found 3528(resolved) during method execution. 3529 3530 3531 3532 3533 3534------------------------------------------ 3535Summary of changes for this label: 9_29_00 3536 3537New table initialization interfaces: AcpiInitializeSubsystem no 3538longer has any parameters AcpiFindRootPointer - Find the RSDP (if 3539necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 3540>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 3541AcpiLoadTables 3542 3543Note: These interface changes require changes to all existing 3544OSDs 3545 3546The PCI_Config default address space handler is always installed 3547at the root namespace object. 3548 3549------------------------------------------- 3550Summary of changes for this label: 09_15_00 3551 3552The new initialization architecture is implemented. New 3553interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 3554AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 3555(Namespace is automatically loaded when a table is loaded) 3556 3557The ACPI_OPERAND_OBJECT has been optimized to shrink its size 3558from 52 bytes to 32 bytes. There is usually one of these for 3559every namespace object, so the memory savings is significant. 3560 3561Implemented just-in-time evaluation of the CreateField operators. 3562 3563Bug fixes for IA-64 support have been integrated. 3564 3565Additional code review comments have been implemented 3566 3567The so-called "third pass parse" has been replaced by a final 3568walk through the namespace to initialize all operation regions 3569(address spaces) and fields that have not yet been initialized 3570during the execution of the various _INI and REG methods. 3571 3572New file - namespace/nsinit.c 3573 3574------------------------------------------- 3575Summary of changes for this label: 09_01_00 3576 3577Namespace manager data structures have been reworked to change 3578the primary object from a table to a single object. This has 3579resulted in dynamic memory savings of 3X within the namespace 3580and 2X overall in the ACPI CA subsystem. 3581 3582Fixed problem where the call to AcpiEvFindPciRootBuses was 3583inadvertently left commented out. 3584 3585Reduced the warning count when generating the source with the GCC 3586compiler. 3587 3588Revision numbers added to each module header showing the 3589SourceSafe version of the file. Please refer to this version 3590number when giving us feedback or comments on individual modules. 3591 3592The main object types within the subsystem have been renamed to 3593clarify their purpose: 3594 3595ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 3596ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 3597ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 3598 3599NOTE: no changes to the initialization sequence are included in 3600this label. 3601 3602------------------------------------------- 3603Summary of changes for this label: 08_23_00 3604 3605Fixed problem where TerminateControlMethod was being called 3606multiple times per method 3607 3608Fixed debugger problem where single stepping caused a semaphore 3609to be oversignalled 3610 3611Improved performance through additional parse object caching - 3612added ACPI_EXTENDED_OP type 3613 3614------------------------------------------- 3615Summary of changes for this label: 08_10_00 3616 3617Parser/Interpreter integration: Eliminated the creation of 3618complete parse trees for ACPI tables and control methods. 3619Instead, parse subtrees are created and then deleted as soon as 3620they are processed (Either entered into the namespace or 3621executed by the interpreter). This reduces the use of dynamic 3622kernel memory significantly. (about 10X) 3623 3624Exception codes broken into classes and renumbered. Be sure to 3625recompile all code that includes acexcep.h. Hopefully we won't 3626have to renumber the codes again now that they are split into 3627classes (environment, programmer, AML code, ACPI table, and 3628internal). 3629 3630Fixed some additional alignment issues in the Resource Manager 3631subcomponent 3632 3633Implemented semaphore tracking in the AcpiExec utility, and fixed 3634several places where mutexes/semaphores were being unlocked 3635without a corresponding lock operation. There are no known 3636semaphore or mutex "leaks" at this time. 3637 3638Fixed the case where an ASL Return operator is used to return an 3639unnamed package. 3640 3641------------------------------------------- 3642Summary of changes for this label: 07_28_00 3643 3644Fixed a problem with the way addresses were calculated in 3645AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 3646manifested itself when a Field was created with WordAccess or 3647DwordAccess, but the field unit defined within the Field was 3648less than a Word or Dword. 3649 3650Fixed a problem in AmlDumpOperands() module's loop to pull 3651operands off of the operand stack to display information. The 3652problem manifested itself as a TLB error on 64-bit systems when 3653accessing an operand stack with two or more operands. 3654 3655Fixed a problem with the PCI configuration space handlers where 3656context was getting confused between accesses. This required a 3657change to the generic address space handler and address space 3658setup definitions. Handlers now get both a global handler 3659context (this is the one passed in by the user when executing 3660AcpiInstallAddressSpaceHandler() and a specific region context 3661that is unique to each region (For example, the _ADR, _SEG and 3662_BBN values associated with a specific region). The generic 3663function definitions have changed to the following: 3664 3665typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 3666UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 3667*HandlerContext, // This used to be void *Context void 3668*RegionContext); // This is an additional parameter 3669 3670typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 3671RegionHandle, UINT32 Function, void *HandlerContext, void 3672**RegionContext); // This used to be **ReturnContext 3673 3674------------------------------------------- 3675Summary of changes for this label: 07_21_00 3676 3677Major file consolidation and rename. All files within the 3678interpreter have been renamed as well as most header files. 3679This was done to prevent collisions with existing files in the 3680host OSs -- filenames such as "config.h" and "global.h" seem to 3681be quite common. The VC project files have been updated. All 3682makefiles will require modification. 3683 3684The parser/interpreter integration continues in Phase 5 with the 3685implementation of a complete 2-pass parse (the AML is parsed 3686twice) for each table; This avoids the construction of a huge 3687parse tree and therefore reduces the amount of dynamic memory 3688required by the subsystem. Greater use of the parse object cache 3689means that performance is unaffected. 3690 3691Many comments from the two code reviews have been rolled in. 3692 3693The 64-bit alignment support is complete. 3694 3695------------------------------------------- 3696Summary of changes for this label: 06_30_00 3697 3698With a nod and a tip of the hat to the technology of yesteryear, 3699we've added support in the source code for 80 column output 3700devices. The code is now mostly constrained to 80 columns or 3701less to support environments and editors that 1) cannot display 3702or print more than 80 characters on a single line, and 2) cannot 3703disable line wrapping. 3704 3705A major restructuring of the namespace data structure has been 3706completed. The result is 1) cleaner and more 3707understandable/maintainable code, and 2) a significant reduction 3708in the dynamic memory requirement for each named ACPI object 3709(almost half). 3710 3711------------------------------------------- 3712Summary of changes for this label: 06_23_00 3713 3714Linux support has been added. In order to obtain approval to get 3715the ACPI CA subsystem into the Linux kernel, we've had to make 3716quite a few changes to the base subsystem that will affect all 3717users (all the changes are generic and OS- independent). The 3718effects of these global changes have been somewhat far reaching. 3719Files have been merged and/or renamed and interfaces have been 3720renamed. The major changes are described below. 3721 3722Osd* interfaces renamed to AcpiOs* to eliminate namespace 3723pollution/confusion within our target kernels. All OSD 3724interfaces must be modified to match the new naming convention. 3725 3726Files merged across the subsystem. A number of the smaller 3727source and header files have been merged to reduce the file 3728count and increase the density of the existing files. There are 3729too many to list here. In general, makefiles that call out 3730individual files will require rebuilding. 3731 3732Interpreter files renamed. All interpreter files now have the 3733prefix am* instead of ie* and is*. 3734 3735Header files renamed: The acapi.h file is now acpixf.h. The 3736acpiosd.h file is now acpiosxf.h. We are removing references to 3737the acronym "API" since it is somewhat windowsy. The new name is 3738"external interface" or xface or xf in the filenames.j 3739 3740 3741All manifest constants have been forced to upper case (some were 3742mixed case.) Also, the string "ACPI_" has been prepended to 3743many (not all) of the constants, typedefs, and structs. 3744 3745The globals "DebugLevel" and "DebugLayer" have been renamed 3746"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 3747 3748All other globals within the subsystem are now prefixed with 3749"AcpiGbl_" Internal procedures within the subsystem are now 3750prefixed with "Acpi" (with only a few exceptions). The original 3751two-letter abbreviation for the subcomponent remains after 3752"Acpi" - for example, CmCallocate became AcpiCmCallocate. 3753 3754Added a source code translation/conversion utility. Used to 3755generate the Linux source code, it can be modified to generate 3756other types of source as well. Can also be used to cleanup 3757existing source by removing extraneous spaces and blank lines. 3758Found in tools/acpisrc/* 3759 3760OsdUnMapMemory was renamed to OsdUnmapMemory and then 3761AcpiOsUnmapMemory. (UnMap became Unmap). 3762 3763A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 3764When set to one, this indicates that the caller wants to use the 3765semaphore as a mutex, not a counting semaphore. ACPI CA uses 3766both types. However, implementers of this call may want to use 3767different OS primitives depending on the type of semaphore 3768requested. For example, some operating systems provide separate 3769"mutex" and "semaphore" interfaces - where the mutex interface 3770is much faster because it doesn't have all the overhead of a 3771full semaphore implementation. 3772 3773Fixed a deadlock problem where a method that accesses the PCI 3774address space can block forever if it is the first access to the 3775space. 3776 3777------------------------------------------- 3778Summary of changes for this label: 06_02_00 3779 3780Support for environments that cannot handle unaligned data 3781accesses (e.g. firmware and OS environments devoid of alignment 3782handler technology namely SAL/EFI and the IA-64 Linux kernel) 3783has been added (via configurable macros) in these three areas: - 3784Transfer of data from the raw AML byte stream is done via byte 3785moves instead of word/dword/qword moves. - External objects 3786are aligned within the user buffer, including package elements 3787(sub-objects). - Conversion of name strings to UINT32 Acpi Names 3788is now done byte-wise. 3789 3790The Store operator was modified to mimic Microsoft's 3791implementation when storing to a Buffer Field. 3792 3793Added a check of the BM_STS bit before entering C3. 3794 3795The methods subdirectory has been obsoleted and removed. A new 3796file, cmeval.c subsumes the functionality. 3797 3798A 16-bit (DOS) version of AcpiExec has been developed. The 3799makefile is under the acpiexec directory. 3800