1---------------------------------------- 231 May 2018. Summary of changes for version 20180531: 3 4 51) ACPICA kernel-resident Subsystem: 6 7Implemented additional support to help ensure that a DSDT or SSDT is 8fully loaded even if errors are incurred during the load. The majority of 9the problems that are seen is the failure of individual AML operators 10that occur during execution of any module-level code (MLC) existing in 11the table. This support adds a mechanism to abort the current ASL 12statement (AML opcode), emit an error message, and to simply move on to 13the next opcode -- instead of aborting the entire table load. This is 14different than the execution of a control method where the entire method 15is aborted upon any error. The goal is to perform a very "best effort" to 16load the ACPI tables. The most common MLC errors that have been seen in 17the field are direct references to unresolved ASL/AML symbols (referenced 18directly without the use of the CondRefOf operator to validate the 19symbol). This new ACPICA behavior is now compatible with other ACPI 20implementations. 21 22Interpreter: The Unload AML operator is no longer supported for the 23reasons below. An AE_NOT_IMPLEMENTED exception is returned. 241) A correct implementation on at least some hosts may not be possible. 252) Other ACPI implementations do not correctly/fully support it. 263) It requires host device driver support which is not known to exist. 27 (To properly support namespace unload out from underneath.) 284) This AML operator has never been seen in the field. 29 30Parser: Added a debug option to dump AML parse sub-trees as they are 31being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 32ACPI_DB_PARSE_TREES. 33 34Debugger: Reduced the verbosity for errors incurred during table load and 35module-level code execution. 36 37Completed an investigation into adding a namespace node "owner list" 38instead of the current "owner ID" associated with namespace nodes. This 39list would link together all nodes that are owned by an individual 40control method. The purpose would be to enhance control method execution 41by speeding up cleanup during method exit (all namespace nodes created by 42a method are deleted upon method termination.) Currently, the entire 43namespace must be searched for matching owner IDs if (and only if) the 44method creates named objects outside of the local scope. However, by far 45the most common case is that methods create objects locally, not outside 46the method scope. There is already an ACPICA optimization in place that 47only searches the entire namespace in the rare case of a method creating 48objects elsewhere in the namespace. Therefore, it is felt that the 49overhead of adding an additional pointer to each namespace node to 50implement the owner list makes this feature unnecessary. 51 52 532) iASL Compiler/Disassembler and Tools: 54 55iASL, Disassembler, and Template generator: Implemented support for 56Revision D of the IORT table. Adds a new subtable that is used to specify 57SMMUv3 PMCGs. rmurphy-arm. 58 59Disassembler: Restored correct table header validation for the "special" 60ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 61table header and must be special-cased. This was a regression that has 62been present for apparently a long time. 63 64AcpiExec: Reduced verbosity of the local exception handler implemented 65within acpiexec. This handler is invoked by ACPICA upon any exceptions 66generated during control method execution. A new option was added: -vh 67restores the original verbosity level if desired. 68 69AcpiExec: Changed the default base from decimal to hex for the -x option 70(set debug level). This simplifies the use of this option and matches the 71behavior of the corresponding iASL -x option. 72 73AcpiExec: Restored a force-exit on multiple control-c (sigint) 74interrupts. This allows program termination even if other issues cause 75the control-c to fail. 76 77ASL test suite (ASLTS): Added tests for the recently implemented package 78element resolution mechanism that allows forward references to named 79objects from individual package elements (this mechanism provides 80compatibility with other ACPI implementations.) 81 82 83---------------------------------------- 848 May 2018. Summary of changes for version 20180508: 85 86 871) ACPICA kernel-resident subsystem: 88 89Completed the new (recently deployed) package resolution mechanism for 90the Load and LoadTable ASL/AML operators. This fixes a regression that 91was introduced in version 20180209 that could result in an 92AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 93(SSDT) that contains package objects. 94 95 962) iASL Compiler/Disassembler and Tools: 97 98AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 991 MB. This change allows for table offsets within the acpidump file to be 100up to 8 characters. These changes are backwards compatible with existing 101acpidump files. 102 103 104---------------------------------------- 10527 April 2018. Summary of changes for version 20180427: 106 107 1081) ACPICA kernel-resident subsystem: 109 110Debugger: Added support for Package objects in the "Test Objects" 111command. This command walks the entire namespace and evaluates all named 112data objects (Integers, Strings, Buffers, and now Packages). 113 114Improved error messages for the namespace root node. Originally, the root 115was referred to by the confusing string "\___". This has been replaced by 116"Namespace Root" for clarification. 117 118Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 119Ian King <colin.king@canonical.com>. 120 121 1222) iASL Compiler/Disassembler and Tools: 123 124iASL: Implemented support to detect and flag illegal forward references. 125For compatibility with other ACPI implementations, these references are 126now illegal at the root level of the DSDT or SSDTs. Forward references 127have always been illegal within control methods. This change should not 128affect existing ASL/AML code because of the fact that these references 129have always been illegal in the other ACPI implementation. 130 131iASL: Added error messages for the case where a table OEM ID and OEM 132TABLE ID strings are longer than the ACPI-defined length. Previously, 133these strings were simply silently truncated. 134 135iASL: Enhanced the -tc option (which creates an AML hex file in C, 136suitable for import into a firmware project): 137 1) Create a unique name for the table, to simplify use of multiple 138SSDTs. 139 2) Add a protection #ifdef in the file, similar to a .h header file. 140With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 141evan.lloyd@arm.com 142 143AcpiExec: Added a new option, -df, to disable the local fault handler. 144This is useful during debugging, where it may be desired to drop into a 145debugger on a fault. 146 147---------------------------------------- 14813 March 2018. Summary of changes for version 20180313: 149 150 1511) ACPICA kernel-resident subsystem: 152 153Implemented various improvements to the GPE support: 154 1551) Dispatch all active GPEs at initialization time so that no GPEs are 156lost. 1572) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 158before devices are enumerated. 1593) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 160IRQs are not lost. 1614) Add parallel GPE handling to eliminate the possibility of dispatching 162the same GPE twice. 1635) Dispatch any pending GPEs after enabling for the first time. 164 165AcpiGetObjectInfo - removed support for the _STA method. This was causing 166problems on some platforms. 167 168Added a new _OSI string, "Windows 2017.2". 169 170Cleaned up and simplified the module-level code support. These changes 171are in preparation for the eventual removal of the legacy MLC support 172(deferred execution), replaced by the new MLC architecture which executes 173the MLC as a table is loaded (DSDT/SSDTs). 174 175Changed a compile-time option to a runtime option. Changes the option to 176ignore ACPI table load-time package resolution errors into a runtime 177option. Used only for platforms that generate many AE_NOT_FOUND errors 178during boot. AcpiGbl_IgnorePackageResolutionErrors. 179 180Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 181ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 182compilation errors from unused variables (seen with some compilers). 183 184 1852) iASL Compiler/Disassembler and Tools: 186 187ASLTS: parallelized execution in order to achieve an (approximately) 2X 188performance increase. 189 190ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 191error reporting. 192 193---------------------------------------- 19409 February 2018. Summary of changes for version 20180209: 195 196 1971) ACPICA kernel-resident subsystem: 198 199Completed the final integration of the recent changes to Package Object 200handling and the module-level AML code support. This allows forward 201references from individual package elements when the package object is 202declared from within module-level code blocks. Provides compatibility 203with other ACPI implementations. 204 205The new architecture for the AML module-level code has been completed and 206is now the default for the ACPICA code. This new architecture executes 207the module-level code in-line as the ACPI table is loaded/parsed instead 208of the previous architecture which deferred this code until after the 209table was fully loaded. This solves some ASL code ordering issues and 210provides compatibility with other ACPI implementations. At this time, 211there is an option to fallback to the earlier architecture, but this 212support is deprecated and is planned to be completely removed later this 213year. 214 215Added a compile-time option to ignore AE_NOT_FOUND exceptions during 216resolution of named reference elements within Package objects. Although 217this is potentially a serious problem, it can generate a lot of 218noise/errors on platforms whose firmware carries around a bunch of unused 219Package objects. To disable these errors, define 220ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 221errors are always reported for ACPICA applications such as AcpiExec. 222 223Fixed a regression related to the explicit type-conversion AML operators 224(ToXXXX). The regression was introduced early in 2017 but was not seen 225until recently because these operators are not fully supported by other 226ACPI implementations and are thus rarely used by firmware developers. The 227operators are defined by the ACPI specification to not implement the 228"implicit result object conversion". The regression incorrectly 229introduced this object conversion for the following explicit conversion 230operators: 231 ToInteger 232 ToString 233 ToBuffer 234 ToDecimalString 235 ToHexString 236 ToBCD 237 FromBCD 238 239 2402) iASL Compiler/Disassembler and Tools: 241 242iASL: Fixed a problem with the compiler constant folding feature as 243related to the ToXXXX explicit conversion operators. These operators do 244not support the "implicit result object conversion" by definition. Thus, 245ASL expressions that use these operators cannot be folded to a simple 246Store operator because Store implements the implicit conversion. This 247change uses the CopyObject operator for the ToXXXX operator folding 248instead. CopyObject is defined to not implement implicit result 249conversions and is thus appropriate for folding the ToXXXX operators. 250 251iASL: Changed the severity of an error condition to a simple warning for 252the case where a symbol is declared both locally and as an external 253symbol. This accommodates existing ASL code. 254 255AcpiExec: The -ep option to enable the new architecture for module-level 256code has been removed. It is replaced by the -dp option which instead has 257the opposite effect: it disables the new architecture (the default) and 258enables the legacy architecture. When the legacy code is removed in the 259future, the -dp option will be removed also. 260 261---------------------------------------- 26205 January 2018. Summary of changes for version 20180105: 263 264 2651) ACPICA kernel-resident subsystem: 266 267Updated all copyrights to 2018. This affects all source code modules. 268 269Fixed a possible build error caused by an unresolved reference to the 270AcpiUtSafeStrncpy function. 271 272Removed NULL pointer arithmetic in the various pointer manipulation 273macros. All "(void *) NULL" constructs are converted to "(void *) 0". 274This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 275 276Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 277Mittal. 278 279 2802) iASL Compiler/Disassembler and Tools: 281 282ASLTS: Updated all copyrights to 2018. 283 284Tools: Updated all signon copyrights to 2018. 285 286AcpiXtract: Fixed a regression related to ACPI table signatures where the 287signature was truncated to 3 characters (instead of 4). 288 289AcpiExec: Restore the original terminal mode after the use of the -v and 290-vd options. 291 292ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 293 294---------------------------------------- 29514 December 2017. Summary of changes for version 20171214: 296 297 2981) ACPICA kernel-resident subsystem: 299 300Fixed a regression in the external (public) AcpiEvaluateObjectTyped 301interface where the optional "pathname" argument had inadvertently become 302a required argument returning an error if omitted (NULL pointer 303argument). 304 305Fixed two possible memory leaks related to the recently developed "late 306resolution" of reference objects within ASL Package Object definitions. 307 308Added two recently defined _OSI strings: "Windows 2016" and "Windows 3092017". Mario Limonciello. 310 311Implemented and deployed a safer version of the C library function 312strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 313creation of unterminated strings as a possible result of a standard 314strncpy. 315 316Cleaned up and restructured the global variable file (acglobal.h). There 317are many changes, but no functional changes. 318 319 3202) iASL Compiler/Disassembler and Tools: 321 322iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 323optional OemData field at the end of the table was incorrectly required 324for proper compilation. It is now correctly an optional field. 325 326ASLTS: The entire suite was converted from standard ASL to the ASL+ 327language, using the ASL-to-ASL+ converter which is integrated into the 328iASL compiler. A binary compare of all output files has verified the 329correctness of the conversion. 330 331iASL: Fixed the source code build for platforms where "char" is unsigned. 332This affected the iASL lexer only. Jung-uk Kim. 333 334---------------------------------------- 33510 November 2017. Summary of changes for version 20171110: 336 337 3381) ACPICA kernel-resident subsystem: 339 340This release implements full support for ACPI 6.2A: 341 NFIT - Added a new subtable, "Platform Capabilities Structure" 342No other changes to ACPICA were required, since ACPI 6.2A is primarily an 343errata release of the specification. 344 345Other ACPI table changes: 346 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 347 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 348Linton 349 350Utilities: Modified the string/integer conversion functions to use 351internal 64-bit divide support instead of a native divide. On 32-bit 352platforms, a 64-bit divide typically requires a library function which 353may not be present in the build (kernel or otherwise). 354 355Implemented a targeted error message for timeouts returned from the 356Embedded Controller device driver. This is seen frequently enough to 357special-case an AE_TIME returned from an EC operation region access: 358 "Timeout from EC hardware or EC device driver" 359 360Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 361runtime error messages have the identical prefix. 362 363 3642) iASL Compiler/Disassembler and Tools: 365 366AcpiXtract: Fixed a problem with table header detection within the 367acpidump file. Processing a table could be ended early if a 0x40 (@) 368appears in the original binary table, resulting in the @ symbol appearing 369in the decoded ASCII field at the end of the acpidump text line. The 370symbol caused acpixtract to incorrectly think it had reached the end of 371the current table and the beginning of a new table. 372 373AcpiXtract: Added an option (-f) to ignore some errors during table 374extraction. This initial implementation ignores non-ASCII and non- 375printable characters found in the acpidump text file. 376 377TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 378for ASLTS. This feature is used to track memory allocations from 379different memory caches within the ACPICA code. At the end of an ASLTS 380run, these memory statistics are recorded and stored in a log file. 381 382Debugger (user-space version): Implemented a simple "Background" command. 383Creates a new thread to execute a control method in the background, while 384control returns to the debugger prompt to allow additional commands. 385 Syntax: Background <Namepath> [Arguments] 386 387---------------------------------------- 38829 September 2017. Summary of changes for version 20170929: 389 390 3911) ACPICA kernel-resident subsystem: 392 393Redesigned and implemented an improved ASL While() loop timeout 394mechanism. This mechanism is used to prevent infinite loops in the kernel 395AML interpreter caused by either non-responsive hardware or incorrect AML 396code. The new implementation uses AcpiOsGetTimer instead of a simple 397maximum loop count, and is thus more accurate and constant across 398different machines. The default timeout is currently 30 seconds, but this 399may be adjusted later. 400 401Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 402better reflect the new implementation of the loop timeout mechanism. 403 404Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 405and to fix an off-by-one error. Jung-uk Kim. 406 407Fixed an EFI build problem by updating the makefiles to for a new file 408that was added, utstrsuppt.c 409 410 4112) iASL Compiler/Disassembler and Tools: 412 413Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 414includes support in the table disassembler, compiler, and template 415generator. 416 417iASL: Added an exception for an illegal type of recursive method 418invocation. If a method creates named objects, the first recursive call 419will fail at runtime. This change adds an error detection at compile time 420to catch the problem up front. Note: Marking such a method as 421"serialized" will not help with this problem, because the same thread can 422acquire the method mutex more than once. Example compiler and runtime 423output: 424 425 Method (MTH1) 426 { 427 Name (INT1, 1) 428 MTH1 () 429 } 430 431 dsdt.asl 22: MTH1 () 432 Error 6152 - ^ Illegal recursive call to method 433 that creates named objects (MTH1) 434 435Previous runtime exception: 436 ACPI Error: [INT1] Namespace lookup failure, 437 AE_ALREADY_EXISTS (20170831/dswload2-465) 438 439iASL: Updated support for External() opcodes to improve namespace 440management and error detection. These changes are related to issues seen 441with multiple-segment namespace pathnames within External declarations, 442such as below: 443 444 External(\_SB.PCI0.GFX0, DeviceObj) 445 External(\_SB.PCI0.GFX0.ALSI) 446 447iASL: Implemented support for multi-line error/warning messages. This 448enables more detailed and helpful error messages as below, from the 449initial deployment for the duplicate names error: 450 451 DSDT.iiii 1692: Device(PEG2) { 452 Error 6074 - ^ Name already exists in scope 453(PEG2) 454 455 Original name creation/declaration below: 456 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 457 458AcpiXtract: Added additional flexibility to support differing input hex 459dump formats. Specifically, hex dumps that contain partial disassembly 460and/or comments within the ACPI table data definition. There exist some 461dump utilities seen in the field that create this type of hex dump (such 462as Simics). For example: 463 464 DSDT @ 0xdfffd0c0 (10999 bytes) 465 Signature DSDT 466 Length 10999 467 Revision 1 468 Checksum 0xf3 (Ok) 469 OEM_ID BXPC 470 OEM_table_id BXDSDT 471 OEM_revision 1 472 Creator_id 1280593481 473 Creator_revision 537399345 474 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 475 ... 476 2af0: 5f 4c 30 46 00 a4 01 477 478Test suite: Miscellaneous changes/fixes: 479 More cleanup and simplification of makefiles 480 Continue compilation of test cases after a compile failure 481 Do not perform binary compare unless both files actually exist 482 483iASL: Performed some code/module restructuring. Moved all memory 484allocation functions to new modules. Two new files, aslallocate.c and 485aslcache.c 486 487---------------------------------------- 48831 August 2017. Summary of changes for version 20170831: 489 490 4911) ACPICA kernel-resident subsystem: 492 493Implemented internal support for full 64-bit addresses that appear in all 494Generic Address Structure (GAS) structures. Previously, only the lower 32 495bits were used. Affects the use of GAS structures in the FADT and other 496tables, as well as the GAS structures passed to the AcpiRead and 497AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 498 499Added header support for the PDTT ACPI table (Processor Debug Trigger 500Table). Full support in the iASL Data Table Compiler and disassembler is 501forthcoming. 502 503 5042) iASL Compiler/Disassembler and Tools: 505 506iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 507Properties Topology Table) where a flag bit was specified in the wrong 508bit position ("Line Size Valid", bit 6). 509 510iASL: Implemented support for Octal integer constants as defined by the 511ASL language grammar, per the ACPI specification. Any integer constant 512that starts with a zero is an octal constant. For example, 513 Store (037777, Local0) /* Octal constant */ 514 Store (0x3FFF, Local0) /* Hex equivalent */ 515 Store (16383, Local0) /* Decimal equivalent */ 516 517iASL: Improved overflow detection for 64-bit string conversions during 518compilation of integer constants. "Overflow" in this case means a string 519that represents an integer that is too large to fit into a 64-bit value. 520Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 521the low-order 32 bits with a warning, as previously implemented. Several 522new exceptions are defined that indicate a 64-bit overflow, as well as 523the base (radix) that was used during the attempted conversion. Examples: 524 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 525 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 526 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 527 528iASL: Added a warning for the case where a ResourceTemplate is declared 529with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 530this case, the resulting template is created with a single END_TAG 531descriptor, which is essentially useless. 532 533iASL: Expanded the -vw option (ignore specific warnings/remarks) to 534include compilation error codes as well. 535 536---------------------------------------- 53728 July 2017. Summary of changes for version 20170728: 538 539 5401) ACPICA kernel-resident subsystem: 541 542Fixed a regression seen with small resource descriptors that could cause 543an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 544 545AML interpreter: Implemented a new feature that allows forward references 546from individual named references within package objects that are 547contained within blocks of "module-level code". This provides 548compatibility with other ACPI implementations and supports existing 549firmware that depends on this feature. Example: 550 551 Name (ABCD, 1) 552 If (ABCD) /* An If() at module-level */ 553 { 554 Name (PKG1, Package() 555 { 556 INT1 /* Forward reference to object INT1 557*/ 558 }) 559 Name (INT1, 0x1234) 560 } 561 562AML Interpreter: Fixed a problem with the Alias() operator where aliases 563to some ASL objects were not handled properly. Objects affected are: 564Mutex, Event, and OperationRegion. 565 566AML Debugger: Enhanced to properly handle AML Alias objects. These 567objects have one level of indirection which was not fully supported by 568the debugger. 569 570Table Manager: Added support to detect and ignore duplicate SSDTs within 571the XSDT/RSDT. This error in the XSDT has been seen in the field. 572 573EFI and EDK2 support: 574 Enabled /WX flag for MSVC builds 575 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 576 Added local support for 64-bit multiply and shift operations 577 Added support to compile acpidump.efi on Windows 578 Added OSL function stubs for interfaces not used under EFI 579 580Added additional support for the _DMA predefined name. _DMA returns a 581buffer containing a resource template. This change add support within the 582resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 583resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 584 585 5862) iASL Compiler/Disassembler and Tools: 587 588iASL: Fixed a problem where the internal input line buffer(s) could 589overflow if there are very long lines in the input ASL source code file. 590Implemented buffer management that automatically increases the size of 591the buffers as necessary. 592 593iASL: Added an option (-vx) to "expect" particular remarks, warnings and 594errors. If the specified exception is not raised during compilation, the 595compiler emits an error. This is intended to support the ASL test suite, 596but may be useful in other contexts. 597 598iASL: Implemented a new predefined macro, __METHOD__, which returns a 599string containing the name of the current control method that is being 600compiled. 601 602iASL: Implemented debugger and table compiler support for the SDEI ACPI 603table (Software Delegated Exception Interface). James Morse 604<james.morse@arm.com> 605 606Unix/Linux makefiles: Added an option to disable compile optimizations. 607The disable occurs when the NOOPT flag is set to TRUE. 608theracermaster@gmail.com 609 610Acpidump: Added support for multiple DSDT and FACS tables. This can occur 611when there are different tables for 32-bit versus 64-bit. 612 613Enhanced error reporting for the ASL test suite (ASLTS) by removing 614unnecessary/verbose text, and emit the actual line number where an error 615has occurred. These changes are intended to improve the usefulness of the 616test suite. 617 618---------------------------------------- 61929 June 2017. Summary of changes for version 20170629: 620 621 6221) ACPICA kernel-resident subsystem: 623 624Tables: Implemented a deferred ACPI table verification. This is useful 625for operating systems where the tables cannot be verified in the early 626initialization stage due to early memory mapping limitations on some 627architectures. Lv Zheng. 628 629Tables: Removed the signature validation for dynamically loaded tables. 630Provides compatibility with other ACPI implementations. Previously, only 631SSDT tables were allowed, as per the ACPI specification. Now, any table 632signature can be used via the Load() operator. Lv Zheng. 633 634Tables: Fixed several mutex issues that could cause errors during table 635acquisition. Lv Zheng. 636 637Tables: Fixed a problem where an ACPI warning could be generated if a 638null pointer was passed to the AcpiPutTable interface. Lv Zheng. 639 640Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 641AcpiPutTable interfaces. This applies to the "late stage" table loading 642when the use of AcpiPutTable is no longer required (since the system 643memory manager is fully running and available). Lv Zheng. 644 645Fixed/Reverted a regression during processing of resource descriptors 646that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 647exception in this case. 648 649Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 650I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 651 652Interpreter: Fixed a possible fault if an Alias operator with an invalid 653or duplicate target is encountered during Alias creation in 654AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 655 656Added an option to use designated initializers for function pointers. 657Kees Cook <keescook@google.com> 658 659 6602) iASL Compiler/Disassembler and Tools: 661 662iASL: Allow compilation of External declarations with target pathnames 663that refer to existing named objects within the table. Erik Schmauss. 664 665iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 666FieldUnit name also is declared via External in the same table. Erik 667Schmauss. 668 669iASL: Allow existing scope names within pathnames used in External 670statements. For example: 671 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 672 Device (ABCD) 673 674iASL: IORT ACPI table: Implemented changes required to decode the new 675Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 676compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 677 678Disassembler: Don't abort disassembly on errors from External() 679statements. Erik Schmauss. 680 681Disassembler: fixed a possible fault when one of the Create*Field 682operators references a Resource Template. ACPICA Bugzilla 1396. 683 684iASL: In the source code, resolved some naming inconsistences across the 685parsing support. Fixes confusion between "Parse Op" and "Parse Node". 686Adds a new file, aslparseop.c 687 688---------------------------------------- 68931 May 2017. Summary of changes for version 20170531: 690 691 6920) ACPI 6.2 support: 693 694The ACPI specification version 6.2 has been released and is available at 695http://uefi.org/specifications 696 697This version of ACPICA fully supports the ACPI 6.2 specification. Changes 698are summarized below. 699 700New ACPI tables (Table Compiler/Disassembler/Templates): 701 HMAT (Heterogeneous Memory Attributes Table) 702 WSMT (Windows SMM Security Mitigation Table) 703 PPTT (Processor Properties Topology Table) 704 705New subtables for existing ACPI tables: 706 HEST (New subtable, Arch-deferred machine check) 707 SRAT (New subtable, Arch-specific affinity structure) 708 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 709 710Simple updates for existing ACPI tables: 711 BGRT (two new flag bits) 712 HEST (New bit defined for several subtables, GHES_ASSIST) 713 714New Resource Descriptors and Resource macros (Compiler/Disassembler): 715 PinConfig() 716 PinFunction() 717 PinGroup() 718 PinGroupConfig() 719 PinGroupFunction() 720 New type for hardware error notification (section 18.3.2.9) 721 722New predefined names/methods (Compiler/Interpreter): 723 _HMA (Heterogeneous Memory Attributes) 724 _LSI (Label Storage Information) 725 _LSR (Label Storage Read) 726 _LSW (Label Storage Write) 727 728ASL grammar/macro changes (Compiler): 729 For() ASL macro, implemented with the AML while operator 730 Extensions to Concatenate operator 731 Support for multiple definition blocks in same ASL file 732 Clarification for Buffer operator 733 Allow executable AML code underneath all scopes (Devices, etc.) 734 Clarification/change for the _OSI return value 735 ASL grammar update for reference operators 736 Allow a zero-length string for AML filename in DefinitionBlock 737 738Miscellaneous: 739 New device object notification value 740 Remove a notify value (0x0C) for graceful shutdown 741 New UUIDs for processor/cache properties and 742 physical package property 743 New _HID, ACPI0014 (Wireless Power Calibration Device) 744 745 7461) ACPICA kernel-resident subsystem: 747 748Added support to disable ACPI events on hardware-reduced platforms. 749Eliminates error messages of the form "Could not enable fixed event". Lv 750Zheng 751 752Fixed a problem using Device/Thermal objects with the ObjectType and 753DerefOf ASL operators. This support had not been fully/properly 754implemented. 755 756Fixed a problem where if a Buffer object containing a resource template 757was longer than the actual resource template, an error was generated -- 758even though the AML is legal. This case has been seen in the field. 759 760Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 761The values for DUAL_PIC and MULTIPLE_APIC were reversed. 762 763Added header file changes for the TPM2 ACPI table. Update to new version 764of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 765 766Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 767These interfaces are intended to be used only in conjunction with the 768predefined _DLM method (Device Lock Method). "This object appears in a 769device scope when AML access to the device must be synchronized with the 770OS environment". 771 772Example Code and Data Size: These are the sizes for the OS-independent 773acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 774debug version of the code includes the debug output trace mechanism and 775has a much larger code and data size. 776 777 Current Release: 778 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 779 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 780 Previous Release: 781 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 782 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 783 784 7852) iASL Compiler/Disassembler and Tools: 786 787iASL: Fixed a problem where an External() declaration could not refer to 788a Field Unit. Erik Schmauss. 789 790Disassembler: Improved support for the Switch/Case operators. This 791feature will disassemble AML code back to the original Switch operators 792when possible, instead of an If..Else sequence. David Box 793 794iASL and disassembler: Improved the handling of multiple extraneous 795parentheses for both ASL input and disassembled ASL output. 796 797Improved the behavior of the iASL compiler and disassembler to detect 798improper use of external declarations 799 800Disassembler: Now aborts immediately upon detection of an unknown AML 801opcode. The AML parser has no real way to recover from this, and can 802result in the creation of an ill-formed parse tree that causes errors 803later during the disassembly. 804 805All tools: Fixed a problem where the Unix application OSL did not handle 806control-c correctly. For example, a control-c could incorrectly wake the 807debugger. 808 809AcpiExec: Improved the Control-C handling and added a handler for 810segmentation faults (SIGSEGV). Supports both Windows and Unix-like 811environments. 812 813Reduced the verbosity of the generic unix makefiles. Previously, each 814compilation displayed the full set of compiler options. This has been 815eliminated as the options are easily inspected within the makefiles. Each 816compilation now results in a single line of output. 817 818---------------------------------------- 81903 March 2017. Summary of changes for version 20170303: 820 821 8220) ACPICA licensing: 823 824The licensing information at the start of each source code module has 825been updated. In addition to the Intel license, the dual GPLv2/BSD 826license has been added for completeness. Now, a single version of the 827source code should be suitable for all ACPICA customers. This is the 828major change for this release since it affects all source code modules. 829 830 8311) ACPICA kernel-resident subsystem: 832 833Fixed two issues with the common asltypes.h header that could cause 834problems in some environments: (Kim Jung-uk) 835 Removed typedef for YY_BUFFER_STATE ? 836 Fixes an error with earlier versions of Flex. 837 Removed use of FILE typedef (which is only defined in stdio.h) 838 839 8402) iASL Compiler/Disassembler and Tools: 841 842Disassembler: fixed a regression introduced in 20170224. A fix for a 843memory leak related to resource descriptor tags (names) could fault when 844the disassembler was generated with 64-bit compilers. 845 846The ASLTS test suite has been updated to implement a new testing 847architecture. During generation of the suite from ASL source, both the 848ASL and ASL+ compilers are now validated, as well as the disassembler 849itself (Erik Schmauss). The architecture executes as follows: 850 851 For every ASL source module: 852 Compile (legacy ASL compilation) 853 Disassemble the resulting AML to ASL+ source code 854 Compile the new ASL+ module 855 Perform a binary compare on the legacy AML and the new ASL+ AML 856 The ASLTS suite then executes normally using the AML binaries. 857 858---------------------------------------- 85924 February 2017. Summary of changes for version 20170224: 860 861 8621) ACPICA kernel-resident subsystem: 863 864Interpreter: Fixed two issues with the control method return value auto- 865repair feature, where an attempt to double-delete an internal object 866could result in an ACPICA warning (for _CID repair and others). No fault 867occurs, however, because the attempted deletion (actually a release to an 868internal cache) is detected and ignored via object poisoning. 869 870Debugger: Fixed an AML interpreter mutex issue during the single stepping 871of control methods. If certain debugger commands are executed during 872stepping, a mutex aquire/release error could occur. Lv Zheng. 873 874Fixed some issues generating ACPICA with the Intel C compiler by 875restoring the original behavior and compiler-specific include file in 876acenv.h. Lv Zheng. 877 878Example Code and Data Size: These are the sizes for the OS-independent 879acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 880debug version of the code includes the debug output trace mechanism and 881has a much larger code and data size. 882 883 Current Release: 884 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 885 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 886 Previous Release: 887 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 888 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 889 890 8912) iASL Compiler/Disassembler and Tools: 892 893iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 894tool has been designed, implemented, and included in this release. The 895key feature of this utility is that the original comments within the 896input ASL file are preserved during the conversion process, and included 897within the converted ASL+ file -- thus creating a transparent conversion 898of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 899 900 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 901converted code 902 903iASL/Disassembler: Improved the detection and correct disassembly of 904Switch/Case operators. This feature detects sequences of if/elseif/else 905operators that originated from ASL Switch/Case/Default operators and 906emits the original operators. David Box. 907 908iASL: Improved the IORT ACPI table support in the following areas. Lv 909Zheng: 910 Clear MappingOffset if the MappingCount is zero. 911 Fix the disassembly of the SMMU GSU interrupt offset. 912 Update the template file for the IORT table. 913 914Disassembler: Enhanced the detection and disassembly of resource 915template/descriptor within a Buffer object. An EndTag descriptor is now 916required to have a zero second byte, since all known ASL compilers emit 917this. This helps eliminate incorrect decisions when a buffer is 918disassembled (false positives on resource templates). 919 920---------------------------------------- 92119 January 2017. Summary of changes for version 20170119: 922 923 9241) General ACPICA software: 925 926Entire source code base: Added the 2017 copyright to all source code 927legal/licensing module headers and utility/tool signons. This includes 928the standard Linux dual-license header. This affects virtually every file 929in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 930the ACPICA test suite. 931 932 9332) iASL Compiler/Disassembler and Tools: 934 935iASL: Removed/fixed an inadvertent remark when a method argument 936containing a reference is used as a target operand within the method (and 937never used as a simple argument), as in the example below. Jeffrey Hugo. 938 939 dsdt.asl 1507: Store(0x1, Arg0) 940 Remark 2146 - ^ Method Argument is never used (Arg0) 941 942All tools: Removed the bit width of the compiler that generated the tool 943from the common signon for all user space tools. This proved to be 944confusing and unnecessary. This includes similar removal of HARDWARE_NAME 945from the generic makefiles (Thomas Petazzoni). Example below. 946 947 Old: 948 ASL+ Optimizing Compiler version 20170119-32 949 ASL+ Optimizing Compiler version 20170119-64 950 951 New: 952 ASL+ Optimizing Compiler version 20170119 953 954---------------------------------------- 95522 December 2016. Summary of changes for version 20161222: 956 957 9581) ACPICA kernel-resident subsystem: 959 960AML Debugger: Implemented a new mechanism to simplify and enhance 961debugger integration into all environments, including kernel debuggers 962and user-space utilities, as well as remote debug services. This 963mechanism essentially consists of new OSL interfaces to support debugger 964initialization/termination, as well as wait/notify interfaces to perform 965the debugger handshake with the host. Lv Zheng. 966 967 New OSL interfaces: 968 AcpiOsInitializeDebugger (void) 969 AcpiOsTerminateDebugger (void) 970 AcpiOsWaitCommandReady (void) 971 AcpiOsNotifyCommandComplete (void) 972 973 New OS services layer: 974 osgendbg.c -- Example implementation, and used for AcpiExec 975 976Update for Generic Address Space (GAS) support: Although the AccessWidth 977and/or BitOffset fields of the GAS are not often used, this change now 978fully supports these fields. This affects the internal support for FADT 979registers, registers in other ACPI data tables, and the AcpiRead and 980AcpiWrite public interfaces. Lv Zheng. 981 982Sleep support: In order to simplify integration of ACPI sleep for the 983various host operating systems, a new OSL interface has been introduced. 984AcpiOsEnterSleep allows the host to perform any required operations 985before the final write to the sleep control register(s) is performed by 986ACPICA. Lv Zheng. 987 988 New OSL interface: 989 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 990 991 Called from these internal interfaces: 992 AcpiHwLegacySleep 993 AcpiHwExtendedSleep 994 995EFI support: Added a very small EFI/ACPICA example application. Provides 996a simple demo for EFI integration, as well as assisting with resolution 997of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 998 999 source/tools/efihello/efihello.c 1000 1001Local C library: Implemented several new functions to enhance ACPICA 1002portability, for environments where these clib functions are not 1003available (such as EFI). Lv Zheng: 1004 putchar 1005 getchar 1006 strpbrk 1007 strtok 1008 memmove 1009 1010Fixed a regression where occasionally a valid resource descriptor was 1011incorrectly detected as invalid at runtime, and a 1012AE_AML_NO_RESOURCE_END_TAG was returned. 1013 1014Fixed a problem with the recently implemented support that enables 1015control method invocations as Target operands to many ASL operators. 1016Warnings of this form: "Needed type [Reference], found [Processor]" were 1017seen at runtime for some method invocations. 1018 1019Example Code and Data Size: These are the sizes for the OS-independent 1020acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1021debug version of the code includes the debug output trace mechanism and 1022has a much larger code and data size. 1023 1024 Current Release: 1025 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 1026 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 1027 Previous Release: 1028 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1029 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1030 1031 10322) iASL Compiler/Disassembler and Tools: 1033 1034Disassembler: Enhanced output by adding the capability to detect and 1035disassemble ASL Switch/Case statements back to the original ASL source 1036code instead of if/else blocks. David Box. 1037 1038AcpiHelp: Split a large file into separate files based upon 1039functionality/purpose. New files are: 1040 ahaml.c 1041 ahasl.c 1042 1043---------------------------------------- 104417 November 2016. Summary of changes for version 20161117: 1045 1046 10471) ACPICA kernel-resident subsystem: 1048 1049Table Manager: Fixed a regression introduced in 20160729, "FADT support 1050cleanup". This was an attempt to remove all references in the source to 1051the FADT version 2, which never was a legal version number. It was 1052skipped because it was an early version of 64-bit support that was 1053eventually abandoned for the current 64-bit support. 1054 1055Interpreter: Fixed a problem where runtime implicit conversion was 1056incorrectly disabled for the ASL operators below. This brings the 1057behavior into compliance with the ACPI specification: 1058 FromBCD 1059 ToBCD 1060 ToDecimalString 1061 ToHexString 1062 ToInteger 1063 ToBuffer 1064 1065Table Manager: Added a new public interface, AcpiPutTable, used to 1066release and free an ACPI table returned by AcpiGetTable and related 1067interfaces. Lv Zheng. 1068 1069Example Code and Data Size: These are the sizes for the OS-independent 1070acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1071debug version of the code includes the debug output trace mechanism and 1072has a much larger code and data size. 1073 1074 Current Release: 1075 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1076 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1077 Previous Release: 1078 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1079 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1080 1081 10822) iASL Compiler/Disassembler and Tools: 1083 1084Disassembler: Fixed a regression for disassembly of Resource Template. 1085Detection of templates in the AML stream missed some types of templates. 1086 1087iASL: Fixed a problem where an Access Size error was returned for the PCC 1088address space when the AccessSize of the GAS register is greater than a 1089DWORD. Hoan Tran. 1090 1091iASL: Implemented several grammar changes for the operators below. These 1092changes are slated for the next version of the ACPI specification: 1093 RefOf - Disallow method invocation as an operand 1094 CondRefOf - Disallow method invocation as an operand 1095 DerefOf - Disallow operands that use the result from operators 1096that 1097 do not return a reference (Changed TermArg to 1098SuperName). 1099 1100iASL: Control method invocations are now allowed for Target operands, as 1101per the ACPI specification. Removed error for using a control method 1102invocation as a Target operand. 1103 1104Disassembler: Improved detection of Resource Templates, Unicode, and 1105Strings within Buffer objects. These subtypes do not contain a specific 1106opcode to indicate the originating ASL code, and they must be detected by 1107other means within the disassembler. 1108 1109iASL: Implemented an optimization improvement for 32-bit ACPI tables 1110(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 1111only after 64-bit to 32-bit truncation. A truncation warning message is 1112still emitted, however. 1113 1114AcpiXtract: Implemented handling for both types of line terminators (LF 1115or CR/LF) so that it can accept AcpiDump output files from any system. 1116Peter Wu. 1117 1118AcpiBin: Added two new options for comparing AML files: 1119 -a: compare and display ALL mismatches 1120 -o: start compare at this offset into the second file 1121 1122---------------------------------------- 112330 September 2016. Summary of changes for version 20160930: 1124 1125 11261) ACPICA kernel-resident subsystem: 1127 1128Fixed a regression in the internal AcpiTbFindTable function where a non 1129AE_OK exception could inadvertently be returned even if the function did 1130not fail. This problem affects the following operators: 1131 DataTableRegion 1132 LoadTable 1133 1134Fixed a regression in the LoadTable operator where a load to any 1135namespace location other than the root no longer worked properly. 1136 1137Increased the maximum loop count value that will result in the 1138AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 1139prevent infinite loops within the AML interpreter and thus the host OS 1140kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 11411,048,575). 1142 1143Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 1144acpixf.h file. This allows hosts to easily configure the maximum loop 1145count at runtime. 1146 1147Removed an illegal character in the strtoul64.c file. This character 1148caused errors with some C compilers. 1149 1150Example Code and Data Size: These are the sizes for the OS-independent 1151acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1152debug version of the code includes the debug output trace mechanism and 1153has a much larger code and data size. 1154 1155 Current Release: 1156 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1157 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1158 Previous Release: 1159 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 1160 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 1161 1162 11632) iASL Compiler/Disassembler and Tools: 1164 1165Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 1166the simpler ASL ElseIf keyword. During the conversion, a trailing If 1167block could be lost and missing from the disassembled output. 1168 1169iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 1170the missing rule caused a parse error when using the Index operator as an 1171operand to ObjectType. This construct now compiles properly. Example: 1172 ObjectType(PKG1[4]). 1173 1174iASL: Correctly handle unresolved symbols in the hardware map file (-lm 1175option). Previously, unresolved symbols could cause a protection fault. 1176Such symbols are now marked as unresolved in the map file. 1177 1178iASL: Implemented support to allow control method invocations as an 1179operand to the ASL DeRefOf operator. Example: 1180 DeRefOf(MTH1(Local0)) 1181 1182Disassembler: Improved support for the ToPLD ASL macro. Detection of a 1183possible _PLD buffer now includes examination of both the normal buffer 1184length (16 or 20) as well as the surrounding AML package length. 1185 1186Disassembler: Fixed a problem with the decoding of complex expressions 1187within the Divide operator for ASL+. For the case where both the quotient 1188and remainder targets are specified, the entire statement cannot be 1189disassembled. Previously, the output incorrectly contained a mix of ASL- 1190and ASL+ operators. This mixed statement causes a syntax error when 1191compiled. Example: 1192 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 1193disassembled to: 1194 Divide (INT1 + 6, 128, RSLT, QUOT) 1195 1196iASL/Tools: Added support to process AML and non-AML ACPI tables 1197consistently. For the disassembler and AcpiExec, allow all types of ACPI 1198tables (AML and data tables). For the iASL -e option, allow only AML 1199tables (DSDT/SSDT). 1200 1201---------------------------------------- 120231 August 2016. Summary of changes for version 20160831: 1203 1204 12051) ACPICA kernel-resident subsystem: 1206 1207Improve support for the so-called "module-level code", which is defined 1208to be math, logical and control AML opcodes that appear outside of any 1209control method. This change improves the support by adding more opcodes 1210that can be executed in the manner. Some other issues have been solved, 1211and the ASL grammar changes to support such code under all scope 1212operators (Device, etc.) are complete. Lv Zheng. 1213 1214UEFI support: these OSL functions have been implemented. This is an 1215additional step toward supporting the AcpiExec utility natively (with 1216full hardware access) under UEFI. Marcelo Ferreira. 1217 AcpiOsReadPciConfiguration 1218 AcpiOsWritePciConfiguration 1219 1220Fixed a possible mutex error during control method auto-serialization. Lv 1221Zheng. 1222 1223Updated support for the Generic Address Structure by fully implementing 1224all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 1225Zheng. 1226 1227Updated the return value for the internal _OSI method. Instead of 12280xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 1229for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 1230implementations, and will be reflected and clarified in the next version 1231of the ACPI specification. 1232 1233Implemented two new table events that can be passed to an ACPICA table 1234handler. These events are used to indicate a table installation or 1235uninstallation. These events are used in addition to existed table load 1236and unload events. Lv Zheng. 1237 1238Implemented a cleanup for all internal string-to-integer conversions. 1239Consolidate multiple versions of this functionality and limit possible 1240bases to either 10 or 16 to simplify the code. Adds a new file, 1241utstrtoul64. 1242 1243Cleanup the inclusion order of the various compiler-specific headers. 1244This simplifies build configuration management. The compiler-specific 1245headers are now split out from the host-specific headers. Lv Zheng. 1246 1247Example Code and Data Size: These are the sizes for the OS-independent 1248acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1249debug version of the code includes the debug output trace mechanism and 1250has a much larger code and data size. 1251 1252 Current Release: 1253 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 1254 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 1255 1256 12572) iASL Compiler/Disassembler and Tools: 1258 1259iASL/AcpiExec: Added a command line option to display the build date/time 1260of the tool (-vd). This can be useful to verify that the correct version 1261of the tools are being used. 1262 1263AML Debugger: Implemented a new subcommand ("execute predef") to execute 1264all predefined control methods and names within the current namespace. 1265This can be useful for debugging problems with ACPI tables and the ACPI 1266namespace. 1267 1268---------------------------------------- 126929 July 2016. Summary of changes for version 20160729: 1270 1271 12721) ACPICA kernel-resident subsystem: 1273 1274Implemented basic UEFI support for the various ACPICA tools. This 1275includes: 12761) An OSL to implement the various AcpiOs* interfaces on UEFI. 12772) Support to obtain the ACPI tables on UEFI. 12783) Local implementation of required C library functions not available on 1279UEFI. 12804) A front-end (main) function for the tools for UEFI-related 1281initialization. 1282 1283The initial deployment of this support is the AcpiDump utility executing 1284as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 1285Current environments supported are Linux/Unix. MSVC generation is not 1286supported at this time. See the generate/efi/README file for build 1287instructions. Lv Zheng. 1288 1289Future plans include porting the AcpiExec utility to execute natively on 1290the platform with I/O and memory access. This will allow viewing/dump of 1291the platform namespace and native execution of ACPI control methods that 1292access the actual hardware. To fully implement this support, the OSL 1293functions below must be implemented with UEFI interfaces. Any community 1294help in the implementation of these functions would be appreciated: 1295 AcpiOsReadPort 1296 AcpiOsWritePort 1297 AcpiOsReadMemory 1298 AcpiOsWriteMemory 1299 AcpiOsReadPciConfiguration 1300 AcpiOsWritePciConfiguration 1301 1302Restructured and standardized the C library configuration for ACPICA, 1303resulting in the various configuration options below. This includes a 1304global restructuring of the compiler-dependent and platform-dependent 1305include files. These changes may affect the existing platform-dependent 1306configuration files on some hosts. Lv Zheng. 1307 1308The current C library configuration options appear below. For any issues, 1309it may be helpful to examine the existing compiler-dependent and 1310platform-dependent files as examples. Lv Zheng. 1311 13121) Linux kernel: 1313 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 1314library. 1315 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 13162) Unix/Windows/BSD applications: 1317 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 1318library. 1319 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 13203) UEFI applications: 1321 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 1322library. 1323 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 13244) UEFI applications (EDK2/StdLib): 1325 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 1326 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 1327 1328 1329AML interpreter: "module-level code" support. Allows for execution of so- 1330called "executable" AML code (math/logical operations, etc.) outside of 1331control methods not just at the module level (top level) but also within 1332any scope declared outside of a control method - Scope{}, Device{}, 1333Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 1334 1335Simplified the configuration of the "maximum AML loops" global option by 1336adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 1337modified at runtime. 1338 1339 1340Example Code and Data Size: These are the sizes for the OS-independent 1341acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1342debug version of the code includes the debug output trace mechanism and 1343has a much larger code and data size. 1344 1345 Current Release: 1346 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 1347 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 1348 1349 13502) iASL Compiler/Disassembler and Tools: 1351 1352iASL: Add full support for the RASF ACPI table (RAS Features Table). 1353Includes disassembler, data table compiler, and header support. 1354 1355iASL Expand "module-level code" support. Allows for 1356compilation/disassembly of so-called "executable" AML code (math/logical 1357operations, etc.) outside of control methods not just at the module level 1358(top level) but also within any scope declared outside of a control 1359method - Scope{}, Device{}, Processor{}, PowerResource{}, and 1360ThermalZone{}. 1361 1362AcpiDump: Added support for dumping all SSDTs on newer versions of 1363Windows. These tables are now easily available -- SSDTs are not available 1364through the registry on older versions. 1365 1366---------------------------------------- 136727 May 2016. Summary of changes for version 20160527: 1368 1369 13701) ACPICA kernel-resident subsystem: 1371 1372Temporarily reverted the new arbitrary bit length/alignment support in 1373AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 1374a number of regressions with the new code that need to be fully resolved 1375and tested before this support can be finally integrated into ACPICA. 1376Apologies for any inconveniences these issues may have caused. 1377 1378The ACPI message macros are not configurable (ACPI_MSG_ERROR, 1379ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 1380and ACPI_MSG_BIOS_WARNING). Lv Zheng. 1381 1382Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 1383option. Adds a new return macro, return_STR. Junk-uk Kim. 1384 1385Example Code and Data Size: These are the sizes for the OS-independent 1386acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1387debug version of the code includes the debug output trace mechanism and 1388has a much larger code and data size. 1389 1390 Current Release: 1391 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 1392 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1393 Previous Release: 1394 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1395 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 1396 1397---------------------------------------- 139822 April 2016. Summary of changes for version 20160422: 1399 14001) ACPICA kernel-resident subsystem: 1401 1402Fixed a regression in the GAS (generic address structure) arbitrary bit 1403support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 1404and incorrect return values. Lv Zheng. ACPICA BZ 1270. 1405 1406ACPI 6.0: Added support for new/renamed resource macros. One new argument 1407was added to each of these macros, and the original name has been 1408deprecated. The AML disassembler will always disassemble to the new 1409names. Support for the new macros was added to iASL, disassembler, 1410resource manager, and the acpihelp utility. ACPICA BZ 1274. 1411 1412 I2cSerialBus -> I2cSerialBusV2 1413 SpiSerialBus -> SpiSerialBusV2 1414 UartSerialBus -> UartSerialBusV2 1415 1416ACPI 6.0: Added support for a new integer field that was appended to the 1417package object returned by the _BIX method. This adds iASL compile-time 1418and AML runtime error checking. ACPICA BZ 1273. 1419 1420ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 1421Subspace Type2" (Headers, Disassembler, and data table compiler). 1422 1423Example Code and Data Size: These are the sizes for the OS-independent 1424acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1425debug version of the code includes the debug output trace mechanism and 1426has a much larger code and data size. 1427 1428 Current Release: 1429 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1430 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1431 Previous Release: 1432 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 1433 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 1434 1435 14362) iASL Compiler/Disassembler and Tools: 1437 1438iASL: Implemented an ASL grammar extension to allow/enable executable 1439"module-level code" to be created and executed under the various 1440operators that create new scopes. This type of AML code is already 1441supported in all known AML interpreters, and the grammar change will 1442appear in the next version of the ACPI specification. Simplifies the 1443conditional runtime creation of named objects under these object types: 1444 1445 Device 1446 PowerResource 1447 Processor 1448 Scope 1449 ThermalZone 1450 1451iASL: Implemented a new ASL extension, a "For" loop macro to add greater 1452ease-of-use to the ASL language. The syntax is similar to the 1453corresponding C operator, and is implemented with the existing AML While 1454opcode -- thus requiring no changes to existing AML interpreters. 1455 1456 For (Initialize, Predicate, Update) {TermList} 1457 1458Grammar: 1459 ForTerm := 1460 For ( 1461 Initializer // Nothing | TermArg => ComputationalData 1462 Predicate // Nothing | TermArg => ComputationalData 1463 Update // Nothing | TermArg => ComputationalData 1464 ) {TermList} 1465 1466 1467iASL: The _HID/_ADR detection and validation has been enhanced to search 1468under conditionals in order to allow these objects to be conditionally 1469created at runtime. 1470 1471iASL: Fixed several issues with the constant folding feature. The 1472improvement allows better detection and resolution of statements that can 1473be folded at compile time. ACPICA BZ 1266. 1474 1475iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 1476conversion to the ASL ElseIf operator where incorrect ASL code could be 1477generated. 1478 1479iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 1480sometimes an extra (and extraneous) set of parentheses were emitted for 1481some combinations of operators. Although this did not cause any problems 1482with recompilation of the disassembled code, it made the code more 1483difficult to read. David Box. ACPICA BZ 1231. 1484 1485iASL: Changed to ignore the unreferenced detection for predefined names 1486of resource descriptor elements, when the resource descriptor is 1487created/defined within a control method. 1488 1489iASL: Disassembler: Fix a possible fault with externally declared Buffer 1490objects. 1491 1492---------------------------------------- 149318 March 2016. Summary of changes for version 20160318: 1494 14951) ACPICA kernel-resident subsystem: 1496 1497Added support for arbitrary bit lengths and bit offsets for registers 1498defined by the Generic Address Structure. Previously, only aligned bit 1499lengths of 8/16/32/64 were supported. This was sufficient for many years, 1500but recently some machines have been seen that require arbitrary bit- 1501level support. ACPICA BZ 1240. Lv Zheng. 1502 1503Fixed an issue where the \_SB._INI method sometimes must be evaluated 1504before any _REG methods are evaluated. Lv Zheng. 1505 1506Implemented several changes related to ACPI table support 1507(Headers/Disassembler/TableCompiler): 1508NFIT: For ACPI 6.1, updated to add some additional new fields and 1509constants. 1510FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 15116). 1512DMAR: Added new constants per the 10/2014 DMAR spec. 1513IORT: Added new subtable per the 10/2015 IORT spec. 1514HEST: For ACPI 6.1, added new constants and new subtable. 1515DBG2: Added new constants per the 12/2015 DBG2 spec. 1516FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 1517ACPICA BZ 1249. 1518ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 1519 1520Updated header support for the DMAR table to match the current version of 1521the related spec. 1522 1523Added extensions to the ASL Concatenate operator to allow any ACPI object 1524to be passed as an operand. Any object other than Integer/String/Buffer 1525simply returns a string containing the object type. This extends the 1526usefulness of the Printf macros. Previously, Concatenate would abort the 1527control method if a non-data object was encountered. 1528 1529ACPICA source code: Deployed the C "const" keyword across the source code 1530where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 1531 1532Example Code and Data Size: These are the sizes for the OS-independent 1533acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1534debug version of the code includes the debug output trace mechanism and 1535has a much larger code and data size. 1536 1537 Current Release: 1538 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 1539 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 1540 Previous Release: 1541 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 1542 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 1543 1544 15452) iASL Compiler/Disassembler and Tools: 1546 1547iASL/Disassembler: Improved the heuristic used to determine the number of 1548arguments for an externally defined control method (a method in another 1549table). Although this is an improvement, there is no deterministic way to 1550"guess" the number of method arguments. Only the ACPI 6.0 External opcode 1551will completely solve this problem as it is deployed (automatically) in 1552newer BIOS code. 1553 1554iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 1555statements that could cause errors when the disassembled file is 1556compiled. ACPICA BZ 1243. David Box. 1557 1558iASL: Fixed a regression caused by the merger of the two versions of the 1559local strtoul64. Because of a dependency on a global variable, strtoul64 1560could return an error for integers greater than a 32-bit value. ACPICA BZ 15611260. 1562 1563iASL: Fixed a regression where a fault could occur for an ASL Return 1564statement if it invokes a control method that is not resolved. ACPICA BZ 15651264. 1566 1567AcpiXtract: Improved input file validation: detection of binary files and 1568non-acpidump text files. 1569 1570---------------------------------------- 157112 February 2016. Summary of changes for version 20160212: 1572 15731) ACPICA kernel-resident subsystem: 1574 1575Implemented full support for the ACPI 6.1 specification (released in 1576January). This version of the specification is available at: 1577http://www.uefi.org/specifications 1578 1579Only a relatively small number of changes were required in ACPICA to 1580support ACPI 6.1, in these areas: 1581- New predefined names 1582- New _HID values 1583- A new subtable for HEST 1584- A few other header changes for new values 1585 1586Ensure \_SB_._INI is executed before any _REG methods are executed. There 1587appears to be existing BIOS code that relies on this behavior. Lv Zheng. 1588 1589Reverted a change made in version 20151218 which enabled method 1590invocations to be targets of various ASL operators (SuperName and Target 1591grammar elements). While the new behavior is supported by the ACPI 1592specification, other AML interpreters do not support this behavior and 1593never will. The ACPI specification will be updated for ACPI 6.2 to remove 1594this support. Therefore, the change was reverted to the original ACPICA 1595behavior. 1596 1597ACPICA now supports the GCC 6 compiler. 1598 1599Current Release: (Note: build changes increased sizes) 1600 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 1601 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 1602Previous Release: 1603 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 1604 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 1605 1606 16072) iASL Compiler/Disassembler and Tools: 1608 1609Completed full support for the ACPI 6.0 External() AML opcode. The 1610compiler emits an external AML opcode for each ASL External statement. 1611This opcode is used by the disassembler to assist with the disassembly of 1612external control methods by specifying the required number of arguments 1613for the method. AML interpreters do not use this opcode. To ensure that 1614interpreters do not even see the opcode, a block of one or more external 1615opcodes is surrounded by an "If(0)" construct. As this feature becomes 1616commonly deployed in BIOS code, the ability of disassemblers to correctly 1617disassemble AML code will be greatly improved. David Box. 1618 1619iASL: Implemented support for an optional cross-reference output file. 1620The -lx option will create a the cross-reference file with the suffix 1621"xrf". Three different types of cross-reference are created in this file: 1622- List of object references made from within each control method 1623- Invocation (caller) list for each user-defined control method 1624- List of references to each non-method object in the namespace 1625 1626iASL: Method invocations as ASL Target operands are now disallowed and 1627flagged as errors in preparation for ACPI 6.2 (see the description of the 1628problem above). 1629 1630---------------------------------------- 16318 January 2016. Summary of changes for version 20160108: 1632 16331) ACPICA kernel-resident subsystem: 1634 1635Updated all ACPICA copyrights and signons to 2016: Added the 2016 1636copyright to all source code module headers and utility/tool signons. 1637This includes the standard Linux dual-license header. This affects 1638virtually every file in the ACPICA core subsystem, iASL compiler, all 1639ACPICA utilities, and the ACPICA test suite. 1640 1641Fixed a regression introduced in version 20151218 concerning the 1642execution of so-called module-level ASL/AML code. Namespace objects 1643created under a module-level If() construct were not properly/fully 1644entered into the namespace and could cause an interpreter fault when 1645accessed. 1646 1647Example Code and Data Size: These are the sizes for the OS-independent 1648acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1649debug version of the code includes the debug output trace mechanism and 1650has a much larger code and data size. 1651 1652Current Release: 1653 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 1654 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 1655 Previous Release: 1656 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 1657 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 1658 1659 16602) iASL Compiler/Disassembler and Tools: 1661 1662Fixed a problem with the compilation of the GpioIo and GpioInt resource 1663descriptors. The _PIN field name was incorrectly defined to be an array 1664of 32-bit values, but the _PIN values are in fact 16 bits each. This 1665would cause incorrect bit width warnings when using Word (16-bit) fields 1666to access the descriptors. 1667 1668 1669---------------------------------------- 167018 December 2015. Summary of changes for version 20151218: 1671 16721) ACPICA kernel-resident subsystem: 1673 1674Implemented per-AML-table execution of "module-level code" as individual 1675ACPI tables are loaded into the namespace during ACPICA initialization. 1676In other words, any module-level code within an AML table is executed 1677immediately after the table is loaded, instead of batched and executed 1678after all of the tables have been loaded. This provides compatibility 1679with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 1680David Box. 1681 1682To fully support the feature above, the default operation region handlers 1683for the SystemMemory, SystemIO, and PCI_Config address spaces are now 1684installed before any ACPI tables are loaded. This enables module-level 1685code to access these address spaces during the table load and module- 1686level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 1687Box. 1688 1689Implemented several changes to the internal _REG support in conjunction 1690with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 1691utilities for the changes above. Although these tools were changed, host 1692operating systems that simply use the default handlers for SystemMemory, 1693SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 1694 1695For example, in the code below, DEV1 is conditionally added to the 1696namespace by the DSDT via module-level code that accesses an operation 1697region. The SSDT references DEV1 via the Scope operator. DEV1 must be 1698created immediately after the DSDT is loaded in order for the SSDT to 1699successfully reference DEV1. Previously, this code would cause an 1700AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 1701fully supported by ACPICA. 1702 1703 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 1704 { 1705 OperationRegion (OPR1, SystemMemory, 0x400, 32) 1706 Field (OPR1, AnyAcc, NoLock, Preserve) 1707 { 1708 FLD1, 1 1709 } 1710 If (FLD1) 1711 { 1712 Device (\DEV1) 1713 { 1714 } 1715 } 1716 } 1717 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 1718 { 1719 External (\DEV1, DeviceObj) 1720 Scope (\DEV1) 1721 { 1722 } 1723 } 1724 1725Fixed an AML interpreter problem where control method invocations were 1726not handled correctly when the invocation was itself a SuperName argument 1727to another ASL operator. In these cases, the method was not invoked. 1728ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 1729argument: 1730 Store 1731 Acquire, Wait 1732 CondRefOf, RefOf 1733 Decrement, Increment 1734 Load, Unload 1735 Notify 1736 Signal, Release, Reset 1737 SizeOf 1738 1739Implemented automatic String-to-ObjectReference conversion support for 1740packages returned by predefined names (such as _DEP). A common BIOS error 1741is to add double quotes around an ObjectReference namepath, which turns 1742the reference into an unexpected string object. This support detects the 1743problem and corrects it before the package is returned to the caller that 1744invoked the method. Lv Zheng. 1745 1746Implemented extensions to the Concatenate operator. Concatenate now 1747accepts any type of object, it is not restricted to simply 1748Integer/String/Buffer. For objects other than these 3 basic data types, 1749the argument is treated as a string containing the name of the object 1750type. This expands the utility of Concatenate and the Printf/Fprintf 1751macros. ACPICA BZ 1222. 1752 1753Cleaned up the output of the ASL Debug object. The timer() value is now 1754optional and no longer emitted by default. Also, the basic data types of 1755Integer/String/Buffer are simply emitted as their values, without a data 1756type string -- since the data type is obvious from the output. ACPICA BZ 17571221. 1758 1759Example Code and Data Size: These are the sizes for the OS-independent 1760acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1761debug version of the code includes the debug output trace mechanism and 1762has a much larger code and data size. 1763 1764 Current Release: 1765 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 1766 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 1767 Previous Release: 1768 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 1769 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 1770 1771 17722) iASL Compiler/Disassembler and Tools: 1773 1774iASL: Fixed some issues with the ASL Include() operator. This operator 1775was incorrectly defined in the iASL parser rules, causing a new scope to 1776be opened for the code within the include file. This could lead to 1777several issues, including allowing ASL code that is technically illegal 1778and not supported by AML interpreters. Note, this does not affect the 1779related #include preprocessor operator. ACPICA BZ 1212. 1780 1781iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 1782operator is essentially an ASL macro since there is no AML opcode 1783associated with it. The code emitted by the iASL compiler for ElseIf is 1784an Else opcode followed immediately by an If opcode. The disassembler 1785will now emit an ElseIf if it finds an Else immediately followed by an 1786If. This simplifies the decoded ASL, especially for deeply nested 1787If..Else and large Switch constructs. Thus, the disassembled code more 1788closely follows the original source ASL. ACPICA BZ 1211. Example: 1789 1790 Old disassembly: 1791 Else 1792 { 1793 If (Arg0 == 0x02) 1794 { 1795 Local0 = 0x05 1796 } 1797 } 1798 1799 New disassembly: 1800 ElseIf (Arg0 == 0x02) 1801 { 1802 Local0 = 0x05 1803 } 1804 1805AcpiExec: Added support for the new module level code behavior and the 1806early region installation. This required a small change to the 1807initialization, since AcpiExec must install its own operation region 1808handlers. 1809 1810AcpiExec: Added support to make the debug object timer optional. Default 1811is timer disabled. This cleans up the debug object output -- the timer 1812data is rarely used. 1813 1814AcpiExec: Multiple ACPI tables are now loaded in the order that they 1815appear on the command line. This can be important when there are 1816interdependencies/references between the tables. 1817 1818iASL/Templates. Add support to generate template files with multiple 1819SSDTs within a single output file. Also added ommand line support to 1820specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 18211223, 1225. 1822 1823 1824---------------------------------------- 182524 November 2015. Summary of changes for version 20151124: 1826 18271) ACPICA kernel-resident subsystem: 1828 1829Fixed a possible regression for a previous update to FADT handling. The 1830FADT no longer has a fixed table ID, causing some issues with code that 1831was hardwired to a specific ID. Lv Zheng. 1832 1833Fixed a problem where the method auto-serialization could interfere with 1834the current SyncLevel. This change makes the auto-serialization support 1835transparent to the SyncLevel support and management. 1836 1837Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 1838interface is intended for early access to the namespace during the 1839initial namespace device discovery walk. The _SUB method has been seen to 1840access operation regions in some cases, causing errors because the 1841operation regions are not fully initialized. 1842 1843AML Debugger: Fixed some issues with the terminate/quit/exit commands 1844that can cause faults. Lv Zheng. 1845 1846AML Debugger: Add thread ID support so that single-step mode only applies 1847to the AML Debugger thread. This prevents runtime errors within some 1848kernels. Lv Zheng. 1849 1850Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 1851methods that are invoked by this interface are optional, removed warnings 1852emitted for the case where one or more of these methods do not exist. 1853ACPICA BZ 1208, original change by Prarit Bhargava. 1854 1855Made a major pass through the entire ACPICA source code base to 1856standardize formatting that has diverged a bit over time. There are no 1857functional changes, but this will of course cause quite a few code 1858differences from the previous ACPICA release. 1859 1860Example Code and Data Size: These are the sizes for the OS-independent 1861acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1862debug version of the code includes the debug output trace mechanism and 1863has a much larger code and data size. 1864 1865 Current Release: 1866 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 1867 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 1868 Previous Release: 1869 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1870 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 1871 1872 18732) iASL Compiler/Disassembler and Tools: 1874 1875iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 1876definition blocks within a single ASL file and the resulting AML file. 1877Support for this type of file was also added to the various tools that 1878use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 1879example code below shows two definition blocks within the same file: 1880 1881 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 18820x12345678) 1883 { 1884 } 1885 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 1886 { 1887 } 1888 1889iASL: Enhanced typechecking for the Name() operator. All expressions for 1890the value of the named object must be reduced/folded to a single constant 1891at compile time, as per the ACPI specification (the AML definition of 1892Name()). 1893 1894iASL: Fixed some code indentation issues for the -ic and -ia options (C 1895and assembly headers). Now all emitted code correctly begins in column 1. 1896 1897iASL: Added an error message for an attempt to open a Scope() on an 1898object defined in an SSDT. The DSDT is always loaded into the namespace 1899first, so any attempt to open a Scope on an SSDT object will fail at 1900runtime. 1901 1902 1903---------------------------------------- 190430 September 2015. Summary of changes for version 20150930: 1905 19061) ACPICA kernel-resident subsystem: 1907 1908Debugger: Implemented several changes and bug fixes to assist support for 1909the in-kernel version of the AML debugger. Lv Zheng. 1910- Fix the "predefined" command for in-kernel debugger. 1911- Do not enter debug command loop for the help and version commands. 1912- Disallow "execute" command during execution/single-step of a method. 1913 1914Interpreter: Updated runtime typechecking for all operators that have 1915target operands. The operand is resolved and validated that it is legal. 1916For example, the target cannot be a non-data object such as a Device, 1917Mutex, ThermalZone, etc., as per the ACPI specification. 1918 1919Debugger: Fixed the double-mutex user I/O handshake to work when local 1920deadlock detection is enabled. 1921 1922Debugger: limited display of method locals and arguments (LocalX and 1923ArgX) to only those that have actually been initialized. This prevents 1924lines of extraneous output. 1925 1926Updated the definition of the NFIT table to correct the bit polarity of 1927one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 1928 1929Example Code and Data Size: These are the sizes for the OS-independent 1930acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1931debug version of the code includes the debug output trace mechanism and 1932has a much larger code and data size. 1933 1934 Current Release: 1935 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1936 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 1937 Previous Release: 1938 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 1939 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 1940 1941 19422) iASL Compiler/Disassembler and Tools: 1943 1944iASL: Improved the compile-time typechecking for operands of many of the 1945ASL operators: 1946 1947-- Added an option to disable compiler operand/operator typechecking (- 1948ot). 1949 1950-- For the following operators, the TermArg operands are now validated 1951when possible to be Integer data objects: BankField, OperationRegion, 1952DataTableRegion, Buffer, and Package. 1953 1954-- Store (Source, Target): Both the source and target operands are 1955resolved and checked that the operands are both legal. For example, 1956neither operand can be a non-data object such as a Device, Mutex, 1957ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 1958operator can be used to store an object to any type of target object. 1959 1960-- Store (Source, Target): If the source is a Package object, the target 1961must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 1962is a Package, the source must also be a Package. 1963 1964-- Store (Source, Target): A warning is issued if the source and target 1965resolve to the identical named object. 1966 1967-- Store (Source, <method invocation>): An error is generated for the 1968target method invocation, as this construct is not supported by the AML 1969interpreter. 1970 1971-- For all ASL math and logic operators, the target operand must be a 1972data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 1973includes the function return value also. 1974 1975-- External declarations are also included in the typechecking where 1976possible. External objects defined using the UnknownObj keyword cannot be 1977typechecked, however. 1978 1979iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 1980operator: 1981- Legacy code: Index(PKG1, 3) 1982- New ASL+ code: PKG1[3] 1983This completes the ACPI 6.0 ASL+ support as it was the only operator not 1984supported. 1985 1986iASL: Fixed the file suffix for the preprocessor output file (.i). Two 1987spaces were inadvertently appended to the filename, causing file access 1988and deletion problems on some systems. 1989 1990ASL Test Suite (ASLTS): Updated the master makefile to generate all 1991possible compiler output files when building the test suite -- thus 1992exercising these features of the compiler. These files are automatically 1993deleted when the test suite exits. 1994 1995 1996---------------------------------------- 199718 August 2015. Summary of changes for version 20150818: 1998 19991) ACPICA kernel-resident subsystem: 2000 2001Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 2002Zheng. ACPICA BZ 1186. 2003 2004Completed development to ensure that the ACPICA Disassembler and Debugger 2005are fully standalone components of ACPICA. Removed cross-component 2006dependences. Lv Zheng. 2007 2008The max-number-of-AML-loops is now runtime configurable (previously was 2009compile-time only). This is essentially a loop timeout to force-abort 2010infinite AML loops. ACPCIA BZ 1192. 2011 2012Debugger: Cleanup output to dump ACPI names and namepaths without any 2013trailing underscores. Lv Zheng. ACPICA BZ 1135. 2014 2015Removed unnecessary conditional compilations across the Debugger and 2016Disassembler components where entire modules could be left uncompiled. 2017 2018The aapits test is deprecated and has been removed from the ACPICA git 2019tree. The test has never been completed and has not been maintained, thus 2020becoming rather useless. ACPICA BZ 1015, 794. 2021 2022A batch of small changes to close bugzilla and other reports: 2023- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 2024- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 2025- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 2026- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 2027Moore. 2028- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 2029ACPICA BZ 1184. 2030- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 2031operators. 2032- Debugger: Split debugger initialization/termination interfaces. Lv 2033Zheng. 2034- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 2035identification. 2036- AcpiExec: Add debug message during _REG method phase during table 2037load/init. 2038- AcpiNames: Fix a regression where some output was missing and no longer 2039emitted. 2040- Debugger: General cleanup and simplification. Lv Zheng. 2041- Disassembler: Cleanup use of several global option variables. Lv Zheng. 2042 2043Example Code and Data Size: These are the sizes for the OS-independent 2044acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2045debug version of the code includes the debug output trace mechanism and 2046has a much larger code and data size. 2047 2048 Current Release: 2049 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2050 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2051 Previous Release: 2052 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2053 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2054 2055 20562) iASL Compiler/Disassembler and Tools: 2057 2058AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 2059were not handled properly and caused load errors. Now, properly invoke 2060and use the ACPICA auto-reallocate mechanism for ACPI table data 2061structures. ACPICA BZ 1188 2062 2063AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 2064BZ 1190. 2065 2066AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 2067AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 2068executed during initialization. ACPICA BZ 1187, 1189. 2069 2070iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 2071that corresponds to each disassembled ASL statement, to simplify 2072debugging. ACPICA BZ 1191. 2073 2074Debugger: Add option to the "objects" command to display a summary of the 2075current namespace objects (Object type and count). This is displayed if 2076the command is entered with no arguments. 2077 2078AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 2079 2080 2081---------------------------------------- 208217 July 2015. Summary of changes for version 20150717: 2083 20841) ACPICA kernel-resident subsystem: 2085 2086Improved the partitioning between the Debugger and Disassembler 2087components. This allows the Debugger to be used standalone within kernel 2088code without the Disassembler (which is used for single stepping also). 2089This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 2090 2091Debugger: Implemented a new command to trace the execution of control 2092methods (Trace). This is especially useful for the in-kernel version of 2093the debugger when file I/O may not be available for method trace output. 2094See the ACPICA reference for more information. Lv Zheng. 2095 2096Moved all C library prototypes (used for the local versions of these 2097functions when requested) to a new header, acclib.h 2098Cleaned up the use of non-ANSI C library functions. These functions are 2099implemented locally in ACPICA. Moved all such functions to a common 2100source file, utnonansi.c 2101 2102Debugger: Fixed a problem with the "!!" command (get last command 2103executed) where the debugger could enter an infinite loop and eventually 2104crash. 2105 2106Removed the use of local macros that were used for some of the standard C 2107library functions to automatically cast input parameters. This mostly 2108affected the is* functions where the input parameter is defined to be an 2109int. This required a few modifications to the main ACPICA source code to 2110provide casting for these functions and eliminate possible compiler 2111warnings for these parameters. 2112 2113Across the source code, added additional status/error checking to resolve 2114issues discovered by static source code analysis tools such as Coverity. 2115 2116Example Code and Data Size: These are the sizes for the OS-independent 2117acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2118debug version of the code includes the debug output trace mechanism and 2119has a much larger code and data size. 2120 2121 Current Release: 2122 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2123 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2124 Previous Release: 2125 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 2126 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 2127 2128 21292) iASL Compiler/Disassembler and Tools: 2130 2131iASL: Fixed a regression where the device map file feature no longer 2132worked properly when used in conjunction with the disassembler. It only 2133worked properly with the compiler itself. 2134 2135iASL: Implemented a new warning for method LocalX variables that are set 2136but never used (similar to a C compiler such as gcc). This also applies 2137to ArgX variables that are not defined by the parent method, and are 2138instead (legally) used as local variables. 2139 2140iASL/Preprocessor: Finished the pass-through of line numbers from the 2141preprocessor to the compiler. This ensures that compiler errors/warnings 2142have the correct original line numbers and filenames, regardless of any 2143#include files. 2144 2145iASL/Preprocessor: Fixed a couple of issues with comment handling and the 2146pass-through of comments to the preprocessor output file (which becomes 2147the compiler input file). Also fixed a problem with // comments that 2148appear after a math expression. 2149 2150iASL: Added support for the TCPA server table to the table compiler and 2151template generator. (The client table was already previously supported) 2152 2153iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 2154identify the iASL compiler. 2155 2156Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 2157multiple times. The new names are ACPI_SIGN_NEGATIVE and 2158ACPI_SIGN_POSITIVE. 2159 2160AcpiHelp: Update to expand help messages for the iASL preprocessor 2161directives. 2162 2163 2164---------------------------------------- 216519 June 2015. Summary of changes for version 20150619: 2166 2167Two regressions in version 20150616 have been addressed: 2168 2169Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 2170etc.) This update changes ACPICA to only use the standard headers for 2171functions, or the prototypes for the local versions of the C library 2172functions. Across the source code, this required some additional casts 2173for some Clib invocations for portability. Moved all local prototypes to 2174a new file, acclib.h 2175 2176Fixes several problems with recent changes to the handling of the FACS 2177table that could cause some systems not to boot. 2178 2179 2180---------------------------------------- 218116 June 2015. Summary of changes for version 20150616: 2182 2183 21841) ACPICA kernel-resident subsystem: 2185 2186Across the entire ACPICA source code base, the various macros for the C 2187library functions (such as ACPI_STRLEN, etc.) have been removed and 2188replaced by the standard C library names (strlen, etc.) The original 2189purpose for these macros is no longer applicable. This simplification 2190reduces the number of macros used in the ACPICA source code 2191significantly, improving readability and maintainability. 2192 2193Implemented support for a new ACPI table, the OSDT. This table, the 2194"override" SDT, can be loaded directly by the host OS at boot time. It 2195enables the replacement of existing namespace objects that were installed 2196via the DSDT and/or SSDTs. The primary purpose for this is to replace 2197buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 2198for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 2199Moore. 2200 2201Added support for systems with (improperly) two FACS tables -- a "32-bit" 2202table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 2203X field). This change will support both automatically. There continues to 2204be systems found with this issue. This support requires a change to the 2205AcpiSetFirmwareWakingVector interface. Also, a public global variable has 2206been added to allow the host to select which FACS is desired 2207(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 2208details Lv Zheng. 2209 2210Added a new feature to allow for systems that do not contain an FACS. 2211Although this is already supported on hardware-reduced platforms, the 2212feature has been extended for all platforms. The reasoning is that we do 2213not want to abort the entire ACPICA initialization just because the 2214system is seriously buggy and has no FACS. 2215 2216Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 2217not correctly transcribed from the ACPI specification in ACPICA version 221820150515. 2219 2220Implemented support for the _CLS object in the AcpiGetObjectInfo external 2221interface. 2222 2223Updated the definitions of the TCPA and TPM2 ACPI tables to the more 2224recent TCG ACPI Specification, December 14, 2014. Table disassembler and 2225compiler also updated. Note: The TCPA "server" table is not supported by 2226the disassembler/table-compiler at this time. 2227 2228ACPI 6.0: Added definitions for the new GIC version field in the MADT. 2229 2230Example Code and Data Size: These are the sizes for the OS-independent 2231acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2232debug version of the code includes the debug output trace mechanism and 2233has a much larger code and data size. 2234 2235 Current Release: 2236 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 2237 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 2238 Previous Release: 2239 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 2240 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 2241 2242 22432) iASL Compiler/Disassembler and Tools: 2244 2245Disassembler: Fixed a problem with the new symbolic operator disassembler 2246where incorrect ASL code could be emitted in some cases for the "non- 2247commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 2248ShiftRight. The actual problem cases seem to be rather unusual in common 2249ASL code, however. David Box. 2250 2251Modified the linux version of acpidump to obtain ACPI tables from not 2252just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 2253Zheng. 2254 2255iASL: Fixed a problem where the user preprocessor output file (.i) 2256contained extra data that was not expected. The compiler was using this 2257file as a temporary file and passed through #line directives in order to 2258keep compiler error messages in sync with the input file and line number 2259across multiple include files. The (.i) is no longer a temporary file as 2260the compiler uses a new, different file for the original purpose. 2261 2262iASL: Fixed a problem where comments within the original ASL source code 2263file were not passed through to the preprocessor output file, nor any 2264listing files. 2265 2266iASL: Fixed some issues for the handling of the "#include" preprocessor 2267directive and the similar (but not the same) "Include" ASL operator. 2268 2269iASL: Add support for the new OSDT in both the disassembler and compiler. 2270 2271iASL: Fixed a problem with the constant folding support where a Buffer 2272object could be incorrectly generated (incorrectly formed) during a 2273conversion to a Store() operator. 2274 2275AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 2276description text for the _REV predefined name. _REV now permanently 2277returns 2, as per the ACPI 6.0 specification. 2278 2279Debugger: Enhanced the output of the Debug ASL object for references 2280produced by the Index operator. For Buffers and strings, only output the 2281actual byte pointed to by the index. For packages, only print the single 2282package element decoded by the index. Previously, the entire 2283buffer/string/package was emitted. 2284 2285iASL/Table-compiler: Fixed a regression where the "generic" data types 2286were no longer recognized, causing errors. 2287 2288 2289---------------------------------------- 229015 May 2015. Summary of changes for version 20150515: 2291 2292This release implements most of ACPI 6.0 as described below. 2293 22941) ACPICA kernel-resident subsystem: 2295 2296Implemented runtime argument checking and return value checking for all 2297new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 2298_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 2299 2300Example Code and Data Size: These are the sizes for the OS-independent 2301acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2302debug version of the code includes the debug output trace mechanism and 2303has a much larger code and data size. 2304 2305 Current Release: 2306 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 2307 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 2308 Previous Release: 2309 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 2310 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 2311 2312 23132) iASL Compiler/Disassembler and Tools: 2314 2315iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 2316names (argument count validation and return value typechecking.) 2317 2318iASL disassembler and table compiler: implemented support for all new 2319ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 2320 2321iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 2322tables: FADT, MADT. 2323 2324iASL preprocessor: Added a new directive to enable inclusion of binary 2325blobs into ASL code. The new directive is #includebuffer. It takes a 2326binary file as input and emits a named ascii buffer object into the ASL 2327code. 2328 2329AcpiHelp: Added support for all new ACPI 6.0 predefined names. 2330 2331AcpiHelp: Added a new option, -d, to display all iASL preprocessor 2332directives. 2333 2334AcpiHelp: Added a new option, -t, to display all known/supported ACPI 2335tables. 2336 2337 2338---------------------------------------- 233910 April 2015. Summary of changes for version 20150410: 2340 2341Reverted a change introduced in version 20150408 that caused 2342a regression in the disassembler where incorrect operator 2343symbols could be emitted. 2344 2345 2346---------------------------------------- 234708 April 2015. Summary of changes for version 20150408: 2348 2349 23501) ACPICA kernel-resident subsystem: 2351 2352Permanently set the return value for the _REV predefined name. It now 2353returns 2 (was 5). This matches other ACPI implementations. _REV will be 2354deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 2355for ACPI 2.0 and later. It should never be used to differentiate or 2356identify operating systems. 2357 2358Added the "Windows 2015" string to the _OSI support. ACPICA will now 2359return TRUE to a query with this string. 2360 2361Fixed several issues with the local version of the printf function. 2362 2363Added the C99 compiler option (-std=c99) to the Unix makefiles. 2364 2365 Current Release: 2366 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 2367 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 2368 Previous Release: 2369 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2370 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2371 2372 23732) iASL Compiler/Disassembler and Tools: 2374 2375iASL: Implemented an enhancement to the constant folding feature to 2376transform the parse tree to a simple Store operation whenever possible: 2377 Add (2, 3, X) ==> is converted to: Store (5, X) 2378 X = 2 + 3 ==> is converted to: Store (5, X) 2379 2380Updated support for the SLIC table (Software Licensing Description Table) 2381in both the Data Table compiler and the disassembler. The SLIC table 2382support now conforms to "Microsoft Software Licensing Tables (SLIC and 2383MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 2384following the ACPI header is now defined to be "Proprietary Data", and as 2385such, can only be entered or displayed as a hex data block. 2386 2387Implemented full support for the MSDM table as described in the document 2388above. Note: The format of MSDM is similar to SLIC. Any MSDM data 2389following the ACPI header is defined to be "Proprietary Data", and can 2390only be entered or displayed as a hex data block. 2391 2392Implemented the -Pn option for the iASL Table Compiler (was only 2393implemented for the ASL compiler). This option disables the iASL 2394preprocessor. 2395 2396Disassembler: For disassembly of Data Tables, added a comment field 2397around the Ascii equivalent data that is emitted as part of the "Raw 2398Table Data" block. This prevents the iASL Preprocessor from possible 2399confusion if/when the table is compiled. 2400 2401Disassembler: Added an option (-df) to force the disassembler to assume 2402that the table being disassembled contains valid AML. This feature is 2403useful for disassembling AML files that contain ACPI signatures other 2404than DSDT or SSDT (such as OEMx or other signatures). 2405 2406Changes for the EFI version of the tools: 24071) Fixed a build error/issue 24082) Fixed a cast warning 2409 2410iASL: Fixed a path issue with the __FILE__ operator by making the 2411directory prefix optional within the internal SplitInputFilename 2412function. 2413 2414Debugger: Removed some unused global variables. 2415 2416Tests: Updated the makefile for proper generation of the AAPITS suite. 2417 2418 2419---------------------------------------- 242004 February 2015. Summary of changes for version 20150204: 2421 2422ACPICA kernel-resident subsystem: 2423 2424Updated all ACPICA copyrights and signons to 2014. Added the 2014 2425copyright to all module headers and signons, including the standard Linux 2426header. This affects virtually every file in the ACPICA core subsystem, 2427iASL compiler, all ACPICA utilities, and the test suites. 2428 2429Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 2430A raw gpe handling mechanism was created to allow better handling of GPE 2431storms that aren't easily managed by the normal handler. The raw handler 2432allows disabling/renabling of the the GPE so that interrupt storms can be 2433avoided in cases where events cannot be timely serviced. In this 2434scenario, handlers should use the AcpiSetGpe() API to disable/enable the 2435GPE. This API will leave the reference counts undisturbed, thereby 2436preventing unintentional clearing of the GPE when the intent in only to 2437temporarily disable it. Raw handlers allow enabling and disabling of a 2438GPE by removing GPE register locking. As such, raw handlers much provide 2439their own locks while using GPE API's to protect access to GPE data 2440structures. 2441Lv Zheng 2442 2443Events: Always modify GPE registers under the GPE lock. 2444Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 2445values. Reported as bug by joe.liu@apple.com. 2446 2447Unix makefiles: Separate option to disable optimizations and 2448_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 2449NOOPT disable option and creates a separate flag (NOFORTIFY) for this 2450purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 2451errors when building ACPICA. This allows disabling the option without 2452also having to disable optimazations. 2453David Box 2454 2455 Current Release: 2456 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2457 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 2458 2459-- 2460-------------------------------------- 246107 November 2014. Summary of changes for version 20141107: 2462 2463This release is available at https://acpica.org/downloads 2464 2465This release introduces and implements language extensions to ASL that 2466provide support for symbolic ("C-style") operators and expressions. These 2467language extensions are known collectively as ASL+. 2468 2469 24701) iASL Compiler/Disassembler and Tools: 2471 2472Disassembler: Fixed a problem with disassembly of the UartSerialBus 2473macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 2474Box. 2475 2476Disassembler: Fixed the Unicode macro support to add escape sequences. 2477All non-printable ASCII values are emitted as escape sequences, as well 2478as the standard escapes for quote and backslash. Ensures that the 2479disassembled macro can be correctly recompiled. 2480 2481iASL: Added Printf/Fprintf macros for formatted output. These macros are 2482translated to existing AML Concatenate and Store operations. Printf 2483writes to the ASL Debug object. Fprintf allows the specification of an 2484ASL name as the target. Only a single format specifier is required, %o, 2485since the AML interpreter dynamically converts objects to the required 2486type. David E. Box. 2487 2488 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 2489 (Concatenate (Concatenate (Concatenate ("", Arg0), 2490 ": Unexpected value for "), Arg1), ", "), Arg2), 2491 " at line "), Arg3), Debug) 2492 2493 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 2494 Arg0, Arg1, Arg2, Arg3) 2495 2496 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 2497 ("", Arg1), ": "), Arg0), " Successful"), STR1) 2498 2499 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 2500 2501iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 2502ASL parse tree before the AML code is generated. This allows blocks of 2503ASL code to be removed in order to help locate and identify problem 2504devices and/or code. David E. Box. 2505 2506AcpiExec: Added support (-fi) for an optional namespace object 2507initialization file. This file specifies initial values for namespace 2508objects as necessary for debugging and testing different ASL code paths 2509that may be taken as a result of BIOS options. 2510 2511 25122) Overview of symbolic operator support for ASL (ASL+) 2513------------------------------------------------------- 2514 2515As an extension to the ASL language, iASL implements support for symbolic 2516(C-style) operators for math and logical expressions. This can greatly 2517simplify ASL code as well as improve both readability and 2518maintainability. These language extensions can exist concurrently with 2519all legacy ASL code and expressions. 2520 2521The symbolic extensions are 100% compatible with existing AML 2522interpreters, since no new AML opcodes are created. To implement the 2523extensions, the iASL compiler transforms the symbolic expressions into 2524the legacy ASL/AML equivalents at compile time. 2525 2526Full symbolic expressions are supported, along with the standard C 2527precedence and associativity rules. 2528 2529Full disassembler support for the symbolic expressions is provided, and 2530creates an automatic migration path for existing ASL code to ASL+ code 2531via the disassembly process. By default, the disassembler now emits ASL+ 2532code with symbolic expressions. An option (-dl) is provided to force the 2533disassembler to emit legacy ASL code if desired. 2534 2535Below is the complete list of the currently supported symbolic operators 2536with examples. See the iASL User Guide for additional information. 2537 2538 2539ASL+ Syntax Legacy ASL Equivalent 2540----------- --------------------- 2541 2542 // Math operators 2543 2544Z = X + Y Add (X, Y, Z) 2545Z = X - Y Subtract (X, Y, Z) 2546Z = X * Y Multiply (X, Y, Z) 2547Z = X / Y Divide (X, Y, , Z) 2548Z = X % Y Mod (X, Y, Z) 2549Z = X << Y ShiftLeft (X, Y, Z) 2550Z = X >> Y ShiftRight (X, Y, Z) 2551Z = X & Y And (X, Y, Z) 2552Z = X | Y Or (X, Y, Z) 2553Z = X ^ Y Xor (X, Y, Z) 2554Z = ~X Not (X, Z) 2555X++ Increment (X) 2556X-- Decrement (X) 2557 2558 // Logical operators 2559 2560(X == Y) LEqual (X, Y) 2561(X != Y) LNotEqual (X, Y) 2562(X < Y) LLess (X, Y) 2563(X > Y) LGreater (X, Y) 2564(X <= Y) LLessEqual (X, Y) 2565(X >= Y) LGreaterEqual (X, Y) 2566(X && Y) LAnd (X, Y) 2567(X || Y) LOr (X, Y) 2568(!X) LNot (X) 2569 2570 // Assignment and compound assignment operations 2571 2572X = Y Store (Y, X) 2573X += Y Add (X, Y, X) 2574X -= Y Subtract (X, Y, X) 2575X *= Y Multiply (X, Y, X) 2576X /= Y Divide (X, Y, , X) 2577X %= Y Mod (X, Y, X) 2578X <<= Y ShiftLeft (X, Y, X) 2579X >>= Y ShiftRight (X, Y, X) 2580X &= Y And (X, Y, X) 2581X |= Y Or (X, Y, X) 2582X ^= Y Xor (X, Y, X) 2583 2584 25853) ASL+ Examples: 2586----------------- 2587 2588Legacy ASL: 2589 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 2590 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 25910x03FB), 2592 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 2593 { 2594 And (MEMB, 0xFFFFFFF0, SRMB) 2595 Store (MEMB, Local2) 2596 Store (PDBM, Local1) 2597 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 2598 Store (SRMB, MEMB) 2599 Or (PDBM, 0x02, PDBM) 2600 } 2601 2602ASL+ version: 2603 If (((R510 & 0x03FB) == 0x02E0) || 2604 ((R520 & 0x03FB) == 0x02E0) || 2605 ((R530 & 0x03FB) == 0x02E0) || 2606 ((R540 & 0x03FB) == 0x02E0)) 2607 { 2608 SRMB = (MEMB & 0xFFFFFFF0) 2609 Local2 = MEMB 2610 Local1 = PDBM 2611 PDBM &= 0xFFFFFFFFFFFFFFF9 2612 MEMB = SRMB 2613 PDBM |= 0x02 2614 } 2615 2616Legacy ASL: 2617 Store (0x1234, Local1) 2618 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 2619 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 2620 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 2621 Store (Index (PKG1, 0x03), Local6) 2622 Store (Add (Local3, Local2), Debug) 2623 Add (Local1, 0x0F, Local2) 2624 Add (Local1, Multiply (Local2, Local3), Local2) 2625 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 2626 2627ASL+ version: 2628 Local1 = 0x1234 2629 Local3 = (((Local1 + TEST) + 0x20) * Local2) 2630 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 2631 Local3 = (Local1 + (TEST + (0x20 * Local2))) 2632 Local6 = Index (PKG1, 0x03) 2633 Debug = (Local3 + Local2) 2634 Local2 = (Local1 + 0x0F) 2635 Local2 = (Local1 + (Local2 * Local3)) 2636 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 2637 2638 2639---------------------------------------- 264026 September 2014. Summary of changes for version 20140926: 2641 26421) ACPICA kernel-resident subsystem: 2643 2644Updated the GPIO operation region handler interface (GeneralPurposeIo). 2645In order to support GPIO Connection objects with multiple pins, along 2646with the related Field objects, the following changes to the interface 2647have been made: The Address is now defined to be the offset in bits of 2648the field unit from the previous invocation of a Connection. It can be 2649viewed as a "Pin Number Index" into the connection resource descriptor. 2650The BitWidth is the exact bit width of the field. It is usually one bit, 2651but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 2652additional information and examples. 2653 2654GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 2655corresponding _Lxx/_Exx methods are disabled (they may have been enabled 2656by the firmware), so that they cannot fire until they are enabled via 2657AcpiUpdateAllGpes. Rafael J. Wysocki. 2658 2659Added a new return flag for the Event/GPE status interfaces -- 2660AcpiGetEventStatus and AcpiGetGpeStatus. The new 2661ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 2662GPE currently has a handler associated with it, and can thus actually 2663affect the system. Lv Zheng. 2664 2665Example Code and Data Size: These are the sizes for the OS-independent 2666acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2667debug version of the code includes the debug output trace mechanism and 2668has a much larger code and data size. 2669 2670 Current Release: 2671 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 2672 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 2673 Previous Release: 2674 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2675 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2676 26772) iASL Compiler/Disassembler and Tools: 2678 2679iASL: Fixed a memory allocation/free regression introduced in 20140828 2680that could cause the compiler to crash. This was introduced inadvertently 2681during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 26821113. 2683 2684iASL: Removed two error messages that have been found to create false 2685positives, until they can be fixed and fully validated (ACPICA BZ 1112): 26861) Illegal forward reference within a method 26872) Illegal reference across two methods 2688 2689iASL: Implemented a new option (-lm) to create a hardware mapping file 2690that summarizes all GPIO, I2C, SPI, and UART connections. This option 2691works for both the compiler and disassembler. See the iASL compiler user 2692guide for additional information and examples (section 6.4.6). 2693 2694AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 2695version 2. This corrects the AE_BAD_HEADER exception seen on systems with 2696a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 2697 2698AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 2699unless STDIN is actually a terminal. Assists with batch-mode processing. 2700ACPICA BZ 1114. 2701 2702Disassembler/AcpiHelp: Added another large group of recognized _HID 2703values. 2704 2705 2706---------------------------------------- 270728 August 2014. Summary of changes for version 20140828: 2708 27091) ACPICA kernel-resident subsystem: 2710 2711Fixed a problem related to the internal use of the Timer() operator where 2712a 64-bit divide could cause an attempted link to a double-precision math 2713library. This divide is not actually necessary, so the code was 2714restructured to eliminate it. Lv Zheng. 2715 2716ACPI 5.1: Added support for the runtime validation of the _DSD package 2717(similar to the iASL support). 2718 2719ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 2720SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 2721 2722Example Code and Data Size: These are the sizes for the OS-independent 2723acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2724debug version of the code includes the debug output trace mechanism and 2725has a much larger code and data size. 2726 2727 Current Release: 2728 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2729 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2730 Previous Release: 2731 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 2732 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 2733 27342) iASL Compiler/Disassembler and Tools: 2735 2736AcpiExec: Fixed a problem on unix systems where the original terminal 2737state was not always properly restored upon exit. Seen when using the -v 2738option. ACPICA BZ 1104. 2739 2740iASL: Fixed a problem with the validation of the ranges/length within the 2741Memory24 resource descriptor. There was a boundary condition when the 2742range was equal to the (length -1) caused by the fact that these values 2743are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 2744 2745Disassembler: Fixed a problem with the GpioInt descriptor interrupt 2746polarity 2747flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 2748is 2749now supported properly. 2750 2751ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 2752in the disassembler, data table compiler, and table template generator. 2753 2754iASL: Added a requirement for Device() objects that one of either a _HID 2755or _ADR must exist within the scope of a Device, as per the ACPI 2756specification. Remove a similar requirement that was incorrectly in place 2757for the _DSD object. 2758 2759iASL: Added error detection for illegal named references within control 2760methods that would cause runtime failures. Now trapped as errors are: 1) 2761References to objects within a non-parent control method. 2) Forward 2762references (within a method) -- for control methods, AML interpreters use 2763a one-pass parse of control methods. ACPICA BZ 1008. 2764 2765iASL: Added error checking for dependencies related to the _PSx power 2766methods. ACPICA BZ 1029. 27671) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 2768_PS3. 27692) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 2770scope. 2771 2772iASL and table compiler: Cleanup miscellaneous memory leaks by fully 2773deploying the existing object and string caches and adding new caches for 2774the table compiler. 2775 2776iASL: Split the huge parser source file into multiple subfiles to improve 2777manageability. Generation now requires the M4 macro preprocessor, which 2778is part of the Bison distribution on both unix and windows platforms. 2779 2780AcpiSrc: Fixed and removed all extraneous warnings generated during 2781entire ACPICA source code scan and/or conversion. 2782 2783 2784---------------------------------------- 2785 278624 July 2014. Summary of changes for version 20140724: 2787 2788The ACPI 5.1 specification has been released and is available at: 2789http://uefi.org/specs/access 2790 2791 27920) ACPI 5.1 support in ACPICA: 2793 2794ACPI 5.1 is fully supported in ACPICA as of this release. 2795 2796New predefined names. Support includes iASL and runtime ACPICA 2797validation. 2798 _CCA (Cache Coherency Attribute). 2799 _DSD (Device-Specific Data). David Box. 2800 2801Modifications to existing ACPI tables. Support includes headers, iASL 2802Data Table compiler, disassembler, and the template generator. 2803 FADT - New fields and flags. Graeme Gregory. 2804 GTDT - One new subtable and new fields. Tomasz Nowicki. 2805 MADT - Two new subtables. Tomasz Nowicki. 2806 PCCT - One new subtable. 2807 2808Miscellaneous. 2809 New notification type for System Resource Affinity change events. 2810 2811 28121) ACPICA kernel-resident subsystem: 2813 2814Fixed a regression introduced in 20140627 where a fault can happen during 2815the deletion of Alias AML namespace objects. The problem affected both 2816the core ACPICA and the ACPICA tools including iASL and AcpiExec. 2817 2818Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 2819simple mechanism to enable wake GPEs that have no associated handler or 2820control method. Rafael Wysocki. 2821 2822Updated the AcpiEnableGpe interface to disallow the enable if there is no 2823handler or control method associated with the particular GPE. This will 2824help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 2825 2826Updated GPE handling and dispatch by disabling the GPE before clearing 2827the status bit for edge-triggered GPEs. Lv Zheng. 2828 2829Added Timer() support to the AML Debug object. The current timer value is 2830now displayed with each invocation of (Store to) the debug object to 2831enable simple generation of execution times for AML code (method 2832execution for example.) ACPICA BZ 1093. 2833 2834Example Code and Data Size: These are the sizes for the OS-independent 2835acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2836debug version of the code includes the debug output trace mechanism and 2837has a much larger code and data size. 2838 2839 Current Release: 2840 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 2841 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 2842 Previous Release: 2843 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 2844 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 2845 2846 28472) iASL Compiler/Disassembler and Tools: 2848 2849Fixed an issue with the recently added local printf implementation, 2850concerning width/precision specifiers that could cause incorrect output. 2851Lv Zheng. ACPICA BZ 1094. 2852 2853Disassembler: Added support to detect buffers that contain UUIDs and 2854disassemble them to an invocation of the ToUUID operator. Also emit 2855commented descriptions of known ACPI-related UUIDs. 2856 2857AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 2858-u. Adds three new files. 2859 2860iASL: Update table compiler and disassembler for DMAR table changes that 2861were introduced in September 2013. With assistance by David Woodhouse. 2862 2863---------------------------------------- 286427 June 2014. Summary of changes for version 20140627: 2865 28661) ACPICA kernel-resident subsystem: 2867 2868Formatted Output: Implemented local versions of standard formatted output 2869utilities such as printf, etc. Over time, it has been discovered that 2870there are in fact many portability issues with printf, and the addition 2871of this feature will fix/prevent these issues once and for all. Some 2872known issues are summarized below: 2873 28741) Output of 64-bit values is not portable. For example, UINT64 is %ull 2875for the Linux kernel and is %uI64 for some MSVC versions. 28762) Invoking printf consistently in a manner that is portable across both 287732-bit and 64-bit platforms is difficult at best in many situations. 28783) The output format for pointers varies from system to system (leading 2879zeros especially), and leads to inconsistent output from ACPICA across 2880platforms. 28814) Certain platform-specific printf formats may conflict with ACPICA use. 28825) If there is no local C library available, ACPICA now has local support 2883for printf. 2884 2885-- To address these printf issues in a complete manner, ACPICA now 2886directly implements a small subset of printf format specifiers, only 2887those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 2888 2889Implemented support for ACPICA generation within the EFI environment. 2890Initially, the AcpiDump utility is supported in the UEFI shell 2891environment. Lv Zheng. 2892 2893Added a new external interface, AcpiLogError, to improve ACPICA 2894portability. This allows the host to redirect error messages from the 2895ACPICA utilities. Lv Zheng. 2896 2897Added and deployed new OSL file I/O interfaces to improve ACPICA 2898portability: 2899 AcpiOsOpenFile 2900 AcpiOsCloseFile 2901 AcpiOsReadFile 2902 AcpiOsWriteFile 2903 AcpiOsGetFileOffset 2904 AcpiOsSetFileOffset 2905There are C library implementations of these functions in the new file 2906service_layers/oslibcfs.c -- however, the functions can be implemented by 2907the local host in any way necessary. Lv Zheng. 2908 2909Implemented a mechanism to disable/enable ACPI table checksum validation 2910at runtime. This can be useful when loading tables very early during OS 2911initialization when it may not be possible to map the entire table in 2912order to compute the checksum. Lv Zheng. 2913 2914Fixed a buffer allocation issue for the Generic Serial Bus support. 2915Originally, a fixed buffer length was used. This change allows for 2916variable-length buffers based upon the protocol indicated by the field 2917access attributes. Reported by Lan Tianyu. Lv Zheng. 2918 2919Fixed a problem where an object detached from a namespace node was not 2920properly terminated/cleared and could cause a circular list problem if 2921reattached. ACPICA BZ 1063. David Box. 2922 2923Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 2924 2925Fixed a possible memory leak in an error return path within the function 2926AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 2927 2928Example Code and Data Size: These are the sizes for the OS-independent 2929acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2930debug version of the code includes the debug output trace mechanism and 2931has a much larger code and data size. 2932 2933 Current Release: 2934 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 2935 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 2936 Previous Release: 2937 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 2938 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 2939 2940 29412) iASL Compiler/Disassembler and Tools: 2942 2943Disassembler: Add dump of ASCII equivalent text within a comment at the 2944end of each line of the output for the Buffer() ASL operator. 2945 2946AcpiDump: Miscellaneous changes: 2947 Fixed repetitive table dump in -n mode. 2948 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 2949the ACPI 2.0 GUID fails. 2950 2951iASL: Fixed a problem where the compiler could fault if incorrectly given 2952an acpidump output file as input. ACPICA BZ 1088. David Box. 2953 2954AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 2955they are invoked without any arguments. 2956 2957Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 29581086. Colin Ian King. 2959 2960Disassembler: Cleaned up a block of code that extracts a parent Op 2961object. Added a comment that explains that the parent is guaranteed to be 2962valid in this case. ACPICA BZ 1069. 2963 2964 2965---------------------------------------- 296624 April 2014. Summary of changes for version 20140424: 2967 29681) ACPICA kernel-resident subsystem: 2969 2970Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 2971Some of these tables are known to contain a trailing NULL entry. Lv 2972Zheng. 2973 2974Removed an extraneous error message for the case where there are a large 2975number of system GPEs (> 124). This was the "32-bit FADT register is too 2976long to convert to GAS struct" message, which is irrelevant for GPEs 2977since the GPEx_BLK_LEN fields of the FADT are always used instead of the 2978(limited capacity) GAS bit length. Also, several changes to ensure proper 2979support for GPE numbers > 255, where some "GPE number" fields were 8-bits 2980internally. 2981 2982Implemented and deployed additional configuration support for the public 2983ACPICA external interfaces. Entire classes of interfaces can now be 2984easily modified or configured out, replaced by stubbed inline functions 2985by default. Lv Zheng. 2986 2987Moved all public ACPICA runtime configuration globals to the public 2988ACPICA external interface file for convenience. Also, removed some 2989obsolete/unused globals. See the file acpixf.h. Lv Zheng. 2990 2991Documentation: Added a new section to the ACPICA reference describing the 2992maximum number of GPEs that can be supported by the FADT-defined GPEs in 2993block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 2994reference. 2995 2996Example Code and Data Size: These are the sizes for the OS-independent 2997acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2998debug version of the code includes the debug output trace mechanism and 2999has a much larger code and data size. 3000 3001 Current Release: 3002 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3003 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3004 Previous Release: 3005 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3006 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3007 3008 30092) iASL Compiler/Disassembler and Tools: 3010 3011iASL and disassembler: Add full support for the LPIT table (Low Power 3012Idle Table). Includes support in the disassembler, data table compiler, 3013and template generator. 3014 3015AcpiDump utility: 30161) Add option to force the use of the RSDT (over the XSDT). 30172) Improve validation of the RSDP signature (use 8 chars instead of 4). 3018 3019iASL: Add check for predefined packages that are too large. For 3020predefined names that contain subpackages, check if each subpackage is 3021too large. (Check for too small already exists.) 3022 3023Debugger: Updated the GPE command (which simulates a GPE by executing the 3024GPE code paths in ACPICA). The GPE device is now optional, and defaults 3025to the GPE 0/1 FADT-defined blocks. 3026 3027Unix application OSL: Update line-editing support. Add additional error 3028checking and take care not to reset terminal attributes on exit if they 3029were never set. This should help guarantee that the terminal is always 3030left in the previous state on program exit. 3031 3032 3033---------------------------------------- 303425 March 2014. Summary of changes for version 20140325: 3035 30361) ACPICA kernel-resident subsystem: 3037 3038Updated the auto-serialize feature for control methods. This feature 3039automatically serializes all methods that create named objects in order 3040to prevent runtime errors. The update adds support to ignore the 3041currently executing AML SyncLevel when invoking such a method, in order 3042to prevent disruption of any existing SyncLevel priorities that may exist 3043in the AML code. Although the use of SyncLevels is relatively rare, this 3044change fixes a regression where an AE_AML_MUTEX_ORDER exception can 3045appear on some machines starting with the 20140214 release. 3046 3047Added a new external interface to allow the host to install ACPI tables 3048very early, before the namespace is even created. AcpiInstallTable gives 3049the host additional flexibility for ACPI table management. Tables can be 3050installed directly by the host as if they had originally appeared in the 3051XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 3052(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 3053with additional internal restructuring and cleanup. See the ACPICA 3054Reference for interface details. Lv Zheng. 3055 3056Added validation of the checksum for all incoming dynamically loaded 3057tables (via external interfaces or via AML Load/LoadTable operators). Lv 3058Zheng. 3059 3060Updated the use of the AcpiOsWaitEventsComplete interface during Notify 3061and GPE handler removal. Restructured calls to eliminate possible race 3062conditions. Lv Zheng. 3063 3064Added a warning for the use/execution of the ASL/AML Unload (table) 3065operator. This will help detect and identify machines that use this 3066operator if and when it is ever used. This operator has never been seen 3067in the field and the usage model and possible side-effects of the drastic 3068runtime action of a full table removal are unknown. 3069 3070Reverted the use of #pragma push/pop which was introduced in the 20140214 3071release. It appears that push and pop are not implemented by enough 3072compilers to make the use of this feature feasible for ACPICA at this 3073time. However, these operators may be deployed in a future ACPICA 3074release. 3075 3076Added the missing EXPORT_SYMBOL macros for the install and remove SCI 3077handler interfaces. 3078 3079Source code generation: 30801) Disabled the use of the "strchr" macro for the gcc-specific 3081generation. For some versions of gcc, this macro can periodically expose 3082a compiler bug which in turn causes compile-time error(s). 30832) Added support for PPC64 compilation. Colin Ian King. 3084 3085Example Code and Data Size: These are the sizes for the OS-independent 3086acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3087debug version of the code includes the debug output trace mechanism and 3088has a much larger code and data size. 3089 3090 Current Release: 3091 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3092 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3093 Previous Release: 3094 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3095 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3096 3097 30982) iASL Compiler/Disassembler and Tools: 3099 3100Disassembler: Added several new features to improve the readability of 3101the resulting ASL code. Extra information is emitted within comment 3102fields in the ASL code: 31031) Known _HID/_CID values are decoded to descriptive text. 31042) Standard values for the Notify() operator are decoded to descriptive 3105text. 31063) Target operands are expanded to full pathnames (in a comment) when 3107possible. 3108 3109Disassembler: Miscellaneous updates for extern() handling: 31101) Abort compiler if file specified by -fe option does not exist. 31112) Silence unnecessary warnings about argument count mismatches. 31123) Update warning messages concerning unresolved method externals. 31134) Emit "UnknownObj" keyword for externals whose type cannot be 3114determined. 3115 3116AcpiHelp utility: 31171) Added the -a option to display both the ASL syntax and the AML 3118encoding for an input ASL operator. This effectively displays all known 3119information about an ASL operator with one AcpiHelp invocation. 31202) Added substring match support (similar to a wildcard) for the -i 3121(_HID/PNP IDs) option. 3122 3123iASL/Disassembler: Since this tool does not yet support execution on big- 3124endian machines, added detection of endianness and an error message if 3125execution is attempted on big-endian. Support for big-endian within iASL 3126is a feature that is on the ACPICA to-be-done list. 3127 3128AcpiBin utility: 31291) Remove option to extract binary files from an acpidump; this function 3130is made obsolete by the AcpiXtract utility. 31312) General cleanup of open files and allocated buffers. 3132 3133 3134---------------------------------------- 313514 February 2014. Summary of changes for version 20140214: 3136 31371) ACPICA kernel-resident subsystem: 3138 3139Implemented a new mechanism to proactively prevent problems with ill- 3140behaved reentrant control methods that create named ACPI objects. This 3141behavior is illegal as per the ACPI specification, but is nonetheless 3142frequently seen in the field. Previously, this could lead to an 3143AE_ALREADY_EXISTS exception if the method was actually entered by more 3144than one thread. This new mechanism detects such methods at table load 3145time and marks them "serialized" to prevent reentrancy. A new global 3146option, AcpiGbl_AutoSerializeMethods, has been added to disable this 3147feature if desired. This mechanism and global option obsoletes and 3148supersedes the previous AcpiGbl_SerializeAllMethods option. 3149 3150Added the "Windows 2013" string to the _OSI support. ACPICA will now 3151respond TRUE to _OSI queries with this string. It is the stated policy of 3152ACPICA to add new strings to the _OSI support as soon as possible after 3153they are defined. See the full ACPICA _OSI policy which has been added to 3154the utilities/utosi.c file. 3155 3156Hardened/updated the _PRT return value auto-repair code: 31571) Do not abort the repair on a single subpackage failure, continue to 3158check all subpackages. 31592) Add check for the minimum subpackage length (4). 31603) Properly handle extraneous NULL package elements. 3161 3162Added support to avoid the possibility of infinite loops when traversing 3163object linked lists. Never allow an infinite loop, even in the face of 3164corrupted object lists. 3165 3166ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 3167pack(pop) directives to ensure that the ACPICA headers are independent of 3168compiler settings or other host headers. 3169 3170Example Code and Data Size: These are the sizes for the OS-independent 3171acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3172debug version of the code includes the debug output trace mechanism and 3173has a much larger code and data size. 3174 3175 Current Release: 3176 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3177 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3178 Previous Release: 3179 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 3180 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 3181 3182 31832) iASL Compiler/Disassembler and Tools: 3184 3185iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 3186first reserved field was incorrectly forced to have a value of zero. This 3187change correctly forces the field to have a value of one. ACPICA BZ 1081. 3188 3189Debugger: Added missing support for the "Extra" and "Data" subobjects 3190when displaying object data. 3191 3192Debugger: Added support to display entire object linked lists when 3193displaying object data. 3194 3195iASL: Removed the obsolete -g option to obtain ACPI tables from the 3196Windows registry. This feature has been superseded by the acpidump 3197utility. 3198 3199 3200---------------------------------------- 320114 January 2014. Summary of changes for version 20140114: 3202 32031) ACPICA kernel-resident subsystem: 3204 3205Updated all ACPICA copyrights and signons to 2014. Added the 2014 3206copyright to all module headers and signons, including the standard Linux 3207header. This affects virtually every file in the ACPICA core subsystem, 3208iASL compiler, all ACPICA utilities, and the test suites. 3209 3210Improved parameter validation for AcpiInstallGpeBlock. Added the 3211following checks: 32121) The incoming device handle refers to type ACPI_TYPE_DEVICE. 32132) There is not already a GPE block attached to the device. 3214Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 3215device. 3216 3217Correctly support "references" in the ACPI_OBJECT. This change fixes the 3218support to allow references (namespace nodes) to be passed as arguments 3219to control methods via the evaluate object interface. This is probably 3220most useful for testing purposes, however. 3221 3222Improved support for 32/64 bit physical addresses in printf()-like 3223output. This change improves the support for physical addresses in printf 3224debug statements and other output on both 32-bit and 64-bit hosts. It 3225consistently outputs the appropriate number of bytes for each host. The 3226%p specifier is unsatisfactory since it does not emit uniform output on 3227all hosts/clib implementations (on some, leading zeros are not supported, 3228leading to difficult-to-read output). 3229 3230Example Code and Data Size: These are the sizes for the OS-independent 3231acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3232debug version of the code includes the debug output trace mechanism and 3233has a much larger code and data size. 3234 3235 Current Release: 3236 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 3237 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 3238 Previous Release: 3239 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 3240 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 3241 3242 32432) iASL Compiler/Disassembler and Tools: 3244 3245iASL: Fix a possible fault when using the Connection() operator. Fixes a 3246problem if the parent Field definition for the Connection operator refers 3247to an operation region that does not exist. ACPICA BZ 1064. 3248 3249AcpiExec: Load of local test tables is now optional. The utility has the 3250capability to load some various tables to test features of ACPICA. 3251However, there are enough of them that the output of the utility became 3252confusing. With this change, only the required local tables are displayed 3253(RSDP, XSDT, etc.) along with the actual tables loaded via the command 3254line specification. This makes the default output simler and easier to 3255understand. The -el command line option restores the original behavior 3256for testing purposes. 3257 3258AcpiExec: Added support for overlapping operation regions. This change 3259expands the simulation of operation regions by supporting regions that 3260overlap within the given address space. Supports SystemMemory and 3261SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 3262 3263AcpiExec: Added region handler support for PCI_Config and EC spaces. This 3264allows AcpiExec to simulate these address spaces, similar to the current 3265support for SystemMemory and SystemIO. 3266 3267Debugger: Added new command to read/write/compare all namespace objects. 3268The command "test objects" will exercise the entire namespace by writing 3269new values to each data object, and ensuring that the write was 3270successful. The original value is then restored and verified. 3271 3272Debugger: Added the "test predefined" command. This change makes this 3273test public and puts it under the new "test" command. The test executes 3274each and every predefined name within the current namespace. 3275 3276 3277---------------------------------------- 327818 December 2013. Summary of changes for version 20131218: 3279 3280Global note: The ACPI 5.0A specification was released this month. There 3281are no changes needed for ACPICA since this release of ACPI is an 3282errata/clarification release. The specification is available at 3283acpi.info. 3284 3285 32861) ACPICA kernel-resident subsystem: 3287 3288Added validation of the XSDT root table if it is present. Some older 3289platforms contain an XSDT that is ill-formed or otherwise invalid (such 3290as containing some or all entries that are NULL pointers). This change 3291adds a new function to validate the XSDT before actually using it. If the 3292XSDT is found to be invalid, ACPICA will now automatically fall back to 3293using the RSDT instead. Original implementation by Zhao Yakui. Ported to 3294ACPICA and enhanced by Lv Zheng and Bob Moore. 3295 3296Added a runtime option to ignore the XSDT and force the use of the RSDT. 3297This change adds a runtime option that will force ACPICA to use the RSDT 3298instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 3299requires that an XSDT be used instead of the RSDT, the XSDT has been 3300found to be corrupt or ill-formed on some machines. Lv Zheng. 3301 3302Added a runtime option to favor 32-bit FADT register addresses over the 330364-bit addresses. This change adds an option to favor 32-bit FADT 3304addresses when there is a conflict between the 32-bit and 64-bit versions 3305of the same register. The default behavior is to use the 64-bit version 3306in accordance with the ACPI specification. This can now be overridden via 3307the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 3308 3309During the change above, the internal "Convert FADT" and "Verify FADT" 3310functions have been merged to simplify the code, making it easier to 3311understand and maintain. ACPICA BZ 933. 3312 3313Improve exception reporting and handling for GPE block installation. 3314Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 3315status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 3316 3317Added helper macros to extract bus/segment numbers from the HEST table. 3318This change adds two macros to extract the encoded bus and segment 3319numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 3320Betty Dall <betty.dall@hp.com> 3321 3322Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 3323by ACPICA. It is not a public macro, so it should have no effect on 3324existing OSV code. Lv Zheng. 3325 3326Example Code and Data Size: These are the sizes for the OS-independent 3327acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3328debug version of the code includes the debug output trace mechanism and 3329has a much larger code and data size. 3330 3331 Current Release: 3332 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 3333 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 3334 Previous Release: 3335 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 3336 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 3337 3338 33392) iASL Compiler/Disassembler and Tools: 3340 3341Disassembler: Improved pathname support for emitted External() 3342statements. This change adds full pathname support for external names 3343that have been resolved internally by the inclusion of additional ACPI 3344tables (via the iASL -e option). Without this change, the disassembler 3345can emit multiple externals for the same object, or it become confused 3346when the Scope() operator is used on an external object. Overall, greatly 3347improves the ability to actually recompile the emitted ASL code when 3348objects a referenced across multiple ACPI tables. Reported by Michael 3349Tsirkin (mst@redhat.com). 3350 3351Tests/ASLTS: Updated functional control suite to execute with no errors. 3352David Box. Fixed several errors related to the testing of the interpreter 3353slack mode. Lv Zheng. 3354 3355iASL: Added support to detect names that are declared within a control 3356method, but are unused (these are temporary names that are only valid 3357during the time the method is executing). A remark is issued for these 3358cases. ACPICA BZ 1022. 3359 3360iASL: Added full support for the DBG2 table. Adds full disassembler, 3361table compiler, and template generator support for the DBG2 table (Debug 3362Port 2 table). 3363 3364iASL: Added full support for the PCCT table, update the table definition. 3365Updates the PCCT table definition in the actbl3.h header and adds table 3366compiler and template generator support. 3367 3368iASL: Added an option to emit only error messages (no warnings/remarks). 3369The -ve option will enable only error messages, warnings and remarks are 3370suppressed. This can simplify debugging when only the errors are 3371important, such as when an ACPI table is disassembled and there are many 3372warnings and remarks -- but only the actual errors are of real interest. 3373 3374Example ACPICA code (source/tools/examples): Updated the example code so 3375that it builds to an actual working program, not just example code. Added 3376ACPI tables and execution of an example control method in the DSDT. Added 3377makefile support for Unix generation. 3378 3379 3380---------------------------------------- 338115 November 2013. Summary of changes for version 20131115: 3382 3383This release is available at https://acpica.org/downloads 3384 3385 33861) ACPICA kernel-resident subsystem: 3387 3388Resource Manager: Fixed loop termination for the "get AML length" 3389function. The loop previously had an error termination on a NULL resource 3390pointer, which can never happen since the loop simply increments a valid 3391resource pointer. This fix changes the loop to terminate with an error on 3392an invalid end-of-buffer condition. The problem can be seen as an 3393infinite loop by callers to AcpiSetCurrentResources with an invalid or 3394corrupted resource descriptor, or a resource descriptor that is missing 3395an END_TAG descriptor. Reported by Dan Carpenter 3396<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 3397 3398Table unload and ACPICA termination: Delete all attached data objects 3399during namespace node deletion. This fix updates namespace node deletion 3400to delete the entire list of attached objects (attached via 3401AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 34021024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 3403 3404ACPICA termination: Added support to delete all objects attached to the 3405root namespace node. This fix deletes any and all objects that have been 3406attached to the root node via AcpiAttachData. Previously, none of these 3407objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 3408 3409Debug output: Do not emit the function nesting level for the in-kernel 3410build. The nesting level is really only useful during a single-thread 3411execution. Therefore, only enable this output for the AcpiExec utility. 3412Also, only emit the thread ID when executing under AcpiExec (Context 3413switches are still always detected and a message is emitted). ACPICA BZ 3414972. 3415 3416Example Code and Data Size: These are the sizes for the OS-independent 3417acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3418debug version of the code includes the debug output trace mechanism and 3419has a much larger code and data size. 3420 3421 Current Release: 3422 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 3423 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 3424 Previous Release: 3425 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 3426 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 3427 3428 34292) iASL Compiler/Disassembler and Tools: 3430 3431AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 3432correct portable POSIX header for terminal control functions. 3433 3434Disassembler: Fixed control method invocation issues related to the use 3435of the CondRefOf() operator. The problem is seen in the disassembly where 3436control method invocations may not be disassembled properly if the 3437control method name has been used previously as an argument to CondRefOf. 3438The solution is to not attempt to emit an external declaration for the 3439CondRefOf target (it is not necessary in the first place). This prevents 3440disassembler object type confusion. ACPICA BZ 988. 3441 3442Unix Makefiles: Added an option to disable compiler optimizations and the 3443_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 3444with optimizations (reportedly, gcc 4.4 for example). This change adds a 3445command line option for make (NOOPT) that disables all compiler 3446optimizations and the _FORTIFY_SOURCE compiler flag. The default 3447optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 34481034. Lv Zheng, Bob Moore. 3449 3450Tests/ASLTS: Added options to specify individual test cases and modes. 3451This allows testers running aslts.sh to optionally specify individual 3452test modes and test cases. Also added an option to disable the forced 3453generation of the ACPICA tools from source if desired. Lv Zheng. 3454 3455---------------------------------------- 345627 September 2013. Summary of changes for version 20130927: 3457 3458This release is available at https://acpica.org/downloads 3459 3460 34611) ACPICA kernel-resident subsystem: 3462 3463Fixed a problem with store operations to reference objects. This change 3464fixes a problem where a Store operation to an ArgX object that contained 3465a 3466reference to a field object did not complete the automatic dereference 3467and 3468then write to the actual field object. Instead, the object type of the 3469field object was inadvertently changed to match the type of the source 3470operand. The new behavior will actually write to the field object (buffer 3471field or field unit), thus matching the correct ACPI-defined behavior. 3472 3473Implemented support to allow the host to redefine individual OSL 3474prototypes. This change enables the host to redefine OSL prototypes found 3475in the acpiosxf.h file. This allows the host to implement OSL interfaces 3476with a macro or inlined function. Further, it allows the host to add any 3477additional required modifiers such as __iomem, __init, __exit, etc., as 3478necessary on a per-interface basis. Enables maximum flexibility for the 3479OSL interfaces. Lv Zheng. 3480 3481Hardcoded the access width for the FADT-defined reset register. The ACPI 3482specification requires the reset register width to be 8 bits. ACPICA now 3483hardcodes the width to 8 and ignores the FADT width value. This provides 3484compatibility with other ACPI implementations that have allowed BIOS code 3485with bad register width values to go unnoticed. Matthew Garett, Bob 3486Moore, 3487Lv Zheng. 3488 3489Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 3490used 3491in the OSL header (acpiosxf). The change modifies the position of this 3492macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 3493build issues if the OSL defines the implementation of the interface to be 3494an inline stub function. Lv Zheng. 3495 3496Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 3497initialization interfaces. This change adds a new macro for the main init 3498and terminate external interfaces in order to support hosts that require 3499additional or different processing for these functions. Changed from 3500ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 3501Zheng, Bob Moore. 3502 3503Cleaned up the memory allocation macros for configurability. In the 3504common 3505case, the ACPI_ALLOCATE and related macros now resolve directly to their 3506respective AcpiOs* OSL interfaces. Two options: 35071) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 3508default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 35092) For AcpiExec (and for debugging), the macros can optionally be 3510resolved 3511to the local ACPICA interfaces that track each allocation (local tracking 3512is used to immediately detect memory leaks). 3513Lv Zheng. 3514 3515Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 3516to predefine this macro to either TRUE or FALSE during the system build. 3517 3518Replaced __FUNCTION_ with __func__ in the gcc-specific header. 3519 3520Example Code and Data Size: These are the sizes for the OS-independent 3521acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3522debug version of the code includes the debug output trace mechanism and 3523has a much larger code and data size. 3524 3525 Current Release: 3526 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 3527 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 3528 Previous Release: 3529 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 3530 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3531 3532 35332) iASL Compiler/Disassembler and Tools: 3534 3535iASL: Implemented wildcard support for the -e option. This simplifies use 3536when there are many SSDTs that must be included to resolve external 3537method 3538declarations. ACPICA BZ 1041. Example: 3539 iasl -e ssdt*.dat -d dsdt.dat 3540 3541AcpiExec: Add history/line-editing for Unix/Linux systems. This change 3542adds a portable module that implements full history and limited line 3543editing for Unix and Linux systems. It does not use readline() due to 3544portability issues. Instead it uses the POSIX termio interface to put the 3545terminal in raw input mode so that the various special keys can be 3546trapped 3547(such as up/down-arrow for history support and left/right-arrow for line 3548editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 3549 3550AcpiXtract: Add support to handle (ignore) "empty" lines containing only 3551one or more spaces. This provides compatible with early or different 3552versions of the AcpiDump utility. ACPICA BZ 1044. 3553 3554AcpiDump: Do not ignore tables that contain only an ACPI table header. 3555Apparently, some BIOSs create SSDTs that contain an ACPI table header but 3556no other data. This change adds support to dump these tables. Any tables 3557shorter than the length of an ACPI table header remain in error (an error 3558message is emitted). Reported by Yi Li. 3559 3560Debugger: Echo actual command along with the "unknown command" message. 3561 3562---------------------------------------- 356323 August 2013. Summary of changes for version 20130823: 3564 35651) ACPICA kernel-resident subsystem: 3566 3567Implemented support for host-installed System Control Interrupt (SCI) 3568handlers. Certain ACPI functionality requires the host to handle raw 3569SCIs. For example, the "SCI Doorbell" that is defined for memory power 3570state support requires the host device driver to handle SCIs to examine 3571if the doorbell has been activated. Multiple SCI handlers can be 3572installed to allow for future expansion. New external interfaces are 3573AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 3574details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 3575 3576Operation region support: Never locally free the handler "context" 3577pointer. This change removes some dangerous code that attempts to free 3578the handler context pointer in some (rare) circumstances. The owner of 3579the handler owns this pointer and the ACPICA code should never touch it. 3580Although not seen to be an issue in any kernel, it did show up as a 3581problem (fault) under AcpiExec. Also, set the internal storage field for 3582the context pointer to zero when the region is deactivated, simply for 3583sanity. David Box. ACPICA BZ 1039. 3584 3585AcpiRead: On error, do not modify the return value target location. If an 3586error happens in the middle of a split 32/32 64-bit I/O operation, do not 3587modify the target of the return value pointer. Makes the code consistent 3588with the rest of ACPICA. Bjorn Helgaas. 3589 3590Example Code and Data Size: These are the sizes for the OS-independent 3591acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3592debug version of the code includes the debug output trace mechanism and 3593has a much larger code and data size. 3594 3595 Current Release: 3596 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 3597 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3598 Previous Release: 3599 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 3600 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 3601 3602 36032) iASL Compiler/Disassembler and Tools: 3604 3605AcpiDump: Implemented several new features and fixed some problems: 36061) Added support to dump the RSDP, RSDT, and XSDT tables. 36072) Added support for multiple table instances (SSDT, UEFI). 36083) Added option to dump "customized" (overridden) tables (-c). 36094) Fixed a problem where some table filenames were improperly 3610constructed. 36115) Improved some error messages, removed some unnecessary messages. 3612 3613iASL: Implemented additional support for disassembly of ACPI tables that 3614contain invocations of external control methods. The -fe<file> option 3615allows the import of a file that specifies the external methods along 3616with the required number of arguments for each -- allowing for the 3617correct disassembly of the table. This is a workaround for a limitation 3618of AML code where the disassembler often cannot determine the number of 3619arguments required for an external control method and generates incorrect 3620ASL code. See the iASL reference for details. ACPICA BZ 1030. 3621 3622Debugger: Implemented a new command (paths) that displays the full 3623pathnames (namepaths) and object types of all objects in the namespace. 3624This is an alternative to the namespace command. 3625 3626Debugger: Implemented a new command (sci) that invokes the SCI dispatch 3627mechanism and any installed handlers. 3628 3629iASL: Fixed a possible segfault for "too many parent prefixes" condition. 3630This can occur if there are too many parent prefixes in a namepath (for 3631example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 3632 3633Application OSLs: Set the return value for the PCI read functions. These 3634functions simply return AE_OK, but should set the return value to zero 3635also. This change implements this. ACPICA BZ 1038. 3636 3637Debugger: Prevent possible command line buffer overflow. Increase the 3638size of a couple of the debugger line buffers, and ensure that overflow 3639cannot happen. ACPICA BZ 1037. 3640 3641iASL: Changed to abort immediately on serious errors during the parsing 3642phase. Due to the nature of ASL, there is no point in attempting to 3643compile these types of errors, and they typically end up causing a 3644cascade of hundreds of errors which obscure the original problem. 3645 3646---------------------------------------- 364725 July 2013. Summary of changes for version 20130725: 3648 36491) ACPICA kernel-resident subsystem: 3650 3651Fixed a problem with the DerefOf operator where references to FieldUnits 3652and BufferFields incorrectly returned the parent object, not the actual 3653value of the object. After this change, a dereference of a FieldUnit 3654reference results in a read operation on the field to get the value, and 3655likewise, the appropriate BufferField value is extracted from the target 3656buffer. 3657 3658Fixed a problem where the _WAK method could cause a fault under these 3659circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 3660method returned no value. The problem is rarely seen because most kernels 3661run ACPICA in slack mode. 3662 3663For the DerefOf operator, a fatal error now results if an attempt is made 3664to dereference a reference (created by the Index operator) to a NULL 3665package element. Provides compatibility with other ACPI implementations, 3666and this behavior will be added to a future version of the ACPI 3667specification. 3668 3669The ACPI Power Management Timer (defined in the FADT) is now optional. 3670This provides compatibility with other ACPI implementations and will 3671appear in the next version of the ACPI specification. If there is no PM 3672Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 3673zero in the FADT indicates no PM timer. 3674 3675Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 3676allows the host to globally enable/disable all vendor strings, all 3677feature strings, or both. Intended to be primarily used for debugging 3678purposes only. Lv Zheng. 3679 3680Expose the collected _OSI data to the host via a global variable. This 3681data tracks the highest level vendor ID that has been invoked by the BIOS 3682so that the host (and potentially ACPICA itself) can change behaviors 3683based upon the age of the BIOS. 3684 3685Example Code and Data Size: These are the sizes for the OS-independent 3686acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3687debug version of the code includes the debug output trace mechanism and 3688has a much larger code and data size. 3689 3690 Current Release: 3691 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 3692 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3693 Previous Release: 3694 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 3695 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 3696 3697 36982) iASL Compiler/Disassembler and Tools: 3699 3700iASL: Created the following enhancements for the -so option (create 3701offset table): 37021)Add offsets for the last nameseg in each namepath for every supported 3703object type 37042)Add support for Processor, Device, Thermal Zone, and Scope objects 37053)Add the actual AML opcode for the parent object of every supported 3706object type 37074)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 3708 3709Disassembler: Emit all unresolved external symbols in a single block. 3710These are external references to control methods that could not be 3711resolved, and thus, the disassembler had to make a guess at the number of 3712arguments to parse. 3713 3714iASL: The argument to the -T option (create table template) is now 3715optional. If not specified, the default table is a DSDT, typically the 3716most common case. 3717 3718---------------------------------------- 371926 June 2013. Summary of changes for version 20130626: 3720 37211) ACPICA kernel-resident subsystem: 3722 3723Fixed an issue with runtime repair of the _CST object. Null or invalid 3724elements were not always removed properly. Lv Zheng. 3725 3726Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 3727FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 3728the maximum number of GPEs is 1016. Use of multiple GPE block devices 3729makes the system-wide number of GPEs essentially unlimited. 3730 3731Example Code and Data Size: These are the sizes for the OS-independent 3732acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3733debug version of the code includes the debug output trace mechanism and 3734has a much larger code and data size. 3735 3736 Current Release: 3737 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 3738 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 3739 Previous Release: 3740 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 3741 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 3742 3743 37442) iASL Compiler/Disassembler and Tools: 3745 3746Portable AcpiDump: Implemented full support for the Linux and FreeBSD 3747hosts. Now supports Linux, FreeBSD, and Windows. 3748 3749Disassembler: Added some missing types for the HEST and EINJ tables: "Set 3750Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 3751 3752iASL/Preprocessor: Implemented full support for nested 3753#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 3754 3755Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 3756max. The original purpose of this constraint was to limit the amount of 3757debug output. However, the string function in question (UtPrintString) is 3758now used for the disassembler also, where 256 bytes is insufficient. 3759Reported by RehabMan@GitHub. 3760 3761iASL/DataTables: Fixed some problems and issues with compilation of DMAR 3762tables. ACPICA BZ 999. Lv Zheng. 3763 3764iASL: Fixed a couple of error exit issues that could result in a "Could 3765not delete <file>" message during ASL compilation. 3766 3767AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 3768the actual signatures for these tables are "FACP" and "APIC", 3769respectively. 3770 3771AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 3772tables are allowed to have multiple instances. 3773 3774---------------------------------------- 377517 May 2013. Summary of changes for version 20130517: 3776 37771) ACPICA kernel-resident subsystem: 3778 3779Fixed a regression introduced in version 20130328 for _INI methods. This 3780change fixes a problem introduced in 20130328 where _INI methods are no 3781longer executed properly because of a memory block that was not 3782initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 3783<tomasz.nowicki@linaro.org>. 3784 3785Fixed a possible problem with the new extended sleep registers in the 3786ACPI 37875.0 FADT. Do not use these registers (even if populated) unless the HW- 3788reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 37891020. Lv Zheng. 3790 3791Implemented return value repair code for _CST predefined objects: Sort 3792the 3793list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 3794 3795Implemented a debug-only option to disable loading of SSDTs from the 3796RSDT/XSDT during ACPICA initialization. This can be useful for debugging 3797ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 3798acglobal.h - ACPICA BZ 1005. Lv Zheng. 3799 3800Fixed some issues in the ACPICA initialization and termination code: 3801Tomasz Nowicki <tomasz.nowicki@linaro.org> 38021) Clear events initialized flag upon event component termination. ACPICA 3803BZ 1013. 38042) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 38053) Delete global lock pending lock during termination. ACPICA BZ 1012. 38064) Clear debug buffer global on termination to prevent possible multiple 3807delete. ACPICA BZ 1010. 3808 3809Standardized all switch() blocks across the entire source base. After 3810many 3811years, different formatting for switch() had crept in. This change makes 3812the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 3813 3814Split some files to enhance ACPICA modularity and configurability: 38151) Split buffer dump routines into utilities/utbuffer.c 38162) Split internal error message routines into utilities/uterror.c 38173) Split table print utilities into tables/tbprint.c 38184) Split iASL command-line option processing into asloptions.c 3819 3820Makefile enhancements: 38211) Support for all new files above. 38222) Abort make on errors from any subcomponent. Chao Guan. 38233) Add build support for Apple Mac OS X. Liang Qi. 3824 3825Example Code and Data Size: These are the sizes for the OS-independent 3826acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3827debug version of the code includes the debug output trace mechanism and 3828has a much larger code and data size. 3829 3830 Current Release: 3831 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 3832 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 3833 Previous Release: 3834 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 3835 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 3836 3837 38382) iASL Compiler/Disassembler and Tools: 3839 3840New utility: Implemented an easily portable version of the acpidump 3841utility to extract ACPI tables from the system (or a file) in an ASCII 3842hex 3843dump format. The top-level code implements the various command line 3844options, file I/O, and table dump routines. To port to a new host, only 3845three functions need to be implemented to get tables -- since this 3846functionality is OS-dependent. See the tools/acpidump/apmain.c module and 3847the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 38481) The Windows version obtains the ACPI tables from the Registry. 38492) The Linux version is under development. 38503) Other hosts - If an OS-dependent module is submitted, it will be 3851distributed with ACPICA. 3852 3853iASL: Fixed a regression for -D preprocessor option (define symbol). A 3854restructuring/change to the initialization sequence caused this option to 3855no longer work properly. 3856 3857iASL: Implemented a mechanism to disable specific warnings and remarks. 3858Adds a new command line option, "-vw <messageid> as well as "#pragma 3859disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 3860 3861iASL: Fix for too-strict package object validation. The package object 3862validation for return values from the predefined names is a bit too 3863strict, it does not allow names references within the package (which will 3864be resolved at runtime.) These types of references cannot be validated at 3865compile time. This change ignores named references within package objects 3866for names that return or define static packages. 3867 3868Debugger: Fixed the 80-character command line limitation for the History 3869command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 3870 3871iASL: Added control method and package support for the -so option 3872(generates AML offset table for BIOS support.) 3873 3874iASL: issue a remark if a non-serialized method creates named objects. If 3875a thread blocks within the method for any reason, and another thread 3876enters the method, the method will fail because an attempt will be made 3877to 3878create the same (named) object twice. In this case, issue a remark that 3879the method should be marked serialized. NOTE: may become a warning later. 3880ACPICA BZ 909. 3881 3882---------------------------------------- 388318 April 2013. Summary of changes for version 20130418: 3884 38851) ACPICA kernel-resident subsystem: 3886 3887Fixed a possible buffer overrun during some rare but specific field unit 3888read operations. This overrun can only happen if the DSDT version is 1 -- 3889meaning that all AML integers are 32 bits -- and the field length is 3890between 33 and 55 bits long. During the read, an internal buffer object 3891is 3892created for the field unit because the field is larger than an integer 3893(32 3894bits). However, in this case, the buffer will be incorrectly written 3895beyond the end because the buffer length is less than the internal 3896minimum 3897of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 3898long, but a full 8 bytes will be written. 3899 3900Updated the Embedded Controller "orphan" _REG method support. This refers 3901to _REG methods under the EC device that have no corresponding operation 3902region. This is allowed by the ACPI specification. This update removes a 3903dependency on the existence an ECDT table. It will execute an orphan _REG 3904method as long as the operation region handler for the EC is installed at 3905the EC device node and not the namespace root. Rui Zhang (original 3906update), Bob Moore (update/integrate). 3907 3908Implemented run-time argument typechecking for all predefined ACPI names 3909(_STA, _BIF, etc.) This change performs object typechecking on all 3910incoming arguments for all predefined names executed via 3911AcpiEvaluateObject. This ensures that ACPI-related device drivers are 3912passing correct object types as well as the correct number of arguments 3913(therefore identifying any issues immediately). Also, the ASL/namespace 3914definition of the predefined name is checked against the ACPI 3915specification for the proper argument count. Adds one new file, 3916nsarguments.c 3917 3918Changed an exception code for the ASL UnLoad() operator. Changed the 3919exception code for the case where the input DdbHandle is invalid, from 3920AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 3921 3922Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 3923global makefile. The use of this flag causes compiler errors on earlier 3924versions of GCC, so it has been removed for compatibility. 3925 3926Miscellaneous cleanup: 39271) Removed some unused/obsolete macros 39282) Fixed a possible memory leak in the _OSI support 39293) Removed an unused variable in the predefined name support 39304) Windows OSL: remove obsolete reference to a memory list field 3931 3932Example Code and Data Size: These are the sizes for the OS-independent 3933acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3934debug version of the code includes the debug output trace mechanism and 3935has a much larger code and data size. 3936 3937 Current Release: 3938 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 3939 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 3940 Previous Release: 3941 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 3942 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 3943 3944 39452) iASL Compiler/Disassembler and Tools: 3946 3947AcpiExec: Added installation of a handler for the SystemCMOS address 3948space. This prevents control method abort if a method accesses this 3949space. 3950 3951AcpiExec: Added support for multiple EC devices, and now install EC 3952operation region handler(s) at the actual EC device instead of the 3953namespace root. This reflects the typical behavior of host operating 3954systems. 3955 3956AcpiExec: Updated to ensure that all operation region handlers are 3957installed before the _REG methods are executed. This prevents a _REG 3958method from aborting if it accesses an address space has no handler. 3959AcpiExec installs a handler for every possible address space. 3960 3961Debugger: Enhanced the "handlers" command to display non-root handlers. 3962This change enhances the handlers command to display handlers associated 3963with individual devices throughout the namespace, in addition to the 3964currently supported display of handlers associated with the root 3965namespace 3966node. 3967 3968ASL Test Suite: Several test suite errors have been identified and 3969resolved, reducing the total error count during execution. Chao Guan. 3970 3971---------------------------------------- 397228 March 2013. Summary of changes for version 20130328: 3973 39741) ACPICA kernel-resident subsystem: 3975 3976Fixed several possible race conditions with the internal object reference 3977counting mechanism. Some of the external ACPICA interfaces update object 3978reference counts without holding the interpreter or namespace lock. This 3979change adds a spinlock to protect reference count updates on the internal 3980ACPICA objects. Reported by and with assistance from Andriy Gapon 3981(avg@FreeBSD.org). 3982 3983FADT support: Removed an extraneous warning for very large GPE register 3984sets. This change removes a size mismatch warning if the legacy length 3985field for a GPE register set is larger than the 64-bit GAS structure can 3986accommodate. GPE register sets can be larger than the 255-bit width 3987limitation of the GAS structure. Linn Crosetto (linn@hp.com). 3988 3989_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 3990return from this interface. Handles a possible timeout case if 3991ACPI_WAIT_FOREVER is modified by the host to be a value less than 3992"forever". Jung-uk Kim. 3993 3994Predefined name support: Add allowed/required argument type information 3995to 3996the master predefined info table. This change adds the infrastructure to 3997enable typechecking on incoming arguments for all predefined 3998methods/objects. It does not actually contain the code that will fully 3999utilize this information, this is still under development. Also condenses 4000some duplicate code for the predefined names into a new module, 4001utilities/utpredef.c 4002 4003Example Code and Data Size: These are the sizes for the OS-independent 4004acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4005debug version of the code includes the debug output trace mechanism and 4006has a much larger code and data size. 4007 4008 Previous Release: 4009 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4010 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4011 Current Release: 4012 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4013 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4014 4015 40162) iASL Compiler/Disassembler and Tools: 4017 4018iASL: Implemented a new option to simplify the development of ACPI- 4019related 4020BIOS code. Adds support for a new "offset table" output file. The -so 4021option will create a C table containing the AML table offsets of various 4022named objects in the namespace so that BIOS code can modify them easily 4023at 4024boot time. This can simplify BIOS runtime code by eliminating expensive 4025searches for "magic values", enhancing boot times and adding greater 4026reliability. With assistance from Lee Hamel. 4027 4028iASL: Allow additional predefined names to return zero-length packages. 4029Now, all predefined names that are defined by the ACPI specification to 4030return a "variable-length package of packages" are allowed to return a 4031zero length top-level package. This allows the BIOS to tell the host that 4032the requested feature is not supported, and supports existing BIOS/ASL 4033code and practices. 4034 4035iASL: Changed the "result not used" warning to an error. This is the case 4036where an ASL operator is effectively a NOOP because the result of the 4037operation is not stored anywhere. For example: 4038 Add (4, Local0) 4039There is no target (missing 3rd argument), nor is the function return 4040value used. This is potentially a very serious problem -- since the code 4041was probably intended to do something, but for whatever reason, the value 4042was not stored. Therefore, this issue has been upgraded from a warning to 4043an error. 4044 4045AcpiHelp: Added allowable/required argument types to the predefined names 4046info display. This feature utilizes the recent update to the predefined 4047names table (above). 4048 4049---------------------------------------- 405014 February 2013. Summary of changes for version 20130214: 4051 40521) ACPICA Kernel-resident Subsystem: 4053 4054Fixed a possible regression on some hosts: Reinstated the safe return 4055macros (return_ACPI_STATUS, etc.) that ensure that the argument is 4056evaluated only once. Although these macros are not needed for the ACPICA 4057code itself, they are often used by ACPI-related host device drivers 4058where 4059the safe feature may be necessary. 4060 4061Fixed several issues related to the ACPI 5.0 reduced hardware support 4062(SOC): Now ensure that if the platform declares itself as hardware- 4063reduced 4064via the FADT, the following functions become NOOPs (and always return 4065AE_OK) because ACPI is always enabled by definition on these machines: 4066 AcpiEnable 4067 AcpiDisable 4068 AcpiHwGetMode 4069 AcpiHwSetMode 4070 4071Dynamic Object Repair: Implemented additional runtime repairs for 4072predefined name return values. Both of these repairs can simplify code in 4073the related device drivers that invoke these methods: 40741) For the _STR and _MLS names, automatically repair/convert an ASCII 4075string to a Unicode buffer. 40762) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 4077a 4078lone end tag descriptor in the following cases: A Return(0) was executed, 4079a null buffer was returned, or no object at all was returned (non-slack 4080mode only). Adds a new file, nsconvert.c 4081ACPICA BZ 998. Bob Moore, Lv Zheng. 4082 4083Resource Manager: Added additional code to prevent possible infinite 4084loops 4085while traversing corrupted or ill-formed resource template buffers. Check 4086for zero-length resource descriptors in all code that loops through 4087resource templates (the length field is used to index through the 4088template). This change also hardens the external AcpiWalkResources and 4089AcpiWalkResourceBuffer interfaces. 4090 4091Local Cache Manager: Enhanced the main data structure to eliminate an 4092unnecessary mechanism to access the next object in the list. Actually 4093provides a small performance enhancement for hosts that use the local 4094ACPICA cache manager. Jung-uk Kim. 4095 4096Example Code and Data Size: These are the sizes for the OS-independent 4097acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4098debug version of the code includes the debug output trace mechanism and 4099has a much larger code and data size. 4100 4101 Previous Release: 4102 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4103 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4104 Current Release: 4105 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4106 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4107 4108 41092) iASL Compiler/Disassembler and Tools: 4110 4111iASL/Disassembler: Fixed several issues with the definition of the ACPI 41125.0 RASF table (RAS Feature Table). This change incorporates late changes 4113that were made to the ACPI 5.0 specification. 4114 4115iASL/Disassembler: Added full support for the following new ACPI tables: 4116 1) The MTMR table (MID Timer Table) 4117 2) The VRTC table (Virtual Real Time Clock Table). 4118Includes header file, disassembler, table compiler, and template support 4119for both tables. 4120 4121iASL: Implemented compile-time validation of package objects returned by 4122predefined names. This new feature validates static package objects 4123returned by the various predefined names defined to return packages. Both 4124object types and package lengths are validated, for both parent packages 4125and sub-packages, if any. The code is similar in structure and behavior 4126to 4127the runtime repair mechanism within the AML interpreter and uses the 4128existing predefined name information table. Adds a new file, aslprepkg.c. 4129ACPICA BZ 938. 4130 4131iASL: Implemented auto-detection of binary ACPI tables for disassembly. 4132This feature detects a binary file with a valid ACPI table header and 4133invokes the disassembler automatically. Eliminates the need to 4134specifically invoke the disassembler with the -d option. ACPICA BZ 862. 4135 4136iASL/Disassembler: Added several warnings for the case where there are 4137unresolved control methods during the disassembly. This can potentially 4138cause errors when the output file is compiled, because the disassembler 4139assumes zero method arguments in these cases (it cannot determine the 4140actual number of arguments without resolution/definition of the method). 4141 4142Debugger: Added support to display all resources with a single command. 4143Invocation of the resources command with no arguments will now display 4144all 4145resources within the current namespace. 4146 4147AcpiHelp: Added descriptive text for each ACPICA exception code displayed 4148via the -e option. 4149 4150---------------------------------------- 415117 January 2013. Summary of changes for version 20130117: 4152 41531) ACPICA Kernel-resident Subsystem: 4154 4155Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 4156return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 4157objects to return a package containing one integer, most BIOS code 4158returns 4159two integers and the previous code reflects that. However, we also need 4160to 4161support BIOS code that actually implements to the ACPI spec, and this 4162change reflects this. 4163 4164Fixed two issues with the ACPI_DEBUG_PRINT macros: 41651) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 4166C compilers that require this support. 41672) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 4168ACPI_DEBUG is already used by many of the various hosts. 4169 4170Updated all ACPICA copyrights and signons to 2013. Added the 2013 4171copyright to all module headers and signons, including the standard Linux 4172header. This affects virtually every file in the ACPICA core subsystem, 4173iASL compiler, all ACPICA utilities, and the test suites. 4174 4175Example Code and Data Size: These are the sizes for the OS-independent 4176acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4177debug version of the code includes the debug output trace mechanism and 4178has a much larger code and data size. 4179 4180 Previous Release: 4181 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 4182 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 4183 Current Release: 4184 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4185 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4186 4187 41882) iASL Compiler/Disassembler and Tools: 4189 4190Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 4191prevent a possible fault on some hosts. Some C libraries modify the arg 4192pointer parameter to vfprintf making it difficult to call it twice in the 4193AcpiOsVprintf function. Use a local buffer to workaround this issue. This 4194does not affect the Windows OSL since the Win C library does not modify 4195the arg pointer. Chao Guan, Bob Moore. 4196 4197iASL: Fixed a possible infinite loop when the maximum error count is 4198reached. If an output file other than the .AML file is specified (such as 4199a listing file), and the maximum number of errors is reached, do not 4200attempt to flush data to the output file(s) as the compiler is aborting. 4201This can cause an infinite loop as the max error count code essentially 4202keeps calling itself. 4203 4204iASL/Disassembler: Added an option (-in) to ignore NOOP 4205opcodes/operators. 4206Implemented for both the compiler and the disassembler. Often, the NOOP 4207opcode is used as padding for packages that are changed dynamically by 4208the 4209BIOS. When disassembled and recompiled, these NOOPs will cause syntax 4210errors. This option causes the disassembler to ignore all NOOP opcodes 4211(0xA3), and it also causes the compiler to ignore all ASL source code 4212NOOP 4213statements as well. 4214 4215Debugger: Enhanced the Sleep command to execute all sleep states. This 4216change allows Sleep to be invoked with no arguments and causes the 4217debugger to execute all of the sleep states, 0-5, automatically. 4218 4219---------------------------------------- 422020 December 2012. Summary of changes for version 20121220: 4221 42221) ACPICA Kernel-resident Subsystem: 4223 4224Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 4225alternate entry point for AcpiWalkResources and improves the usability of 4226the resource manager by accepting as input a buffer containing the output 4227of either a _CRS, _PRS, or _AEI method. The key functionality is that the 4228input buffer is not deleted by this interface so that it can be used by 4229the host later. See the ACPICA reference for details. 4230 4231Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 4232(DSDT version < 2). The constant will be truncated and this warning 4233reflects that behavior. 4234 4235Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 4236ExtendedInterrupt, and GpioInt descriptors. This change adds support to 4237both get and set the new wake bit in these descriptors, separately from 4238the existing share bit. Reported by Aaron Lu. 4239 4240Interpreter: Fix Store() when an implicit conversion is not possible. For 4241example, in the cases such as a store of a string to an existing package 4242object, implement the store as a CopyObject(). This is a small departure 4243from the ACPI specification which states that the control method should 4244be 4245aborted in this case. However, the ASLTS suite depends on this behavior. 4246 4247Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 4248macros: check if debug output is currently enabled as soon as possible to 4249minimize performance impact if debug is in fact not enabled. 4250 4251Source code restructuring: Cleanup to improve modularity. The following 4252new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 4253psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 4254Associated makefiles and project files have been updated. 4255 4256Changed an exception code for LoadTable operator. For the case where one 4257of the input strings is too long, change the returned exception code from 4258AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 4259 4260Fixed a possible memory leak in dispatcher error path. On error, delete 4261the mutex object created during method mutex creation. Reported by 4262tim.gardner@canonical.com. 4263 4264Example Code and Data Size: These are the sizes for the OS-independent 4265acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4266debug version of the code includes the debug output trace mechanism and 4267has a much larger code and data size. 4268 4269 Previous Release: 4270 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 4271 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4272 Current Release: 4273 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 4274 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 4275 4276 42772) iASL Compiler/Disassembler and Tools: 4278 4279iASL: Disallow a method call as argument to the ObjectType ASL operator. 4280This change tracks an errata to the ACPI 5.0 document. The AML grammar 4281will not allow the interpreter to differentiate between a method and a 4282method invocation when these are used as an argument to the ObjectType 4283operator. The ACPI specification change is to disallow a method 4284invocation 4285(UserTerm) for the ObjectType operator. 4286 4287Finish support for the TPM2 and CSRT tables in the headers, table 4288compiler, and disassembler. 4289 4290Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 4291always expires immediately if the semaphore is not available. The 4292original 4293code was using a relative-time timeout, but sem_timedwait requires the 4294use 4295of an absolute time. 4296 4297iASL: Added a remark if the Timer() operator is used within a 32-bit 4298table. This operator returns a 64-bit time value that will be truncated 4299within a 32-bit table. 4300 4301iASL Source code restructuring: Cleanup to improve modularity. The 4302following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 4303aslmethod.c, and aslfileio.c. Associated makefiles and project files have 4304been updated. 4305 4306 4307---------------------------------------- 430814 November 2012. Summary of changes for version 20121114: 4309 43101) ACPICA Kernel-resident Subsystem: 4311 4312Implemented a performance enhancement for ACPI/AML Package objects. This 4313change greatly increases the performance of Package objects within the 4314interpreter. It changes the processing of reference counts for packages 4315by 4316optimizing for the most common case where the package sub-objects are 4317either Integers, Strings, or Buffers. Increases the overall performance 4318of 4319the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 43202X.) 4321Chao Guan. ACPICA BZ 943. 4322 4323Implemented and deployed common macros to extract flag bits from resource 4324descriptors. Improves readability and maintainability of the code. Fixes 4325a 4326problem with the UART serial bus descriptor for the number of data bits 4327flags (was incorrectly 2 bits, should be 3). 4328 4329Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 4330of the macros and changed the SETx macros to the style of (destination, 4331source). Also added ACPI_CASTx companion macros. Lv Zheng. 4332 4333Example Code and Data Size: These are the sizes for the OS-independent 4334acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4335debug version of the code includes the debug output trace mechanism and 4336has a much larger code and data size. 4337 4338 Previous Release: 4339 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 4340 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4341 Current Release: 4342 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 4343 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4344 4345 43462) iASL Compiler/Disassembler and Tools: 4347 4348Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 4349adds the ShareAndWake and ExclusiveAndWake flags which were added to the 4350Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 4351 4352Disassembler: Fixed a problem with external declaration generation. Fixes 4353a problem where an incorrect pathname could be generated for an external 4354declaration if the original reference to the object includes leading 4355carats (^). ACPICA BZ 984. 4356 4357Debugger: Completed a major update for the Disassemble<method> command. 4358This command was out-of-date and did not properly disassemble control 4359methods that had any reasonable complexity. This fix brings the command 4360up 4361to the same level as the rest of the disassembler. Adds one new file, 4362dmdeferred.c, which is existing code that is now common with the main 4363disassembler and the debugger disassemble command. ACPICA MZ 978. 4364 4365iASL: Moved the parser entry prototype to avoid a duplicate declaration. 4366Newer versions of Bison emit this prototype, so moved the prototype out 4367of 4368the iASL header to where it is actually used in order to avoid a 4369duplicate 4370declaration. 4371 4372iASL/Tools: Standardized use of the stream I/O functions: 4373 1) Ensure check for I/O error after every fopen/fread/fwrite 4374 2) Ensure proper order of size/count arguments for fread/fwrite 4375 3) Use test of (Actual != Requested) after all fwrite, and most fread 4376 4) Standardize I/O error messages 4377Improves reliability and maintainability of the code. Bob Moore, Lv 4378Zheng. 4379ACPICA BZ 981. 4380 4381Disassembler: Prevent duplicate External() statements. During generation 4382of external statements, detect similar pathnames that are actually 4383duplicates such as these: 4384 External (\ABCD) 4385 External (ABCD) 4386Remove all leading '\' characters from pathnames during the external 4387statement generation so that duplicates will be detected and tossed. 4388ACPICA BZ 985. 4389 4390Tools: Replace low-level I/O with stream I/O functions. Replace 4391open/read/write/close with the stream I/O equivalents 4392fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 4393Moore. 4394 4395AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 4396name header so that AcpiXtract recognizes the output file/table. 4397 4398iASL: Remove obsolete -2 option flag. Originally intended to force the 4399compiler/disassembler into an ACPI 2.0 mode, this was never implemented 4400and the entire concept is now obsolete. 4401 4402---------------------------------------- 440318 October 2012. Summary of changes for version 20121018: 4404 4405 44061) ACPICA Kernel-resident Subsystem: 4407 4408Updated support for the ACPI 5.0 MPST table. Fixes some problems 4409introduced by late changes to the table as it was added to the ACPI 5.0 4410specification. Includes header, disassembler, and data table compiler 4411support as well as a new version of the MPST template. 4412 4413AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 44145.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 4415methods: _HID, _CID, and _UID. 4416 4417Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 4418ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 4419name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 4420names for their various drivers. Affects the AcpiGetObjectInfo external 4421interface, and other internal interfaces as well. 4422 4423Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 4424This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 4425on machines that support non-aligned transfers. Optimizes for this case 4426rather than using a strncpy. With assistance from Zheng Lv. 4427 4428Resource Manager: Small fix for buffer size calculation. Fixed a one byte 4429error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 4430 4431Added a new debug print message for AML mutex objects that are force- 4432released. At control method termination, any currently acquired mutex 4433objects are force-released. Adds a new debug-only message for each one 4434that is released. 4435 4436Audited/updated all ACPICA return macros and the function debug depth 4437counter: 1) Ensure that all functions that use the various TRACE macros 4438also use the appropriate ACPICA return macros. 2) Ensure that all normal 4439return statements surround the return expression (value) with parens to 4440ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 4441Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 4442 4443Global source code changes/maintenance: All extra lines at the start and 4444end of each source file have been removed for consistency. Also, within 4445comments, all new sentences start with a single space instead of a double 4446space, again for consistency across the code base. 4447 4448Example Code and Data Size: These are the sizes for the OS-independent 4449acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4450debug version of the code includes the debug output trace mechanism and 4451has a much larger code and data size. 4452 4453 Previous Release: 4454 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 4455 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 4456 Current Release: 4457 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 4458 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4459 4460 44612) iASL Compiler/Disassembler and Tools: 4462 4463AcpiExec: Improved the algorithm used for memory leak/corruption 4464detection. Added some intelligence to the code that maintains the global 4465list of allocated memory. The list is now ordered by allocated memory 4466address, significantly improving performance. When running AcpiExec on 4467the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 4468on the platform and/or the environment. Note, this performance 4469enhancement affects the AcpiExec utility only, not the kernel-resident 4470ACPICA code. 4471 4472Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 4473the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 4474incorrect table offset reported for invalid opcodes. Report the original 447532-bit value for bad ACPI_NAMEs (as well as the repaired name.) 4476 4477Disassembler: Enhanced the -vt option to emit the binary table data in 4478hex format to assist with debugging. 4479 4480Fixed a potential filename buffer overflow in osunixdir.c. Increased the 4481size of file structure. Colin Ian King. 4482 4483---------------------------------------- 448413 September 2012. Summary of changes for version 20120913: 4485 4486 44871) ACPICA Kernel-resident Subsystem: 4488 4489ACPI 5.0: Added two new notify types for the Hardware Error Notification 4490Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 4491and 4492MCE(6). 4493 4494Table Manager: Merged/removed duplicate code in the root table resize 4495functions. One function is external, the other is internal. Lv Zheng, 4496ACPICA 4497BZ 846. 4498 4499Makefiles: Completely removed the obsolete "Linux" makefiles under 4500acpica/generate/linux. These makefiles are obsolete and have been 4501replaced 4502by 4503the generic unix makefiles under acpica/generate/unix. 4504 4505Makefiles: Ensure that binary files always copied properly. Minor rule 4506change 4507to ensure that the final binary output files are always copied up to the 4508appropriate binary directory (bin32 or bin64.) 4509 4510Example Code and Data Size: These are the sizes for the OS-independent 4511acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4512debug 4513version of the code includes the debug output trace mechanism and has a 4514much 4515larger code and data size. 4516 4517 Previous Release: 4518 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 4519 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 4520 Current Release: 4521 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 4522 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 4523 4524 45252) iASL Compiler/Disassembler and Tools: 4526 4527Disassembler: Fixed a possible fault during the disassembly of resource 4528descriptors when a second parse is required because of the invocation of 4529external control methods within the table. With assistance from 4530adq@lidskialf.net. ACPICA BZ 976. 4531 4532iASL: Fixed a namepath optimization problem. An error can occur if the 4533parse 4534node that contains the namepath to be optimized does not have a parent 4535node 4536that is a named object. This change fixes the problem. 4537 4538iASL: Fixed a regression where the AML file is not deleted on errors. The 4539AML 4540output file should be deleted if there are any errors during the 4541compiler. 4542The 4543only exception is if the -f (force output) option is used. ACPICA BZ 974. 4544 4545iASL: Added a feature to automatically increase internal line buffer 4546sizes. 4547Via realloc(), automatically increase the internal line buffer sizes as 4548necessary to support very long source code lines. The current version of 4549the 4550preprocessor requires a buffer long enough to contain full source code 4551lines. 4552This change increases the line buffer(s) if the input lines go beyond the 4553current buffer size. This eliminates errors that occurred when a source 4554code 4555line was longer than the buffer. 4556 4557iASL: Fixed a problem with constant folding in method declarations. The 4558SyncLevel term is a ByteConstExpr, and incorrect code would be generated 4559if a 4560Type3 opcode was used. 4561 4562Debugger: Improved command help support. For incorrect argument count, 4563display 4564full help for the command. For help command itself, allow an argument to 4565specify a command. 4566 4567Test Suites: Several bug fixes for the ASLTS suite reduces the number of 4568errors during execution of the suite. Guan Chao. 4569 4570---------------------------------------- 457116 August 2012. Summary of changes for version 20120816: 4572 4573 45741) ACPICA Kernel-resident Subsystem: 4575 4576Removed all use of the deprecated _GTS and _BFS predefined methods. The 4577_GTS 4578(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 4579deprecated and will probably be removed from the ACPI specification. 4580Windows 4581does not invoke them, and reportedly never will. The final nail in the 4582coffin 4583is that the ACPI specification states that these methods must be run with 4584interrupts off, which is not going to happen in a kernel interpreter. 4585Note: 4586Linux has removed all use of the methods also. It was discovered that 4587invoking these functions caused failures on some machines, probably 4588because 4589they were never tested since Windows does not call them. Affects two 4590external 4591interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 4592ACPICA BZ 969. 4593 4594Implemented support for complex bit-packed buffers returned from the _PLD 4595(Physical Location of Device) predefined method. Adds a new external 4596interface, AcpiDecodePldBuffer that parses the buffer into a more usable 4597C 4598structure. Note: C Bitfields cannot be used for this type of predefined 4599structure since the memory layout of individual bitfields is not defined 4600by 4601the C language. In addition, there are endian concerns where a compiler 4602will 4603change the bitfield ordering based on the machine type. The new ACPICA 4604interface eliminates these issues, and should be called after _PLD is 4605executed. ACPICA BZ 954. 4606 4607Implemented a change to allow a scope change to root (via "Scope (\)") 4608during 4609execution of module-level ASL code (code that is executed at table load 4610time.) Lin Ming. 4611 4612Added the Windows8/Server2012 string for the _OSI method. This change 4613adds 4614a 4615new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 46162012. 4617 4618Added header support for the new ACPI tables DBG2 (Debug Port Table Type 46192) 4620and CSRT (Core System Resource Table). 4621 4622Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 4623names. This simplifies access to the buffers returned by these predefined 4624names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 4625 4626GPE support: Removed an extraneous parameter from the various low-level 4627internal GPE functions. Tang Feng. 4628 4629Removed the linux makefiles from the unix packages. The generate/linux 4630makefiles are obsolete and have been removed from the unix tarball 4631release 4632packages. The replacement makefiles are under generate/unix, and there is 4633a 4634top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 4635 4636Updates for Unix makefiles: 46371) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 46382) Update linker flags (move to end of command line) for AcpiExec 4639utility. 4640Guan Chao. 4641 4642Split ACPICA initialization functions to new file, utxfinit.c. Split from 4643utxface.c to improve modularity and reduce file size. 4644 4645Example Code and Data Size: These are the sizes for the OS-independent 4646acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4647debug version of the code includes the debug output trace mechanism and 4648has a 4649much larger code and data size. 4650 4651 Previous Release: 4652 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 4653 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 4654 Current Release: 4655 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 4656 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 4657 4658 46592) iASL Compiler/Disassembler and Tools: 4660 4661iASL: Fixed a problem with constant folding for fixed-length constant 4662expressions. The constant-folding code was not being invoked for constant 4663expressions that allow the use of type 3/4/5 opcodes to generate 4664constants 4665for expressions such as ByteConstExpr, WordConstExpr, etc. This could 4666result 4667in the generation of invalid AML bytecode. ACPICA BZ 970. 4668 4669iASL: Fixed a generation issue on newer versions of Bison. Newer versions 4670apparently automatically emit some of the necessary externals. This 4671change 4672handles these versions in order to eliminate generation warnings. 4673 4674Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 4675 4676Disassembler: Add support to decode _PLD buffers. The decoded buffer 4677appears 4678within comments in the output file. 4679 4680Debugger: Fixed a regression with the "Threads" command where 4681AE_BAD_PARAMETER was always returned. 4682 4683---------------------------------------- 468411 July 2012. Summary of changes for version 20120711: 4685 46861) ACPICA Kernel-resident Subsystem: 4687 4688Fixed a possible fault in the return package object repair code. Fixes a 4689problem that can occur when a lone package object is wrapped with an 4690outer 4691package object in order to force conformance to the ACPI specification. 4692Can 4693affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 4694_DLM, 4695_CSD, _PSD, _TSD. 4696 4697Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 4698PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 4699ARB_DIS bit must be implemented in the host-dependent C3 processor power 4700state 4701support. Note, ARB_DIS is obsolete and only applies to older chipsets, 4702both 4703Intel and other vendors. (for Intel: ICH4-M and earlier) 4704 4705This change removes the code to disable/enable bus master arbitration 4706during 4707suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 4708causes 4709resume problems on some machines. The change has been in use for over 4710seven 4711years within Linux. 4712 4713Implemented two new external interfaces to support host-directed dynamic 4714ACPI 4715table load and unload. They are intended to simplify the host 4716implementation 4717of hot-plug support: 4718 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 4719 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 4720table. 4721See the ACPICA reference for additional details. Adds one new file, 4722components/tables/tbxfload.c 4723 4724Implemented and deployed two new interfaces for errors and warnings that 4725are 4726known to be caused by BIOS/firmware issues: 4727 AcpiBiosError: Prints "ACPI Firmware Error" message. 4728 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 4729Deployed these new interfaces in the ACPICA Table Manager code for ACPI 4730table 4731and FADT errors. Additional deployment to be completed as appropriate in 4732the 4733future. The associated conditional macros are ACPI_BIOS_ERROR and 4734ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 4735ACPICA 4736BZ 4737843. 4738 4739Implicit notify support: ensure that no memory allocation occurs within a 4740critical region. This fix moves a memory allocation outside of the time 4741that a 4742spinlock is held. Fixes issues on systems that do not allow this 4743behavior. 4744Jung-uk Kim. 4745 4746Split exception code utilities and tables into a new file, 4747utilities/utexcep.c 4748 4749Example Code and Data Size: These are the sizes for the OS-independent 4750acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4751debug 4752version of the code includes the debug output trace mechanism and has a 4753much 4754larger code and data size. 4755 4756 Previous Release: 4757 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 4758 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 4759 Current Release: 4760 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 4761 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 4762 4763 47642) iASL Compiler/Disassembler and Tools: 4765 4766iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 4767of 47680. Jung-uk Kim. 4769 4770Debugger: Enhanced the "tables" command to emit additional information 4771about 4772the current set of ACPI tables, including the owner ID and flags decode. 4773 4774Debugger: Reimplemented the "unload" command to use the new 4775AcpiUnloadParentTable external interface. This command was disable 4776previously 4777due to need for an unload interface. 4778 4779AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 4780option 4781will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 4782 4783---------------------------------------- 478420 June 2012. Summary of changes for version 20120620: 4785 4786 47871) ACPICA Kernel-resident Subsystem: 4788 4789Implemented support to expand the "implicit notify" feature to allow 4790multiple 4791devices to be notified by a single GPE. This feature automatically 4792generates a 4793runtime device notification in the absence of a BIOS-provided GPE control 4794method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 4795notify is 4796provided by ACPICA for Windows compatibility, and is a workaround for 4797BIOS 4798AML 4799code errors. See the description of the AcpiSetupGpeForWake interface in 4800the 4801APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 4802 4803Changed some comments and internal function names to simplify and ensure 4804correctness of the Linux code translation. No functional changes. 4805 4806Example Code and Data Size: These are the sizes for the OS-independent 4807acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4808debug 4809version of the code includes the debug output trace mechanism and has a 4810much 4811larger code and data size. 4812 4813 Previous Release: 4814 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 4815 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 4816 Current Release: 4817 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 4818 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 4819 4820 48212) iASL Compiler/Disassembler and Tools: 4822 4823Disassembler: Added support to emit short, commented descriptions for the 4824ACPI 4825predefined names in order to improve the readability of the disassembled 4826output. ACPICA BZ 959. Changes include: 4827 1) Emit descriptions for all standard predefined names (_INI, _STA, 4828_PRW, 4829etc.) 4830 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 4831 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 4832etc.) 4833 4834AcpiSrc: Fixed several long-standing Linux code translation issues. 4835Argument 4836descriptions in function headers are now translated properly to lower 4837case 4838and 4839underscores. ACPICA BZ 961. Also fixes translation problems such as 4840these: 4841(old -> new) 4842 i_aSL -> iASL 4843 00-7_f -> 00-7F 4844 16_k -> 16K 4845 local_fADT -> local_FADT 4846 execute_oSI -> execute_OSI 4847 4848iASL: Fixed a problem where null bytes were inadvertently emitted into 4849some 4850listing files. 4851 4852iASL: Added the existing debug options to the standard help screen. There 4853are 4854no longer two different help screens. ACPICA BZ 957. 4855 4856AcpiHelp: Fixed some typos in the various predefined name descriptions. 4857Also 4858expand some of the descriptions where appropriate. 4859 4860iASL: Fixed the -ot option (display compile times/statistics). Was not 4861working 4862properly for standard output; only worked for the debug file case. 4863 4864---------------------------------------- 486518 May 2012. Summary of changes for version 20120518: 4866 4867 48681) ACPICA Core Subsystem: 4869 4870Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 4871defined 4872to block until asynchronous events such as notifies and GPEs have 4873completed. 4874Within ACPICA, it is only called before a notify or GPE handler is 4875removed/uninstalled. It also may be useful for the host OS within related 4876drivers such as the Embedded Controller driver. See the ACPICA reference 4877for 4878additional information. ACPICA BZ 868. 4879 4880ACPI Tables: Added a new error message for a possible overflow failure 4881during 4882the conversion of FADT 32-bit legacy register addresses to internal 4883common 488464- 4885bit GAS structure representation. The GAS has a one-byte "bit length" 4886field, 4887thus limiting the register length to 255 bits. ACPICA BZ 953. 4888 4889Example Code and Data Size: These are the sizes for the OS-independent 4890acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4891debug 4892version of the code includes the debug output trace mechanism and has a 4893much 4894larger code and data size. 4895 4896 Previous Release: 4897 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4898 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 4899 Current Release: 4900 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 4901 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 4902 4903 49042) iASL Compiler/Disassembler and Tools: 4905 4906iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 4907macro. 4908This keyword was added late in the ACPI 5.0 release cycle and was not 4909implemented until now. 4910 4911Disassembler: Added support for Operation Region externals. Adds missing 4912support for operation regions that are defined in another table, and 4913referenced locally via a Field or BankField ASL operator. Now generates 4914the 4915correct External statement. 4916 4917Disassembler: Several additional fixes for the External() statement 4918generation 4919related to some ASL operators. Also, order the External() statements 4920alphabetically in the disassembler output. Fixes the External() 4921generation 4922for 4923the Create* field, Alias, and Scope operators: 4924 1) Create* buffer field operators - fix type mismatch warning on 4925disassembly 4926 2) Alias - implement missing External support 4927 3) Scope - fix to make sure all necessary externals are emitted. 4928 4929iASL: Improved pathname support. For include files, merge the prefix 4930pathname 4931with the file pathname and eliminate unnecessary components. Convert 4932backslashes in all pathnames to forward slashes, for readability. Include 4933file 4934pathname changes affect both #include and Include() type operators. 4935 4936iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 4937end 4938of a valid line by inserting a newline and then returning the EOF during 4939the 4940next call to GetNextLine. Prevents the line from being ignored due to EOF 4941condition. 4942 4943iASL: Implemented some changes to enhance the IDE support (-vi option.) 4944Error 4945and Warning messages are now correctly recognized for both the source 4946code 4947browser and the global error and warning counts. 4948 4949---------------------------------------- 495020 April 2012. Summary of changes for version 20120420: 4951 4952 49531) ACPICA Core Subsystem: 4954 4955Implemented support for multiple notify handlers. This change adds 4956support 4957to 4958allow multiple system and device notify handlers on Device, Thermal Zone, 4959and 4960Processor objects. This can simplify the host OS notification 4961implementation. 4962Also re-worked and restructured the entire notify support code to 4963simplify 4964handler installation, handler removal, notify event queuing, and notify 4965dispatch to handler(s). Note: there can still only be two global notify 4966handlers - one for system notifies and one for device notifies. There are 4967no 4968changes to the existing handler install/remove interfaces. Lin Ming, Bob 4969Moore, Rafael Wysocki. 4970 4971Fixed a regression in the package repair code where the object reference 4972count was calculated incorrectly. Regression was introduced in the commit 4973"Support to add Package wrappers". 4974 4975Fixed a couple possible memory leaks in the AML parser, in the error 4976recovery 4977path. Jesper Juhl, Lin Ming. 4978 4979Example Code and Data Size: These are the sizes for the OS-independent 4980acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4981debug version of the code includes the debug output trace mechanism and 4982has a 4983much larger code and data size. 4984 4985 Previous Release: 4986 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4987 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4988 Current Release: 4989 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4990 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 4991 4992 49932) iASL Compiler/Disassembler and Tools: 4994 4995iASL: Fixed a problem with the resource descriptor support where the 4996length 4997of the StartDependentFn and StartDependentFnNoPrio descriptors were not 4998included in cumulative descriptor offset, resulting in incorrect values 4999for 5000resource tags within resource descriptors appearing after a 5001StartDependent* 5002descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 5003 5004iASL and Preprocessor: Implemented full support for the #line directive 5005to 5006correctly track original source file line numbers through the .i 5007preprocessor 5008output file - for error and warning messages. 5009 5010iASL: Expand the allowable byte constants for address space IDs. 5011Previously, 5012the allowable range was 0x80-0xFF (user-defined spaces), now the range is 50130x0A-0xFF to allow for custom and new IDs without changing the compiler. 5014 5015iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 5016 5017iASL: Add option to completely disable the preprocessor (-Pn). 5018 5019iASL: Now emit all error/warning messages to standard error (stderr) by 5020default (instead of the previous stdout). 5021 5022ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 5023Update 5024for resource descriptor offset fix above. Update/cleanup error output 5025routines. Enable and send iASL errors/warnings to an error logfile 5026(error.txt). Send all other iASL output to a logfile (compiler.txt). 5027Fixed 5028several extraneous "unrecognized operator" messages. 5029 5030---------------------------------------- 503120 March 2012. Summary of changes for version 20120320: 5032 5033 50341) ACPICA Core Subsystem: 5035 5036Enhanced the sleep/wake interfaces to optionally execute the _GTS method 5037(Going To Sleep) and the _BFS method (Back From Sleep). Windows 5038apparently 5039does not execute these methods, and therefore these methods are often 5040untested. It has been seen on some systems where the execution of these 5041methods causes errors and also prevents the machine from entering S5. It 5042is 5043therefore suggested that host operating systems do not execute these 5044methods 5045by default. In the future, perhaps these methods can be optionally 5046executed 5047based on the age of the system and/or what is the newest version of 5048Windows 5049that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 5050and 5051AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 5052Ming. 5053 5054Fixed a problem where the length of the local/common FADT was set too 5055early. 5056The local FADT table length cannot be set to the common length until the 5057original length has been examined. There is code that checks the table 5058length 5059and sets various fields appropriately. This can affect older machines 5060with 5061early FADT versions. For example, this can cause inadvertent writes to 5062the 5063CST_CNT register. Julian Anastasov. 5064 5065Fixed a mapping issue related to a physical table override. Use the 5066deferred 5067mapping mechanism for tables loaded via the physical override OSL 5068interface. 5069This allows for early mapping before the virtual memory manager is 5070available. 5071Thomas Renninger, Bob Moore. 5072 5073Enhanced the automatic return-object repair code: Repair a common problem 5074with 5075predefined methods that are defined to return a variable-length Package 5076of 5077sub-objects. If there is only one sub-object, some BIOS ASL code 5078mistakenly 5079simply returns the single object instead of a Package with one sub- 5080object. 5081This new support will repair this error by wrapping a Package object 5082around 5083the original object, creating the correct and expected Package with one 5084sub- 5085object. Names that can be repaired in this manner include: _ALR, _CSD, 5086_HPX, 5087_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 5088939. 5089 5090Changed the exception code returned for invalid ACPI paths passed as 5091parameters to external interfaces such as AcpiEvaluateObject. Was 5092AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 5093 5094Example Code and Data Size: These are the sizes for the OS-independent 5095acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5096debug 5097version of the code includes the debug output trace mechanism and has a 5098much 5099larger code and data size. 5100 5101 Previous Release: 5102 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 5103 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5104 Current Release: 5105 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5106 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5107 5108 51092) iASL Compiler/Disassembler and Tools: 5110 5111iASL: Added the infrastructure and initial implementation of a integrated 5112C- 5113like preprocessor. This will simplify BIOS development process by 5114eliminating 5115the need for a separate preprocessing step during builds. On Windows, it 5116also 5117eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 5118features including full #define() macro support are still under 5119development. 5120These preprocessor directives are supported: 5121 #define 5122 #elif 5123 #else 5124 #endif 5125 #error 5126 #if 5127 #ifdef 5128 #ifndef 5129 #include 5130 #pragma message 5131 #undef 5132 #warning 5133In addition, these new command line options are supported: 5134 -D <symbol> Define symbol for preprocessor use 5135 -li Create preprocessed output file (*.i) 5136 -P Preprocess only and create preprocessor output file (*.i) 5137 5138Table Compiler: Fixed a problem where the equals operator within an 5139expression 5140did not work properly. 5141 5142Updated iASL to use the current versions of Bison/Flex. Updated the 5143Windows 5144project file to invoke these tools from the standard location. ACPICA BZ 5145904. 5146Versions supported: 5147 Flex for Windows: V2.5.4 5148 Bison for Windows: V2.4.1 5149 5150---------------------------------------- 515115 February 2012. Summary of changes for version 20120215: 5152 5153 51541) ACPICA Core Subsystem: 5155 5156There have been some major changes to the sleep/wake support code, as 5157described below (a - e). 5158 5159a) The AcpiLeaveSleepState has been split into two interfaces, similar to 5160AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 5161AcpiLeaveSleepStatePrep. This allows the host to perform actions between 5162the 5163time the _BFS method is called and the _WAK method is called. NOTE: all 5164hosts 5165must update their wake/resume code or else sleep/wake will not work 5166properly. 5167Rafael Wysocki. 5168 5169b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 5170_WAK 5171method. Some machines require that the GPEs are enabled before the _WAK 5172method 5173is executed. Thomas Renninger. 5174 5175c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 5176bit. 5177Some BIOS code assumes that WAK_STS will be cleared on resume and use it 5178to 5179determine whether the system is rebooting or resuming. Matthew Garrett. 5180 5181d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 5182Sleep) to 5183match the ACPI specification requirement. Rafael Wysocki. 5184 5185e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 5186registers within the V5 FADT. This support adds two new files: 5187hardware/hwesleep.c implements the support for the new registers. Moved 5188all 5189sleep/wake external interfaces to hardware/hwxfsleep.c. 5190 5191 5192Added a new OSL interface for ACPI table overrides, 5193AcpiOsPhysicalTableOverride. This interface allows the host to override a 5194table via a physical address, instead of the logical address required by 5195AcpiOsTableOverride. This simplifies the host implementation. Initial 5196implementation by Thomas Renninger. The ACPICA implementation creates a 5197single 5198shared function for table overrides that attempts both a logical and a 5199physical override. 5200 5201Expanded the OSL memory read/write interfaces to 64-bit data 5202(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 5203transfer support for GAS register structures passed to AcpiRead and 5204AcpiWrite. 5205 5206Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 5207custom 5208build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 5209model. 5210See the ACPICA reference for details. ACPICA BZ 942. This option removes 5211about 521210% of the code and 5% of the static data, and the following hardware 5213ACPI 5214features become unavailable: 5215 PM Event and Control registers 5216 SCI interrupt (and handler) 5217 Fixed Events 5218 General Purpose Events (GPEs) 5219 Global Lock 5220 ACPI PM timer 5221 FACS table (Waking vectors and Global Lock) 5222 5223Updated the unix tarball directory structure to match the ACPICA git 5224source 5225tree. This ensures that the generic unix makefiles work properly (in 5226generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 5227867. 5228 5229Updated the return value of the _REV predefined method to integer value 5 5230to 5231reflect ACPI 5.0 support. 5232 5233Moved the external ACPI PM timer interface prototypes to the public 5234acpixf.h 5235file where they belong. 5236 5237Example Code and Data Size: These are the sizes for the OS-independent 5238acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5239debug 5240version of the code includes the debug output trace mechanism and has a 5241much 5242larger code and data size. 5243 5244 Previous Release: 5245 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 5246 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 5247 Current Release: 5248 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 5249 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5250 5251 52522) iASL Compiler/Disassembler and Tools: 5253 5254Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 5255descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 5256incorrectly displayed. 5257 5258AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 5259specification. 5260 5261---------------------------------------- 526211 January 2012. Summary of changes for version 20120111: 5263 5264 52651) ACPICA Core Subsystem: 5266 5267Implemented a new mechanism to allow host device drivers to check for 5268address 5269range conflicts with ACPI Operation Regions. Both SystemMemory and 5270SystemIO 5271address spaces are supported. A new external interface, 5272AcpiCheckAddressRange, 5273allows drivers to check an address range against the ACPI namespace. See 5274the 5275ACPICA reference for additional details. Adds one new file, 5276utilities/utaddress.c. Lin Ming, Bob Moore. 5277 5278Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 5279Control 5280and 5281Status registers, update the ACPI 5.0 flags, and update internal data 5282structures to handle an FADT larger than 256 bytes. The size of the ACPI 52835.0 5284FADT is 268 bytes. 5285 5286Updated all ACPICA copyrights and signons to 2012. Added the 2012 5287copyright to 5288all module headers and signons, including the standard Linux header. This 5289affects virtually every file in the ACPICA core subsystem, iASL compiler, 5290and 5291all ACPICA utilities. 5292 5293Example Code and Data Size: These are the sizes for the OS-independent 5294acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5295debug 5296version of the code includes the debug output trace mechanism and has a 5297much 5298larger code and data size. 5299 5300 Previous Release: 5301 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 5302 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 5303 Current Release: 5304 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 5305 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 5306 5307 53082) iASL Compiler/Disassembler and Tools: 5309 5310Disassembler: fixed a problem with the automatic resource tag generation 5311support. Fixes a problem where the resource tags are inadvertently not 5312constructed if the table being disassembled contains external references 5313to 5314control methods. Moved the actual construction of the tags to after the 5315final 5316namespace is constructed (after 2nd parse is invoked due to external 5317control 5318method references.) ACPICA BZ 941. 5319 5320Table Compiler: Make all "generic" operators caseless. These are the 5321operators 5322like UINT8, String, etc. Making these caseless improves ease-of-use. 5323ACPICA BZ 5324934. 5325 5326---------------------------------------- 532723 November 2011. Summary of changes for version 20111123: 5328 53290) ACPI 5.0 Support: 5330 5331This release contains full support for the ACPI 5.0 specification, as 5332summarized below. 5333 5334Reduced Hardware Support: 5335------------------------- 5336 5337This support allows for ACPI systems without the usual ACPI hardware. 5338This 5339support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 5340will 5341not attempt to initialize or use any of the usual ACPI hardware. Note, 5342when 5343this flag is set, all of the following ACPI hardware is assumed to be not 5344present and is not initialized or accessed: 5345 5346 General Purpose Events (GPEs) 5347 Fixed Events (PM1a/PM1b and PM Control) 5348 Power Management Timer and Console Buttons (power/sleep) 5349 Real-time Clock Alarm 5350 Global Lock 5351 System Control Interrupt (SCI) 5352 The FACS is assumed to be non-existent 5353 5354ACPI Tables: 5355------------ 5356 5357All new tables and updates to existing tables are fully supported in the 5358ACPICA headers (for use by device drivers), the disassembler, and the 5359iASL 5360Data Table Compiler. ACPI 5.0 defines these new tables: 5361 5362 BGRT /* Boot Graphics Resource Table */ 5363 DRTM /* Dynamic Root of Trust for Measurement table */ 5364 FPDT /* Firmware Performance Data Table */ 5365 GTDT /* Generic Timer Description Table */ 5366 MPST /* Memory Power State Table */ 5367 PCCT /* Platform Communications Channel Table */ 5368 PMTT /* Platform Memory Topology Table */ 5369 RASF /* RAS Feature table */ 5370 5371Operation Regions/SpaceIDs: 5372--------------------------- 5373 5374All new operation regions are fully supported by the iASL compiler, the 5375disassembler, and the ACPICA runtime code (for dispatch to region 5376handlers.) 5377The new operation region Space IDs are: 5378 5379 GeneralPurposeIo 5380 GenericSerialBus 5381 5382Resource Descriptors: 5383--------------------- 5384 5385All new ASL resource descriptors are fully supported by the iASL 5386compiler, 5387the 5388ASL/AML disassembler, and the ACPICA runtime Resource Manager code 5389(including 5390all new predefined resource tags). New descriptors are: 5391 5392 FixedDma 5393 GpioIo 5394 GpioInt 5395 I2cSerialBus 5396 SpiSerialBus 5397 UartSerialBus 5398 5399ASL/AML Operators, New and Modified: 5400------------------------------------ 5401 5402One new operator is added, the Connection operator, which is used to 5403associate 5404a GeneralPurposeIo or GenericSerialBus resource descriptor with 5405individual 5406field objects within an operation region. Several new protocols are 5407associated 5408with the AccessAs operator. All are fully supported by the iASL compiler, 5409disassembler, and runtime ACPICA AML interpreter: 5410 5411 Connection // Declare Field Connection 5412attributes 5413 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 5414 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 5415Protocol 5416 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 5417 RawDataBuffer // Data type for Vendor Data 5418fields 5419 5420Predefined ASL/AML Objects: 5421--------------------------- 5422 5423All new predefined objects/control-methods are supported by the iASL 5424compiler 5425and the ACPICA runtime validation/repair (arguments and return values.) 5426New 5427predefined names include the following: 5428 5429Standard Predefined Names (Objects or Control Methods): 5430 _AEI, _CLS, _CPC, _CWS, _DEP, 5431 _DLM, _EVT, _GCP, _CRT, _GWS, 5432 _HRV, _PRE, _PSE, _SRT, _SUB. 5433 5434Resource Tags (Names used to access individual fields within resource 5435descriptors): 5436 _DBT, _DPL, _DRS, _END, _FLC, 5437 _IOR, _LIN, _MOD, _PAR, _PHA, 5438 _PIN, _PPI, _POL, _RXL, _SLV, 5439 _SPE, _STB, _TXL, _VEN. 5440 5441ACPICA External Interfaces: 5442--------------------------- 5443 5444Several new interfaces have been defined for use by ACPI-related device 5445drivers and other host OS services: 5446 5447AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 5448to 5449acquire and release AML mutexes that are defined in the DSDT/SSDT tables 5450provided by the BIOS. They are intended to be used in conjunction with 5451the 5452ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 5453mutual exclusion with the AML code/interpreter. 5454 5455AcpiGetEventResources: Returns the (formatted) resource descriptors as 5456defined 5457by the ACPI 5.0 _AEI object (ACPI Event Information). This object 5458provides 5459resource descriptors associated with hardware-reduced platform events, 5460similar 5461to the AcpiGetCurrentResources interface. 5462 5463Operation Region Handlers: For General Purpose IO and Generic Serial Bus 5464operation regions, information about the Connection() object and any 5465optional 5466length information is passed to the region handler within the Context 5467parameter. 5468 5469AcpiBufferToResource: This interface converts a raw AML buffer containing 5470a 5471resource template or resource descriptor to the ACPI_RESOURCE internal 5472format 5473suitable for use by device drivers. Can be used by an operation region 5474handler 5475to convert the Connection() buffer object into a ACPI_RESOURCE. 5476 5477Miscellaneous/Tools/TestSuites: 5478------------------------------- 5479 5480Support for extended _HID names (Four alpha characters instead of three). 5481Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 5482Support for ACPI 5.0 features in the ASLTS test suite. 5483Fully updated documentation (ACPICA and iASL reference documents.) 5484 5485ACPI Table Definition Language: 5486------------------------------- 5487 5488Support for this language was implemented and released as a subsystem of 5489the 5490iASL compiler in 2010. (See the iASL compiler User Guide.) 5491 5492 5493Non-ACPI 5.0 changes for this release: 5494-------------------------------------- 5495 54961) ACPICA Core Subsystem: 5497 5498Fix a problem with operation region declarations where a failure can 5499occur 5500if 5501the region name and an argument that evaluates to an object (such as the 5502region address) are in different namespace scopes. Lin Ming, ACPICA BZ 5503937. 5504 5505Do not abort an ACPI table load if an invalid space ID is found within. 5506This 5507will be caught later if the offending method is executed. ACPICA BZ 925. 5508 5509Fixed an issue with the FFixedHW space ID where the ID was not always 5510recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 5511 5512Fixed a problem with the 32-bit generation of the unix-specific OSL 5513(osunixxf.c). Lin Ming, ACPICA BZ 936. 5514 5515Several changes made to enable generation with the GCC 4.6 compiler. 5516ACPICA BZ 5517935. 5518 5519New error messages: Unsupported I/O requests (not 8/16/32 bit), and 5520Index/Bank 5521field registers out-of-range. 5522 55232) iASL Compiler/Disassembler and Tools: 5524 5525iASL: Implemented the __PATH__ operator, which returns the full pathname 5526of 5527the current source file. 5528 5529AcpiHelp: Automatically display expanded keyword information for all ASL 5530operators. 5531 5532Debugger: Add "Template" command to disassemble/dump resource template 5533buffers. 5534 5535Added a new master script to generate and execute the ASLTS test suite. 5536Automatically handles 32- and 64-bit generation. See tests/aslts.sh 5537 5538iASL: Fix problem with listing generation during processing of the 5539Switch() 5540operator where AML listing was disabled until the entire Switch block was 5541completed. 5542 5543iASL: Improve support for semicolon statement terminators. Fix "invalid 5544character" message for some cases when the semicolon is used. Semicolons 5545are 5546now allowed after every <Term> grammar element. ACPICA BZ 927. 5547 5548iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 5549923. 5550 5551Disassembler: Fix problem with disassembly of the DataTableRegion 5552operator 5553where an inadvertent "Unhandled deferred opcode" message could be 5554generated. 5555 55563) Example Code and Data Size 5557 5558These are the sizes for the OS-independent acpica.lib produced by the 5559Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 5560includes the debug output trace mechanism and has a much larger code and 5561data 5562size. 5563 5564 Previous Release: 5565 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5566 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5567 Current Release: 5568 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 5569 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 5570 5571---------------------------------------- 557222 September 2011. Summary of changes for version 20110922: 5573 55740) ACPI 5.0 News: 5575 5576Support for ACPI 5.0 in ACPICA has been underway for several months and 5577will 5578be released at the same time that ACPI 5.0 is officially released. 5579 5580The ACPI 5.0 specification is on track for release in the next few 5581months. 5582 55831) ACPICA Core Subsystem: 5584 5585Fixed a problem where the maximum sleep time for the Sleep() operator was 5586intended to be limited to two seconds, but was inadvertently limited to 558720 5588seconds instead. 5589 5590Linux and Unix makefiles: Added header file dependencies to ensure 5591correct 5592generation of ACPICA core code and utilities. Also simplified the 5593makefiles 5594considerably through the use of the vpath variable to specify search 5595paths. 5596ACPICA BZ 924. 5597 55982) iASL Compiler/Disassembler and Tools: 5599 5600iASL: Implemented support to check the access length for all fields 5601created to 5602access named Resource Descriptor fields. For example, if a resource field 5603is 5604defined to be two bits, a warning is issued if a CreateXxxxField() is 5605used 5606with an incorrect bit length. This is implemented for all current 5607resource 5608descriptor names. ACPICA BZ 930. 5609 5610Disassembler: Fixed a byte ordering problem with the output of 24-bit and 561156- 5612bit integers. 5613 5614iASL: Fixed a couple of issues associated with variable-length package 5615objects. 1) properly handle constants like One, Ones, Zero -- do not make 5616a 5617VAR_PACKAGE when these are used as a package length. 2) Allow the 5618VAR_PACKAGE 5619opcode (in addition to PACKAGE) when validating object types for 5620predefined 5621names. 5622 5623iASL: Emit statistics for all output files (instead of just the ASL input 5624and 5625AML output). Includes listings, hex files, etc. 5626 5627iASL: Added -G option to the table compiler to allow the compilation of 5628custom 5629ACPI tables. The only part of a table that is required is the standard 563036- 5631byte 5632ACPI header. 5633 5634AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 5635headers), 5636which also adds correct 64-bit support. Also, now all output filenames 5637are 5638completely lower case. 5639 5640AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 5641loading table files. A warning is issued for any such tables. The only 5642exception is an FADT. This also fixes a possible fault when attempting to 5643load 5644non-AML tables. ACPICA BZ 932. 5645 5646AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 5647a 5648missing table terminator could cause a fault when using the -p option. 5649 5650AcpiSrc: Fixed a possible divide-by-zero fault when generating file 5651statistics. 5652 56533) Example Code and Data Size 5654 5655These are the sizes for the OS-independent acpica.lib produced by the 5656Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 5657includes the debug output trace mechanism and has a much larger code and 5658data 5659size. 5660 5661 Previous Release (VC 9.0): 5662 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5663 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5664 Current Release (VC 9.0): 5665 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5666 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5667 5668 5669---------------------------------------- 567023 June 2011. Summary of changes for version 20110623: 5671 56721) ACPI CA Core Subsystem: 5673 5674Updated the predefined name repair mechanism to not attempt repair of a 5675_TSS 5676return object if a _PSS object is present. We can only sort the _TSS 5677return 5678package if there is no _PSS within the same scope. This is because if 5679_PSS 5680is 5681present, the ACPI specification dictates that the _TSS Power Dissipation 5682field 5683is to be ignored, and therefore some BIOSs leave garbage values in the 5684_TSS 5685Power field(s). In this case, it is best to just return the _TSS package 5686as- 5687is. Reported by, and fixed with assistance from Fenghua Yu. 5688 5689Added an option to globally disable the control method return value 5690validation 5691and repair. This runtime option can be used to disable return value 5692repair 5693if 5694this is causing a problem on a particular machine. Also added an option 5695to 5696AcpiExec (-dr) to set this disable flag. 5697 5698All makefiles and project files: Major changes to improve generation of 5699ACPICA 5700tools. ACPICA BZ 912: 5701 Reduce default optimization levels to improve compatibility 5702 For Linux, add strict-aliasing=0 for gcc 4 5703 Cleanup and simplify use of command line defines 5704 Cleanup multithread library support 5705 Improve usage messages 5706 5707Linux-specific header: update handling of THREAD_ID and pthread. For the 570832- 5709bit case, improve casting to eliminate possible warnings, especially with 5710the 5711acpica tools. 5712 5713Example Code and Data Size: These are the sizes for the OS-independent 5714acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5715debug 5716version of the code includes the debug output trace mechanism and has a 5717much 5718larger code and data size. 5719 5720 Previous Release (VC 9.0): 5721 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 5722 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5723 Current Release (VC 9.0): 5724 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5725 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5726 57272) iASL Compiler/Disassembler and Tools: 5728 5729With this release, a new utility named "acpihelp" has been added to the 5730ACPICA 5731package. This utility summarizes the ACPI specification chapters for the 5732ASL 5733and AML languages. It generates under Linux/Unix as well as Windows, and 5734provides the following functionality: 5735 Find/display ASL operator(s) -- with description and syntax. 5736 Find/display ASL keyword(s) -- with exact spelling and descriptions. 5737 Find/display ACPI predefined name(s) -- with description, number 5738 of arguments, and the return value data type. 5739 Find/display AML opcode name(s) -- with opcode, arguments, and 5740grammar. 5741 Decode/display AML opcode -- with opcode name, arguments, and 5742grammar. 5743 5744Service Layers: Make multi-thread support configurable. Conditionally 5745compile 5746the multi-thread support so that threading libraries will not be linked 5747if 5748not 5749necessary. The only tool that requires multi-thread support is AcpiExec. 5750 5751iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 5752of 5753Bison appear to want the interface to yyerror to be a const char * (or at 5754least this is a problem when generating iASL on some systems.) ACPICA BZ 5755923 5756Pierre Lejeune. 5757 5758Tools: Fix for systems where O_BINARY is not defined. Only used for 5759Windows 5760versions of the tools. 5761 5762---------------------------------------- 576327 May 2011. Summary of changes for version 20110527: 5764 57651) ACPI CA Core Subsystem: 5766 5767ASL Load() operator: Reinstate most restrictions on the incoming ACPI 5768table 5769signature. Now, only allow SSDT, OEMx, and a null signature. History: 5770 1) Originally, we checked the table signature for "SSDT" or "PSDT". 5771 (PSDT is now obsolete.) 5772 2) We added support for OEMx tables, signature "OEM" plus a fourth 5773 "don't care" character. 5774 3) Valid tables were encountered with a null signature, so we just 5775 gave up on validating the signature, (05/2008). 5776 4) We encountered non-AML tables such as the MADT, which caused 5777 interpreter errors and kernel faults. So now, we once again allow 5778 only SSDT, OEMx, and now, also a null signature. (05/2011). 5779 5780Added the missing _TDL predefined name to the global name list in order 5781to 5782enable validation. Affects both the core ACPICA code and the iASL 5783compiler. 5784 5785Example Code and Data Size: These are the sizes for the OS-independent 5786acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5787debug 5788version of the code includes the debug output trace mechanism and has a 5789much 5790larger code and data size. 5791 5792 Previous Release (VC 9.0): 5793 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 5794 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 5795 Current Release (VC 9.0): 5796 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 5797 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5798 57992) iASL Compiler/Disassembler and Tools: 5800 5801Debugger/AcpiExec: Implemented support for "complex" method arguments on 5802the 5803debugger command line. This adds support beyond simple integers -- 5804including 5805Strings, Buffers, and Packages. Includes support for nested packages. 5806Increased the default command line buffer size to accommodate these 5807arguments. 5808See the ACPICA reference for details and syntax. ACPICA BZ 917. 5809 5810Debugger/AcpiExec: Implemented support for "default" method arguments for 5811the 5812Execute/Debug command. Now, the debugger will always invoke a control 5813method 5814with the required number of arguments -- even if the command line 5815specifies 5816none or insufficient arguments. It uses default integer values for any 5817missing 5818arguments. Also fixes a bug where only six method arguments maximum were 5819supported instead of the required seven. 5820 5821Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 5822and 5823also return status in order to prevent buffer overruns. See the ACPICA 5824reference for details and syntax. ACPICA BZ 921 5825 5826iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 5827makefiles to simplify support for the two different but similar parser 5828generators, bison and yacc. 5829 5830Updated the generic unix makefile for gcc 4. The default gcc version is 5831now 5832expected to be 4 or greater, since options specific to gcc 4 are used. 5833 5834---------------------------------------- 583513 April 2011. Summary of changes for version 20110413: 5836 58371) ACPI CA Core Subsystem: 5838 5839Implemented support to execute a so-called "orphan" _REG method under the 5840EC 5841device. This change will force the execution of a _REG method underneath 5842the 5843EC 5844device even if there is no corresponding operation region of type 5845EmbeddedControl. Fixes a problem seen on some machines and apparently is 5846compatible with Windows behavior. ACPICA BZ 875. 5847 5848Added more predefined methods that are eligible for automatic NULL 5849package 5850element removal. This change adds another group of predefined names to 5851the 5852list 5853of names that can be repaired by having NULL package elements dynamically 5854removed. This group are those methods that return a single variable- 5855length 5856package containing simple data types such as integers, buffers, strings. 5857This 5858includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 5859_PSL, 5860_Sx, 5861and _TZD. ACPICA BZ 914. 5862 5863Split and segregated all internal global lock functions to a new file, 5864evglock.c. 5865 5866Updated internal address SpaceID for DataTable regions. Moved this 5867internal 5868space 5869id in preparation for ACPI 5.0 changes that will include some new space 5870IDs. 5871This 5872change should not affect user/host code. 5873 5874Example Code and Data Size: These are the sizes for the OS-independent 5875acpica.lib 5876produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 5877version of 5878the code includes the debug output trace mechanism and has a much larger 5879code 5880and 5881data size. 5882 5883 Previous Release (VC 9.0): 5884 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 5885 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 5886 Current Release (VC 9.0): 5887 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 5888 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 5889 58902) iASL Compiler/Disassembler and Tools: 5891 5892iASL/DTC: Major update for new grammar features. Allow generic data types 5893in 5894custom ACPI tables. Field names are now optional. Any line can be split 5895to 5896multiple lines using the continuation char (\). Large buffers now use 5897line- 5898continuation character(s) and no colon on the continuation lines. See the 5899grammar 5900update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 5901Moore. 5902 5903iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 5904statements. 5905Since the parser stuffs a "zero" as the return value for these statements 5906(due 5907to 5908the underlying AML grammar), they were seen as "return with value" by the 5909iASL 5910semantic checking. They are now seen correctly as "null" return 5911statements. 5912 5913iASL: Check if a_REG declaration has a corresponding Operation Region. 5914Adds a 5915check for each _REG to ensure that there is in fact a corresponding 5916operation 5917region declaration in the same scope. If not, the _REG method is not very 5918useful 5919since it probably won't be executed. ACPICA BZ 915. 5920 5921iASL/DTC: Finish support for expression evaluation. Added a new 5922expression 5923parser 5924that implements c-style operator precedence and parenthesization. ACPICA 5925bugzilla 5926908. 5927 5928Disassembler/DTC: Remove support for () and <> style comments in data 5929tables. 5930Now 5931that DTC has full expression support, we don't want to have comment 5932strings 5933that 5934start with a parentheses or a less-than symbol. Now, only the standard /* 5935and 5936// 5937comments are supported, as well as the bracket [] comments. 5938 5939AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 5940"unusual" 5941headers in the acpidump file. Update the header validation to support 5942these 5943tables. Problem introduced in previous AcpiXtract version in the change 5944to 5945support "wrong checksum" error messages emitted by acpidump utility. 5946 5947iASL: Add a * option to generate all template files (as a synonym for 5948ALL) 5949as 5950in 5951"iasl -T *" or "iasl -T ALL". 5952 5953iASL/DTC: Do not abort compiler on fatal errors. We do not want to 5954completely 5955abort the compiler on "fatal" errors, simply should abort the current 5956compile. 5957This allows multiple compiles with a single (possibly wildcard) compiler 5958invocation. 5959 5960---------------------------------------- 596116 March 2011. Summary of changes for version 20110316: 5962 59631) ACPI CA Core Subsystem: 5964 5965Fixed a problem caused by a _PRW method appearing at the namespace root 5966scope 5967during the setup of wake GPEs. A fault could occur if a _PRW directly 5968under 5969the 5970root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 5971 5972Implemented support for "spurious" Global Lock interrupts. On some 5973systems, a 5974global lock interrupt can occur without the pending flag being set. Upon 5975a 5976GL 5977interrupt, we now ensure that a thread is actually waiting for the lock 5978before 5979signaling GL availability. Rafael Wysocki, Bob Moore. 5980 5981Example Code and Data Size: These are the sizes for the OS-independent 5982acpica.lib 5983produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 5984version of 5985the code includes the debug output trace mechanism and has a much larger 5986code 5987and 5988data size. 5989 5990 Previous Release (VC 9.0): 5991 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5992 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5993 Current Release (VC 9.0): 5994 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 5995 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 5996 59972) iASL Compiler/Disassembler and Tools: 5998 5999Implemented full support for the "SLIC" ACPI table. Includes support in 6000the 6001header files, disassembler, table compiler, and template generator. Bob 6002Moore, 6003Lin Ming. 6004 6005AcpiXtract: Correctly handle embedded comments and messages from 6006AcpiDump. 6007Apparently some or all versions of acpidump will occasionally emit a 6008comment 6009like 6010"Wrong checksum", etc., into the dump file. This was causing problems for 6011AcpiXtract. ACPICA BZ 905. 6012 6013iASL: Fix the Linux makefile by removing an inadvertent double file 6014inclusion. 6015ACPICA BZ 913. 6016 6017AcpiExec: Update installation of operation region handlers. Install one 6018handler 6019for a user-defined address space. This is used by the ASL test suite 6020(ASLTS). 6021 6022---------------------------------------- 602311 February 2011. Summary of changes for version 20110211: 6024 60251) ACPI CA Core Subsystem: 6026 6027Added a mechanism to defer _REG methods for some early-installed 6028handlers. 6029Most user handlers should be installed before call to 6030AcpiEnableSubsystem. 6031However, Event handlers and region handlers should be installed after 6032AcpiInitializeObjects. Override handlers for the "default" regions should 6033be 6034installed early, however. This change executes all _REG methods for the 6035default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 6036chicken/egg issues between them. ACPICA BZ 848. 6037 6038Implemented an optimization for GPE detection. This optimization will 6039simply 6040ignore GPE registers that contain no enabled GPEs -- there is no need to 6041read the register since this information is available internally. This 6042becomes more important on machines with a large GPE space. ACPICA 6043bugzilla 6044884. Lin Ming. Suggestion from Joe Liu. 6045 6046Removed all use of the highly unreliable FADT revision field. The 6047revision 6048number in the FADT has been found to be completely unreliable and cannot 6049be 6050trusted. Only the actual table length can be used to infer the version. 6051This 6052change updates the ACPICA core and the disassembler so that both no 6053longer 6054even look at the FADT version and instead depend solely upon the FADT 6055length. 6056 6057Fix an unresolved name issue for the no-debug and no-error-message source 6058generation cases. The _AcpiModuleName was left undefined in these cases, 6059but 6060it is actually needed as a parameter to some interfaces. Define 6061_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 6062 6063Split several large files (makefiles and project files updated) 6064 utglobal.c -> utdecode.c 6065 dbcomds.c -> dbmethod.c dbnames.c 6066 dsopcode.c -> dsargs.c dscontrol.c 6067 dsload.c -> dsload2.c 6068 aslanalyze.c -> aslbtypes.c aslwalks.c 6069 6070Example Code and Data Size: These are the sizes for the OS-independent 6071acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6072debug version of the code includes the debug output trace mechanism and 6073has 6074a much larger code and data size. 6075 6076 Previous Release (VC 9.0): 6077 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6078 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6079 Current Release (VC 9.0): 6080 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6081 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6082 60832) iASL Compiler/Disassembler and Tools: 6084 6085iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 6086These are useful C-style macros with the standard definitions. ACPICA 6087bugzilla 898. 6088 6089iASL/DTC: Added support for integer expressions and labels. Support for 6090full 6091expressions for all integer fields in all ACPI tables. Support for labels 6092in 6093"generic" portions of tables such as UEFI. See the iASL reference manual. 6094 6095Debugger: Added a command to display the status of global handlers. The 6096"handlers" command will display op region, fixed event, and miscellaneous 6097global handlers. installation status -- and for op regions, whether 6098default 6099or user-installed handler will be used. 6100 6101iASL: Warn if reserved method incorrectly returns a value. Many 6102predefined 6103names are defined such that they do not return a value. If implemented as 6104a 6105method, issue a warning if such a name explicitly returns a value. ACPICA 6106Bugzilla 855. 6107 6108iASL: Added detection of GPE method name conflicts. Detects a conflict 6109where 6110there are two GPE methods of the form _Lxy and _Exy in the same scope. 6111(For 6112example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 6113 6114iASL/DTC: Fixed a couple input scanner issues with comments and line 6115numbers. Comment remover could get confused and miss a comment ending. 6116Fixed 6117a problem with line counter maintenance. 6118 6119iASL/DTC: Reduced the severity of some errors from fatal to error. There 6120is 6121no need to abort on simple errors within a field definition. 6122 6123Debugger: Simplified the output of the help command. All help output now 6124in 6125a single screen, instead of help subcommands. ACPICA Bugzilla 897. 6126 6127---------------------------------------- 612812 January 2011. Summary of changes for version 20110112: 6129 61301) ACPI CA Core Subsystem: 6131 6132Fixed a race condition between method execution and namespace walks that 6133can 6134possibly cause a fault. The problem was apparently introduced in version 613520100528 as a result of a performance optimization that reduces the 6136number 6137of 6138namespace walks upon method exit by using the delete_namespace_subtree 6139function instead of the delete_namespace_by_owner function used 6140previously. 6141Bug is a missing namespace lock in the delete_namespace_subtree function. 6142dana.myers@oracle.com 6143 6144Fixed several issues and a possible fault with the automatic "serialized" 6145method support. History: This support changes a method to "serialized" on 6146the 6147fly if the method generates an AE_ALREADY_EXISTS error, indicating the 6148possibility that it cannot handle reentrancy. This fix repairs a couple 6149of 6150issues seen in the field, especially on machines with many cores: 6151 6152 1) Delete method children only upon the exit of the last thread, 6153 so as to not delete objects out from under other running threads 6154 (and possibly causing a fault.) 6155 2) Set the "serialized" bit for the method only upon the exit of the 6156 Last thread, so as to not cause deadlock when running threads 6157 attempt to exit. 6158 3) Cleanup the use of the AML "MethodFlags" and internal method flags 6159 so that there is no longer any confusion between the two. 6160 6161 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 6162 6163Debugger: Now lock the namespace for duration of a namespace dump. 6164Prevents 6165issues if the namespace is changing dynamically underneath the debugger. 6166Especially affects temporary namespace nodes, since the debugger displays 6167these also. 6168 6169Updated the ordering of include files. The ACPICA headers should appear 6170before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 6171set 6172any necessary compiler-specific defines, etc. Affects the ACPI-related 6173tools 6174and utilities. 6175 6176Updated all ACPICA copyrights and signons to 2011. Added the 2011 6177copyright 6178to all module headers and signons, including the Linux header. This 6179affects 6180virtually every file in the ACPICA core subsystem, iASL compiler, and all 6181utilities. 6182 6183Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 6184project files for VC++ 6.0 are now obsolete. New project files can be 6185found 6186under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 6187details. 6188 6189Example Code and Data Size: These are the sizes for the OS-independent 6190acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6191debug version of the code includes the debug output trace mechanism and 6192has a 6193much larger code and data size. 6194 6195 Previous Release (VC 6.0): 6196 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 6197 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 6198 Current Release (VC 9.0): 6199 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6200 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6201 62022) iASL Compiler/Disassembler and Tools: 6203 6204iASL: Added generic data types to the Data Table compiler. Add "generic" 6205data 6206types such as UINT32, String, Unicode, etc., to simplify the generation 6207of 6208platform-defined tables such as UEFI. Lin Ming. 6209 6210iASL: Added listing support for the Data Table Compiler. Adds listing 6211support 6212(-l) to display actual binary output for each line of input code. 6213 6214---------------------------------------- 621509 December 2010. Summary of changes for version 20101209: 6216 62171) ACPI CA Core Subsystem: 6218 6219Completed the major overhaul of the GPE support code that was begun in 6220July 62212010. Major features include: removal of _PRW execution in ACPICA (host 6222executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 6223changes to existing interfaces, simplification of GPE handler operation, 6224and 6225a handful of new interfaces: 6226 6227 AcpiUpdateAllGpes 6228 AcpiFinishGpe 6229 AcpiSetupGpeForWake 6230 AcpiSetGpeWakeMask 6231 One new file, evxfgpe.c to consolidate all external GPE interfaces. 6232 6233See the ACPICA Programmer Reference for full details and programming 6234information. See the new section 4.4 "General Purpose Event (GPE) 6235Support" 6236for a full overview, and section 8.7 "ACPI General Purpose Event 6237Management" 6238for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 6239Ming, 6240Bob Moore, Rafael Wysocki. 6241 6242Implemented a new GPE feature for Windows compatibility, the "Implicit 6243Wake 6244GPE Notify". This feature will automatically issue a Notify(2) on a 6245device 6246when a Wake GPE is received if there is no corresponding GPE method or 6247handler. ACPICA BZ 870. 6248 6249Fixed a problem with the Scope() operator during table parse and load 6250phase. 6251During load phase (table load or method execution), the scope operator 6252should 6253not enter the target into the namespace. Instead, it should open a new 6254scope 6255at the target location. Linux BZ 19462, ACPICA BZ 882. 6256 6257Example Code and Data Size: These are the sizes for the OS-independent 6258acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6259debug version of the code includes the debug output trace mechanism and 6260has a 6261much larger code and data size. 6262 6263 Previous Release: 6264 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 6265 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 6266 Current Release: 6267 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6268 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6269 62702) iASL Compiler/Disassembler and Tools: 6271 6272iASL: Relax the alphanumeric restriction on _CID strings. These strings 6273are 6274"bus-specific" per the ACPI specification, and therefore any characters 6275are 6276acceptable. The only checks that can be performed are for a null string 6277and 6278perhaps for a leading asterisk. ACPICA BZ 886. 6279 6280iASL: Fixed a problem where a syntax error that caused a premature EOF 6281condition on the source file emitted a very confusing error message. The 6282premature EOF is now detected correctly. ACPICA BZ 891. 6283 6284Disassembler: Decode the AccessSize within a Generic Address Structure 6285(byte 6286access, word access, etc.) Note, this field does not allow arbitrary bit 6287access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 6288 6289New: AcpiNames utility - Example namespace dump utility. Shows an example 6290of 6291ACPICA configuration for a minimal namespace dump utility. Uses table and 6292namespace managers, but no AML interpreter. Does not add any 6293functionality 6294over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 6295partition and configure ACPICA. ACPICA BZ 883. 6296 6297AML Debugger: Increased the debugger buffer size for method return 6298objects. 6299Was 4K, increased to 16K. Also enhanced error messages for debugger 6300method 6301execution, including the buffer overflow case. 6302 6303---------------------------------------- 630413 October 2010. Summary of changes for version 20101013: 6305 63061) ACPI CA Core Subsystem: 6307 6308Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 6309now 6310clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 6311HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 6312 6313Changed the type of the predefined namespace object _TZ from ThermalZone 6314to 6315Device. This was found to be confusing to the host software that 6316processes 6317the various thermal zones, since _TZ is not really a ThermalZone. 6318However, 6319a 6320Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 6321Zhang. 6322 6323Added Windows Vista SP2 to the list of supported _OSI strings. The actual 6324string is "Windows 2006 SP2". 6325 6326Eliminated duplicate code in AcpiUtExecute* functions. Now that the 6327nsrepair 6328code automatically repairs _HID-related strings, this type of code is no 6329longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 6330878. 6331 6332Example Code and Data Size: These are the sizes for the OS-independent 6333acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6334debug version of the code includes the debug output trace mechanism and 6335has a 6336much larger code and data size. 6337 6338 Previous Release: 6339 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6340 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6341 Current Release: 6342 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6343 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6344 63452) iASL Compiler/Disassembler and Tools: 6346 6347iASL: Implemented additional compile-time validation for _HID strings. 6348The 6349non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 6350length 6351of 6352the string must be exactly seven or eight characters. For both _HID and 6353_CID 6354strings, all characters must be alphanumeric. ACPICA BZ 874. 6355 6356iASL: Allow certain "null" resource descriptors. Some BIOS code creates 6357descriptors that are mostly or all zeros, with the expectation that they 6358will 6359be filled in at runtime. iASL now allows this as long as there is a 6360"resource 6361tag" (name) associated with the descriptor, which gives the ASL a handle 6362needed to modify the descriptor. ACPICA BZ 873. 6363 6364Added single-thread support to the generic Unix application OSL. 6365Primarily 6366for iASL support, this change removes the use of semaphores in the 6367single- 6368threaded ACPICA tools/applications - increasing performance. The 6369_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 6370option. ACPICA BZ 879. 6371 6372AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 6373support 6374for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 6375 6376iASL: Moved all compiler messages to a new file, aslmessages.h. 6377 6378---------------------------------------- 637915 September 2010. Summary of changes for version 20100915: 6380 63811) ACPI CA Core Subsystem: 6382 6383Removed the AcpiOsDerivePciId OSL interface. The various host 6384implementations 6385of this function were not OS-dependent and are now obsolete and can be 6386removed from all host OSLs. This function has been replaced by 6387AcpiHwDerivePciId, which is now part of the ACPICA core code. 6388AcpiHwDerivePciId has been implemented without recursion. Adds one new 6389module, hwpci.c. ACPICA BZ 857. 6390 6391Implemented a dynamic repair for _HID and _CID strings. The following 6392problems are now repaired at runtime: 1) Remove a leading asterisk in the 6393string, and 2) the entire string is uppercased. Both repairs are in 6394accordance with the ACPI specification and will simplify host driver 6395code. 6396ACPICA BZ 871. 6397 6398The ACPI_THREAD_ID type is no longer configurable, internally it is now 6399always UINT64. This simplifies the ACPICA code, especially any printf 6400output. 6401UINT64 is the only common data type for all thread_id types across all 6402operating systems. It is now up to the host OSL to cast the native 6403thread_id 6404type to UINT64 before returning the value to ACPICA (via 6405AcpiOsGetThreadId). 6406Lin Ming, Bob Moore. 6407 6408Added the ACPI_INLINE type to enhance the ACPICA configuration. The 6409"inline" 6410keyword is not standard across compilers, and this type allows inline to 6411be 6412configured on a per-compiler basis. Lin Ming. 6413 6414Made the system global AcpiGbl_SystemAwakeAndRunning publically 6415available. 6416Added an extern for this boolean in acpixf.h. Some hosts utilize this 6417value 6418during suspend/restore operations. ACPICA BZ 869. 6419 6420All code that implements error/warning messages with the "ACPI:" prefix 6421has 6422been moved to a new module, utxferror.c. 6423 6424The UINT64_OVERLAY was moved to utmath.c, which is the only module where 6425it 6426is used. ACPICA BZ 829. Lin Ming, Bob Moore. 6427 6428Example Code and Data Size: These are the sizes for the OS-independent 6429acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6430debug version of the code includes the debug output trace mechanism and 6431has a 6432much larger code and data size. 6433 6434 Previous Release: 6435 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 6436 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 6437 Current Release: 6438 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6439 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6440 64412) iASL Compiler/Disassembler and Tools: 6442 6443iASL/Disassembler: Write ACPI errors to stderr instead of the output 6444file. 6445This keeps the output files free of random error messages that may 6446originate 6447from within the namespace/interpreter code. Used this opportunity to 6448merge 6449all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 6450866. Lin Ming, Bob Moore. 6451 6452Tools: update some printfs for ansi warnings on size_t. Handle width 6453change 6454of size_t on 32-bit versus 64-bit generations. Lin Ming. 6455 6456---------------------------------------- 645706 August 2010. Summary of changes for version 20100806: 6458 64591) ACPI CA Core Subsystem: 6460 6461Designed and implemented a new host interface to the _OSI support code. 6462This 6463will allow the host to dynamically add or remove multiple _OSI strings, 6464as 6465well as install an optional handler that is called for each _OSI 6466invocation. 6467Also added a new AML debugger command, 'osi' to display and modify the 6468global 6469_OSI string table, and test support in the AcpiExec utility. See the 6470ACPICA 6471reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 6472New Functions: 6473 AcpiInstallInterface - Add an _OSI string. 6474 AcpiRemoveInterface - Delete an _OSI string. 6475 AcpiInstallInterfaceHandler - Install optional _OSI handler. 6476Obsolete Functions: 6477 AcpiOsValidateInterface - no longer used. 6478New Files: 6479 source/components/utilities/utosi.c 6480 6481Re-introduced the support to enable multi-byte transfers for Embedded 6482Controller (EC) operation regions. A reported problem was found to be a 6483bug 6484in the host OS, not in the multi-byte support. Previously, the maximum 6485data 6486size passed to the EC operation region handler was a single byte. There 6487are 6488often EC Fields larger than one byte that need to be transferred, and it 6489is 6490useful for the EC driver to lock these as a single transaction. This 6491change 6492enables single transfers larger than 8 bits. This effectively changes the 6493access to the EC space from ByteAcc to AnyAcc, and will probably require 6494changes to the host OS Embedded Controller driver to enable 16/32/64/256- 6495bit 6496transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 6497 6498Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 6499prototype in acpiosxf.h had the output value pointer as a (void *). 6500It should be a (UINT64 *). This may affect some host OSL code. 6501 6502Fixed a couple problems with the recently modified Linux makefiles for 6503iASL 6504and AcpiExec. These new makefiles place the generated object files in the 6505local directory so that there can be no collisions between the files that 6506are 6507shared between them that are compiled with different options. 6508 6509Example Code and Data Size: These are the sizes for the OS-independent 6510acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6511debug version of the code includes the debug output trace mechanism and 6512has a 6513much larger code and data size. 6514 6515 Previous Release: 6516 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6517 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 6518 Current Release: 6519 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 6520 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 6521 65222) iASL Compiler/Disassembler and Tools: 6523 6524iASL/Disassembler: Added a new option (-da, "disassemble all") to load 6525the 6526namespace from and disassemble an entire group of AML files. Useful for 6527loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 6528and 6529disassembling with one simple command. ACPICA BZ 865. Lin Ming. 6530 6531iASL: Allow multiple invocations of -e option. This change allows 6532multiple 6533uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 6534834. 6535Lin Ming. 6536 6537---------------------------------------- 653802 July 2010. Summary of changes for version 20100702: 6539 65401) ACPI CA Core Subsystem: 6541 6542Implemented several updates to the recently added GPE reference count 6543support. The model for "wake" GPEs is changing to give the host OS 6544complete 6545control of these GPEs. Eventually, the ACPICA core will not execute any 6546_PRW 6547methods, since the host already must execute them. Also, additional 6548changes 6549were made to help ensure that the reference counts are kept in proper 6550synchronization with reality. Rafael J. Wysocki. 6551 65521) Ensure that GPEs are not enabled twice during initialization. 65532) Ensure that GPE enable masks stay in sync with the reference count. 65543) Do not inadvertently enable GPEs when writing GPE registers. 65554) Remove the internal wake reference counter and add new AcpiGpeWakeup 6556interface. This interface will set or clear individual GPEs for wakeup. 65575) Remove GpeType argument from AcpiEnable and AcpiDisable. These 6558interfaces 6559are now used for "runtime" GPEs only. 6560 6561Changed the behavior of the GPE install/remove handler interfaces. The 6562GPE 6563is 6564no longer disabled during this process, as it was found to cause problems 6565on 6566some machines. Rafael J. Wysocki. 6567 6568Reverted a change introduced in version 20100528 to enable Embedded 6569Controller multi-byte transfers. This change was found to cause problems 6570with 6571Index Fields and possibly Bank Fields. It will be reintroduced when these 6572problems have been resolved. 6573 6574Fixed a problem with references to Alias objects within Package Objects. 6575A 6576reference to an Alias within the definition of a Package was not always 6577resolved properly. Aliases to objects like Processors, Thermal zones, 6578etc. 6579were resolved to the actual object instead of a reference to the object 6580as 6581it 6582should be. Package objects are only allowed to contain integer, string, 6583buffer, package, and reference objects. Redhat bugzilla 608648. 6584 6585Example Code and Data Size: These are the sizes for the OS-independent 6586acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6587debug version of the code includes the debug output trace mechanism and 6588has a 6589much larger code and data size. 6590 6591 Previous Release: 6592 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6593 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 6594 Current Release: 6595 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6596 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 6597 65982) iASL Compiler/Disassembler and Tools: 6599 6600iASL: Implemented a new compiler subsystem to allow definition and 6601compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 6602These 6603are called "ACPI Data Tables", and the new compiler is the "Data Table 6604Compiler". This compiler is intended to simplify the existing error-prone 6605process of creating these tables for the BIOS, as well as allowing the 6606disassembly, modification, recompilation, and override of existing ACPI 6607data 6608tables. See the iASL User Guide for detailed information. 6609 6610iASL: Implemented a new Template Generator option in support of the new 6611Data 6612Table Compiler. This option will create examples of all known ACPI tables 6613that can be used as the basis for table development. See the iASL 6614documentation and the -T option. 6615 6616Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 6617Descriptor Table). 6618 6619Updated the Linux makefiles for iASL and AcpiExec to place the generated 6620object files in the local directory so that there can be no collisions 6621between the shared files between them that are generated with different 6622options. 6623 6624Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 6625Use 6626the #define __APPLE__ to enable this support. 6627 6628---------------------------------------- 662928 May 2010. Summary of changes for version 20100528: 6630 6631Note: The ACPI 4.0a specification was released on April 5, 2010 and is 6632available at www.acpi.info. This is primarily an errata release. 6633 66341) ACPI CA Core Subsystem: 6635 6636Undefined ACPI tables: We are looking for the definitions for the 6637following 6638ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 6639 6640Implemented support to enable multi-byte transfers for Embedded 6641Controller 6642(EC) operation regions. Previously, the maximum data size passed to the 6643EC 6644operation region handler was a single byte. There are often EC Fields 6645larger 6646than one byte that need to be transferred, and it is useful for the EC 6647driver 6648to lock these as a single transaction. This change enables single 6649transfers 6650larger than 8 bits. This effectively changes the access to the EC space 6651from 6652ByteAcc to AnyAcc, and will probably require changes to the host OS 6653Embedded 6654Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 6655bit 6656transfers. Alexey Starikovskiy, Lin Ming 6657 6658Implemented a performance enhancement for namespace search and access. 6659This 6660change enhances the performance of namespace searches and walks by adding 6661a 6662backpointer to the parent in each namespace node. On large namespaces, 6663this 6664change can improve overall ACPI performance by up to 9X. Adding a pointer 6665to 6666each namespace node increases the overall size of the internal namespace 6667by 6668about 5%, since each namespace entry usually consists of both a namespace 6669node and an ACPI operand object. However, this is the first growth of the 6670namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 6671 6672Implemented a performance optimization that reduces the number of 6673namespace 6674walks. On control method exit, only walk the namespace if the method is 6675known 6676to have created namespace objects outside of its local scope. Previously, 6677the 6678entire namespace was traversed on each control method exit. This change 6679can 6680improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 6681Moore. 6682 6683Added support to truncate I/O addresses to 16 bits for Windows 6684compatibility. 6685Some ASL code has been seen in the field that inadvertently has bits set 6686above bit 15. This feature is optional and is enabled if the BIOS 6687requests 6688any Windows OSI strings. It can also be enabled by the host OS. Matthew 6689Garrett, Bob Moore. 6690 6691Added support to limit the maximum time for the ASL Sleep() operator. To 6692prevent accidental deep sleeps, limit the maximum time that Sleep() will 6693actually sleep. Configurable, the default maximum is two seconds. ACPICA 6694bugzilla 854. 6695 6696Added run-time validation support for the _WDG and_WED Microsoft 6697predefined 6698methods. These objects are defined by "Windows Instrumentation", and are 6699not 6700part of the ACPI spec. ACPICA BZ 860. 6701 6702Expanded all statistic counters used during namespace and device 6703initialization from 16 to 32 bits in order to support very large 6704namespaces. 6705 6706Replaced all instances of %d in printf format specifiers with %u since 6707nearly 6708all integers in ACPICA are unsigned. 6709 6710Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 6711returned 6712as AE_NO_HANDLER. 6713 6714Example Code and Data Size: These are the sizes for the OS-independent 6715acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6716debug version of the code includes the debug output trace mechanism and 6717has a 6718much larger code and data size. 6719 6720 Previous Release: 6721 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 6722 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 6723 Current Release: 6724 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6725 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 6726 67272) iASL Compiler/Disassembler and Tools: 6728 6729iASL: Added compiler support for the _WDG and_WED Microsoft predefined 6730methods. These objects are defined by "Windows Instrumentation", and are 6731not 6732part of the ACPI spec. ACPICA BZ 860. 6733 6734AcpiExec: added option to disable the memory tracking mechanism. The -dt 6735option will disable the tracking mechanism, which improves performance 6736considerably. 6737 6738AcpiExec: Restructured the command line options into -d (disable) and -e 6739(enable) options. 6740 6741---------------------------------------- 674228 April 2010. Summary of changes for version 20100428: 6743 67441) ACPI CA Core Subsystem: 6745 6746Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 6747including FADT-based and GPE Block Devices, execute any _PRW methods in 6748the 6749new table, and process any _Lxx/_Exx GPE methods in the new table. Any 6750runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 6751immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 6752Devices. Provides compatibility with other ACPI implementations. Two new 6753files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 6754Moore. 6755 6756Fixed a regression introduced in version 20100331 within the table 6757manager 6758where initial table loading could fail. This was introduced in the fix 6759for 6760AcpiReallocateRootTable. Also, renamed some of fields in the table 6761manager 6762data structures to clarify their meaning and use. 6763 6764Fixed a possible allocation overrun during internal object copy in 6765AcpiUtCopySimpleObject. The original code did not correctly handle the 6766case 6767where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 6768847. 6769 6770Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 6771possible access beyond end-of-allocation. Also, now fully validate 6772descriptor 6773(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 6774 6775Example Code and Data Size: These are the sizes for the OS-independent 6776acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6777debug version of the code includes the debug output trace mechanism and 6778has a 6779much larger code and data size. 6780 6781 Previous Release: 6782 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 6783 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 6784 Current Release: 6785 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 6786 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 6787 67882) iASL Compiler/Disassembler and Tools: 6789 6790iASL: Implemented Min/Max/Len/Gran validation for address resource 6791descriptors. This change implements validation for the address fields 6792that 6793are common to all address-type resource descriptors. These checks are 6794implemented: Checks for valid Min/Max, length within the Min/Max window, 6795valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 6796per 6797table 6-40 in the ACPI 4.0a specification. Also split the large 6798aslrestype1.c 6799and aslrestype2.c files into five new files. ACPICA BZ 840. 6800 6801iASL: Added support for the _Wxx predefined names. This support was 6802missing 6803and these names were not recognized by the compiler as valid predefined 6804names. ACPICA BZ 851. 6805 6806iASL: Added an error for all predefined names that are defined to return 6807no 6808value and thus must be implemented as Control Methods. These include all 6809of 6810the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 6811names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 6812 6813iASL: Implemented the -ts option to emit hex AML data in ASL format, as 6814an 6815ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 6816be 6817dynamically loaded via the Load() operator. Also cleaned up output for 6818the 6819- 6820ta and -tc options. ACPICA BZ 853. 6821 6822Tests: Added a new file with examples of extended iASL error checking. 6823Demonstrates the advanced error checking ability of the iASL compiler. 6824Available at tests/misc/badcode.asl. 6825 6826---------------------------------------- 682731 March 2010. Summary of changes for version 20100331: 6828 68291) ACPI CA Core Subsystem: 6830 6831Completed a major update for the GPE support in order to improve support 6832for 6833shared GPEs and to simplify both host OS and ACPICA code. Added a 6834reference 6835count mechanism to support shared GPEs that require multiple device 6836drivers. 6837Several external interfaces have changed. One external interface has been 6838removed. One new external interface was added. Most of the GPE external 6839interfaces now use the GPE spinlock instead of the events mutex (and the 6840Flags parameter for many GPE interfaces has been removed.) See the 6841updated 6842ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 6843Rafael 6844Wysocki. ACPICA BZ 831. 6845 6846Changed: 6847 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 6848Removed: 6849 AcpiSetGpeType 6850New: 6851 AcpiSetGpe 6852 6853Implemented write support for DataTable operation regions. These regions 6854are 6855defined via the DataTableRegion() operator. Previously, only read support 6856was 6857implemented. The ACPI specification allows DataTableRegions to be 6858read/write, 6859however. 6860 6861Implemented a new subsystem option to force a copy of the DSDT to local 6862memory. Optionally copy the entire DSDT to local memory (instead of 6863simply 6864mapping it.) There are some (albeit very rare) BIOSs that corrupt or 6865replace 6866the original DSDT, creating the need for this option. Default is FALSE, 6867do 6868not copy the DSDT. 6869 6870Implemented detection of a corrupted or replaced DSDT. This change adds 6871support to detect a DSDT that has been corrupted and/or replaced from 6872outside 6873the OS (by firmware). This is typically catastrophic for the system, but 6874has 6875been seen on some machines. Once this problem has been detected, the DSDT 6876copy option can be enabled via system configuration. Lin Ming, Bob Moore. 6877 6878Fixed two problems with AcpiReallocateRootTable during the root table 6879copy. 6880When copying the root table to the new allocation, the length used was 6881incorrect. The new size was used instead of the current table size, 6882meaning 6883too much data was copied. Also, the count of available slots for ACPI 6884tables 6885was not set correctly. Alexey Starikovskiy, Bob Moore. 6886 6887Example Code and Data Size: These are the sizes for the OS-independent 6888acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6889debug version of the code includes the debug output trace mechanism and 6890has a 6891much larger code and data size. 6892 6893 Previous Release: 6894 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 6895 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 6896 Current Release: 6897 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 6898 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 6899 69002) iASL Compiler/Disassembler and Tools: 6901 6902iASL: Implement limited typechecking for values returned from predefined 6903control methods. The type of any returned static (unnamed) object is now 6904validated. For example, Return(1). ACPICA BZ 786. 6905 6906iASL: Fixed a predefined name object verification regression. Fixes a 6907problem 6908introduced in version 20100304. An error is incorrectly generated if a 6909predefined name is declared as a static named object with a value defined 6910using the keywords "Zero", "One", or "Ones". Lin Ming. 6911 6912iASL: Added Windows 7 support for the -g option (get local ACPI tables) 6913by 6914reducing the requested registry access rights. ACPICA BZ 842. 6915 6916Disassembler: fixed a possible fault when generating External() 6917statements. 6918Introduced in commit ae7d6fd: Properly handle externals with parent- 6919prefix 6920(carat). Fixes a string length allocation calculation. Lin Ming. 6921 6922---------------------------------------- 692304 March 2010. Summary of changes for version 20100304: 6924 69251) ACPI CA Core Subsystem: 6926 6927Fixed a possible problem with the AML Mutex handling function 6928AcpiExReleaseMutex where the function could fault under the very rare 6929condition when the interpreter has blocked, the interpreter lock is 6930released, 6931the interpreter is then reentered via the same thread, and attempts to 6932acquire an AML mutex that was previously acquired. FreeBSD report 140979. 6933Lin 6934Ming. 6935 6936Implemented additional configuration support for the AML "Debug Object". 6937Output from the debug object can now be enabled via a global variable, 6938AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 6939debugging. 6940This debug output is now available in the release version of ACPICA 6941instead 6942of just the debug version. Also, the entire debug output module can now 6943be 6944configured out of the ACPICA build if desired. One new file added, 6945executer/exdebug.c. Lin Ming, Bob Moore. 6946 6947Added header support for the ACPI MCHI table (Management Controller Host 6948Interface Table). This table was added in ACPI 4.0, but the defining 6949document 6950has only recently become available. 6951 6952Standardized output of integer values for ACPICA warnings/errors. Always 6953use 69540x prefix for hex output, always use %u for unsigned integer decimal 6955output. 6956Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 6957400 6958invocations.) These invocations were converted from the original 6959ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 6960 6961Example Code and Data Size: These are the sizes for the OS-independent 6962acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6963debug version of the code includes the debug output trace mechanism and 6964has a 6965much larger code and data size. 6966 6967 Previous Release: 6968 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 6969 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 6970 Current Release: 6971 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 6972 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 6973 69742) iASL Compiler/Disassembler and Tools: 6975 6976iASL: Implemented typechecking support for static (non-control method) 6977predefined named objects that are declared with the Name() operator. For 6978example, the type of this object is now validated to be of type Integer: 6979Name(_BBN, 1). This change migrates the compiler to using the core 6980predefined 6981name table instead of maintaining a local version. Added a new file, 6982aslpredef.c. ACPICA BZ 832. 6983 6984Disassembler: Added support for the ACPI 4.0 MCHI table. 6985 6986---------------------------------------- 698721 January 2010. Summary of changes for version 20100121: 6988 69891) ACPI CA Core Subsystem: 6990 6991Added the 2010 copyright to all module headers and signons. This affects 6992virtually every file in the ACPICA core subsystem, the iASL compiler, the 6993tools/utilities, and the test suites. 6994 6995Implemented a change to the AcpiGetDevices interface to eliminate 6996unnecessary 6997invocations of the _STA method. In the case where a specific _HID is 6998requested, do not run _STA until a _HID match is found. This eliminates 6999potentially dozens of _STA calls during a search for a particular 7000device/HID, 7001which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 7002 7003Implemented an additional repair for predefined method return values. 7004Attempt 7005to repair unexpected NULL elements within returned Package objects. 7006Create 7007an 7008Integer of value zero, a NULL String, or a zero-length Buffer as 7009appropriate. 7010ACPICA BZ 818. Lin Ming, Bob Moore. 7011 7012Removed the obsolete ACPI_INTEGER data type. This type was introduced as 7013the 7014code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 7015(with 701664-bit AML integers). It is now obsolete and this change removes it from 7017the 7018ACPICA code base, replaced by UINT64. The original typedef has been 7019retained 7020for now for compatibility with existing device driver code. ACPICA BZ 7021824. 7022 7023Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 7024in 7025the parse tree object. 7026 7027Added additional warning options for the gcc-4 generation. Updated the 7028source 7029accordingly. This includes some code restructuring to eliminate 7030unreachable 7031code, elimination of some gotos, elimination of unused return values, 7032some 7033additional casting, and removal of redundant declarations. 7034 7035Example Code and Data Size: These are the sizes for the OS-independent 7036acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7037debug version of the code includes the debug output trace mechanism and 7038has a 7039much larger code and data size. 7040 7041 Previous Release: 7042 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7043 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7044 Current Release: 7045 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7046 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7047 70482) iASL Compiler/Disassembler and Tools: 7049 7050No functional changes for this release. 7051 7052---------------------------------------- 705314 December 2009. Summary of changes for version 20091214: 7054 70551) ACPI CA Core Subsystem: 7056 7057Enhanced automatic data type conversions for predefined name repairs. 7058This 7059change expands the automatic repairs/conversions for predefined name 7060return 7061values to make Integers, Strings, and Buffers fully interchangeable. 7062Also, 7063a 7064Buffer can be converted to a Package of Integers if necessary. The 7065nsrepair.c 7066module was completely restructured. Lin Ming, Bob Moore. 7067 7068Implemented automatic removal of null package elements during predefined 7069name 7070repairs. This change will automatically remove embedded and trailing NULL 7071package elements from returned package objects that are defined to 7072contain 7073a 7074variable number of sub-packages. The driver is then presented with a 7075package 7076with no null elements to deal with. ACPICA BZ 819. 7077 7078Implemented a repair for the predefined _FDE and _GTM names. The expected 7079return value for both names is a Buffer of 5 DWORDs. This repair fixes 7080two 7081possible problems (both seen in the field), where a package of integers 7082is 7083returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 7084Kim. 7085 7086Implemented additional module-level code support. This change will 7087properly 7088execute module-level code that is not at the root of the namespace (under 7089a 7090Device object, etc.). Now executes the code within the current scope 7091instead 7092of the root. ACPICA BZ 762. Lin Ming. 7093 7094Fixed possible mutex acquisition errors when running _REG methods. Fixes 7095a 7096problem where mutex errors can occur when running a _REG method that is 7097in 7098the same scope as a method-defined operation region or an operation 7099region 7100under a module-level IF block. This type of code is rare, so the problem 7101has 7102not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 7103 7104Fixed a possible memory leak during module-level code execution. An 7105object 7106could be leaked for each block of executed module-level code if the 7107interpreter slack mode is enabled This change deletes any implicitly 7108returned 7109object from the module-level code block. Lin Ming. 7110 7111Removed messages for successful predefined repair(s). The repair 7112mechanism 7113was considered too wordy. Now, messages are only unconditionally emitted 7114if 7115the return object cannot be repaired. Existing messages for successful 7116repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 7117827. 7118 7119Example Code and Data Size: These are the sizes for the OS-independent 7120acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7121debug version of the code includes the debug output trace mechanism and 7122has a 7123much larger code and data size. 7124 7125 Previous Release: 7126 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 7127 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 7128 Current Release: 7129 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7130 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7131 71322) iASL Compiler/Disassembler and Tools: 7133 7134iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 7135files 7136were no longer automatically removed at the termination of the compile. 7137 7138acpiexec: Implemented the -f option to specify default region fill value. 7139This option specifies the value used to initialize buffers that simulate 7140operation regions. Default value is zero. Useful for debugging problems 7141that 7142depend on a specific initial value for a region or field. 7143 7144---------------------------------------- 714512 November 2009. Summary of changes for version 20091112: 7146 71471) ACPI CA Core Subsystem: 7148 7149Implemented a post-order callback to AcpiWalkNamespace. The existing 7150interface only has a pre-order callback. This change adds an additional 7151parameter for a post-order callback which will be more useful for bus 7152scans. 7153ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 7154 7155Modified the behavior of the operation region memory mapping cache for 7156SystemMemory. Ensure that the memory mappings created for operation 7157regions 7158do not cross 4K page boundaries. Crossing a page boundary while mapping 7159regions can cause kernel warnings on some hosts if the pages have 7160different 7161attributes. Such regions are probably BIOS bugs, and this is the 7162workaround. 7163Linux BZ 14445. Lin Ming. 7164 7165Implemented an automatic repair for predefined methods that must return 7166sorted lists. This change will repair (by sorting) packages returned by 7167_ALR, 7168_PSS, and _TSS. Drivers can now assume that the packages are correctly 7169sorted 7170and do not contain NULL package elements. Adds one new file, 7171namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 7172 7173Fixed a possible fault during predefined name validation if a return 7174Package 7175object contains NULL elements. Also adds a warning if a NULL element is 7176followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 7177may 7178include repair or removal of all such NULL elements where possible. 7179 7180Implemented additional module-level executable AML code support. This 7181change 7182will execute module-level code that is not at the root of the namespace 7183(under a Device object, etc.) at table load time. Module-level executable 7184AML 7185code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 7186 7187Implemented a new internal function to create Integer objects. This 7188function 7189simplifies miscellaneous object creation code. ACPICA BZ 823. 7190 7191Reduced the severity of predefined repair messages, Warning to Info. 7192Since 7193the object was successfully repaired, a warning is too severe. Reduced to 7194an 7195info message for now. These messages may eventually be changed to debug- 7196only. 7197ACPICA BZ 812. 7198 7199Example Code and Data Size: These are the sizes for the OS-independent 7200acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7201debug version of the code includes the debug output trace mechanism and 7202has a 7203much larger code and data size. 7204 7205 Previous Release: 7206 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 7207 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 7208 Current Release: 7209 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 7210 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 7211 72122) iASL Compiler/Disassembler and Tools: 7213 7214iASL: Implemented Switch() with While(1) so that Break works correctly. 7215This 7216change correctly implements the Switch operator with a surrounding 7217While(1) 7218so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 7219 7220iASL: Added a message if a package initializer list is shorter than 7221package 7222length. Adds a new remark for a Package() declaration if an initializer 7223list 7224exists, but is shorter than the declared length of the package. Although 7225technically legal, this is probably a coding error and it is seen in the 7226field. ACPICA BZ 815. Lin Ming, Bob Moore. 7227 7228iASL: Fixed a problem where the compiler could fault after the maximum 7229number 7230of errors was reached (200). 7231 7232acpixtract: Fixed a possible warning for pointer cast if the compiler 7233warning 7234level set very high. 7235 7236---------------------------------------- 723713 October 2009. Summary of changes for version 20091013: 7238 72391) ACPI CA Core Subsystem: 7240 7241Fixed a problem where an Operation Region _REG method could be executed 7242more 7243than once. If a custom address space handler is installed by the host 7244before 7245the "initialize operation regions" phase of the ACPICA initialization, 7246any 7247_REG methods for that address space could be executed twice. This change 7248fixes the problem. ACPICA BZ 427. Lin Ming. 7249 7250Fixed a possible memory leak for the Scope() ASL operator. When the exact 7251invocation of "Scope(\)" is executed (change scope to root), one internal 7252operand object was leaked. Lin Ming. 7253 7254Implemented a run-time repair for the _MAT predefined method. If the _MAT 7255return value is defined as a Field object in the AML, and the field 7256size is less than or equal to the default width of an integer (32 or 725764),_MAT 7258can incorrectly return an Integer instead of a Buffer. ACPICA now 7259automatically repairs this problem. ACPICA BZ 810. 7260 7261Implemented a run-time repair for the _BIF and _BIX predefined methods. 7262The 7263"OEM Information" field is often incorrectly returned as an Integer with 7264value zero if the field is not supported by the platform. This is due to 7265an 7266ambiguity in the ACPI specification. The field should always be a string. 7267ACPICA now automatically repairs this problem by returning a NULL string 7268within the returned Package. ACPICA BZ 807. 7269 7270Example Code and Data Size: These are the sizes for the OS-independent 7271acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7272debug version of the code includes the debug output trace mechanism and 7273has a 7274much larger code and data size. 7275 7276 Previous Release: 7277 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 7278 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 7279 Current Release: 7280 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 7281 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 7282 72832) iASL Compiler/Disassembler and Tools: 7284 7285Disassembler: Fixed a problem where references to external symbols that 7286contained one or more parent-prefixes (carats) were not handled 7287correctly, 7288possibly causing a fault. ACPICA BZ 806. Lin Ming. 7289 7290Disassembler: Restructured the code so that all functions that handle 7291external symbols are in a single module. One new file is added, 7292common/dmextern.c. 7293 7294AML Debugger: Added a max count argument for the Batch command (which 7295executes multiple predefined methods within the namespace.) 7296 7297iASL: Updated the compiler documentation (User Reference.) Available at 7298http://www.acpica.org/documentation/. ACPICA BZ 750. 7299 7300AcpiXtract: Updated for Lint and other formatting changes. Close all open 7301files. 7302 7303---------------------------------------- 730403 September 2009. Summary of changes for version 20090903: 7305 73061) ACPI CA Core Subsystem: 7307 7308For Windows Vista compatibility, added the automatic execution of an _INI 7309method located at the namespace root (\_INI). This method is executed at 7310table load time. This support is in addition to the automatic execution 7311of 7312\_SB._INI. Lin Ming. 7313 7314Fixed a possible memory leak in the interpreter for AML package objects 7315if 7316the package initializer list is longer than the defined size of the 7317package. 7318This apparently can only happen if the BIOS changes the package size on 7319the 7320fly (seen in a _PSS object), as ASL compilers do not allow this. The 7321interpreter will truncate the package to the defined size (and issue an 7322error 7323message), but previously could leave the extra objects undeleted if they 7324were 7325pre-created during the argument processing (such is the case if the 7326package 7327consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 7328 7329Fixed a problem seen when a Buffer or String is stored to itself via ASL. 7330This has been reported in the field. Previously, ACPICA would zero out 7331the 7332buffer/string. Now, the operation is treated as a noop. Provides Windows 7333compatibility. ACPICA BZ 803. Lin Ming. 7334 7335Removed an extraneous error message for ASL constructs of the form 7336Store(LocalX,LocalX) when LocalX is uninitialized. These curious 7337statements 7338are seen in many BIOSs and are once again treated as NOOPs and no error 7339is 7340emitted when they are encountered. ACPICA BZ 785. 7341 7342Fixed an extraneous warning message if a _DSM reserved method returns a 7343Package object. _DSM can return any type of object, so validation on the 7344return type cannot be performed. ACPICA BZ 802. 7345 7346Example Code and Data Size: These are the sizes for the OS-independent 7347acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7348debug version of the code includes the debug output trace mechanism and 7349has a 7350much larger code and data size. 7351 7352 Previous Release: 7353 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 7354 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 7355 Current Release: 7356 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 7357 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 7358 73592) iASL Compiler/Disassembler and Tools: 7360 7361iASL: Fixed a problem with the use of the Alias operator and Resource 7362Templates. The correct alias is now constructed and no error is emitted. 7363ACPICA BZ 738. 7364 7365iASL: Implemented the -I option to specify additional search directories 7366for 7367include files. Allows multiple additional search paths for include files. 7368Directories are searched in the order specified on the command line 7369(after 7370the local directory is searched.) ACPICA BZ 800. 7371 7372iASL: Fixed a problem where the full pathname for include files was not 7373emitted for warnings/errors. This caused the IDE support to not work 7374properly. ACPICA BZ 765. 7375 7376iASL: Implemented the -@ option to specify a Windows-style response file 7377containing additional command line options. ACPICA BZ 801. 7378 7379AcpiExec: Added support to load multiple AML files simultaneously (such 7380as 7381a 7382DSDT and multiple SSDTs). Also added support for wildcards within the AML 7383pathname. These features allow all machine tables to be easily loaded and 7384debugged together. ACPICA BZ 804. 7385 7386Disassembler: Added missing support for disassembly of HEST table Error 7387Bank 7388subtables. 7389 7390---------------------------------------- 739130 July 2009. Summary of changes for version 20090730: 7392 7393The ACPI 4.0 implementation for ACPICA is complete with this release. 7394 73951) ACPI CA Core Subsystem: 7396 7397ACPI 4.0: Added header file support for all new and changed ACPI tables. 7398Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 7399new 7400for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 7401BERT, 7402EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 7403There 7404have been some ACPI 4.0 changes to other existing tables. Split the large 7405actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 7406 7407ACPI 4.0: Implemented predefined name validation for all new names. There 7408are 740931 new names in ACPI 4.0. The predefined validation module was split into 7410two 7411files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 7412 7413Implemented support for so-called "module-level executable code". This is 7414executable AML code that exists outside of any control method and is 7415intended 7416to be executed at table load time. Although illegal since ACPI 2.0, this 7417type 7418of code still exists and is apparently still being created. Blocks of 7419this 7420code are now detected and executed as intended. Currently, the code 7421blocks 7422must exist under either an If, Else, or While construct; these are the 7423typical cases seen in the field. ACPICA BZ 762. Lin Ming. 7424 7425Implemented an automatic dynamic repair for predefined names that return 7426nested Package objects. This applies to predefined names that are defined 7427to 7428return a variable-length Package of sub-packages. If the number of sub- 7429packages is one, BIOS code is occasionally seen that creates a simple 7430single 7431package with no sub-packages. This code attempts to fix the problem by 7432wrapping a new package object around the existing package. These methods 7433can 7434be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 7435BZ 7436790. 7437 7438Fixed a regression introduced in 20090625 for the AcpiGetDevices 7439interface. 7440The _HID/_CID matching was broken and no longer matched IDs correctly. 7441ACPICA 7442BZ 793. 7443 7444Fixed a problem with AcpiReset where the reset would silently fail if the 7445register was one of the protected I/O ports. AcpiReset now bypasses the 7446port 7447validation mechanism. This may eventually be driven into the 7448AcpiRead/Write 7449interfaces. 7450 7451Fixed a regression related to the recent update of the AcpiRead/Write 7452interfaces. A sleep/suspend could fail if the optional PM2 Control 7453register 7454does not exist during an attempt to write the Bus Master Arbitration bit. 7455(However, some hosts already delete the code that writes this bit, and 7456the 7457code may in fact be obsolete at this date.) ACPICA BZ 799. 7458 7459Fixed a problem where AcpiTerminate could fault if inadvertently called 7460twice 7461in succession. ACPICA BZ 795. 7462 7463Example Code and Data Size: These are the sizes for the OS-independent 7464acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7465debug version of the code includes the debug output trace mechanism and 7466has a 7467much larger code and data size. 7468 7469 Previous Release: 7470 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 7471 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 7472 Current Release: 7473 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 7474 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 7475 74762) iASL Compiler/Disassembler and Tools: 7477 7478ACPI 4.0: Implemented disassembler support for all new ACPI tables and 7479changes to existing tables. ACPICA BZ 775. 7480 7481---------------------------------------- 748225 June 2009. Summary of changes for version 20090625: 7483 7484The ACPI 4.0 Specification was released on June 16 and is available at 7485www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 7486continue for the next few releases. 7487 74881) ACPI CA Core Subsystem: 7489 7490ACPI 4.0: Implemented interpreter support for the IPMI operation region 7491address space. Includes support for bi-directional data buffers and an 7492IPMI 7493address space handler (to be installed by an IPMI device driver.) ACPICA 7494BZ 7495773. Lin Ming. 7496 7497ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 7498Includes 7499support in both the header files and the disassembler. 7500 7501Completed a major update for the AcpiGetObjectInfo external interface. 7502Changes include: 7503 - Support for variable, unlimited length HID, UID, and CID strings. 7504 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 7505etc.) 7506 - Call the _SxW power methods on behalf of a device object. 7507 - Determine if a device is a PCI root bridge. 7508 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 7509These changes will require an update to all callers of this interface. 7510See 7511the updated ACPICA Programmer Reference for details. One new source file 7512has 7513been added - utilities/utids.c. ACPICA BZ 368, 780. 7514 7515Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 7516transfers. The Value parameter has been extended from 32 bits to 64 bits 7517in 7518order to support new ACPI 4.0 tables. These changes will require an 7519update 7520to 7521all callers of these interfaces. See the ACPICA Programmer Reference for 7522details. ACPICA BZ 768. 7523 7524Fixed several problems with AcpiAttachData. The handler was not invoked 7525when 7526the host node was deleted. The data sub-object was not automatically 7527deleted 7528when the host node was deleted. The interface to the handler had an 7529unused 7530parameter, this was removed. ACPICA BZ 778. 7531 7532Enhanced the function that dumps ACPI table headers. All non-printable 7533characters in the string fields are now replaced with '?' (Signature, 7534OemId, 7535OemTableId, and CompilerId.) ACPI tables with non-printable characters in 7536these fields are occasionally seen in the field. ACPICA BZ 788. 7537 7538Fixed a problem with predefined method repair code where the code that 7539attempts to repair/convert an object of incorrect type is only executed 7540on 7541the first time the predefined method is called. The mechanism that 7542disables 7543warnings on subsequent calls was interfering with the repair mechanism. 7544ACPICA BZ 781. 7545 7546Fixed a possible memory leak in the predefined validation/repair code 7547when 7548a 7549buffer is automatically converted to an expected string object. 7550 7551Removed obsolete 16-bit files from the distribution and from the current 7552git 7553tree head. ACPICA BZ 776. 7554 7555Example Code and Data Size: These are the sizes for the OS-independent 7556acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7557debug version of the code includes the debug output trace mechanism and 7558has a 7559much larger code and data size. 7560 7561 Previous Release: 7562 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 7563 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 7564 Current Release: 7565 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 7566 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 7567 75682) iASL Compiler/Disassembler and Tools: 7569 7570ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 7571operation region keyword. ACPICA BZ 771, 772. Lin Ming. 7572 7573ACPI 4.0: iASL - implemented compile-time validation support for all new 7574predefined names and control methods (31 total). ACPICA BZ 769. 7575 7576---------------------------------------- 757721 May 2009. Summary of changes for version 20090521: 7578 75791) ACPI CA Core Subsystem: 7580 7581Disabled the preservation of the SCI enable bit in the PM1 control 7582register. 7583The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 7584to 7585be 7586a "preserved" bit - "OSPM always preserves this bit position", section 75874.7.3.2.1. However, some machines fail if this bit is in fact preserved 7588because the bit needs to be explicitly set by the OS as a workaround. No 7589machines fail if the bit is not preserved. Therefore, ACPICA no longer 7590attempts to preserve this bit. 7591 7592Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 7593incorrectly formed _PRT package could cause a fault. Added validation to 7594ensure that each package element is actually a sub-package. 7595 7596Implemented a new interface to install or override a single control 7597method, 7598AcpiInstallMethod. This interface is useful when debugging in order to 7599repair 7600an existing method or to install a missing method without having to 7601override 7602the entire ACPI table. See the ACPICA Programmer Reference for use and 7603examples. Lin Ming, Bob Moore. 7604 7605Fixed several reference count issues with the DdbHandle object that is 7606created from a Load or LoadTable operator. Prevent premature deletion of 7607the 7608object. Also, mark the object as invalid once the table has been 7609unloaded. 7610This is needed because the handle itself may not be deleted after the 7611table 7612unload, depending on whether it has been stored in a named object by the 7613caller. Lin Ming. 7614 7615Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 7616mutexes of the same sync level are acquired but then not released in 7617strict 7618opposite order, the internally maintained Current Sync Level becomes 7619confused 7620and can cause subsequent execution errors. ACPICA BZ 471. 7621 7622Changed the allowable release order for ASL mutex objects. The ACPI 4.0 7623specification has been changed to make the SyncLevel for mutex objects 7624more 7625useful. When releasing a mutex, the SyncLevel of the mutex must now be 7626the 7627same as the current sync level. This makes more sense than the previous 7628rule 7629(SyncLevel less than or equal). This change updates the code to match the 7630specification. 7631 7632Fixed a problem with the local version of the AcpiOsPurgeCache function. 7633The 7634(local) cache must be locked during all cache object deletions. Andrew 7635Baumann. 7636 7637Updated the Load operator to use operation region interfaces. This 7638replaces 7639direct memory mapping with region access calls. Now, all region accesses 7640go 7641through the installed region handler as they should. 7642 7643Simplified and optimized the NsGetNextNode function. Reduced parameter 7644count 7645and reduced code for this frequently used function. 7646 7647Example Code and Data Size: These are the sizes for the OS-independent 7648acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7649debug version of the code includes the debug output trace mechanism and 7650has a 7651much larger code and data size. 7652 7653 Previous Release: 7654 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 7655 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 7656 Current Release: 7657 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 7658 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 7659 76602) iASL Compiler/Disassembler and Tools: 7661 7662Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 7663problems 7664with sub-table disassembly and handling invalid sub-tables. Attempt 7665recovery 7666after an invalid sub-table ID. 7667 7668---------------------------------------- 766922 April 2009. Summary of changes for version 20090422: 7670 76711) ACPI CA Core Subsystem: 7672 7673Fixed a compatibility issue with the recently released I/O port 7674protection 7675mechanism. For windows compatibility, 1) On a port protection violation, 7676simply ignore the request and do not return an exception (allow the 7677control 7678method to continue execution.) 2) If only part of the request overlaps a 7679protected port, read/write the individual ports that are not protected. 7680Linux 7681BZ 13036. Lin Ming 7682 7683Enhanced the execution of the ASL/AML BreakPoint operator so that it 7684actually 7685breaks into the AML debugger if the debugger is present. This matches the 7686ACPI-defined behavior. 7687 7688Fixed several possible warnings related to the use of the configurable 7689ACPI_THREAD_ID. This type can now be configured as either an integer or a 7690pointer with no warnings. Also fixes several warnings in printf-like 7691statements for the 64-bit build when the type is configured as a pointer. 7692ACPICA BZ 766, 767. 7693 7694Fixed a number of possible warnings when compiling with gcc 4+ (depending 7695on 7696warning options.) Examples include printf formats, aliasing, unused 7697globals, 7698missing prototypes, missing switch default statements, use of non-ANSI 7699library functions, use of non-ANSI constructs. See generate/unix/Makefile 7700for 7701a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 7702 7703Example Code and Data Size: These are the sizes for the OS-independent 7704acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7705debug version of the code includes the debug output trace mechanism and 7706has a 7707much larger code and data size. 7708 7709 Previous Release: 7710 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 7711 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 7712 Current Release: 7713 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 7714 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 7715 77162) iASL Compiler/Disassembler and Tools: 7717 7718iASL: Fixed a generation warning from Bison 2.3 and fixed several 7719warnings 7720on 7721the 64-bit build. 7722 7723iASL: Fixed a problem where the Unix/Linux versions of the compiler could 7724not 7725correctly digest Windows/DOS formatted files (with CR/LF). 7726 7727iASL: Added a new option for "quiet mode" (-va) that produces only the 7728compilation summary, not individual errors and warnings. Useful for large 7729batch compilations. 7730 7731AcpiExec: Implemented a new option (-z) to enable a forced 7732semaphore/mutex 7733timeout that can be used to detect hang conditions during execution of 7734AML 7735code (includes both internal semaphores and AML-defined mutexes and 7736events.) 7737 7738Added new makefiles for the generation of acpica in a generic unix-like 7739environment. These makefiles are intended to generate the acpica tools 7740and 7741utilities from the original acpica git source tree structure. 7742 7743Test Suites: Updated and cleaned up the documentation files. Updated the 7744copyrights to 2009, affecting all source files. Use the new version of 7745iASL 7746with quiet mode. Increased the number of available semaphores in the 7747Windows 7748OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 7749added 7750an alternate implementation of the semaphore timeout to allow aslts to 7751execute fully on Cygwin. 7752 7753---------------------------------------- 775420 March 2009. Summary of changes for version 20090320: 7755 77561) ACPI CA Core Subsystem: 7757 7758Fixed a possible race condition between AcpiWalkNamespace and dynamic 7759table 7760unloads. Added a reader/writer locking mechanism to allow multiple 7761concurrent 7762namespace walks (readers), but block a dynamic table unload until it can 7763gain 7764exclusive write access to the namespace. This fixes a problem where a 7765table 7766unload could (possibly catastrophically) delete the portion of the 7767namespace 7768that is currently being examined by a walk. Adds a new file, utlock.c, 7769that 7770implements the reader/writer lock mechanism. ACPICA BZ 749. 7771 7772Fixed a regression introduced in version 20090220 where a change to the 7773FADT 7774handling could cause the ACPICA subsystem to access non-existent I/O 7775ports. 7776 7777Modified the handling of FADT register and table (FACS/DSDT) addresses. 7778The 7779FADT can contain both 32-bit and 64-bit versions of these addresses. 7780Previously, the 64-bit versions were favored, meaning that if both 32 and 778164 7782versions were valid, but not equal, the 64-bit version was used. This was 7783found to cause some machines to fail. Now, in this case, the 32-bit 7784version 7785is used instead. This now matches the Windows behavior. 7786 7787Implemented a new mechanism to protect certain I/O ports. Provides 7788Microsoft 7789compatibility and protects the standard PC I/O ports from access via AML 7790code. Adds a new file, hwvalid.c 7791 7792Fixed a possible extraneous warning message from the FADT support. The 7793message warns of a 32/64 length mismatch between the legacy and GAS 7794definitions for a register. 7795 7796Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 7797is 7798made obsolete by the port protection mechanism above. It was previously 7799used 7800to validate the entire address range of an operation region, which could 7801be 7802incorrect if the range included illegal ports, but fields within the 7803operation region did not actually access those ports. Validation is now 7804performed on a per-field basis instead of the entire region. 7805 7806Modified the handling of the PM1 Status Register ignored bit (bit 11.) 7807Ignored bits must be "preserved" according to the ACPI spec. Usually, 7808this 7809means a read/modify/write when writing to the register. However, for 7810status 7811registers, writing a one means clear the event. Writing a zero means 7812preserve 7813the event (do not clear.) This behavior is clarified in the ACPI 4.0 7814spec, 7815and the ACPICA code now simply always writes a zero to the ignored bit. 7816 7817Modified the handling of ignored bits for the PM1 A/B Control Registers. 7818As 7819per the ACPI specification, for the control registers, preserve 7820(read/modify/write) all bits that are defined as either reserved or 7821ignored. 7822 7823Updated the handling of write-only bits in the PM1 A/B Control Registers. 7824When reading the register, zero the write-only bits as per the ACPI spec. 7825ACPICA BZ 443. Lin Ming. 7826 7827Removed "Linux" from the list of supported _OSI strings. Linux no longer 7828wants to reply true to this request. The Windows strings are the only 7829paths 7830through the AML that are tested and known to work properly. 7831 7832 Previous Release: 7833 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 7834 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 7835 Current Release: 7836 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 7837 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 7838 78392) iASL Compiler/Disassembler and Tools: 7840 7841Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 7842and 7843aetables.c 7844 7845---------------------------------------- 784620 February 2009. Summary of changes for version 20090220: 7847 78481) ACPI CA Core Subsystem: 7849 7850Optimized the ACPI register locking. Removed locking for reads from the 7851ACPI 7852bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 7853is 7854not required when reading the single-bit registers. The 7855AcpiGetRegisterUnlocked function is no longer needed and has been 7856removed. 7857This will improve performance for reads on these registers. ACPICA BZ 7858760. 7859 7860Fixed the parameter validation for AcpiRead/Write. Now return 7861AE_BAD_PARAMETER if the input register pointer is null, and 7862AE_BAD_ADDRESS 7863if 7864the register has an address of zero. Previously, these cases simply 7865returned 7866AE_OK. For optional registers such as PM1B status/enable/control, the 7867caller 7868should check for a valid register address before calling. ACPICA BZ 748. 7869 7870Renamed the external ACPI bit register access functions. Renamed 7871AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 7872functions. The new names are AcpiReadBitRegister and 7873AcpiWriteBitRegister. 7874Also, restructured the code for these functions by simplifying the code 7875path 7876and condensing duplicate code to reduce code size. 7877 7878Added new functions to transparently handle the possibly split PM1 A/B 7879registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 7880functions 7881now handle the split registers for PM1 Status, Enable, and Control. 7882ACPICA 7883BZ 7884746. 7885 7886Added a function to handle the PM1 control registers, 7887AcpiHwWritePm1Control. 7888This function writes both of the PM1 control registers (A/B). These 7889registers 7890are different than the PM1 A/B status and enable registers in that 7891different 7892values can be written to the A/B registers. Most notably, the SLP_TYP 7893bits 7894can be different, as per the values returned from the _Sx predefined 7895methods. 7896 7897Removed an extra register write within AcpiHwClearAcpiStatus. This 7898function 7899was writing an optional PM1B status register twice. The existing call to 7900the 7901low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 7902A/B 7903register. ACPICA BZ 751. 7904 7905Split out the PM1 Status registers from the FADT. Added new globals for 7906these 7907registers (A/B), similar to the way the PM1 Enable registers are handled. 7908Instead of overloading the FADT Event Register blocks. This makes the 7909code 7910clearer and less prone to error. 7911 7912Fixed the warning message for when the platform contains too many ACPI 7913tables 7914for the default size of the global root table data structure. The 7915calculation 7916for the truncation value was incorrect. 7917 7918Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 7919obsolete macro, since it is now a simple reference to ->common.type. 7920There 7921were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 7922 7923Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 7924TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 7925simply SLEEP_TYPE. ACPICA BZ 754. 7926 7927Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 7928function is only needed on 64-bit host operating systems and is thus not 7929included for 32-bit hosts. 7930 7931Debug output: print the input and result for invocations of the _OSI 7932reserved 7933control method via the ACPI_LV_INFO debug level. Also, reduced some of 7934the 7935verbosity of this debug level. Len Brown. 7936 7937Example Code and Data Size: These are the sizes for the OS-independent 7938acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7939debug version of the code includes the debug output trace mechanism and 7940has a 7941much larger code and data size. 7942 7943 Previous Release: 7944 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 7945 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 7946 Current Release: 7947 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 7948 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 7949 79502) iASL Compiler/Disassembler and Tools: 7951 7952Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 7953various legal performance profiles. 7954 7955---------------------------------------- 795623 January 2009. Summary of changes for version 20090123: 7957 79581) ACPI CA Core Subsystem: 7959 7960Added the 2009 copyright to all module headers and signons. This affects 7961virtually every file in the ACPICA core subsystem, the iASL compiler, and 7962the tools/utilities. 7963 7964Implemented a change to allow the host to override any ACPI table, 7965including 7966dynamically loaded tables. Previously, only the DSDT could be replaced by 7967the 7968host. With this change, the AcpiOsTableOverride interface is called for 7969each 7970table found in the RSDT/XSDT during ACPICA initialization, and also 7971whenever 7972a table is dynamically loaded via the AML Load operator. 7973 7974Updated FADT flag definitions, especially the Boot Architecture flags. 7975 7976Debugger: For the Find command, automatically pad the input ACPI name 7977with 7978underscores if the name is shorter than 4 characters. This enables a 7979match 7980with the actual namespace entry which is itself padded with underscores. 7981 7982Example Code and Data Size: These are the sizes for the OS-independent 7983acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7984debug version of the code includes the debug output trace mechanism and 7985has a 7986much larger code and data size. 7987 7988 Previous Release: 7989 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 7990 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 7991 Current Release: 7992 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 7993 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 7994 79952) iASL Compiler/Disassembler and Tools: 7996 7997Fix build error under Bison-2.4. 7998 7999Dissasembler: Enhanced FADT support. Added decoding of the Boot 8000Architecture 8001flags. Now decode all flags, regardless of the FADT version. Flag output 8002includes the FADT version which first defined each flag. 8003 8004The iASL -g option now dumps the RSDT to a file (in addition to the FADT 8005and 8006DSDT). Windows only. 8007 8008---------------------------------------- 800904 December 2008. Summary of changes for version 20081204: 8010 80111) ACPI CA Core Subsystem: 8012 8013The ACPICA Programmer Reference has been completely updated and revamped 8014for 8015this release. This includes updates to the external interfaces, OSL 8016interfaces, the overview sections, and the debugger reference. 8017 8018Several new ACPICA interfaces have been implemented and documented in the 8019programmer reference: 8020AcpiReset - Writes the reset value to the FADT-defined reset register. 8021AcpiDisableAllGpes - Disable all available GPEs. 8022AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 8023AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 8024AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 8025AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 8026AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 8027 8028Most of the public ACPI hardware-related interfaces have been moved to a 8029new 8030file, components/hardware/hwxface.c 8031 8032Enhanced the FADT parsing and low-level ACPI register access: The ACPI 8033register lengths within the FADT are now used, and the low level ACPI 8034register access no longer hardcodes the ACPI register lengths. Given that 8035there may be some risk in actually trusting the FADT register lengths, a 8036run- 8037time option was added to fall back to the default hardcoded lengths if 8038the 8039FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 8040option is set to true for now, and a warning is issued if a suspicious 8041FADT 8042register length is overridden with the default value. 8043 8044Fixed a reference count issue in NsRepairObject. This problem was 8045introduced 8046in version 20081031 as part of a fix to repair Buffer objects within 8047Packages. Lin Ming. 8048 8049Added semaphore support to the Linux/Unix application OS-services layer 8050(OSL). ACPICA BZ 448. Lin Ming. 8051 8052Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 8053will 8054be implemented in the OSL, or will binary semaphores be used instead. 8055 8056Example Code and Data Size: These are the sizes for the OS-independent 8057acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8058debug version of the code includes the debug output trace mechanism and 8059has a 8060much larger code and data size. 8061 8062 Previous Release: 8063 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 8064 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 8065 Current Release: 8066 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8067 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8068 80692) iASL Compiler/Disassembler and Tools: 8070 8071iASL: Completed the '-e' option to include additional ACPI tables in 8072order 8073to 8074aid with disassembly and External statement generation. ACPICA BZ 742. 8075Lin 8076Ming. 8077 8078iASL: Removed the "named object in while loop" error. The compiler cannot 8079determine how many times a loop will execute. ACPICA BZ 730. 8080 8081Disassembler: Implemented support for FADT revision 2 (MS extension). 8082ACPICA 8083BZ 743. 8084 8085Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 8086MCFG). 8087 8088---------------------------------------- 808931 October 2008. Summary of changes for version 20081031: 8090 80911) ACPI CA Core Subsystem: 8092 8093Restructured the ACPICA header files into public/private. acpi.h now 8094includes 8095only the "public" acpica headers. All other acpica headers are "private" 8096and 8097should not be included by acpica users. One new file, accommon.h is used 8098to 8099include the commonly used private headers for acpica code generation. 8100Future 8101plans include moving all private headers to a new subdirectory. 8102 8103Implemented an automatic Buffer->String return value conversion for 8104predefined ACPI methods. For these methods (such as _BIF), added 8105automatic 8106conversion for return objects that are required to be a String, but a 8107Buffer 8108was found instead. This can happen when reading string battery data from 8109an 8110operation region, because it used to be difficult to convert the data 8111from 8112buffer to string from within the ASL. Ensures that the host OS is 8113provided 8114with a valid null-terminated string. Linux BZ 11822. 8115 8116Updated the FACS waking vector interfaces. Split 8117AcpiSetFirmwareWakingVector 8118into two: one for the 32-bit vector, another for the 64-bit vector. This 8119is 8120required because the host OS must setup the wake much differently for 8121each 8122vector (real vs. protected mode, etc.) and the interface itself should 8123not 8124be 8125deciding which vector to use. Also, eliminated the 8126GetFirmwareWakingVector 8127interface, as it served no purpose (only the firmware reads the vector, 8128OS 8129only writes the vector.) ACPICA BZ 731. 8130 8131Implemented a mechanism to escape infinite AML While() loops. Added a 8132loop 8133counter to force exit from AML While loops if the count becomes too 8134large. 8135This can occur in poorly written AML when the hardware does not respond 8136within a while loop and the loop does not implement a timeout. The 8137maximum 8138loop count is configurable. A new exception code is returned when a loop 8139is 8140broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 8141 8142Optimized the execution of AML While loops. Previously, a control state 8143object was allocated and freed for each execution of the loop. The 8144optimization is to simply reuse the control state for each iteration. 8145This 8146speeds up the raw loop execution time by about 5%. 8147 8148Enhanced the implicit return mechanism. For Windows compatibility, return 8149an 8150implicit integer of value zero for methods that contain no executable 8151code. 8152Such methods are seen in the field as stubs (presumably), and can cause 8153drivers to fail if they expect a return value. Lin Ming. 8154 8155Allow multiple backslashes as root prefixes in namepaths. In a fully 8156qualified namepath, allow multiple backslash prefixes. This can happen 8157(and 8158is seen in the field) because of the use of a double-backslash in strings 8159(since backslash is the escape character) causing confusion. ACPICA BZ 8160739 8161Lin Ming. 8162 8163Emit a warning if two different FACS or DSDT tables are discovered in the 8164FADT. Checks if there are two valid but different addresses for the FACS 8165and 8166DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 8167 8168Consolidated the method argument count validation code. Merged the code 8169that 8170validates control method argument counts into the predefined validation 8171module. Eliminates possible multiple warnings for incorrect argument 8172counts. 8173 8174Implemented ACPICA example code. Includes code for ACPICA initialization, 8175handler installation, and calling a control method. Available at 8176source/tools/examples. 8177 8178Added a global pointer for FACS table to simplify internal FACS access. 8179Use 8180the global pointer instead of using AcpiGetTableByIndex for each FACS 8181access. 8182This simplifies the code for the Global Lock and the Firmware Waking 8183Vector(s). 8184 8185Example Code and Data Size: These are the sizes for the OS-independent 8186acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8187debug version of the code includes the debug output trace mechanism and 8188has a 8189much larger code and data size. 8190 8191 Previous Release: 8192 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 8193 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 8194 Current Release: 8195 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 8196 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 8197 81982) iASL Compiler/Disassembler and Tools: 8199 8200iASL: Improved disassembly of external method calls. Added the -e option 8201to 8202allow the inclusion of additional ACPI tables to help with the 8203disassembly 8204of 8205method invocations and the generation of external declarations during the 8206disassembly. Certain external method invocations cannot be disassembled 8207properly without the actual declaration of the method. Use the -e option 8208to 8209include the table where the external method(s) are actually declared. 8210Most 8211useful for disassembling SSDTs that make method calls back to the master 8212DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 8213-d 8214-e dsdt.aml ssdt1.aml 8215 8216iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 8217problem where the use of an alias within a namepath would result in a not 8218found error or cause the compiler to fault. Also now allows forward 8219references from the Alias operator itself. ACPICA BZ 738. 8220 8221---------------------------------------- 822226 September 2008. Summary of changes for version 20080926: 8223 82241) ACPI CA Core Subsystem: 8225 8226Designed and implemented a mechanism to validate predefined ACPI methods 8227and 8228objects. This code validates the predefined ACPI objects (objects whose 8229names 8230start with underscore) that appear in the namespace, at the time they are 8231evaluated. The argument count and the type of the returned object are 8232validated against the ACPI specification. The purpose of this validation 8233is 8234to detect problems with the BIOS-implemented predefined ACPI objects 8235before 8236the results are returned to the ACPI-related drivers. Future enhancements 8237may 8238include actual repair of incorrect return objects where possible. Two new 8239files are nspredef.c and acpredef.h. 8240 8241Fixed a fault in the AML parser if a memory allocation fails during the 8242Op 8243completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 8244 8245Fixed an issue with implicit return compatibility. This change improves 8246the 8247implicit return mechanism to be more compatible with the MS interpreter. 8248Lin 8249Ming, ACPICA BZ 349. 8250 8251Implemented support for zero-length buffer-to-string conversions. Allow 8252zero 8253length strings during interpreter buffer-to-string conversions. For 8254example, 8255during the ToDecimalString and ToHexString operators, as well as implicit 8256conversions. Fiodor Suietov, ACPICA BZ 585. 8257 8258Fixed two possible memory leaks in the error exit paths of 8259AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 8260are 8261similar in that they use a stack of state objects in order to eliminate 8262recursion. The stack must be fully unwound and deallocated if an error 8263occurs. Lin Ming. ACPICA BZ 383. 8264 8265Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 8266global 8267ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 8268Moore ACPICA BZ 442. 8269 8270Removed the obsolete version number in module headers. Removed the 8271"$Revision" number that appeared in each module header. This version 8272number 8273was useful under SourceSafe and CVS, but has no meaning under git. It is 8274not 8275only incorrect, it could also be misleading. 8276 8277Example Code and Data Size: These are the sizes for the OS-independent 8278acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8279debug version of the code includes the debug output trace mechanism and 8280has a 8281much larger code and data size. 8282 8283 Previous Release: 8284 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8285 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 8286 Current Release: 8287 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 8288 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 8289 8290---------------------------------------- 829129 August 2008. Summary of changes for version 20080829: 8292 82931) ACPI CA Core Subsystem: 8294 8295Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 8296Reference. Changes include the elimination of cheating on the Object 8297field 8298for the DdbHandle subtype, addition of a reference class field to 8299differentiate the various reference types (instead of an AML opcode), and 8300the 8301cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 8302 8303Reduce an error to a warning for an incorrect method argument count. 8304Previously aborted with an error if too few arguments were passed to a 8305control method via the external ACPICA interface. Now issue a warning 8306instead 8307and continue. Handles the case where the method inadvertently declares 8308too 8309many arguments, but does not actually use the extra ones. Applies mainly 8310to 8311the predefined methods. Lin Ming. Linux BZ 11032. 8312 8313Disallow the evaluation of named object types with no intrinsic value. 8314Return 8315AE_TYPE for objects that have no value and therefore evaluation is 8316undefined: 8317Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 8318of 8319these types were allowed, but an exception would be generated at some 8320point 8321during the evaluation. Now, the error is generated up front. 8322 8323Fixed a possible memory leak in the AcpiNsGetExternalPathname function 8324(nsnames.c). Fixes a leak in the error exit path. 8325 8326Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 8327debug 8328levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 8329ACPI_EXCEPTION 8330interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 8331ACPI_LV_EVENTS. 8332 8333Removed obsolete and/or unused exception codes from the acexcep.h header. 8334There is the possibility that certain device drivers may be affected if 8335they 8336use any of these exceptions. 8337 8338The ACPICA documentation has been added to the public git source tree, 8339under 8340acpica/documents. Included are the ACPICA programmer reference, the iASL 8341compiler reference, and the changes.txt release logfile. 8342 8343Example Code and Data Size: These are the sizes for the OS-independent 8344acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8345debug version of the code includes the debug output trace mechanism and 8346has a 8347much larger code and data size. 8348 8349 Previous Release: 8350 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8351 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 8352 Current Release: 8353 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8354 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 8355 83562) iASL Compiler/Disassembler and Tools: 8357 8358Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 8359defines _SCP with 3 arguments. Previous versions defined it with only 1 8360argument. iASL now allows both definitions. 8361 8362iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 8363zero- 8364length subtables when disassembling ACPI tables. Also fixed a couple of 8365errors where a full 16-bit table type field was not extracted from the 8366input 8367properly. 8368 8369acpisrc: Improve comment counting mechanism for generating source code 8370statistics. Count first and last lines of multi-line comments as 8371whitespace, 8372not comment lines. Handle Linux legal header in addition to standard 8373acpica 8374header. 8375 8376---------------------------------------- 8377 837829 July 2008. Summary of changes for version 20080729: 8379 83801) ACPI CA Core Subsystem: 8381 8382Fix a possible deadlock in the GPE dispatch. Remove call to 8383AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 8384attempt 8385to acquire the GPE lock but can deadlock since the GPE lock is already 8386held 8387at dispatch time. This code was introduced in version 20060831 as a 8388response 8389to Linux BZ 6881 and has since been removed from Linux. 8390 8391Add a function to dereference returned reference objects. Examines the 8392return 8393object from a call to AcpiEvaluateObject. Any Index or RefOf references 8394are 8395automatically dereferenced in an attempt to return something useful 8396(these 8397reference types cannot be converted into an external ACPI_OBJECT.) 8398Provides 8399MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 8400 8401x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 8402subtables for the MADT and one new subtable for the SRAT. Includes 8403disassembler and AcpiSrc support. Data from the Intel 64 Architecture 8404x2APIC 8405Specification, June 2008. 8406 8407Additional error checking for pathname utilities. Add error check after 8408all 8409calls to AcpiNsGetPathnameLength. Add status return from 8410AcpiNsBuildExternalPath and check after all calls. Add parameter 8411validation 8412to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 8413 8414Return status from the global init function AcpiUtGlobalInitialize. This 8415is 8416used by both the kernel subsystem and the utilities such as iASL 8417compiler. 8418The function could possibly fail when the caches are initialized. Yang 8419Yi. 8420 8421Add a function to decode reference object types to strings. Created for 8422improved error messages. 8423 8424Improve object conversion error messages. Better error messages during 8425object 8426conversion from internal to the external ACPI_OBJECT. Used for external 8427calls 8428to AcpiEvaluateObject. 8429 8430Example Code and Data Size: These are the sizes for the OS-independent 8431acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8432debug version of the code includes the debug output trace mechanism and 8433has a 8434much larger code and data size. 8435 8436 Previous Release: 8437 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 8438 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 8439 Current Release: 8440 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8441 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 8442 84432) iASL Compiler/Disassembler and Tools: 8444 8445Debugger: fix a possible hang when evaluating non-methods. Fixes a 8446problem 8447introduced in version 20080701. If the object being evaluated (via 8448execute 8449command) is not a method, the debugger can hang while trying to obtain 8450non- 8451existent parameters. 8452 8453iASL: relax error for using reserved "_T_x" identifiers. These names can 8454appear in a disassembled ASL file if they were emitted by the original 8455compiler. Instead of issuing an error or warning and forcing the user to 8456manually change these names, issue a remark instead. 8457 8458iASL: error if named object created in while loop. Emit an error if any 8459named 8460object is created within a While loop. If allowed, this code will 8461generate 8462a 8463run-time error on the second iteration of the loop when an attempt is 8464made 8465to 8466create the same named object twice. ACPICA bugzilla 730. 8467 8468iASL: Support absolute pathnames for include files. Add support for 8469absolute 8470pathnames within the Include operator. previously, only relative 8471pathnames 8472were supported. 8473 8474iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 8475Descriptor. 8476The ACPI spec requires one interrupt minimum. BZ 423 8477 8478iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 8479Handles the case for the Interrupt Resource Descriptor where 8480the ResourceSource argument is omitted but ResourceSourceIndex 8481is present. Now leave room for the Index. BZ 426 8482 8483iASL: Prevent error message if CondRefOf target does not exist. Fixes 8484cases 8485where an error message is emitted if the target does not exist. BZ 516 8486 8487iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 8488(get ACPI tables on Windows). This was apparently broken in version 848920070919. 8490 8491AcpiXtract: Handle EOF while extracting data. Correctly handle the case 8492where 8493the EOF happens immediately after the last table in the input file. Print 8494completion message. Previously, no message was displayed in this case. 8495 8496---------------------------------------- 849701 July 2008. Summary of changes for version 20080701: 8498 84990) Git source tree / acpica.org 8500 8501Fixed a problem where a git-clone from http would not transfer the entire 8502source tree. 8503 85041) ACPI CA Core Subsystem: 8505 8506Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 8507enable bit. Now performs a read-change-write of the enable register 8508instead 8509of simply writing out the cached enable mask. This will prevent 8510inadvertent 8511enabling of GPEs if a rogue GPE is received during initialization (before 8512GPE 8513handlers are installed.) 8514 8515Implemented a copy for dynamically loaded tables. Previously, dynamically 8516loaded tables were simply mapped - but on some machines this memory is 8517corrupted after suspend. Now copy the table to a local buffer. For the 8518OpRegion case, added checksum verify. Use the table length from the table 8519header, not the region length. For the Buffer case, use the table length 8520also. Dennis Noordsij, Bob Moore. BZ 10734 8521 8522Fixed a problem where the same ACPI table could not be dynamically loaded 8523and 8524unloaded more than once. Without this change, a table cannot be loaded 8525again 8526once it has been loaded/unloaded one time. The current mechanism does not 8527unregister a table upon an unload. During a load, if the same table is 8528found, 8529this no longer returns an exception. BZ 722 8530 8531Fixed a problem where the wrong descriptor length was calculated for the 8532EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 8533EndTag 8534are calculated as 12 bytes long, but the actual length in the internal 8535descriptor is 16 because of the round-up to 8 on the 64-bit build. 8536Reported 8537by Linn Crosetto. BZ 728 8538 8539Fixed a possible memory leak in the Unload operator. The DdbHandle 8540returned 8541by Load() did not have its reference count decremented during unload, 8542leading 8543to a memory leak. Lin Ming. BZ 727 8544 8545Fixed a possible memory leak when deleting thermal/processor objects. Any 8546associated notify handlers (and objects) were not being deleted. Fiodor 8547Suietov. BZ 506 8548 8549Fixed the ordering of the ASCII names in the global mutex table to match 8550the 8551actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 8552only. 8553Vegard Nossum. BZ 726 8554 8555Enhanced the AcpiGetObjectInfo interface to return the number of required 8556arguments if the object is a control method. Added this call to the 8557debugger 8558so the proper number of default arguments are passed to a method. This 8559prevents a warning when executing methods from AcpiExec. 8560 8561Added a check for an invalid handle in AcpiGetObjectInfo. Return 8562AE_BAD_PARAMETER if input handle is invalid. BZ 474 8563 8564Fixed an extraneous warning from exconfig.c on the 64-bit build. 8565 8566Example Code and Data Size: These are the sizes for the OS-independent 8567acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8568debug version of the code includes the debug output trace mechanism and 8569has a 8570much larger code and data size. 8571 8572 Previous Release: 8573 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 8574 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 8575 Current Release: 8576 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 8577 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 8578 85792) iASL Compiler/Disassembler and Tools: 8580 8581iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 8582resource descriptor names. 8583 8584iASL: Detect invalid ASCII characters in input (windows version). Removed 8585the 8586"-CF" flag from the flex compile, enables correct detection of non-ASCII 8587characters in the input. BZ 441 8588 8589iASL: Eliminate warning when result of LoadTable is not used. Eliminate 8590the 8591"result of operation not used" warning when the DDB handle returned from 8592LoadTable is not used. The warning is not needed. BZ 590 8593 8594AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 8595method 8596to 8597pass address of table to the AML. Added option to disable OpRegion 8598simulation 8599to allow creation of an OpRegion with a real address that was passed to 8600_CFG. 8601All of this allows testing of the Load and Unload operators from 8602AcpiExec. 8603 8604Debugger: update tables command for unloaded tables. Handle unloaded 8605tables 8606and use the standard table header output routine. 8607 8608---------------------------------------- 860909 June 2008. Summary of changes for version 20080609: 8610 86111) ACPI CA Core Subsystem: 8612 8613Implemented a workaround for reversed _PRT entries. A significant number 8614of 8615BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 8616change dynamically detects and repairs this problem. Provides 8617compatibility 8618with MS ACPI. BZ 6859 8619 8620Simplified the internal ACPI hardware interfaces to eliminate the locking 8621flag parameter from Register Read/Write. Added a new external interface, 8622AcpiGetRegisterUnlocked. 8623 8624Fixed a problem where the invocation of a GPE control method could hang. 8625This 8626was a regression introduced in 20080514. The new method argument count 8627validation mechanism can enter an infinite loop when a GPE method is 8628dispatched. Problem fixed by removing the obsolete code that passed GPE 8629block 8630information to the notify handler via the control method parameter 8631pointer. 8632 8633Fixed a problem where the _SST execution status was incorrectly returned 8634to 8635the caller of AcpiEnterSleepStatePrep. This was a regression introduced 8636in 863720080514. _SST is optional and a NOT_FOUND exception should never be 8638returned. BZ 716 8639 8640Fixed a problem where a deleted object could be accessed from within the 8641AML 8642parser. This was a regression introduced in version 20080123 as a fix for 8643the 8644Unload operator. Lin Ming. BZ 10669 8645 8646Cleaned up the debug operand dump mechanism. Eliminated unnecessary 8647operands 8648and eliminated the use of a negative index in a loop. Operands are now 8649displayed in the correct order, not backwards. This also fixes a 8650regression 8651introduced in 20080514 on 64-bit systems where the elimination of 8652ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 8653715 8654 8655Fixed a possible memory leak in EvPciConfigRegionSetup where the error 8656exit 8657path did not delete a locally allocated structure. 8658 8659Updated definitions for the DMAR and SRAT tables to synchronize with the 8660current specifications. Includes disassembler support. 8661 8662Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 8663loop termination value was used. Loop terminated on iteration early, 8664missing 8665one mutex. Linn Crosetto 8666 8667Example Code and Data Size: These are the sizes for the OS-independent 8668acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8669debug version of the code includes the debug output trace mechanism and 8670has a 8671much larger code and data size. 8672 8673 Previous Release: 8674 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 8675 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 8676 Current Release: 8677 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 8678 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 8679 86802) iASL Compiler/Disassembler and Tools: 8681 8682Disassembler: Implemented support for EisaId() within _CID objects. Now 8683disassemble integer _CID objects back to EisaId invocations, including 8684multiple integers within _CID packages. Includes single-step support for 8685debugger also. 8686 8687Disassembler: Added support for DMAR and SRAT table definition changes. 8688 8689---------------------------------------- 869014 May 2008. Summary of changes for version 20080514: 8691 86921) ACPI CA Core Subsystem: 8693 8694Fixed a problem where GPEs were enabled too early during the ACPICA 8695initialization. This could lead to "handler not installed" errors on some 8696machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 8697This 8698ensures that all operation regions and devices throughout the namespace 8699have 8700been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 8701 8702Implemented a change to the enter sleep code. Moved execution of the _GTS 8703method to just before setting sleep enable bit. The execution was moved 8704from 8705AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 8706immediately before the SLP_EN bit is set, as per the ACPI specification. 8707Luming Yu, BZ 1653. 8708 8709Implemented a fix to disable unknown GPEs (2nd version). Now always 8710disable 8711the GPE, even if ACPICA thinks that that it is already disabled. It is 8712possible that the AML or some other code has enabled the GPE unbeknownst 8713to 8714the ACPICA code. 8715 8716Fixed a problem with the Field operator where zero-length fields would 8717return 8718an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 8719ASL 8720field declarations in Field(), BankField(), and IndexField(). BZ 10606. 8721 8722Implemented a fix for the Load operator, now load the table at the 8723namespace 8724root. This reverts a change introduced in version 20071019. The table is 8725now 8726loaded at the namespace root even though this goes against the ACPI 8727specification. This provides compatibility with other ACPI 8728implementations. 8729The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 8730Ming. 8731 8732Fixed a problem where ACPICA would not Load() tables with unusual 8733signatures. 8734Now ignore ACPI table signature for Load() operator. Only "SSDT" is 8735acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 8736Therefore, signature validation is worthless. Apparently MS ACPI accepts 8737such 8738signatures, ACPICA must be compatible. BZ 10454. 8739 8740Fixed a possible negative array index in AcpiUtValidateException. Added 8741NULL 8742fields to the exception string arrays to eliminate a -1 subtraction on 8743the 8744SubStatus field. 8745 8746Updated the debug tracking macros to reduce overall code and data size. 8747Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 8748instead of pointers to static strings. Jan Beulich and Bob Moore. 8749 8750Implemented argument count checking in control method invocation via 8751AcpiEvaluateObject. Now emit an error if too few arguments, warning if 8752too 8753many. This applies only to extern programmatic control method execution, 8754not 8755method-to-method calls within the AML. Lin Ming. 8756 8757Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 8758no 8759longer needed, especially with the removal of 16-bit support. It was 8760replaced 8761mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 8762bit 8763on 876432/64-bit platforms is required. 8765 8766Added the C const qualifier for appropriate string constants -- mostly 8767MODULE_NAME and printf format strings. Jan Beulich. 8768 8769Example Code and Data Size: These are the sizes for the OS-independent 8770acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8771debug version of the code includes the debug output trace mechanism and 8772has a 8773much larger code and data size. 8774 8775 Previous Release: 8776 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 8777 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 8778 Current Release: 8779 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 8780 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 8781 87822) iASL Compiler/Disassembler and Tools: 8783 8784Implemented ACPI table revision ID validation in the disassembler. Zero 8785is 8786always invalid. For DSDTs, the ID controls the interpreter integer width. 87871 8788means 32-bit and this is unusual. 2 or greater is 64-bit. 8789 8790---------------------------------------- 879121 March 2008. Summary of changes for version 20080321: 8792 87931) ACPI CA Core Subsystem: 8794 8795Implemented an additional change to the GPE support in order to suppress 8796spurious or stray GPEs. The AcpiEvDisableGpe function will now 8797permanently 8798disable incoming GPEs that are neither enabled nor disabled -- meaning 8799that 8800the GPE is unknown to the system. This should prevent future interrupt 8801floods 8802from that GPE. BZ 6217 (Zhang Rui) 8803 8804Fixed a problem where NULL package elements were not returned to the 8805AcpiEvaluateObject interface correctly. The element was simply ignored 8806instead of returning a NULL ACPI_OBJECT package element, potentially 8807causing 8808a buffer overflow and/or confusing the caller who expected a fixed number 8809of 8810elements. BZ 10132 (Lin Ming, Bob Moore) 8811 8812Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 8813Dword, 8814Qword), Field, BankField, and IndexField operators when invoked from 8815inside 8816an executing control method. In this case, these operators created 8817namespace 8818nodes that were incorrectly left marked as permanent nodes instead of 8819temporary nodes. This could cause a problem if there is race condition 8820between an exiting control method and a running namespace walk. (Reported 8821by 8822Linn Crosetto) 8823 8824Fixed a problem where the CreateField and CreateXXXField operators would 8825incorrectly allow duplicate names (the name of the field) with no 8826exception 8827generated. 8828 8829Implemented several changes for Notify handling. Added support for new 8830Notify 8831values (ACPI 2.0+) and improved the Notify debug output. Notify on 8832PowerResource objects is no longer allowed, as per the ACPI 8833specification. 8834(Bob Moore, Zhang Rui) 8835 8836All Reference Objects returned via the AcpiEvaluateObject interface are 8837now 8838marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 8839for 8840NULL objects - either NULL package elements or unresolved named 8841references. 8842 8843Fixed a problem where an extraneous debug message was produced for 8844package 8845objects (when debugging enabled). The message "Package List length larger 8846than NumElements count" is now produced in the correct case, and is now 8847an 8848error message rather than a debug message. Added a debug message for the 8849opposite case, where NumElements is larger than the Package List (the 8850package 8851will be padded out with NULL elements as per the ACPI spec.) 8852 8853Implemented several improvements for the output of the ASL "Debug" object 8854to 8855clarify and keep all data for a given object on one output line. 8856 8857Fixed two size calculation issues with the variable-length Start 8858Dependent 8859resource descriptor. 8860 8861Example Code and Data Size: These are the sizes for the OS-independent 8862acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8863debug version of the code includes the debug output trace mechanism and 8864has 8865a much larger code and data size. 8866 8867 Previous Release: 8868 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 8869 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 8870 Current Release: 8871 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 8872 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 8873 88742) iASL Compiler/Disassembler and Tools: 8875 8876Fixed a problem with the use of the Switch operator where execution of 8877the 8878containing method by multiple concurrent threads could cause an 8879AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 8880actual Switch opcode, it must be simulated with local named temporary 8881variables and if/else pairs. The solution chosen was to mark any method 8882that 8883uses Switch as Serialized, thus preventing multiple thread entries. BZ 8884469. 8885 8886---------------------------------------- 888713 February 2008. Summary of changes for version 20080213: 8888 88891) ACPI CA Core Subsystem: 8890 8891Implemented another MS compatibility design change for GPE/Notify 8892handling. 8893GPEs are now cleared/enabled asynchronously to allow all pending notifies 8894to 8895complete first. It is expected that the OSL will queue the enable request 8896behind all pending notify requests (may require changes to the local host 8897OSL 8898in AcpiOsExecute). Alexey Starikovskiy. 8899 8900Fixed a problem where buffer and package objects passed as arguments to a 8901control method via the external AcpiEvaluateObject interface could cause 8902an 8903AE_AML_INTERNAL exception depending on the order and type of operators 8904executed by the target control method. 8905 8906Fixed a problem where resource descriptor size optimization could cause a 8907problem when a _CRS resource template is passed to a _SRS method. The 8908_SRS 8909resource template must use the same descriptors (with the same size) as 8910returned from _CRS. This change affects the following resource 8911descriptors: 8912IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 89139487) 8914 8915Fixed a problem where a CopyObject to RegionField, BankField, and 8916IndexField 8917objects did not perform an implicit conversion as it should. These types 8918must 8919retain their initial type permanently as per the ACPI specification. 8920However, 8921a CopyObject to all other object types should not perform an implicit 8922conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 8923 8924Fixed a problem with the AcpiGetDevices interface where the mechanism to 8925match device CIDs did not examine the entire list of available CIDs, but 8926instead aborted on the first non-matching CID. Andrew Patterson. 8927 8928Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 8929was 8930inadvertently changed to return a 16-bit value instead of a 32-bit value, 8931truncating the upper dword of a 64-bit value. This macro is only used to 8932display debug output, so no incorrect calculations were made. Also, 8933reimplemented the macro so that a 64-bit shift is not performed by 8934inefficient compilers. 8935 8936Added missing va_end statements that should correspond with each va_start 8937statement. 8938 8939Example Code and Data Size: These are the sizes for the OS-independent 8940acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8941debug version of the code includes the debug output trace mechanism and 8942has 8943a much larger code and data size. 8944 8945 Previous Release: 8946 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 8947 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 8948 Current Release: 8949 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 8950 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 8951 89522) iASL Compiler/Disassembler and Tools: 8953 8954Implemented full disassembler support for the following new ACPI tables: 8955BERT, EINJ, and ERST. Implemented partial disassembler support for the 8956complicated HEST table. These tables support the Windows Hardware Error 8957Architecture (WHEA). 8958 8959---------------------------------------- 896023 January 2008. Summary of changes for version 20080123: 8961 89621) ACPI CA Core Subsystem: 8963 8964Added the 2008 copyright to all module headers and signons. This affects 8965virtually every file in the ACPICA core subsystem, the iASL compiler, and 8966the tools/utilities. 8967 8968Fixed a problem with the SizeOf operator when used with Package and 8969Buffer 8970objects. These objects have deferred execution for some arguments, and 8971the 8972execution is now completed before the SizeOf is executed. This problem 8973caused 8974unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 8975BZ 89769558 8977 8978Implemented an enhancement to the interpreter "slack mode". In the 8979absence 8980of 8981an explicit return or an implicitly returned object from the last 8982executed 8983opcode, a control method will now implicitly return an integer of value 0 8984for 8985Microsoft compatibility. (Lin Ming) BZ 392 8986 8987Fixed a problem with the Load operator where an exception was not 8988returned 8989in 8990the case where the table is already loaded. (Lin Ming) BZ 463 8991 8992Implemented support for the use of DDBHandles as an Indexed Reference, as 8993per 8994the ACPI spec. (Lin Ming) BZ 486 8995 8996Implemented support for UserTerm (Method invocation) for the Unload 8997operator 8998as per the ACPI spec. (Lin Ming) BZ 580 8999 9000Fixed a problem with the LoadTable operator where the OemId and 9001OemTableId 9002input strings could cause unexpected failures if they were shorter than 9003the 9004maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 9005 9006Implemented support for UserTerm (Method invocation) for the Unload 9007operator 9008as per the ACPI spec. (Lin Ming) BZ 580 9009 9010Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 9011HEST, 9012IBFT, UEFI, WDAT. Disassembler support is forthcoming. 9013 9014Example Code and Data Size: These are the sizes for the OS-independent 9015acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9016debug version of the code includes the debug output trace mechanism and 9017has 9018a much larger code and data size. 9019 9020 Previous Release: 9021 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9022 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9023 Current Release: 9024 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9025 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9026 90272) iASL Compiler/Disassembler and Tools: 9028 9029Implemented support in the disassembler for checksum validation on 9030incoming 9031binary DSDTs and SSDTs. If incorrect, a message is displayed within the 9032table 9033header dump at the start of the disassembly. 9034 9035Implemented additional debugging information in the namespace listing 9036file 9037created during compilation. In addition to the namespace hierarchy, the 9038full 9039pathname to each namespace object is displayed. 9040 9041Fixed a problem with the disassembler where invalid ACPI tables could 9042cause 9043faults or infinite loops. 9044 9045Fixed an unexpected parse error when using the optional "parameter types" 9046list in a control method declaration. (Lin Ming) BZ 397 9047 9048Fixed a problem where two External declarations with the same name did 9049not 9050cause an error (Lin Ming) BZ 509 9051 9052Implemented support for full TermArgs (adding Argx, Localx and method 9053invocation) for the ParameterData parameter to the LoadTable operator. 9054(Lin 9055Ming) BZ 583,587 9056 9057---------------------------------------- 905819 December 2007. Summary of changes for version 20071219: 9059 90601) ACPI CA Core Subsystem: 9061 9062Implemented full support for deferred execution for the TermArg string 9063arguments for DataTableRegion. This enables forward references and full 9064operand resolution for the three string arguments. Similar to 9065OperationRegion 9066deferred argument execution.) Lin Ming. BZ 430 9067 9068Implemented full argument resolution support for the BankValue argument 9069to 9070BankField. Previously, only constants were supported, now any TermArg may 9071be 9072used. Lin Ming BZ 387, 393 9073 9074Fixed a problem with AcpiGetDevices where the search of a branch of the 9075device tree could be terminated prematurely. In accordance with the ACPI 9076specification, the search down the current branch is terminated if a 9077device 9078is both not present and not functional (instead of just not present.) 9079Yakui 9080Zhao. 9081 9082Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 9083if 9084the underlying AML code changed the GPE enable registers. Now, any 9085unknown 9086incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 9087disabled 9088instead of simply ignored. Rui Zhang. 9089 9090Fixed a problem with Index Fields where the Index register was 9091incorrectly 9092limited to a maximum of 32 bits. Now any size may be used. 9093 9094Fixed a couple memory leaks associated with "implicit return" objects 9095when 9096the AML Interpreter slack mode is enabled. Lin Ming BZ 349 9097 9098Example Code and Data Size: These are the sizes for the OS-independent 9099acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9100debug version of the code includes the debug output trace mechanism and 9101has 9102a much larger code and data size. 9103 9104 Previous Release: 9105 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 9106 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9107 Current Release: 9108 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9109 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9110 9111---------------------------------------- 911214 November 2007. Summary of changes for version 20071114: 9113 91141) ACPI CA Core Subsystem: 9115 9116Implemented event counters for each of the Fixed Events, the ACPI SCI 9117(interrupt) itself, and control methods executed. Named 9118AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 9119These 9120should be useful for debugging and statistics. 9121 9122Implemented a new external interface, AcpiGetStatistics, to retrieve the 9123contents of the various event counters. Returns the current values for 9124AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 9125AcpiMethodCount. The interface can be expanded in the future if new 9126counters 9127are added. Device drivers should use this interface rather than access 9128the 9129counters directly. 9130 9131Fixed a problem with the FromBCD and ToBCD operators. With some 9132compilers, 9133the ShortDivide function worked incorrectly, causing problems with the 9134BCD 9135functions with large input values. A truncation from 64-bit to 32-bit 9136inadvertently occurred. Internal BZ 435. Lin Ming 9137 9138Fixed a problem with Index references passed as method arguments. 9139References 9140passed as arguments to control methods were dereferenced immediately 9141(before 9142control was passed to the called method). The references are now 9143correctly 9144passed directly to the called method. BZ 5389. Lin Ming 9145 9146Fixed a problem with CopyObject used in conjunction with the Index 9147operator. 9148The reference was incorrectly dereferenced before the copy. The reference 9149is 9150now correctly copied. BZ 5391. Lin Ming 9151 9152Fixed a problem with Control Method references within Package objects. 9153These 9154references are now correctly generated. This completes the package 9155construction overhaul that began in version 20071019. 9156 9157Example Code and Data Size: These are the sizes for the OS-independent 9158acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9159debug version of the code includes the debug output trace mechanism and 9160has 9161a much larger code and data size. 9162 9163 Previous Release: 9164 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 9165 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 9166 Current Release: 9167 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 9168 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9169 9170 91712) iASL Compiler/Disassembler and Tools: 9172 9173The AcpiExec utility now installs handlers for all of the predefined 9174Operation Region types. New types supported are: PCI_Config, CMOS, and 9175PCIBARTarget. 9176 9177Fixed a problem with the 64-bit version of AcpiExec where the extended 9178(64- 9179bit) address fields for the DSDT and FACS within the FADT were not being 9180used, causing truncation of the upper 32-bits of these addresses. Lin 9181Ming 9182and Bob Moore 9183 9184---------------------------------------- 918519 October 2007. Summary of changes for version 20071019: 9186 91871) ACPI CA Core Subsystem: 9188 9189Fixed a problem with the Alias operator when the target of the alias is a 9190named ASL operator that opens a new scope -- Scope, Device, 9191PowerResource, 9192Processor, and ThermalZone. In these cases, any children of the original 9193operator could not be accessed via the alias, potentially causing 9194unexpected 9195AE_NOT_FOUND exceptions. (BZ 9067) 9196 9197Fixed a problem with the Package operator where all named references were 9198created as object references and left otherwise unresolved. According to 9199the 9200ACPI specification, a Package can only contain Data Objects or references 9201to 9202control methods. The implication is that named references to Data Objects 9203(Integer, Buffer, String, Package, BufferField, Field) should be resolved 9204immediately upon package creation. This is the approach taken with this 9205change. References to all other named objects (Methods, Devices, Scopes, 9206etc.) are all now properly created as reference objects. (BZ 5328) 9207 9208Reverted a change to Notify handling that was introduced in version 920920070508. This version changed the Notify handling from asynchronous to 9210fully synchronous (Device driver Notify handling with respect to the 9211Notify 9212ASL operator). It was found that this change caused more problems than it 9213solved and was removed by most users. 9214 9215Fixed a problem with the Increment and Decrement operators where the type 9216of 9217the target object could be unexpectedly and incorrectly changed. (BZ 353) 9218Lin Ming. 9219 9220Fixed a problem with the Load and LoadTable operators where the table 9221location within the namespace was ignored. Instead, the table was always 9222loaded into the root or current scope. Lin Ming. 9223 9224Fixed a problem with the Load operator when loading a table from a buffer 9225object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 9226 9227Fixed a problem with the Debug object where a store of a DdbHandle 9228reference 9229object to the Debug object could cause a fault. 9230 9231Added a table checksum verification for the Load operator, in the case 9232where 9233the load is from a buffer. (BZ 578). 9234 9235Implemented additional parameter validation for the LoadTable operator. 9236The 9237length of the input strings SignatureString, OemIdString, and OemTableId 9238are 9239now checked for maximum lengths. (BZ 582) Lin Ming. 9240 9241Example Code and Data Size: These are the sizes for the OS-independent 9242acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9243debug version of the code includes the debug output trace mechanism and 9244has 9245a much larger code and data size. 9246 9247 Previous Release: 9248 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 9249 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 9250 Current Release: 9251 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 9252 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 9253 9254 92552) iASL Compiler/Disassembler: 9256 9257Fixed a problem where if a single file was specified and the file did not 9258exist, no error message was emitted. (Introduced with wildcard support in 9259version 20070917.) 9260 9261---------------------------------------- 926219 September 2007. Summary of changes for version 20070919: 9263 92641) ACPI CA Core Subsystem: 9265 9266Designed and implemented new external interfaces to install and remove 9267handlers for ACPI table-related events. Current events that are defined 9268are 9269LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 9270they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 9271AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 9272 9273Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 9274(acpi_serialized option on Linux) could cause some systems to hang during 9275initialization. (Bob Moore) BZ 8171 9276 9277Fixed a problem where objects of certain types (Device, ThermalZone, 9278Processor, PowerResource) can be not found if they are declared and 9279referenced from within the same control method (Lin Ming) BZ 341 9280 9281Example Code and Data Size: These are the sizes for the OS-independent 9282acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9283debug version of the code includes the debug output trace mechanism and 9284has 9285a much larger code and data size. 9286 9287 Previous Release: 9288 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 9289 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 9290 Current Release: 9291 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 9292 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 9293 9294 92952) iASL Compiler/Disassembler: 9296 9297Implemented support to allow multiple files to be compiled/disassembled 9298in 9299a 9300single invocation. This includes command line wildcard support for both 9301the 9302Windows and Unix versions of the compiler. This feature simplifies the 9303disassembly and compilation of multiple ACPI tables in a single 9304directory. 9305 9306---------------------------------------- 930708 May 2007. Summary of changes for version 20070508: 9308 93091) ACPI CA Core Subsystem: 9310 9311Implemented a Microsoft compatibility design change for the handling of 9312the 9313Notify AML operator. Previously, notify handlers were dispatched and 9314executed completely asynchronously in a deferred thread. The new design 9315still executes the notify handlers in a different thread, but the 9316original 9317thread that executed the Notify() now waits at a synchronization point 9318for 9319the notify handler to complete. Some machines depend on a synchronous 9320Notify 9321operator in order to operate correctly. 9322 9323Implemented support to allow Package objects to be passed as method 9324arguments to the external AcpiEvaluateObject interface. Previously, this 9325would return the AE_NOT_IMPLEMENTED exception. This feature had not been 9326implemented since there were no reserved control methods that required it 9327until recently. 9328 9329Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 9330that 9331contained invalid non-zero values in reserved fields could cause later 9332failures because these fields have meaning in later revisions of the 9333FADT. 9334For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 9335fields 9336are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 9337 9338Fixed a problem where the Global Lock handle was not properly updated if 9339a 9340thread that acquired the Global Lock via executing AML code then 9341attempted 9342to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 9343Joe 9344Liu. 9345 9346Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 9347could be corrupted if the interrupt being removed was at the head of the 9348list. Reported by Linn Crosetto. 9349 9350Example Code and Data Size: These are the sizes for the OS-independent 9351acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9352debug version of the code includes the debug output trace mechanism and 9353has 9354a much larger code and data size. 9355 9356 Previous Release: 9357 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9358 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 9359 Current Release: 9360 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 9361 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 9362 9363---------------------------------------- 936420 March 2007. Summary of changes for version 20070320: 9365 93661) ACPI CA Core Subsystem: 9367 9368Implemented a change to the order of interpretation and evaluation of AML 9369operand objects within the AML interpreter. The interpreter now evaluates 9370operands in the order that they appear in the AML stream (and the 9371corresponding ASL code), instead of in the reverse order (after the 9372entire 9373operand list has been parsed). The previous behavior caused several 9374subtle 9375incompatibilities with the Microsoft AML interpreter as well as being 9376somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 9377 9378Implemented a change to the ACPI Global Lock support. All interfaces to 9379the 9380global lock now allow the same thread to acquire the lock multiple times. 9381This affects the AcpiAcquireGlobalLock external interface to the global 9382lock 9383as well as the internal use of the global lock to support AML fields -- a 9384control method that is holding the global lock can now simultaneously 9385access 9386AML fields that require global lock protection. Previously, in both 9387cases, 9388this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 9389to 9390AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 9391Controller. There is no change to the behavior of the AML Acquire 9392operator, 9393as this can already be used to acquire a mutex multiple times by the same 9394thread. BZ 8066. With assistance from Alexey Starikovskiy. 9395 9396Fixed a problem where invalid objects could be referenced in the AML 9397Interpreter after error conditions. During operand evaluation, ensure 9398that 9399the internal "Return Object" field is cleared on error and only valid 9400pointers are stored there. Caused occasional access to deleted objects 9401that 9402resulted in "large reference count" warning messages. Valery Podrezov. 9403 9404Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 9405on 9406deeply nested control method invocations. BZ 7873, local BZ 487. Valery 9407Podrezov. 9408 9409Fixed an internal problem with the handling of result objects on the 9410interpreter result stack. BZ 7872. Valery Podrezov. 9411 9412Removed obsolete code that handled the case where AML_NAME_OP is the 9413target 9414of a reference (Reference.Opcode). This code was no longer necessary. BZ 94157874. Valery Podrezov. 9416 9417Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 9418was 9419a 9420remnant from the previously discontinued 16-bit support. 9421 9422Example Code and Data Size: These are the sizes for the OS-independent 9423acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9424debug version of the code includes the debug output trace mechanism and 9425has 9426a much larger code and data size. 9427 9428 Previous Release: 9429 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9430 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9431 Current Release: 9432 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9433 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 9434 9435---------------------------------------- 943626 January 2007. Summary of changes for version 20070126: 9437 94381) ACPI CA Core Subsystem: 9439 9440Added the 2007 copyright to all module headers and signons. This affects 9441virtually every file in the ACPICA core subsystem, the iASL compiler, and 9442the utilities. 9443 9444Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 9445during a table load. A bad pointer was passed in the case where the DSDT 9446is 9447overridden, causing a fault in this case. 9448 9449Example Code and Data Size: These are the sizes for the OS-independent 9450acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9451debug version of the code includes the debug output trace mechanism and 9452has 9453a much larger code and data size. 9454 9455 Previous Release: 9456 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9457 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9458 Current Release: 9459 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9460 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9461 9462---------------------------------------- 946315 December 2006. Summary of changes for version 20061215: 9464 94651) ACPI CA Core Subsystem: 9466 9467Support for 16-bit ACPICA has been completely removed since it is no 9468longer 9469necessary and it clutters the code. All 16-bit macros, types, and 9470conditional compiles have been removed, cleaning up and simplifying the 9471code 9472across the entire subsystem. DOS support is no longer needed since the 9473bootable Linux firmware kit is now available. 9474 9475The handler for the Global Lock is now removed during AcpiTerminate to 9476enable a clean subsystem restart, via the implementation of the 9477AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 9478HP) 9479 9480Implemented enhancements to the multithreading support within the 9481debugger 9482to enable improved multithreading debugging and evaluation of the 9483subsystem. 9484(Valery Podrezov) 9485 9486Debugger: Enhanced the Statistics/Memory command to emit the total 9487(maximum) 9488memory used during the execution, as well as the maximum memory consumed 9489by 9490each of the various object types. (Valery Podrezov) 9491 9492Example Code and Data Size: These are the sizes for the OS-independent 9493acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9494debug version of the code includes the debug output trace mechanism and 9495has 9496a much larger code and data size. 9497 9498 Previous Release: 9499 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 9500 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 9501 Current Release: 9502 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9503 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9504 9505 95062) iASL Compiler/Disassembler and Tools: 9507 9508AcpiExec: Implemented a new option (-m) to display full memory use 9509statistics upon subsystem/program termination. (Valery Podrezov) 9510 9511---------------------------------------- 951209 November 2006. Summary of changes for version 20061109: 9513 95141) ACPI CA Core Subsystem: 9515 9516Optimized the Load ASL operator in the case where the source operand is 9517an 9518operation region. Simply map the operation region memory, instead of 9519performing a bytewise read. (Region must be of type SystemMemory, see 9520below.) 9521 9522Fixed the Load ASL operator for the case where the source operand is a 9523region field. A buffer object is also allowed as the source operand. BZ 9524480 9525 9526Fixed a problem where the Load ASL operator allowed the source operand to 9527be 9528an operation region of any type. It is now restricted to regions of type 9529SystemMemory, as per the ACPI specification. BZ 481 9530 9531Additional cleanup and optimizations for the new Table Manager code. 9532 9533AcpiEnable will now fail if all of the required ACPI tables are not 9534loaded 9535(FADT, FACS, DSDT). BZ 477 9536 9537Added #pragma pack(8/4) to acobject.h to ensure that the structures in 9538this 9539header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 9540manually optimized to be aligned and will not work if it is byte-packed. 9541 9542Example Code and Data Size: These are the sizes for the OS-independent 9543acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9544debug version of the code includes the debug output trace mechanism and 9545has 9546a much larger code and data size. 9547 9548 Previous Release: 9549 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 9550 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 9551 Current Release: 9552 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 9553 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 9554 9555 95562) iASL Compiler/Disassembler and Tools: 9557 9558Fixed a problem where the presence of the _OSI predefined control method 9559within complex expressions could cause an internal compiler error. 9560 9561AcpiExec: Implemented full region support for multiple address spaces. 9562SpaceId is now part of the REGION object. BZ 429 9563 9564---------------------------------------- 956511 October 2006. Summary of changes for version 20061011: 9566 95671) ACPI CA Core Subsystem: 9568 9569Completed an AML interpreter performance enhancement for control method 9570execution. Previously a 2-pass parse/execution, control methods are now 9571completely parsed and executed in a single pass. This improves overall 9572interpreter performance by ~25%, reduces code size, and reduces CPU stack 9573use. (Valery Podrezov + interpreter changes in version 20051202 that 9574eliminated namespace loading during the pass one parse.) 9575 9576Implemented _CID support for PCI Root Bridge detection. If the _HID does 9577not 9578match the predefined PCI Root Bridge IDs, the _CID list (if present) is 9579now 9580obtained and also checked for an ID match. 9581 9582Implemented additional support for the PCI _ADR execution: upsearch until 9583a 9584device scope is found before executing _ADR. This allows PCI_Config 9585operation regions to be declared locally within control methods 9586underneath 9587PCI device objects. 9588 9589Fixed a problem with a possible race condition between threads executing 9590AcpiWalkNamespace and the AML interpreter. This condition was removed by 9591modifying AcpiWalkNamespace to (by default) ignore all temporary 9592namespace 9593entries created during any concurrent control method execution. An 9594additional namespace race condition is known to exist between 9595AcpiWalkNamespace and the Load/Unload ASL operators and is still under 9596investigation. 9597 9598Restructured the AML ParseLoop function, breaking it into several 9599subfunctions in order to reduce CPU stack use and improve 9600maintainability. 9601(Mikhail Kouzmich) 9602 9603AcpiGetHandle: Fix for parameter validation to detect invalid 9604combinations 9605of prefix handle and pathname. BZ 478 9606 9607Example Code and Data Size: These are the sizes for the OS-independent 9608acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9609debug version of the code includes the debug output trace mechanism and 9610has 9611a much larger code and data size. 9612 9613 Previous Release: 9614 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9615 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 9616 Current Release: 9617 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 9618 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 9619 96202) iASL Compiler/Disassembler and Tools: 9621 9622Ported the -g option (get local ACPI tables) to the new ACPICA Table 9623Manager 9624to restore original behavior. 9625 9626---------------------------------------- 962727 September 2006. Summary of changes for version 20060927: 9628 96291) ACPI CA Core Subsystem: 9630 9631Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 9632These functions now use a spinlock for mutual exclusion and the interrupt 9633level indication flag is not needed. 9634 9635Fixed a problem with the Global Lock where the lock could appear to be 9636obtained before it is actually obtained. The global lock semaphore was 9637inadvertently created with one unit instead of zero units. (BZ 464) 9638Fiodor 9639Suietov. 9640 9641Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 9642during 9643a read from a buffer or region field. (BZ 458) Fiodor Suietov. 9644 9645Example Code and Data Size: These are the sizes for the OS-independent 9646acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9647debug version of the code includes the debug output trace mechanism and 9648has 9649a much larger code and data size. 9650 9651 Previous Release: 9652 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9653 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 9654 Current Release: 9655 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9656 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 9657 9658 96592) iASL Compiler/Disassembler and Tools: 9660 9661Fixed a compilation problem with the pre-defined Resource Descriptor 9662field 9663names where an "object does not exist" error could be incorrectly 9664generated 9665if the parent ResourceTemplate pathname places the template within a 9666different namespace scope than the current scope. (BZ 7212) 9667 9668Fixed a problem where the compiler could hang after syntax errors 9669detected 9670in an ElseIf construct. (BZ 453) 9671 9672Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 9673operator. An incorrect output filename was produced when this parameter 9674was 9675a null string (""). Now, the original input filename is used as the AML 9676output filename, with an ".aml" extension. 9677 9678Implemented a generic batch command mode for the AcpiExec utility 9679(execute 9680any AML debugger command) (Valery Podrezov). 9681 9682---------------------------------------- 968312 September 2006. Summary of changes for version 20060912: 9684 96851) ACPI CA Core Subsystem: 9686 9687Enhanced the implementation of the "serialized mode" of the interpreter 9688(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 9689specified, instead of creating a serialization semaphore per control 9690method, 9691the interpreter lock is simply no longer released before a blocking 9692operation during control method execution. This effectively makes the AML 9693Interpreter single-threaded. The overhead of a semaphore per-method is 9694eliminated. 9695 9696Fixed a regression where an error was no longer emitted if a control 9697method 9698attempts to create 2 objects of the same name. This once again returns 9699AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 9700that 9701will dynamically serialize the control method to possible prevent future 9702errors. (BZ 440) 9703 9704Integrated a fix for a problem with PCI Express HID detection in the PCI 9705Config Space setup procedure. (BZ 7145) 9706 9707Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 9708AcpiHwInitialize function - the FADT registers are now validated when the 9709table is loaded. 9710 9711Added two new warnings during FADT verification - 1) if the FADT is 9712larger 9713than the largest known FADT version, and 2) if there is a mismatch 9714between 9715a 971632-bit block address and the 64-bit X counterpart (when both are non- 9717zero.) 9718 9719Example Code and Data Size: These are the sizes for the OS-independent 9720acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9721debug version of the code includes the debug output trace mechanism and 9722has 9723a much larger code and data size. 9724 9725 Previous Release: 9726 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 9727 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 9728 Current Release: 9729 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9730 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 9731 9732 97332) iASL Compiler/Disassembler and Tools: 9734 9735Fixed a problem with the implementation of the Switch() operator where 9736the 9737temporary variable was declared too close to the actual Switch, instead 9738of 9739at method level. This could cause a problem if the Switch() operator is 9740within a while loop, causing an error on the second iteration. (BZ 460) 9741 9742Disassembler - fix for error emitted for unknown type for target of scope 9743operator. Now, ignore it and continue. 9744 9745Disassembly of an FADT now verifies the input FADT and reports any errors 9746found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 9747 9748Disassembly of raw data buffers with byte initialization data now 9749prefixes 9750each output line with the current buffer offset. 9751 9752Disassembly of ASF! table now includes all variable-length data fields at 9753the end of some of the subtables. 9754 9755The disassembler now emits a comment if a buffer appears to be a 9756ResourceTemplate, but cannot be disassembled as such because the EndTag 9757does 9758not appear at the very end of the buffer. 9759 9760AcpiExec - Added the "-t" command line option to enable the serialized 9761mode 9762of the AML interpreter. 9763 9764---------------------------------------- 976531 August 2006. Summary of changes for version 20060831: 9766 97671) ACPI CA Core Subsystem: 9768 9769Miscellaneous fixes for the Table Manager: 9770- Correctly initialize internal common FADT for all 64-bit "X" fields 9771- Fixed a couple table mapping issues during table load 9772- Fixed a couple alignment issues for IA64 9773- Initialize input array to zero in AcpiInitializeTables 9774- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 9775AcpiGetTableByIndex 9776 9777Change for GPE support: when a "wake" GPE is received, all wake GPEs are 9778now 9779immediately disabled to prevent the waking GPE from firing again and to 9780prevent other wake GPEs from interrupting the wake process. 9781 9782Added the AcpiGpeCount global that tracks the number of processed GPEs, 9783to 9784be used for debugging systems with a large number of ACPI interrupts. 9785 9786Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 9787both the ACPICA headers and the disassembler. 9788 9789Example Code and Data Size: These are the sizes for the OS-independent 9790acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9791debug version of the code includes the debug output trace mechanism and 9792has 9793a much larger code and data size. 9794 9795 Previous Release: 9796 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 9797 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 9798 Current Release: 9799 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 9800 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 9801 9802 98032) iASL Compiler/Disassembler and Tools: 9804 9805Disassembler support for the DMAR ACPI table. 9806 9807---------------------------------------- 980823 August 2006. Summary of changes for version 20060823: 9809 98101) ACPI CA Core Subsystem: 9811 9812The Table Manager component has been completely redesigned and 9813reimplemented. The new design is much simpler, and reduces the overall 9814code 9815and data size of the kernel-resident ACPICA by approximately 5%. Also, it 9816is 9817now possible to obtain the ACPI tables very early during kernel 9818initialization, even before dynamic memory management is initialized. 9819(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 9820 9821Obsolete ACPICA interfaces: 9822 9823- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 9824init 9825time). 9826- AcpiLoadTable: Not needed. 9827- AcpiUnloadTable: Not needed. 9828 9829New ACPICA interfaces: 9830 9831- AcpiInitializeTables: Must be called before the table manager can be 9832used. 9833- AcpiReallocateRootTable: Used to transfer the root table to dynamically 9834allocated memory after it becomes available. 9835- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 9836tables 9837in the RSDT/XSDT. 9838 9839Other ACPICA changes: 9840 9841- AcpiGetTableHeader returns the actual mapped table header, not a copy. 9842Use 9843AcpiOsUnmapMemory to free this mapping. 9844- AcpiGetTable returns the actual mapped table. The mapping is managed 9845internally and must not be deleted by the caller. Use of this interface 9846causes no additional dynamic memory allocation. 9847- AcpiFindRootPointer: Support for physical addressing has been 9848eliminated, 9849it appeared to be unused. 9850- The interface to AcpiOsMapMemory has changed to be consistent with the 9851other allocation interfaces. 9852- The interface to AcpiOsGetRootPointer has changed to eliminate 9853unnecessary 9854parameters. 9855- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 985664- 9857bit platforms. Was previously 64 bits on all platforms. 9858- The interface to the ACPI Global Lock acquire/release macros have 9859changed 9860slightly since ACPICA no longer keeps a local copy of the FACS with a 9861constructed pointer to the actual global lock. 9862 9863Porting to the new table manager: 9864 9865- AcpiInitializeTables: Must be called once, and can be called anytime 9866during the OS initialization process. It allows the host to specify an 9867area 9868of memory to be used to store the internal version of the RSDT/XSDT (root 9869table). This allows the host to access ACPI tables before memory 9870management 9871is initialized and running. 9872- AcpiReallocateRootTable: Can be called after memory management is 9873running 9874to copy the root table to a dynamically allocated array, freeing up the 9875scratch memory specified in the call to AcpiInitializeTables. 9876- AcpiSubsystemInitialize: This existing interface is independent of the 9877Table Manager, and does not have to be called before the Table Manager 9878can 9879be used, it only must be called before the rest of ACPICA can be used. 9880- ACPI Tables: Some changes have been made to the names and structure of 9881the 9882actbl.h and actbl1.h header files and may require changes to existing 9883code. 9884For example, bitfields have been completely removed because of their lack 9885of 9886portability across C compilers. 9887- Update interfaces to the Global Lock acquire/release macros if local 9888versions are used. (see acwin.h) 9889 9890Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 9891 9892New files: tbfind.c 9893 9894Example Code and Data Size: These are the sizes for the OS-independent 9895acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9896debug version of the code includes the debug output trace mechanism and 9897has 9898a much larger code and data size. 9899 9900 Previous Release: 9901 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 9902 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 9903 Current Release: 9904 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 9905 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 9906 9907 99082) iASL Compiler/Disassembler and Tools: 9909 9910No changes for this release. 9911 9912---------------------------------------- 991321 July 2006. Summary of changes for version 20060721: 9914 99151) ACPI CA Core Subsystem: 9916 9917The full source code for the ASL test suite used to validate the iASL 9918compiler and the ACPICA core subsystem is being released with the ACPICA 9919source for the first time. The source is contained in a separate package 9920and 9921consists of over 1100 files that exercise all ASL/AML operators. The 9922package 9923should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 9924Fiodor 9925Suietov) 9926 9927Completed a new design and implementation for support of the ACPI Global 9928Lock. On the OS side, the global lock is now treated as a standard AML 9929mutex. Previously, multiple OS threads could "acquire" the global lock 9930simultaneously. However, this could cause the BIOS to be starved out of 9931the 9932lock - especially in cases such as the Embedded Controller driver where 9933there is a tight coupling between the OS and the BIOS. 9934 9935Implemented an optimization for the ACPI Global Lock interrupt mechanism. 9936The Global Lock interrupt handler no longer queues the execution of a 9937separate thread to signal the global lock semaphore. Instead, the 9938semaphore 9939is signaled directly from the interrupt handler. 9940 9941Implemented support within the AML interpreter for package objects that 9942contain a larger AML length (package list length) than the package 9943element 9944count. In this case, the length of the package is truncated to match the 9945package element count. Some BIOS code apparently modifies the package 9946length 9947on the fly, and this change supports this behavior. Provides 9948compatibility 9949with the MS AML interpreter. (With assistance from Fiodor Suietov) 9950 9951Implemented a temporary fix for the BankValue parameter of a Bank Field 9952to 9953support all constant values, now including the Zero and One opcodes. 9954Evaluation of this parameter must eventually be converted to a full 9955TermArg 9956evaluation. A not-implemented error is now returned (temporarily) for 9957non- 9958constant values for this parameter. 9959 9960Fixed problem reports (Fiodor Suietov) integrated: 9961- Fix for premature object deletion after CopyObject on Operation Region 9962(BZ 9963350) 9964 9965Example Code and Data Size: These are the sizes for the OS-independent 9966acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9967debug version of the code includes the debug output trace mechanism and 9968has 9969a much larger code and data size. 9970 9971 Previous Release: 9972 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 9973 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 9974 Current Release: 9975 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 9976 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 9977 9978 99792) iASL Compiler/Disassembler and Tools: 9980 9981No changes for this release. 9982 9983---------------------------------------- 998407 July 2006. Summary of changes for version 20060707: 9985 99861) ACPI CA Core Subsystem: 9987 9988Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 9989that do not allow the initialization of address pointers within packed 9990structures - even though the hardware itself may support misaligned 9991transfers. Some of the debug data structures are packed by default to 9992minimize size. 9993 9994Added an error message for the case where AcpiOsGetThreadId() returns 9995zero. 9996A non-zero value is required by the core ACPICA code to ensure the proper 9997operation of AML mutexes and recursive control methods. 9998 9999The DSDT is now the only ACPI table that determines whether the AML 10000interpreter is in 32-bit or 64-bit mode. Not really a functional change, 10001but 10002the hooks for per-table 32/64 switching have been removed from the code. 10003A 10004clarification to the ACPI specification is forthcoming in ACPI 3.0B. 10005 10006Fixed a possible leak of an OwnerID in the error path of 10007AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 10008deletion to a single place in AcpiTbUninstallTable to correct possible 10009leaks 10010when using the AcpiTbDeleteTablesByType interface (with assistance from 10011Lance Ortiz.) 10012 10013Fixed a problem with Serialized control methods where the semaphore 10014associated with the method could be over-signaled after multiple method 10015invocations. 10016 10017Fixed two issues with the locking of the internal namespace data 10018structure. 10019Both the Unload() operator and AcpiUnloadTable interface now lock the 10020namespace during the namespace deletion associated with the table unload 10021(with assistance from Linn Crosetto.) 10022 10023Fixed problem reports (Valery Podrezov) integrated: 10024- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 10025 10026Fixed problem reports (Fiodor Suietov) integrated: 10027- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 10028- On Address Space handler deletion, needless deactivation call (BZ 374) 10029- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 10030375) 10031- Possible memory leak, Notify sub-objects of Processor, Power, 10032ThermalZone 10033(BZ 376) 10034- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 10035- Minimum Length of RSDT should be validated (BZ 379) 10036- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 10037Handler (BZ (380) 10038- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 10039loaded 10040(BZ 381) 10041 10042Example Code and Data Size: These are the sizes for the OS-independent 10043acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10044debug version of the code includes the debug output trace mechanism and 10045has 10046a much larger code and data size. 10047 10048 Previous Release: 10049 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10050 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10051 Current Release: 10052 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10053 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10054 10055 100562) iASL Compiler/Disassembler and Tools: 10057 10058Fixed problem reports: 10059Compiler segfault when ASL contains a long (>1024) String declaration (BZ 10060436) 10061 10062---------------------------------------- 1006323 June 2006. Summary of changes for version 20060623: 10064 100651) ACPI CA Core Subsystem: 10066 10067Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 10068allows the type to be customized to the host OS for improved efficiency 10069(since a spinlock is usually a very small object.) 10070 10071Implemented support for "ignored" bits in the ACPI registers. According 10072to 10073the ACPI specification, these bits should be preserved when writing the 10074registers via a read/modify/write cycle. There are 3 bits preserved in 10075this 10076manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 10077 10078Implemented the initial deployment of new OSL mutex interfaces. Since 10079some 10080host operating systems have separate mutex and semaphore objects, this 10081feature was requested. The base code now uses mutexes (and the new mutex 10082interfaces) wherever a binary semaphore was used previously. However, for 10083the current release, the mutex interfaces are defined as macros to map 10084them 10085to the existing semaphore interfaces. Therefore, no OSL changes are 10086required 10087at this time. (See acpiosxf.h) 10088 10089Fixed several problems with the support for the control method SyncLevel 10090parameter. The SyncLevel now works according to the ACPI specification 10091and 10092in concert with the Mutex SyncLevel parameter, since the current 10093SyncLevel 10094is a property of the executing thread. Mutual exclusion for control 10095methods 10096is now implemented with a mutex instead of a semaphore. 10097 10098Fixed three instances of the use of the C shift operator in the bitfield 10099support code (exfldio.c) to avoid the use of a shift value larger than 10100the 10101target data width. The behavior of C compilers is undefined in this case 10102and 10103can cause unpredictable results, and therefore the case must be detected 10104and 10105avoided. (Fiodor Suietov) 10106 10107Added an info message whenever an SSDT or OEM table is loaded dynamically 10108via the Load() or LoadTable() ASL operators. This should improve 10109debugging 10110capability since it will show exactly what tables have been loaded 10111(beyond 10112the tables present in the RSDT/XSDT.) 10113 10114Example Code and Data Size: These are the sizes for the OS-independent 10115acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10116debug version of the code includes the debug output trace mechanism and 10117has 10118a much larger code and data size. 10119 10120 Previous Release: 10121 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10122 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10123 Current Release: 10124 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10125 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10126 10127 101282) iASL Compiler/Disassembler and Tools: 10129 10130No changes for this release. 10131 10132---------------------------------------- 1013308 June 2006. Summary of changes for version 20060608: 10134 101351) ACPI CA Core Subsystem: 10136 10137Converted the locking mutex used for the ACPI hardware to a spinlock. 10138This 10139change should eliminate all problems caused by attempting to acquire a 10140semaphore at interrupt level, and it means that all ACPICA external 10141interfaces that directly access the ACPI hardware can be safely called 10142from 10143interrupt level. OSL code that implements the semaphore interfaces should 10144be 10145able to eliminate any workarounds for being called at interrupt level. 10146 10147Fixed a regression introduced in 20060526 where the ACPI device 10148initialization could be prematurely aborted with an AE_NOT_FOUND if a 10149device 10150did not have an optional _INI method. 10151 10152Fixed an IndexField issue where a write to the Data Register should be 10153limited in size to the AccessSize (width) of the IndexField itself. (BZ 10154433, 10155Fiodor Suietov) 10156 10157Fixed problem reports (Valery Podrezov) integrated: 10158- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 10159 10160Fixed problem reports (Fiodor Suietov) integrated: 10161- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 10162 10163Removed four global mutexes that were obsolete and were no longer being 10164used. 10165 10166Example Code and Data Size: These are the sizes for the OS-independent 10167acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10168debug version of the code includes the debug output trace mechanism and 10169has 10170a much larger code and data size. 10171 10172 Previous Release: 10173 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 10174 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 10175 Current Release: 10176 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10177 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10178 10179 101802) iASL Compiler/Disassembler and Tools: 10181 10182Fixed a fault when using -g option (get tables from registry) on Windows 10183machines. 10184 10185Fixed problem reports integrated: 10186- Generate error if CreateField NumBits parameter is zero. (BZ 405) 10187- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 10188Suietov) 10189- Global table revision override (-r) is ignored (BZ 413) 10190 10191---------------------------------------- 1019226 May 2006. Summary of changes for version 20060526: 10193 101941) ACPI CA Core Subsystem: 10195 10196Restructured, flattened, and simplified the internal interfaces for 10197namespace object evaluation - resulting in smaller code, less CPU stack 10198use, 10199and fewer interfaces. (With assistance from Mikhail Kouzmich) 10200 10201Fixed a problem with the CopyObject operator where the first parameter 10202was 10203not typed correctly for the parser, interpreter, compiler, and 10204disassembler. 10205Caused various errors and unexpected behavior. 10206 10207Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 10208produced incorrect results with some C compilers. Since the behavior of C 10209compilers when the shift value is larger than the datatype width is 10210apparently not well defined, the interpreter now detects this condition 10211and 10212simply returns zero as expected in all such cases. (BZ 395) 10213 10214Fixed problem reports (Valery Podrezov) integrated: 10215- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 10216- Allow interpreter to handle nested method declarations (BZ 5361) 10217 10218Fixed problem reports (Fiodor Suietov) integrated: 10219- AcpiTerminate doesn't free debug memory allocation list objects (BZ 10220355) 10221- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 10222356) 10223- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 10224- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 10225- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 10226- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 10227- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 10228- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 10229- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 10230365) 10231- Status of the Global Initialization Handler call not used (BZ 366) 10232- Incorrect object parameter to Global Initialization Handler (BZ 367) 10233 10234Example Code and Data Size: These are the sizes for the OS-independent 10235acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10236debug version of the code includes the debug output trace mechanism and 10237has 10238a much larger code and data size. 10239 10240 Previous Release: 10241 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 10242 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 10243 Current Release: 10244 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 10245 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 10246 10247 102482) iASL Compiler/Disassembler and Tools: 10249 10250Modified the parser to allow the names IO, DMA, and IRQ to be used as 10251namespace identifiers with no collision with existing resource descriptor 10252macro names. This provides compatibility with other ASL compilers and is 10253most useful for disassembly/recompilation of existing tables without 10254parse 10255errors. (With assistance from Thomas Renninger) 10256 10257Disassembler: fixed an incorrect disassembly problem with the 10258DataTableRegion and CopyObject operators. Fixed a possible fault during 10259disassembly of some Alias operators. 10260 10261---------------------------------------- 1026212 May 2006. Summary of changes for version 20060512: 10263 102641) ACPI CA Core Subsystem: 10265 10266Replaced the AcpiOsQueueForExecution interface with a new interface named 10267AcpiOsExecute. The major difference is that the new interface does not 10268have 10269a Priority parameter, this appeared to be useless and has been replaced 10270by 10271a 10272Type parameter. The Type tells the host what type of execution is being 10273requested, such as global lock handler, notify handler, GPE handler, etc. 10274This allows the host to queue and execute the request as appropriate for 10275the 10276request type, possibly using different work queues and different 10277priorities 10278for the various request types. This enables fixes for multithreading 10279deadlock problems such as BZ #5534, and will require changes to all 10280existing 10281OS interface layers. (Alexey Starikovskiy and Bob Moore) 10282 10283Fixed a possible memory leak associated with the support for the so- 10284called 10285"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 10286Suietov) 10287 10288Fixed a problem with the Load() operator where a table load from an 10289operation region could overwrite an internal table buffer by up to 7 10290bytes 10291and cause alignment faults on IPF systems. (With assistance from Luming 10292Yu) 10293 10294Example Code and Data Size: These are the sizes for the OS-independent 10295acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10296debug version of the code includes the debug output trace mechanism and 10297has 10298a much larger code and data size. 10299 10300 Previous Release: 10301 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 10302 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 10303 Current Release: 10304 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 10305 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 10306 10307 10308 103092) iASL Compiler/Disassembler and Tools: 10310 10311Disassembler: Implemented support to cross reference the internal 10312namespace 10313and automatically generate ASL External() statements for symbols not 10314defined 10315within the current table being disassembled. This will simplify the 10316disassembly and recompilation of interdependent tables such as SSDTs 10317since 10318these statements will no longer have to be added manually. 10319 10320Disassembler: Implemented experimental support to automatically detect 10321invocations of external control methods and generate appropriate 10322External() 10323statements. This is problematic because the AML cannot be correctly 10324parsed 10325until the number of arguments for each control method is known. 10326Currently, 10327standalone method invocations and invocations as the source operand of a 10328Store() statement are supported. 10329 10330Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 10331LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 10332LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 10333more readable and likely closer to the original ASL source. 10334 10335---------------------------------------- 1033621 April 2006. Summary of changes for version 20060421: 10337 103381) ACPI CA Core Subsystem: 10339 10340Removed a device initialization optimization introduced in 20051216 where 10341the _STA method was not run unless an _INI was also present for the same 10342device. This optimization could cause problems because it could allow 10343_INI 10344methods to be run within a not-present device subtree. (If a not-present 10345device had no _INI, _STA would not be run, the not-present status would 10346not 10347be discovered, and the children of the device would be incorrectly 10348traversed.) 10349 10350Implemented a new _STA optimization where namespace subtrees that do not 10351contain _INI are identified and ignored during device initialization. 10352Selectively running _STA can significantly improve boot time on large 10353machines (with assistance from Len Brown.) 10354 10355Implemented support for the device initialization case where the returned 10356_STA flags indicate a device not-present but functioning. In this case, 10357_INI 10358is not run, but the device children are examined for presence, as per the 10359ACPI specification. 10360 10361Implemented an additional change to the IndexField support in order to 10362conform to MS behavior. The value written to the Index Register is not 10363simply a byte offset, it is a byte offset in units of the access width of 10364the parent Index Field. (Fiodor Suietov) 10365 10366Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 10367interface is called during the creation of all AML operation regions, and 10368allows the host OS to exert control over what addresses it will allow the 10369AML code to access. Operation Regions whose addresses are disallowed will 10370cause a runtime exception when they are actually accessed (will not 10371affect 10372or abort table loading.) See oswinxf or osunixxf for an example 10373implementation. 10374 10375Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 10376interface allows the host OS to match the various "optional" 10377interface/behavior strings for the _OSI predefined control method as 10378appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 10379for an example implementation. 10380 10381Restructured and corrected various problems in the exception handling 10382code 10383paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 10384(with assistance from Takayoshi Kochi.) 10385 10386Modified the Linux source converter to ignore quoted string literals 10387while 10388converting identifiers from mixed to lower case. This will correct 10389problems 10390with the disassembler and other areas where such strings must not be 10391modified. 10392 10393The ACPI_FUNCTION_* macros no longer require quotes around the function 10394name. This allows the Linux source converter to convert the names, now 10395that 10396the converter ignores quoted strings. 10397 10398Example Code and Data Size: These are the sizes for the OS-independent 10399acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10400debug version of the code includes the debug output trace mechanism and 10401has 10402a much larger code and data size. 10403 10404 Previous Release: 10405 10406 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 10407 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 10408 Current Release: 10409 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 10410 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 10411 10412 104132) iASL Compiler/Disassembler and Tools: 10414 10415Implemented 3 new warnings for iASL, and implemented multiple warning 10416levels 10417(w2 flag). 10418 104191) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 10420not 10421WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 10422check for the possible timeout, a warning is issued. 10423 104242) Useless operators: If an ASL operator does not specify an optional 10425target 10426operand and it also does not use the function return value from the 10427operator, a warning is issued since the operator effectively does 10428nothing. 10429 104303) Unreferenced objects: If a namespace object is created, but never 10431referenced, a warning is issued. This is a warning level 2 since there 10432are 10433cases where this is ok, such as when a secondary table is loaded that 10434uses 10435the unreferenced objects. Even so, care is taken to only flag objects 10436that 10437don't look like they will ever be used. For example, the reserved methods 10438(starting with an underscore) are usually not referenced because it is 10439expected that the OS will invoke them. 10440 10441---------------------------------------- 1044231 March 2006. Summary of changes for version 20060331: 10443 104441) ACPI CA Core Subsystem: 10445 10446Implemented header file support for the following additional ACPI tables: 10447ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 10448support, 10449all current and known ACPI tables are now defined in the ACPICA headers 10450and 10451are available for use by device drivers and other software. 10452 10453Implemented support to allow tables that contain ACPI names with invalid 10454characters to be loaded. Previously, this would cause the table load to 10455fail, but since there are several known cases of such tables on existing 10456machines, this change was made to enable ACPI support for them. Also, 10457this 10458matches the behavior of the Microsoft ACPI implementation. 10459 10460Fixed a couple regressions introduced during the memory optimization in 10461the 1046220060317 release. The namespace node definition required additional 10463reorganization and an internal datatype that had been changed to 8-bit 10464was 10465restored to 32-bit. (Valery Podrezov) 10466 10467Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 10468could be passed through to AcpiOsReleaseObject which is unexpected. Such 10469null pointers are now trapped and ignored, matching the behavior of the 10470previous implementation before the deployment of AcpiOsReleaseObject. 10471(Valery Podrezov, Fiodor Suietov) 10472 10473Fixed a memory mapping leak during the deletion of a SystemMemory 10474operation 10475region where a cached memory mapping was not deleted. This became a 10476noticeable problem for operation regions that are defined within 10477frequently 10478used control methods. (Dana Meyers) 10479 10480Reorganized the ACPI table header files into two main files: one for the 10481ACPI tables consumed by the ACPICA core, and another for the 10482miscellaneous 10483ACPI tables that are consumed by the drivers and other software. The 10484various 10485FADT definitions were merged into one common section and three different 10486tables (ACPI 1.0, 1.0+, and 2.0) 10487 10488Example Code and Data Size: These are the sizes for the OS-independent 10489acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10490debug version of the code includes the debug output trace mechanism and 10491has 10492a much larger code and data size. 10493 10494 Previous Release: 10495 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 10496 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 10497 Current Release: 10498 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 10499 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 10500 10501 105022) iASL Compiler/Disassembler and Tools: 10503 10504Disassembler: Implemented support to decode and format all non-AML ACPI 10505tables (tables other than DSDTs and SSDTs.) This includes the new tables 10506added to the ACPICA headers, therefore all current and known ACPI tables 10507are 10508supported. 10509 10510Disassembler: The change to allow ACPI names with invalid characters also 10511enables the disassembly of such tables. Invalid characters within names 10512are 10513changed to '*' to make the name printable; the iASL compiler will still 10514generate an error for such names, however, since this is an invalid ACPI 10515character. 10516 10517Implemented an option for AcpiXtract (-a) to extract all tables found in 10518the 10519input file. The default invocation extracts only the DSDTs and SSDTs. 10520 10521Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 10522makefile for the AcpiXtract utility. 10523 10524---------------------------------------- 1052517 March 2006. Summary of changes for version 20060317: 10526 105271) ACPI CA Core Subsystem: 10528 10529Implemented the use of a cache object for all internal namespace nodes. 10530Since there are about 1000 static nodes in a typical system, this will 10531decrease memory use for cache implementations that minimize per- 10532allocation 10533overhead (such as a slab allocator.) 10534 10535Removed the reference count mechanism for internal namespace nodes, since 10536it 10537was deemed unnecessary. This reduces the size of each namespace node by 10538about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 10539case, 10540and 32 bytes for the 64-bit case. 10541 10542Optimized several internal data structures to reduce object size on 64- 10543bit 10544platforms by packing data within the 64-bit alignment. This includes the 10545frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 10546instances corresponding to the namespace objects. 10547 10548Added two new strings for the predefined _OSI method: "Windows 2001.1 10549SP1" 10550and "Windows 2006". 10551 10552Split the allocation tracking mechanism out to a separate file, from 10553utalloc.c to uttrack.c. This mechanism appears to be only useful for 10554application-level code. Kernels may wish to not include uttrack.c in 10555distributions. 10556 10557Removed all remnants of the obsolete ACPI_REPORT_* macros and the 10558associated 10559code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 10560macros.) 10561 10562Code and Data Size: These are the sizes for the acpica.lib produced by 10563the 10564Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10565ACPI 10566driver or OSPM code. The debug version of the code includes the debug 10567output 10568trace mechanism and has a much larger code and data size. Note that these 10569values will vary depending on the efficiency of the compiler and the 10570compiler options used during generation. 10571 10572 Previous Release: 10573 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10574 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 10575 Current Release: 10576 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 10577 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 10578 10579 105802) iASL Compiler/Disassembler and Tools: 10581 10582Implemented an ANSI C version of the acpixtract utility. This version 10583will 10584automatically extract the DSDT and all SSDTs from the input acpidump text 10585file and dump the binary output to separate files. It can also display a 10586summary of the input file including the headers for each table found and 10587will extract any single ACPI table, with any signature. (See 10588source/tools/acpixtract) 10589 10590---------------------------------------- 1059110 March 2006. Summary of changes for version 20060310: 10592 105931) ACPI CA Core Subsystem: 10594 10595Tagged all external interfaces to the subsystem with the new 10596ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 10597assist 10598kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 10599macro. The default definition is NULL. 10600 10601Added the ACPI_THREAD_ID type for the return value from 10602AcpiOsGetThreadId. 10603This allows the host to define this as necessary to simplify kernel 10604integration. The default definition is ACPI_NATIVE_UINT. 10605 10606Fixed two interpreter problems related to error processing, the deletion 10607of 10608objects, and placing invalid pointers onto the internal operator result 10609stack. BZ 6028, 6151 (Valery Podrezov) 10610 10611Increased the reference count threshold where a warning is emitted for 10612large 10613reference counts in order to eliminate unnecessary warnings on systems 10614with 10615large namespaces (especially 64-bit.) Increased the value from 0x400 to 106160x800. 10617 10618Due to universal disagreement as to the meaning of the 'c' in the 10619calloc() 10620function, the ACPI_MEM_CALLOCATE macro has been renamed to 10621ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 10622ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 10623ACPI_FREE. 10624 10625Code and Data Size: These are the sizes for the acpica.lib produced by 10626the 10627Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10628ACPI 10629driver or OSPM code. The debug version of the code includes the debug 10630output 10631trace mechanism and has a much larger code and data size. Note that these 10632values will vary depending on the efficiency of the compiler and the 10633compiler options used during generation. 10634 10635 Previous Release: 10636 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 10637 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 10638 Current Release: 10639 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10640 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 10641 10642 106432) iASL Compiler/Disassembler: 10644 10645Disassembler: implemented support for symbolic resource descriptor 10646references. If a CreateXxxxField operator references a fixed offset 10647within 10648a 10649resource descriptor, a name is assigned to the descriptor and the offset 10650is 10651translated to the appropriate resource tag and pathname. The addition of 10652this support brings the disassembled code very close to the original ASL 10653source code and helps eliminate run-time errors when the disassembled 10654code 10655is modified (and recompiled) in such a way as to invalidate the original 10656fixed offsets. 10657 10658Implemented support for a Descriptor Name as the last parameter to the 10659ASL 10660Register() macro. This parameter was inadvertently left out of the ACPI 10661specification, and will be added for ACPI 3.0b. 10662 10663Fixed a problem where the use of the "_OSI" string (versus the full path 10664"\_OSI") caused an internal compiler error. ("No back ptr to op") 10665 10666Fixed a problem with the error message that occurs when an invalid string 10667is 10668used for a _HID object (such as one with an embedded asterisk: 10669"*PNP010A".) 10670The correct message is now displayed. 10671 10672---------------------------------------- 1067317 February 2006. Summary of changes for version 20060217: 10674 106751) ACPI CA Core Subsystem: 10676 10677Implemented a change to the IndexField support to match the behavior of 10678the 10679Microsoft AML interpreter. The value written to the Index register is now 10680a 10681byte offset, no longer an index based upon the width of the Data 10682register. 10683This should fix IndexField problems seen on some machines where the Data 10684register is not exactly one byte wide. The ACPI specification will be 10685clarified on this point. 10686 10687Fixed a problem where several resource descriptor types could overrun the 10688internal descriptor buffer due to size miscalculation: VendorShort, 10689VendorLong, and Interrupt. This was noticed on IA64 machines, but could 10690affect all platforms. 10691 10692Fixed a problem where individual resource descriptors were misaligned 10693within 10694the internal buffer, causing alignment faults on IA64 platforms. 10695 10696Code and Data Size: These are the sizes for the acpica.lib produced by 10697the 10698Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10699ACPI 10700driver or OSPM code. The debug version of the code includes the debug 10701output 10702trace mechanism and has a much larger code and data size. Note that these 10703values will vary depending on the efficiency of the compiler and the 10704compiler options used during generation. 10705 10706 Previous Release: 10707 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10708 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 10709 Current Release: 10710 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 10711 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 10712 10713 107142) iASL Compiler/Disassembler: 10715 10716Implemented support for new reserved names: _WDG and _WED are Microsoft 10717extensions for Windows Instrumentation Management, _TDL is a new ACPI- 10718defined method (Throttling Depth Limit.) 10719 10720Fixed a problem where a zero-length VendorShort or VendorLong resource 10721descriptor was incorrectly emitted as a descriptor of length one. 10722 10723---------------------------------------- 1072410 February 2006. Summary of changes for version 20060210: 10725 107261) ACPI CA Core Subsystem: 10727 10728Removed a couple of extraneous ACPI_ERROR messages that appeared during 10729normal execution. These became apparent after the conversion from 10730ACPI_DEBUG_PRINT. 10731 10732Fixed a problem where the CreateField operator could hang if the BitIndex 10733or 10734NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 10735 10736Fixed a problem where a DeRefOf operation on a buffer object incorrectly 10737failed with an exception. This also fixes a couple of related RefOf and 10738DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 10739 10740Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 10741of 10742AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 10743BZ 107445480) 10745 10746Implemented a memory cleanup at the end of the execution of each 10747iteration 10748of an AML While() loop, preventing the accumulation of outstanding 10749objects. 10750(Valery Podrezov, BZ 5427) 10751 10752Eliminated a chunk of duplicate code in the object resolution code. 10753(Valery 10754Podrezov, BZ 5336) 10755 10756Fixed several warnings during the 64-bit code generation. 10757 10758The AcpiSrc source code conversion tool now inserts one line of 10759whitespace 10760after an if() statement that is followed immediately by a comment, 10761improving 10762readability of the Linux code. 10763 10764Code and Data Size: The current and previous library sizes for the core 10765subsystem are shown below. These are the code and data sizes for the 10766acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10767These 10768values do not include any ACPI driver or OSPM code. The debug version of 10769the 10770code includes the debug output trace mechanism and has a much larger code 10771and data size. Note that these values will vary depending on the 10772efficiency 10773of the compiler and the compiler options used during generation. 10774 10775 Previous Release: 10776 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 10777 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 10778 Current Release: 10779 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10780 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 10781 10782 107832) iASL Compiler/Disassembler: 10784 10785Fixed a problem with the disassembly of a BankField operator with a 10786complex 10787expression for the BankValue parameter. 10788 10789---------------------------------------- 1079027 January 2006. Summary of changes for version 20060127: 10791 107921) ACPI CA Core Subsystem: 10793 10794Implemented support in the Resource Manager to allow unresolved 10795namestring 10796references within resource package objects for the _PRT method. This 10797support 10798is in addition to the previously implemented unresolved reference support 10799within the AML parser. If the interpreter slack mode is enabled, these 10800unresolved references will be passed through to the caller as a NULL 10801package 10802entry. 10803 10804Implemented and deployed new macros and functions for error and warning 10805messages across the subsystem. These macros are simpler and generate less 10806code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 10807ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 10808macros remain defined to allow ACPI drivers time to migrate to the new 10809macros. 10810 10811Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 10812the 10813Acquire/Release Lock OSL interfaces. 10814 10815Fixed a problem where Alias ASL operators are sometimes not correctly 10816resolved, in both the interpreter and the iASL compiler. 10817 10818Fixed several problems with the implementation of the 10819ConcatenateResTemplate 10820ASL operator. As per the ACPI specification, zero length buffers are now 10821treated as a single EndTag. One-length buffers always cause a fatal 10822exception. Non-zero length buffers that do not end with a full 2-byte 10823EndTag 10824cause a fatal exception. 10825 10826Fixed a possible structure overwrite in the AcpiGetObjectInfo external 10827interface. (With assistance from Thomas Renninger) 10828 10829Code and Data Size: The current and previous library sizes for the core 10830subsystem are shown below. These are the code and data sizes for the 10831acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10832These 10833values do not include any ACPI driver or OSPM code. The debug version of 10834the 10835code includes the debug output trace mechanism and has a much larger code 10836and data size. Note that these values will vary depending on the 10837efficiency 10838of the compiler and the compiler options used during generation. 10839 10840 Previous Release: 10841 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 10842 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 10843 Current Release: 10844 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 10845 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 10846 10847 108482) iASL Compiler/Disassembler: 10849 10850Fixed an internal error that was generated for any forward references to 10851ASL 10852Alias objects. 10853 10854---------------------------------------- 1085513 January 2006. Summary of changes for version 20060113: 10856 108571) ACPI CA Core Subsystem: 10858 10859Added 2006 copyright to all module headers and signons. This affects 10860virtually every file in the ACPICA core subsystem, iASL compiler, and the 10861utilities. 10862 10863Enhanced the ACPICA error reporting in order to simplify user migration 10864to 10865the non-debug version of ACPICA. Replaced all instances of the 10866ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 10867debug 10868levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 10869respectively. This preserves all error and warning messages in the non- 10870debug 10871version of the ACPICA code (this has been referred to as the "debug lite" 10872option.) Over 200 cases were converted to create a total of over 380 10873error/warning messages across the ACPICA code. This increases the code 10874and 10875data size of the default non-debug version of the code somewhat (about 1087613K), 10877but all error/warning reporting may be disabled if desired (and code 10878eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 10879configuration option. The size of the debug version of ACPICA remains 10880about 10881the same. 10882 10883Fixed a memory leak within the AML Debugger "Set" command. One object was 10884not properly deleted for every successful invocation of the command. 10885 10886Code and Data Size: The current and previous library sizes for the core 10887subsystem are shown below. These are the code and data sizes for the 10888acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10889These 10890values do not include any ACPI driver or OSPM code. The debug version of 10891the 10892code includes the debug output trace mechanism and has a much larger code 10893and data size. Note that these values will vary depending on the 10894efficiency 10895of the compiler and the compiler options used during generation. 10896 10897 Previous Release: 10898 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 10899 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 10900 Current Release: 10901 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 10902 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 10903 10904 109052) iASL Compiler/Disassembler: 10906 10907The compiler now officially supports the ACPI 3.0a specification that was 10908released on December 30, 2005. (Specification is available at 10909www.acpi.info) 10910 10911---------------------------------------- 1091216 December 2005. Summary of changes for version 20051216: 10913 109141) ACPI CA Core Subsystem: 10915 10916Implemented optional support to allow unresolved names within ASL Package 10917objects. A null object is inserted in the package when a named reference 10918cannot be located in the current namespace. Enabled via the interpreter 10919slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 10920machines 10921that contain such code. 10922 10923Implemented an optimization to the initialization sequence that can 10924improve 10925boot time. During ACPI device initialization, the _STA method is now run 10926if 10927and only if the _INI method exists. The _STA method is used to determine 10928if 10929the device is present; An _INI can only be run if _STA returns present, 10930but 10931it is a waste of time to run the _STA method if the _INI does not exist. 10932(Prototype and assistance from Dong Wei) 10933 10934Implemented use of the C99 uintptr_t for the pointer casting macros if it 10935is 10936available in the current compiler. Otherwise, the default (void *) cast 10937is 10938used as before. 10939 10940Fixed some possible memory leaks found within the execution path of the 10941Break, Continue, If, and CreateField operators. (Valery Podrezov) 10942 10943Fixed a problem introduced in the 20051202 release where an exception is 10944generated during method execution if a control method attempts to declare 10945another method. 10946 10947Moved resource descriptor string constants that are used by both the AML 10948disassembler and AML debugger to the common utilities directory so that 10949these components are independent. 10950 10951Implemented support in the AcpiExec utility (-e switch) to globally 10952ignore 10953exceptions during control method execution (method is not aborted.) 10954 10955Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 10956generation. 10957 10958Code and Data Size: The current and previous library sizes for the core 10959subsystem are shown below. These are the code and data sizes for the 10960acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10961These 10962values do not include any ACPI driver or OSPM code. The debug version of 10963the 10964code includes the debug output trace mechanism and has a much larger code 10965and data size. Note that these values will vary depending on the 10966efficiency 10967of the compiler and the compiler options used during generation. 10968 10969 Previous Release: 10970 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10971 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 10972 Current Release: 10973 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 10974 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 10975 10976 109772) iASL Compiler/Disassembler: 10978 10979Fixed a problem where a CPU stack overflow fault could occur if a 10980recursive 10981method call was made from within a Return statement. 10982 10983---------------------------------------- 1098402 December 2005. Summary of changes for version 20051202: 10985 109861) ACPI CA Core Subsystem: 10987 10988Modified the parsing of control methods to no longer create namespace 10989objects during the first pass of the parse. Objects are now created only 10990during the execute phase, at the moment the namespace creation operator 10991is 10992encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 10993This 10994should eliminate ALREADY_EXISTS exceptions seen on some machines where 10995reentrant control methods are protected by an AML mutex. The mutex will 10996now 10997correctly block multiple threads from attempting to create the same 10998object 10999more than once. 11000 11001Increased the number of available Owner Ids for namespace object tracking 11002from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 11003on 11004some machines with a large number of ACPI tables (either static or 11005dynamic). 11006 11007Fixed a problem with the AcpiExec utility where a fault could occur when 11008the 11009-b switch (batch mode) is used. 11010 11011Enhanced the namespace dump routine to output the owner ID for each 11012namespace object. 11013 11014Code and Data Size: The current and previous library sizes for the core 11015subsystem are shown below. These are the code and data sizes for the 11016acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11017These 11018values do not include any ACPI driver or OSPM code. The debug version of 11019the 11020code includes the debug output trace mechanism and has a much larger code 11021and data size. Note that these values will vary depending on the 11022efficiency 11023of the compiler and the compiler options used during generation. 11024 11025 Previous Release: 11026 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11027 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11028 Current Release: 11029 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11030 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 11031 11032 110332) iASL Compiler/Disassembler: 11034 11035Fixed a parse error during compilation of certain Switch/Case constructs. 11036To 11037simplify the parse, the grammar now allows for multiple Default 11038statements 11039and this error is now detected and flagged during the analysis phase. 11040 11041Disassembler: The disassembly now includes the contents of the original 11042table header within a comment at the start of the file. This includes the 11043name and version of the original ASL compiler. 11044 11045---------------------------------------- 1104617 November 2005. Summary of changes for version 20051117: 11047 110481) ACPI CA Core Subsystem: 11049 11050Fixed a problem in the AML parser where the method thread count could be 11051decremented below zero if any errors occurred during the method parse 11052phase. 11053This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 11054machines. 11055This also fixed a related regression with the mechanism that detects and 11056corrects methods that cannot properly handle reentrancy (related to the 11057deployment of the new OwnerId mechanism.) 11058 11059Eliminated the pre-parsing of control methods (to detect errors) during 11060table load. Related to the problem above, this was causing unwind issues 11061if 11062any errors occurred during the parse, and it seemed to be overkill. A 11063table 11064load should not be aborted if there are problems with any single control 11065method, thus rendering this feature rather pointless. 11066 11067Fixed a problem with the new table-driven resource manager where an 11068internal 11069buffer overflow could occur for small resource templates. 11070 11071Implemented a new external interface, AcpiGetVendorResource. This 11072interface 11073will find and return a vendor-defined resource descriptor within a _CRS 11074or 11075_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 11076Helgaas. 11077 11078Removed the length limit (200) on string objects as per the upcoming ACPI 110793.0A specification. This affects the following areas of the interpreter: 110801) 11081any implicit conversion of a Buffer to a String, 2) a String object 11082result 11083of the ASL Concatentate operator, 3) the String object result of the ASL 11084ToString operator. 11085 11086Fixed a problem in the Windows OS interface layer (OSL) where a 11087WAIT_FOREVER 11088on a semaphore object would incorrectly timeout. This allows the 11089multithreading features of the AcpiExec utility to work properly under 11090Windows. 11091 11092Updated the Linux makefiles for the iASL compiler and AcpiExec to include 11093the recently added file named "utresrc.c". 11094 11095Code and Data Size: The current and previous library sizes for the core 11096subsystem are shown below. These are the code and data sizes for the 11097acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11098These 11099values do not include any ACPI driver or OSPM code. The debug version of 11100the 11101code includes the debug output trace mechanism and has a much larger code 11102and data size. Note that these values will vary depending on the 11103efficiency 11104of the compiler and the compiler options used during generation. 11105 11106 Previous Release: 11107 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11108 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11109 Current Release: 11110 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11111 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11112 11113 111142) iASL Compiler/Disassembler: 11115 11116Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 11117specification. For the iASL compiler, this means that string literals 11118within 11119the source ASL can be of any length. 11120 11121Enhanced the listing output to dump the AML code for resource descriptors 11122immediately after the ASL code for each descriptor, instead of in a block 11123at 11124the end of the entire resource template. 11125 11126Enhanced the compiler debug output to dump the entire original parse tree 11127constructed during the parse phase, before any transforms are applied to 11128the 11129tree. The transformed tree is dumped also. 11130 11131---------------------------------------- 1113202 November 2005. Summary of changes for version 20051102: 11133 111341) ACPI CA Core Subsystem: 11135 11136Modified the subsystem initialization sequence to improve GPE support. 11137The 11138GPE initialization has been split into two parts in order to defer 11139execution 11140of the _PRW methods (Power Resources for Wake) until after the hardware 11141is 11142fully initialized and the SCI handler is installed. This allows the _PRW 11143methods to access fields protected by the Global Lock. This will fix 11144systems 11145where a NO_GLOBAL_LOCK exception has been seen during initialization. 11146 11147Converted the ACPI internal object disassemble and display code within 11148the 11149AML debugger to fully table-driven operation, reducing code size and 11150increasing maintainability. 11151 11152Fixed a regression with the ConcatenateResTemplate() ASL operator 11153introduced 11154in the 20051021 release. 11155 11156Implemented support for "local" internal ACPI object types within the 11157debugger "Object" command and the AcpiWalkNamespace external interfaces. 11158These local types include RegionFields, BankFields, IndexFields, Alias, 11159and 11160reference objects. 11161 11162Moved common AML resource handling code into a new file, "utresrc.c". 11163This 11164code is shared by both the Resource Manager and the AML Debugger. 11165 11166Code and Data Size: The current and previous library sizes for the core 11167subsystem are shown below. These are the code and data sizes for the 11168acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11169These 11170values do not include any ACPI driver or OSPM code. The debug version of 11171the 11172code includes the debug output trace mechanism and has a much larger code 11173and data size. Note that these values will vary depending on the 11174efficiency 11175of the compiler and the compiler options used during generation. 11176 11177 Previous Release: 11178 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 11179 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 11180 Current Release: 11181 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11182 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11183 11184 111852) iASL Compiler/Disassembler: 11186 11187Fixed a problem with very large initializer lists (more than 4000 11188elements) 11189for both Buffer and Package objects where the parse stack could overflow. 11190 11191Enhanced the pre-compile source code scan for non-ASCII characters to 11192ignore 11193characters within comment fields. The scan is now always performed and is 11194no 11195longer optional, detecting invalid characters within a source file 11196immediately rather than during the parse phase or later. 11197 11198Enhanced the ASL grammar definition to force early reductions on all 11199list- 11200style grammar elements so that the overall parse stack usage is greatly 11201reduced. This should improve performance and reduce the possibility of 11202parse 11203stack overflow. 11204 11205Eliminated all reduce/reduce conflicts in the iASL parser generation. 11206Also, 11207with the addition of a %expected statement, the compiler generates from 11208source with no warnings. 11209 11210Fixed a possible segment fault in the disassembler if the input filename 11211does not contain a "dot" extension (Thomas Renninger). 11212 11213---------------------------------------- 1121421 October 2005. Summary of changes for version 20051021: 11215 112161) ACPI CA Core Subsystem: 11217 11218Implemented support for the EM64T and other x86-64 processors. This 11219essentially entails recognizing that these processors support non-aligned 11220memory transfers. Previously, all 64-bit processors were assumed to lack 11221hardware support for non-aligned transfers. 11222 11223Completed conversion of the Resource Manager to nearly full table-driven 11224operation. Specifically, the resource conversion code (convert AML to 11225internal format and the reverse) and the debug code to dump internal 11226resource descriptors are fully table-driven, reducing code and data size 11227and 11228improving maintainability. 11229 11230The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 11231word 11232on 64-bit processors instead of a fixed 32-bit word. (With assistance 11233from 11234Alexey Starikovskiy) 11235 11236Implemented support within the resource conversion code for the Type- 11237Specific byte within the various ACPI 3.0 *WordSpace macros. 11238 11239Fixed some issues within the resource conversion code for the type- 11240specific 11241flags for both Memory and I/O address resource descriptors. For Memory, 11242implemented support for the MTP and TTP flags. For I/O, split the TRS and 11243TTP flags into two separate fields. 11244 11245Code and Data Size: The current and previous library sizes for the core 11246subsystem are shown below. These are the code and data sizes for the 11247acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11248These 11249values do not include any ACPI driver or OSPM code. The debug version of 11250the 11251code includes the debug output trace mechanism and has a much larger code 11252and data size. Note that these values will vary depending on the 11253efficiency 11254of the compiler and the compiler options used during generation. 11255 11256 Previous Release: 11257 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 11258 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 11259 Current Release: 11260 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 11261 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 11262 11263 11264 112652) iASL Compiler/Disassembler: 11266 11267Relaxed a compiler restriction that disallowed a ResourceIndex byte if 11268the 11269corresponding ResourceSource string was not also present in a resource 11270descriptor declaration. This restriction caused problems with existing 11271AML/ASL code that includes the Index byte without the string. When such 11272AML 11273was disassembled, it could not be compiled without modification. Further, 11274the modified code created a resource template with a different size than 11275the 11276original, breaking code that used fixed offsets into the resource 11277template 11278buffer. 11279 11280Removed a recent feature of the disassembler to ignore a lone 11281ResourceIndex 11282byte. This byte is now emitted if present so that the exact AML can be 11283reproduced when the disassembled code is recompiled. 11284 11285Improved comments and text alignment for the resource descriptor code 11286emitted by the disassembler. 11287 11288Implemented disassembler support for the ACPI 3.0 AccessSize field within 11289a 11290Register() resource descriptor. 11291 11292---------------------------------------- 1129330 September 2005. Summary of changes for version 20050930: 11294 112951) ACPI CA Core Subsystem: 11296 11297Completed a major overhaul of the Resource Manager code - specifically, 11298optimizations in the area of the AML/internal resource conversion code. 11299The 11300code has been optimized to simplify and eliminate duplicated code, CPU 11301stack 11302use has been decreased by optimizing function parameters and local 11303variables, and naming conventions across the manager have been 11304standardized 11305for clarity and ease of maintenance (this includes function, parameter, 11306variable, and struct/typedef names.) The update may force changes in some 11307driver code, depending on how resources are handled by the host OS. 11308 11309All Resource Manager dispatch and information tables have been moved to a 11310single location for clarity and ease of maintenance. One new file was 11311created, named "rsinfo.c". 11312 11313The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 11314guarantee that the argument is not evaluated twice, making them less 11315prone 11316to macro side-effects. However, since there exists the possibility of 11317additional stack use if a particular compiler cannot optimize them (such 11318as 11319in the debug generation case), the original macros are optionally 11320available. 11321Note that some invocations of the return_VALUE macro may now cause size 11322mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 11323to 11324eliminate these. (From Randy Dunlap) 11325 11326Implemented a new mechanism to enable debug tracing for individual 11327control 11328methods. A new external interface, AcpiDebugTrace, is provided to enable 11329this mechanism. The intent is to allow the host OS to easily enable and 11330disable tracing for problematic control methods. This interface can be 11331easily exposed to a user or debugger interface if desired. See the file 11332psxface.c for details. 11333 11334AcpiUtCallocate will now return a valid pointer if a length of zero is 11335specified - a length of one is used and a warning is issued. This matches 11336the behavior of AcpiUtAllocate. 11337 11338Code and Data Size: The current and previous library sizes for the core 11339subsystem are shown below. These are the code and data sizes for the 11340acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11341These 11342values do not include any ACPI driver or OSPM code. The debug version of 11343the 11344code includes the debug output trace mechanism and has a much larger code 11345and data size. Note that these values will vary depending on the 11346efficiency 11347of the compiler and the compiler options used during generation. 11348 11349 Previous Release: 11350 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 11351 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 11352 Current Release: 11353 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 11354 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 11355 11356 113572) iASL Compiler/Disassembler: 11358 11359A remark is issued if the effective compile-time length of a package or 11360buffer is zero. Previously, this was a warning. 11361 11362---------------------------------------- 1136316 September 2005. Summary of changes for version 20050916: 11364 113651) ACPI CA Core Subsystem: 11366 11367Fixed a problem within the Resource Manager where support for the Generic 11368Register descriptor was not fully implemented. This descriptor is now 11369fully 11370recognized, parsed, disassembled, and displayed. 11371 11372Completely restructured the Resource Manager code to utilize table-driven 11373dispatch and lookup, eliminating many of the large switch() statements. 11374This 11375reduces overall subsystem code size and code complexity. Affects the 11376resource parsing and construction, disassembly, and debug dump output. 11377 11378Cleaned up and restructured the debug dump output for all resource 11379descriptors. Improved readability of the output and reduced code size. 11380 11381Fixed a problem where changes to internal data structures caused the 11382optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 11383 11384Code and Data Size: The current and previous library sizes for the core 11385subsystem are shown below. These are the code and data sizes for the 11386acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11387These 11388values do not include any ACPI driver or OSPM code. The debug version of 11389the 11390code includes the debug output trace mechanism and has a much larger code 11391and data size. Note that these values will vary depending on the 11392efficiency 11393of the compiler and the compiler options used during generation. 11394 11395 Previous Release: 11396 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 11397 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 11398 Current Release: 11399 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 11400 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 11401 11402 114032) iASL Compiler/Disassembler: 11404 11405Updated the disassembler to automatically insert an EndDependentFn() 11406macro 11407into the ASL stream if this macro is missing in the original AML code, 11408simplifying compilation of the resulting ASL module. 11409 11410Fixed a problem in the disassembler where a disassembled ResourceSource 11411string (within a large resource descriptor) was not surrounded by quotes 11412and 11413not followed by a comma, causing errors when the resulting ASL module was 11414compiled. Also, escape sequences within a ResourceSource string are now 11415handled correctly (especially "\\") 11416 11417---------------------------------------- 1141802 September 2005. Summary of changes for version 20050902: 11419 114201) ACPI CA Core Subsystem: 11421 11422Fixed a problem with the internal Owner ID allocation and deallocation 11423mechanisms for control method execution and recursive method invocation. 11424This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 11425messages seen on some systems. Recursive method invocation depth is 11426currently limited to 255. (Alexey Starikovskiy) 11427 11428Completely eliminated all vestiges of support for the "module-level 11429executable code" until this support is fully implemented and debugged. 11430This 11431should eliminate the NO_RETURN_VALUE exceptions seen during table load on 11432some systems that invoke this support. 11433 11434Fixed a problem within the resource manager code where the transaction 11435flags 11436for a 64-bit address descriptor were handled incorrectly in the type- 11437specific flag byte. 11438 11439Consolidated duplicate code within the address descriptor resource 11440manager 11441code, reducing overall subsystem code size. 11442 11443Fixed a fault when using the AML debugger "disassemble" command to 11444disassemble individual control methods. 11445 11446Removed references to the "release_current" directory within the Unix 11447release package. 11448 11449Code and Data Size: The current and previous core subsystem library sizes 11450are shown below. These are the code and data sizes for the acpica.lib 11451produced by the Microsoft Visual C++ 6.0 compiler. These values do not 11452include any ACPI driver or OSPM code. The debug version of the code 11453includes 11454the debug output trace mechanism and has a much larger code and data 11455size. 11456Note that these values will vary depending on the efficiency of the 11457compiler 11458and the compiler options used during generation. 11459 11460 Previous Release: 11461 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11462 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 11463 Current Release: 11464 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 11465 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 11466 11467 114682) iASL Compiler/Disassembler: 11469 11470Implemented an error check for illegal duplicate values in the interrupt 11471and 11472dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 11473Interrupt(). 11474 11475Implemented error checking for the Irq() and IrqNoFlags() macros to 11476detect 11477too many values in the interrupt list (16 max) and invalid values in the 11478list (range 0 - 15) 11479 11480The maximum length string literal within an ASL file is now restricted to 11481200 characters as per the ACPI specification. 11482 11483Fixed a fault when using the -ln option (generate namespace listing). 11484 11485Implemented an error check to determine if a DescriptorName within a 11486resource descriptor has already been used within the current scope. 11487 11488---------------------------------------- 1148915 August 2005. Summary of changes for version 20050815: 11490 114911) ACPI CA Core Subsystem: 11492 11493Implemented a full bytewise compare to determine if a table load request 11494is 11495attempting to load a duplicate table. The compare is performed if the 11496table 11497signatures and table lengths match. This will allow different tables with 11498the same OEM Table ID and revision to be loaded - probably against the 11499ACPI 11500specification, but discovered in the field nonetheless. 11501 11502Added the changes.txt logfile to each of the zipped release packages. 11503 11504Code and Data Size: Current and previous core subsystem library sizes are 11505shown below. These are the code and data sizes for the acpica.lib 11506produced 11507by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11508any ACPI driver or OSPM code. The debug version of the code includes the 11509debug output trace mechanism and has a much larger code and data size. 11510Note 11511that these values will vary depending on the efficiency of the compiler 11512and 11513the compiler options used during generation. 11514 11515 Previous Release: 11516 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11517 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 11518 Current Release: 11519 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11520 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 11521 11522 115232) iASL Compiler/Disassembler: 11524 11525Fixed a problem where incorrect AML code could be generated for Package 11526objects if optimization is disabled (via the -oa switch). 11527 11528Fixed a problem with where incorrect AML code is generated for variable- 11529length packages when the package length is not specified and the number 11530of 11531initializer values is greater than 255. 11532 11533 11534---------------------------------------- 1153529 July 2005. Summary of changes for version 20050729: 11536 115371) ACPI CA Core Subsystem: 11538 11539Implemented support to ignore an attempt to install/load a particular 11540ACPI 11541table more than once. Apparently there exists BIOS code that repeatedly 11542attempts to load the same SSDT upon certain events. With assistance from 11543Venkatesh Pallipadi. 11544 11545Restructured the main interface to the AML parser in order to correctly 11546handle all exceptional conditions. This will prevent leakage of the 11547OwnerId 11548resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 11549some 11550machines. With assistance from Alexey Starikovskiy. 11551 11552Support for "module level code" has been disabled in this version due to 11553a 11554number of issues that have appeared on various machines. The support can 11555be 11556enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 11557compilation. When the issues are fully resolved, the code will be enabled 11558by 11559default again. 11560 11561Modified the internal functions for debug print support to define the 11562FunctionName parameter as a (const char *) for compatibility with 11563compiler 11564built-in macros such as __FUNCTION__, etc. 11565 11566Linted the entire ACPICA source tree for both 32-bit and 64-bit. 11567 11568Implemented support to display an object count summary for the AML 11569Debugger 11570commands Object and Methods. 11571 11572Code and Data Size: Current and previous core subsystem library sizes are 11573shown below. These are the code and data sizes for the acpica.lib 11574produced 11575by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11576any ACPI driver or OSPM code. The debug version of the code includes the 11577debug output trace mechanism and has a much larger code and data size. 11578Note 11579that these values will vary depending on the efficiency of the compiler 11580and 11581the compiler options used during generation. 11582 11583 Previous Release: 11584 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 11585 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 11586 Current Release: 11587 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11588 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 11589 11590 115912) iASL Compiler/Disassembler: 11592 11593Fixed a regression that appeared in the 20050708 version of the compiler 11594where an error message was inadvertently emitted for invocations of the 11595_OSI 11596reserved control method. 11597 11598---------------------------------------- 1159908 July 2005. Summary of changes for version 20050708: 11600 116011) ACPI CA Core Subsystem: 11602 11603The use of the CPU stack in the debug version of the subsystem has been 11604considerably reduced. Previously, a debug structure was declared in every 11605function that used the debug macros. This structure has been removed in 11606favor of declaring the individual elements as parameters to the debug 11607functions. This reduces the cumulative stack use during nested execution 11608of 11609ACPI function calls at the cost of a small increase in the code size of 11610the 11611debug version of the subsystem. With assistance from Alexey Starikovskiy 11612and 11613Len Brown. 11614 11615Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 11616headers to define a macro that will return the current function name at 11617runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 11618by 11619the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 11620compiler-dependent header, the function name is saved on the CPU stack 11621(one 11622pointer per function.) This mechanism is used because apparently there 11623exists no standard ANSI-C defined macro that that returns the function 11624name. 11625 11626Redesigned and reimplemented the "Owner ID" mechanism used to track 11627namespace objects created/deleted by ACPI tables and control method 11628execution. A bitmap is now used to allocate and free the IDs, thus 11629solving 11630the wraparound problem present in the previous implementation. The size 11631of 11632the namespace node descriptor was reduced by 2 bytes as a result (Alexey 11633Starikovskiy). 11634 11635Removed the UINT32_BIT and UINT16_BIT types that were used for the 11636bitfield 11637flag definitions within the headers for the predefined ACPI tables. These 11638have been replaced by UINT8_BIT in order to increase the code portability 11639of 11640the subsystem. If the use of UINT8 remains a problem, we may be forced to 11641eliminate bitfields entirely because of a lack of portability. 11642 11643Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 11644This 11645is a frequently used function and this improvement increases the 11646performance 11647of the entire subsystem (Alexey Starikovskiy). 11648 11649Fixed several possible memory leaks and the inverse - premature object 11650deletion (Alexey Starikovskiy). 11651 11652Code and Data Size: Current and previous core subsystem library sizes are 11653shown below. These are the code and data sizes for the acpica.lib 11654produced 11655by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11656any ACPI driver or OSPM code. The debug version of the code includes the 11657debug output trace mechanism and has a much larger code and data size. 11658Note 11659that these values will vary depending on the efficiency of the compiler 11660and 11661the compiler options used during generation. 11662 11663 Previous Release: 11664 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 11665 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 11666 Current Release: 11667 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 11668 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 11669 11670---------------------------------------- 1167124 June 2005. Summary of changes for version 20050624: 11672 116731) ACPI CA Core Subsystem: 11674 11675Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 11676the host-defined cache object. This allows the OSL implementation to 11677define 11678and type this object in any manner desired, simplifying the OSL 11679implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 11680Linux, and should be defined in the OS-specific header file for other 11681operating systems as required. 11682 11683Changed the interface to AcpiOsAcquireObject to directly return the 11684requested object as the function return (instead of ACPI_STATUS.) This 11685change was made for performance reasons, since this is the purpose of the 11686interface in the first place. AcpiOsAcquireObject is now similar to the 11687AcpiOsAllocate interface. 11688 11689Implemented a new AML debugger command named Businfo. This command 11690displays 11691information about all devices that have an associate _PRT object. The 11692_ADR, 11693_HID, _UID, and _CID are displayed for these devices. 11694 11695Modified the initialization sequence in AcpiInitializeSubsystem to call 11696the 11697OSL interface AcpiOslInitialize first, before any local initialization. 11698This 11699change was required because the global initialization now calls OSL 11700interfaces. 11701 11702Enhanced the Dump command to display the entire contents of Package 11703objects 11704(including all sub-objects and their values.) 11705 11706Restructured the code base to split some files because of size and/or 11707because the code logically belonged in a separate file. New files are 11708listed 11709below. All makefiles and project files included in the ACPI CA release 11710have 11711been updated. 11712 utilities/utcache.c /* Local cache interfaces */ 11713 utilities/utmutex.c /* Local mutex support */ 11714 utilities/utstate.c /* State object support */ 11715 interpreter/parser/psloop.c /* Main AML parse loop */ 11716 11717Code and Data Size: Current and previous core subsystem library sizes are 11718shown below. These are the code and data sizes for the acpica.lib 11719produced 11720by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11721any ACPI driver or OSPM code. The debug version of the code includes the 11722debug output trace mechanism and has a much larger code and data size. 11723Note 11724that these values will vary depending on the efficiency of the compiler 11725and 11726the compiler options used during generation. 11727 11728 Previous Release: 11729 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 11730 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 11731 Current Release: 11732 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 11733 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 11734 11735 117362) iASL Compiler/Disassembler: 11737 11738Fixed a regression introduced in version 20050513 where the use of a 11739Package 11740object within a Case() statement caused a compile time exception. The 11741original behavior has been restored (a Match() operator is emitted.) 11742 11743---------------------------------------- 1174417 June 2005. Summary of changes for version 20050617: 11745 117461) ACPI CA Core Subsystem: 11747 11748Moved the object cache operations into the OS interface layer (OSL) to 11749allow 11750the host OS to handle these operations if desired (for example, the Linux 11751OSL will invoke the slab allocator). This support is optional; the 11752compile 11753time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 11754cache 11755code in the ACPI CA core. The new OSL interfaces are shown below. See 11756utalloc.c for an example implementation, and acpiosxf.h for the exact 11757interface definitions. With assistance from Alexey Starikovskiy. 11758 AcpiOsCreateCache 11759 AcpiOsDeleteCache 11760 AcpiOsPurgeCache 11761 AcpiOsAcquireObject 11762 AcpiOsReleaseObject 11763 11764Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 11765return 11766and restore a flags parameter. This fits better with many OS lock models. 11767Note: the current execution state (interrupt handler or not) is no longer 11768passed to these interfaces. If necessary, the OSL must determine this 11769state 11770by itself, a simple and fast operation. With assistance from Alexey 11771Starikovskiy. 11772 11773Fixed a problem in the ACPI table handling where a valid XSDT was assumed 11774present if the revision of the RSDP was 2 or greater. According to the 11775ACPI 11776specification, the XSDT is optional in all cases, and the table manager 11777therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 11778Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 11779contain 11780only the RSDT. 11781 11782Fixed an interpreter problem with the Mid() operator in the case of an 11783input 11784string where the resulting output string is of zero length. It now 11785correctly 11786returns a valid, null terminated string object instead of a string object 11787with a null pointer. 11788 11789Fixed a problem with the control method argument handling to allow a 11790store 11791to an Arg object that already contains an object of type Device. The 11792Device 11793object is now correctly overwritten. Previously, an error was returned. 11794 11795 11796Enhanced the debugger Find command to emit object values in addition to 11797the 11798found object pathnames. The output format is the same as the dump 11799namespace 11800command. 11801 11802Enhanced the debugger Set command. It now has the ability to set the 11803value 11804of any Named integer object in the namespace (Previously, only method 11805locals 11806and args could be set.) 11807 11808Code and Data Size: Current and previous core subsystem library sizes are 11809shown below. These are the code and data sizes for the acpica.lib 11810produced 11811by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11812any ACPI driver or OSPM code. The debug version of the code includes the 11813debug output trace mechanism and has a much larger code and data size. 11814Note 11815that these values will vary depending on the efficiency of the compiler 11816and 11817the compiler options used during generation. 11818 11819 Previous Release: 11820 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 11821 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 11822 Current Release: 11823 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 11824 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 11825 11826 118272) iASL Compiler/Disassembler: 11828 11829Fixed a regression in the disassembler where if/else/while constructs 11830were 11831output incorrectly. This problem was introduced in the previous release 11832(20050526). This problem also affected the single-step disassembly in the 11833debugger. 11834 11835Fixed a problem where compiling the reserved _OSI method would randomly 11836(but 11837rarely) produce compile errors. 11838 11839Enhanced the disassembler to emit compilable code in the face of 11840incorrect 11841AML resource descriptors. If the optional ResourceSourceIndex is present, 11842but the ResourceSource is not, do not emit the ResourceSourceIndex in the 11843disassembly. Otherwise, the resulting code cannot be compiled without 11844errors. 11845 11846---------------------------------------- 1184726 May 2005. Summary of changes for version 20050526: 11848 118491) ACPI CA Core Subsystem: 11850 11851Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 11852the module level (not within a control method.) These opcodes are 11853executed 11854exactly once at the time the table is loaded. This type of code was legal 11855up 11856until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 11857in 11858order to provide backwards compatibility with earlier BIOS 11859implementations. 11860This eliminates the "Encountered executable code at module level" warning 11861that was previously generated upon detection of such code. 11862 11863Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 11864inadvertently be generated during the lookup of namespace objects in the 11865second pass parse of ACPI tables and control methods. It appears that 11866this 11867problem could occur during the resolution of forward references to 11868namespace 11869objects. 11870 11871Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 11872corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 11873allows the deadlock detection debug code to be compiled out in the normal 11874case, improving mutex performance (and overall subsystem performance) 11875considerably. 11876 11877Implemented a handful of miscellaneous fixes for possible memory leaks on 11878error conditions and error handling control paths. These fixes were 11879suggested by FreeBSD and the Coverity Prevent source code analysis tool. 11880 11881Added a check for a null RSDT pointer in AcpiGetFirmwareTable 11882(tbxfroot.c) 11883to prevent a fault in this error case. 11884 11885Code and Data Size: Current and previous core subsystem library sizes are 11886shown below. These are the code and data sizes for the acpica.lib 11887produced 11888by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11889any ACPI driver or OSPM code. The debug version of the code includes the 11890debug output trace mechanism and has a much larger code and data size. 11891Note 11892that these values will vary depending on the efficiency of the compiler 11893and 11894the compiler options used during generation. 11895 11896 Previous Release: 11897 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11898 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11899 Current Release: 11900 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 11901 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 11902 11903 119042) iASL Compiler/Disassembler: 11905 11906Implemented support to allow Type 1 and Type 2 ASL operators to appear at 11907the module level (not within a control method.) These operators will be 11908executed once at the time the table is loaded. This type of code was 11909legal 11910up until the release of ACPI 2.0B (2002) and is now supported by the iASL 11911compiler in order to provide backwards compatibility with earlier BIOS 11912ASL 11913code. 11914 11915The ACPI integer width (specified via the table revision ID or the -r 11916override, 32 or 64 bits) is now used internally during compile-time 11917constant 11918folding to ensure that constants are truncated to 32 bits if necessary. 11919Previously, the revision ID value was only emitted in the AML table 11920header. 11921 11922An error message is now generated for the Mutex and Method operators if 11923the 11924SyncLevel parameter is outside the legal range of 0 through 15. 11925 11926Fixed a problem with the Method operator ParameterTypes list handling 11927(ACPI 119283.0). Previously, more than 2 types or 2 arguments generated a syntax 11929error. 11930The actual underlying implementation of method argument typechecking is 11931still under development, however. 11932 11933---------------------------------------- 1193413 May 2005. Summary of changes for version 20050513: 11935 119361) ACPI CA Core Subsystem: 11937 11938Implemented support for PCI Express root bridges -- added support for 11939device 11940PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 11941 11942The interpreter now automatically truncates incoming 64-bit constants to 1194332 11944bits if currently executing out of a 32-bit ACPI table (Revision < 2). 11945This 11946also affects the iASL compiler constant folding. (Note: as per below, the 11947iASL compiler no longer allows 64-bit constants within 32-bit tables.) 11948 11949Fixed a problem where string and buffer objects with "static" pointers 11950(pointers to initialization data within an ACPI table) were not handled 11951consistently. The internal object copy operation now always copies the 11952data 11953to a newly allocated buffer, regardless of whether the source object is 11954static or not. 11955 11956Fixed a problem with the FromBCD operator where an implicit result 11957conversion was improperly performed while storing the result to the 11958target 11959operand. Since this is an "explicit conversion" operator, the implicit 11960conversion should never be performed on the output. 11961 11962Fixed a problem with the CopyObject operator where a copy to an existing 11963named object did not always completely overwrite the existing object 11964stored 11965at name. Specifically, a buffer-to-buffer copy did not delete the 11966existing 11967buffer. 11968 11969Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 11970and 11971structs for consistency. 11972 11973Code and Data Size: Current and previous core subsystem library sizes are 11974shown below. These are the code and data sizes for the acpica.lib 11975produced 11976by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11977any ACPI driver or OSPM code. The debug version of the code includes the 11978debug output trace mechanism and has a much larger code and data size. 11979Note 11980that these values will vary depending on the efficiency of the compiler 11981and 11982the compiler options used during generation. 11983 11984 Previous Release: 11985 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11986 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11987 Current Release: (Same sizes) 11988 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11989 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11990 11991 119922) iASL Compiler/Disassembler: 11993 11994The compiler now emits a warning if an attempt is made to generate a 64- 11995bit 11996integer constant from within a 32-bit ACPI table (Revision < 2). The 11997integer 11998is truncated to 32 bits. 11999 12000Fixed a problem with large package objects: if the static length of the 12001package is greater than 255, the "variable length package" opcode is 12002emitted. Previously, this caused an error. This requires an update to the 12003ACPI spec, since it currently (incorrectly) states that packages larger 12004than 12005255 elements are not allowed. 12006 12007The disassembler now correctly handles variable length packages and 12008packages 12009larger than 255 elements. 12010 12011---------------------------------------- 1201208 April 2005. Summary of changes for version 20050408: 12013 120141) ACPI CA Core Subsystem: 12015 12016Fixed three cases in the interpreter where an "index" argument to an ASL 12017function was still (internally) 32 bits instead of the required 64 bits. 12018This was the Index argument to the Index, Mid, and Match operators. 12019 12020The "strupr" function is now permanently local (AcpiUtStrupr), since this 12021is 12022not a POSIX-defined function and not present in most kernel-level C 12023libraries. All references to the C library strupr function have been 12024removed 12025from the headers. 12026 12027Completed the deployment of static functions/prototypes. All prototypes 12028with 12029the static attribute have been moved from the headers to the owning C 12030file. 12031 12032Implemented an extract option (-e) for the AcpiBin utility (AML binary 12033utility). This option allows the utility to extract individual ACPI 12034tables 12035from the output of AcpiDmp. It provides the same functionality of the 12036acpixtract.pl perl script without the worry of setting the correct perl 12037options. AcpiBin runs on Windows and has not yet been generated/validated 12038in 12039the Linux/Unix environment (but should be soon). 12040 12041Updated and fixed the table dump option for AcpiBin (-d). This option 12042converts a single ACPI table to a hex/ascii file, similar to the output 12043of 12044AcpiDmp. 12045 12046Code and Data Size: Current and previous core subsystem library sizes are 12047shown below. These are the code and data sizes for the acpica.lib 12048produced 12049by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12050any ACPI driver or OSPM code. The debug version of the code includes the 12051debug output trace mechanism and has a much larger code and data size. 12052Note 12053that these values will vary depending on the efficiency of the compiler 12054and 12055the compiler options used during generation. 12056 12057 Previous Release: 12058 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12059 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12060 Current Release: 12061 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12062 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12063 12064 120652) iASL Compiler/Disassembler: 12066 12067Disassembler fix: Added a check to ensure that the table length found in 12068the 12069ACPI table header within the input file is not longer than the actual 12070input 12071file size. This indicates some kind of file or table corruption. 12072 12073---------------------------------------- 1207429 March 2005. Summary of changes for version 20050329: 12075 120761) ACPI CA Core Subsystem: 12077 12078An error is now generated if an attempt is made to create a Buffer Field 12079of 12080length zero (A CreateField with a length operand of zero.) 12081 12082The interpreter now issues a warning whenever executable code at the 12083module 12084level is detected during ACPI table load. This will give some idea of the 12085prevalence of this type of code. 12086 12087Implemented support for references to named objects (other than control 12088methods) within package objects. 12089 12090Enhanced package object output for the debug object. Package objects are 12091now 12092completely dumped, showing all elements. 12093 12094Enhanced miscellaneous object output for the debug object. Any object can 12095now be written to the debug object (for example, a device object can be 12096written, and the type of the object will be displayed.) 12097 12098The "static" qualifier has been added to all local functions across both 12099the 12100core subsystem and the iASL compiler. 12101 12102The number of "long" lines (> 80 chars) within the source has been 12103significantly reduced, by about 1/3. 12104 12105Cleaned up all header files to ensure that all CA/iASL functions are 12106prototyped (even static functions) and the formatting is consistent. 12107 12108Two new header files have been added, acopcode.h and acnames.h. 12109 12110Removed several obsolete functions that were no longer used. 12111 12112Code and Data Size: Current and previous core subsystem library sizes are 12113shown below. These are the code and data sizes for the acpica.lib 12114produced 12115by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12116any ACPI driver or OSPM code. The debug version of the code includes the 12117debug output trace mechanism and has a much larger code and data size. 12118Note 12119that these values will vary depending on the efficiency of the compiler 12120and 12121the compiler options used during generation. 12122 12123 Previous Release: 12124 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12125 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 12126 Current Release: 12127 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12128 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12129 12130 12131 121322) iASL Compiler/Disassembler: 12133 12134Fixed a problem with the resource descriptor generation/support. For the 12135ResourceSourceIndex and the ResourceSource fields, both must be present, 12136or 12137both must be not present - can't have one without the other. 12138 12139The compiler now returns non-zero from the main procedure if any errors 12140have 12141occurred during the compilation. 12142 12143 12144---------------------------------------- 1214509 March 2005. Summary of changes for version 20050309: 12146 121471) ACPI CA Core Subsystem: 12148 12149The string-to-buffer implicit conversion code has been modified again 12150after 12151a change to the ACPI specification. In order to match the behavior of 12152the 12153other major ACPI implementation, the target buffer is no longer truncated 12154if 12155the source string is smaller than an existing target buffer. This change 12156requires an update to the ACPI spec, and should eliminate the recent 12157AE_AML_BUFFER_LIMIT issues. 12158 12159The "implicit return" support was rewritten to a new algorithm that 12160solves 12161the general case. Rather than attempt to determine when a method is about 12162to 12163exit, the result of every ASL operator is saved momentarily until the 12164very 12165next ASL operator is executed. Therefore, no matter how the method exits, 12166there will always be a saved implicit return value. This feature is only 12167enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 12168eliminate 12169AE_AML_NO_RETURN_VALUE errors when enabled. 12170 12171Implemented implicit conversion support for the predicate (operand) of 12172the 12173If, Else, and While operators. String and Buffer arguments are 12174automatically 12175converted to Integers. 12176 12177Changed the string-to-integer conversion behavior to match the new ACPI 12178errata: "If no integer object exists, a new integer is created. The ASCII 12179string is interpreted as a hexadecimal constant. Each string character is 12180interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 12181with the first character as the most significant digit, and ending with 12182the 12183first non-hexadecimal character or end-of-string." This means that the 12184first 12185non-hex character terminates the conversion and this is the code that was 12186changed. 12187 12188Fixed a problem where the ObjectType operator would fail (fault) when 12189used 12190on an Index of a Package which pointed to a null package element. The 12191operator now properly returns zero (Uninitialized) in this case. 12192 12193Fixed a problem where the While operator used excessive memory by not 12194properly popping the result stack during execution. There was no memory 12195leak 12196after execution, however. (Code provided by Valery Podrezov.) 12197 12198Fixed a problem where references to control methods within Package 12199objects 12200caused the method to be invoked, instead of producing a reference object 12201pointing to the method. 12202 12203Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 12204to 12205improve performance and reduce code size. (Code provided by Alexey 12206Starikovskiy.) 12207 12208Code and Data Size: Current and previous core subsystem library sizes are 12209shown below. These are the code and data sizes for the acpica.lib 12210produced 12211by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12212any ACPI driver or OSPM code. The debug version of the code includes the 12213debug output trace mechanism and has a much larger code and data size. 12214Note 12215that these values will vary depending on the efficiency of the compiler 12216and 12217the compiler options used during generation. 12218 12219 Previous Release: 12220 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12221 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 12222 Current Release: 12223 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12224 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 12225 12226 122272) iASL Compiler/Disassembler: 12228 12229Fixed a problem with the Return operator with no arguments. Since the AML 12230grammar for the byte encoding requires an operand for the Return opcode, 12231the 12232compiler now emits a Return(Zero) for this case. An ACPI specification 12233update has been written for this case. 12234 12235For tables other than the DSDT, namepath optimization is automatically 12236disabled. This is because SSDTs can be loaded anywhere in the namespace, 12237the 12238compiler has no knowledge of where, and thus cannot optimize namepaths. 12239 12240Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 12241inadvertently omitted from the ACPI specification, and will require an 12242update to the spec. 12243 12244The source file scan for ASCII characters is now optional (-a). This 12245change 12246was made because some vendors place non-ascii characters within comments. 12247However, the scan is simply a brute-force byte compare to ensure all 12248characters in the file are in the range 0x00 to 0x7F. 12249 12250Fixed a problem with the CondRefOf operator where the compiler was 12251inappropriately checking for the existence of the target. Since the point 12252of 12253the operator is to check for the existence of the target at run-time, the 12254compiler no longer checks for the target existence. 12255 12256Fixed a problem where errors generated from the internal AML interpreter 12257during constant folding were not handled properly, causing a fault. 12258 12259Fixed a problem with overly aggressive range checking for the Stall 12260operator. The valid range (max 255) is now only checked if the operand is 12261of 12262type Integer. All other operand types cannot be statically checked. 12263 12264Fixed a problem where control method references within the RefOf, 12265DeRefOf, 12266and ObjectType operators were not treated properly. They are now treated 12267as 12268actual references, not method invocations. 12269 12270Fixed and enhanced the "list namespace" option (-ln). This option was 12271broken 12272a number of releases ago. 12273 12274Improved error handling for the Field, IndexField, and BankField 12275operators. 12276The compiler now cleanly reports and recovers from errors in the field 12277component (FieldUnit) list. 12278 12279Fixed a disassembler problem where the optional ResourceDescriptor fields 12280TRS and TTP were not always handled correctly. 12281 12282Disassembler - Comments in output now use "//" instead of "/*" 12283 12284---------------------------------------- 1228528 February 2005. Summary of changes for version 20050228: 12286 122871) ACPI CA Core Subsystem: 12288 12289Fixed a problem where the result of an Index() operator (an object 12290reference) must increment the reference count on the target object for 12291the 12292life of the object reference. 12293 12294Implemented AML Interpreter and Debugger support for the new ACPI 3.0 12295Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 12296WordSpace 12297resource descriptors. 12298 12299Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 12300Space Descriptor" string, indicating interpreter support for the 12301descriptors 12302above. 12303 12304Implemented header support for the new ACPI 3.0 FADT flag bits. 12305 12306Implemented header support for the new ACPI 3.0 PCI Express bits for the 12307PM1 12308status/enable registers. 12309 12310Updated header support for the MADT processor local Apic struct and MADT 12311platform interrupt source struct for new ACPI 3.0 fields. 12312 12313Implemented header support for the SRAT and SLIT ACPI tables. 12314 12315Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 12316flag 12317at runtime. 12318 12319Code and Data Size: Current and previous core subsystem library sizes are 12320shown below. These are the code and data sizes for the acpica.lib 12321produced 12322by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12323any ACPI driver or OSPM code. The debug version of the code includes the 12324debug output trace mechanism and has a much larger code and data size. 12325Note 12326that these values will vary depending on the efficiency of the compiler 12327and 12328the compiler options used during generation. 12329 12330 Previous Release: 12331 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 12332 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 12333 Current Release: 12334 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12335 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 12336 12337 123382) iASL Compiler/Disassembler: 12339 12340Fixed a problem with the internal 64-bit String-to-integer conversion 12341with 12342strings less than two characters long. 12343 12344Fixed a problem with constant folding where the result of the Index() 12345operator can not be considered a constant. This means that Index() cannot 12346be 12347a type3 opcode and this will require an update to the ACPI specification. 12348 12349Disassembler: Implemented support for the TTP, MTP, and TRS resource 12350descriptor fields. These fields were inadvertently ignored and not output 12351in 12352the disassembly of the resource descriptor. 12353 12354 12355 ---------------------------------------- 1235611 February 2005. Summary of changes for version 20050211: 12357 123581) ACPI CA Core Subsystem: 12359 12360Implemented ACPI 3.0 support for implicit conversion within the Match() 12361operator. MatchObjects can now be of type integer, buffer, or string 12362instead 12363of just type integer. Package elements are implicitly converted to the 12364type 12365of the MatchObject. This change aligns the behavior of Match() with the 12366behavior of the other logical operators (LLess(), etc.) It also requires 12367an 12368errata change to the ACPI specification as this support was intended for 12369ACPI 3.0, but was inadvertently omitted. 12370 12371Fixed a problem with the internal implicit "to buffer" conversion. 12372Strings 12373that are converted to buffers will cause buffer truncation if the string 12374is 12375smaller than the target buffer. Integers that are converted to buffers 12376will 12377not cause buffer truncation, only zero extension (both as per the ACPI 12378spec.) The problem was introduced when code was added to truncate the 12379buffer, but this should not be performed in all cases, only the string 12380case. 12381 12382Fixed a problem with the Buffer and Package operators where the 12383interpreter 12384would get confused if two such operators were used as operands to an ASL 12385operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 12386stack was not being popped after the execution of these operators, 12387resulting 12388in an AE_NO_RETURN_VALUE exception. 12389 12390Fixed a problem with constructs of the form Store(Index(...),...). The 12391reference object returned from Index was inadvertently resolved to an 12392actual 12393value. This problem was introduced in version 20050114 when the behavior 12394of 12395Store() was modified to restrict the object types that can be used as the 12396source operand (to match the ACPI specification.) 12397 12398Reduced excessive stack use within the AcpiGetObjectInfo procedure. 12399 12400Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 12401 12402Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 12403 12404Code and Data Size: Current and previous core subsystem library sizes are 12405shown below. These are the code and data sizes for the acpica.lib 12406produced 12407by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12408any ACPI driver or OSPM code. The debug version of the code includes the 12409debug output trace mechanism and has a much larger code and data size. 12410Note 12411that these values will vary depending on the efficiency of the compiler 12412and 12413the compiler options used during generation. 12414 12415 Previous Release: 12416 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 12417 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 12418 Current Release: 12419 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 12420 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 12421 12422 124232) iASL Compiler/Disassembler: 12424 12425Fixed a code generation problem in the constant folding optimization code 12426where incorrect code was generated if a constant was reduced to a buffer 12427object (i.e., a reduced type 5 opcode.) 12428 12429Fixed a typechecking problem for the ToBuffer operator. Caused by an 12430incorrect return type in the internal opcode information table. 12431 12432---------------------------------------- 1243325 January 2005. Summary of changes for version 20050125: 12434 124351) ACPI CA Core Subsystem: 12436 12437Fixed a recently introduced problem with the Global Lock where the 12438underlying semaphore was not created. This problem was introduced in 12439version 20050114, and caused an AE_AML_NO_OPERAND exception during an 12440Acquire() operation on _GL. 12441 12442The local object cache is now optional, and is disabled by default. Both 12443AcpiExec and the iASL compiler enable the cache because they run in user 12444mode and this enhances their performance. #define 12445ACPI_ENABLE_OBJECT_CACHE 12446to enable the local cache. 12447 12448Fixed an issue in the internal function AcpiUtEvaluateObject concerning 12449the 12450optional "implicit return" support where an error was returned if no 12451return 12452object was expected, but one was implicitly returned. AE_OK is now 12453returned 12454in this case and the implicitly returned object is deleted. 12455AcpiUtEvaluateObject is only occasionally used, and only to execute 12456reserved 12457methods such as _STA and _INI where the return type is known up front. 12458 12459Fixed a few issues with the internal convert-to-integer code. It now 12460returns 12461an error if an attempt is made to convert a null string, a string of only 12462blanks/tabs, or a zero-length buffer. This affects both implicit 12463conversion 12464and explicit conversion via the ToInteger() operator. 12465 12466The internal debug code in AcpiUtAcquireMutex has been commented out. It 12467is 12468not needed for normal operation and should increase the performance of 12469the 12470entire subsystem. The code remains in case it is needed for debug 12471purposes 12472again. 12473 12474The AcpiExec source and makefile are included in the Unix/Linux package 12475for 12476the first time. 12477 12478Code and Data Size: Current and previous core subsystem library sizes are 12479shown below. These are the code and data sizes for the acpica.lib 12480produced 12481by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12482any ACPI driver or OSPM code. The debug version of the code includes the 12483debug output trace mechanism and has a much larger code and data size. 12484Note 12485that these values will vary depending on the efficiency of the compiler 12486and 12487the compiler options used during generation. 12488 12489 Previous Release: 12490 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 12491 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 12492 Current Release: 12493 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 12494 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 12495 124962) iASL Compiler/Disassembler: 12497 12498Switch/Case support: A warning is now issued if the type of the Switch 12499value 12500cannot be determined at compile time. For example, Switch(Arg0) will 12501generate the warning, and the type is assumed to be an integer. As per 12502the 12503ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 12504the 12505warning. 12506 12507Switch/Case support: Implemented support for buffer and string objects as 12508the switch value. This is an ACPI 3.0 feature, now that LEqual supports 12509buffers and strings. 12510 12511Switch/Case support: The emitted code for the LEqual() comparisons now 12512uses 12513the switch value as the first operand, not the second. The case value is 12514now 12515the second operand, and this allows the case value to be implicitly 12516converted to the type of the switch value, not the other way around. 12517 12518Switch/Case support: Temporary variables are now emitted immediately 12519within 12520the control method, not at the global level. This means that there are 12521now 1252236 temps available per-method, not 36 temps per-module as was the case 12523with 12524the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 12525 12526---------------------------------------- 1252714 January 2005. Summary of changes for version 20050114: 12528 12529Added 2005 copyright to all module headers. This affects every module in 12530the core subsystem, iASL compiler, and the utilities. 12531 125321) ACPI CA Core Subsystem: 12533 12534Fixed an issue with the String-to-Buffer conversion code where the string 12535null terminator was not included in the buffer after conversion, but 12536there 12537is existing ASL that assumes the string null terminator is included. This 12538is 12539the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 12540introduced in the previous version when the code was updated to correctly 12541set the converted buffer size as per the ACPI specification. The ACPI 12542spec 12543is ambiguous and will be updated to specify that the null terminator must 12544be 12545included in the converted buffer. This also affects the ToBuffer() ASL 12546operator. 12547 12548Fixed a problem with the Mid() ASL/AML operator where it did not work 12549correctly on Buffer objects. Newly created sub-buffers were not being 12550marked 12551as initialized. 12552 12553 12554Fixed a problem in AcpiTbFindTable where incorrect string compares were 12555performed on the OemId and OemTableId table header fields. These fields 12556are 12557not null terminated, so strncmp is now used instead of strcmp. 12558 12559Implemented a restriction on the Store() ASL/AML operator to align the 12560behavior with the ACPI specification. Previously, any object could be 12561used 12562as the source operand. Now, the only objects that may be used are 12563Integers, 12564Buffers, Strings, Packages, Object References, and DDB Handles. If 12565necessary, the original behavior can be restored by enabling the 12566EnableInterpreterSlack flag. 12567 12568Enhanced the optional "implicit return" support to allow an implicit 12569return 12570value from methods that are invoked externally via the AcpiEvaluateObject 12571interface. This enables implicit returns from the _STA and _INI methods, 12572for example. 12573 12574Changed the Revision() ASL/AML operator to return the current version of 12575the 12576AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 12577returned 12578the supported ACPI version (This is the function of the _REV method). 12579 12580Updated the _REV predefined method to return the currently supported 12581version 12582of ACPI, now 3. 12583 12584Implemented batch mode option for the AcpiExec utility (-b). 12585 12586Code and Data Size: Current and previous core subsystem library sizes are 12587shown below. These are the code and data sizes for the acpica.lib 12588produced 12589by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12590any ACPI driver or OSPM code. The debug version of the code includes the 12591debug output trace mechanism and has a much larger code and data size. 12592Note 12593that these values will vary depending on the efficiency of the compiler 12594and 12595the compiler options used during generation. 12596 12597 Previous Release: 12598 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12599 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 12600 Current Release: 12601 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 12602 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 12603 12604---------------------------------------- 1260510 December 2004. Summary of changes for version 20041210: 12606 12607ACPI 3.0 support is nearing completion in both the iASL compiler and the 12608ACPI CA core subsystem. 12609 126101) ACPI CA Core Subsystem: 12611 12612Fixed a problem in the ToDecimalString operator where the resulting 12613string 12614length was incorrectly calculated. The length is now calculated exactly, 12615eliminating incorrect AE_STRING_LIMIT exceptions. 12616 12617Fixed a problem in the ToHexString operator to allow a maximum 200 12618character 12619string to be produced. 12620 12621Fixed a problem in the internal string-to-buffer and buffer-to-buffer 12622copy 12623routine where the length of the resulting buffer was not truncated to the 12624new size (if the target buffer already existed). 12625 12626Code and Data Size: Current and previous core subsystem library sizes are 12627shown below. These are the code and data sizes for the acpica.lib 12628produced 12629by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12630any ACPI driver or OSPM code. The debug version of the code includes the 12631debug output trace mechanism and has a much larger code and data size. 12632Note 12633that these values will vary depending on the efficiency of the compiler 12634and 12635the compiler options used during generation. 12636 12637 Previous Release: 12638 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12639 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 12640 Current Release: 12641 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12642 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 12643 12644 126452) iASL Compiler/Disassembler: 12646 12647Implemented the new ACPI 3.0 resource template macros - DWordSpace, 12648ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 12649Includes support in the disassembler. 12650 12651Implemented support for the new (ACPI 3.0) parameter to the Register 12652macro, 12653AccessSize. 12654 12655Fixed a problem where the _HE resource name for the Interrupt macro was 12656referencing bit 0 instead of bit 1. 12657 12658Implemented check for maximum 255 interrupts in the Interrupt macro. 12659 12660Fixed a problem with the predefined resource descriptor names where 12661incorrect AML code was generated if the offset within the resource buffer 12662was 0 or 1. The optimizer shortened the AML code to a single byte opcode 12663but did not update the surrounding package lengths. 12664 12665Changes to the Dma macro: All channels within the channel list must be 12666in 12667the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 12668optional (default is BusMaster). 12669 12670Implemented check for maximum 7 data bytes for the VendorShort macro. 12671 12672The ReadWrite parameter is now optional for the Memory32 and similar 12673macros. 12674 12675---------------------------------------- 1267603 December 2004. Summary of changes for version 20041203: 12677 126781) ACPI CA Core Subsystem: 12679 12680The low-level field insertion/extraction code (exfldio) has been 12681completely 12682rewritten to eliminate unnecessary complexity, bugs, and boundary 12683conditions. 12684 12685Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 12686ToDecimalString 12687operators where the input operand could be inadvertently deleted if no 12688conversion was necessary (e.g., if the input to ToInteger was an Integer 12689object.) 12690 12691Fixed a problem with the ToDecimalString and ToHexString where an 12692incorrect 12693exception code was returned if the resulting string would be > 200 chars. 12694AE_STRING_LIMIT is now returned. 12695 12696Fixed a problem with the Concatenate operator where AE_OK was always 12697returned, even if the operation failed. 12698 12699Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 12700semaphores to be allocated. 12701 12702Code and Data Size: Current and previous core subsystem library sizes are 12703shown below. These are the code and data sizes for the acpica.lib 12704produced 12705by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12706any ACPI driver or OSPM code. The debug version of the code includes the 12707debug output trace mechanism and has a much larger code and data size. 12708Note 12709that these values will vary depending on the efficiency of the compiler 12710and 12711the compiler options used during generation. 12712 12713 Previous Release: 12714 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12715 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12716 Current Release: 12717 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12718 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 12719 12720 127212) iASL Compiler/Disassembler: 12722 12723Fixed typechecking for the ObjectType and SizeOf operators. Problem was 12724recently introduced in 20041119. 12725 12726Fixed a problem with the ToUUID macro where the upper nybble of each 12727buffer 12728byte was inadvertently set to zero. 12729 12730---------------------------------------- 1273119 November 2004. Summary of changes for version 20041119: 12732 127331) ACPI CA Core Subsystem: 12734 12735Fixed a problem in the internal ConvertToInteger routine where new 12736integers 12737were not truncated to 32 bits for 32-bit ACPI tables. This routine 12738converts 12739buffers and strings to integers. 12740 12741Implemented support to store a value to an Index() on a String object. 12742This 12743is an ACPI 2.0 feature that had not yet been implemented. 12744 12745Implemented new behavior for storing objects to individual package 12746elements 12747(via the Index() operator). The previous behavior was to invoke the 12748implicit 12749conversion rules if an object was already present at the index. The new 12750behavior is to simply delete any existing object and directly store the 12751new 12752object. Although the ACPI specification seems unclear on this subject, 12753other 12754ACPI implementations behave in this manner. (This is the root of the 12755AE_BAD_HEX_CONSTANT issue.) 12756 12757Modified the RSDP memory scan mechanism to support the extended checksum 12758for 12759ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 12760RSDP signature is found with a valid checksum. 12761 12762Code and Data Size: Current and previous core subsystem library sizes are 12763shown below. These are the code and data sizes for the acpica.lib 12764produced 12765by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12766any ACPI driver or OSPM code. The debug version of the code includes the 12767debug output trace mechanism and has a much larger code and data size. 12768Note 12769that these values will vary depending on the efficiency of the compiler 12770and 12771the compiler options used during generation. 12772 12773 Previous Release: 12774 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12775 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12776 Current Release: 12777 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12778 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12779 12780 127812) iASL Compiler/Disassembler: 12782 12783Fixed a missing semicolon in the aslcompiler.y file. 12784 12785---------------------------------------- 1278605 November 2004. Summary of changes for version 20041105: 12787 127881) ACPI CA Core Subsystem: 12789 12790Implemented support for FADT revision 2. This was an interim table 12791(between 12792ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 12793 12794Implemented optional support to allow uninitialized LocalX and ArgX 12795variables in a control method. The variables are initialized to an 12796Integer 12797object with a value of zero. This support is enabled by setting the 12798AcpiGbl_EnableInterpreterSlack flag to TRUE. 12799 12800Implemented support for Integer objects for the SizeOf operator. Either 128014 12802or 8 is returned, depending on the current integer size (32-bit or 64- 12803bit, 12804depending on the parent table revision). 12805 12806Fixed a problem in the implementation of the SizeOf and ObjectType 12807operators 12808where the operand was resolved to a value too early, causing incorrect 12809return values for some objects. 12810 12811Fixed some possible memory leaks during exceptional conditions. 12812 12813Code and Data Size: Current and previous core subsystem library sizes are 12814shown below. These are the code and data sizes for the acpica.lib 12815produced 12816by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12817any ACPI driver or OSPM code. The debug version of the code includes the 12818debug output trace mechanism and has a much larger code and data size. 12819Note 12820that these values will vary depending on the efficiency of the compiler 12821and 12822the compiler options used during generation. 12823 12824 Previous Release: 12825 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12826 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 12827 Current Release: 12828 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12829 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12830 12831 128322) iASL Compiler/Disassembler: 12833 12834Implemented support for all ACPI 3.0 reserved names and methods. 12835 12836Implemented all ACPI 3.0 grammar elements in the front-end, including 12837support for semicolons. 12838 12839Implemented the ACPI 3.0 Function() and ToUUID() macros 12840 12841Fixed a problem in the disassembler where a Scope() operator would not be 12842emitted properly if the target of the scope was in another table. 12843 12844---------------------------------------- 1284515 October 2004. Summary of changes for version 20041015: 12846 12847Note: ACPI CA is currently undergoing an in-depth and complete formal 12848evaluation to test/verify the following areas. Other suggestions are 12849welcome. This will result in an increase in the frequency of releases and 12850the number of bug fixes in the next few months. 12851 - Functional tests for all ASL/AML operators 12852 - All implicit/explicit type conversions 12853 - Bit fields and operation regions 12854 - 64-bit math support and 32-bit-only "truncated" math support 12855 - Exceptional conditions, both compiler and interpreter 12856 - Dynamic object deletion and memory leaks 12857 - ACPI 3.0 support when implemented 12858 - External interfaces to the ACPI subsystem 12859 12860 128611) ACPI CA Core Subsystem: 12862 12863Fixed two alignment issues on 64-bit platforms - within debug statements 12864in 12865AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 12866Address 12867field within the non-aligned ACPI generic address structure. 12868 12869Fixed a problem in the Increment and Decrement operators where incorrect 12870operand resolution could result in the inadvertent modification of the 12871original integer when the integer is passed into another method as an 12872argument and the arg is then incremented/decremented. 12873 12874Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 12875bit 12876BCD number were truncated during conversion. 12877 12878Fixed a problem in the ToDecimal operator where the length of the 12879resulting 12880string could be set incorrectly too long if the input operand was a 12881Buffer 12882object. 12883 12884Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 12885(0) 12886within a buffer would prematurely terminate a compare between buffer 12887objects. 12888 12889Added a check for string overflow (>200 characters as per the ACPI 12890specification) during the Concatenate operator with two string operands. 12891 12892Code and Data Size: Current and previous core subsystem library sizes are 12893shown below. These are the code and data sizes for the acpica.lib 12894produced 12895by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12896any ACPI driver or OSPM code. The debug version of the code includes the 12897debug output trace mechanism and has a much larger code and data size. 12898Note 12899that these values will vary depending on the efficiency of the compiler 12900and 12901the compiler options used during generation. 12902 12903 Previous Release: 12904 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12905 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 12906 Current Release: 12907 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12908 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 12909 12910 12911 129122) iASL Compiler/Disassembler: 12913 12914Allow the use of the ObjectType operator on uninitialized Locals and Args 12915(returns 0 as per the ACPI specification). 12916 12917Fixed a problem where the compiler would fault if there was a syntax 12918error 12919in the FieldName of all of the various CreateXXXField operators. 12920 12921Disallow the use of lower case letters within the EISAID macro, as per 12922the 12923ACPI specification. All EISAID strings must be of the form "UUUNNNN" 12924Where 12925U is an uppercase letter and N is a hex digit. 12926 12927 12928---------------------------------------- 1292906 October 2004. Summary of changes for version 20041006: 12930 129311) ACPI CA Core Subsystem: 12932 12933Implemented support for the ACPI 3.0 Timer operator. This ASL function 12934implements a 64-bit timer with 100 nanosecond granularity. 12935 12936Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 12937implement the ACPI 3.0 Timer operator. This allows the host OS to 12938implement 12939the timer with the best clock available. Also, it keeps the core 12940subsystem 12941out of the clock handling business, since the host OS (usually) performs 12942this function. 12943 12944Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 12945functions use a 64-bit address which is part of the packed ACPI Generic 12946Address Structure. Since the structure is non-aligned, the alignment 12947macros 12948are now used to extract the address to a local variable before use. 12949 12950Fixed a problem where the ToInteger operator assumed all input strings 12951were 12952hexadecimal. The operator now handles both decimal strings and hex 12953strings 12954(prefixed with "0x"). 12955 12956Fixed a problem where the string length in the string object created as a 12957result of the internal ConvertToString procedure could be incorrect. This 12958potentially affected all implicit conversions and also the 12959ToDecimalString 12960and ToHexString operators. 12961 12962Fixed two problems in the ToString operator. If the length parameter was 12963zero, an incorrect string object was created and the value of the input 12964length parameter was inadvertently changed from zero to Ones. 12965 12966Fixed a problem where the optional ResourceSource string in the 12967ExtendedIRQ 12968resource macro was ignored. 12969 12970Simplified the interfaces to the internal division functions, reducing 12971code 12972size and complexity. 12973 12974Code and Data Size: Current and previous core subsystem library sizes are 12975shown below. These are the code and data sizes for the acpica.lib 12976produced 12977by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12978any ACPI driver or OSPM code. The debug version of the code includes the 12979debug output trace mechanism and has a much larger code and data size. 12980Note 12981that these values will vary depending on the efficiency of the compiler 12982and 12983the compiler options used during generation. 12984 12985 Previous Release: 12986 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 12987 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 12988 Current Release: 12989 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12990 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 12991 12992 129932) iASL Compiler/Disassembler: 12994 12995Implemented support for the ACPI 3.0 Timer operator. 12996 12997Fixed a problem where the Default() operator was inadvertently ignored in 12998a 12999Switch/Case block. This was a problem in the translation of the Switch 13000statement to If...Else pairs. 13001 13002Added support to allow a standalone Return operator, with no parentheses 13003(or 13004operands). 13005 13006Fixed a problem with code generation for the ElseIf operator where the 13007translated Else...If parse tree was improperly constructed leading to the 13008loss of some code. 13009 13010---------------------------------------- 1301122 September 2004. Summary of changes for version 20040922: 13012 130131) ACPI CA Core Subsystem: 13014 13015Fixed a problem with the implementation of the LNot() operator where 13016"Ones" 13017was not returned for the TRUE case. Changed the code to return Ones 13018instead 13019of (!Arg) which was usually 1. This change affects iASL constant folding 13020for 13021this operator also. 13022 13023Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 13024not 13025initialized properly -- Now zero the entire buffer in this case where the 13026buffer already exists. 13027 13028Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 13029Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 13030related code considerably. This will require changes/updates to all OS 13031interface layers (OSLs.) 13032 13033Implemented a new external interface, AcpiInstallExceptionHandler, to 13034allow 13035a system exception handler to be installed. This handler is invoked upon 13036any 13037run-time exception that occurs during control method execution. 13038 13039Added support for the DSDT in AcpiTbFindTable. This allows the 13040DataTableRegion() operator to access the local copy of the DSDT. 13041 13042Code and Data Size: Current and previous core subsystem library sizes are 13043shown below. These are the code and data sizes for the acpica.lib 13044produced 13045by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13046any ACPI driver or OSPM code. The debug version of the code includes the 13047debug output trace mechanism and has a much larger code and data size. 13048Note 13049that these values will vary depending on the efficiency of the compiler 13050and 13051the compiler options used during generation. 13052 13053 Previous Release: 13054 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13055 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13056 Current Release: 13057 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13058 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13059 13060 130612) iASL Compiler/Disassembler: 13062 13063Fixed a problem with constant folding and the LNot operator. LNot was 13064returning 1 in the TRUE case, not Ones as per the ACPI specification. 13065This 13066could result in the generation of an incorrect folded/reduced constant. 13067 13068End-Of-File is now allowed within a "//"-style comment. A parse error no 13069longer occurs if such a comment is at the very end of the input ASL 13070source 13071file. 13072 13073Implemented the "-r" option to override the Revision in the table header. 13074The initial use of this option will be to simplify the evaluation of the 13075AML 13076interpreter by allowing a single ASL source module to be compiled for 13077either 1307832-bit or 64-bit integers. 13079 13080 13081---------------------------------------- 1308227 August 2004. Summary of changes for version 20040827: 13083 130841) ACPI CA Core Subsystem: 13085 13086- Implemented support for implicit object conversion in the non-numeric 13087logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 13088and 13089LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 13090the second operand is implicitly converted on the fly to match the type 13091of 13092the first operand. For example: 13093 13094 LEqual (Source1, Source2) 13095 13096Source1 and Source2 must each evaluate to an integer, a string, or a 13097buffer. 13098The data type of Source1 dictates the required type of Source2. Source2 13099is 13100implicitly converted if necessary to match the type of Source1. 13101 13102- Updated and corrected the behavior of the string conversion support. 13103The 13104rules concerning conversion of buffers to strings (according to the ACPI 13105specification) are as follows: 13106 13107ToDecimalString - explicit byte-wise conversion of buffer to string of 13108decimal values (0-255) separated by commas. ToHexString - explicit byte- 13109wise 13110conversion of buffer to string of hex values (0-FF) separated by commas. 13111ToString - explicit byte-wise conversion of buffer to string. Byte-by- 13112byte 13113copy with no transform except NULL terminated. Any other implicit buffer- 13114to- 13115string conversion - byte-wise conversion of buffer to string of hex 13116values 13117(0-FF) separated by spaces. 13118 13119- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 13120 13121- Fixed a problem in AcpiNsGetPathnameLength where the returned length 13122was 13123one byte too short in the case of a node in the root scope. This could 13124cause a fault during debug output. 13125 13126- Code and Data Size: Current and previous core subsystem library sizes 13127are 13128shown below. These are the code and data sizes for the acpica.lib 13129produced 13130by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13131any ACPI driver or OSPM code. The debug version of the code includes the 13132debug output trace mechanism and has a much larger code and data size. 13133Note 13134that these values will vary depending on the efficiency of the compiler 13135and 13136the compiler options used during generation. 13137 13138 Previous Release: 13139 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 13140 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 13141 Current Release: 13142 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13143 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13144 13145 131462) iASL Compiler/Disassembler: 13147 13148- Fixed a Linux generation error. 13149 13150 13151---------------------------------------- 1315216 August 2004. Summary of changes for version 20040816: 13153 131541) ACPI CA Core Subsystem: 13155 13156Designed and implemented support within the AML interpreter for the so- 13157called "implicit return". This support returns the result of the last 13158ASL 13159operation within a control method, in the absence of an explicit Return() 13160operator. A few machines depend on this behavior, even though it is not 13161explicitly supported by the ASL language. It is optional support that 13162can 13163be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 13164 13165Removed support for the PCI_Config address space from the internal low 13166level 13167hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 13168support was not used internally, and would not work correctly anyway 13169because 13170the PCI bus number and segment number were not supported. There are 13171separate interfaces for PCI configuration space access because of the 13172unique 13173interface. 13174 13175Code and Data Size: Current and previous core subsystem library sizes are 13176shown below. These are the code and data sizes for the acpica.lib 13177produced 13178by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13179any ACPI driver or OSPM code. The debug version of the code includes the 13180debug output trace mechanism and has a much larger code and data size. 13181Note 13182that these values will vary depending on the efficiency of the compiler 13183and 13184the compiler options used during generation. 13185 13186 Previous Release: 13187 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13188 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 13189 Current Release: 13190 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 13191 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 13192 13193 131942) iASL Compiler/Disassembler: 13195 13196Fixed a problem where constants in ASL expressions at the root level (not 13197within a control method) could be inadvertently truncated during code 13198generation. This problem was introduced in the 20040715 release. 13199 13200 13201---------------------------------------- 1320215 July 2004. Summary of changes for version 20040715: 13203 132041) ACPI CA Core Subsystem: 13205 13206Restructured the internal HW GPE interfaces to pass/track the current 13207state 13208of interrupts (enabled/disabled) in order to avoid possible deadlock and 13209increase flexibility of the interfaces. 13210 13211Implemented a "lexicographical compare" for String and Buffer objects 13212within 13213the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 13214- 13215as per further clarification to the ACPI specification. Behavior is 13216similar 13217to C library "strcmp". 13218 13219Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 13220external function. In the 32-bit non-debug case, the stack use has been 13221reduced from 168 bytes to 32 bytes. 13222 13223Deployed a new run-time configuration flag, 13224AcpiGbl_EnableInterpreterSlack, 13225whose purpose is to allow the AML interpreter to forgive certain bad AML 13226constructs. Default setting is FALSE. 13227 13228Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 13229IO 13230support code. If enabled, it allows field access to go beyond the end of 13231a 13232region definition if the field is within the region length rounded up to 13233the 13234next access width boundary (a common coding error.) 13235 13236Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 13237ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 13238these 13239symbols are lowercased by the latest version of the AcpiSrc tool. 13240 13241The prototypes for the PCI interfaces in acpiosxf.h have been updated to 13242rename "Register" to simply "Reg" to prevent certain compilers from 13243complaining. 13244 13245Code and Data Size: Current and previous core subsystem library sizes are 13246shown below. These are the code and data sizes for the acpica.lib 13247produced 13248by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13249any ACPI driver or OSPM code. The debug version of the code includes the 13250debug output trace mechanism and has a much larger code and data size. 13251Note 13252that these values will vary depending on the efficiency of the compiler 13253and 13254the compiler options used during generation. 13255 13256 Previous Release: 13257 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13258 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 13259 Current Release: 13260 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13261 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 13262 13263 132642) iASL Compiler/Disassembler: 13265 13266Implemented full support for Package objects within the Case() operator. 13267Note: The Break() operator is currently not supported within Case blocks 13268(TermLists) as there is some question about backward compatibility with 13269ACPI 132701.0 interpreters. 13271 13272 13273Fixed a problem where complex terms were not supported properly within 13274the 13275Switch() operator. 13276 13277Eliminated extraneous warning for compiler-emitted reserved names of the 13278form "_T_x". (Used in Switch/Case operators.) 13279 13280Eliminated optimization messages for "_T_x" objects and small constants 13281within the DefinitionBlock operator. 13282 13283 13284---------------------------------------- 1328515 June 2004. Summary of changes for version 20040615: 13286 132871) ACPI CA Core Subsystem: 13288 13289Implemented support for Buffer and String objects (as per ACPI 2.0) for 13290the 13291following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 13292LLessEqual. 13293 13294All directory names in the entire source package are lower case, as they 13295were in earlier releases. 13296 13297Implemented "Disassemble" command in the AML debugger that will 13298disassemble 13299a single control method. 13300 13301Code and Data Size: Current and previous core subsystem library sizes are 13302shown below. These are the code and data sizes for the acpica.lib 13303produced 13304by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13305any ACPI driver or OSPM code. The debug version of the code includes the 13306debug output trace mechanism and has a much larger code and data size. 13307Note 13308that these values will vary depending on the efficiency of the compiler 13309and 13310the compiler options used during generation. 13311 13312 Previous Release: 13313 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 13314 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 13315 13316 Current Release: 13317 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13318 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 13319 13320 133212) iASL Compiler/Disassembler: 13322 13323Implemented support for Buffer and String objects (as per ACPI 2.0) for 13324the 13325following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 13326LLessEqual. 13327 13328All directory names in the entire source package are lower case, as they 13329were in earlier releases. 13330 13331Fixed a fault when using the -g or -d<nofilename> options if the FADT was 13332not found. 13333 13334Fixed an issue with the Windows version of the compiler where later 13335versions 13336of Windows place the FADT in the registry under the name "FADT" and not 13337"FACP" as earlier versions did. This applies when using the -g or - 13338d<nofilename> options. The compiler now looks for both strings as 13339necessary. 13340 13341Fixed a problem with compiler namepath optimization where a namepath 13342within 13343the Scope() operator could not be optimized if the namepath was a subpath 13344of 13345the current scope path. 13346 13347---------------------------------------- 1334827 May 2004. Summary of changes for version 20040527: 13349 133501) ACPI CA Core Subsystem: 13351 13352Completed a new design and implementation for EBDA (Extended BIOS Data 13353Area) 13354support in the RSDP scan code. The original code improperly scanned for 13355the 13356EBDA by simply scanning from memory location 0 to 0x400. The correct 13357method 13358is to first obtain the EBDA pointer from within the BIOS data area, then 13359scan 1K of memory starting at the EBDA pointer. There appear to be few 13360if 13361any machines that place the RSDP in the EBDA, however. 13362 13363Integrated a fix for a possible fault during evaluation of BufferField 13364arguments. Obsolete code that was causing the problem was removed. 13365 13366Found and fixed a problem in the Field Support Code where data could be 13367corrupted on a bit field read that starts on an aligned boundary but does 13368not end on an aligned boundary. Merged the read/write "datum length" 13369calculation code into a common procedure. 13370 13371Rolled in a couple of changes to the FreeBSD-specific header. 13372 13373 13374Code and Data Size: Current and previous core subsystem library sizes are 13375shown below. These are the code and data sizes for the acpica.lib 13376produced 13377by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13378any ACPI driver or OSPM code. The debug version of the code includes the 13379debug output trace mechanism and has a much larger code and data size. 13380Note 13381that these values will vary depending on the efficiency of the compiler 13382and 13383the compiler options used during generation. 13384 13385 Previous Release: 13386 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13387 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 13388 Current Release: 13389 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 13390 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 13391 13392 133932) iASL Compiler/Disassembler: 13394 13395Fixed a generation warning produced by some overly-verbose compilers for 13396a 1339764-bit constant. 13398 13399---------------------------------------- 1340014 May 2004. Summary of changes for version 20040514: 13401 134021) ACPI CA Core Subsystem: 13403 13404Fixed a problem where hardware GPE enable bits sometimes not set properly 13405during and after GPE method execution. Result of 04/27 changes. 13406 13407Removed extra "clear all GPEs" when sleeping/waking. 13408 13409Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 13410AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 13411to 13412the new AcpiEv* calls as appropriate. 13413 13414ACPI_OS_NAME was removed from the OS-specific headers. The default name 13415is 13416now "Microsoft Windows NT" for maximum compatibility. However this can 13417be 13418changed by modifying the acconfig.h file. 13419 13420Allow a single invocation of AcpiInstallNotifyHandler for a handler that 13421traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 13422 13423Run _INI methods on ThermalZone objects. This is against the ACPI 13424specification, but there is apparently ASL code in the field that has 13425these 13426_INI methods, and apparently "other" AML interpreters execute them. 13427 13428Performed a full 16/32/64 bit lint that resulted in some small changes. 13429 13430Added a sleep simulation command to the AML debugger to test sleep code. 13431 13432Code and Data Size: Current and previous core subsystem library sizes are 13433shown below. These are the code and data sizes for the acpica.lib 13434produced 13435by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13436any ACPI driver or OSPM code. The debug version of the code includes the 13437debug output trace mechanism and has a much larger code and data size. 13438Note 13439that these values will vary depending on the efficiency of the compiler 13440and 13441the compiler options used during generation. 13442 13443 Previous Release: 13444 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13445 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 13446 Current Release: 13447 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13448 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 13449 13450---------------------------------------- 1345127 April 2004. Summary of changes for version 20040427: 13452 134531) ACPI CA Core Subsystem: 13454 13455Completed a major overhaul of the GPE handling within ACPI CA. There are 13456now three types of GPEs: wake-only, runtime-only, and combination 13457wake/run. 13458The only GPEs allowed to be combination wake/run are for button-style 13459devices such as a control-method power button, control-method sleep 13460button, 13461or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 13462not 13463referenced by any _PRW methods are marked for "runtime" and hardware 13464enabled. Any GPE that is referenced by a _PRW method is marked for 13465"wake" 13466(and disabled at runtime). However, at sleep time, only those GPEs that 13467have been specifically enabled for wake via the AcpiEnableGpe interface 13468will 13469actually be hardware enabled. 13470 13471A new external interface has been added, AcpiSetGpeType(), that is meant 13472to 13473be used by device drivers to force a GPE to a particular type. It will 13474be 13475especially useful for the drivers for the button devices mentioned above. 13476 13477Completed restructuring of the ACPI CA initialization sequence so that 13478default operation region handlers are installed before GPEs are 13479initialized 13480and the _PRW methods are executed. This will prevent errors when the 13481_PRW 13482methods attempt to access system memory or I/O space. 13483 13484GPE enable/disable no longer reads the GPE enable register. We now keep 13485the 13486enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 13487thus no longer depend on the hardware to maintain these bits. 13488 13489Always clear the wake status and fixed/GPE status bits before sleep, even 13490for state S5. 13491 13492Improved the AML debugger output for displaying the GPE blocks and their 13493current status. 13494 13495Added new strings for the _OSI method, of the form "Windows 2001 SPx" 13496where 13497x = 0,1,2,3,4. 13498 13499Fixed a problem where the physical address was incorrectly calculated 13500when 13501the Load() operator was used to directly load from an Operation Region 13502(vs. 13503loading from a Field object.) Also added check for minimum table length 13504for 13505this case. 13506 13507Fix for multiple mutex acquisition. Restore original thread SyncLevel on 13508mutex release. 13509 13510Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 13511consistency with the other fields returned. 13512 13513Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 13514structure for each GPE in the system, so the size of this structure is 13515important. 13516 13517CPU stack requirement reduction: Cleaned up the method execution and 13518object 13519evaluation paths so that now a parameter structure is passed, instead of 13520copying the various method parameters over and over again. 13521 13522In evregion.c: Correctly exit and reenter the interpreter region if and 13523only if dispatching an operation region request to a user-installed 13524handler. 13525Do not exit/reenter when dispatching to a default handler (e.g., default 13526system memory or I/O handlers) 13527 13528 13529Notes for updating drivers for the new GPE support. The following 13530changes 13531must be made to ACPI-related device drivers that are attached to one or 13532more 13533GPEs: (This information will be added to the ACPI CA Programmer 13534Reference.) 13535 135361) AcpiInstallGpeHandler no longer automatically enables the GPE, you 13537must 13538explicitly call AcpiEnableGpe. 135392) There is a new interface called AcpiSetGpeType. This should be called 13540before enabling the GPE. Also, this interface will automatically disable 13541the GPE if it is currently enabled. 135423) AcpiEnableGpe no longer supports a GPE type flag. 13543 13544Specific drivers that must be changed: 135451) EC driver: 13546 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 13547AeGpeHandler, NULL); 13548 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 13549 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 13550 135512) Button Drivers (Power, Lid, Sleep): 13552Run _PRW method under parent device 13553If _PRW exists: /* This is a control-method button */ 13554 Extract GPE number and possibly GpeDevice 13555 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 13556 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 13557 13558For all other devices that have _PRWs, we automatically set the GPE type 13559to 13560ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 13561This 13562must be done on a selective basis, usually requiring some kind of user 13563app 13564to allow the user to pick the wake devices. 13565 13566 13567Code and Data Size: Current and previous core subsystem library sizes are 13568shown below. These are the code and data sizes for the acpica.lib 13569produced 13570by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13571any ACPI driver or OSPM code. The debug version of the code includes the 13572debug output trace mechanism and has a much larger code and data size. 13573Note 13574that these values will vary depending on the efficiency of the compiler 13575and 13576the compiler options used during generation. 13577 13578 Previous Release: 13579 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 13580 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 13581 Current Release: 13582 13583 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13584 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 13585 13586 13587 13588---------------------------------------- 1358902 April 2004. Summary of changes for version 20040402: 13590 135911) ACPI CA Core Subsystem: 13592 13593Fixed an interpreter problem where an indirect store through an ArgX 13594parameter was incorrectly applying the "implicit conversion rules" during 13595the store. From the ACPI specification: "If the target is a method local 13596or 13597argument (LocalX or ArgX), no conversion is performed and the result is 13598stored directly to the target". The new behavior is to disable implicit 13599conversion during ALL stores to an ArgX. 13600 13601Changed the behavior of the _PRW method scan to ignore any and all errors 13602returned by a given _PRW. This prevents the scan from aborting from the 13603failure of any single _PRW. 13604 13605Moved the runtime configuration parameters from the global init procedure 13606to 13607static variables in acglobal.h. This will allow the host to override the 13608default values easily. 13609 13610Code and Data Size: Current and previous core subsystem library sizes are 13611shown below. These are the code and data sizes for the acpica.lib 13612produced 13613by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13614any ACPI driver or OSPM code. The debug version of the code includes the 13615debug output trace mechanism and has a much larger code and data size. 13616Note 13617that these values will vary depending on the efficiency of the compiler 13618and 13619the compiler options used during generation. 13620 13621 Previous Release: 13622 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 13623 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 13624 Current Release: 13625 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 13626 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 13627 13628 136292) iASL Compiler/Disassembler: 13630 13631iASL now fully disassembles SSDTs. However, External() statements are 13632not 13633generated automatically for unresolved symbols at this time. This is a 13634planned feature for future implementation. 13635 13636Fixed a scoping problem in the disassembler that occurs when the type of 13637the 13638target of a Scope() operator is overridden. This problem caused an 13639incorrectly nested internal namespace to be constructed. 13640 13641Any warnings or errors that are emitted during disassembly are now 13642commented 13643out automatically so that the resulting file can be recompiled without 13644any 13645hand editing. 13646 13647---------------------------------------- 1364826 March 2004. Summary of changes for version 20040326: 13649 136501) ACPI CA Core Subsystem: 13651 13652Implemented support for "wake" GPEs via interaction between GPEs and the 13653_PRW methods. Every GPE that is pointed to by one or more _PRWs is 13654identified as a WAKE GPE and by default will no longer be enabled at 13655runtime. Previously, we were blindly enabling all GPEs with a 13656corresponding 13657_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 13658We 13659believe this has been the cause of thousands of "spurious" GPEs on some 13660systems. 13661 13662This new GPE behavior is can be reverted to the original behavior (enable 13663ALL GPEs at runtime) via a runtime flag. 13664 13665Fixed a problem where aliased control methods could not access objects 13666properly. The proper scope within the namespace was not initialized 13667(transferred to the target of the aliased method) before executing the 13668target method. 13669 13670Fixed a potential race condition on internal object deletion on the 13671return 13672object in AcpiEvaluateObject. 13673 13674Integrated a fix for resource descriptors where both _MEM and _MTP were 13675being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 13676wide, 0x0F instead of 0x03.) 13677 13678Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 13679preventing 13680a 13681fault in some cases. 13682 13683Updated Notify() values for debug statements in evmisc.c 13684 13685Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 13686 13687Code and Data Size: Current and previous core subsystem library sizes are 13688shown below. These are the code and data sizes for the acpica.lib 13689produced 13690by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13691any ACPI driver or OSPM code. The debug version of the code includes the 13692debug output trace mechanism and has a much larger code and data size. 13693Note 13694that these values will vary depending on the efficiency of the compiler 13695and 13696the compiler options used during generation. 13697 13698 Previous Release: 13699 13700 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 13701 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 13702 Current Release: 13703 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 13704 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 13705 13706---------------------------------------- 1370711 March 2004. Summary of changes for version 20040311: 13708 137091) ACPI CA Core Subsystem: 13710 13711Fixed a problem where errors occurring during the parse phase of control 13712method execution did not abort cleanly. For example, objects created and 13713installed in the namespace were not deleted. This caused all subsequent 13714invocations of the method to return the AE_ALREADY_EXISTS exception. 13715 13716Implemented a mechanism to force a control method to "Serialized" 13717execution 13718if the method attempts to create namespace objects. (The root of the 13719AE_ALREADY_EXISTS problem.) 13720 13721Implemented support for the predefined _OSI "internal" control method. 13722Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 13723and 13724"Windows 2001.1", and can be easily upgraded for new strings as 13725necessary. 13726This feature will allow "other" operating systems to execute the fully 13727tested, "Windows" code path through the ASL code 13728 13729Global Lock Support: Now allows multiple acquires and releases with any 13730internal thread. Removed concept of "owning thread" for this special 13731mutex. 13732 13733Fixed two functions that were inappropriately declaring large objects on 13734the 13735CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 13736during 13737method execution considerably. 13738 13739Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 13740S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 13741 13742Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 13743defined on the machine. 13744 13745Implemented two runtime options: One to force all control method 13746execution 13747to "Serialized" to mimic Windows behavior, another to disable _OSI 13748support 13749if it causes problems on a given machine. 13750 13751Code and Data Size: Current and previous core subsystem library sizes are 13752shown below. These are the code and data sizes for the acpica.lib 13753produced 13754by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13755any ACPI driver or OSPM code. The debug version of the code includes the 13756debug output trace mechanism and has a much larger code and data size. 13757Note 13758that these values will vary depending on the efficiency of the compiler 13759and 13760the compiler options used during generation. 13761 13762 Previous Release: 13763 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 13764 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 13765 Current Release: 13766 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 13767 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 13768 137692) iASL Compiler/Disassembler: 13770 13771Fixed an array size problem for FreeBSD that would cause the compiler to 13772fault. 13773 13774---------------------------------------- 1377520 February 2004. Summary of changes for version 20040220: 13776 13777 137781) ACPI CA Core Subsystem: 13779 13780Implemented execution of _SxD methods for Device objects in the 13781GetObjectInfo interface. 13782 13783Fixed calls to _SST method to pass the correct arguments. 13784 13785Added a call to _SST on wake to restore to "working" state. 13786 13787Check for End-Of-Buffer failure case in the WalkResources interface. 13788 13789Integrated fix for 64-bit alignment issue in acglobal.h by moving two 13790structures to the beginning of the file. 13791 13792After wake, clear GPE status register(s) before enabling GPEs. 13793 13794After wake, clear/enable power button. (Perhaps we should clear/enable 13795all 13796fixed events upon wake.) 13797 13798Fixed a couple of possible memory leaks in the Namespace manager. 13799 13800Integrated latest acnetbsd.h file. 13801 13802---------------------------------------- 1380311 February 2004. Summary of changes for version 20040211: 13804 13805 138061) ACPI CA Core Subsystem: 13807 13808Completed investigation and implementation of the call-by-reference 13809mechanism for control method arguments. 13810 13811Fixed a problem where a store of an object into an indexed package could 13812fail if the store occurs within a different method than the method that 13813created the package. 13814 13815Fixed a problem where the ToDecimal operator could return incorrect 13816results. 13817 13818Fixed a problem where the CopyObject operator could fail on some of the 13819more 13820obscure objects (e.g., Reference objects.) 13821 13822Improved the output of the Debug object to display buffer, package, and 13823index objects. 13824 13825Fixed a problem where constructs of the form "RefOf (ArgX)" did not 13826return 13827the expected result. 13828 13829Added permanent ACPI_REPORT_ERROR macros for all instances of the 13830ACPI_AML_INTERNAL exception. 13831 13832Integrated latest version of acfreebsd.h 13833 13834---------------------------------------- 1383516 January 2004. Summary of changes for version 20040116: 13836 13837The purpose of this release is primarily to update the copyright years in 13838each module, thus causing a huge number of diffs. There are a few small 13839functional changes, however. 13840 138411) ACPI CA Core Subsystem: 13842 13843Improved error messages when there is a problem finding one or more of 13844the 13845required base ACPI tables 13846 13847Reintroduced the definition of APIC_HEADER in actbl.h 13848 13849Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 13850 13851Removed extraneous reference to NewObj in dsmthdat.c 13852 138532) iASL compiler 13854 13855Fixed a problem introduced in December that disabled the correct 13856disassembly 13857of Resource Templates 13858 13859 13860---------------------------------------- 1386103 December 2003. Summary of changes for version 20031203: 13862 138631) ACPI CA Core Subsystem: 13864 13865Changed the initialization of Operation Regions during subsystem 13866init to perform two entire walks of the ACPI namespace; The first 13867to initialize the regions themselves, the second to execute the 13868_REG methods. This fixed some interdependencies across _REG 13869methods found on some machines. 13870 13871Fixed a problem where a Store(Local0, Local1) could simply update 13872the object reference count, and not create a new copy of the 13873object if the Local1 is uninitialized. 13874 13875Implemented support for the _SST reserved method during sleep 13876transitions. 13877 13878Implemented support to clear the SLP_TYP and SLP_EN bits when 13879waking up, this is apparently required by some machines. 13880 13881When sleeping, clear the wake status only if SleepState is not S5. 13882 13883Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 13884pointer arithmetic advanced a string pointer too far. 13885 13886Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 13887could be returned if the requested table has not been loaded. 13888 13889Within the support for IRQ resources, restructured the handling of 13890the active and edge/level bits. 13891 13892Fixed a few problems in AcpiPsxExecute() where memory could be 13893leaked under certain error conditions. 13894 13895Improved error messages for the cases where the ACPI mode could 13896not be entered. 13897 13898Code and Data Size: Current and previous core subsystem library 13899sizes are shown below. These are the code and data sizes for the 13900acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13901these values do not include any ACPI driver or OSPM code. The 13902debug version of the code includes the debug output trace 13903mechanism and has a much larger code and data size. Note that 13904these values will vary depending on the efficiency of the compiler 13905and the compiler options used during generation. 13906 13907 Previous Release (20031029): 13908 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 13909 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 13910 Current Release: 13911 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 13912 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 13913 139142) iASL Compiler/Disassembler: 13915 13916Implemented a fix for the iASL disassembler where a bad index was 13917generated. This was most noticeable on 64-bit platforms 13918 13919 13920---------------------------------------- 1392129 October 2003. Summary of changes for version 20031029: 13922 139231) ACPI CA Core Subsystem: 13924 13925 13926Fixed a problem where a level-triggered GPE with an associated 13927_Lxx control method was incorrectly cleared twice. 13928 13929Fixed a problem with the Field support code where an access can 13930occur beyond the end-of-region if the field is non-aligned but 13931extends to the very end of the parent region (resulted in an 13932AE_AML_REGION_LIMIT exception.) 13933 13934Fixed a problem with ACPI Fixed Events where an RT Clock handler 13935would not get invoked on an RTC event. The RTC event bitmasks for 13936the PM1 registers were not being initialized properly. 13937 13938Implemented support for executing _STA and _INI methods for 13939Processor objects. Although this is currently not part of the 13940ACPI specification, there is existing ASL code that depends on the 13941init-time execution of these methods. 13942 13943Implemented and deployed a GetDescriptorName function to decode 13944the various types of internal descriptors. Guards against null 13945descriptors during debug output also. 13946 13947Implemented and deployed a GetNodeName function to extract the 4- 13948character namespace node name. This function simplifies the debug 13949and error output, as well as guarding against null pointers during 13950output. 13951 13952Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 13953simplify the debug and error output of 64-bit integers. This 13954macro replaces the HIDWORD and LODWORD macros for dumping these 13955integers. 13956 13957Updated the implementation of the Stall() operator to only call 13958AcpiOsStall(), and also return an error if the operand is larger 13959than 255. This preserves the required behavior of not 13960relinquishing the processor, as would happen if AcpiOsSleep() was 13961called for "long stalls". 13962 13963Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 13964initialized are now treated as NOOPs. 13965 13966Cleaned up a handful of warnings during 64-bit generation. 13967 13968Fixed a reported error where and incorrect GPE number was passed 13969to the GPE dispatch handler. This value is only used for error 13970output, however. Used this opportunity to clean up and streamline 13971the GPE dispatch code. 13972 13973Code and Data Size: Current and previous core subsystem library 13974sizes are shown below. These are the code and data sizes for the 13975acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13976these values do not include any ACPI driver or OSPM code. The 13977 13978debug version of the code includes the debug output trace 13979mechanism and has a much larger code and data size. Note that 13980these values will vary depending on the efficiency of the compiler 13981and the compiler options used during generation. 13982 13983 Previous Release (20031002): 13984 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 13985 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 13986 Current Release: 13987 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 13988 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 13989 13990 139912) iASL Compiler/Disassembler: 13992 13993Updated the iASL compiler to return an error if the operand to the 13994Stall() operator is larger than 255. 13995 13996 13997---------------------------------------- 1399802 October 2003. Summary of changes for version 20031002: 13999 14000 140011) ACPI CA Core Subsystem: 14002 14003Fixed a problem with Index Fields where the index was not 14004incremented for fields that require multiple writes to the 14005index/data registers (Fields that are wider than the data 14006register.) 14007 14008Fixed a problem with all Field objects where a write could go 14009beyond the end-of-field if the field was larger than the access 14010granularity and therefore required multiple writes to complete the 14011request. An extra write beyond the end of the field could happen 14012inadvertently. 14013 14014Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 14015would incorrectly be returned if the width of the Data Register 14016was larger than the specified field access width. 14017 14018Completed fixes for LoadTable() and Unload() and verified their 14019operation. Implemented full support for the "DdbHandle" object 14020throughout the ACPI CA subsystem. 14021 14022Implemented full support for the MADT and ECDT tables in the ACPI 14023CA header files. Even though these tables are not directly 14024consumed by ACPI CA, the header definitions are useful for ACPI 14025device drivers. 14026 14027Integrated resource descriptor fixes posted to the Linux ACPI 14028list. This included checks for minimum descriptor length, and 14029support for trailing NULL strings within descriptors that have 14030optional string elements. 14031 14032Code and Data Size: Current and previous core subsystem library 14033sizes are shown below. These are the code and data sizes for the 14034acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14035these values do not include any ACPI driver or OSPM code. The 14036debug version of the code includes the debug output trace 14037mechanism and has a much larger code and data size. Note that 14038these values will vary depending on the efficiency of the compiler 14039and the compiler options used during generation. 14040 14041 Previous Release (20030918): 14042 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14043 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14044 Current Release: 14045 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14046 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14047 14048 140492) iASL Compiler: 14050 14051Implemented detection of non-ASCII characters within the input 14052source ASL file. This catches attempts to compile binary (AML) 14053files early in the compile, with an informative error message. 14054 14055Fixed a problem where the disassembler would fault if the output 14056filename could not be generated or if the output file could not be 14057opened. 14058 14059---------------------------------------- 1406018 September 2003. Summary of changes for version 20030918: 14061 14062 140631) ACPI CA Core Subsystem: 14064 14065Found and fixed a longstanding problem with the late execution of 14066the various deferred AML opcodes (such as Operation Regions, 14067Buffer Fields, Buffers, and Packages). If the name string 14068specified for the name of the new object placed the object in a 14069scope other than the current scope, the initialization/execution 14070of the opcode failed. The solution to this problem was to 14071implement a mechanism where the late execution of such opcodes 14072does not attempt to lookup/create the name a second time in an 14073incorrect scope. This fixes the "region size computed 14074incorrectly" problem. 14075 14076Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 14077Global Lock AE_BAD_PARAMETER error. 14078 14079Fixed several 64-bit issues with prototypes, casting and data 14080types. 14081 14082Removed duplicate prototype from acdisasm.h 14083 14084Fixed an issue involving EC Operation Region Detach (Shaohua Li) 14085 14086Code and Data Size: Current and previous core subsystem library 14087sizes are shown below. These are the code and data sizes for the 14088acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14089these values do not include any ACPI driver or OSPM code. The 14090debug version of the code includes the debug output trace 14091mechanism and has a much larger code and data size. Note that 14092these values will vary depending on the efficiency of the compiler 14093and the compiler options used during generation. 14094 14095 Previous Release: 14096 14097 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 14098 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 14099 Current Release: 14100 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14101 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14102 14103 141042) Linux: 14105 14106Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 14107correct sleep time in seconds. 14108 14109---------------------------------------- 1411014 July 2003. Summary of changes for version 20030619: 14111 141121) ACPI CA Core Subsystem: 14113 14114Parse SSDTs in order discovered, as opposed to reverse order 14115(Hrvoje Habjanic) 14116 14117Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 14118Klausner, 14119 Nate Lawson) 14120 14121 141222) Linux: 14123 14124Dynamically allocate SDT list (suggested by Andi Kleen) 14125 14126proc function return value cleanups (Andi Kleen) 14127 14128Correctly handle NMI watchdog during long stalls (Andrew Morton) 14129 14130Make it so acpismp=force works (reported by Andrew Morton) 14131 14132 14133---------------------------------------- 1413419 June 2003. Summary of changes for version 20030619: 14135 141361) ACPI CA Core Subsystem: 14137 14138Fix To/FromBCD, eliminating the need for an arch-specific #define. 14139 14140Do not acquire a semaphore in the S5 shutdown path. 14141 14142Fix ex_digits_needed for 0. (Takayoshi Kochi) 14143 14144Fix sleep/stall code reversal. (Andi Kleen) 14145 14146Revert a change having to do with control method calling 14147semantics. 14148 141492) Linux: 14150 14151acpiphp update (Takayoshi Kochi) 14152 14153Export acpi_disabled for sonypi (Stelian Pop) 14154 14155Mention acpismp=force in config help 14156 14157Re-add acpitable.c and acpismp=force. This improves backwards 14158 14159compatibility and also cleans up the code to a significant degree. 14160 14161Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 14162 14163---------------------------------------- 1416422 May 2003. Summary of changes for version 20030522: 14165 141661) ACPI CA Core Subsystem: 14167 14168Found and fixed a reported problem where an AE_NOT_FOUND error 14169occurred occasionally during _BST evaluation. This turned out to 14170be an Owner ID allocation issue where a called method did not get 14171a new ID assigned to it. Eventually, (after 64k calls), the Owner 14172ID UINT16 would wraparound so that the ID would be the same as the 14173caller's and the called method would delete the caller's 14174namespace. 14175 14176Implemented extended error reporting for control methods that are 14177aborted due to a run-time exception. Output includes the exact 14178AML instruction that caused the method abort, a dump of the method 14179locals and arguments at the time of the abort, and a trace of all 14180nested control method calls. 14181 14182Modified the interpreter to allow the creation of buffers of zero 14183length from the AML code. Implemented new code to ensure that no 14184attempt is made to actually allocate a memory buffer (of length 14185zero) - instead, a simple buffer object with a NULL buffer pointer 14186and length zero is created. A warning is no longer issued when 14187the AML attempts to create a zero-length buffer. 14188 14189Implemented a workaround for the "leading asterisk issue" in 14190_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 14191asterisk is automatically removed if present in any HID, UID, or 14192CID strings. The iASL compiler will still flag this asterisk as 14193an error, however. 14194 14195Implemented full support for _CID methods that return a package of 14196multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 14197now additionally returns a device _CID list if present. This 14198required a change to the external interface in order to pass an 14199ACPI_BUFFER object as a parameter since the _CID list is of 14200variable length. 14201 14202Fixed a problem with the new AE_SAME_HANDLER exception where 14203handler initialization code did not know about this exception. 14204 14205Code and Data Size: Current and previous core subsystem library 14206sizes are shown below. These are the code and data sizes for the 14207acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14208these values do not include any ACPI driver or OSPM code. The 14209debug version of the code includes the debug output trace 14210mechanism and has a much larger code and data size. Note that 14211these values will vary depending on the efficiency of the compiler 14212and the compiler options used during generation. 14213 14214 Previous Release (20030509): 14215 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 14216 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 14217 Current Release: 14218 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 14219 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 14220 14221 142222) Linux: 14223 14224Fixed a bug in which we would reinitialize the ACPI interrupt 14225after it was already working, thus disabling all ACPI and the IRQs 14226for any other device sharing the interrupt. (Thanks to Stian 14227Jordet) 14228 14229Toshiba driver update (John Belmonte) 14230 14231Return only 0 or 1 for our interrupt handler status (Andrew 14232Morton) 14233 14234 142353) iASL Compiler: 14236 14237Fixed a reported problem where multiple (nested) ElseIf() 14238statements were not handled correctly by the compiler, resulting 14239in incorrect warnings and incorrect AML code. This was a problem 14240in both the ASL parser and the code generator. 14241 14242 142434) Documentation: 14244 14245Added changes to existing interfaces, new exception codes, and new 14246text concerning reference count object management versus garbage 14247collection. 14248 14249---------------------------------------- 1425009 May 2003. Summary of changes for version 20030509. 14251 14252 142531) ACPI CA Core Subsystem: 14254 14255Changed the subsystem initialization sequence to hold off 14256installation of address space handlers until the hardware has been 14257initialized and the system has entered ACPI mode. This is because 14258the installation of space handlers can cause _REG methods to be 14259run. Previously, the _REG methods could potentially be run before 14260ACPI mode was enabled. 14261 14262Fixed some memory leak issues related to address space handler and 14263notify handler installation. There were some problems with the 14264reference count mechanism caused by the fact that the handler 14265objects are shared across several namespace objects. 14266 14267Fixed a reported problem where reference counts within the 14268namespace were not properly updated when named objects created by 14269method execution were deleted. 14270 14271Fixed a reported problem where multiple SSDTs caused a deletion 14272issue during subsystem termination. Restructured the table data 14273structures to simplify the linked lists and the related code. 14274 14275Fixed a problem where the table ID associated with secondary 14276tables (SSDTs) was not being propagated into the namespace objects 14277created by those tables. This would only present a problem for 14278tables that are unloaded at run-time, however. 14279 14280Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 14281type as the length parameter (instead of UINT32). 14282 14283Solved a long-standing problem where an ALREADY_EXISTS error 14284appears on various systems. This problem could happen when there 14285are multiple PCI_Config operation regions under a single PCI root 14286bus. This doesn't happen very frequently, but there are some 14287systems that do this in the ASL. 14288 14289Fixed a reported problem where the internal DeleteNode function 14290was incorrectly handling the case where a namespace node was the 14291first in the parent's child list, and had additional peers (not 14292the only child, but first in the list of children.) 14293 14294Code and Data Size: Current core subsystem library sizes are shown 14295below. These are the code and data sizes for the acpica.lib 14296produced by the Microsoft Visual C++ 6.0 compiler, and these 14297values do not include any ACPI driver or OSPM code. The debug 14298version of the code includes the debug output trace mechanism and 14299has a much larger code and data size. Note that these values will 14300vary depending on the efficiency of the compiler and the compiler 14301options used during generation. 14302 14303 Previous Release 14304 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 14305 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 14306 Current Release: 14307 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 14308 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 14309 14310 143112) Linux: 14312 14313Allow ":" in OS override string (Ducrot Bruno) 14314 14315Kobject fix (Greg KH) 14316 14317 143183 iASL Compiler/Disassembler: 14319 14320Fixed a problem in the generation of the C source code files (AML 14321is emitted in C source statements for BIOS inclusion) where the 14322Ascii dump that appears within a C comment at the end of each line 14323could cause a compile time error if the AML sequence happens to 14324have an open comment or close comment sequence embedded. 14325 14326 14327---------------------------------------- 1432824 April 2003. Summary of changes for version 20030424. 14329 14330 143311) ACPI CA Core Subsystem: 14332 14333Support for big-endian systems has been implemented. Most of the 14334support has been invisibly added behind big-endian versions of the 14335ACPI_MOVE_* macros. 14336 14337Fixed a problem in AcpiHwDisableGpeBlock() and 14338AcpiHwClearGpeBlock() where an incorrect offset was passed to the 14339low level hardware write routine. The offset parameter was 14340actually eliminated from the low level read/write routines because 14341they had become obsolete. 14342 14343Fixed a problem where a handler object was deleted twice during 14344the removal of a fixed event handler. 14345 14346 143472) Linux: 14348 14349A fix for SMP systems with link devices was contributed by 14350 14351Compaq's Dan Zink. 14352 14353(2.5) Return whether we handled the interrupt in our IRQ handler. 14354(Linux ISRs no longer return void, so we can propagate the handler 14355return value from the ACPI CA core back to the OS.) 14356 14357 14358 143593) Documentation: 14360 14361The ACPI CA Programmer Reference has been updated to reflect new 14362interfaces and changes to existing interfaces. 14363 14364---------------------------------------- 1436528 March 2003. Summary of changes for version 20030328. 14366 143671) ACPI CA Core Subsystem: 14368 14369The GPE Block Device support has been completed. New interfaces 14370are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 14371interfaces (enable, disable, clear, getstatus) have been split 14372into separate interfaces for Fixed Events and General Purpose 14373Events (GPEs) in order to support GPE Block Devices properly. 14374 14375Fixed a problem where the error message "Failed to acquire 14376semaphore" would appear during operations on the embedded 14377controller (EC). 14378 14379Code and Data Size: Current core subsystem library sizes are shown 14380below. These are the code and data sizes for the acpica.lib 14381produced by the Microsoft Visual C++ 6.0 compiler, and these 14382values do not include any ACPI driver or OSPM code. The debug 14383version of the code includes the debug output trace mechanism and 14384has a much larger code and data size. Note that these values will 14385vary depending on the efficiency of the compiler and the compiler 14386options used during generation. 14387 14388 Previous Release 14389 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 14390 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 14391 Current Release: 14392 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 14393 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 14394 14395 14396---------------------------------------- 1439728 February 2003. Summary of changes for version 20030228. 14398 14399 144001) ACPI CA Core Subsystem: 14401 14402The GPE handling and dispatch code has been completely overhauled 14403in preparation for support of GPE Block Devices (ID ACPI0006). 14404This affects internal data structures and code only; there should 14405be no differences visible externally. One new file has been 14406added, evgpeblk.c 14407 14408The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 14409fields that are used to determine the GPE block lengths. The 14410REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 14411structures are ignored. This is per the ACPI specification but it 14412isn't very clear. The full 256 Block 0/1 GPEs are now supported 14413(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 14414 14415In the SCI interrupt handler, removed the read of the PM1_CONTROL 14416register to look at the SCI_EN bit. On some machines, this read 14417causes an SMI event and greatly slows down SCI events. (This may 14418in fact be the cause of slow battery status response on some 14419systems.) 14420 14421Fixed a problem where a store of a NULL string to a package object 14422could cause the premature deletion of the object. This was seen 14423during execution of the battery _BIF method on some systems, 14424resulting in no battery data being returned. 14425 14426Added AcpiWalkResources interface to simplify parsing of resource 14427lists. 14428 14429Code and Data Size: Current core subsystem library sizes are shown 14430below. These are the code and data sizes for the acpica.lib 14431produced by the Microsoft Visual C++ 6.0 compiler, and these 14432values do not include any ACPI driver or OSPM code. The debug 14433version of the code includes the debug output trace mechanism and 14434has a much larger code and data size. Note that these values will 14435vary depending on the efficiency of the compiler and the compiler 14436options used during generation. 14437 14438 Previous Release 14439 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14440 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14441 Current Release: 14442 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 14443 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 14444 14445 144462) Linux 14447 14448S3 fixes (Ole Rohne) 14449 14450Update ACPI PHP driver with to use new acpi_walk_resource API 14451(Bjorn Helgaas) 14452 14453Add S4BIOS support (Pavel Machek) 14454 14455Map in entire table before performing checksum (John Stultz) 14456 14457Expand the mem= cmdline to allow the specification of reserved and 14458ACPI DATA blocks (Pavel Machek) 14459 14460Never use ACPI on VISWS 14461 14462Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 14463 14464Revert a change that allowed P_BLK lengths to be 4 or 5. This is 14465causing us to think that some systems support C2 when they really 14466don't. 14467 14468Do not count processor objects for non-present CPUs (Thanks to 14469Dominik Brodowski) 14470 14471 144723) iASL Compiler: 14473 14474Fixed a problem where ASL include files could not be found and 14475opened. 14476 14477Added support for the _PDC reserved name. 14478 14479 14480---------------------------------------- 1448122 January 2003. Summary of changes for version 20030122. 14482 14483 144841) ACPI CA Core Subsystem: 14485 14486Added a check for constructs of the form: Store (Local0, Local0) 14487where Local0 is not initialized. Apparently, some BIOS 14488programmers believe that this is a NOOP. Since this store doesn't 14489do anything anyway, the new prototype behavior will ignore this 14490error. This is a case where we can relax the strict checking in 14491the interpreter in the name of compatibility. 14492 14493 144942) Linux 14495 14496The AcpiSrc Source Conversion Utility has been released with the 14497Linux package for the first time. This is the utility that is 14498used to convert the ACPI CA base source code to the Linux version. 14499 14500(Both) Handle P_BLK lengths shorter than 6 more gracefully 14501 14502(Both) Move more headers to include/acpi, and delete an unused 14503header. 14504 14505(Both) Move drivers/acpi/include directory to include/acpi 14506 14507(Both) Boot functions don't use cmdline, so don't pass it around 14508 14509(Both) Remove include of unused header (Adrian Bunk) 14510 14511(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 14512the 14513former now also includes the latter, acpiphp.h only needs the one, 14514now. 14515 14516(2.5) Make it possible to select method of bios restoring after S3 14517resume. [=> no more ugly ifdefs] (Pavel Machek) 14518 14519(2.5) Make proc write interfaces work (Pavel Machek) 14520 14521(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 14522 14523(2.5) Break out ACPI Perf code into its own module, under cpufreq 14524(Dominik Brodowski) 14525 14526(2.4) S4BIOS support (Ducrot Bruno) 14527 14528(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 14529Visinoni) 14530 14531 145323) iASL Compiler: 14533 14534Added support to disassemble SSDT and PSDTs. 14535 14536Implemented support to obtain SSDTs from the Windows registry if 14537available. 14538 14539 14540---------------------------------------- 1454109 January 2003. Summary of changes for version 20030109. 14542 145431) ACPI CA Core Subsystem: 14544 14545Changed the behavior of the internal Buffer-to-String conversion 14546function. The current ACPI specification states that the contents 14547of the buffer are "converted to a string of two-character 14548hexadecimal numbers, each separated by a space". Unfortunately, 14549this definition is not backwards compatible with existing ACPI 1.0 14550implementations (although the behavior was not defined in the ACPI 145511.0 specification). The new behavior simply copies data from the 14552buffer to the string until a null character is found or the end of 14553the buffer is reached. The new String object is always null 14554terminated. This problem was seen during the generation of _BIF 14555battery data where incorrect strings were returned for battery 14556type, etc. This will also require an errata to the ACPI 14557specification. 14558 14559Renamed all instances of NATIVE_UINT and NATIVE_INT to 14560ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 14561 14562Copyright in all module headers (both Linux and non-Linux) has be 14563updated to 2003. 14564 14565Code and Data Size: Current core subsystem library sizes are shown 14566below. These are the code and data sizes for the acpica.lib 14567produced by the Microsoft Visual C++ 6.0 compiler, and these 14568values do not include any ACPI driver or OSPM code. The debug 14569version of the code includes the debug output trace mechanism and 14570has a much larger code and data size. Note that these values will 14571vary depending on the efficiency of the compiler and the compiler 14572options used during generation. 14573 14574 Previous Release 14575 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14576 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14577 Current Release: 14578 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14579 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14580 14581 145822) Linux 14583 14584Fixed an oops on module insertion/removal (Matthew Tippett) 14585 14586(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 14587 14588(2.5) Replace pr_debug (Randy Dunlap) 14589 14590(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 14591 14592(Both) Eliminate spawning of thread from timer callback, in favor 14593of schedule_work() 14594 14595(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 14596 14597(Both) Added define for Fixed Function HW region (Matthew Wilcox) 14598 14599(Both) Add missing statics to button.c (Pavel Machek) 14600 14601Several changes have been made to the source code translation 14602utility that generates the Linux Code in order to make the code 14603more "Linux-like": 14604 14605All typedefs on structs and unions have been removed in keeping 14606with the Linux coding style. 14607 14608Removed the non-Linux SourceSafe module revision number from each 14609module header. 14610 14611Completed major overhaul of symbols to be lowercased for linux. 14612Doubled the number of symbols that are lowercased. 14613 14614Fixed a problem where identifiers within procedure headers and 14615within quotes were not fully lower cased (they were left with a 14616starting capital.) 14617 14618Some C macros whose only purpose is to allow the generation of 16- 14619bit code are now completely removed in the Linux code, increasing 14620readability and maintainability. 14621 14622---------------------------------------- 14623 1462412 December 2002. Summary of changes for version 20021212. 14625 14626 146271) ACPI CA Core Subsystem: 14628 14629Fixed a problem where the creation of a zero-length AML Buffer 14630would cause a fault. 14631 14632Fixed a problem where a Buffer object that pointed to a static AML 14633buffer (in an ACPI table) could inadvertently be deleted, causing 14634memory corruption. 14635 14636Fixed a problem where a user buffer (passed in to the external 14637ACPI CA interfaces) could be overwritten if the buffer was too 14638small to complete the operation, causing memory corruption. 14639 14640Fixed a problem in the Buffer-to-String conversion code where a 14641string of length one was always returned, regardless of the size 14642of the input Buffer object. 14643 14644Removed the NATIVE_CHAR data type across the entire source due to 14645lack of need and lack of consistent use. 14646 14647Code and Data Size: Current core subsystem library sizes are shown 14648below. These are the code and data sizes for the acpica.lib 14649produced by the Microsoft Visual C++ 6.0 compiler, and these 14650values do not include any ACPI driver or OSPM code. The debug 14651version of the code includes the debug output trace mechanism and 14652has a much larger code and data size. Note that these values will 14653vary depending on the efficiency of the compiler and the compiler 14654options used during generation. 14655 14656 Previous Release 14657 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 14658 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 14659 Current Release: 14660 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14661 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14662 14663 14664---------------------------------------- 1466505 December 2002. Summary of changes for version 20021205. 14666 146671) ACPI CA Core Subsystem: 14668 14669Fixed a problem where a store to a String or Buffer object could 14670cause corruption of the DSDT if the object type being stored was 14671the same as the target object type and the length of the object 14672being stored was equal to or smaller than the original (existing) 14673target object. This was seen to cause corruption of battery _BIF 14674buffers if the _BIF method modified the buffer on the fly. 14675 14676Fixed a problem where an internal error was generated if a control 14677method invocation was used in an OperationRegion, Buffer, or 14678Package declaration. This was caused by the deferred parsing of 14679the control method and thus the deferred creation of the internal 14680method object. The solution to this problem was to create the 14681internal method object at the moment the method is encountered in 14682the first pass - so that subsequent references to the method will 14683able to obtain the required parameter count and thus properly 14684parse the method invocation. This problem presented itself as an 14685AE_AML_INTERNAL during the pass 1 parse phase during table load. 14686 14687Fixed a problem where the internal String object copy routine did 14688not always allocate sufficient memory for the target String object 14689and caused memory corruption. This problem was seen to cause 14690"Allocation already present in list!" errors as memory allocation 14691became corrupted. 14692 14693Implemented a new function for the evaluation of namespace objects 14694that allows the specification of the allowable return object 14695types. This simplifies a lot of code that checks for a return 14696object of one or more specific objects returned from the 14697evaluation (such as _STA, etc.) This may become and external 14698function if it would be useful to ACPI-related drivers. 14699 14700Completed another round of prefixing #defines with "ACPI_" for 14701clarity. 14702 14703Completed additional code restructuring to allow more modular 14704linking for iASL compiler and AcpiExec. Several files were split 14705creating new files. New files: nsparse.c dsinit.c evgpe.c 14706 14707Implemented an abort mechanism to terminate an executing control 14708method via the AML debugger. This feature is useful for debugging 14709control methods that depend (wait) for specific hardware 14710responses. 14711 14712Code and Data Size: Current core subsystem library sizes are shown 14713below. These are the code and data sizes for the acpica.lib 14714produced by the Microsoft Visual C++ 6.0 compiler, and these 14715values do not include any ACPI driver or OSPM code. The debug 14716version of the code includes the debug output trace mechanism and 14717has a much larger code and data size. Note that these values will 14718vary depending on the efficiency of the compiler and the compiler 14719options used during generation. 14720 14721 Previous Release 14722 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14723 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 14724 Current Release: 14725 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 14726 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 14727 14728 147292) iASL Compiler/Disassembler 14730 14731Fixed a compiler code generation problem for "Interrupt" Resource 14732Descriptors. If specified in the ASL, the optional "Resource 14733Source Index" and "Resource Source" fields were not inserted into 14734the correct location within the AML resource descriptor, creating 14735an invalid descriptor. 14736 14737Fixed a disassembler problem for "Interrupt" resource descriptors. 14738The optional "Resource Source Index" and "Resource Source" fields 14739were ignored. 14740 14741 14742---------------------------------------- 1474322 November 2002. Summary of changes for version 20021122. 14744 14745 147461) ACPI CA Core Subsystem: 14747 14748Fixed a reported problem where an object stored to a Method Local 14749or Arg was not copied to a new object during the store - the 14750object pointer was simply copied to the Local/Arg. This caused 14751all subsequent operations on the Local/Arg to also affect the 14752original source of the store operation. 14753 14754Fixed a problem where a store operation to a Method Local or Arg 14755was not completed properly if the Local/Arg contained a reference 14756(from RefOf) to a named field. The general-purpose store-to- 14757namespace-node code is now used so that this case is handled 14758automatically. 14759 14760Fixed a problem where the internal object copy routine would cause 14761a protection fault if the object being copied was a Package and 14762contained either 1) a NULL package element or 2) a nested sub- 14763package. 14764 14765Fixed a problem with the GPE initialization that resulted from an 14766ambiguity in the ACPI specification. One section of the 14767specification states that both the address and length of the GPE 14768block must be zero if the block is not supported. Another section 14769implies that only the address need be zero if the block is not 14770supported. The code has been changed so that both the address and 14771the length must be non-zero to indicate a valid GPE block (i.e., 14772if either the address or the length is zero, the GPE block is 14773invalid.) 14774 14775Code and Data Size: Current core subsystem library sizes are shown 14776below. These are the code and data sizes for the acpica.lib 14777produced by the Microsoft Visual C++ 6.0 compiler, and these 14778values do not include any ACPI driver or OSPM code. The debug 14779version of the code includes the debug output trace mechanism and 14780has a much larger code and data size. Note that these values will 14781vary depending on the efficiency of the compiler and the compiler 14782options used during generation. 14783 14784 Previous Release 14785 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 14786 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 14787 Current Release: 14788 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14789 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 14790 14791 147922) Linux 14793 14794Cleaned up EC driver. Exported an external EC read/write 14795interface. By going through this, other drivers (most notably 14796sonypi) will be able to serialize access to the EC. 14797 14798 147993) iASL Compiler/Disassembler 14800 14801Implemented support to optionally generate include files for both 14802ASM and C (the -i switch). This simplifies BIOS development by 14803automatically creating include files that contain external 14804declarations for the symbols that are created within the 14805 14806(optionally generated) ASM and C AML source files. 14807 14808 14809---------------------------------------- 1481015 November 2002. Summary of changes for version 20021115. 14811 148121) ACPI CA Core Subsystem: 14813 14814Fixed a memory leak problem where an error during resolution of 14815 14816method arguments during a method invocation from another method 14817failed to cleanup properly by deleting all successfully resolved 14818argument objects. 14819 14820Fixed a problem where the target of the Index() operator was not 14821correctly constructed if the source object was a package. This 14822problem has not been detected because the use of a target operand 14823with Index() is very rare. 14824 14825Fixed a problem with the Index() operator where an attempt was 14826made to delete the operand objects twice. 14827 14828Fixed a problem where an attempt was made to delete an operand 14829twice during execution of the CondRefOf() operator if the target 14830did not exist. 14831 14832Implemented the first of perhaps several internal create object 14833functions that create and initialize a specific object type. This 14834consolidates duplicated code wherever the object is created, thus 14835shrinking the size of the subsystem. 14836 14837Implemented improved debug/error messages for errors that occur 14838during nested method invocations. All executing method pathnames 14839are displayed (with the error) as the call stack is unwound - thus 14840simplifying debug. 14841 14842Fixed a problem introduced in the 10/02 release that caused 14843premature deletion of a buffer object if a buffer was used as an 14844ASL operand where an integer operand is required (Thus causing an 14845implicit object conversion from Buffer to Integer.) The change in 14846the 10/02 release was attempting to fix a memory leak (albeit 14847incorrectly.) 14848 14849Code and Data Size: Current core subsystem library sizes are shown 14850below. These are the code and data sizes for the acpica.lib 14851produced by the Microsoft Visual C++ 6.0 compiler, and these 14852values do not include any ACPI driver or OSPM code. The debug 14853version of the code includes the debug output trace mechanism and 14854has a much larger code and data size. Note that these values will 14855vary depending on the efficiency of the compiler and the compiler 14856options used during generation. 14857 14858 Previous Release 14859 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 14860 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 14861 Current Release: 14862 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 14863 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 14864 14865 148662) Linux 14867 14868Changed the implementation of the ACPI semaphores to use down() 14869instead of down_interruptable(). It is important that the 14870execution of ACPI control methods not be interrupted by signals. 14871Methods must run to completion, or the system may be left in an 14872unknown/unstable state. 14873 14874Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 14875(Shawn Starr) 14876 14877 148783) iASL Compiler/Disassembler 14879 14880 14881Changed the default location of output files. All output files 14882are now placed in the current directory by default instead of in 14883the directory of the source file. This change may affect some 14884existing makefiles, but it brings the behavior of the compiler in 14885line with other similar tools. The location of the output files 14886can be overridden with the -p command line switch. 14887 14888 14889---------------------------------------- 1489011 November 2002. Summary of changes for version 20021111. 14891 14892 148930) ACPI Specification 2.0B is released and is now available at: 14894http://www.acpi.info/index.html 14895 14896 148971) ACPI CA Core Subsystem: 14898 14899Implemented support for the ACPI 2.0 SMBus Operation Regions. 14900This includes the early detection and handoff of the request to 14901the SMBus region handler (avoiding all of the complex field 14902support code), and support for the bidirectional return packet 14903from an SMBus write operation. This paves the way for the 14904development of SMBus drivers in each host operating system. 14905 14906Fixed a problem where the semaphore WAIT_FOREVER constant was 14907defined as 32 bits, but must be 16 bits according to the ACPI 14908specification. This had the side effect of causing ASL 14909Mutex/Event timeouts even though the ASL code requested a wait 14910forever. Changed all internal references to the ACPI timeout 14911parameter to 16 bits to prevent future problems. Changed the name 14912of WAIT_FOREVER to ACPI_WAIT_FOREVER. 14913 14914Code and Data Size: Current core subsystem library sizes are shown 14915below. These are the code and data sizes for the acpica.lib 14916produced by the Microsoft Visual C++ 6.0 compiler, and these 14917values do not include any ACPI driver or OSPM code. The debug 14918version of the code includes the debug output trace mechanism and 14919has a much larger code and data size. Note that these values will 14920vary depending on the efficiency of the compiler and the compiler 14921options used during generation. 14922 14923 Previous Release 14924 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14925 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 14926 Current Release: 14927 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 14928 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 14929 14930 149312) Linux 14932 14933Module loading/unloading fixes (John Cagle) 14934 14935 149363) iASL Compiler/Disassembler 14937 14938Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 14939 14940Implemented support for the disassembly of all SMBus protocol 14941keywords (SMBQuick, SMBWord, etc.) 14942 14943---------------------------------------- 1494401 November 2002. Summary of changes for version 20021101. 14945 14946 149471) ACPI CA Core Subsystem: 14948 14949Fixed a problem where platforms that have a GPE1 block but no GPE0 14950block were not handled correctly. This resulted in a "GPE 14951overlap" error message. GPE0 is no longer required. 14952 14953Removed code added in the previous release that inserted nodes 14954into the namespace in alphabetical order. This caused some side- 14955effects on various machines. The root cause of the problem is 14956still under investigation since in theory, the internal ordering 14957of the namespace nodes should not matter. 14958 14959 14960Enhanced error reporting for the case where a named object is not 14961found during control method execution. The full ACPI namepath 14962(name reference) of the object that was not found is displayed in 14963this case. 14964 14965Note: as a result of the overhaul of the namespace object types in 14966the previous release, the namespace nodes for the predefined 14967scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 14968instead of ACPI_TYPE_ANY. This simplifies the namespace 14969management code but may affect code that walks the namespace tree 14970looking for specific object types. 14971 14972Code and Data Size: Current core subsystem library sizes are shown 14973below. These are the code and data sizes for the acpica.lib 14974produced by the Microsoft Visual C++ 6.0 compiler, and these 14975values do not include any ACPI driver or OSPM code. The debug 14976version of the code includes the debug output trace mechanism and 14977has a much larger code and data size. Note that these values will 14978vary depending on the efficiency of the compiler and the compiler 14979options used during generation. 14980 14981 Previous Release 14982 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 14983 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 14984 Current Release: 14985 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14986 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 14987 14988 149892) Linux 14990 14991Fixed a problem introduced in the previous release where the 14992Processor and Thermal objects were not recognized and installed in 14993/proc. This was related to the scope type change described above. 14994 14995 149963) iASL Compiler/Disassembler 14997 14998Implemented the -g option to get all of the required ACPI tables 14999from the registry and save them to files (Windows version of the 15000compiler only.) The required tables are the FADT, FACS, and DSDT. 15001 15002Added ACPI table checksum validation during table disassembly in 15003order to catch corrupted tables. 15004 15005 15006---------------------------------------- 1500722 October 2002. Summary of changes for version 20021022. 15008 150091) ACPI CA Core Subsystem: 15010 15011Implemented a restriction on the Scope operator that the target 15012must already exist in the namespace at the time the operator is 15013encountered (during table load or method execution). In other 15014words, forward references are not allowed and Scope() cannot 15015create a new object. This changes the previous behavior where the 15016interpreter would create the name if not found. This new behavior 15017correctly enables the search-to-root algorithm during namespace 15018lookup of the target name. Because of this upsearch, this fixes 15019the known Compaq _SB_.OKEC problem and makes both the AML 15020interpreter and iASL compiler compatible with other ACPI 15021implementations. 15022 15023Completed a major overhaul of the internal ACPI object types for 15024the ACPI Namespace and the associated operand objects. Many of 15025these types had become obsolete with the introduction of the two- 15026pass namespace load. This cleanup simplifies the code and makes 15027the entire namespace load mechanism much clearer and easier to 15028understand. 15029 15030Improved debug output for tracking scope opening/closing to help 15031diagnose scoping issues. The old scope name as well as the new 15032scope name are displayed. Also improved error messages for 15033problems with ASL Mutex objects and error messages for GPE 15034problems. 15035 15036Cleaned up the namespace dump code, removed obsolete code. 15037 15038All string output (for all namespace/object dumps) now uses the 15039common ACPI string output procedure which handles escapes properly 15040and does not emit non-printable characters. 15041 15042Fixed some issues with constants in the 64-bit version of the 15043local C library (utclib.c) 15044 15045 150462) Linux 15047 15048EC Driver: No longer attempts to acquire the Global Lock at 15049interrupt level. 15050 15051 150523) iASL Compiler/Disassembler 15053 15054Implemented ACPI 2.0B grammar change that disallows all Type 1 and 150552 opcodes outside of a control method. This means that the 15056"executable" operators (versus the "namespace" operators) cannot 15057be used at the table level; they can only be used within a control 15058method. 15059 15060Implemented the restriction on the Scope() operator where the 15061target must already exist in the namespace at the time the 15062operator is encountered (during ASL compilation). In other words, 15063forward references are not allowed and Scope() cannot create a new 15064object. This makes the iASL compiler compatible with other ACPI 15065implementations and makes the Scope() implementation adhere to the 15066ACPI specification. 15067 15068Fixed a problem where namepath optimization for the Alias operator 15069was optimizing the wrong path (of the two namepaths.) This caused 15070a "Missing alias link" error message. 15071 15072Fixed a problem where an "unknown reserved name" warning could be 15073incorrectly generated for names like "_SB" when the trailing 15074underscore is not used in the original ASL. 15075 15076Fixed a problem where the reserved name check did not handle 15077NamePaths with multiple NameSegs correctly. The first nameseg of 15078the NamePath was examined instead of the last NameSeg. 15079 15080 15081---------------------------------------- 15082 1508302 October 2002. Summary of changes for this release. 15084 15085 150861) ACPI CA Core Subsystem version 20021002: 15087 15088Fixed a problem where a store/copy of a string to an existing 15089string did not always set the string length properly in the String 15090object. 15091 15092Fixed a reported problem with the ToString operator where the 15093behavior was identical to the ToHexString operator instead of just 15094simply converting a raw buffer to a string data type. 15095 15096Fixed a problem where CopyObject and the other "explicit" 15097conversion operators were not updating the internal namespace node 15098type as part of the store operation. 15099 15100Fixed a memory leak during implicit source operand conversion 15101where the original object was not deleted if it was converted to a 15102new object of a different type. 15103 15104Enhanced error messages for all problems associated with namespace 15105lookups. Common procedure generates and prints the lookup name as 15106well as the formatted status. 15107 15108Completed implementation of a new design for the Alias support 15109within the namespace. The existing design did not handle the case 15110where a new object was assigned to one of the two names due to the 15111use of an explicit conversion operator, resulting in the two names 15112pointing to two different objects. The new design simply points 15113the Alias name to the original name node - not to the object. 15114This results in a level of indirection that must be handled in the 15115name resolution mechanism. 15116 15117Code and Data Size: Current core subsystem library sizes are shown 15118below. These are the code and data sizes for the acpica.lib 15119produced by the Microsoft Visual C++ 6.0 compiler, and these 15120values do not include any ACPI driver or OSPM code. The debug 15121version of the code includes the debug output trace mechanism and 15122has a larger code and data size. Note that these values will vary 15123depending on the efficiency of the compiler and the compiler 15124options used during generation. 15125 15126 Previous Release 15127 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15128 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 15129 Current Release: 15130 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15131 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15132 15133 151342) Linux 15135 15136Initialize thermal driver's timer before it is used. (Knut 15137Neumann) 15138 15139Allow handling negative celsius values. (Kochi Takayoshi) 15140 15141Fix thermal management and make trip points. R/W (Pavel Machek) 15142 15143Fix /proc/acpi/sleep. (P. Christeas) 15144 15145IA64 fixes. (David Mosberger) 15146 15147Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 15148 15149Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 15150Brodowski) 15151 15152 151533) iASL Compiler/Disassembler 15154 15155Clarified some warning/error messages. 15156 15157 15158---------------------------------------- 1515918 September 2002. Summary of changes for this release. 15160 15161 151621) ACPI CA Core Subsystem version 20020918: 15163 15164Fixed a reported problem with reference chaining (via the Index() 15165and RefOf() operators) in the ObjectType() and SizeOf() operators. 15166The definition of these operators includes the dereferencing of 15167all chained references to return information on the base object. 15168 15169Fixed a problem with stores to indexed package elements - the 15170existing code would not complete the store if an "implicit 15171conversion" was not performed. In other words, if the existing 15172object (package element) was to be replaced completely, the code 15173didn't handle this case. 15174 15175Relaxed typechecking on the ASL "Scope" operator to allow the 15176target name to refer to an object of type Integer, String, or 15177Buffer, in addition to the scoping object types (Device, 15178predefined Scopes, Processor, PowerResource, and ThermalZone.) 15179This allows existing AML code that has workarounds for a bug in 15180Windows to function properly. A warning is issued, however. This 15181affects both the AML interpreter and the iASL compiler. Below is 15182an example of this type of ASL code: 15183 15184 Name(DEB,0x00) 15185 Scope(DEB) 15186 { 15187 15188Fixed some reported problems with 64-bit integer support in the 15189local implementation of C library functions (clib.c) 15190 15191 151922) Linux 15193 15194Use ACPI fix map region instead of IOAPIC region, since it is 15195undefined in non-SMP. 15196 15197Ensure that the SCI has the proper polarity and trigger, even on 15198systems that do not have an interrupt override entry in the MADT. 15199 152002.5 big driver reorganization (Pat Mochel) 15201 15202Use early table mapping code from acpitable.c (Andi Kleen) 15203 15204New blacklist entries (Andi Kleen) 15205 15206Blacklist improvements. Split blacklist code out into a separate 15207file. Move checking the blacklist to very early. Previously, we 15208would use ACPI tables, and then halfway through init, check the 15209blacklist -- too late. Now, it's early enough to completely fall- 15210back to non-ACPI. 15211 15212 152133) iASL Compiler/Disassembler version 20020918: 15214 15215Fixed a problem where the typechecking code didn't know that an 15216alias could point to a method. In other words, aliases were not 15217being dereferenced during typechecking. 15218 15219 15220---------------------------------------- 1522129 August 2002. Summary of changes for this release. 15222 152231) ACPI CA Core Subsystem Version 20020829: 15224 15225If the target of a Scope() operator already exists, it must be an 15226object type that actually opens a scope -- such as a Device, 15227Method, Scope, etc. This is a fatal runtime error. Similar error 15228check has been added to the iASL compiler also. 15229 15230Tightened up the namespace load to disallow multiple names in the 15231same scope. This previously was allowed if both objects were of 15232the same type. (i.e., a lookup was the same as entering a new 15233name). 15234 15235 152362) Linux 15237 15238Ensure that the ACPI interrupt has the proper trigger and 15239polarity. 15240 15241local_irq_disable is extraneous. (Matthew Wilcox) 15242 15243Make "acpi=off" actually do what it says, and not use the ACPI 15244interpreter *or* the tables. 15245 15246Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 15247Takayoshi) 15248 15249 152503) iASL Compiler/Disassembler Version 20020829: 15251 15252Implemented namepath optimization for name declarations. For 15253example, a declaration like "Method (\_SB_.ABCD)" would get 15254optimized to "Method (ABCD)" if the declaration is within the 15255\_SB_ scope. This optimization is in addition to the named 15256reference path optimization first released in the previous 15257version. This would seem to complete all possible optimizations 15258for namepaths within the ASL/AML. 15259 15260If the target of a Scope() operator already exists, it must be an 15261object type that actually opens a scope -- such as a Device, 15262Method, Scope, etc. 15263 15264Implemented a check and warning for unreachable code in the same 15265block below a Return() statement. 15266 15267Fixed a problem where the listing file was not generated if the 15268compiler aborted if the maximum error count was exceeded (200). 15269 15270Fixed a problem where the typechecking of method return values was 15271broken. This includes the check for a return value when the 15272method is invoked as a TermArg (a return value is expected.) 15273 15274Fixed a reported problem where EOF conditions during a quoted 15275string or comment caused a fault. 15276 15277 15278---------------------------------------- 1527915 August 2002. Summary of changes for this release. 15280 152811) ACPI CA Core Subsystem Version 20020815: 15282 15283Fixed a reported problem where a Store to a method argument that 15284contains a reference did not perform the indirect store correctly. 15285This problem was created during the conversion to the new 15286reference object model - the indirect store to a method argument 15287code was not updated to reflect the new model. 15288 15289Reworked the ACPI mode change code to better conform to ACPI 2.0, 15290handle corner cases, and improve code legibility (Kochi Takayoshi) 15291 15292Fixed a problem with the pathname parsing for the carat (^) 15293prefix. The heavy use of the carat operator by the new namepath 15294optimization in the iASL compiler uncovered a problem with the AML 15295interpreter handling of this prefix. In the case where one or 15296more carats precede a single nameseg, the nameseg was treated as 15297standalone and the search rule (to root) was inadvertently 15298applied. This could cause both the iASL compiler and the 15299interpreter to find the wrong object or to miss the error that 15300should occur if the object does not exist at that exact pathname. 15301 15302Found and fixed the problem where the HP Pavilion DSDT would not 15303load. This was a relatively minor tweak to the table loading code 15304(a problem caused by the unexpected encounter with a method 15305invocation not within a control method), but it does not solve the 15306overall issue of the execution of AML code at the table level. 15307This investigation is still ongoing. 15308 15309Code and Data Size: Current core subsystem library sizes are shown 15310below. These are the code and data sizes for the acpica.lib 15311produced by the Microsoft Visual C++ 6.0 compiler, and these 15312values do not include any ACPI driver or OSPM code. The debug 15313version of the code includes the debug output trace mechanism and 15314has a larger code and data size. Note that these values will vary 15315depending on the efficiency of the compiler and the compiler 15316options used during generation. 15317 15318 Previous Release 15319 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 15320 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 15321 Current Release: 15322 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15323 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 15324 15325 153262) Linux 15327 15328Remove redundant slab.h include (Brad Hards) 15329 15330Fix several bugs in thermal.c (Herbert Nachtnebel) 15331 15332Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 15333 15334Change acpi_system_suspend to use updated irq functions (Pavel 15335Machek) 15336 15337Export acpi_get_firmware_table (Matthew Wilcox) 15338 15339Use proper root proc entry for ACPI (Kochi Takayoshi) 15340 15341Fix early-boot table parsing (Bjorn Helgaas) 15342 15343 153443) iASL Compiler/Disassembler 15345 15346Reworked the compiler options to make them more consistent and to 15347use two-letter options where appropriate. We were running out of 15348sensible letters. This may break some makefiles, so check the 15349current options list by invoking the compiler with no parameters. 15350 15351Completed the design and implementation of the ASL namepath 15352optimization option for the compiler. This option optimizes all 15353references to named objects to the shortest possible path. The 15354first attempt tries to utilize a single nameseg (4 characters) and 15355the "search-to-root" algorithm used by the interpreter. If that 15356cannot be used (because either the name is not in the search path 15357or there is a conflict with another object with the same name), 15358the pathname is optimized using the carat prefix (usually a 15359shorter string than specifying the entire path from the root.) 15360 15361Implemented support to obtain the DSDT from the Windows registry 15362(when the disassembly option is specified with no input file). 15363Added this code as the implementation for AcpiOsTableOverride in 15364the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 15365utility) to scan memory for the DSDT to the AcpiOsTableOverride 15366function in the DOS OSL to make the disassembler truly OS 15367independent. 15368 15369Implemented a new option to disassemble and compile in one step. 15370When used without an input filename, this option will grab the 15371DSDT from the local machine, disassemble it, and compile it in one 15372step. 15373 15374Added a warning message for invalid escapes (a backslash followed 15375by any character other than the allowable escapes). This catches 15376the quoted string error "\_SB_" (which should be "\\_SB_" ). 15377 15378Also, there are numerous instances in the ACPI specification where 15379this error occurs. 15380 15381Added a compiler option to disable all optimizations. This is 15382basically the "compatibility mode" because by using this option, 15383the AML code will come out exactly the same as other ASL 15384compilers. 15385 15386Added error messages for incorrectly ordered dependent resource 15387functions. This includes: missing EndDependentFn macro at end of 15388dependent resource list, nested dependent function macros (both 15389start and end), and missing StartDependentFn macro. These are 15390common errors that should be caught at compile time. 15391 15392Implemented _OSI support for the disassembler and compiler. _OSI 15393must be included in the namespace for proper disassembly (because 15394the disassembler must know the number of arguments.) 15395 15396Added an "optimization" message type that is optional (off by 15397default). This message is used for all optimizations - including 15398constant folding, integer optimization, and namepath optimization. 15399 15400---------------------------------------- 1540125 July 2002. Summary of changes for this release. 15402 15403 154041) ACPI CA Core Subsystem Version 20020725: 15405 15406The AML Disassembler has been enhanced to produce compilable ASL 15407code and has been integrated into the iASL compiler (see below) as 15408well as the single-step disassembly for the AML debugger and the 15409disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 15410resource templates and macros are fully supported. The 15411disassembler has been tested on over 30 different AML files, 15412producing identical AML when the resulting disassembled ASL file 15413is recompiled with the same ASL compiler. 15414 15415Modified the Resource Manager to allow zero interrupts and zero 15416dma channels during the GetCurrentResources call. This was 15417causing problems on some platforms. 15418 15419Added the AcpiOsRedirectOutput interface to the OSL to simplify 15420output redirection for the AcpiOsPrintf and AcpiOsVprintf 15421interfaces. 15422 15423Code and Data Size: Current core subsystem library sizes are shown 15424below. These are the code and data sizes for the acpica.lib 15425produced by the Microsoft Visual C++ 6.0 compiler, and these 15426values do not include any ACPI driver or OSPM code. The debug 15427version of the code includes the debug output trace mechanism and 15428has a larger code and data size. Note that these values will vary 15429depending on the efficiency of the compiler and the compiler 15430options used during generation. 15431 15432 Previous Release 15433 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 15434 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 15435 Current Release: 15436 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 15437 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 15438 15439 154402) Linux 15441 15442Fixed a panic in the EC driver (Dominik Brodowski) 15443 15444Implemented checksum of the R/XSDT itself during Linux table scan 15445(Richard Schaal) 15446 15447 154483) iASL compiler 15449 15450The AML disassembler is integrated into the compiler. The "-d" 15451option invokes the disassembler to completely disassemble an 15452input AML file, producing as output a text ASL file with the 15453extension ".dsl" (to avoid name collisions with existing .asl 15454source files.) A future enhancement will allow the disassembler 15455to obtain the BIOS DSDT from the registry under Windows. 15456 15457Fixed a problem with the VendorShort and VendorLong resource 15458descriptors where an invalid AML sequence was created. 15459 15460Implemented a fix for BufferData term in the ASL parser. It was 15461inadvertently defined twice, allowing invalid syntax to pass and 15462causing reduction conflicts. 15463 15464Fixed a problem where the Ones opcode could get converted to a 15465value of zero if "Ones" was used where a byte, word or dword value 15466was expected. The 64-bit value is now truncated to the correct 15467size with the correct value. 15468 15469 15470 15471---------------------------------------- 1547202 July 2002. Summary of changes for this release. 15473 15474 154751) ACPI CA Core Subsystem Version 20020702: 15476 15477The Table Manager code has been restructured to add several new 15478features. Tables that are not required by the core subsystem 15479(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 15480validated in any way and are returned from AcpiGetFirmwareTable if 15481requested. The AcpiOsTableOverride interface is now called for 15482each table that is loaded by the subsystem in order to allow the 15483host to override any table it chooses. Previously, only the DSDT 15484could be overridden. Added one new files, tbrsdt.c and 15485tbgetall.c. 15486 15487Fixed a problem with the conversion of internal package objects to 15488external objects (when a package is returned from a control 15489method.) The return buffer length was set to zero instead of the 15490proper length of the package object. 15491 15492Fixed a reported problem with the use of the RefOf and DeRefOf 15493operators when passing reference arguments to control methods. A 15494new type of Reference object is used internally for references 15495produced by the RefOf operator. 15496 15497Added additional error messages in the Resource Manager to explain 15498AE_BAD_DATA errors when they occur during resource parsing. 15499 15500Split the AcpiEnableSubsystem into two primitives to enable a 15501finer granularity initialization sequence. These two calls should 15502be called in this order: AcpiEnableSubsystem (flags), 15503AcpiInitializeObjects (flags). The flags parameter remains the 15504same. 15505 15506 155072) Linux 15508 15509Updated the ACPI utilities module to understand the new style of 15510fully resolved package objects that are now returned from the core 15511subsystem. This eliminates errors of the form: 15512 15513 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 15514 acpi_utils-0430 [145] acpi_evaluate_reference: 15515 Invalid element in package (not a device reference) 15516 15517The method evaluation utility uses the new buffer allocation 15518scheme instead of calling AcpiEvaluate Object twice. 15519 15520Added support for ECDT. This allows the use of the Embedded 15521 15522Controller before the namespace has been fully initialized, which 15523is necessary for ACPI 2.0 support, and for some laptops to 15524initialize properly. (Laptops using ECDT are still rare, so only 15525limited testing was performed of the added functionality.) 15526 15527Fixed memory leaks in the EC driver. 15528 15529Eliminated a brittle code structure in acpi_bus_init(). 15530 15531Eliminated the acpi_evaluate() helper function in utils.c. It is 15532no longer needed since acpi_evaluate_object can optionally 15533allocate memory for the return object. 15534 15535Implemented fix for keyboard hang when getting battery readings on 15536some systems (Stephen White) 15537 15538PCI IRQ routing update (Dominik Brodowski) 15539 15540Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 15541support 15542 15543---------------------------------------- 1554411 June 2002. Summary of changes for this release. 15545 15546 155471) ACPI CA Core Subsystem Version 20020611: 15548 15549Fixed a reported problem where constants such as Zero and One 15550appearing within _PRT packages were not handled correctly within 15551the resource manager code. Originally reported against the ASL 15552compiler because the code generator now optimizes integers to 15553their minimal AML representation (i.e. AML constants if possible.) 15554The _PRT code now handles all AML constant opcodes correctly 15555(Zero, One, Ones, Revision). 15556 15557Fixed a problem with the Concatenate operator in the AML 15558interpreter where a buffer result object was incorrectly marked as 15559not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 15560 15561All package sub-objects are now fully resolved before they are 15562returned from the external ACPI interfaces. This means that name 15563strings are resolved to object handles, and constant operators 15564(Zero, One, Ones, Revision) are resolved to Integers. 15565 15566Implemented immediate resolution of the AML Constant opcodes 15567(Zero, One, Ones, Revision) to Integer objects upon detection 15568within the AML stream. This has simplified and reduced the 15569generated code size of the subsystem by eliminating about 10 15570switch statements for these constants (which previously were 15571contained in Reference objects.) The complicating issues are that 15572the Zero opcode is used as a "placeholder" for unspecified 15573optional target operands and stores to constants are defined to be 15574no-ops. 15575 15576Code and Data Size: Current core subsystem library sizes are shown 15577below. These are the code and data sizes for the acpica.lib 15578produced by the Microsoft Visual C++ 6.0 compiler, and these 15579values do not include any ACPI driver or OSPM code. The debug 15580version of the code includes the debug output trace mechanism and 15581has a larger code and data size. Note that these values will vary 15582depending on the efficiency of the compiler and the compiler 15583options used during generation. 15584 15585 Previous Release 15586 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 15587 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 15588 Current Release: 15589 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 15590 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 15591 15592 155932) Linux 15594 15595 15596Added preliminary support for obtaining _TRA data for PCI root 15597bridges (Bjorn Helgaas). 15598 15599 156003) iASL Compiler Version X2046: 15601 15602Fixed a problem where the "_DDN" reserved name was defined to be a 15603control method with one argument. There are no arguments, and 15604_DDN does not have to be a control method. 15605 15606Fixed a problem with the Linux version of the compiler where the 15607source lines printed with error messages were the wrong lines. 15608This turned out to be the "LF versus CR/LF" difference between 15609Windows and Unix. This appears to be the longstanding issue 15610concerning listing output and error messages. 15611 15612Fixed a problem with the Linux version of compiler where opcode 15613names within error messages were wrong. This was caused by a 15614slight difference in the output of the Flex tool on Linux versus 15615Windows. 15616 15617Fixed a problem with the Linux compiler where the hex output files 15618contained some garbage data caused by an internal buffer overrun. 15619 15620 15621---------------------------------------- 1562217 May 2002. Summary of changes for this release. 15623 15624 156251) ACPI CA Core Subsystem Version 20020517: 15626 15627Implemented a workaround to an BIOS bug discovered on the HP 15628OmniBook where the FADT revision number and the table size are 15629inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 15630behavior is to fallback to using only the ACPI 1.0 fields of the 15631FADT if the table is too small to be a ACPI 2.0 table as claimed 15632by the revision number. Although this is a BIOS bug, this is a 15633case where the workaround is simple enough and with no side 15634effects, so it seemed prudent to add it. A warning message is 15635issued, however. 15636 15637Implemented minimum size checks for the fixed-length ACPI tables - 15638- the FADT and FACS, as well as consistency checks between the 15639revision number and the table size. 15640 15641Fixed a reported problem in the table override support where the 15642new table pointer was incorrectly treated as a physical address 15643instead of a logical address. 15644 15645Eliminated the use of the AE_AML_ERROR exception and replaced it 15646with more descriptive codes. 15647 15648Fixed a problem where an exception would occur if an ASL Field was 15649defined with no named Field Units underneath it (used by some 15650index fields). 15651 15652Code and Data Size: Current core subsystem library sizes are shown 15653below. These are the code and data sizes for the acpica.lib 15654produced by the Microsoft Visual C++ 6.0 compiler, and these 15655values do not include any ACPI driver or OSPM code. The debug 15656version of the code includes the debug output trace mechanism and 15657has a larger code and data size. Note that these values will vary 15658depending on the efficiency of the compiler and the compiler 15659options used during generation. 15660 15661 Previous Release 15662 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 15663 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 15664 Current Release: 15665 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 15666 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 15667 15668 15669 156702) Linux 15671 15672Much work done on ACPI init (MADT and PCI IRQ routing support). 15673(Paul D. and Dominik Brodowski) 15674 15675Fix PCI IRQ-related panic on boot (Sam Revitch) 15676 15677Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 15678 15679Fix "MHz" typo (Dominik Brodowski) 15680 15681Fix RTC year 2000 issue (Dominik Brodowski) 15682 15683Preclude multiple button proc entries (Eric Brunet) 15684 15685Moved arch-specific code out of include/platform/aclinux.h 15686 156873) iASL Compiler Version X2044: 15688 15689Implemented error checking for the string used in the EISAID macro 15690(Usually used in the definition of the _HID object.) The code now 15691strictly enforces the PnP format - exactly 7 characters, 3 15692uppercase letters and 4 hex digits. 15693 15694If a raw string is used in the definition of the _HID object 15695(instead of the EISAID macro), the string must contain all 15696alphanumeric characters (e.g., "*PNP0011" is not allowed because 15697of the asterisk.) 15698 15699Implemented checking for invalid use of ACPI reserved names for 15700most of the name creation operators (Name, Device, Event, Mutex, 15701OperationRegion, PowerResource, Processor, and ThermalZone.) 15702Previously, this check was only performed for control methods. 15703 15704Implemented an additional check on the Name operator to emit an 15705error if a reserved name that must be implemented in ASL as a 15706control method is used. We know that a reserved name must be a 15707method if it is defined with input arguments. 15708 15709The warning emitted when a namespace object reference is not found 15710during the cross reference phase has been changed into an error. 15711The "External" directive should be used for names defined in other 15712modules. 15713 15714 157154) Tools and Utilities 15716 15717The 16-bit tools (adump16 and aexec16) have been regenerated and 15718tested. 15719 15720Fixed a problem with the output of both acpidump and adump16 where 15721the indentation of closing parentheses and brackets was not 15722 15723aligned properly with the parent block. 15724 15725 15726---------------------------------------- 1572703 May 2002. Summary of changes for this release. 15728 15729 157301) ACPI CA Core Subsystem Version 20020503: 15731 15732Added support a new OSL interface that allows the host operating 15733 15734system software to override the DSDT found in the firmware - 15735AcpiOsTableOverride. With this interface, the OSL can examine the 15736version of the firmware DSDT and replace it with a different one 15737if desired. 15738 15739Added new external interfaces for accessing ACPI registers from 15740device drivers and other system software - AcpiGetRegister and 15741AcpiSetRegister. This was simply an externalization of the 15742existing AcpiHwBitRegister interfaces. 15743 15744Fixed a regression introduced in the previous build where the 15745ASL/AML CreateField operator always returned an error, 15746"destination must be a NS Node". 15747 15748Extended the maximum time (before failure) to successfully enable 15749ACPI mode to 3 seconds. 15750 15751Code and Data Size: Current core subsystem library sizes are shown 15752below. These are the code and data sizes for the acpica.lib 15753produced by the Microsoft Visual C++ 6.0 compiler, and these 15754values do not include any ACPI driver or OSPM code. The debug 15755version of the code includes the debug output trace mechanism and 15756has a larger code and data size. Note that these values will vary 15757depending on the efficiency of the compiler and the compiler 15758options used during generation. 15759 15760 Previous Release 15761 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 15762 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 15763 Current Release: 15764 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 15765 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 15766 15767 157682) Linux 15769 15770Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 15771free. While 3 out of 4 of our in-house systems work fine, the last 15772one still hangs when testing the LAPIC timer. 15773 15774Renamed many files in 2.5 kernel release to omit "acpi_" from the 15775name. 15776 15777Added warning on boot for Presario 711FR. 15778 15779Sleep improvements (Pavel Machek) 15780 15781ACPI can now be built without CONFIG_PCI enabled. 15782 15783IA64: Fixed memory map functions (JI Lee) 15784 15785 157863) iASL Compiler Version X2043: 15787 15788Added support to allow the compiler to be integrated into the MS 15789VC++ development environment for one-button compilation of single 15790files or entire projects -- with error-to-source-line mapping. 15791 15792Implemented support for compile-time constant folding for the 15793Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 15794specification. This allows the ASL writer to use expressions 15795instead of Integer/Buffer/String constants in terms that must 15796evaluate to constants at compile time and will also simplify the 15797emitted AML in any such sub-expressions that can be folded 15798(evaluated at compile-time.) This increases the size of the 15799compiler significantly because a portion of the ACPI CA AML 15800interpreter is included within the compiler in order to pre- 15801evaluate constant expressions. 15802 15803 15804Fixed a problem with the "Unicode" ASL macro that caused the 15805compiler to fault. (This macro is used in conjunction with the 15806_STR reserved name.) 15807 15808Implemented an AML opcode optimization to use the Zero, One, and 15809Ones opcodes where possible to further reduce the size of integer 15810constants and thus reduce the overall size of the generated AML 15811code. 15812 15813Implemented error checking for new reserved terms for ACPI version 158142.0A. 15815 15816Implemented the -qr option to display the current list of ACPI 15817reserved names known to the compiler. 15818 15819Implemented the -qc option to display the current list of ASL 15820operators that are allowed within constant expressions and can 15821therefore be folded at compile time if the operands are constants. 15822 15823 158244) Documentation 15825 15826Updated the Programmer's Reference for new interfaces, data types, 15827and memory allocation model options. 15828 15829Updated the iASL Compiler User Reference to apply new format and 15830add information about new features and options. 15831 15832---------------------------------------- 1583319 April 2002. Summary of changes for this release. 15834 158351) ACPI CA Core Subsystem Version 20020419: 15836 15837The source code base for the Core Subsystem has been completely 15838cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 15839versions. The Lint option files used are included in the 15840/acpi/generate/lint directory. 15841 15842Implemented enhanced status/error checking across the entire 15843Hardware manager subsystem. Any hardware errors (reported from 15844the OSL) are now bubbled up and will abort a running control 15845method. 15846 15847 15848Fixed a problem where the per-ACPI-table integer width (32 or 64) 15849was stored only with control method nodes, causing a fault when 15850non-control method code was executed during table loading. The 15851solution implemented uses a global variable to indicate table 15852width across the entire ACPI subsystem. Therefore, ACPI CA does 15853not support mixed integer widths across different ACPI tables 15854(DSDT, SSDT). 15855 15856Fixed a problem where NULL extended fields (X fields) in an ACPI 158572.0 ACPI FADT caused the table load to fail. Although the 15858existing ACPI specification is a bit fuzzy on this topic, the new 15859behavior is to fall back on a ACPI 1.0 field if the corresponding 15860ACPI 2.0 X field is zero (even though the table revision indicates 15861a full ACPI 2.0 table.) The ACPI specification will be updated to 15862clarify this issue. 15863 15864Fixed a problem with the SystemMemory operation region handler 15865where memory was always accessed byte-wise even if the AML- 15866specified access width was larger than a byte. This caused 15867problems on systems with memory-mapped I/O. Memory is now 15868accessed with the width specified. On systems that do not support 15869non-aligned transfers, a check is made to guarantee proper address 15870alignment before proceeding in order to avoid an AML-caused 15871alignment fault within the kernel. 15872 15873 15874Fixed a problem with the ExtendedIrq resource where only one byte 15875of the 4-byte Irq field was extracted. 15876 15877Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 15878function was out of date and required a rewrite. 15879 15880Code and Data Size: Current core subsystem library sizes are shown 15881below. These are the code and data sizes for the acpica.lib 15882produced by the Microsoft Visual C++ 6.0 compiler, and these 15883values do not include any ACPI driver or OSPM code. The debug 15884version of the code includes the debug output trace mechanism and 15885has a larger code and data size. Note that these values will vary 15886depending on the efficiency of the compiler and the compiler 15887options used during generation. 15888 15889 Previous Release 15890 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 15891 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 15892 Current Release: 15893 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 15894 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 15895 15896 158972) Linux 15898 15899PCI IRQ routing fixes (Dominik Brodowski) 15900 15901 159023) iASL Compiler Version X2042: 15903 15904Implemented an additional compile-time error check for a field 15905unit whose size + minimum access width would cause a run-time 15906access beyond the end-of-region. Previously, only the field size 15907itself was checked. 15908 15909The Core subsystem and iASL compiler now share a common parse 15910object in preparation for compile-time evaluation of the type 159113/4/5 ASL operators. 15912 15913 15914---------------------------------------- 15915Summary of changes for this release: 03_29_02 15916 159171) ACPI CA Core Subsystem Version 20020329: 15918 15919Implemented support for late evaluation of TermArg operands to 15920Buffer and Package objects. This allows complex expressions to be 15921used in the declarations of these object types. 15922 15923Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 159241.0, if the field was larger than 32 bits, it was returned as a 15925buffer - otherwise it was returned as an integer. In ACPI 2.0, 15926the field is returned as a buffer only if the field is larger than 1592764 bits. The TableRevision is now considered when making this 15928conversion to avoid incompatibility with existing ASL code. 15929 15930Implemented logical addressing for AcpiOsGetRootPointer. This 15931allows an RSDP with either a logical or physical address. With 15932this support, the host OS can now override all ACPI tables with 15933one logical RSDP. Includes implementation of "typed" pointer 15934support to allow a common data type for both physical and logical 15935pointers internally. This required a change to the 15936AcpiOsGetRootPointer interface. 15937 15938Implemented the use of ACPI 2.0 Generic Address Structures for all 15939GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 15940mapped I/O for these ACPI features. 15941 15942Initialization now ignores not only non-required tables (All 15943tables other than the FADT, FACS, DSDT, and SSDTs), but also does 15944not validate the table headers of unrecognized tables. 15945 15946Fixed a problem where a notify handler could only be 15947installed/removed on an object of type Device. All "notify" 15948 15949objects are now supported -- Devices, Processor, Power, and 15950Thermal. 15951 15952Removed most verbosity from the ACPI_DB_INFO debug level. Only 15953critical information is returned when this debug level is enabled. 15954 15955Code and Data Size: Current core subsystem library sizes are shown 15956below. These are the code and data sizes for the acpica.lib 15957produced by the Microsoft Visual C++ 6.0 compiler, and these 15958values do not include any ACPI driver or OSPM code. The debug 15959version of the code includes the debug output trace mechanism and 15960has a larger code and data size. Note that these values will vary 15961depending on the efficiency of the compiler and the compiler 15962options used during generation. 15963 15964 Previous Release 15965 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 15966 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 15967 Current Release: 15968 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 15969 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 15970 15971 159722) Linux: 15973 15974The processor driver (acpi_processor.c) now fully supports ACPI 159752.0-based processor performance control (e.g. Intel(R) 15976SpeedStep(TM) technology) Note that older laptops that only have 15977the Intel "applet" interface are not supported through this. The 15978'limit' and 'performance' interface (/proc) are fully functional. 15979[Note that basic policy for controlling performance state 15980transitions will be included in the next version of ospmd.] The 15981idle handler was modified to more aggressively use C2, and PIIX4 15982errata handling underwent a complete overhaul (big thanks to 15983Dominik Brodowski). 15984 15985Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 15986based devices in the ACPI namespace are now dynamically bound 15987(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 15988This allows, among other things, ACPI to resolve bus numbers for 15989subordinate PCI bridges. 15990 15991Enhanced PCI IRQ routing to get the proper bus number for _PRT 15992entries defined underneath PCI bridges. 15993 15994Added IBM 600E to bad bios list due to invalid _ADR value for 15995PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 15996 15997In the process of adding full MADT support (e.g. IOAPIC) for IA32 15998(acpi.c, mpparse.c) -- stay tuned. 15999 16000Added back visual differentiation between fixed-feature and 16001control-method buttons in dmesg. Buttons are also subtyped (e.g. 16002button/power/PWRF) to simplify button identification. 16003 16004We no longer use -Wno-unused when compiling debug. Please ignore 16005any "_THIS_MODULE defined but not used" messages. 16006 16007Can now shut down the system using "magic sysrq" key. 16008 16009 160103) iASL Compiler version 2041: 16011 16012Fixed a problem where conversion errors for hex/octal/decimal 16013constants were not reported. 16014 16015Implemented a fix for the General Register template Address field. 16016This field was 8 bits when it should be 64. 16017 16018Fixed a problem where errors/warnings were no longer being emitted 16019within the listing output file. 16020 16021Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 16022exactly 4 characters, alphanumeric only. 16023 16024 16025 16026 16027---------------------------------------- 16028Summary of changes for this release: 03_08_02 16029 16030 160311) ACPI CA Core Subsystem Version 20020308: 16032 16033Fixed a problem with AML Fields where the use of the "AccessAny" 16034keyword could cause an interpreter error due to attempting to read 16035or write beyond the end of the parent Operation Region. 16036 16037Fixed a problem in the SystemMemory Operation Region handler where 16038an attempt was made to map memory beyond the end of the region. 16039This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 16040errors on some Linux systems. 16041 16042Fixed a problem where the interpreter/namespace "search to root" 16043algorithm was not functioning for some object types. Relaxed the 16044internal restriction on the search to allow upsearches for all 16045external object types as well as most internal types. 16046 16047 160482) Linux: 16049 16050We now use safe_halt() macro versus individual calls to sti | hlt. 16051 16052Writing to the processor limit interface should now work. "echo 1" 16053will increase the limit, 2 will decrease, and 0 will reset to the 16054 16055default. 16056 16057 160583) ASL compiler: 16059 16060Fixed segfault on Linux version. 16061 16062 16063---------------------------------------- 16064Summary of changes for this release: 02_25_02 16065 160661) ACPI CA Core Subsystem: 16067 16068 16069Fixed a problem where the GPE bit masks were not initialized 16070properly, causing erratic GPE behavior. 16071 16072Implemented limited support for multiple calling conventions. The 16073code can be generated with either the VPL (variable parameter 16074list, or "C") convention, or the FPL (fixed parameter list, or 16075"Pascal") convention. The core subsystem is about 3.4% smaller 16076when generated with FPL. 16077 16078 160792) Linux 16080 16081Re-add some /proc/acpi/event functionality that was lost during 16082the rewrite 16083 16084Resolved issue with /proc events for fixed-feature buttons showing 16085up as the system device. 16086 16087Fixed checks on C2/C3 latencies to be inclusive of maximum values. 16088 16089Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 16090 16091Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 16092 16093Fixed limit interface & usage to fix bugs with passive cooling 16094hysterisis. 16095 16096Restructured PRT support. 16097 16098 16099---------------------------------------- 16100Summary of changes for this label: 02_14_02 16101 16102 161031) ACPI CA Core Subsystem: 16104 16105Implemented support in AcpiLoadTable to allow loading of FACS and 16106FADT tables. 16107 16108Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 16109been removed. All 64-bit platforms should be migrated to the ACPI 161102.0 tables. The actbl71.h header has been removed from the source 16111tree. 16112 16113All C macros defined within the subsystem have been prefixed with 16114"ACPI_" to avoid collision with other system include files. 16115 16116Removed the return value for the two AcpiOsPrint interfaces, since 16117it is never used and causes lint warnings for ignoring the return 16118value. 16119 16120Added error checking to all internal mutex acquire and release 16121calls. Although a failure from one of these interfaces is 16122probably a fatal system error, these checks will cause the 16123immediate abort of the currently executing method or interface. 16124 16125Fixed a problem where the AcpiSetCurrentResources interface could 16126fault. This was a side effect of the deployment of the new memory 16127allocation model. 16128 16129Fixed a couple of problems with the Global Lock support introduced 16130in the last major build. The "common" (1.0/2.0) internal FACS was 16131being overwritten with the FACS signature and clobbering the 16132Global Lock pointer. Also, the actual firmware FACS was being 16133unmapped after construction of the "common" FACS, preventing 16134access to the actual Global Lock field within it. The "common" 16135internal FACS is no longer installed as an actual ACPI table; it 16136is used simply as a global. 16137 16138Code and Data Size: Current core subsystem library sizes are shown 16139below. These are the code and data sizes for the acpica.lib 16140produced by the Microsoft Visual C++ 6.0 compiler, and these 16141values do not include any ACPI driver or OSPM code. The debug 16142version of the code includes the debug output trace mechanism and 16143has a larger code and data size. Note that these values will vary 16144depending on the efficiency of the compiler and the compiler 16145options used during generation. 16146 16147 Previous Release (02_07_01) 16148 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 16149 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 16150 Current Release: 16151 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 16152 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 16153 16154 161552) Linux 16156 16157Updated Linux-specific code for core macro and OSL interface 16158changes described above. 16159 16160Improved /proc/acpi/event. It now can be opened only once and has 16161proper poll functionality. 16162 16163Fixed and restructured power management (acpi_bus). 16164 16165Only create /proc "view by type" when devices of that class exist. 16166 16167Fixed "charging/discharging" bug (and others) in acpi_battery. 16168 16169Improved thermal zone code. 16170 16171 161723) ASL Compiler, version X2039: 16173 16174 16175Implemented the new compiler restriction on ASL String hex/octal 16176escapes to non-null, ASCII values. An error results if an invalid 16177value is used. (This will require an ACPI 2.0 specification 16178change.) 16179 16180AML object labels that are output to the optional C and ASM source 16181are now prefixed with both the ACPI table signature and table ID 16182to help guarantee uniqueness within a large BIOS project. 16183 16184 16185---------------------------------------- 16186Summary of changes for this label: 02_01_02 16187 161881) ACPI CA Core Subsystem: 16189 16190ACPI 2.0 support is complete in the entire Core Subsystem and the 16191ASL compiler. All new ACPI 2.0 operators are implemented and all 16192other changes for ACPI 2.0 support are complete. With 16193simultaneous code and data optimizations throughout the subsystem, 16194ACPI 2.0 support has been implemented with almost no additional 16195cost in terms of code and data size. 16196 16197Implemented a new mechanism for allocation of return buffers. If 16198the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 16199be allocated on behalf of the caller. Consolidated all return 16200buffer validation and allocation to a common procedure. Return 16201buffers will be allocated via the primary OSL allocation interface 16202since it appears that a separate pool is not needed by most users. 16203If a separate pool is required for these buffers, the caller can 16204still use the original mechanism and pre-allocate the buffer(s). 16205 16206Implemented support for string operands within the DerefOf 16207operator. 16208 16209Restructured the Hardware and Event managers to be table driven, 16210simplifying the source code and reducing the amount of generated 16211code. 16212 16213Split the common read/write low-level ACPI register bitfield 16214procedure into a separate read and write, simplifying the code 16215considerably. 16216 16217Obsoleted the AcpiOsCallocate OSL interface. This interface was 16218used only a handful of times and didn't have enough critical mass 16219for a separate interface. Replaced with a common calloc procedure 16220in the core. 16221 16222Fixed a reported problem with the GPE number mapping mechanism 16223that allows GPE1 numbers to be non-contiguous with GPE0. 16224Reorganized the GPE information and shrunk a large array that was 16225originally large enough to hold info for all possible GPEs (256) 16226to simply large enough to hold all GPEs up to the largest GPE 16227number on the machine. 16228 16229Fixed a reported problem with resource structure alignment on 64- 16230bit platforms. 16231 16232Changed the AcpiEnableEvent and AcpiDisableEvent external 16233interfaces to not require any flags for the common case of 16234enabling/disabling a GPE. 16235 16236Implemented support to allow a "Notify" on a Processor object. 16237 16238Most TBDs in comments within the source code have been resolved 16239and eliminated. 16240 16241 16242Fixed a problem in the interpreter where a standalone parent 16243prefix (^) was not handled correctly in the interpreter and 16244debugger. 16245 16246Removed obsolete and unnecessary GPE save/restore code. 16247 16248Implemented Field support in the ASL Load operator. This allows a 16249table to be loaded from a named field, in addition to loading a 16250table directly from an Operation Region. 16251 16252Implemented timeout and handle support in the external Global Lock 16253interfaces. 16254 16255Fixed a problem in the AcpiDump utility where pathnames were no 16256longer being generated correctly during the dump of named objects. 16257 16258Modified the AML debugger to give a full display of if/while 16259predicates instead of just one AML opcode at a time. (The 16260predicate can have several nested ASL statements.) The old method 16261was confusing during single stepping. 16262 16263Code and Data Size: Current core subsystem library sizes are shown 16264below. These are the code and data sizes for the acpica.lib 16265produced by the Microsoft Visual C++ 6.0 compiler, and these 16266values do not include any ACPI driver or OSPM code. The debug 16267version of the code includes the debug output trace mechanism and 16268has a larger code and data size. Note that these values will vary 16269depending on the efficiency of the compiler and the compiler 16270options used during generation. 16271 16272 Previous Release (12_18_01) 16273 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 16274 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 16275 Current Release: 16276 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 16277 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 16278 162792) Linux 16280 16281 Implemented fix for PIIX reverse throttling errata (Processor 16282driver) 16283 16284Added new Limit interface (Processor and Thermal drivers) 16285 16286New thermal policy (Thermal driver) 16287 16288Many updates to /proc 16289 16290Battery "low" event support (Battery driver) 16291 16292Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 16293 16294IA32 - IA64 initialization unification, no longer experimental 16295 16296Menuconfig options redesigned 16297 162983) ASL Compiler, version X2037: 16299 16300Implemented several new output features to simplify integration of 16301AML code into firmware: 1) Output the AML in C source code with 16302labels for each named ASL object. The original ASL source code 16303is interleaved as C comments. 2) Output the AML in ASM source code 16304with labels and interleaved ASL source. 3) Output the AML in 16305raw hex table form, in either C or ASM. 16306 16307Implemented support for optional string parameters to the 16308LoadTable operator. 16309 16310Completed support for embedded escape sequences within string 16311literals. The compiler now supports all single character escapes 16312as well as the Octal and Hex escapes. Note: the insertion of a 16313null byte into a string literal (via the hex/octal escape) causes 16314the string to be immediately terminated. A warning is issued. 16315 16316Fixed a problem where incorrect AML was generated for the case 16317where an ASL namepath consists of a single parent prefix ( 16318 16319) with no trailing name segments. 16320 16321The compiler has been successfully generated with a 64-bit C 16322compiler. 16323 16324 16325 16326 16327---------------------------------------- 16328Summary of changes for this label: 12_18_01 16329 163301) Linux 16331 16332Enhanced blacklist with reason and severity fields. Any table's 16333signature may now be used to identify a blacklisted system. 16334 16335Call _PIC control method to inform the firmware which interrupt 16336model the OS is using. Turn on any disabled link devices. 16337 16338Cleaned up busmgr /proc error handling (Andreas Dilger) 16339 16340 2) ACPI CA Core Subsystem: 16341 16342Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 16343while loop) 16344 16345Completed implementation of the ACPI 2.0 "Continue", 16346"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 16347operators. All new ACPI 2.0 operators are now implemented in both 16348the ASL compiler and the AML interpreter. The only remaining ACPI 163492.0 task is support for the String data type in the DerefOf 16350operator. Fixed a problem with AcquireMutex where the status code 16351was lost if the caller had to actually wait for the mutex. 16352 16353Increased the maximum ASL Field size from 64K bits to 4G bits. 16354 16355Completed implementation of the external Global Lock interfaces -- 16356AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 16357Handler parameters were added. 16358 16359Completed another pass at removing warnings and issues when 16360compiling with 64-bit compilers. The code now compiles cleanly 16361with the Intel 64-bit C/C++ compiler. Most notably, the pointer 16362add and subtract (diff) macros have changed considerably. 16363 16364 16365Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1636664-bit platforms, 32-bits on all others. This type is used 16367wherever memory allocation and/or the C sizeof() operator is used, 16368and affects the OSL memory allocation interfaces AcpiOsAllocate 16369and AcpiOsCallocate. 16370 16371Implemented sticky user breakpoints in the AML debugger. 16372 16373Code and Data Size: Current core subsystem library sizes are shown 16374below. These are the code and data sizes for the acpica.lib 16375produced by the Microsoft Visual C++ 6.0 compiler, and these 16376values do not include any ACPI driver or OSPM code. The debug 16377version of the code includes the debug output trace mechanism and 16378has a larger code and data size. Note that these values will vary 16379depending on the efficiency of the compiler and the compiler 16380options used during generation. 16381 16382 Previous Release (12_05_01) 16383 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 16384 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 16385 Current Release: 16386 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 16387 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 16388 16389 3) ASL Compiler, version X2034: 16390 16391Now checks for (and generates an error if detected) the use of a 16392Break or Continue statement without an enclosing While statement. 16393 16394 16395Successfully generated the compiler with the Intel 64-bit C 16396compiler. 16397 16398 ---------------------------------------- 16399Summary of changes for this label: 12_05_01 16400 16401 1) ACPI CA Core Subsystem: 16402 16403The ACPI 2.0 CopyObject operator is fully implemented. This 16404operator creates a new copy of an object (and is also used to 16405bypass the "implicit conversion" mechanism of the Store operator.) 16406 16407The ACPI 2.0 semantics for the SizeOf operator are fully 16408implemented. The change is that performing a SizeOf on a 16409reference object causes an automatic dereference of the object to 16410tha actual value before the size is evaluated. This behavior was 16411undefined in ACPI 1.0. 16412 16413The ACPI 2.0 semantics for the Extended IRQ resource descriptor 16414have been implemented. The interrupt polarity and mode are now 16415independently set. 16416 16417Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 16418appearing in Package objects were not properly converted to 16419integers when the internal Package was converted to an external 16420object (via the AcpiEvaluateObject interface.) 16421 16422Fixed a problem with the namespace object deletion mechanism for 16423objects created by control methods. There were two parts to this 16424problem: 1) Objects created during the initialization phase method 16425parse were not being deleted, and 2) The object owner ID mechanism 16426to track objects was broken. 16427 16428Fixed a problem where the use of the ASL Scope operator within a 16429control method would result in an invalid opcode exception. 16430 16431Fixed a problem introduced in the previous label where the buffer 16432length required for the _PRT structure was not being returned 16433correctly. 16434 16435Code and Data Size: Current core subsystem library sizes are shown 16436below. These are the code and data sizes for the acpica.lib 16437produced by the Microsoft Visual C++ 6.0 compiler, and these 16438values do not include any ACPI driver or OSPM code. The debug 16439version of the code includes the debug output trace mechanism and 16440has a larger code and data size. Note that these values will vary 16441depending on the efficiency of the compiler and the compiler 16442options used during generation. 16443 16444 Previous Release (11_20_01) 16445 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 16446 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 16447 16448 Current Release: 16449 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 16450 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 16451 16452 2) Linux: 16453 16454Updated all files to apply cleanly against 2.4.16. 16455 16456Added basic PCI Interrupt Routing Table (PRT) support for IA32 16457(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 16458version supports both static and dyanmic PRT entries, but dynamic 16459entries are treated as if they were static (not yet 16460reconfigurable). Architecture- specific code to use this data is 16461absent on IA32 but should be available shortly. 16462 16463Changed the initialization sequence to start the ACPI interpreter 16464(acpi_init) prior to initialization of the PCI driver (pci_init) 16465in init/main.c. This ordering is required to support PRT and 16466facilitate other (future) enhancement. A side effect is that the 16467ACPI bus driver and certain device drivers can no longer be loaded 16468as modules. 16469 16470Modified the 'make menuconfig' options to allow PCI Interrupt 16471Routing support to be included without the ACPI Bus and other 16472device drivers. 16473 16474 3) ASL Compiler, version X2033: 16475 16476Fixed some issues with the use of the new CopyObject and 16477DataTableRegion operators. Both are fully functional. 16478 16479 ---------------------------------------- 16480Summary of changes for this label: 11_20_01 16481 16482 20 November 2001. Summary of changes for this release. 16483 16484 1) ACPI CA Core Subsystem: 16485 16486Updated Index support to match ACPI 2.0 semantics. Storing a 16487Integer, String, or Buffer to an Index of a Buffer will store only 16488the least-significant byte of the source to the Indexed buffer 16489byte. Multiple writes are not performed. 16490 16491Fixed a problem where the access type used in an AccessAs ASL 16492operator was not recorded correctly into the field object. 16493 16494Fixed a problem where ASL Event objects were created in a 16495signalled state. Events are now created in an unsignalled state. 16496 16497The internal object cache is now purged after table loading and 16498initialization to reduce the use of dynamic kernel memory -- on 16499the assumption that object use is greatest during the parse phase 16500of the entire table (versus the run-time use of individual control 16501methods.) 16502 16503ACPI 2.0 variable-length packages are now fully operational. 16504 16505Code and Data Size: Code and Data optimizations have permitted new 16506feature development with an actual reduction in the library size. 16507Current core subsystem library sizes are shown below. These are 16508the code and data sizes for the acpica.lib produced by the 16509Microsoft Visual C++ 6.0 compiler, and these values do not include 16510any ACPI driver or OSPM code. The debug version of the code 16511includes the debug output trace mechanism and has a larger code 16512and data size. Note that these values will vary depending on the 16513efficiency of the compiler and the compiler options used during 16514generation. 16515 16516 Previous Release (11_09_01): 16517 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 16518 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 16519 16520 Current Release: 16521 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 16522 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 16523 16524 2) Linux: 16525 16526Enhanced the ACPI boot-time initialization code to allow the use 16527of Local APIC tables for processor enumeration on IA-32, and to 16528pave the way for a fully MPS-free boot (on SMP systems) in the 16529near future. This functionality replaces 16530arch/i386/kernel/acpitables.c, which was introduced in an earlier 165312.4.15-preX release. To enable this feature you must add 16532"acpi_boot=on" to the kernel command line -- see the help entry 16533for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 16534the works... 16535 16536Restructured the configuration options to allow boot-time table 16537parsing support without inclusion of the ACPI Interpreter (and 16538other) code. 16539 16540NOTE: This release does not include fixes for the reported events, 16541power-down, and thermal passive cooling issues (coming soon). 16542 16543 3) ASL Compiler: 16544 16545Added additional typechecking for Fields within restricted access 16546Operation Regions. All fields within EC and CMOS regions must be 16547declared with ByteAcc. All fields withing SMBus regions must be 16548declared with the BufferAcc access type. 16549 16550Fixed a problem where the listing file output of control methods 16551no longer interleaved the actual AML code with the ASL source 16552code. 16553 16554 16555 16556 16557---------------------------------------- 16558Summary of changes for this label: 11_09_01 16559 165601) ACPI CA Core Subsystem: 16561 16562Implemented ACPI 2.0-defined support for writes to fields with a 16563Buffer, String, or Integer source operand that is smaller than the 16564target field. In these cases, the source operand is zero-extended 16565to fill the target field. 16566 16567Fixed a problem where a Field starting bit offset (within the 16568parent operation region) was calculated incorrectly if the 16569 16570alignment of the field differed from the access width. This 16571affected CreateWordField, CreateDwordField, CreateQwordField, and 16572possibly other fields that use the "AccessAny" keyword. 16573 16574Fixed a problem introduced in the 11_02_01 release where indirect 16575stores through method arguments did not operate correctly. 16576 165772) Linux: 16578 16579Implemented boot-time ACPI table parsing support 16580(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 16581facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 16582legacy BIOS interfaces (e.g. MPS) for the configuration of system 16583processors, memory, and interrupts during setup_arch(). Note that 16584this patch does not include the required architecture-specific 16585changes required to apply this information -- subsequent patches 16586will be posted for both IA32 and IA64 to achieve this. 16587 16588Added low-level sleep support for IA32 platforms, courtesy of Pat 16589Mochel. This allows IA32 systems to transition to/from various 16590sleeping states (e.g. S1, S3), although the lack of a centralized 16591driver model and power-manageable drivers will prevent its 16592(successful) use on most systems. 16593 16594Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 16595submenu, unified IA32 and IA64 options, added new "Boot using ACPI 16596tables" option, etc. 16597 16598Increased the default timeout for the EC driver from 1ms to 10ms 16599(1000 cycles of 10us) to try to address AE_TIME errors during EC 16600transactions. 16601 16602 ---------------------------------------- 16603Summary of changes for this label: 11_02_01 16604 166051) ACPI CA Core Subsystem: 16606 16607ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 16608(QWordAcc keyword). All ACPI 2.0 64-bit support is now 16609implemented. 16610 16611OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 16612changes to support ACPI 2.0 Qword field access. Read/Write 16613PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 16614accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 16615the value parameter for the address space handler interface is now 16616an ACPI_INTEGER. OSL implementations of these interfaces must now 16617handle the case where the Width parameter is 64. 16618 16619Index Fields: Fixed a problem where unaligned bit assembly and 16620disassembly for IndexFields was not supported correctly. 16621 16622Index and Bank Fields: Nested Index and Bank Fields are now 16623supported. During field access, a check is performed to ensure 16624that the value written to an Index or Bank register is not out of 16625the range of the register. The Index (or Bank) register is 16626written before each access to the field data. Future support will 16627include allowing individual IndexFields to be wider than the 16628DataRegister width. 16629 16630Fields: Fixed a problem where the AML interpreter was incorrectly 16631attempting to write beyond the end of a Field/OpRegion. This was 16632a boundary case that occurred when a DWORD field was written to a 16633BYTE access OpRegion, forcing multiple writes and causing the 16634interpreter to write one datum too many. 16635 16636Fields: Fixed a problem with Field/OpRegion access where the 16637starting bit address of a field was incorrectly calculated if the 16638current access type was wider than a byte (WordAcc, DwordAcc, or 16639QwordAcc). 16640 16641Fields: Fixed a problem where forward references to individual 16642FieldUnits (individual Field names within a Field definition) were 16643not resolved during the AML table load. 16644 16645Fields: Fixed a problem where forward references from a Field 16646definition to the parent Operation Region definition were not 16647resolved during the AML table load. 16648 16649Fields: Duplicate FieldUnit names within a scope are now detected 16650during AML table load. 16651 16652Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 16653returned an incorrect name for the root node. 16654 16655Code and Data Size: Code and Data optimizations have permitted new 16656feature development with an actual reduction in the library size. 16657Current core subsystem library sizes are shown below. These are 16658the code and data sizes for the acpica.lib produced by the 16659Microsoft Visual C++ 6.0 compiler, and these values do not include 16660any ACPI driver or OSPM code. The debug version of the code 16661includes the debug output trace mechanism and has a larger code 16662and data size. Note that these values will vary depending on the 16663efficiency of the compiler and the compiler options used during 16664generation. 16665 16666 Previous Release (10_18_01): 16667 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 16668 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 16669 16670 Current Release: 16671 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 16672 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 16673 16674 2) Linux: 16675 16676Improved /proc processor output (Pavel Machek) Re-added 16677MODULE_LICENSE("GPL") to all modules. 16678 16679 3) ASL Compiler version X2030: 16680 16681Duplicate FieldUnit names within a scope are now detected and 16682flagged as errors. 16683 16684 4) Documentation: 16685 16686Programmer Reference updated to reflect OSL and address space 16687handler interface changes described above. 16688 16689---------------------------------------- 16690Summary of changes for this label: 10_18_01 16691 16692ACPI CA Core Subsystem: 16693 16694Fixed a problem with the internal object reference count mechanism 16695that occasionally caused premature object deletion. This resolves 16696all of the outstanding problem reports where an object is deleted 16697in the middle of an interpreter evaluation. Although this problem 16698only showed up in rather obscure cases, the solution to the 16699problem involved an adjustment of all reference counts involving 16700objects attached to namespace nodes. 16701 16702Fixed a problem with Field support in the interpreter where 16703writing to an aligned field whose length is an exact multiple (2 16704or greater) of the field access granularity would cause an attempt 16705to write beyond the end of the field. 16706 16707The top level AML opcode execution functions within the 16708interpreter have been renamed with a more meaningful and 16709consistent naming convention. The modules exmonad.c and 16710exdyadic.c were eliminated. New modules are exoparg1.c, 16711exoparg2.c, exoparg3.c, and exoparg6.c. 16712 16713Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 16714 16715Fixed a problem where the AML debugger was causing some internal 16716objects to not be deleted during subsystem termination. 16717 16718Fixed a problem with the external AcpiEvaluateObject interface 16719where the subsystem would fault if the named object to be 16720evaluated refered to a constant such as Zero, Ones, etc. 16721 16722Fixed a problem with IndexFields and BankFields where the 16723subsystem would fault if the index, data, or bank registers were 16724not defined in the same scope as the field itself. 16725 16726Added printf format string checking for compilers that support 16727this feature. Corrected more than 50 instances of issues with 16728format specifiers within invocations of ACPI_DEBUG_PRINT 16729throughout the core subsystem code. 16730 16731The ASL "Revision" operator now returns the ACPI support level 16732implemented in the core - the value "2" since the ACPI 2.0 support 16733is more than 50% implemented. 16734 16735Enhanced the output of the AML debugger "dump namespace" command 16736to output in a more human-readable form. 16737 16738Current core subsystem library code sizes are shown below. These 16739 16740are the code and data sizes for the acpica.lib produced by the 16741Microsoft Visual C++ 6.0 compiler, and these values do not include 16742any ACPI driver or OSPM code. The debug version of the code 16743includes the full debug trace mechanism -- leading to a much 16744 16745larger code and data size. Note that these values will vary 16746depending on the efficiency of the compiler and the compiler 16747options used during generation. 16748 16749 Previous Label (09_20_01): 16750 Non-Debug Version: 65K Code, 5K Data, 70K Total 16751 Debug Version: 138K Code, 58K Data, 196K Total 16752 16753 This Label: 16754 16755 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 16756 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 16757 16758Linux: 16759 16760Implemented a "Bad BIOS Blacklist" to track machines that have 16761known ASL/AML problems. 16762 16763Enhanced the /proc interface for the thermal zone driver and added 16764support for _HOT (the critical suspend trip point). The 'info' 16765file now includes threshold/policy information, and allows setting 16766of _SCP (cooling preference) and _TZP (polling frequency) values 16767to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 16768frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 16769preference to the passive/quiet mode (if supported by the ASL). 16770 16771Implemented a workaround for a gcc bug that resuted in an OOPs 16772when loading the control method battery driver. 16773 16774 ---------------------------------------- 16775Summary of changes for this label: 09_20_01 16776 16777 ACPI CA Core Subsystem: 16778 16779The AcpiEnableEvent and AcpiDisableEvent interfaces have been 16780modified to allow individual GPE levels to be flagged as wake- 16781enabled (i.e., these GPEs are to remain enabled when the platform 16782sleeps.) 16783 16784The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 16785support wake-enabled GPEs. This means that upon entering the 16786sleep state, all GPEs that are not wake-enabled are disabled. 16787When leaving the sleep state, these GPEs are reenabled. 16788 16789A local double-precision divide/modulo module has been added to 16790enhance portability to OS kernels where a 64-bit math library is 16791not available. The new module is "utmath.c". 16792 16793Several optimizations have been made to reduce the use of CPU 16794stack. Originally over 2K, the maximum stack usage is now below 167952K at 1860 bytes (1.82k) 16796 16797Fixed a problem with the AcpiGetFirmwareTable interface where the 16798root table pointer was not mapped into a logical address properly. 16799 16800Fixed a problem where a NULL pointer was being dereferenced in the 16801interpreter code for the ASL Notify operator. 16802 16803Fixed a problem where the use of the ASL Revision operator 16804returned an error. This operator now returns the current version 16805of the ACPI CA core subsystem. 16806 16807Fixed a problem where objects passed as control method parameters 16808to AcpiEvaluateObject were always deleted at method termination. 16809However, these objects may end up being stored into the namespace 16810by the called method. The object reference count mechanism was 16811applied to these objects instead of a force delete. 16812 16813Fixed a problem where static strings or buffers (contained in the 16814AML code) that are declared as package elements within the ASL 16815code could cause a fault because the interpreter would attempt to 16816delete them. These objects are now marked with the "static 16817object" flag to prevent any attempt to delete them. 16818 16819Implemented an interpreter optimization to use operands directly 16820from the state object instead of extracting the operands to local 16821variables. This reduces stack use and code size, and improves 16822performance. 16823 16824The module exxface.c was eliminated as it was an unnecessary extra 16825layer of code. 16826 16827Current core subsystem library code sizes are shown below. These 16828are the code and data sizes for the acpica.lib produced by the 16829Microsoft Visual C++ 6.0 compiler, and these values do not include 16830any ACPI driver or OSPM code. The debug version of the code 16831includes the full debug trace mechanism -- leading to a much 16832larger code and data size. Note that these values will vary 16833depending on the efficiency of the compiler and the compiler 16834options used during generation. 16835 16836 Non-Debug Version: 65K Code, 5K Data, 70K Total 16837(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 16838Total (Previously 195K) 16839 16840Linux: 16841 16842Support for ACPI 2.0 64-bit integers has been added. All ACPI 16843Integer objects are now 64 bits wide 16844 16845All Acpi data types and structures are now in lower case. Only 16846Acpi macros are upper case for differentiation. 16847 16848 Documentation: 16849 16850Changes to the external interfaces as described above. 16851 16852 ---------------------------------------- 16853Summary of changes for this label: 08_31_01 16854 16855 ACPI CA Core Subsystem: 16856 16857A bug with interpreter implementation of the ASL Divide operator 16858was found and fixed. The implicit function return value (not the 16859explicit store operands) was returning the remainder instead of 16860the quotient. This was a longstanding bug and it fixes several 16861known outstanding issues on various platforms. 16862 16863The ACPI_DEBUG_PRINT and function trace entry/exit macros have 16864been further optimized for size. There are 700 invocations of the 16865DEBUG_PRINT macro alone, so each optimization reduces the size of 16866the debug version of the subsystem significantly. 16867 16868A stack trace mechanism has been implemented. The maximum stack 16869usage is about 2K on 32-bit platforms. The debugger command "stat 16870stack" will display the current maximum stack usage. 16871 16872All public symbols and global variables within the subsystem are 16873now prefixed with the string "Acpi". This keeps all of the 16874symbols grouped together in a kernel map, and avoids conflicts 16875with other kernel subsystems. 16876 16877Most of the internal fixed lookup tables have been moved into the 16878code segment via the const operator. 16879 16880Several enhancements have been made to the interpreter to both 16881reduce the code size and improve performance. 16882 16883Current core subsystem library code sizes are shown below. These 16884are the code and data sizes for the acpica.lib produced by the 16885Microsoft Visual C++ 6.0 compiler, and these values do not include 16886any ACPI driver or OSPM code. The debug version of the code 16887includes the full debug trace mechanism which contains over 700 16888invocations of the DEBUG_PRINT macro, 500 function entry macro 16889invocations, and over 900 function exit macro invocations -- 16890leading to a much larger code and data size. Note that these 16891values will vary depending on the efficiency of the compiler and 16892the compiler options used during generation. 16893 16894 Non-Debug Version: 64K Code, 5K Data, 69K Total 16895Debug Version: 137K Code, 58K Data, 195K Total 16896 16897 Linux: 16898 16899Implemented wbinvd() macro, pending a kernel-wide definition. 16900 16901Fixed /proc/acpi/event to handle poll() and short reads. 16902 16903 ASL Compiler, version X2026: 16904 16905Fixed a problem introduced in the previous label where the AML 16906 16907code emitted for package objects produced packages with zero 16908length. 16909 16910 ---------------------------------------- 16911Summary of changes for this label: 08_16_01 16912 16913ACPI CA Core Subsystem: 16914 16915The following ACPI 2.0 ASL operators have been implemented in the 16916AML interpreter (These are already supported by the Intel ASL 16917compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 16918ToBuffer. Support for 64-bit AML constants is implemented in the 16919AML parser, debugger, and disassembler. 16920 16921The internal memory tracking mechanism (leak detection code) has 16922been upgraded to reduce the memory overhead (a separate tracking 16923block is no longer allocated for each memory allocation), and now 16924supports all of the internal object caches. 16925 16926The data structures and code for the internal object caches have 16927been coelesced and optimized so that there is a single cache and 16928memory list data structure and a single group of functions that 16929implement generic cache management. This has reduced the code 16930size in both the debug and release versions of the subsystem. 16931 16932The DEBUG_PRINT macro(s) have been optimized for size and replaced 16933by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 16934different, because it generates a single call to an internal 16935function. This results in a savings of about 90 bytes per 16936invocation, resulting in an overall code and data savings of about 1693716% in the debug version of the subsystem. 16938 16939 Linux: 16940 16941Fixed C3 disk corruption problems and re-enabled C3 on supporting 16942machines. 16943 16944Integrated low-level sleep code by Patrick Mochel. 16945 16946Further tweaked source code Linuxization. 16947 16948Other minor fixes. 16949 16950 ASL Compiler: 16951 16952Support for ACPI 2.0 variable length packages is fixed/completed. 16953 16954Fixed a problem where the optional length parameter for the ACPI 169552.0 ToString operator. 16956 16957Fixed multiple extraneous error messages when a syntax error is 16958detected within the declaration line of a control method. 16959 16960 ---------------------------------------- 16961Summary of changes for this label: 07_17_01 16962 16963ACPI CA Core Subsystem: 16964 16965Added a new interface named AcpiGetFirmwareTable to obtain any 16966ACPI table via the ACPI signature. The interface can be called at 16967any time during kernel initialization, even before the kernel 16968virtual memory manager is initialized and paging is enabled. This 16969allows kernel subsystems to obtain ACPI tables very early, even 16970before the ACPI CA subsystem is initialized. 16971 16972Fixed a problem where Fields defined with the AnyAcc attribute 16973could be resolved to the incorrect address under the following 16974conditions: 1) the field width is larger than 8 bits and 2) the 16975parent operation region is not defined on a DWORD boundary. 16976 16977Fixed a problem where the interpreter is not being locked during 16978namespace initialization (during execution of the _INI control 16979methods), causing an error when an attempt is made to release it 16980later. 16981 16982ACPI 2.0 support in the AML Interpreter has begun and will be 16983ongoing throughout the rest of this year. In this label, The Mod 16984operator is implemented. 16985 16986Added a new data type to contain full PCI addresses named 16987ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 16988and Function values. 16989 16990 Linux: 16991 16992Enhanced the Linux version of the source code to change most 16993capitalized ACPI type names to lowercase. For example, all 16994instances of ACPI_STATUS are changed to acpi_status. This will 16995result in a large diff, but the change is strictly cosmetic and 16996aligns the CA code closer to the Linux coding standard. 16997 16998OSL Interfaces: 16999 17000The interfaces to the PCI configuration space have been changed to 17001add the PCI Segment number and to split the single 32-bit combined 17002DeviceFunction field into two 16-bit fields. This was 17003accomplished by moving the four values that define an address in 17004PCI configuration space (segment, bus, device, and function) to 17005the new ACPI_PCI_ID structure. 17006 17007The changes to the PCI configuration space interfaces led to a 17008reexamination of the complete set of address space access 17009interfaces for PCI, I/O, and Memory. The previously existing 18 17010interfaces have proven difficult to maintain (any small change 17011must be propagated across at least 6 interfaces) and do not easily 17012allow for future expansion to 64 bits if necessary. Also, on some 17013systems, it would not be appropriate to demultiplex the access 17014width (8, 16, 32,or 64) before calling the OSL if the 17015corresponding native OS interfaces contain a similar access width 17016parameter. For these reasons, the 18 address space interfaces 17017have been replaced by these 6 new ones: 17018 17019AcpiOsReadPciConfiguration 17020AcpiOsWritePciConfiguration 17021AcpiOsReadMemory 17022AcpiOsWriteMemory 17023AcpiOsReadPort 17024AcpiOsWritePort 17025 17026Added a new interface named AcpiOsGetRootPointer to allow the OSL 17027to perform the platform and/or OS-specific actions necessary to 17028obtain the ACPI RSDP table pointer. On IA-32 platforms, this 17029interface will simply call down to the CA core to perform the low- 17030memory search for the table. On IA-64, the RSDP is obtained from 17031EFI. Migrating this interface to the OSL allows the CA core to 17032 17033remain OS and platform independent. 17034 17035Added a new interface named AcpiOsSignal to provide a generic 17036"function code and pointer" interface for various miscellaneous 17037signals and notifications that must be made to the host OS. The 17038first such signals are intended to support the ASL Fatal and 17039Breakpoint operators. In the latter case, the AcpiOsBreakpoint 17040interface has been obsoleted. 17041 17042The definition of the AcpiFormatException interface has been 17043changed to simplify its use. The caller no longer must supply a 17044buffer to the call; A pointer to a const string is now returned 17045directly. This allows the call to be easily used in printf 17046statements, etc. since the caller does not have to manage a local 17047buffer. 17048 17049 17050 ASL Compiler, Version X2025: 17051 17052The ACPI 2.0 Switch/Case/Default operators have been implemented 17053and are fully functional. They will work with all ACPI 1.0 17054interpreters, since the operators are simply translated to If/Else 17055pairs. 17056 17057The ACPI 2.0 ElseIf operator is implemented and will also work 17058with 1.0 interpreters, for the same reason. 17059 17060Implemented support for ACPI 2.0 variable-length packages. These 17061packages have a separate opcode, and their size is determined by 17062the interpreter at run-time. 17063 17064Documentation The ACPI CA Programmer Reference has been updated to 17065reflect the new interfaces and changes to existing interfaces. 17066 17067 ------------------------------------------ 17068Summary of changes for this label: 06_15_01 17069 17070 ACPI CA Core Subsystem: 17071 17072Fixed a problem where a DWORD-accessed field within a Buffer 17073object would get its byte address inadvertently rounded down to 17074the nearest DWORD. Buffers are always Byte-accessible. 17075 17076 ASL Compiler, version X2024: 17077 17078Fixed a problem where the Switch() operator would either fault or 17079hang the compiler. Note however, that the AML code for this ACPI 170802.0 operator is not yet implemented. 17081 17082Compiler uses the new AcpiOsGetTimer interface to obtain compile 17083timings. 17084 17085Implementation of the CreateField operator automatically converts 17086a reference to a named field within a resource descriptor from a 17087byte offset to a bit offset if required. 17088 17089Added some missing named fields from the resource descriptor 17090support. These are the names that are automatically created by the 17091compiler to reference fields within a descriptor. They are only 17092valid at compile time and are not passed through to the AML 17093interpreter. 17094 17095Resource descriptor named fields are now typed as Integers and 17096subject to compile-time typechecking when used in expressions. 17097 17098 ------------------------------------------ 17099Summary of changes for this label: 05_18_01 17100 17101 ACPI CA Core Subsystem: 17102 17103Fixed a couple of problems in the Field support code where bits 17104from adjacent fields could be returned along with the proper field 17105bits. Restructured the field support code to improve performance, 17106readability and maintainability. 17107 17108New DEBUG_PRINTP macro automatically inserts the procedure name 17109into the output, saving hundreds of copies of procedure name 17110strings within the source, shrinking the memory footprint of the 17111debug version of the core subsystem. 17112 17113 Source Code Structure: 17114 17115The source code directory tree was restructured to reflect the 17116current organization of the component architecture. Some files 17117and directories have been moved and/or renamed. 17118 17119 Linux: 17120 17121Fixed leaking kacpidpc processes. 17122 17123Fixed queueing event data even when /proc/acpi/event is not 17124opened. 17125 17126 ASL Compiler, version X2020: 17127 17128Memory allocation performance enhancement - over 24X compile time 17129improvement on large ASL files. Parse nodes and namestring 17130buffers are now allocated from a large internal compiler buffer. 17131 17132The temporary .SRC file is deleted unless the "-s" option is 17133specified 17134 17135The "-d" debug output option now sends all output to the .DBG file 17136instead of the console. 17137 17138"External" second parameter is now optional 17139 17140"ElseIf" syntax now properly allows the predicate 17141 17142Last operand to "Load" now recognized as a Target operand 17143 17144Debug object can now be used anywhere as a normal object. 17145 17146ResourceTemplate now returns an object of type BUFFER 17147 17148EISAID now returns an object of type INTEGER 17149 17150"Index" now works with a STRING operand 17151 17152"LoadTable" now accepts optional parameters 17153 17154"ToString" length parameter is now optional 17155 17156"Interrupt (ResourceType," parse error fixed. 17157 17158"Register" with a user-defined region space parse error fixed 17159 17160Escaped backslash at the end of a string ("\\") scan/parse error 17161fixed 17162 17163"Revision" is now an object of type INTEGER. 17164 17165 17166 17167------------------------------------------ 17168Summary of changes for this label: 05_02_01 17169 17170Linux: 17171 17172/proc/acpi/event now blocks properly. 17173 17174Removed /proc/sys/acpi. You can still dump your DSDT from 17175/proc/acpi/dsdt. 17176 17177 ACPI CA Core Subsystem: 17178 17179Fixed a problem introduced in the previous label where some of the 17180"small" resource descriptor types were not recognized. 17181 17182Improved error messages for the case where an ASL Field is outside 17183the range of the parent operation region. 17184 17185 ASL Compiler, version X2018: 17186 17187 17188Added error detection for ASL Fields that extend beyond the length 17189of the parent operation region (only if the length of the region 17190is known at compile time.) This includes fields that have a 17191minimum access width that is smaller than the parent region, and 17192individual field units that are partially or entirely beyond the 17193extent of the parent. 17194 17195 17196 17197------------------------------------------ 17198Summary of changes for this label: 04_27_01 17199 17200 ACPI CA Core Subsystem: 17201 17202Fixed a problem where the namespace mutex could be released at the 17203wrong time during execution of AcpiRemoveAddressSpaceHandler. 17204 17205Added optional thread ID output for debug traces, to simplify 17206debugging of multiple threads. Added context switch notification 17207when the debug code realizes that a different thread is now 17208executing ACPI code. 17209 17210Some additional external data types have been prefixed with the 17211string "ACPI_" for consistency. This may effect existing code. 17212The data types affected are the external callback typedefs - e.g., 17213 17214WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 17215 17216 Linux: 17217 17218Fixed an issue with the OSL semaphore implementation where a 17219thread was waking up with an error from receiving a SIGCHLD 17220signal. 17221 17222Linux version of ACPI CA now uses the system C library for string 17223manipulation routines instead of a local implementation. 17224 17225Cleaned up comments and removed TBDs. 17226 17227 ASL Compiler, version X2017: 17228 17229Enhanced error detection and reporting for all file I/O 17230operations. 17231 17232 Documentation: 17233 17234Programmer Reference updated to version 1.06. 17235 17236 17237 17238------------------------------------------ 17239Summary of changes for this label: 04_13_01 17240 17241 ACPI CA Core Subsystem: 17242 17243Restructured support for BufferFields and RegionFields. 17244BankFields support is now fully operational. All known 32-bit 17245limitations on field sizes have been removed. Both BufferFields 17246and (Operation) RegionFields are now supported by the same field 17247management code. 17248 17249Resource support now supports QWORD address and IO resources. The 1725016/32/64 bit address structures and the Extended IRQ structure 17251have been changed to properly handle Source Resource strings. 17252 17253A ThreadId of -1 is now used to indicate a "mutex not acquired" 17254condition internally and must never be returned by AcpiOsThreadId. 17255This reserved value was changed from 0 since Unix systems allow a 17256thread ID of 0. 17257 17258Linux: 17259 17260Driver code reorganized to enhance portability 17261 17262Added a kernel configuration option to control ACPI_DEBUG 17263 17264Fixed the EC driver to honor _GLK. 17265 17266ASL Compiler, version X2016: 17267 17268Fixed support for the "FixedHw" keyword. Previously, the FixedHw 17269address space was set to 0, not 0x7f as it should be. 17270 17271 ------------------------------------------ 17272Summary of changes for this label: 03_13_01 17273 17274 ACPI CA Core Subsystem: 17275 17276During ACPI initialization, the _SB_._INI method is now run if 17277present. 17278 17279Notify handler fix - notifies are deferred until the parent method 17280completes execution. This fixes the "mutex already acquired" 17281issue seen occasionally. 17282 17283Part of the "implicit conversion" rules in ACPI 2.0 have been 17284found to cause compatibility problems with existing ASL/AML. The 17285convert "result-to-target-type" implementation has been removed 17286for stores to method Args and Locals. Source operand conversion 17287is still fully implemented. Possible changes to ACPI 2.0 17288specification pending. 17289 17290Fix to AcpiRsCalculatePciRoutingTableLength to return correct 17291length. 17292 17293Fix for compiler warnings for 64-bit compiles. 17294 17295 Linux: 17296 17297/proc output aligned for easier parsing. 17298 17299Release-version compile problem fixed. 17300 17301New kernel configuration options documented in Configure.help. 17302 17303IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 17304context" message. 17305 17306 OSPM: 17307 17308Power resource driver integrated with bus manager. 17309 17310Fixed kernel fault during active cooling for thermal zones. 17311 17312Source Code: 17313 17314The source code tree has been restructured. 17315 17316 17317 17318------------------------------------------ 17319Summary of changes for this label: 03_02_01 17320 17321 Linux OS Services Layer (OSL): 17322 17323Major revision of all Linux-specific code. 17324 17325Modularized all ACPI-specific drivers. 17326 17327Added new thermal zone and power resource drivers. 17328 17329Revamped /proc interface (new functionality is under /proc/acpi). 17330 17331New kernel configuration options. 17332 17333 Linux known issues: 17334 17335New kernel configuration options not documented in Configure.help 17336yet. 17337 17338 17339Module dependencies not currently implemented. If used, they 17340should be loaded in this order: busmgr, power, ec, system, 17341processor, battery, ac_adapter, button, thermal. 17342 17343Modules will not load if CONFIG_MODVERSION is set. 17344 17345IBM 600E - entering S5 may reboot instead of shutting down. 17346 17347IBM 600E - Sleep button may generate "Invalid <NULL> context" 17348message. 17349 17350Some systems may fail with "execution mutex already acquired" 17351message. 17352 17353 ACPI CA Core Subsystem: 17354 17355Added a new OSL Interface, AcpiOsGetThreadId. This was required 17356for the deadlock detection code. Defined to return a non-zero, 32- 17357bit thread ID for the currently executing thread. May be a non- 17358zero constant integer on single-thread systems. 17359 17360Implemented deadlock detection for internal subsystem mutexes. We 17361may add conditional compilation for this code (debug only) later. 17362 17363ASL/AML Mutex object semantics are now fully supported. This 17364includes multiple acquires/releases by owner and support for the 17365 17366Mutex SyncLevel parameter. 17367 17368A new "Force Release" mechanism automatically frees all ASL 17369Mutexes that have been acquired but not released when a thread 17370exits the interpreter. This forces conformance to the ACPI spec 17371("All mutexes must be released when an invocation exits") and 17372prevents deadlocked ASL threads. This mechanism can be expanded 17373(later) to monitor other resource acquisitions if OEM ASL code 17374continues to misbehave (which it will). 17375 17376Several new ACPI exception codes have been added for the Mutex 17377support. 17378 17379Recursive method calls are now allowed and supported (the ACPI 17380spec does in fact allow recursive method calls.) The number of 17381recursive calls is subject to the restrictions imposed by the 17382SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 17383parameter. 17384 17385Implemented support for the SyncLevel parameter for control 17386methods (ACPI 2.0 feature) 17387 17388Fixed a deadlock problem when multiple threads attempted to use 17389the interpreter. 17390 17391Fixed a problem where the string length of a String package 17392element was not always set in a package returned from 17393AcpiEvaluateObject. 17394 17395Fixed a problem where the length of a String package element was 17396not always included in the length of the overall package returned 17397from AcpiEvaluateObject. 17398 17399Added external interfaces (Acpi*) to the ACPI debug memory 17400manager. This manager keeps a list of all outstanding 17401allocations, and can therefore detect memory leaks and attempts to 17402free memory blocks more than once. Useful for code such as the 17403power manager, etc. May not be appropriate for device drivers. 17404Performance with the debug code enabled is slow. 17405 17406The ACPI Global Lock is now an optional hardware element. 17407 17408 ASL Compiler Version X2015: 17409 17410Integrated changes to allow the compiler to be generated on 17411multiple platforms. 17412 17413Linux makefile added to generate the compiler on Linux 17414 17415 Source Code: 17416 17417All platform-specific headers have been moved to their own 17418subdirectory, Include/Platform. 17419 17420New source file added, Interpreter/ammutex.c 17421 17422New header file, Include/acstruct.h 17423 17424 Documentation: 17425 17426The programmer reference has been updated for the following new 17427interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 17428 17429 ------------------------------------------ 17430Summary of changes for this label: 02_08_01 17431 17432Core ACPI CA Subsystem: Fixed a problem where an error was 17433incorrectly returned if the return resource buffer was larger than 17434the actual data (in the resource interfaces). 17435 17436References to named objects within packages are resolved to the 17437 17438full pathname string before packages are returned directly (via 17439the AcpiEvaluateObject interface) or indirectly via the resource 17440interfaces. 17441 17442Linux OS Services Layer (OSL): 17443 17444Improved /proc battery interface. 17445 17446 17447Added C-state debugging output and other miscellaneous fixes. 17448 17449ASL Compiler Version X2014: 17450 17451All defined method arguments can now be used as local variables, 17452including the ones that are not actually passed in as parameters. 17453The compiler tracks initialization of the arguments and issues an 17454exception if they are used without prior assignment (just like 17455locals). 17456 17457The -o option now specifies a filename prefix that is used for all 17458output files, including the AML output file. Otherwise, the 17459default behavior is as follows: 1) the AML goes to the file 17460specified in the DSDT. 2) all other output files use the input 17461source filename as the base. 17462 17463 ------------------------------------------ 17464Summary of changes for this label: 01_25_01 17465 17466Core ACPI CA Subsystem: Restructured the implementation of object 17467store support within the interpreter. This includes support for 17468the Store operator as well as any ASL operators that include a 17469target operand. 17470 17471Partially implemented support for Implicit Result-to-Target 17472conversion. This is when a result object is converted on the fly 17473to the type of an existing target object. Completion of this 17474support is pending further analysis of the ACPI specification 17475concerning this matter. 17476 17477CPU-specific code has been removed from the subsystem (hardware 17478directory). 17479 17480New Power Management Timer functions added 17481 17482Linux OS Services Layer (OSL): Moved system state transition code 17483to the core, fixed it, and modified Linux OSL accordingly. 17484 17485Fixed C2 and C3 latency calculations. 17486 17487 17488We no longer use the compilation date for the version message on 17489initialization, but retrieve the version from AcpiGetSystemInfo(). 17490 17491Incorporated for fix Sony VAIO machines. 17492 17493Documentation: The Programmer Reference has been updated and 17494reformatted. 17495 17496 17497ASL Compiler: Version X2013: Fixed a problem where the line 17498numbering and error reporting could get out of sync in the 17499presence of multiple include files. 17500 17501 ------------------------------------------ 17502Summary of changes for this label: 01_15_01 17503 17504Core ACPI CA Subsystem: 17505 17506Implemented support for type conversions in the execution of the 17507ASL Concatenate operator (The second operand is converted to 17508match the type of the first operand before concatenation.) 17509 17510Support for implicit source operand conversion is partially 17511implemented. The ASL source operand types Integer, Buffer, and 17512String are freely interchangeable for most ASL operators and are 17513converted by the interpreter on the fly as required. Implicit 17514Target operand conversion (where the result is converted to the 17515target type before storing) is not yet implemented. 17516 17517Support for 32-bit and 64-bit BCD integers is implemented. 17518 17519Problem fixed where a field read on an aligned field could cause a 17520read past the end of the field. 17521 17522New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 17523does not return a value, but the caller expects one. (The ASL 17524compiler flags this as a warning.) 17525 17526ASL Compiler: 17527 17528Version X2011: 175291. Static typechecking of all operands is implemented. This 17530prevents the use of invalid objects (such as using a Package where 17531an Integer is required) at compile time instead of at interpreter 17532run-time. 175332. The ASL source line is printed with ALL errors and warnings. 175343. Bug fix for source EOF without final linefeed. 175354. Debug option is split into a parse trace and a namespace trace. 175365. Namespace output option (-n) includes initial values for 17537integers and strings. 175386. Parse-only option added for quick syntax checking. 175397. Compiler checks for duplicate ACPI name declarations 17540 17541Version X2012: 175421. Relaxed typechecking to allow interchangeability between 17543strings, integers, and buffers. These types are now converted by 17544the interpreter at runtime. 175452. Compiler reports time taken by each internal subsystem in the 17546debug output file. 17547 17548 17549 ------------------------------------------ 17550Summary of changes for this label: 12_14_00 17551 17552ASL Compiler: 17553 17554This is the first official release of the compiler. Since the 17555compiler requires elements of the Core Subsystem, this label 17556synchronizes everything. 17557 17558------------------------------------------ 17559Summary of changes for this label: 12_08_00 17560 17561 17562Fixed a problem where named references within the ASL definition 17563of both OperationRegions and CreateXXXFields did not work 17564properly. The symptom was an AE_AML_OPERAND_TYPE during 17565initialization of the region/field. This is similar (but not 17566related internally) to the problem that was fixed in the last 17567label. 17568 17569Implemented both 32-bit and 64-bit support for the BCD ASL 17570functions ToBCD and FromBCD. 17571 17572Updated all legal headers to include "2000" in the copyright 17573years. 17574 17575 ------------------------------------------ 17576Summary of changes for this label: 12_01_00 17577 17578Fixed a problem where method invocations within the ASL definition 17579of both OperationRegions and CreateXXXFields did not work 17580properly. The symptom was an AE_AML_OPERAND_TYPE during 17581initialization of the region/field: 17582 17583 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 17584[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 17585(0x3005) 17586 17587Fixed a problem where operators with more than one nested 17588subexpression would fail. The symptoms were varied, by mostly 17589AE_AML_OPERAND_TYPE errors. This was actually a rather serious 17590problem that has gone unnoticed until now. 17591 17592 Subtract (Add (1,2), Multiply (3,4)) 17593 17594Fixed a problem where AcpiGetHandle didn't quite get fixed in the 17595previous build (The prefix part of a relative path was handled 17596incorrectly). 17597 17598Fixed a problem where Operation Region initialization failed if 17599the operation region name was a "namepath" instead of a simple 17600"nameseg". Symptom was an AE_NO_OPERAND error. 17601 17602Fixed a problem where an assignment to a local variable via the 17603indirect RefOf mechanism only worked for the first such 17604assignment. Subsequent assignments were ignored. 17605 17606 ------------------------------------------ 17607Summary of changes for this label: 11_15_00 17608 17609ACPI 2.0 table support with backwards support for ACPI 1.0 and the 176100.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 17611the AML interpreter does NOT have support for the new 2.0 ASL 17612grammar terms at this time. 17613 17614All ACPI hardware access is via the GAS structures in the ACPI 2.0 17615FADT. 17616 17617All physical memory addresses across all platforms are now 64 bits 17618wide. Logical address width remains dependent on the platform 17619(i.e., "void *"). 17620 17621AcpiOsMapMemory interface changed to a 64-bit physical address. 17622 17623The AML interpreter integer size is now 64 bits, as per the ACPI 176242.0 specification. 17625 17626For backwards compatibility with ACPI 1.0, ACPI tables with a 17627revision number less than 2 use 32-bit integers only. 17628 17629Fixed a problem where the evaluation of OpRegion operands did not 17630always resolve them to numbers properly. 17631 17632------------------------------------------ 17633Summary of changes for this label: 10_20_00 17634 17635Fix for CBN_._STA issue. This fix will allow correct access to 17636CBN_ OpRegions when the _STA returns 0x8. 17637 17638Support to convert ACPI constants (Ones, Zeros, One) to actual 17639values before a package object is returned 17640 17641Fix for method call as predicate to if/while construct causing 17642incorrect if/while behavior 17643 17644Fix for Else block package lengths sometimes calculated wrong (if 17645block > 63 bytes) 17646 17647Fix for Processor object length field, was always zero 17648 17649Table load abort if FACP sanity check fails 17650 17651Fix for problem with Scope(name) if name already exists 17652 17653Warning emitted if a named object referenced cannot be found 17654(resolved) during method execution. 17655 17656 17657 17658 17659 17660------------------------------------------ 17661Summary of changes for this label: 9_29_00 17662 17663New table initialization interfaces: AcpiInitializeSubsystem no 17664longer has any parameters AcpiFindRootPointer - Find the RSDP (if 17665necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 17666>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 17667AcpiLoadTables 17668 17669Note: These interface changes require changes to all existing OSDs 17670 17671The PCI_Config default address space handler is always installed 17672at the root namespace object. 17673 17674------------------------------------------- 17675Summary of changes for this label: 09_15_00 17676 17677The new initialization architecture is implemented. New 17678interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 17679AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 17680 17681(Namespace is automatically loaded when a table is loaded) 17682 17683The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1768452 bytes to 32 bytes. There is usually one of these for every 17685namespace object, so the memory savings is significant. 17686 17687Implemented just-in-time evaluation of the CreateField operators. 17688 17689Bug fixes for IA-64 support have been integrated. 17690 17691Additional code review comments have been implemented 17692 17693The so-called "third pass parse" has been replaced by a final walk 17694through the namespace to initialize all operation regions (address 17695spaces) and fields that have not yet been initialized during the 17696execution of the various _INI and REG methods. 17697 17698New file - namespace/nsinit.c 17699 17700------------------------------------------- 17701Summary of changes for this label: 09_01_00 17702 17703Namespace manager data structures have been reworked to change the 17704primary object from a table to a single object. This has 17705resulted in dynamic memory savings of 3X within the namespace and 177062X overall in the ACPI CA subsystem. 17707 17708Fixed problem where the call to AcpiEvFindPciRootBuses was 17709inadvertently left commented out. 17710 17711Reduced the warning count when generating the source with the GCC 17712compiler. 17713 17714Revision numbers added to each module header showing the 17715SourceSafe version of the file. Please refer to this version 17716number when giving us feedback or comments on individual modules. 17717 17718The main object types within the subsystem have been renamed to 17719clarify their purpose: 17720 17721ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 17722ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 17723ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 17724 17725NOTE: no changes to the initialization sequence are included in 17726this label. 17727 17728------------------------------------------- 17729Summary of changes for this label: 08_23_00 17730 17731Fixed problem where TerminateControlMethod was being called 17732multiple times per method 17733 17734Fixed debugger problem where single stepping caused a semaphore to 17735be oversignalled 17736 17737Improved performance through additional parse object caching - 17738added ACPI_EXTENDED_OP type 17739 17740------------------------------------------- 17741Summary of changes for this label: 08_10_00 17742 17743Parser/Interpreter integration: Eliminated the creation of 17744complete parse trees for ACPI tables and control methods. 17745Instead, parse subtrees are created and then deleted as soon as 17746they are processed (Either entered into the namespace or executed 17747by the interpreter). This reduces the use of dynamic kernel 17748memory significantly. (about 10X) 17749 17750Exception codes broken into classes and renumbered. Be sure to 17751recompile all code that includes acexcep.h. Hopefully we won't 17752have to renumber the codes again now that they are split into 17753classes (environment, programmer, AML code, ACPI table, and 17754internal). 17755 17756Fixed some additional alignment issues in the Resource Manager 17757subcomponent 17758 17759Implemented semaphore tracking in the AcpiExec utility, and fixed 17760several places where mutexes/semaphores were being unlocked 17761without a corresponding lock operation. There are no known 17762semaphore or mutex "leaks" at this time. 17763 17764Fixed the case where an ASL Return operator is used to return an 17765unnamed package. 17766 17767------------------------------------------- 17768Summary of changes for this label: 07_28_00 17769 17770Fixed a problem with the way addresses were calculated in 17771AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 17772manifested itself when a Field was created with WordAccess or 17773DwordAccess, but the field unit defined within the Field was less 17774 17775than a Word or Dword. 17776 17777Fixed a problem in AmlDumpOperands() module's loop to pull 17778operands off of the operand stack to display information. The 17779problem manifested itself as a TLB error on 64-bit systems when 17780accessing an operand stack with two or more operands. 17781 17782Fixed a problem with the PCI configuration space handlers where 17783context was getting confused between accesses. This required a 17784change to the generic address space handler and address space 17785setup definitions. Handlers now get both a global handler context 17786(this is the one passed in by the user when executing 17787AcpiInstallAddressSpaceHandler() and a specific region context 17788that is unique to each region (For example, the _ADR, _SEG and 17789_BBN values associated with a specific region). The generic 17790function definitions have changed to the following: 17791 17792typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 17793UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 17794*HandlerContext, // This used to be void *Context void 17795*RegionContext); // This is an additional parameter 17796 17797typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 17798RegionHandle, UINT32 Function, void *HandlerContext, void 17799**RegionContext); // This used to be **ReturnContext 17800 17801------------------------------------------- 17802Summary of changes for this label: 07_21_00 17803 17804Major file consolidation and rename. All files within the 17805interpreter have been renamed as well as most header files. This 17806was done to prevent collisions with existing files in the host 17807OSs -- filenames such as "config.h" and "global.h" seem to be 17808quite common. The VC project files have been updated. All 17809makefiles will require modification. 17810 17811The parser/interpreter integration continues in Phase 5 with the 17812implementation of a complete 2-pass parse (the AML is parsed 17813twice) for each table; This avoids the construction of a huge 17814parse tree and therefore reduces the amount of dynamic memory 17815required by the subsystem. Greater use of the parse object cache 17816means that performance is unaffected. 17817 17818Many comments from the two code reviews have been rolled in. 17819 17820The 64-bit alignment support is complete. 17821 17822------------------------------------------- 17823Summary of changes for this label: 06_30_00 17824 17825With a nod and a tip of the hat to the technology of yesteryear, 17826we've added support in the source code for 80 column output 17827devices. The code is now mostly constrained to 80 columns or 17828less to support environments and editors that 1) cannot display 17829or print more than 80 characters on a single line, and 2) cannot 17830disable line wrapping. 17831 17832A major restructuring of the namespace data structure has been 17833completed. The result is 1) cleaner and more 17834understandable/maintainable code, and 2) a significant reduction 17835in the dynamic memory requirement for each named ACPI object 17836(almost half). 17837 17838------------------------------------------- 17839Summary of changes for this label: 06_23_00 17840 17841Linux support has been added. In order to obtain approval to get 17842the ACPI CA subsystem into the Linux kernel, we've had to make 17843quite a few changes to the base subsystem that will affect all 17844users (all the changes are generic and OS- independent). The 17845effects of these global changes have been somewhat far reaching. 17846Files have been merged and/or renamed and interfaces have been 17847renamed. The major changes are described below. 17848 17849Osd* interfaces renamed to AcpiOs* to eliminate namespace 17850pollution/confusion within our target kernels. All OSD 17851interfaces must be modified to match the new naming convention. 17852 17853Files merged across the subsystem. A number of the smaller source 17854and header files have been merged to reduce the file count and 17855increase the density of the existing files. There are too many 17856to list here. In general, makefiles that call out individual 17857files will require rebuilding. 17858 17859Interpreter files renamed. All interpreter files now have the 17860prefix am* instead of ie* and is*. 17861 17862Header files renamed: The acapi.h file is now acpixf.h. The 17863acpiosd.h file is now acpiosxf.h. We are removing references to 17864the acronym "API" since it is somewhat windowsy. The new name is 17865"external interface" or xface or xf in the filenames.j 17866 17867 17868All manifest constants have been forced to upper case (some were 17869mixed case.) Also, the string "ACPI_" has been prepended to many 17870(not all) of the constants, typedefs, and structs. 17871 17872The globals "DebugLevel" and "DebugLayer" have been renamed 17873"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 17874 17875All other globals within the subsystem are now prefixed with 17876"AcpiGbl_" Internal procedures within the subsystem are now 17877prefixed with "Acpi" (with only a few exceptions). The original 17878two-letter abbreviation for the subcomponent remains after "Acpi" 17879- for example, CmCallocate became AcpiCmCallocate. 17880 17881Added a source code translation/conversion utility. Used to 17882generate the Linux source code, it can be modified to generate 17883other types of source as well. Can also be used to cleanup 17884existing source by removing extraneous spaces and blank lines. 17885Found in tools/acpisrc/* 17886 17887OsdUnMapMemory was renamed to OsdUnmapMemory and then 17888AcpiOsUnmapMemory. (UnMap became Unmap). 17889 17890A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 17891When set to one, this indicates that the caller wants to use the 17892 17893semaphore as a mutex, not a counting semaphore. ACPI CA uses 17894both types. However, implementers of this call may want to use 17895different OS primitives depending on the type of semaphore 17896requested. For example, some operating systems provide separate 17897 17898"mutex" and "semaphore" interfaces - where the mutex interface is 17899much faster because it doesn't have all the overhead of a full 17900semaphore implementation. 17901 17902Fixed a deadlock problem where a method that accesses the PCI 17903address space can block forever if it is the first access to the 17904space. 17905 17906------------------------------------------- 17907Summary of changes for this label: 06_02_00 17908 17909Support for environments that cannot handle unaligned data 17910accesses (e.g. firmware and OS environments devoid of alignment 17911handler technology namely SAL/EFI and the IA-64 Linux kernel) has 17912been added (via configurable macros) in these three areas: - 17913Transfer of data from the raw AML byte stream is done via byte 17914moves instead of word/dword/qword moves. - External objects are 17915aligned within the user buffer, including package elements (sub- 17916objects). - Conversion of name strings to UINT32 Acpi Names is now 17917done byte-wise. 17918 17919The Store operator was modified to mimic Microsoft's 17920implementation when storing to a Buffer Field. 17921 17922Added a check of the BM_STS bit before entering C3. 17923 17924The methods subdirectory has been obsoleted and removed. A new 17925file, cmeval.c subsumes the functionality. 17926 17927A 16-bit (DOS) version of AcpiExec has been developed. The 17928makefile is under the acpiexec directory. 17929