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