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