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