changes.txt revision 126372
1---------------------------------------- 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. 4418