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