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