changes.txt revision 114237
128 February 2003. Summary of changes for version 20030228. 2 3 41) ACPI CA Core Subsystem: 5 6The GPE handling and dispatch code has been completely overhauled 7in preparation for support of GPE Block Devices (ID ACPI0006). 8This affects internal data structures and code only; there should 9be no differences visible externally. One new file has been 10added, evgpeblk.c 11 12The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 13fields that are used to determine the GPE block lengths. The 14REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 15structures are ignored. This is per the ACPI specification but 16it isn't very clear. The full 256 Block 0/1 GPEs are now 17supported (the use of REGISTER_BIT_WIDTH limited the number of 18GPEs to 128). 19 20In the SCI interrupt handler, removed the read of the PM1_CONTROL 21register to look at the SCI_EN bit. On some machines, this read 22causes an SMI event and greatly slows down SCI events. (This may 23in fact be the cause of slow battery status response on some 24systems.) 25 26Fixed a problem where a store of a NULL string to a package 27object could cause the premature deletion of the object. This 28was seen during execution of the battery _BIF method on some 29systems, resulting in no battery data being returned. 30 31Added AcpiWalkResources interface to simplify parsing of resource 32lists. 33 34Code and Data Size: Current core subsystem library sizes are 35shown below. These are the code and data sizes for the 36acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 37these values do not include any ACPI driver or OSPM code. The 38debug version of the code includes the debug output trace 39mechanism and has a much larger code and data size. Note that 40these values will vary depending on the efficiency of the 41compiler and the compiler options used during generation. 42 43 Previous Release 44 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 45 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 46 Current Release: 47 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 48 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 49 50 512) Linux 52 53S3 fixes (Ole Rohne) 54 55Update ACPI PHP driver with to use new acpi_walk_resource API 56(Bjorn Helgaas) 57 58Add S4BIOS support (Pavel Machek) 59 60Map in entire table before performing checksum (John Stultz) 61 62Expand the mem= cmdline to allow the specification of reserved 63and ACPI DATA blocks (Pavel Machek) 64 65Never use ACPI on VISWS 66 67Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 68 69Revert a change that allowed P_BLK lengths to be 4 or 5. This is 70causing us to think that some systems support C2 when they really 71don't. 72 73Do not count processor objects for non-present CPUs (Thanks to 74Dominik Brodowski) 75 76 773) iASL Compiler: 78 79Fixed a problem where ASL include files could not be found and 80opened. 81 82Added support for the _PDC reserved name. 83 84 8522 January 2003. Summary of changes for version 20030122. 86 87 881) ACPI CA Core Subsystem: 89 90Added a check for constructs of the form: Store (Local0, Local0) 91where Local0 is not initialized. Apparently, some BIOS 92programmers believe that this is a NOOP. Since this store 93doesn't do anything anyway, the new prototype behavior will 94ignore this error. This is a case where we can relax the strict 95checking in the interpreter in the name of compatibility. 96 97 982) Linux 99 100The AcpiSrc Source Conversion Utility has been released with the 101Linux package for the first time. This is the utility that is 102used to convert the ACPI CA base source code to the Linux 103version. 104 105(Both) Handle P_BLK lengths shorter than 6 more gracefully 106 107(Both) Move more headers to include/acpi, and delete an unused 108header. 109 110(Both) Move drivers/acpi/include directory to include/acpi 111 112(Both) Boot functions don't use cmdline, so don't pass it around 113 114(Both) Remove include of unused header (Adrian Bunk) 115 116(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 117the 118former now also includes the latter, acpiphp.h only needs the 119one, now. 120 121(2.5) Make it possible to select method of bios restoring after 122S3 123resume. [=> no more ugly ifdefs] (Pavel Machek) 124 125(2.5) Make proc write interfaces work (Pavel Machek) 126 127(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 128 129(2.5) Break out ACPI Perf code into its own module, under cpufreq 130(Dominik Brodowski) 131 132(2.4) S4BIOS support (Ducrot Bruno) 133 134(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 135Visinoni) 136 137 1383) iASL Compiler: 139 140Added support to disassemble SSDT and PSDTs. 141 142Implemented support to obtain SSDTs from the Windows registry if 143available. 144 145 146---------------------------------------- 14709 January 2003. Summary of changes for version 20030109. 148 1491) ACPI CA Core Subsystem: 150 151Changed the behavior of the internal Buffer-to-String conversion 152function. The current ACPI specification states that the 153contents of the buffer are "converted to a string of two- 154character hexadecimal numbers, each separated by a space". 155Unfortunately, this definition is not backwards compatible with 156existing ACPI 1.0 implementations (although the behavior was not 157defined in the ACPI 1.0 specification). The new behavior simply 158copies data from the buffer to the string until a null character 159is found or the end of the buffer is reached. The new String 160object is always null terminated. This problem was seen during 161the generation of _BIF battery data where incorrect strings were 162returned for battery type, etc. This will also require an errata 163to the ACPI specification. 164 165Renamed all instances of NATIVE_UINT and NATIVE_INT to 166ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 167 168Copyright in all module headers (both Linux and non-Linux) has be 169updated to 2003. 170 171Code and Data Size: Current core subsystem library sizes are 172shown below. These are the code and data sizes for the 173acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 174these values do not include any ACPI driver or OSPM code. The 175debug version of the code includes the debug output trace 176mechanism and has a much larger code and data size. Note that 177these values will vary depending on the efficiency of the 178compiler and the compiler options used during generation. 179 180 Previous Release 181 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 182 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 183 Current Release: 184 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 185 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 186 187 1882) Linux 189 190Fixed an oops on module insertion/removal (Matthew Tippett) 191 192(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 193 194(2.5) Replace pr_debug (Randy Dunlap) 195 196(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 197 198(Both) Eliminate spawning of thread from timer callback, in favor 199of schedule_work() 200 201(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 202 203(Both) Added define for Fixed Function HW region (Matthew Wilcox) 204 205(Both) Add missing statics to button.c (Pavel Machek) 206 207Several changes have been made to the source code translation 208utility that generates the Linux Code in order to make the code 209more "Linux-like": 210 211All typedefs on structs and unions have been removed in keeping 212with the Linux coding style. 213 214Removed the non-Linux SourceSafe module revision number from each 215module header. 216 217Completed major overhaul of symbols to be lowercased for linux. 218Doubled the number of symbols that are lowercased. 219 220Fixed a problem where identifiers within procedure headers and 221within quotes were not fully lower cased (they were left with a 222starting capital.) 223 224Some C macros whose only purpose is to allow the generation of 16- 225bit code are now completely removed in the Linux code, increasing 226readability and maintainability. 227 228---------------------------------------- 229 23012 December 2002. Summary of changes for version 20021212. 231 232 2331) ACPI CA Core Subsystem: 234 235Fixed a problem where the creation of a zero-length AML Buffer 236would cause a fault. 237 238Fixed a problem where a Buffer object that pointed to a static 239AML buffer (in an ACPI table) could inadvertently be deleted, 240causing memory corruption. 241 242Fixed a problem where a user buffer (passed in to the external 243ACPI CA interfaces) could be overwritten if the buffer was too 244small to complete the operation, causing memory corruption. 245 246Fixed a problem in the Buffer-to-String conversion code where a 247string of length one was always returned, regardless of the size 248of the input Buffer object. 249 250Removed the NATIVE_CHAR data type across the entire source due to 251lack of need and lack of consistent use. 252 253Code and Data Size: Current core subsystem library sizes are 254shown below. These are the code and data sizes for the 255acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 256these values do not include any ACPI driver or OSPM code. The 257debug version of the code includes the debug output trace 258mechanism and has a much larger code and data size. Note that 259these values will vary depending on the efficiency of the 260compiler and the compiler options used during generation. 261 262 Previous Release 263 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 264 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 265 Current Release: 266 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 267 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 268 269 270---------------------------------------- 27105 December 2002. Summary of changes for version 20021205. 272 2731) ACPI CA Core Subsystem: 274 275Fixed a problem where a store to a String or Buffer object could 276cause corruption of the DSDT if the object type being stored was 277the same as the target object type and the length of the object 278being stored was equal to or smaller than the original (existing) 279target object. This was seen to cause corruption of battery _BIF 280buffers if the _BIF method modified the buffer on the fly. 281 282Fixed a problem where an internal error was generated if a 283control method invocation was used in an OperationRegion, Buffer, 284or Package declaration. This was caused by the deferred parsing 285of the control method and thus the deferred creation of the 286internal method object. The solution to this problem was to 287create the internal method object at the moment the method is 288encountered in the first pass - so that subsequent references to 289the method will able to obtain the required parameter count and 290thus properly parse the method invocation. This problem 291presented itself as an AE_AML_INTERNAL during the pass 1 parse 292phase during table load. 293 294Fixed a problem where the internal String object copy routine did 295not always allocate sufficient memory for the target String 296object and caused memory corruption. This problem was seen to 297cause "Allocation already present in list!" errors as memory 298allocation became corrupted. 299 300Implemented a new function for the evaluation of namespace 301objects that allows the specification of the allowable return 302object types. This simplifies a lot of code that checks for a 303return object of one or more specific objects returned from the 304evaluation (such as _STA, etc.) This may become and external 305function if it would be useful to ACPI-related drivers. 306 307Completed another round of prefixing #defines with "ACPI_" for 308clarity. 309 310Completed additional code restructuring to allow more modular 311linking for iASL compiler and AcpiExec. Several files were split 312creating new files. New files: nsparse.c dsinit.c evgpe.c 313 314Implemented an abort mechanism to terminate an executing control 315method via the AML debugger. This feature is useful for 316debugging control methods that depend (wait) for specific 317hardware responses. 318 319Code and Data Size: Current core subsystem library sizes are 320shown below. These are the code and data sizes for the 321acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 322these values do not include any ACPI driver or OSPM code. The 323debug version of the code includes the debug output trace 324mechanism and has a much larger code and data size. Note that 325these values will vary depending on the efficiency of the 326compiler and the compiler options used during generation. 327 328 Previous Release 329 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 330 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 331 Current Release: 332 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 333 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 334 335 3362) iASL Compiler/Disassembler 337 338Fixed a compiler code generation problem for "Interrupt" Resource 339Descriptors. If specified in the ASL, the optional "Resource 340Source Index" and "Resource Source" fields were not inserted into 341the correct location within the AML resource descriptor, creating 342an invalid descriptor. 343 344Fixed a disassembler problem for "Interrupt" resource 345descriptors. The optional "Resource Source Index" and "Resource 346Source" fields were ignored. 347 348 349---------------------------------------- 35022 November 2002. Summary of changes for version 20021122. 351 352 3531) ACPI CA Core Subsystem: 354 355Fixed a reported problem where an object stored to a Method Local 356or Arg was not copied to a new object during the store - the 357object pointer was simply copied to the Local/Arg. This caused 358all subsequent operations on the Local/Arg to also affect the 359original source of the store operation. 360 361Fixed a problem where a store operation to a Method Local or Arg 362was not completed properly if the Local/Arg contained a reference 363(from RefOf) to a named field. The general-purpose store-to- 364namespace-node code is now used so that this case is handled 365automatically. 366 367Fixed a problem where the internal object copy routine would 368cause a protection fault if the object being copied was a Package 369and contained either 1) a NULL package element or 2) a nested sub- 370package. 371 372Fixed a problem with the GPE initialization that resulted from an 373ambiguity in the ACPI specification. One section of the 374specification states that both the address and length of the GPE 375block must be zero if the block is not supported. Another 376section implies that only the address need be zero if the block 377is not supported. The code has been changed so that both the 378address and the length must be non-zero to indicate a valid GPE 379block (i.e., if either the address or the length is zero, the GPE 380block is invalid.) 381 382Code and Data Size: Current core subsystem library sizes are 383shown below. These are the code and data sizes for the 384acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 385these values do not include any ACPI driver or OSPM code. The 386debug version of the code includes the debug output trace 387mechanism and has a much larger code and data size. Note that 388these values will vary depending on the efficiency of the 389compiler and the compiler options used during generation. 390 391 Previous Release 392 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 393 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 394 Current Release: 395 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 396 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 397 398 3992) Linux 400 401Cleaned up EC driver. Exported an external EC read/write 402interface. By going through this, other drivers (most notably 403sonypi) will be able to serialize access to the EC. 404 405 4063) iASL Compiler/Disassembler 407 408Implemented support to optionally generate include files for both 409ASM and C (the -i switch). This simplifies BIOS development by 410automatically creating include files that contain external 411declarations for the symbols that are created within the 412(optionally generated) ASM and C AML source files. 413 414 415---------------------------------------- 41615 November 2002. Summary of changes for version 20021115. 417 4181) ACPI CA Core Subsystem: 419 420Fixed a memory leak problem where an error during resolution of 421method arguments during a method invocation from another method 422failed to cleanup properly by deleting all successfully resolved 423argument objects. 424 425Fixed a problem where the target of the Index() operator was not 426correctly constructed if the source object was a package. This 427problem has not been detected because the use of a target operand 428with Index() is very rare. 429 430Fixed a problem with the Index() operator where an attempt was 431made to delete the operand objects twice. 432 433Fixed a problem where an attempt was made to delete an operand 434twice during execution of the CondRefOf() operator if the target 435did not exist. 436 437Implemented the first of perhaps several internal create object 438functions that create and initialize a specific object type. 439This consolidates duplicated code wherever the object is created, 440thus shrinking the size of the subsystem. 441 442Implemented improved debug/error messages for errors that occur 443during nested method invocations. All executing method pathnames 444are displayed (with the error) as the call stack is unwound - 445thus simplifying debug. 446 447Fixed a problem introduced in the 10/02 release that caused 448premature deletion of a buffer object if a buffer was used as an 449ASL operand where an integer operand is required (Thus causing an 450implicit object conversion from Buffer to Integer.) The change 451in the 10/02 release was attempting to fix a memory leak (albeit 452incorrectly.) 453 454Code and Data Size: Current core subsystem library sizes are 455shown below. These are the code and data sizes for the 456acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 457these values do not include any ACPI driver or OSPM code. The 458debug version of the code includes the debug output trace 459mechanism and has a much larger code and data size. Note that 460these values will vary depending on the efficiency of the 461compiler and the compiler options used during generation. 462 463 Previous Release 464 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 465 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 466 Current Release: 467 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 468 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 469 470 4712) Linux 472 473Changed the implementation of the ACPI semaphores to use down() 474instead of down_interruptable(). It is important that the 475execution of ACPI control methods not be interrupted by signals. 476Methods must run to completion, or the system may be left in an 477unknown/unstable state. 478 479Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not 480set. (Shawn Starr) 481 482 4833) iASL Compiler/Disassembler 484 485 486Changed the default location of output files. All output files 487are now placed in the current directory by default instead of in 488the directory of the source file. This change may affect some 489existing makefiles, but it brings the behavior of the compiler in 490line with other similar tools. The location of the output files 491can be overridden with the -p command line switch. 492 493 494---------------------------------------- 49511 November 2002. Summary of changes for version 20021111. 496 497 4980) ACPI Specification 2.0B is released and is now available at: 499http://www.acpi.info/index.html 500 501 5021) ACPI CA Core Subsystem: 503 504Implemented support for the ACPI 2.0 SMBus Operation Regions. 505This includes the early detection and handoff of the request to 506the SMBus region handler (avoiding all of the complex field 507support code), and support for the bidirectional return packet 508from an SMBus write operation. This paves the way for the 509development of SMBus drivers in each host operating system. 510 511Fixed a problem where the semaphore WAIT_FOREVER constant was 512defined as 32 bits, but must be 16 bits according to the ACPI 513specification. This had the side effect of causing ASL 514Mutex/Event timeouts even though the ASL code requested a wait 515forever. Changed all internal references to the ACPI timeout 516parameter to 16 bits to prevent future problems. Changed the 517name of WAIT_FOREVER to ACPI_WAIT_FOREVER. 518 519Code and Data Size: Current core subsystem library sizes are 520shown below. These are the code and data sizes for the 521acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 522these values do not include any ACPI driver or OSPM code. The 523debug version of the code includes the debug output trace 524mechanism and has a much larger code and data size. Note that 525these values will vary depending on the efficiency of the 526compiler and the compiler options used during generation. 527 528 Previous Release 529 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 530 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 531 Current Release: 532 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 533 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 534 535 5362) Linux 537 538Module loading/unloading fixes (John Cagle) 539 540 5413) iASL Compiler/Disassembler 542 543Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 544 545Implemented support for the disassembly of all SMBus protocol 546keywords (SMBQuick, SMBWord, etc.) 547 548---------------------------------------- 54901 November 2002. Summary of changes for version 20021101. 550 551 5521) ACPI CA Core Subsystem: 553 554Fixed a problem where platforms that have a GPE1 block but no 555GPE0 block were not handled correctly. This resulted in a "GPE 556overlap" error message. GPE0 is no longer required. 557 558Removed code added in the previous release that inserted nodes 559into the namespace in alphabetical order. This caused some side- 560effects on various machines. The root cause of the problem is 561still under investigation since in theory, the internal ordering 562of the namespace nodes should not matter. 563 564 565Enhanced error reporting for the case where a named object is not 566found during control method execution. The full ACPI namepath 567(name reference) of the object that was not found is displayed in 568this case. 569 570Note: as a result of the overhaul of the namespace object types 571in the previous release, the namespace nodes for the predefined 572scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 573instead of ACPI_TYPE_ANY. This simplifies the namespace 574management code but may affect code that walks the namespace tree 575looking for specific object types. 576 577Code and Data Size: Current core subsystem library sizes are 578shown below. These are the code and data sizes for the 579acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 580these values do not include any ACPI driver or OSPM code. The 581debug version of the code includes the debug output trace 582mechanism and has a much larger code and data size. Note that 583these values will vary depending on the efficiency of the 584compiler and the compiler options used during generation. 585 586 Previous Release 587 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 588 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 589 Current Release: 590 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 591 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 592 593 5942) Linux 595 596Fixed a problem introduced in the previous release where the 597Processor and Thermal objects were not recognized and installed 598in /proc. This was related to the scope type change described 599above. 600 601 6023) iASL Compiler/Disassembler 603 604Implemented the -g option to get all of the required ACPI tables 605from the registry and save them to files (Windows version of the 606compiler only.) The required tables are the FADT, FACS, and 607DSDT. 608 609Added ACPI table checksum validation during table disassembly in 610order to catch corrupted tables. 611 612 613---------------------------------------- 61422 October 2002. Summary of changes for version 20021022. 615 6161) ACPI CA Core Subsystem: 617 618Implemented a restriction on the Scope operator that the target 619must already exist in the namespace at the time the operator is 620encountered (during table load or method execution). In other 621words, forward references are not allowed and Scope() cannot 622create a new object. This changes the previous behavior where the 623interpreter would create the name if not found. This new 624behavior correctly enables the search-to-root algorithm during 625namespace lookup of the target name. Because of this upsearch, 626this fixes the known Compaq _SB_.OKEC problem and makes both the 627AML interpreter and iASL compiler compatible with other ACPI 628implementations. 629 630Completed a major overhaul of the internal ACPI object types for 631the ACPI Namespace and the associated operand objects. Many of 632these types had become obsolete with the introduction of the two- 633pass namespace load. This cleanup simplifies the code and makes 634the entire namespace load mechanism much clearer and easier to 635understand. 636 637Improved debug output for tracking scope opening/closing to help 638diagnose scoping issues. The old scope name as well as the new 639scope name are displayed. Also improved error messages for 640problems with ASL Mutex objects and error messages for GPE 641problems. 642 643Cleaned up the namespace dump code, removed obsolete code. 644 645All string output (for all namespace/object dumps) now uses the 646common ACPI string output procedure which handles escapes 647properly and does not emit non-printable characters. 648 649Fixed some issues with constants in the 64-bit version of the 650local C library (utclib.c) 651 652 6532) Linux 654 655EC Driver: No longer attempts to acquire the Global Lock at 656interrupt level. 657 658 6593) iASL Compiler/Disassembler 660 661Implemented ACPI 2.0B grammar change that disallows all Type 1 662and 2 opcodes outside of a control method. This means that the 663"executable" operators (versus the "namespace" operators) cannot 664be used at the table level; they can only be used within a 665control method. 666 667Implemented the restriction on the Scope() operator where the 668target must already exist in the namespace at the time the 669operator is encountered (during ASL compilation). In other words, 670forward references are not allowed and Scope() cannot create a 671new object. This makes the iASL compiler compatible with other 672ACPI implementations and makes the Scope() implementation adhere 673to the ACPI specification. 674 675Fixed a problem where namepath optimization for the Alias 676operator was optimizing the wrong path (of the two namepaths.) 677This caused a "Missing alias link" error message. 678 679Fixed a problem where an "unknown reserved name" warning could be 680incorrectly generated for names like "_SB" when the trailing 681underscore is not used in the original ASL. 682 683Fixed a problem where the reserved name check did not handle 684NamePaths with multiple NameSegs correctly. The first nameseg of 685the NamePath was examined instead of the last NameSeg. 686 687 688---------------------------------------- 689 69002 October 2002. Summary of changes for this release. 691 692 6931) ACPI CA Core Subsystem version 20021002: 694 695Fixed a problem where a store/copy of a string to an existing 696string did not always set the string length properly in the 697String object. 698 699Fixed a reported problem with the ToString operator where the 700behavior was identical to the ToHexString operator instead of 701just simply converting a raw buffer to a string data type. 702 703Fixed a problem where CopyObject and the other "explicit" 704conversion operators were not updating the internal namespace 705node type as part of the store operation. 706 707Fixed a memory leak during implicit source operand conversion 708where the original object was not deleted if it was converted to 709a new object of a different type. 710 711Enhanced error messages for all problems associated with 712namespace lookups. Common procedure generates and prints the 713lookup name as well as the formatted status. 714 715Completed implementation of a new design for the Alias support 716within the namespace. The existing design did not handle the 717case where a new object was assigned to one of the two names due 718to the use of an explicit conversion operator, resulting in the 719two names pointing to two different objects. The new design 720simply points the Alias name to the original name node - not to 721the object. This results in a level of indirection that must be 722handled in the name resolution mechanism. 723 724Code and Data Size: Current core subsystem library sizes are 725shown below. These are the code and data sizes for the 726acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 727these values do not include any ACPI driver or OSPM code. The 728debug version of the code includes the debug output trace 729mechanism and has a larger code and data size. Note that these 730values will vary depending on the efficiency of the compiler and 731the compiler options used during generation. 732 733 Previous Release 734 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 735 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 736 Current Release: 737 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 738 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 739 740 7412) Linux 742 743Initialize thermal driver's timer before it is used. (Knut 744Neumann) 745 746Allow handling negative celsius values. (Kochi Takayoshi) 747 748Fix thermal management and make trip points. R/W (Pavel Machek) 749 750Fix /proc/acpi/sleep. (P. Christeas) 751 752IA64 fixes. (David Mosberger) 753 754Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 755 756Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 757Brodowski) 758 759 7603) iASL Compiler/Disassembler 761 762Clarified some warning/error messages. 763 764 765---------------------------------------- 76618 September 2002. Summary of changes for this release. 767 768 7691) ACPI CA Core Subsystem version 20020918: 770 771Fixed a reported problem with reference chaining (via the Index() 772and RefOf() operators) in the ObjectType() and SizeOf() 773operators. The definition of these operators includes the 774dereferencing of all chained references to return information on 775the base object. 776 777Fixed a problem with stores to indexed package elements - the 778existing code would not complete the store if an "implicit 779conversion" was not performed. In other words, if the existing 780object (package element) was to be replaced completely, the code 781didn't handle this case. 782 783Relaxed typechecking on the ASL "Scope" operator to allow the 784target name to refer to an object of type Integer, String, or 785Buffer, in addition to the scoping object types (Device, 786predefined Scopes, Processor, PowerResource, and ThermalZone.) 787This allows existing AML code that has workarounds for a bug in 788Windows to function properly. A warning is issued, however. 789This affects both the AML interpreter and the iASL compiler. 790Below is an example of this type of ASL code: 791 792 Name(DEB,0x00) 793 Scope(DEB) 794 { 795 796Fixed some reported problems with 64-bit integer support in the 797local implementation of C library functions (clib.c) 798 799 8002) Linux 801 802Use ACPI fix map region instead of IOAPIC region, since it is 803undefined in non-SMP. 804 805Ensure that the SCI has the proper polarity and trigger, even on 806systems that do not have an interrupt override entry in the MADT. 807 8082.5 big driver reorganization (Pat Mochel) 809 810Use early table mapping code from acpitable.c (Andi Kleen) 811 812New blacklist entries (Andi Kleen) 813 814Blacklist improvements. Split blacklist code out into a separate 815file. Move checking the blacklist to very early. Previously, we 816would use ACPI tables, and then halfway through init, check the 817blacklist -- too late. Now, it's early enough to completely fall- 818back to non-ACPI. 819 820 8213) iASL Compiler/Disassembler version 20020918: 822 823Fixed a problem where the typechecking code didn't know that an 824alias could point to a method. In other words, aliases were not 825being dereferenced during typechecking. 826 827 828---------------------------------------- 82929 August 2002. Summary of changes for this release. 830 8311) ACPI CA Core Subsystem Version 20020829: 832 833If the target of a Scope() operator already exists, it must be an 834object type that actually opens a scope -- such as a Device, 835Method, Scope, etc. This is a fatal runtime error. Similar 836error check has been added to the iASL compiler also. 837 838Tightened up the namespace load to disallow multiple names in the 839same scope. This previously was allowed if both objects were of 840the same type. (i.e., a lookup was the same as entering a new 841name). 842 843 8442) Linux 845 846Ensure that the ACPI interrupt has the proper trigger and 847polarity. 848 849local_irq_disable is extraneous. (Matthew Wilcox) 850 851Make "acpi=off" actually do what it says, and not use the ACPI 852interpreter *or* the tables. 853 854Added arch-neutral support for parsing SLIT and SRAT tables 855(Kochi Takayoshi) 856 857 8583) iASL Compiler/Disassembler Version 20020829: 859 860Implemented namepath optimization for name declarations. For 861example, a declaration like "Method (\_SB_.ABCD)" would get 862optimized to "Method (ABCD)" if the declaration is within the 863\_SB_ scope. This optimization is in addition to the named 864reference path optimization first released in the previous 865version. This would seem to complete all possible optimizations 866for namepaths within the ASL/AML. 867 868If the target of a Scope() operator already exists, it must be an 869object type that actually opens a scope -- such as a Device, 870Method, Scope, etc. 871 872Implemented a check and warning for unreachable code in the same 873block below a Return() statement. 874 875Fixed a problem where the listing file was not generated if the 876compiler aborted if the maximum error count was exceeded (200). 877 878Fixed a problem where the typechecking of method return values 879was broken. This includes the check for a return value when the 880method is invoked as a TermArg (a return value is expected.) 881 882Fixed a reported problem where EOF conditions during a quoted 883string or comment caused a fault. 884 885 886---------------------------------------- 88715 August 2002. Summary of changes for this release. 888 8891) ACPI CA Core Subsystem Version 20020815: 890 891Fixed a reported problem where a Store to a method argument that 892contains a reference did not perform the indirect store 893correctly. This problem was created during the conversion to the 894new reference object model - the indirect store to a method 895argument code was not updated to reflect the new model. 896 897Reworked the ACPI mode change code to better conform to ACPI 2.0, 898handle corner cases, and improve code legibility (Kochi 899Takayoshi) 900 901Fixed a problem with the pathname parsing for the carat (^) 902prefix. The heavy use of the carat operator by the new namepath 903optimization in the iASL compiler uncovered a problem with the 904AML interpreter handling of this prefix. In the case where one 905or more carats precede a single nameseg, the nameseg was treated 906as standalone and the search rule (to root) was inadvertently 907applied. This could cause both the iASL compiler and the 908interpreter to find the wrong object or to miss the error that 909should occur if the object does not exist at that exact pathname. 910 911Found and fixed the problem where the HP Pavilion DSDT would not 912load. This was a relatively minor tweak to the table loading 913code (a problem caused by the unexpected encounter with a method 914invocation not within a control method), but it does not solve 915the overall issue of the execution of AML code at the table 916level. This investigation is still ongoing. 917 918Code and Data Size: Current core subsystem library sizes are 919shown below. These are the code and data sizes for the 920acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 921these values do not include any ACPI driver or OSPM code. The 922debug version of the code includes the debug output trace 923mechanism and has a larger code and data size. Note that these 924values will vary depending on the efficiency of the compiler and 925the compiler options used during generation. 926 927 Previous Release 928 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 929 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 930 Current Release: 931 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 932 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 933 934 9352) Linux 936 937Remove redundant slab.h include (Brad Hards) 938 939Fix several bugs in thermal.c (Herbert Nachtnebel) 940 941Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 942 943Change acpi_system_suspend to use updated irq functions (Pavel 944Machek) 945 946Export acpi_get_firmware_table (Matthew Wilcox) 947 948Use proper root proc entry for ACPI (Kochi Takayoshi) 949 950Fix early-boot table parsing (Bjorn Helgaas) 951 952 9533) iASL Compiler/Disassembler 954 955Reworked the compiler options to make them more consistent and to 956use two-letter options where appropriate. We were running out of 957sensible letters. This may break some makefiles, so check the 958current options list by invoking the compiler with no parameters. 959 960Completed the design and implementation of the ASL namepath 961optimization option for the compiler. This option optimizes all 962references to named objects to the shortest possible path. The 963first attempt tries to utilize a single nameseg (4 characters) 964and the "search-to-root" algorithm used by the interpreter. If 965that cannot be used (because either the name is not in the search 966path or there is a conflict with another object with the same 967name), the pathname is optimized using the carat prefix (usually 968a shorter string than specifying the entire path from the root.) 969 970Implemented support to obtain the DSDT from the Windows registry 971(when the disassembly option is specified with no input file). 972Added this code as the implementation for AcpiOsTableOverride in 973the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 974utility) to scan memory for the DSDT to the AcpiOsTableOverride 975function in the DOS OSL to make the disassembler truly OS 976independent. 977 978Implemented a new option to disassemble and compile in one step. 979When used without an input filename, this option will grab the 980DSDT from the local machine, disassemble it, and compile it in 981one step. 982 983Added a warning message for invalid escapes (a backslash followed 984by any character other than the allowable escapes). This catches 985the quoted string error "\_SB_" (which should be "\\_SB_" ). 986Also, there are numerous instances in the ACPI specification 987where this error occurs. 988 989Added a compiler option to disable all optimizations. This is 990basically the "compatibility mode" because by using this option, 991the AML code will come out exactly the same as other ASL 992compilers. 993 994Added error messages for incorrectly ordered dependent resource 995functions. This includes: missing EndDependentFn macro at end of 996dependent resource list, nested dependent function macros (both 997start and end), and missing StartDependentFn macro. These are 998common errors that should be caught at compile time. 999 1000Implemented _OSI support for the disassembler and compiler. _OSI 1001must be included in the namespace for proper disassembly (because 1002the disassembler must know the number of arguments.) 1003 1004Added an "optimization" message type that is optional (off by 1005default). This message is used for all optimizations - including 1006constant folding, integer optimization, and namepath 1007optimization. 1008 1009---------------------------------------- 101025 July 2002. Summary of changes for this release. 1011 1012 10131) ACPI CA Core Subsystem Version 20020725: 1014 1015The AML Disassembler has been enhanced to produce compilable ASL 1016code and has been integrated into the iASL compiler (see below) 1017as well as the single-step disassembly for the AML debugger and 1018the disassembler for the AcpiDump utility. All ACPI 2.0A 1019opcodes, resource templates and macros are fully supported. The 1020disassembler has been tested on over 30 different AML files, 1021producing identical AML when the resulting disassembled ASL file 1022is recompiled with the same ASL compiler. 1023 1024Modified the Resource Manager to allow zero interrupts and zero 1025dma channels during the GetCurrentResources call. This was 1026causing problems on some platforms. 1027 1028Added the AcpiOsRedirectOutput interface to the OSL to simplify 1029output redirection for the AcpiOsPrintf and AcpiOsVprintf 1030interfaces. 1031 1032Code and Data Size: Current core subsystem library sizes are 1033shown below. These are the code and data sizes for the 1034acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1035these values do not include any ACPI driver or OSPM code. The 1036debug version of the code includes the debug output trace 1037mechanism and has a larger code and data size. Note that these 1038values will vary depending on the efficiency of the compiler and 1039the compiler options used during generation. 1040 1041 Previous Release 1042 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 1043 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 1044 Current Release: 1045 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 1046 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 1047 1048 10492) Linux 1050 1051Fixed a panic in the EC driver (Dominik Brodowski) 1052 1053Implemented checksum of the R/XSDT itself during Linux table scan 1054(Richard Schaal) 1055 1056 10573) iASL compiler 1058 1059The AML disassembler is integrated into the compiler. The "-d" 1060option invokes the disassembler to completely disassemble an 1061input AML file, producing as output a text ASL file with the 1062extension ".dsl" (to avoid name collisions with existing .asl 1063source files.) A future enhancement will allow the disassembler 1064to obtain the BIOS DSDT from the registry under Windows. 1065 1066Fixed a problem with the VendorShort and VendorLong resource 1067descriptors where an invalid AML sequence was created. 1068 1069Implemented a fix for BufferData term in the ASL parser. It was 1070inadvertently defined twice, allowing invalid syntax to pass and 1071causing reduction conflicts. 1072 1073Fixed a problem where the Ones opcode could get converted to a 1074value of zero if "Ones" was used where a byte, word or dword 1075value was expected. The 64-bit value is now truncated to the 1076correct size with the correct value. 1077 1078 1079---------------------------------------- 108002 July 2002. Summary of changes for this release. 1081 1082 10831) ACPI CA Core Subsystem Version 20020702: 1084 1085The Table Manager code has been restructured to add several new 1086features. Tables that are not required by the core subsystem 1087(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 1088validated in any way and are returned from AcpiGetFirmwareTable 1089if requested. The AcpiOsTableOverride interface is now called 1090for each table that is loaded by the subsystem in order to allow 1091the host to override any table it chooses. Previously, only the 1092DSDT could be overridden. Added one new files, tbrsdt.c and 1093tbgetall.c. 1094 1095Fixed a problem with the conversion of internal package objects 1096to external objects (when a package is returned from a control 1097method.) The return buffer length was set to zero instead of the 1098proper length of the package object. 1099 1100Fixed a reported problem with the use of the RefOf and DeRefOf 1101operators when passing reference arguments to control methods. A 1102new type of Reference object is used internally for references 1103produced by the RefOf operator. 1104 1105Added additional error messages in the Resource Manager to 1106explain AE_BAD_DATA errors when they occur during resource 1107parsing. 1108 1109Split the AcpiEnableSubsystem into two primitives to enable a 1110finer granularity initialization sequence. These two calls 1111should be called in this order: AcpiEnableSubsystem (flags), 1112AcpiInitializeObjects (flags). The flags parameter remains the 1113same. 1114 1115 11162) Linux 1117 1118Updated the ACPI utilities module to understand the new style of 1119fully resolved package objects that are now returned from the 1120core subsystem. This eliminates errors of the form: 1121 1122 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 1123 acpi_utils-0430 [145] acpi_evaluate_reference: 1124 Invalid element in package (not a device reference) 1125 1126The method evaluation utility uses the new buffer allocation 1127scheme instead of calling AcpiEvaluate Object twice. 1128 1129Added support for ECDT. This allows the use of the Embedded 1130Controller before the namespace has been fully initialized, which 1131is necessary for ACPI 2.0 support, and for some laptops to 1132initialize properly. (Laptops using ECDT are still rare, so only 1133limited testing was performed of the added functionality.) 1134 1135Fixed memory leaks in the EC driver. 1136 1137Eliminated a brittle code structure in acpi_bus_init(). 1138 1139Eliminated the acpi_evaluate() helper function in utils.c. It is 1140no longer needed since acpi_evaluate_object can optionally 1141allocate memory for the return object. 1142 1143Implemented fix for keyboard hang when getting battery readings 1144on some systems (Stephen White) 1145 1146PCI IRQ routing update (Dominik Brodowski) 1147 1148Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 1149support 1150 1151---------------------------------------- 115211 June 2002. Summary of changes for this release. 1153 1154 11551) ACPI CA Core Subsystem Version 20020611: 1156 1157Fixed a reported problem where constants such as Zero and One 1158appearing within _PRT packages were not handled correctly within 1159the resource manager code. Originally reported against the ASL 1160compiler because the code generator now optimizes integers to 1161their minimal AML representation (i.e. AML constants if 1162possible.) The _PRT code now handles all AML constant opcodes 1163correctly (Zero, One, Ones, Revision). 1164 1165Fixed a problem with the Concatenate operator in the AML 1166interpreter where a buffer result object was incorrectly marked 1167as not fully evaluated, causing a run-time error of 1168AE_AML_INTERNAL. 1169 1170All package sub-objects are now fully resolved before they are 1171returned from the external ACPI interfaces. This means that name 1172strings are resolved to object handles, and constant operators 1173(Zero, One, Ones, Revision) are resolved to Integers. 1174 1175Implemented immediate resolution of the AML Constant opcodes 1176(Zero, One, Ones, Revision) to Integer objects upon detection 1177within the AML stream. This has simplified and reduced the 1178generated code size of the subsystem by eliminating about 10 1179switch statements for these constants (which previously were 1180contained in Reference objects.) The complicating issues are 1181that the Zero opcode is used as a "placeholder" for unspecified 1182optional target operands and stores to constants are defined to 1183be no-ops. 1184 1185Code and Data Size: Current core subsystem library sizes are 1186shown below. These are the code and data sizes for the acpica.lib 1187produced by the Microsoft Visual C++ 6.0 compiler, and these 1188values do not include any ACPI driver or OSPM code. The debug 1189version of the code includes the debug output trace mechanism and 1190has a larger code and data size. Note that these values will 1191vary depending on the efficiency of the compiler and the compiler 1192options used during generation. 1193 1194 Previous Release 1195 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 1196 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 1197 Current Release: 1198 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 1199 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 1200 1201 12022) Linux 1203 1204Added preliminary support for obtaining _TRA data for PCI root 1205bridges (Bjorn Helgaas). 1206 1207 12083) iASL Compiler Version X2046: 1209 1210Fixed a problem where the "_DDN" reserved name was defined to be 1211a control method with one argument. There are no arguments, and 1212_DDN does not have to be a control method. 1213 1214Fixed a problem with the Linux version of the compiler where the 1215source lines printed with error messages were the wrong lines. 1216This turned out to be the "LF versus CR/LF" difference between 1217Windows and Unix. This appears to be the longstanding issue 1218concerning listing output and error messages. 1219 1220Fixed a problem with the Linux version of compiler where opcode 1221names within error messages were wrong. This was caused by a 1222slight difference in the output of the Flex tool on Linux versus 1223Windows. 1224 1225Fixed a problem with the Linux compiler where the hex output 1226files contained some garbage data caused by an internal buffer 1227overrun. 1228 1229 1230---------------------------------------- 123117 May 2002. Summary of changes for this release. 1232 1233 12341) ACPI CA Core Subsystem Version 20020517: 1235 1236Implemented a workaround to an BIOS bug discovered on the HP 1237OmniBook where the FADT revision number and the table size are 1238inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The 1239new behavior is to fallback to using only the ACPI 1.0 fields of 1240the FADT if the table is too small to be a ACPI 2.0 table as 1241claimed by the revision number. Although this is a BIOS bug, 1242this is a case where the workaround is simple enough and with no 1243side effects, so it seemed prudent to add it. A warning message 1244is issued, however. 1245 1246Implemented minimum size checks for the fixed-length ACPI tables 1247-- the FADT and FACS, as well as consistency checks between the 1248revision number and the table size. 1249 1250Fixed a reported problem in the table override support where the 1251new table pointer was incorrectly treated as a physical address 1252instead of a logical address. 1253 1254Eliminated the use of the AE_AML_ERROR exception and replaced it 1255with more descriptive codes. 1256 1257Fixed a problem where an exception would occur if an ASL Field 1258was defined with no named Field Units underneath it (used by some 1259index fields). 1260 1261Code and Data Size: Current core subsystem library sizes are 1262shown below. These are the code and data sizes for the 1263acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1264these values do not include any ACPI driver or OSPM code. The 1265debug version of the code includes the debug output trace 1266mechanism and has a larger code and data size. Note that these 1267values will vary depending on the efficiency of the compiler and 1268the compiler options used during generation. 1269 1270 Previous Release 1271 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 1272 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 1273 Current Release: 1274 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 1275 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 1276 1277 1278 12792) Linux 1280 1281Much work done on ACPI init (MADT and PCI IRQ routing support). 1282(Paul D. and Dominik Brodowski) 1283 1284Fix PCI IRQ-related panic on boot (Sam Revitch) 1285 1286Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 1287 1288Fix "MHz" typo (Dominik Brodowski) 1289 1290Fix RTC year 2000 issue (Dominik Brodowski) 1291 1292Preclude multiple button proc entries (Eric Brunet) 1293 1294Moved arch-specific code out of include/platform/aclinux.h 1295 12963) iASL Compiler Version X2044: 1297 1298Implemented error checking for the string used in the EISAID 1299macro (Usually used in the definition of the _HID object.) The 1300code now strictly enforces the PnP format - exactly 7 characters, 13013 uppercase letters and 4 hex digits. 1302 1303If a raw string is used in the definition of the _HID object 1304(instead of the EISAID macro), the string must contain all 1305alphanumeric characters (e.g., "*PNP0011" is not allowed because 1306of the asterisk.) 1307 1308Implemented checking for invalid use of ACPI reserved names for 1309most of the name creation operators (Name, Device, Event, Mutex, 1310OperationRegion, PowerResource, Processor, and ThermalZone.) 1311Previously, this check was only performed for control methods. 1312 1313Implemented an additional check on the Name operator to emit an 1314error if a reserved name that must be implemented in ASL as a 1315control method is used. We know that a reserved name must be a 1316method if it is defined with input arguments. 1317 1318The warning emitted when a namespace object reference is not 1319found during the cross reference phase has been changed into an 1320error. The "External" directive should be used for names defined 1321in other modules. 1322 1323 13244) Tools and Utilities 1325 1326The 16-bit tools (adump16 and aexec16) have been regenerated and 1327tested. 1328 1329Fixed a problem with the output of both acpidump and adump16 1330where the indentation of closing parentheses and brackets was not 1331aligned properly with the parent block. 1332 1333 1334---------------------------------------- 133503 May 2002. Summary of changes for this release. 1336 1337 13381) ACPI CA Core Subsystem Version 20020503: 1339 1340Added support a new OSL interface that allows the host operating 1341system software to override the DSDT found in the firmware - 1342AcpiOsTableOverride. With this interface, the OSL can examine 1343the version of the firmware DSDT and replace it with a different 1344one if desired. 1345 1346Added new external interfaces for accessing ACPI registers from 1347device drivers and other system software - AcpiGetRegister and 1348AcpiSetRegister. This was simply an externalization of the 1349existing AcpiHwBitRegister interfaces. 1350 1351Fixed a regression introduced in the previous build where the 1352ASL/AML CreateField operator always returned an error, 1353"destination must be a NS Node". 1354 1355Extended the maximum time (before failure) to successfully enable 1356ACPI mode to 3 seconds. 1357 1358Code and Data Size: Current core subsystem library sizes are 1359shown below. These are the code and data sizes for the 1360acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1361these values do not include any ACPI driver or OSPM code. The 1362debug version of the code includes the debug output trace 1363mechanism and has a larger code and data size. Note that these 1364values will vary depending on the efficiency of the compiler and 1365the compiler options used during generation. 1366 1367 Previous Release 1368 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 1369 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 1370 Current Release: 1371 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 1372 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 1373 1374 13752) Linux 1376 1377Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 1378free. While 3 out of 4 of our in-house systems work fine, the 1379last one still hangs when testing the LAPIC timer. 1380 1381Renamed many files in 2.5 kernel release to omit "acpi_" from the 1382name. 1383 1384Added warning on boot for Presario 711FR. 1385 1386Sleep improvements (Pavel Machek) 1387 1388ACPI can now be built without CONFIG_PCI enabled. 1389 1390IA64: Fixed memory map functions (JI Lee) 1391 1392 13933) iASL Compiler Version X2043: 1394 1395Added support to allow the compiler to be integrated into the MS 1396VC++ development environment for one-button compilation of single 1397files or entire projects -- with error-to-source-line mapping. 1398 1399Implemented support for compile-time constant folding for the 1400Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 1401specification. This allows the ASL writer to use expressions 1402instead of Integer/Buffer/String constants in terms that must 1403evaluate to constants at compile time and will also simplify the 1404emitted AML in any such sub-expressions that can be folded 1405(evaluated at compile-time.) This increases the size of the 1406compiler significantly because a portion of the ACPI CA AML 1407interpreter is included within the compiler in order to pre- 1408evaluate constant expressions. 1409 1410 1411Fixed a problem with the "Unicode" ASL macro that caused the 1412compiler to fault. (This macro is used in conjunction with the 1413_STR reserved name.) 1414 1415Implemented an AML opcode optimization to use the Zero, One, and 1416Ones opcodes where possible to further reduce the size of integer 1417constants and thus reduce the overall size of the generated AML 1418code. 1419 1420Implemented error checking for new reserved terms for ACPI 1421version 2.0A. 1422 1423Implemented the -qr option to display the current list of ACPI 1424reserved names known to the compiler. 1425 1426Implemented the -qc option to display the current list of ASL 1427operators that are allowed within constant expressions and can 1428therefore be folded at compile time if the operands are 1429constants. 1430 1431 14324) Documentation 1433 1434Updated the Programmer's Reference for new interfaces, data 1435types, and memory allocation model options. 1436 1437Updated the iASL Compiler User Reference to apply new format and 1438add information about new features and options. 1439 1440---------------------------------------- 144119 April 2002. Summary of changes for this release. 1442 14431) ACPI CA Core Subsystem Version 20020419: 1444 1445The source code base for the Core Subsystem has been completely 1446cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 1447versions. The Lint option files used are included in the 1448/acpi/generate/lint directory. 1449 1450Implemented enhanced status/error checking across the entire 1451Hardware manager subsystem. Any hardware errors (reported from 1452the OSL) are now bubbled up and will abort a running control 1453method. 1454 1455Fixed a problem where the per-ACPI-table integer width (32 or 64) 1456was stored only with control method nodes, causing a fault when 1457non-control method code was executed during table loading. The 1458solution implemented uses a global variable to indicate table 1459width across the entire ACPI subsystem. Therefore, ACPI CA does 1460not support mixed integer widths across different ACPI tables 1461(DSDT, SSDT). 1462 1463Fixed a problem where NULL extended fields (X fields) in an ACPI 14642.0 ACPI FADT caused the table load to fail. Although the 1465existing ACPI specification is a bit fuzzy on this topic, the new 1466behavior is to fall back on a ACPI 1.0 field if the corresponding 1467ACPI 2.0 X field is zero (even though the table revision 1468indicates a full ACPI 2.0 table.) The ACPI specification will be 1469updated to clarify this issue. 1470 1471Fixed a problem with the SystemMemory operation region handler 1472where memory was always accessed byte-wise even if the AML- 1473specified access width was larger than a byte. This caused 1474problems on systems with memory-mapped I/O. Memory is now 1475accessed with the width specified. On systems that do not 1476support non-aligned transfers, a check is made to guarantee 1477proper address alignment before proceeding in order to avoid an 1478AML-caused alignment fault within the kernel. 1479 1480 1481Fixed a problem with the ExtendedIrq resource where only one byte 1482of the 4-byte Irq field was extracted. 1483 1484Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 1485function was out of date and required a rewrite. 1486 1487Code and Data Size: Current core subsystem library sizes are 1488shown below. These are the code and data sizes for the 1489acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1490these values do not include any ACPI driver or OSPM code. The 1491debug version of the code includes the debug output trace 1492mechanism and has a larger code and data size. Note that these 1493values will vary depending on the efficiency of the compiler and 1494the compiler options used during generation. 1495 1496 Previous Release 1497 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 1498 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 1499 Current Release: 1500 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 1501 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 1502 1503 15042) Linux 1505 1506PCI IRQ routing fixes (Dominik Brodowski) 1507 1508 15093) iASL Compiler Version X2042: 1510 1511Implemented an additional compile-time error check for a field 1512unit whose size + minimum access width would cause a run-time 1513access beyond the end-of-region. Previously, only the field size 1514itself was checked. 1515 1516The Core subsystem and iASL compiler now share a common parse 1517object in preparation for compile-time evaluation of the type 15183/4/5 ASL operators. 1519 1520 1521---------------------------------------- 1522Summary of changes for this release: 03_29_02 1523 15241) ACPI CA Core Subsystem Version 20020329: 1525 1526Implemented support for late evaluation of TermArg operands to 1527Buffer and Package objects. This allows complex expressions to 1528be used in the declarations of these object types. 1529 1530Fixed an ACPI 1.0 compatibility issue when reading Fields. In 1531ACPI 1.0, if the field was larger than 32 bits, it was returned 1532as a buffer - otherwise it was returned as an integer. In ACPI 15332.0, the field is returned as a buffer only if the field is 1534larger than 64 bits. The TableRevision is now considered when 1535making this conversion to avoid incompatibility with existing ASL 1536code. 1537 1538Implemented logical addressing for AcpiOsGetRootPointer. This 1539allows an RSDP with either a logical or physical address. With 1540this support, the host OS can now override all ACPI tables with 1541one logical RSDP. Includes implementation of "typed" pointer 1542support to allow a common data type for both physical and logical 1543pointers internally. This required a change to the 1544AcpiOsGetRootPointer interface. 1545 1546Implemented the use of ACPI 2.0 Generic Address Structures for 1547all GPE, Fixed Event, and PM Timer I/O. This allows the use of 1548memory mapped I/O for these ACPI features. 1549 1550Initialization now ignores not only non-required tables (All 1551tables other than the FADT, FACS, DSDT, and SSDTs), but also does 1552not validate the table headers of unrecognized tables. 1553 1554Fixed a problem where a notify handler could only be 1555installed/removed on an object of type Device. All "notify" 1556objects are now supported -- Devices, Processor, Power, and 1557Thermal. 1558 1559Removed most verbosity from the ACPI_DB_INFO debug level. Only 1560critical information is returned when this debug level is 1561enabled. 1562 1563Code and Data Size: Current core subsystem library sizes are 1564shown below. These are the code and data sizes for the 1565acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1566these values do not include any ACPI driver or OSPM code. The 1567debug version of the code includes the debug output trace 1568mechanism and has a larger code and data size. Note that these 1569values will vary depending on the efficiency of the compiler and 1570the compiler options used during generation. 1571 1572 Previous Release 1573 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 1574 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 1575 Current Release: 1576 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 1577 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 1578 1579 15802) Linux: 1581 1582The processor driver (acpi_processor.c) now fully supports ACPI 15832.0-based processor performance control (e.g. Intel(R) 1584SpeedStep(TM) technology) Note that older laptops that only have 1585the Intel "applet" interface are not supported through this. The 1586'limit' and 'performance' interface (/proc) are fully functional. 1587[Note that basic policy for controlling performance state 1588transitions will be included in the next version of ospmd.] The 1589idle handler was modified to more aggressively use C2, and PIIX4 1590errata handling underwent a complete overhaul (big thanks to 1591Dominik Brodowski). 1592 1593Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 1594based devices in the ACPI namespace are now dynamically bound 1595(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 1596This allows, among other things, ACPI to resolve bus numbers for 1597subordinate PCI bridges. 1598 1599Enhanced PCI IRQ routing to get the proper bus number for _PRT 1600entries defined underneath PCI bridges. 1601 1602Added IBM 600E to bad bios list due to invalid _ADR value for 1603PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 1604 1605In the process of adding full MADT support (e.g. IOAPIC) for IA32 1606(acpi.c, mpparse.c) -- stay tuned. 1607 1608Added back visual differentiation between fixed-feature and 1609control-method buttons in dmesg. Buttons are also subtyped (e.g. 1610button/power/PWRF) to simplify button identification. 1611 1612We no longer use -Wno-unused when compiling debug. Please ignore 1613any "_THIS_MODULE defined but not used" messages. 1614 1615Can now shut down the system using "magic sysrq" key. 1616 1617 16183) iASL Compiler version 2041: 1619 1620Fixed a problem where conversion errors for hex/octal/decimal 1621constants were not reported. 1622 1623Implemented a fix for the General Register template Address 1624field. This field was 8 bits when it should be 64. 1625 1626Fixed a problem where errors/warnings were no longer being 1627emitted within the listing output file. 1628 1629Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 1630exactly 4 characters, alphanumeric only. 1631 1632 1633 1634 1635---------------------------------------- 1636Summary of changes for this release: 03_08_02 1637 1638 16391) ACPI CA Core Subsystem Version 20020308: 1640 1641Fixed a problem with AML Fields where the use of the "AccessAny" 1642keyword could cause an interpreter error due to attempting to 1643read or write beyond the end of the parent Operation Region. 1644 1645Fixed a problem in the SystemMemory Operation Region handler 1646where an attempt was made to map memory beyond the end of the 1647region. This was the root cause of the "AE_ERROR" and 1648"AE_NO_MEMORY" errors on some Linux systems. 1649 1650Fixed a problem where the interpreter/namespace "search to root" 1651algorithm was not functioning for some object types. Relaxed the 1652internal restriction on the search to allow upsearches for all 1653external object types as well as most internal types. 1654 1655 16562) Linux: 1657 1658We now use safe_halt() macro versus individual calls to sti | 1659hlt. 1660 1661Writing to the processor limit interface should now work. "echo 16621" will increase the limit, 2 will decrease, and 0 will reset to 1663the default. 1664 1665 16663) ASL compiler: 1667 1668Fixed segfault on Linux version. 1669 1670 1671---------------------------------------- 1672Summary of changes for this release: 02_25_02 1673 16741) ACPI CA Core Subsystem: 1675 1676 1677Fixed a problem where the GPE bit masks were not initialized 1678properly, causing erratic GPE behavior. 1679 1680Implemented limited support for multiple calling conventions. 1681The code can be generated with either the VPL (variable parameter 1682list, or "C") convention, or the FPL (fixed parameter list, or 1683"Pascal") convention. The core subsystem is about 3.4% smaller 1684when generated with FPL. 1685 1686 16872) Linux 1688 1689Re-add some /proc/acpi/event functionality that was lost during 1690the rewrite 1691 1692Resolved issue with /proc events for fixed-feature buttons 1693showing up as the system device. 1694 1695Fixed checks on C2/C3 latencies to be inclusive of maximum 1696values. 1697 1698Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 1699 1700Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 1701 1702Fixed limit interface & usage to fix bugs with passive cooling 1703hysterisis. 1704 1705Restructured PRT support. 1706 1707 1708---------------------------------------- 1709Summary of changes for this label: 02_14_02 1710 1711 17121) ACPI CA Core Subsystem: 1713 1714Implemented support in AcpiLoadTable to allow loading of FACS and 1715FADT tables. 1716 1717Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 1718been removed. All 64-bit platforms should be migrated to the 1719ACPI 2.0 tables. The actbl71.h header has been removed from the 1720source tree. 1721 1722All C macros defined within the subsystem have been prefixed with 1723"ACPI_" to avoid collision with other system include files. 1724 1725Removed the return value for the two AcpiOsPrint interfaces, 1726since it is never used and causes lint warnings for ignoring the 1727return value. 1728 1729Added error checking to all internal mutex acquire and release 1730calls. Although a failure from one of these interfaces is 1731probably a fatal system error, these checks will cause the 1732immediate abort of the currently executing method or interface. 1733 1734Fixed a problem where the AcpiSetCurrentResources interface could 1735fault. This was a side effect of the deployment of the new 1736memory allocation model. 1737 1738Fixed a couple of problems with the Global Lock support 1739introduced in the last major build. The "common" (1.0/2.0) 1740internal FACS was being overwritten with the FACS signature and 1741clobbering the Global Lock pointer. Also, the actual firmware 1742FACS was being unmapped after construction of the "common" FACS, 1743preventing access to the actual Global Lock field within it. The 1744"common" internal FACS is no longer installed as an actual ACPI 1745table; it is used simply as a global. 1746 1747Code and Data Size: Current core subsystem library sizes are 1748shown below. These are the code and data sizes for the 1749acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 1750these values do not include any ACPI driver or OSPM code. The 1751debug version of the code includes the debug output trace 1752mechanism and has a larger code and data size. Note that these 1753values will vary depending on the efficiency of the compiler and 1754the compiler options used during generation. 1755 1756 Previous Release (02_07_01) 1757 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 1758 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 1759 Current Release: 1760 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 1761 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 1762 1763 17642) Linux 1765 1766Updated Linux-specific code for core macro and OSL interface 1767changes described above. 1768 1769Improved /proc/acpi/event. It now can be opened only once and has 1770proper poll functionality. 1771 1772Fixed and restructured power management (acpi_bus). 1773 1774Only create /proc "view by type" when devices of that class 1775exist. 1776 1777Fixed "charging/discharging" bug (and others) in acpi_battery. 1778 1779Improved thermal zone code. 1780 1781 17823) ASL Compiler, version X2039: 1783 1784 1785Implemented the new compiler restriction on ASL String hex/octal 1786escapes to non-null, ASCII values. An error results if an 1787invalid value is used. (This will require an ACPI 2.0 1788specification change.) 1789 1790AML object labels that are output to the optional C and ASM 1791source are now prefixed with both the ACPI table signature and 1792table ID to help guarantee uniqueness within a large BIOS 1793project. 1794 1795 1796---------------------------------------- 1797Summary of changes for this label: 02_01_02 1798 17991) ACPI CA Core Subsystem: 1800 1801ACPI 2.0 support is complete in the entire Core Subsystem and the 1802ASL compiler. All new ACPI 2.0 operators are implemented and all 1803other changes for ACPI 2.0 support are complete. With 1804simultaneous code and data optimizations throughout the 1805subsystem, ACPI 2.0 support has been implemented with almost no 1806additional cost in terms of code and data size. 1807 1808Implemented a new mechanism for allocation of return buffers. If 1809the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 1810be allocated on behalf of the caller. Consolidated all return 1811buffer validation and allocation to a common procedure. Return 1812buffers will be allocated via the primary OSL allocation 1813interface since it appears that a separate pool is not needed by 1814most users. If a separate pool is required for these buffers, 1815the caller can still use the original mechanism and pre-allocate 1816the buffer(s). 1817 1818Implemented support for string operands within the DerefOf 1819operator. 1820 1821Restructured the Hardware and Event managers to be table driven, 1822simplifying the source code and reducing the amount of generated 1823code. 1824 1825Split the common read/write low-level ACPI register bitfield 1826procedure into a separate read and write, simplifying the code 1827considerably. 1828 1829Obsoleted the AcpiOsCallocate OSL interface. This interface was 1830used only a handful of times and didn't have enough critical mass 1831for a separate interface. Replaced with a common calloc 1832procedure in the core. 1833 1834Fixed a reported problem with the GPE number mapping mechanism 1835that allows GPE1 numbers to be non-contiguous with GPE0. 1836Reorganized the GPE information and shrunk a large array that was 1837originally large enough to hold info for all possible GPEs (256) 1838to simply large enough to hold all GPEs up to the largest GPE 1839number on the machine. 1840 1841Fixed a reported problem with resource structure alignment on 64- 1842bit platforms. 1843 1844Changed the AcpiEnableEvent and AcpiDisableEvent external 1845interfaces to not require any flags for the common case of 1846enabling/disabling a GPE. 1847 1848Implemented support to allow a "Notify" on a Processor object. 1849 1850Most TBDs in comments within the source code have been resolved 1851and eliminated. 1852 1853Fixed a problem in the interpreter where a standalone parent 1854prefix (^) was not handled correctly in the interpreter and 1855debugger. 1856 1857Removed obsolete and unnecessary GPE save/restore code. 1858 1859Implemented Field support in the ASL Load operator. This allows 1860a table to be loaded from a named field, in addition to loading a 1861table directly from an Operation Region. 1862 1863Implemented timeout and handle support in the external Global 1864Lock interfaces. 1865 1866Fixed a problem in the AcpiDump utility where pathnames were no 1867longer being generated correctly during the dump of named 1868objects. 1869 1870Modified the AML debugger to give a full display of if/while 1871predicates instead of just one AML opcode at a time. (The 1872predicate can have several nested ASL statements.) The old 1873method was confusing during single stepping. 1874 1875Code and Data Size: Current core subsystem library sizes are 1876shown below. These are the code and data sizes for the acpica.lib 1877produced by the Microsoft Visual C++ 6.0 compiler, and these 1878values do not include any ACPI driver or OSPM code. The debug 1879version of the code includes the debug output trace mechanism and 1880has a larger code and data size. Note that these values will 1881vary depending on the efficiency of the compiler and the compiler 1882options used during generation. 1883 1884 Previous Release (12_18_01) 1885 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 1886 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 1887 Current Release: 1888 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 1889 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 1890 18912) Linux 1892 1893 Implemented fix for PIIX reverse throttling errata (Processor 1894driver) 1895 1896Added new Limit interface (Processor and Thermal drivers) 1897 1898New thermal policy (Thermal driver) 1899 1900Many updates to /proc 1901 1902Battery "low" event support (Battery driver) 1903 1904Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 1905 1906IA32 - IA64 initialization unification, no longer experimental 1907 1908Menuconfig options redesigned 1909 19103) ASL Compiler, version X2037: 1911 1912Implemented several new output features to simplify integration 1913of AML code into firmware: 1) Output the AML in C source code 1914with labels for each named ASL object. The original ASL 1915source code is interleaved as C comments. 2) Output the AML in 1916ASM source code with labels and interleaved ASL source. 3) 1917Output the AML in raw hex table form, in either C or ASM. 1918 1919Implemented support for optional string parameters to the 1920LoadTable operator. 1921 1922Completed support for embedded escape sequences within string 1923literals. The compiler now supports all single character escapes 1924as well as the Octal and Hex escapes. Note: the insertion of a 1925null byte into a string literal (via the hex/octal escape) causes 1926the string to be immediately terminated. A warning is issued. 1927 1928Fixed a problem where incorrect AML was generated for the case 1929where an ASL namepath consists of a single parent prefix ( 1930 1931) with no trailing name segments. 1932 1933The compiler has been successfully generated with a 64-bit C 1934compiler. 1935 1936 1937 1938 1939---------------------------------------- 1940Summary of changes for this label: 12_18_01 1941 19421) Linux 1943 1944Enhanced blacklist with reason and severity fields. Any table's 1945signature may now be used to identify a blacklisted system. 1946 1947Call _PIC control method to inform the firmware which interrupt 1948model the OS is using. Turn on any disabled link devices. 1949 1950Cleaned up busmgr /proc error handling (Andreas Dilger) 1951 1952 2) ACPI CA Core Subsystem: 1953 1954Implemented ACPI 2.0 semantics for the "Break" operator (Exit 1955from while loop) 1956 1957Completed implementation of the ACPI 2.0 "Continue", 1958"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 1959operators. All new ACPI 2.0 operators are now implemented in 1960both the ASL compiler and the AML interpreter. The only 1961remaining ACPI 2.0 task is support for the String data type in 1962the DerefOf operator. Fixed a problem with AcquireMutex where 1963the status code was lost if the caller had to actually wait for 1964the mutex. 1965 1966Increased the maximum ASL Field size from 64K bits to 4G bits. 1967 1968Completed implementation of the external Global Lock interfaces - 1969- AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout 1970and Handler parameters were added. 1971 1972Completed another pass at removing warnings and issues when 1973compiling with 64-bit compilers. The code now compiles cleanly 1974with the Intel 64-bit C/C++ compiler. Most notably, the pointer 1975add and subtract (diff) macros have changed considerably. 1976 1977Created and deployed a new ACPI_SIZE type that is 64-bits wide on 197864-bit platforms, 32-bits on all others. This type is used 1979wherever memory allocation and/or the C sizeof() operator is 1980used, and affects the OSL memory allocation interfaces 1981AcpiOsAllocate and AcpiOsCallocate. 1982 1983Implemented sticky user breakpoints in the AML debugger. 1984 1985Code and Data Size: Current core subsystem library sizes are 1986shown below. These are the code and data sizes for the acpica.lib 1987produced by the Microsoft Visual C++ 6.0 compiler, and these 1988values do not include any ACPI driver or OSPM code. The debug 1989version of the code includes the debug output trace mechanism and 1990has a larger code and data size. Note that these values will vary 1991depending on the efficiency of the compiler and the compiler 1992options used during generation. 1993 1994 Previous Release (12_05_01) 1995 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 1996 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 1997 Current Release: 1998 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 1999 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 2000 2001 3) ASL Compiler, version X2034: 2002 2003Now checks for (and generates an error if detected) the use of a 2004Break or Continue statement without an enclosing While statement. 2005 2006Successfully generated the compiler with the Intel 64-bit C 2007compiler. 2008 2009 ---------------------------------------- 2010Summary of changes for this label: 12_05_01 2011 2012 1) ACPI CA Core Subsystem: 2013 2014The ACPI 2.0 CopyObject operator is fully implemented. This 2015operator creates a new copy of an object (and is also used to 2016bypass the "implicit conversion" mechanism of the Store 2017operator.) 2018 2019The ACPI 2.0 semantics for the SizeOf operator are fully 2020implemented. The change is that performing a SizeOf on a 2021reference object causes an automatic dereference of the object to 2022tha actual value before the size is evaluated. This behavior was 2023undefined in ACPI 1.0. 2024 2025The ACPI 2.0 semantics for the Extended IRQ resource descriptor 2026have been implemented. The interrupt polarity and mode are now 2027independently set. 2028 2029Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 2030appearing in Package objects were not properly converted to 2031integers when the internal Package was converted to an external 2032object (via the AcpiEvaluateObject interface.) 2033 2034Fixed a problem with the namespace object deletion mechanism for 2035objects created by control methods. There were two parts to this 2036problem: 1) Objects created during the initialization phase 2037method parse were not being deleted, and 2) The object owner ID 2038mechanism to track objects was broken. 2039 2040Fixed a problem where the use of the ASL Scope operator within a 2041control method would result in an invalid opcode exception. 2042 2043Fixed a problem introduced in the previous label where the buffer 2044length required for the _PRT structure was not being returned 2045correctly. 2046 2047Code and Data Size: Current core subsystem library sizes are 2048shown below. These are the code and data sizes for the acpica.lib 2049produced by the Microsoft Visual C++ 6.0 compiler, and these 2050values do not include any ACPI driver or OSPM code. The debug 2051version of the code includes the debug output trace mechanism and 2052has a larger code and data size. Note that these values will 2053vary depending on the efficiency of the compiler and the compiler 2054options used during generation. 2055 2056 Previous Release (11_20_01) 2057 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 2058 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 2059 2060 Current Release: 2061 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 2062 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 2063 2064 2) Linux: 2065 2066Updated all files to apply cleanly against 2.4.16. 2067 2068Added basic PCI Interrupt Routing Table (PRT) support for IA32 2069(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 2070version supports both static and dyanmic PRT entries, but dynamic 2071entries are treated as if they were static (not yet 2072reconfigurable). Architecture- specific code to use this data is 2073absent on IA32 but should be available shortly. 2074 2075Changed the initialization sequence to start the ACPI interpreter 2076(acpi_init) prior to initialization of the PCI driver (pci_init) 2077in init/main.c. This ordering is required to support PRT and 2078facilitate other (future) enhancement. A side effect is that the 2079ACPI bus driver and certain device drivers can no longer be 2080loaded as modules. 2081 2082Modified the 'make menuconfig' options to allow PCI Interrupt 2083Routing support to be included without the ACPI Bus and other 2084device drivers. 2085 2086 3) ASL Compiler, version X2033: 2087 2088Fixed some issues with the use of the new CopyObject and 2089DataTableRegion operators. Both are fully functional. 2090 2091 ---------------------------------------- 2092Summary of changes for this label: 11_20_01 2093 2094 20 November 2001. Summary of changes for this release. 2095 2096 1) ACPI CA Core Subsystem: 2097 2098Updated Index support to match ACPI 2.0 semantics. Storing a 2099Integer, String, or Buffer to an Index of a Buffer will store 2100only the least-significant byte of the source to the Indexed 2101buffer byte. Multiple writes are not performed. 2102 2103Fixed a problem where the access type used in an AccessAs ASL 2104operator was not recorded correctly into the field object. 2105 2106Fixed a problem where ASL Event objects were created in a 2107signalled state. Events are now created in an unsignalled state. 2108 2109The internal object cache is now purged after table loading and 2110initialization to reduce the use of dynamic kernel memory -- on 2111the assumption that object use is greatest during the parse phase 2112of the entire table (versus the run-time use of individual 2113control methods.) 2114 2115ACPI 2.0 variable-length packages are now fully operational. 2116 2117Code and Data Size: Code and Data optimizations have permitted 2118new feature development with an actual reduction in the library 2119size. Current core subsystem library sizes are shown below. 2120These are the code and data sizes for the acpica.lib produced by 2121the Microsoft Visual C++ 6.0 compiler, and these values do not 2122include any ACPI driver or OSPM code. The debug version of the 2123code includes the debug output trace mechanism and has a larger 2124code and data size. Note that these values will vary depending 2125on the efficiency of the compiler and the compiler options used 2126during generation. 2127 2128 Previous Release (11_09_01): 2129 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 2130 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 2131 2132 Current Release: 2133 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 2134 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 2135 2136 2) Linux: 2137 2138Enhanced the ACPI boot-time initialization code to allow the use 2139of Local APIC tables for processor enumeration on IA-32, and to 2140pave the way for a fully MPS-free boot (on SMP systems) in the 2141near future. This functionality replaces 2142arch/i386/kernel/acpitables.c, which was introduced in an earlier 21432.4.15-preX release. To enable this feature you must add 2144"acpi_boot=on" to the kernel command line -- see the help entry 2145for CONFIG_ACPI_BOOT for more information. An IA-64 release is 2146in the works... 2147 2148Restructured the configuration options to allow boot-time table 2149parsing support without inclusion of the ACPI Interpreter (and 2150other) code. 2151 2152NOTE: This release does not include fixes for the reported 2153events, power-down, and thermal passive cooling issues (coming 2154soon). 2155 2156 3) ASL Compiler: 2157 2158Added additional typechecking for Fields within restricted access 2159Operation Regions. All fields within EC and CMOS regions must be 2160declared with ByteAcc. All fields withing SMBus regions must be 2161declared with the BufferAcc access type. 2162 2163Fixed a problem where the listing file output of control methods 2164no longer interleaved the actual AML code with the ASL source 2165code. 2166 2167 2168 2169---------------------------------------- 2170Summary of changes for this label: 11_09_01 2171 21721) ACPI CA Core Subsystem: 2173 2174Implemented ACPI 2.0-defined support for writes to fields with a 2175Buffer, String, or Integer source operand that is smaller than 2176the target field. In these cases, the source operand is zero- 2177extended to fill the target field. 2178 2179Fixed a problem where a Field starting bit offset (within the 2180parent operation region) was calculated incorrectly if the 2181alignment of the field differed from the access width. This 2182affected CreateWordField, CreateDwordField, CreateQwordField, and 2183possibly other fields that use the "AccessAny" keyword. 2184 2185Fixed a problem introduced in the 11_02_01 release where indirect 2186stores through method arguments did not operate correctly. 2187 21882) Linux: 2189 2190Implemented boot-time ACPI table parsing support 2191(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 2192facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 2193legacy BIOS interfaces (e.g. MPS) for the configuration of system 2194processors, memory, and interrupts during setup_arch(). Note 2195that this patch does not include the required architecture- 2196specific changes required to apply this information -- subsequent 2197patches will be posted for both IA32 and IA64 to achieve this. 2198 2199Added low-level sleep support for IA32 platforms, courtesy of Pat 2200Mochel. This allows IA32 systems to transition to/from various 2201sleeping states (e.g. S1, S3), although the lack of a centralized 2202driver model and power-manageable drivers will prevent its 2203(successful) use on most systems. 2204 2205Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 2206submenu, unified IA32 and IA64 options, added new "Boot using 2207ACPI tables" option, etc. 2208 2209Increased the default timeout for the EC driver from 1ms to 10ms 2210(1000 cycles of 10us) to try to address AE_TIME errors during EC 2211transactions. 2212 2213 ---------------------------------------- 2214Summary of changes for this label: 11_02_01 2215 22161) ACPI CA Core Subsystem: 2217 2218ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 2219(QWordAcc keyword). All ACPI 2.0 64-bit support is now 2220implemented. 2221 2222OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 2223changes to support ACPI 2.0 Qword field access. Read/Write 2224PciConfiguration(), Read/Write Memory(), and Read/Write Port() 2225now accept an ACPI_INTEGER (64 bits) as the value parameter. 2226Also, the value parameter for the address space handler interface 2227is now an ACPI_INTEGER. OSL implementations of these interfaces 2228must now handle the case where the Width parameter is 64. 2229 2230Index Fields: Fixed a problem where unaligned bit assembly and 2231disassembly for IndexFields was not supported correctly. 2232 2233Index and Bank Fields: Nested Index and Bank Fields are now 2234supported. During field access, a check is performed to ensure 2235that the value written to an Index or Bank register is not out of 2236the range of the register. The Index (or Bank) register is 2237written before each access to the field data. Future support will 2238include allowing individual IndexFields to be wider than the 2239DataRegister width. 2240 2241Fields: Fixed a problem where the AML interpreter was incorrectly 2242attempting to write beyond the end of a Field/OpRegion. This was 2243a boundary case that occurred when a DWORD field was written to a 2244BYTE access OpRegion, forcing multiple writes and causing the 2245interpreter to write one datum too many. 2246 2247Fields: Fixed a problem with Field/OpRegion access where the 2248starting bit address of a field was incorrectly calculated if the 2249current access type was wider than a byte (WordAcc, DwordAcc, or 2250QwordAcc). 2251 2252Fields: Fixed a problem where forward references to individual 2253FieldUnits (individual Field names within a Field definition) 2254were not resolved during the AML table load. 2255 2256Fields: Fixed a problem where forward references from a Field 2257definition to the parent Operation Region definition were not 2258resolved during the AML table load. 2259 2260Fields: Duplicate FieldUnit names within a scope are now detected 2261during AML table load. 2262 2263Acpi Interfaces: Fixed a problem where the AcpiGetName() 2264interface returned an incorrect name for the root node. 2265 2266Code and Data Size: Code and Data optimizations have permitted 2267new feature development with an actual reduction in the library 2268size. Current core subsystem library sizes are shown below. 2269These are the code and data sizes for the acpica.lib produced by 2270the Microsoft Visual C++ 6.0 compiler, and these values do not 2271include any ACPI driver or OSPM code. The debug version of the 2272code includes the debug output trace mechanism and has a larger 2273code and data size. Note that these values will vary depending 2274on the efficiency of the compiler and the compiler options used 2275during generation. 2276 2277 Previous Release (10_18_01): 2278 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 2279 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 2280 2281 Current Release: 2282 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 2283 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 2284 2285 2) Linux: 2286 2287Improved /proc processor output (Pavel Machek) Re-added 2288MODULE_LICENSE("GPL") to all modules. 2289 2290 3) ASL Compiler version X2030: 2291 2292Duplicate FieldUnit names within a scope are now detected and 2293flagged as errors. 2294 2295 4) Documentation: 2296 2297Programmer Reference updated to reflect OSL and address space 2298handler interface changes described above. 2299 2300---------------------------------------- 2301Summary of changes for this label: 10_18_01 2302 2303ACPI CA Core Subsystem: 2304 2305Fixed a problem with the internal object reference count 2306mechanism that occasionally caused premature object deletion. 2307This resolves all of the outstanding problem reports where an 2308object is deleted in the middle of an interpreter evaluation. 2309Although this problem only showed up in rather obscure cases, the 2310solution to the problem involved an adjustment of all reference 2311counts involving objects attached to namespace nodes. 2312 2313Fixed a problem with Field support in the interpreter where 2314writing to an aligned field whose length is an exact multiple (2 2315or greater) of the field access granularity would cause an 2316attempt to write beyond the end of the field. 2317 2318The top level AML opcode execution functions within the 2319interpreter have been renamed with a more meaningful and 2320consistent naming convention. The modules exmonad.c and 2321exdyadic.c were eliminated. New modules are exoparg1.c, 2322exoparg2.c, exoparg3.c, and exoparg6.c. 2323 2324Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 2325 2326Fixed a problem where the AML debugger was causing some internal 2327objects to not be deleted during subsystem termination. 2328 2329Fixed a problem with the external AcpiEvaluateObject interface 2330where the subsystem would fault if the named object to be 2331evaluated refered to a constant such as Zero, Ones, etc. 2332 2333Fixed a problem with IndexFields and BankFields where the 2334subsystem would fault if the index, data, or bank registers were 2335not defined in the same scope as the field itself. 2336 2337Added printf format string checking for compilers that support 2338this feature. Corrected more than 50 instances of issues with 2339format specifiers within invocations of ACPI_DEBUG_PRINT 2340throughout the core subsystem code. 2341 2342The ASL "Revision" operator now returns the ACPI support level 2343implemented in the core - the value "2" since the ACPI 2.0 2344support is more than 50% implemented. 2345 2346Enhanced the output of the AML debugger "dump namespace" command 2347to output in a more human-readable form. 2348 2349Current core subsystem library code sizes are shown below. These 2350are the code and data sizes for the acpica.lib produced by the 2351Microsoft Visual C++ 6.0 compiler, and these values do not 2352include any ACPI driver or OSPM code. The debug version of the 2353code includes the full debug trace mechanism -- leading to a much 2354larger code and data size. Note that these values will vary 2355depending on the efficiency of the compiler and the compiler 2356options used during generation. 2357 2358 Previous Label (09_20_01): 2359 Non-Debug Version: 65K Code, 5K Data, 70K Total 2360 Debug Version: 138K Code, 58K Data, 196K Total 2361 2362 This Label: 2363 2364 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 2365 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 2366 2367Linux: 2368 2369Implemented a "Bad BIOS Blacklist" to track machines that have 2370known ASL/AML problems. 2371 2372Enhanced the /proc interface for the thermal zone driver and 2373added support for _HOT (the critical suspend trip point). The 2374'info' file now includes threshold/policy information, and allows 2375setting of _SCP (cooling preference) and _TZP (polling frequency) 2376values to the 'info' file. Examples: "echo tzp=5 > info" sets the 2377polling frequency to 5 seconds, and "echo scp=1 > info" sets the 2378cooling preference to the passive/quiet mode (if supported by the 2379ASL). 2380 2381Implemented a workaround for a gcc bug that resuted in an OOPs 2382when loading the control method battery driver. 2383 2384 ---------------------------------------- 2385Summary of changes for this label: 09_20_01 2386 2387 ACPI CA Core Subsystem: 2388 2389The AcpiEnableEvent and AcpiDisableEvent interfaces have been 2390modified to allow individual GPE levels to be flagged as wake- 2391enabled (i.e., these GPEs are to remain enabled when the platform 2392sleeps.) 2393 2394The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 2395support wake-enabled GPEs. This means that upon entering the 2396sleep state, all GPEs that are not wake-enabled are disabled. 2397When leaving the sleep state, these GPEs are reenabled. 2398 2399A local double-precision divide/modulo module has been added to 2400enhance portability to OS kernels where a 64-bit math library is 2401not available. The new module is "utmath.c". 2402 2403Several optimizations have been made to reduce the use of CPU 2404stack. Originally over 2K, the maximum stack usage is now below 24052K at 1860 bytes (1.82k) 2406 2407Fixed a problem with the AcpiGetFirmwareTable interface where the 2408root table pointer was not mapped into a logical address 2409properly. 2410 2411Fixed a problem where a NULL pointer was being dereferenced in 2412the interpreter code for the ASL Notify operator. 2413 2414Fixed a problem where the use of the ASL Revision operator 2415returned an error. This operator now returns the current version 2416of the ACPI CA core subsystem. 2417 2418Fixed a problem where objects passed as control method parameters 2419to AcpiEvaluateObject were always deleted at method termination. 2420However, these objects may end up being stored into the namespace 2421by the called method. The object reference count mechanism was 2422applied to these objects instead of a force delete. 2423 2424Fixed a problem where static strings or buffers (contained in the 2425AML code) that are declared as package elements within the ASL 2426code could cause a fault because the interpreter would attempt to 2427delete them. These objects are now marked with the "static 2428object" flag to prevent any attempt to delete them. 2429 2430Implemented an interpreter optimization to use operands directly 2431from the state object instead of extracting the operands to local 2432variables. This reduces stack use and code size, and improves 2433performance. 2434 2435The module exxface.c was eliminated as it was an unnecessary 2436extra layer of code. 2437 2438Current core subsystem library code sizes are shown below. These 2439are the code and data sizes for the acpica.lib produced by the 2440Microsoft Visual C++ 6.0 compiler, and these values do not 2441include any ACPI driver or OSPM code. The debug version of the 2442code includes the full debug trace mechanism -- leading to a much 2443larger code and data size. Note that these values will vary 2444depending on the efficiency of the compiler and the compiler 2445options used during generation. 2446 2447 Non-Debug Version: 65K Code, 5K Data, 70K Total 2448(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 2449Total (Previously 195K) 2450 2451Linux: 2452 2453Support for ACPI 2.0 64-bit integers has been added. All ACPI 2454Integer objects are now 64 bits wide 2455 2456All Acpi data types and structures are now in lower case. Only 2457Acpi macros are upper case for differentiation. 2458 2459 Documentation: 2460 2461Changes to the external interfaces as described above. 2462 2463 ---------------------------------------- 2464Summary of changes for this label: 08_31_01 2465 2466 ACPI CA Core Subsystem: 2467 2468A bug with interpreter implementation of the ASL Divide operator 2469was found and fixed. The implicit function return value (not the 2470explicit store operands) was returning the remainder instead of 2471the quotient. This was a longstanding bug and it fixes several 2472known outstanding issues on various platforms. 2473 2474The ACPI_DEBUG_PRINT and function trace entry/exit macros have 2475been further optimized for size. There are 700 invocations of 2476the DEBUG_PRINT macro alone, so each optimization reduces the 2477size of the debug version of the subsystem significantly. 2478 2479A stack trace mechanism has been implemented. The maximum stack 2480usage is about 2K on 32-bit platforms. The debugger command 2481"stat stack" will display the current maximum stack usage. 2482 2483All public symbols and global variables within the subsystem are 2484now prefixed with the string "Acpi". This keeps all of the 2485symbols grouped together in a kernel map, and avoids conflicts 2486with other kernel subsystems. 2487 2488Most of the internal fixed lookup tables have been moved into the 2489code segment via the const operator. 2490 2491Several enhancements have been made to the interpreter to both 2492reduce the code size and improve performance. 2493 2494Current core subsystem library code sizes are shown below. These 2495are the code and data sizes for the acpica.lib produced by the 2496Microsoft Visual C++ 6.0 compiler, and these values do not 2497include any ACPI driver or OSPM code. The debug version of the 2498code includes the full debug trace mechanism which contains over 2499700 invocations of the DEBUG_PRINT macro, 500 function entry 2500macro invocations, and over 900 function exit macro invocations - 2501- leading to a much larger code and data size. Note that these 2502values will vary depending on the efficiency of the compiler and 2503the compiler options used during generation. 2504 2505 Non-Debug Version: 64K Code, 5K Data, 69K Total 2506Debug Version: 137K Code, 58K Data, 195K Total 2507 2508 Linux: 2509 2510Implemented wbinvd() macro, pending a kernel-wide definition. 2511 2512Fixed /proc/acpi/event to handle poll() and short reads. 2513 2514 ASL Compiler, version X2026: 2515 2516Fixed a problem introduced in the previous label where the AML 2517code emitted for package objects produced packages with zero 2518length. 2519 2520 ---------------------------------------- 2521Summary of changes for this label: 08_16_01 2522 2523ACPI CA Core Subsystem: 2524 2525The following ACPI 2.0 ASL operators have been implemented in the 2526AML interpreter (These are already supported by the Intel ASL 2527compiler): ToDecimalString, ToHexString, ToString, ToInteger, 2528and ToBuffer. Support for 64-bit AML constants is implemented in 2529the AML parser, debugger, and disassembler. 2530 2531The internal memory tracking mechanism (leak detection code) has 2532been upgraded to reduce the memory overhead (a separate tracking 2533block is no longer allocated for each memory allocation), and now 2534supports all of the internal object caches. 2535 2536The data structures and code for the internal object caches have 2537been coelesced and optimized so that there is a single cache and 2538memory list data structure and a single group of functions that 2539implement generic cache management. This has reduced the code 2540size in both the debug and release versions of the subsystem. 2541 2542The DEBUG_PRINT macro(s) have been optimized for size and 2543replaced by ACPI_DEBUG_PRINT. The syntax for this macro is 2544slightly different, because it generates a single call to an 2545internal function. This results in a savings of about 90 bytes 2546per invocation, resulting in an overall code and data savings of 2547about 16% in the debug version of the subsystem. 2548 2549 Linux: 2550 2551Fixed C3 disk corruption problems and re-enabled C3 on supporting 2552machines. 2553 2554Integrated low-level sleep code by Patrick Mochel. 2555 2556Further tweaked source code Linuxization. 2557 2558Other minor fixes. 2559 2560 ASL Compiler: 2561 2562Support for ACPI 2.0 variable length packages is fixed/completed. 2563 2564Fixed a problem where the optional length parameter for the ACPI 25652.0 ToString operator. 2566 2567Fixed multiple extraneous error messages when a syntax error is 2568detected within the declaration line of a control method. 2569 2570 ---------------------------------------- 2571Summary of changes for this label: 07_17_01 2572 2573ACPI CA Core Subsystem: 2574 2575Added a new interface named AcpiGetFirmwareTable to obtain any 2576ACPI table via the ACPI signature. The interface can be called 2577at any time during kernel initialization, even before the kernel 2578virtual memory manager is initialized and paging is enabled. 2579This allows kernel subsystems to obtain ACPI tables very early, 2580even before the ACPI CA subsystem is initialized. 2581 2582Fixed a problem where Fields defined with the AnyAcc attribute 2583could be resolved to the incorrect address under the following 2584conditions: 1) the field width is larger than 8 bits and 2) the 2585parent operation region is not defined on a DWORD boundary. 2586 2587Fixed a problem where the interpreter is not being locked during 2588namespace initialization (during execution of the _INI control 2589methods), causing an error when an attempt is made to release it 2590later. 2591 2592ACPI 2.0 support in the AML Interpreter has begun and will be 2593ongoing throughout the rest of this year. In this label, The Mod 2594operator is implemented. 2595 2596Added a new data type to contain full PCI addresses named 2597ACPI_PCI_ID. This structure contains the PCI Segment, Bus, 2598Device, and Function values. 2599 2600 Linux: 2601 2602Enhanced the Linux version of the source code to change most 2603capitalized ACPI type names to lowercase. For example, all 2604instances of ACPI_STATUS are changed to acpi_status. This will 2605result in a large diff, but the change is strictly cosmetic and 2606aligns the CA code closer to the Linux coding standard. 2607 2608OSL Interfaces: 2609 2610The interfaces to the PCI configuration space have been changed 2611to add the PCI Segment number and to split the single 32-bit 2612combined DeviceFunction field into two 16-bit fields. This was 2613accomplished by moving the four values that define an address in 2614PCI configuration space (segment, bus, device, and function) to 2615the new ACPI_PCI_ID structure. 2616 2617The changes to the PCI configuration space interfaces led to a 2618reexamination of the complete set of address space access 2619interfaces for PCI, I/O, and Memory. The previously existing 18 2620interfaces have proven difficult to maintain (any small change 2621must be propagated across at least 6 interfaces) and do not 2622easily allow for future expansion to 64 bits if necessary. Also, 2623on some systems, it would not be appropriate to demultiplex the 2624access width (8, 16, 32,or 64) before calling the OSL if the 2625corresponding native OS interfaces contain a similar access width 2626parameter. For these reasons, the 18 address space interfaces 2627have been replaced by these 6 new ones: 2628 2629AcpiOsReadPciConfiguration 2630AcpiOsWritePciConfiguration 2631AcpiOsReadMemory 2632AcpiOsWriteMemory 2633AcpiOsReadPort 2634AcpiOsWritePort 2635 2636Added a new interface named AcpiOsGetRootPointer to allow the OSL 2637to perform the platform and/or OS-specific actions necessary to 2638obtain the ACPI RSDP table pointer. On IA-32 platforms, this 2639interface will simply call down to the CA core to perform the low- 2640memory search for the table. On IA-64, the RSDP is obtained from 2641EFI. Migrating this interface to the OSL allows the CA core to 2642remain OS and platform independent. 2643 2644Added a new interface named AcpiOsSignal to provide a generic 2645"function code and pointer" interface for various miscellaneous 2646signals and notifications that must be made to the host OS. The 2647first such signals are intended to support the ASL Fatal and 2648Breakpoint operators. In the latter case, the AcpiOsBreakpoint 2649interface has been obsoleted. 2650 2651The definition of the AcpiFormatException interface has been 2652changed to simplify its use. The caller no longer must supply a 2653buffer to the call; A pointer to a const string is now returned 2654directly. This allows the call to be easily used in printf 2655statements, etc. since the caller does not have to manage a local 2656buffer. 2657 2658 2659 ASL Compiler, Version X2025: 2660 2661The ACPI 2.0 Switch/Case/Default operators have been implemented 2662and are fully functional. They will work with all ACPI 1.0 2663interpreters, since the operators are simply translated to 2664If/Else pairs. 2665 2666The ACPI 2.0 ElseIf operator is implemented and will also work 2667with 1.0 interpreters, for the same reason. 2668 2669Implemented support for ACPI 2.0 variable-length packages. These 2670packages have a separate opcode, and their size is determined by 2671the interpreter at run-time. 2672 2673Documentation The ACPI CA Programmer Reference has been updated 2674to reflect the new interfaces and changes to existing interfaces. 2675 2676 ------------------------------------------ 2677Summary of changes for this label: 06_15_01 2678 2679 ACPI CA Core Subsystem: 2680 2681Fixed a problem where a DWORD-accessed field within a Buffer 2682object would get its byte address inadvertently rounded down to 2683the nearest DWORD. Buffers are always Byte-accessible. 2684 2685 ASL Compiler, version X2024: 2686 2687Fixed a problem where the Switch() operator would either fault or 2688hang the compiler. Note however, that the AML code for this ACPI 26892.0 operator is not yet implemented. 2690 2691Compiler uses the new AcpiOsGetTimer interface to obtain compile 2692timings. 2693 2694Implementation of the CreateField operator automatically converts 2695a reference to a named field within a resource descriptor from a 2696byte offset to a bit offset if required. 2697 2698Added some missing named fields from the resource descriptor 2699support. These are the names that are automatically created by 2700the compiler to reference fields within a descriptor. They are 2701only valid at compile time and are not passed through to the AML 2702interpreter. 2703 2704Resource descriptor named fields are now typed as Integers and 2705subject to compile-time typechecking when used in expressions. 2706 2707 ------------------------------------------ 2708Summary of changes for this label: 05_18_01 2709 2710 ACPI CA Core Subsystem: 2711 2712Fixed a couple of problems in the Field support code where bits 2713from adjacent fields could be returned along with the proper 2714field bits. Restructured the field support code to improve 2715performance, readability and maintainability. 2716 2717New DEBUG_PRINTP macro automatically inserts the procedure name 2718into the output, saving hundreds of copies of procedure name 2719strings within the source, shrinking the memory footprint of the 2720debug version of the core subsystem. 2721 2722 Source Code Structure: 2723 2724The source code directory tree was restructured to reflect the 2725current organization of the component architecture. Some files 2726and directories have been moved and/or renamed. 2727 2728 Linux: 2729 2730Fixed leaking kacpidpc processes. 2731 2732Fixed queueing event data even when /proc/acpi/event is not 2733opened. 2734 2735 ASL Compiler, version X2020: 2736 2737Memory allocation performance enhancement - over 24X compile time 2738improvement on large ASL files. Parse nodes and namestring 2739buffers are now allocated from a large internal compiler buffer. 2740 2741The temporary .SRC file is deleted unless the "-s" option is 2742specified 2743 2744The "-d" debug output option now sends all output to the .DBG 2745file instead of the console. 2746 2747"External" second parameter is now optional 2748 2749"ElseIf" syntax now properly allows the predicate 2750 2751Last operand to "Load" now recognized as a Target operand 2752 2753Debug object can now be used anywhere as a normal object. 2754 2755ResourceTemplate now returns an object of type BUFFER 2756 2757EISAID now returns an object of type INTEGER 2758 2759"Index" now works with a STRING operand 2760 2761"LoadTable" now accepts optional parameters 2762 2763"ToString" length parameter is now optional 2764 2765"Interrupt (ResourceType," parse error fixed. 2766 2767"Register" with a user-defined region space parse error fixed 2768 2769Escaped backslash at the end of a string ("\\") scan/parse error 2770fixed 2771 2772"Revision" is now an object of type INTEGER. 2773 2774 2775 2776------------------------------------------ 2777Summary of changes for this label: 05_02_01 2778 2779Linux: 2780 2781/proc/acpi/event now blocks properly. 2782 2783Removed /proc/sys/acpi. You can still dump your DSDT from 2784/proc/acpi/dsdt. 2785 2786 ACPI CA Core Subsystem: 2787 2788Fixed a problem introduced in the previous label where some of 2789the "small" resource descriptor types were not recognized. 2790 2791Improved error messages for the case where an ASL Field is 2792outside the range of the parent operation region. 2793 2794 ASL Compiler, version X2018: 2795 2796Added error detection for ASL Fields that extend beyond the 2797length of the parent operation region (only if the length of the 2798region is known at compile time.) This includes fields that have 2799a minimum access width that is smaller than the parent region, 2800and individual field units that are partially or entirely beyond 2801the extent of the parent. 2802 2803 2804 2805------------------------------------------ 2806Summary of changes for this label: 04_27_01 2807 2808 ACPI CA Core Subsystem: 2809 2810Fixed a problem where the namespace mutex could be released at 2811the wrong time during execution of AcpiRemoveAddressSpaceHandler. 2812 2813Added optional thread ID output for debug traces, to simplify 2814debugging of multiple threads. Added context switch notification 2815when the debug code realizes that a different thread is now 2816executing ACPI code. 2817 2818Some additional external data types have been prefixed with the 2819string "ACPI_" for consistency. This may effect existing code. 2820The data types affected are the external callback typedefs - 2821e.g., WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 2822 2823 Linux: 2824 2825Fixed an issue with the OSL semaphore implementation where a 2826thread was waking up with an error from receiving a SIGCHLD 2827signal. 2828 2829Linux version of ACPI CA now uses the system C library for string 2830manipulation routines instead of a local implementation. 2831 2832Cleaned up comments and removed TBDs. 2833 2834 ASL Compiler, version X2017: 2835 2836Enhanced error detection and reporting for all file I/O 2837operations. 2838 2839 Documentation: 2840 2841Programmer Reference updated to version 1.06. 2842 2843 2844 2845------------------------------------------ 2846Summary of changes for this label: 04_13_01 2847 2848 ACPI CA Core Subsystem: 2849 2850Restructured support for BufferFields and RegionFields. 2851BankFields support is now fully operational. All known 32-bit 2852limitations on field sizes have been removed. Both BufferFields 2853and (Operation) RegionFields are now supported by the same field 2854management code. 2855 2856Resource support now supports QWORD address and IO resources. The 285716/32/64 bit address structures and the Extended IRQ structure 2858have been changed to properly handle Source Resource strings. 2859 2860A ThreadId of -1 is now used to indicate a "mutex not acquired" 2861condition internally and must never be returned by 2862AcpiOsThreadId. This reserved value was changed from 0 since Unix 2863systems allow a thread ID of 0. 2864 2865Linux: 2866 2867Driver code reorganized to enhance portability 2868 2869Added a kernel configuration option to control ACPI_DEBUG 2870 2871Fixed the EC driver to honor _GLK. 2872 2873ASL Compiler, version X2016: 2874 2875Fixed support for the "FixedHw" keyword. Previously, the FixedHw 2876address space was set to 0, not 0x7f as it should be. 2877 2878 ------------------------------------------ 2879Summary of changes for this label: 03_13_01 2880 2881 ACPI CA Core Subsystem: 2882 2883During ACPI initialization, the _SB_._INI method is now run if 2884present. 2885 2886Notify handler fix - notifies are deferred until the parent 2887method completes execution. This fixes the "mutex already 2888acquired" issue seen occasionally. 2889 2890Part of the "implicit conversion" rules in ACPI 2.0 have been 2891found to cause compatibility problems with existing ASL/AML. The 2892convert "result-to-target-type" implementation has been removed 2893for stores to method Args and Locals. Source operand conversion 2894is still fully implemented. Possible changes to ACPI 2.0 2895specification pending. 2896 2897Fix to AcpiRsCalculatePciRoutingTableLength to return correct 2898length. 2899 2900Fix for compiler warnings for 64-bit compiles. 2901 2902 Linux: 2903 2904/proc output aligned for easier parsing. 2905 2906Release-version compile problem fixed. 2907 2908New kernel configuration options documented in Configure.help. 2909 2910IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 2911context" message. 2912 2913 OSPM: 2914 2915Power resource driver integrated with bus manager. 2916 2917Fixed kernel fault during active cooling for thermal zones. 2918 2919Source Code: 2920 2921The source code tree has been restructured. 2922 2923 2924 2925------------------------------------------ 2926Summary of changes for this label: 03_02_01 2927 2928 Linux OS Services Layer (OSL): 2929 2930Major revision of all Linux-specific code. 2931 2932Modularized all ACPI-specific drivers. 2933 2934Added new thermal zone and power resource drivers. 2935 2936Revamped /proc interface (new functionality is under /proc/acpi). 2937 2938New kernel configuration options. 2939 2940 Linux known issues: 2941 2942New kernel configuration options not documented in Configure.help 2943yet. 2944 2945 2946Module dependencies not currently implemented. If used, they 2947should be loaded in this order: busmgr, power, ec, system, 2948processor, battery, ac_adapter, button, thermal. 2949 2950Modules will not load if CONFIG_MODVERSION is set. 2951 2952IBM 600E - entering S5 may reboot instead of shutting down. 2953 2954IBM 600E - Sleep button may generate "Invalid <NULL> context" 2955message. 2956 2957Some systems may fail with "execution mutex already acquired" 2958message. 2959 2960 ACPI CA Core Subsystem: 2961 2962Added a new OSL Interface, AcpiOsGetThreadId. This was required 2963for the deadlock detection code. Defined to return a non-zero, 296432-bit thread ID for the currently executing thread. May be a 2965non-zero constant integer on single-thread systems. 2966 2967Implemented deadlock detection for internal subsystem mutexes. 2968We may add conditional compilation for this code (debug only) 2969later. 2970 2971ASL/AML Mutex object semantics are now fully supported. This 2972includes multiple acquires/releases by owner and support for the 2973Mutex SyncLevel parameter. 2974 2975A new "Force Release" mechanism automatically frees all ASL 2976Mutexes that have been acquired but not released when a thread 2977exits the interpreter. This forces conformance to the ACPI spec 2978("All mutexes must be released when an invocation exits") and 2979prevents deadlocked ASL threads. This mechanism can be expanded 2980(later) to monitor other resource acquisitions if OEM ASL code 2981continues to misbehave (which it will). 2982 2983Several new ACPI exception codes have been added for the Mutex 2984support. 2985 2986Recursive method calls are now allowed and supported (the ACPI 2987spec does in fact allow recursive method calls.) The number of 2988recursive calls is subject to the restrictions imposed by the 2989SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 2990parameter. 2991 2992Implemented support for the SyncLevel parameter for control 2993methods (ACPI 2.0 feature) 2994 2995Fixed a deadlock problem when multiple threads attempted to use 2996the interpreter. 2997 2998Fixed a problem where the string length of a String package 2999element was not always set in a package returned from 3000AcpiEvaluateObject. 3001 3002Fixed a problem where the length of a String package element was 3003not always included in the length of the overall package returned 3004from AcpiEvaluateObject. 3005 3006Added external interfaces (Acpi*) to the ACPI debug memory 3007manager. This manager keeps a list of all outstanding 3008allocations, and can therefore detect memory leaks and attempts 3009to free memory blocks more than once. Useful for code such as the 3010power manager, etc. May not be appropriate for device drivers. 3011Performance with the debug code enabled is slow. 3012 3013The ACPI Global Lock is now an optional hardware element. 3014 3015 ASL Compiler Version X2015: 3016 3017Integrated changes to allow the compiler to be generated on 3018multiple platforms. 3019 3020Linux makefile added to generate the compiler on Linux 3021 3022 Source Code: 3023 3024All platform-specific headers have been moved to their own 3025subdirectory, Include/Platform. 3026 3027New source file added, Interpreter/ammutex.c 3028 3029New header file, Include/acstruct.h 3030 3031 Documentation: 3032 3033The programmer reference has been updated for the following new 3034interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 3035 3036 ------------------------------------------ 3037Summary of changes for this label: 02_08_01 3038 3039Core ACPI CA Subsystem: Fixed a problem where an error was 3040incorrectly returned if the return resource buffer was larger 3041than the actual data (in the resource interfaces). 3042 3043References to named objects within packages are resolved to the 3044full pathname string before packages are returned directly (via 3045the AcpiEvaluateObject interface) or indirectly via the resource 3046interfaces. 3047 3048Linux OS Services Layer (OSL): 3049 3050Improved /proc battery interface. 3051 3052 3053Added C-state debugging output and other miscellaneous fixes. 3054 3055ASL Compiler Version X2014: 3056 3057All defined method arguments can now be used as local variables, 3058including the ones that are not actually passed in as parameters. 3059The compiler tracks initialization of the arguments and issues an 3060exception if they are used without prior assignment (just like 3061locals). 3062 3063The -o option now specifies a filename prefix that is used for 3064all output files, including the AML output file. Otherwise, the 3065default behavior is as follows: 1) the AML goes to the file 3066specified in the DSDT. 2) all other output files use the input 3067source filename as the base. 3068 3069 ------------------------------------------ 3070Summary of changes for this label: 01_25_01 3071 3072Core ACPI CA Subsystem: Restructured the implementation of object 3073store support within the interpreter. This includes support for 3074the Store operator as well as any ASL operators that include a 3075target operand. 3076 3077Partially implemented support for Implicit Result-to-Target 3078conversion. This is when a result object is converted on the fly 3079to the type of an existing target object. Completion of this 3080support is pending further analysis of the ACPI specification 3081concerning this matter. 3082 3083CPU-specific code has been removed from the subsystem (hardware 3084directory). 3085 3086New Power Management Timer functions added 3087 3088Linux OS Services Layer (OSL): Moved system state transition code 3089to the core, fixed it, and modified Linux OSL accordingly. 3090 3091Fixed C2 and C3 latency calculations. 3092 3093 3094We no longer use the compilation date for the version message on 3095initialization, but retrieve the version from 3096AcpiGetSystemInfo(). 3097 3098Incorporated for fix Sony VAIO machines. 3099 3100Documentation: The Programmer Reference has been updated and 3101reformatted. 3102 3103 3104ASL Compiler: Version X2013: Fixed a problem where the line 3105numbering and error reporting could get out of sync in the 3106presence of multiple include files. 3107 3108 ------------------------------------------ 3109Summary of changes for this label: 01_15_01 3110 3111Core ACPI CA Subsystem: 3112 3113Implemented support for type conversions in the execution of the 3114ASL Concatenate operator (The second operand is converted to 3115match the type of the first operand before concatenation.) 3116 3117Support for implicit source operand conversion is partially 3118implemented. The ASL source operand types Integer, Buffer, and 3119String are freely interchangeable for most ASL operators and are 3120converted by the interpreter on the fly as required. Implicit 3121Target operand conversion (where the result is converted to the 3122target type before storing) is not yet implemented. 3123 3124Support for 32-bit and 64-bit BCD integers is implemented. 3125 3126Problem fixed where a field read on an aligned field could cause 3127a read past the end of the field. 3128 3129New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 3130does not return a value, but the caller expects one. (The ASL 3131compiler flags this as a warning.) 3132 3133ASL Compiler: 3134 3135Version X2011: 31361. Static typechecking of all operands is implemented. This 3137prevents the use of invalid objects (such as using a Package 3138where an Integer is required) at compile time instead of at 3139interpreter run-time. 31402. The ASL source line is printed with ALL errors and warnings. 31413. Bug fix for source EOF without final linefeed. 31424. Debug option is split into a parse trace and a namespace 3143trace. 31445. Namespace output option (-n) includes initial values for 3145integers and strings. 31466. Parse-only option added for quick syntax checking. 31477. Compiler checks for duplicate ACPI name declarations 3148 3149Version X2012: 31501. Relaxed typechecking to allow interchangeability between 3151strings, integers, and buffers. These types are now converted by 3152the interpreter at runtime. 31532. Compiler reports time taken by each internal subsystem in the 3154debug output file. 3155 3156 3157 ------------------------------------------ 3158Summary of changes for this label: 12_14_00 3159 3160ASL Compiler: 3161 3162This is the first official release of the compiler. Since the 3163compiler requires elements of the Core Subsystem, this label 3164synchronizes everything. 3165 3166------------------------------------------ 3167Summary of changes for this label: 12_08_00 3168 3169 3170Fixed a problem where named references within the ASL definition 3171of both OperationRegions and CreateXXXFields did not work 3172properly. The symptom was an AE_AML_OPERAND_TYPE during 3173initialization of the region/field. This is similar (but not 3174related internally) to the problem that was fixed in the last 3175label. 3176 3177Implemented both 32-bit and 64-bit support for the BCD ASL 3178functions ToBCD and FromBCD. 3179 3180Updated all legal headers to include "2000" in the copyright 3181years. 3182 3183 ------------------------------------------ 3184Summary of changes for this label: 12_01_00 3185 3186Fixed a problem where method invocations within the ASL 3187definition of both OperationRegions and CreateXXXFields did not 3188work properly. The symptom was an AE_AML_OPERAND_TYPE during 3189initialization of the region/field: 3190 3191 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 3192[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 3193(0x3005) 3194 3195Fixed a problem where operators with more than one nested 3196subexpression would fail. The symptoms were varied, by mostly 3197AE_AML_OPERAND_TYPE errors. This was actually a rather serious 3198problem that has gone unnoticed until now. 3199 3200 Subtract (Add (1,2), Multiply (3,4)) 3201 3202Fixed a problem where AcpiGetHandle didn't quite get fixed in the 3203previous build (The prefix part of a relative path was handled 3204incorrectly). 3205 3206Fixed a problem where Operation Region initialization failed if 3207the operation region name was a "namepath" instead of a simple 3208"nameseg". Symptom was an AE_NO_OPERAND error. 3209 3210Fixed a problem where an assignment to a local variable via the 3211indirect RefOf mechanism only worked for the first such 3212assignment. Subsequent assignments were ignored. 3213 3214 ------------------------------------------ 3215Summary of changes for this label: 11_15_00 3216 3217ACPI 2.0 table support with backwards support for ACPI 1.0 and 3218the 0.71 extensions. Note: although we can read ACPI 2.0 BIOS 3219tables, the AML interpreter does NOT have support for the new 32202.0 ASL grammar terms at this time. 3221 3222All ACPI hardware access is via the GAS structures in the ACPI 32232.0 FADT. 3224 3225All physical memory addresses across all platforms are now 64 3226bits wide. Logical address width remains dependent on the 3227platform (i.e., "void *"). 3228 3229AcpiOsMapMemory interface changed to a 64-bit physical address. 3230 3231The AML interpreter integer size is now 64 bits, as per the ACPI 32322.0 specification. 3233 3234For backwards compatibility with ACPI 1.0, ACPI tables with a 3235revision number less than 2 use 32-bit integers only. 3236 3237Fixed a problem where the evaluation of OpRegion operands did not 3238always resolve them to numbers properly. 3239 3240------------------------------------------ 3241Summary of changes for this label: 10_20_00 3242 3243Fix for CBN_._STA issue. This fix will allow correct access to 3244CBN_ OpRegions when the _STA returns 0x8. 3245 3246Support to convert ACPI constants (Ones, Zeros, One) to actual 3247values before a package object is returned 3248 3249Fix for method call as predicate to if/while construct causing 3250incorrect if/while behavior 3251 3252Fix for Else block package lengths sometimes calculated wrong (if 3253block > 63 bytes) 3254 3255Fix for Processor object length field, was always zero 3256 3257Table load abort if FACP sanity check fails 3258 3259Fix for problem with Scope(name) if name already exists 3260 3261Warning emitted if a named object referenced cannot be found 3262(resolved) during method execution. 3263 3264 3265 3266 3267 3268------------------------------------------ 3269Summary of changes for this label: 9_29_00 3270 3271New table initialization interfaces: AcpiInitializeSubsystem no 3272longer has any parameters AcpiFindRootPointer - Find the RSDP (if 3273necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 3274>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 3275AcpiLoadTables 3276 3277Note: These interface changes require changes to all existing 3278OSDs 3279 3280The PCI_Config default address space handler is always installed 3281at the root namespace object. 3282 3283------------------------------------------- 3284Summary of changes for this label: 09_15_00 3285 3286The new initialization architecture is implemented. New 3287interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 3288AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 3289(Namespace is automatically loaded when a table is loaded) 3290 3291The ACPI_OPERAND_OBJECT has been optimized to shrink its size 3292from 52 bytes to 32 bytes. There is usually one of these for 3293every namespace object, so the memory savings is significant. 3294 3295Implemented just-in-time evaluation of the CreateField operators. 3296 3297Bug fixes for IA-64 support have been integrated. 3298 3299Additional code review comments have been implemented 3300 3301The so-called "third pass parse" has been replaced by a final 3302walk through the namespace to initialize all operation regions 3303(address spaces) and fields that have not yet been initialized 3304during the execution of the various _INI and REG methods. 3305 3306New file - namespace/nsinit.c 3307 3308------------------------------------------- 3309Summary of changes for this label: 09_01_00 3310 3311Namespace manager data structures have been reworked to change 3312the primary object from a table to a single object. This has 3313resulted in dynamic memory savings of 3X within the namespace 3314and 2X overall in the ACPI CA subsystem. 3315 3316Fixed problem where the call to AcpiEvFindPciRootBuses was 3317inadvertently left commented out. 3318 3319Reduced the warning count when generating the source with the GCC 3320compiler. 3321 3322Revision numbers added to each module header showing the 3323SourceSafe version of the file. Please refer to this version 3324number when giving us feedback or comments on individual modules. 3325 3326The main object types within the subsystem have been renamed to 3327clarify their purpose: 3328 3329ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 3330ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 3331ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 3332 3333NOTE: no changes to the initialization sequence are included in 3334this label. 3335 3336------------------------------------------- 3337Summary of changes for this label: 08_23_00 3338 3339Fixed problem where TerminateControlMethod was being called 3340multiple times per method 3341 3342Fixed debugger problem where single stepping caused a semaphore 3343to be oversignalled 3344 3345Improved performance through additional parse object caching - 3346added ACPI_EXTENDED_OP type 3347 3348------------------------------------------- 3349Summary of changes for this label: 08_10_00 3350 3351Parser/Interpreter integration: Eliminated the creation of 3352complete parse trees for ACPI tables and control methods. 3353Instead, parse subtrees are created and then deleted as soon as 3354they are processed (Either entered into the namespace or 3355executed by the interpreter). This reduces the use of dynamic 3356kernel memory significantly. (about 10X) 3357 3358Exception codes broken into classes and renumbered. Be sure to 3359recompile all code that includes acexcep.h. Hopefully we won't 3360have to renumber the codes again now that they are split into 3361classes (environment, programmer, AML code, ACPI table, and 3362internal). 3363 3364Fixed some additional alignment issues in the Resource Manager 3365subcomponent 3366 3367Implemented semaphore tracking in the AcpiExec utility, and fixed 3368several places where mutexes/semaphores were being unlocked 3369without a corresponding lock operation. There are no known 3370semaphore or mutex "leaks" at this time. 3371 3372Fixed the case where an ASL Return operator is used to return an 3373unnamed package. 3374 3375------------------------------------------- 3376Summary of changes for this label: 07_28_00 3377 3378Fixed a problem with the way addresses were calculated in 3379AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 3380manifested itself when a Field was created with WordAccess or 3381DwordAccess, but the field unit defined within the Field was 3382less than a Word or Dword. 3383 3384Fixed a problem in AmlDumpOperands() module's loop to pull 3385operands off of the operand stack to display information. The 3386problem manifested itself as a TLB error on 64-bit systems when 3387accessing an operand stack with two or more operands. 3388 3389Fixed a problem with the PCI configuration space handlers where 3390context was getting confused between accesses. This required a 3391change to the generic address space handler and address space 3392setup definitions. Handlers now get both a global handler 3393context (this is the one passed in by the user when executing 3394AcpiInstallAddressSpaceHandler() and a specific region context 3395that is unique to each region (For example, the _ADR, _SEG and 3396_BBN values associated with a specific region). The generic 3397function definitions have changed to the following: 3398 3399typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 3400UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 3401*HandlerContext, // This used to be void *Context void 3402*RegionContext); // This is an additional parameter 3403 3404typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 3405RegionHandle, UINT32 Function, void *HandlerContext, void 3406**RegionContext); // This used to be **ReturnContext 3407 3408------------------------------------------- 3409Summary of changes for this label: 07_21_00 3410 3411Major file consolidation and rename. All files within the 3412interpreter have been renamed as well as most header files. 3413This was done to prevent collisions with existing files in the 3414host OSs -- filenames such as "config.h" and "global.h" seem to 3415be quite common. The VC project files have been updated. All 3416makefiles will require modification. 3417 3418The parser/interpreter integration continues in Phase 5 with the 3419implementation of a complete 2-pass parse (the AML is parsed 3420twice) for each table; This avoids the construction of a huge 3421parse tree and therefore reduces the amount of dynamic memory 3422required by the subsystem. Greater use of the parse object cache 3423means that performance is unaffected. 3424 3425Many comments from the two code reviews have been rolled in. 3426 3427The 64-bit alignment support is complete. 3428 3429------------------------------------------- 3430Summary of changes for this label: 06_30_00 3431 3432With a nod and a tip of the hat to the technology of yesteryear, 3433we've added support in the source code for 80 column output 3434devices. The code is now mostly constrained to 80 columns or 3435less to support environments and editors that 1) cannot display 3436or print more than 80 characters on a single line, and 2) cannot 3437disable line wrapping. 3438 3439A major restructuring of the namespace data structure has been 3440completed. The result is 1) cleaner and more 3441understandable/maintainable code, and 2) a significant reduction 3442in the dynamic memory requirement for each named ACPI object 3443(almost half). 3444 3445------------------------------------------- 3446Summary of changes for this label: 06_23_00 3447 3448Linux support has been added. In order to obtain approval to get 3449the ACPI CA subsystem into the Linux kernel, we've had to make 3450quite a few changes to the base subsystem that will affect all 3451users (all the changes are generic and OS- independent). The 3452effects of these global changes have been somewhat far reaching. 3453Files have been merged and/or renamed and interfaces have been 3454renamed. The major changes are described below. 3455 3456Osd* interfaces renamed to AcpiOs* to eliminate namespace 3457pollution/confusion within our target kernels. All OSD 3458interfaces must be modified to match the new naming convention. 3459 3460Files merged across the subsystem. A number of the smaller 3461source and header files have been merged to reduce the file 3462count and increase the density of the existing files. There are 3463too many to list here. In general, makefiles that call out 3464individual files will require rebuilding. 3465 3466Interpreter files renamed. All interpreter files now have the 3467prefix am* instead of ie* and is*. 3468 3469Header files renamed: The acapi.h file is now acpixf.h. The 3470acpiosd.h file is now acpiosxf.h. We are removing references to 3471the acronym "API" since it is somewhat windowsy. The new name is 3472"external interface" or xface or xf in the filenames.j 3473 3474 3475All manifest constants have been forced to upper case (some were 3476mixed case.) Also, the string "ACPI_" has been prepended to 3477many (not all) of the constants, typedefs, and structs. 3478 3479The globals "DebugLevel" and "DebugLayer" have been renamed 3480"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 3481 3482All other globals within the subsystem are now prefixed with 3483"AcpiGbl_" Internal procedures within the subsystem are now 3484prefixed with "Acpi" (with only a few exceptions). The original 3485two-letter abbreviation for the subcomponent remains after 3486"Acpi" - for example, CmCallocate became AcpiCmCallocate. 3487 3488Added a source code translation/conversion utility. Used to 3489generate the Linux source code, it can be modified to generate 3490other types of source as well. Can also be used to cleanup 3491existing source by removing extraneous spaces and blank lines. 3492Found in tools/acpisrc/* 3493 3494OsdUnMapMemory was renamed to OsdUnmapMemory and then 3495AcpiOsUnmapMemory. (UnMap became Unmap). 3496 3497A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 3498When set to one, this indicates that the caller wants to use the 3499semaphore as a mutex, not a counting semaphore. ACPI CA uses 3500both types. However, implementers of this call may want to use 3501different OS primitives depending on the type of semaphore 3502requested. For example, some operating systems provide separate 3503"mutex" and "semaphore" interfaces - where the mutex interface 3504is much faster because it doesn't have all the overhead of a 3505full semaphore implementation. 3506 3507Fixed a deadlock problem where a method that accesses the PCI 3508address space can block forever if it is the first access to the 3509space. 3510 3511------------------------------------------- 3512Summary of changes for this label: 06_02_00 3513 3514Support for environments that cannot handle unaligned data 3515accesses (e.g. firmware and OS environments devoid of alignment 3516handler technology namely SAL/EFI and the IA-64 Linux kernel) 3517has been added (via configurable macros) in these three areas: - 3518Transfer of data from the raw AML byte stream is done via byte 3519moves instead of word/dword/qword moves. - External objects 3520are aligned within the user buffer, including package elements 3521(sub-objects). - Conversion of name strings to UINT32 Acpi Names 3522is now done byte-wise. 3523 3524The Store operator was modified to mimic Microsoft's 3525implementation when storing to a Buffer Field. 3526 3527Added a check of the BM_STS bit before entering C3. 3528 3529The methods subdirectory has been obsoleted and removed. A new 3530file, cmeval.c subsumes the functionality. 3531 3532A 16-bit (DOS) version of AcpiExec has been developed. The 3533makefile is under the acpiexec directory. 3534