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