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