1---------------------------------------- 229 June 2018. Summary of changes for version 20180629: 3 4 51) iASL Compiler/Disassembler and Tools: 6 7iASL: Fixed a regression related to the use of the ASL External 8statement. Error checking for the use of the External() statement has 9been relaxed. Previously, a restriction on the use of External meant that 10the referenced named object was required to be defined in a different 11table (an SSDT). Thus it would be an error to declare an object as an 12external and then define the same named object in the same table. For 13example: 14 DefinitionBlock (...) 15 { 16 External (DEV1) 17 Device (DEV1){...} // This was an error 18 } 19However, this behavior has caused regressions in some existing ASL code, 20because there is code that depends on named objects and externals (with 21the same name) being declared in the same table. This change will allow 22the ASL code above to compile without errors or warnings. 23 24iASL: Implemented ASL language extensions for four operators to make some 25of their arguments optional instead of required: 26 1) Field (RegionName, AccessType, LockRule, UpdateRule) 27 2) BankField (RegionName, BankName, BankValue, 28 AccessType, LockRule, UpdateRule) 29 3) IndexField (IndexName, DataName, 30 AccessType, LockRule, UpdateRule) 31For the Field operators above, the AccessType, LockRule, and UpdateRule 32are now optional arguments. The default values are: 33 AccessType: AnyAcc 34 LockRule: NoLock 35 UpdateRule: Preserve 36 4) Mutex (MutexName, SyncLevel) 37For this operator, the SyncLevel argument is now optional. This argument 38is rarely used in any meaningful way by ASL code, and thus it makes sense 39to make it optional. The default value is: 40 SyncLevel: 0 41 42iASL: Attempted use of the ASL Unload() operator now results in the 43following warning: 44 "Unload is not supported by all operating systems" 45This is in fact very true, and the Unload operator may be completely 46deprecated in the near future. 47 48AcpiExec: Fixed a regression for the -fi option (Namespace initialization 49file. Recent changes in the ACPICA module-level code support altered the 50table load/initialization sequence . This means that the table load has 51become a large method execution of the table itself. If Operation Region 52Fields are used within any module-level code and the -fi option was 53specified, the initialization values were populated only after the table 54had completely finished loading (and thus the module-level code had 55already been executed). This change moves the initialization of objects 56listed in the initialization file to before the table is executed as a 57method. Field unit values are now initialized before the table execution 58is performed. 59 60---------------------------------------- 6131 May 2018. Summary of changes for version 20180531: 62 63 641) ACPICA kernel-resident Subsystem: 65 66Implemented additional support to help ensure that a DSDT or SSDT is 67fully loaded even if errors are incurred during the load. The majority of 68the problems that are seen is the failure of individual AML operators 69that occur during execution of any module-level code (MLC) existing in 70the table. This support adds a mechanism to abort the current ASL 71statement (AML opcode), emit an error message, and to simply move on to 72the next opcode -- instead of aborting the entire table load. This is 73different than the execution of a control method where the entire method 74is aborted upon any error. The goal is to perform a very "best effort" to 75load the ACPI tables. The most common MLC errors that have been seen in 76the field are direct references to unresolved ASL/AML symbols (referenced 77directly without the use of the CondRefOf operator to validate the 78symbol). This new ACPICA behavior is now compatible with other ACPI 79implementations. 80 81Interpreter: The Unload AML operator is no longer supported for the 82reasons below. An AE_NOT_IMPLEMENTED exception is returned. 831) A correct implementation on at least some hosts may not be possible. 842) Other ACPI implementations do not correctly/fully support it. 853) It requires host device driver support which is not known to exist. 86 (To properly support namespace unload out from underneath.) 874) This AML operator has never been seen in the field. 88 89Parser: Added a debug option to dump AML parse sub-trees as they are 90being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 91ACPI_DB_PARSE_TREES. 92 93Debugger: Reduced the verbosity for errors incurred during table load and 94module-level code execution. 95 96Completed an investigation into adding a namespace node "owner list" 97instead of the current "owner ID" associated with namespace nodes. This 98list would link together all nodes that are owned by an individual 99control method. The purpose would be to enhance control method execution 100by speeding up cleanup during method exit (all namespace nodes created by 101a method are deleted upon method termination.) Currently, the entire 102namespace must be searched for matching owner IDs if (and only if) the 103method creates named objects outside of the local scope. However, by far 104the most common case is that methods create objects locally, not outside 105the method scope. There is already an ACPICA optimization in place that 106only searches the entire namespace in the rare case of a method creating 107objects elsewhere in the namespace. Therefore, it is felt that the 108overhead of adding an additional pointer to each namespace node to 109implement the owner list makes this feature unnecessary. 110 111 1122) iASL Compiler/Disassembler and Tools: 113 114iASL, Disassembler, and Template generator: Implemented support for 115Revision D of the IORT table. Adds a new subtable that is used to specify 116SMMUv3 PMCGs. rmurphy-arm. 117 118Disassembler: Restored correct table header validation for the "special" 119ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 120table header and must be special-cased. This was a regression that has 121been present for apparently a long time. 122 123AcpiExec: Reduced verbosity of the local exception handler implemented 124within acpiexec. This handler is invoked by ACPICA upon any exceptions 125generated during control method execution. A new option was added: -vh 126restores the original verbosity level if desired. 127 128AcpiExec: Changed the default base from decimal to hex for the -x option 129(set debug level). This simplifies the use of this option and matches the 130behavior of the corresponding iASL -x option. 131 132AcpiExec: Restored a force-exit on multiple control-c (sigint) 133interrupts. This allows program termination even if other issues cause 134the control-c to fail. 135 136ASL test suite (ASLTS): Added tests for the recently implemented package 137element resolution mechanism that allows forward references to named 138objects from individual package elements (this mechanism provides 139compatibility with other ACPI implementations.) 140 141 142---------------------------------------- 1438 May 2018. Summary of changes for version 20180508: 144 145 1461) ACPICA kernel-resident subsystem: 147 148Completed the new (recently deployed) package resolution mechanism for 149the Load and LoadTable ASL/AML operators. This fixes a regression that 150was introduced in version 20180209 that could result in an 151AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 152(SSDT) that contains package objects. 153 154 1552) iASL Compiler/Disassembler and Tools: 156 157AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 1581 MB. This change allows for table offsets within the acpidump file to be 159up to 8 characters. These changes are backwards compatible with existing 160acpidump files. 161 162 163---------------------------------------- 16427 April 2018. Summary of changes for version 20180427: 165 166 1671) ACPICA kernel-resident subsystem: 168 169Debugger: Added support for Package objects in the "Test Objects" 170command. This command walks the entire namespace and evaluates all named 171data objects (Integers, Strings, Buffers, and now Packages). 172 173Improved error messages for the namespace root node. Originally, the root 174was referred to by the confusing string "\___". This has been replaced by 175"Namespace Root" for clarification. 176 177Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 178Ian King <colin.king@canonical.com>. 179 180 1812) iASL Compiler/Disassembler and Tools: 182 183iASL: Implemented support to detect and flag illegal forward references. 184For compatibility with other ACPI implementations, these references are 185now illegal at the root level of the DSDT or SSDTs. Forward references 186have always been illegal within control methods. This change should not 187affect existing ASL/AML code because of the fact that these references 188have always been illegal in the other ACPI implementation. 189 190iASL: Added error messages for the case where a table OEM ID and OEM 191TABLE ID strings are longer than the ACPI-defined length. Previously, 192these strings were simply silently truncated. 193 194iASL: Enhanced the -tc option (which creates an AML hex file in C, 195suitable for import into a firmware project): 196 1) Create a unique name for the table, to simplify use of multiple 197SSDTs. 198 2) Add a protection #ifdef in the file, similar to a .h header file. 199With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 200evan.lloyd@arm.com 201 202AcpiExec: Added a new option, -df, to disable the local fault handler. 203This is useful during debugging, where it may be desired to drop into a 204debugger on a fault. 205 206---------------------------------------- 20713 March 2018. Summary of changes for version 20180313: 208 209 2101) ACPICA kernel-resident subsystem: 211 212Implemented various improvements to the GPE support: 213 2141) Dispatch all active GPEs at initialization time so that no GPEs are 215lost. 2162) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 217before devices are enumerated. 2183) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 219IRQs are not lost. 2204) Add parallel GPE handling to eliminate the possibility of dispatching 221the same GPE twice. 2225) Dispatch any pending GPEs after enabling for the first time. 223 224AcpiGetObjectInfo - removed support for the _STA method. This was causing 225problems on some platforms. 226 227Added a new _OSI string, "Windows 2017.2". 228 229Cleaned up and simplified the module-level code support. These changes 230are in preparation for the eventual removal of the legacy MLC support 231(deferred execution), replaced by the new MLC architecture which executes 232the MLC as a table is loaded (DSDT/SSDTs). 233 234Changed a compile-time option to a runtime option. Changes the option to 235ignore ACPI table load-time package resolution errors into a runtime 236option. Used only for platforms that generate many AE_NOT_FOUND errors 237during boot. AcpiGbl_IgnorePackageResolutionErrors. 238 239Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 240ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 241compilation errors from unused variables (seen with some compilers). 242 243 2442) iASL Compiler/Disassembler and Tools: 245 246ASLTS: parallelized execution in order to achieve an (approximately) 2X 247performance increase. 248 249ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 250error reporting. 251 252---------------------------------------- 25309 February 2018. Summary of changes for version 20180209: 254 255 2561) ACPICA kernel-resident subsystem: 257 258Completed the final integration of the recent changes to Package Object 259handling and the module-level AML code support. This allows forward 260references from individual package elements when the package object is 261declared from within module-level code blocks. Provides compatibility 262with other ACPI implementations. 263 264The new architecture for the AML module-level code has been completed and 265is now the default for the ACPICA code. This new architecture executes 266the module-level code in-line as the ACPI table is loaded/parsed instead 267of the previous architecture which deferred this code until after the 268table was fully loaded. This solves some ASL code ordering issues and 269provides compatibility with other ACPI implementations. At this time, 270there is an option to fallback to the earlier architecture, but this 271support is deprecated and is planned to be completely removed later this 272year. 273 274Added a compile-time option to ignore AE_NOT_FOUND exceptions during 275resolution of named reference elements within Package objects. Although 276this is potentially a serious problem, it can generate a lot of 277noise/errors on platforms whose firmware carries around a bunch of unused 278Package objects. To disable these errors, define 279ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 280errors are always reported for ACPICA applications such as AcpiExec. 281 282Fixed a regression related to the explicit type-conversion AML operators 283(ToXXXX). The regression was introduced early in 2017 but was not seen 284until recently because these operators are not fully supported by other 285ACPI implementations and are thus rarely used by firmware developers. The 286operators are defined by the ACPI specification to not implement the 287"implicit result object conversion". The regression incorrectly 288introduced this object conversion for the following explicit conversion 289operators: 290 ToInteger 291 ToString 292 ToBuffer 293 ToDecimalString 294 ToHexString 295 ToBCD 296 FromBCD 297 298 2992) iASL Compiler/Disassembler and Tools: 300 301iASL: Fixed a problem with the compiler constant folding feature as 302related to the ToXXXX explicit conversion operators. These operators do 303not support the "implicit result object conversion" by definition. Thus, 304ASL expressions that use these operators cannot be folded to a simple 305Store operator because Store implements the implicit conversion. This 306change uses the CopyObject operator for the ToXXXX operator folding 307instead. CopyObject is defined to not implement implicit result 308conversions and is thus appropriate for folding the ToXXXX operators. 309 310iASL: Changed the severity of an error condition to a simple warning for 311the case where a symbol is declared both locally and as an external 312symbol. This accommodates existing ASL code. 313 314AcpiExec: The -ep option to enable the new architecture for module-level 315code has been removed. It is replaced by the -dp option which instead has 316the opposite effect: it disables the new architecture (the default) and 317enables the legacy architecture. When the legacy code is removed in the 318future, the -dp option will be removed also. 319 320---------------------------------------- 32105 January 2018. Summary of changes for version 20180105: 322 323 3241) ACPICA kernel-resident subsystem: 325 326Updated all copyrights to 2018. This affects all source code modules. 327 328Fixed a possible build error caused by an unresolved reference to the 329AcpiUtSafeStrncpy function. 330 331Removed NULL pointer arithmetic in the various pointer manipulation 332macros. All "(void *) NULL" constructs are converted to "(void *) 0". 333This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 334 335Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 336Mittal. 337 338 3392) iASL Compiler/Disassembler and Tools: 340 341ASLTS: Updated all copyrights to 2018. 342 343Tools: Updated all signon copyrights to 2018. 344 345AcpiXtract: Fixed a regression related to ACPI table signatures where the 346signature was truncated to 3 characters (instead of 4). 347 348AcpiExec: Restore the original terminal mode after the use of the -v and 349-vd options. 350 351ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 352 353---------------------------------------- 35414 December 2017. Summary of changes for version 20171214: 355 356 3571) ACPICA kernel-resident subsystem: 358 359Fixed a regression in the external (public) AcpiEvaluateObjectTyped 360interface where the optional "pathname" argument had inadvertently become 361a required argument returning an error if omitted (NULL pointer 362argument). 363 364Fixed two possible memory leaks related to the recently developed "late 365resolution" of reference objects within ASL Package Object definitions. 366 367Added two recently defined _OSI strings: "Windows 2016" and "Windows 3682017". Mario Limonciello. 369 370Implemented and deployed a safer version of the C library function 371strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 372creation of unterminated strings as a possible result of a standard 373strncpy. 374 375Cleaned up and restructured the global variable file (acglobal.h). There 376are many changes, but no functional changes. 377 378 3792) iASL Compiler/Disassembler and Tools: 380 381iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 382optional OemData field at the end of the table was incorrectly required 383for proper compilation. It is now correctly an optional field. 384 385ASLTS: The entire suite was converted from standard ASL to the ASL+ 386language, using the ASL-to-ASL+ converter which is integrated into the 387iASL compiler. A binary compare of all output files has verified the 388correctness of the conversion. 389 390iASL: Fixed the source code build for platforms where "char" is unsigned. 391This affected the iASL lexer only. Jung-uk Kim. 392 393---------------------------------------- 39410 November 2017. Summary of changes for version 20171110: 395 396 3971) ACPICA kernel-resident subsystem: 398 399This release implements full support for ACPI 6.2A: 400 NFIT - Added a new subtable, "Platform Capabilities Structure" 401No other changes to ACPICA were required, since ACPI 6.2A is primarily an 402errata release of the specification. 403 404Other ACPI table changes: 405 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 406 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 407Linton 408 409Utilities: Modified the string/integer conversion functions to use 410internal 64-bit divide support instead of a native divide. On 32-bit 411platforms, a 64-bit divide typically requires a library function which 412may not be present in the build (kernel or otherwise). 413 414Implemented a targeted error message for timeouts returned from the 415Embedded Controller device driver. This is seen frequently enough to 416special-case an AE_TIME returned from an EC operation region access: 417 "Timeout from EC hardware or EC device driver" 418 419Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 420runtime error messages have the identical prefix. 421 422 4232) iASL Compiler/Disassembler and Tools: 424 425AcpiXtract: Fixed a problem with table header detection within the 426acpidump file. Processing a table could be ended early if a 0x40 (@) 427appears in the original binary table, resulting in the @ symbol appearing 428in the decoded ASCII field at the end of the acpidump text line. The 429symbol caused acpixtract to incorrectly think it had reached the end of 430the current table and the beginning of a new table. 431 432AcpiXtract: Added an option (-f) to ignore some errors during table 433extraction. This initial implementation ignores non-ASCII and non- 434printable characters found in the acpidump text file. 435 436TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 437for ASLTS. This feature is used to track memory allocations from 438different memory caches within the ACPICA code. At the end of an ASLTS 439run, these memory statistics are recorded and stored in a log file. 440 441Debugger (user-space version): Implemented a simple "Background" command. 442Creates a new thread to execute a control method in the background, while 443control returns to the debugger prompt to allow additional commands. 444 Syntax: Background <Namepath> [Arguments] 445 446---------------------------------------- 44729 September 2017. Summary of changes for version 20170929: 448 449 4501) ACPICA kernel-resident subsystem: 451 452Redesigned and implemented an improved ASL While() loop timeout 453mechanism. This mechanism is used to prevent infinite loops in the kernel 454AML interpreter caused by either non-responsive hardware or incorrect AML 455code. The new implementation uses AcpiOsGetTimer instead of a simple 456maximum loop count, and is thus more accurate and constant across 457different machines. The default timeout is currently 30 seconds, but this 458may be adjusted later. 459 460Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 461better reflect the new implementation of the loop timeout mechanism. 462 463Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 464and to fix an off-by-one error. Jung-uk Kim. 465 466Fixed an EFI build problem by updating the makefiles to for a new file 467that was added, utstrsuppt.c 468 469 4702) iASL Compiler/Disassembler and Tools: 471 472Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 473includes support in the table disassembler, compiler, and template 474generator. 475 476iASL: Added an exception for an illegal type of recursive method 477invocation. If a method creates named objects, the first recursive call 478will fail at runtime. This change adds an error detection at compile time 479to catch the problem up front. Note: Marking such a method as 480"serialized" will not help with this problem, because the same thread can 481acquire the method mutex more than once. Example compiler and runtime 482output: 483 484 Method (MTH1) 485 { 486 Name (INT1, 1) 487 MTH1 () 488 } 489 490 dsdt.asl 22: MTH1 () 491 Error 6152 - ^ Illegal recursive call to method 492 that creates named objects (MTH1) 493 494Previous runtime exception: 495 ACPI Error: [INT1] Namespace lookup failure, 496 AE_ALREADY_EXISTS (20170831/dswload2-465) 497 498iASL: Updated support for External() opcodes to improve namespace 499management and error detection. These changes are related to issues seen 500with multiple-segment namespace pathnames within External declarations, 501such as below: 502 503 External(\_SB.PCI0.GFX0, DeviceObj) 504 External(\_SB.PCI0.GFX0.ALSI) 505 506iASL: Implemented support for multi-line error/warning messages. This 507enables more detailed and helpful error messages as below, from the 508initial deployment for the duplicate names error: 509 510 DSDT.iiii 1692: Device(PEG2) { 511 Error 6074 - ^ Name already exists in scope 512(PEG2) 513 514 Original name creation/declaration below: 515 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 516 517AcpiXtract: Added additional flexibility to support differing input hex 518dump formats. Specifically, hex dumps that contain partial disassembly 519and/or comments within the ACPI table data definition. There exist some 520dump utilities seen in the field that create this type of hex dump (such 521as Simics). For example: 522 523 DSDT @ 0xdfffd0c0 (10999 bytes) 524 Signature DSDT 525 Length 10999 526 Revision 1 527 Checksum 0xf3 (Ok) 528 OEM_ID BXPC 529 OEM_table_id BXDSDT 530 OEM_revision 1 531 Creator_id 1280593481 532 Creator_revision 537399345 533 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 534 ... 535 2af0: 5f 4c 30 46 00 a4 01 536 537Test suite: Miscellaneous changes/fixes: 538 More cleanup and simplification of makefiles 539 Continue compilation of test cases after a compile failure 540 Do not perform binary compare unless both files actually exist 541 542iASL: Performed some code/module restructuring. Moved all memory 543allocation functions to new modules. Two new files, aslallocate.c and 544aslcache.c 545 546---------------------------------------- 54731 August 2017. Summary of changes for version 20170831: 548 549 5501) ACPICA kernel-resident subsystem: 551 552Implemented internal support for full 64-bit addresses that appear in all 553Generic Address Structure (GAS) structures. Previously, only the lower 32 554bits were used. Affects the use of GAS structures in the FADT and other 555tables, as well as the GAS structures passed to the AcpiRead and 556AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 557 558Added header support for the PDTT ACPI table (Processor Debug Trigger 559Table). Full support in the iASL Data Table Compiler and disassembler is 560forthcoming. 561 562 5632) iASL Compiler/Disassembler and Tools: 564 565iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 566Properties Topology Table) where a flag bit was specified in the wrong 567bit position ("Line Size Valid", bit 6). 568 569iASL: Implemented support for Octal integer constants as defined by the 570ASL language grammar, per the ACPI specification. Any integer constant 571that starts with a zero is an octal constant. For example, 572 Store (037777, Local0) /* Octal constant */ 573 Store (0x3FFF, Local0) /* Hex equivalent */ 574 Store (16383, Local0) /* Decimal equivalent */ 575 576iASL: Improved overflow detection for 64-bit string conversions during 577compilation of integer constants. "Overflow" in this case means a string 578that represents an integer that is too large to fit into a 64-bit value. 579Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 580the low-order 32 bits with a warning, as previously implemented. Several 581new exceptions are defined that indicate a 64-bit overflow, as well as 582the base (radix) that was used during the attempted conversion. Examples: 583 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 584 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 585 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 586 587iASL: Added a warning for the case where a ResourceTemplate is declared 588with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 589this case, the resulting template is created with a single END_TAG 590descriptor, which is essentially useless. 591 592iASL: Expanded the -vw option (ignore specific warnings/remarks) to 593include compilation error codes as well. 594 595---------------------------------------- 59628 July 2017. Summary of changes for version 20170728: 597 598 5991) ACPICA kernel-resident subsystem: 600 601Fixed a regression seen with small resource descriptors that could cause 602an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 603 604AML interpreter: Implemented a new feature that allows forward references 605from individual named references within package objects that are 606contained within blocks of "module-level code". This provides 607compatibility with other ACPI implementations and supports existing 608firmware that depends on this feature. Example: 609 610 Name (ABCD, 1) 611 If (ABCD) /* An If() at module-level */ 612 { 613 Name (PKG1, Package() 614 { 615 INT1 /* Forward reference to object INT1 616*/ 617 }) 618 Name (INT1, 0x1234) 619 } 620 621AML Interpreter: Fixed a problem with the Alias() operator where aliases 622to some ASL objects were not handled properly. Objects affected are: 623Mutex, Event, and OperationRegion. 624 625AML Debugger: Enhanced to properly handle AML Alias objects. These 626objects have one level of indirection which was not fully supported by 627the debugger. 628 629Table Manager: Added support to detect and ignore duplicate SSDTs within 630the XSDT/RSDT. This error in the XSDT has been seen in the field. 631 632EFI and EDK2 support: 633 Enabled /WX flag for MSVC builds 634 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 635 Added local support for 64-bit multiply and shift operations 636 Added support to compile acpidump.efi on Windows 637 Added OSL function stubs for interfaces not used under EFI 638 639Added additional support for the _DMA predefined name. _DMA returns a 640buffer containing a resource template. This change add support within the 641resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 642resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 643 644 6452) iASL Compiler/Disassembler and Tools: 646 647iASL: Fixed a problem where the internal input line buffer(s) could 648overflow if there are very long lines in the input ASL source code file. 649Implemented buffer management that automatically increases the size of 650the buffers as necessary. 651 652iASL: Added an option (-vx) to "expect" particular remarks, warnings and 653errors. If the specified exception is not raised during compilation, the 654compiler emits an error. This is intended to support the ASL test suite, 655but may be useful in other contexts. 656 657iASL: Implemented a new predefined macro, __METHOD__, which returns a 658string containing the name of the current control method that is being 659compiled. 660 661iASL: Implemented debugger and table compiler support for the SDEI ACPI 662table (Software Delegated Exception Interface). James Morse 663<james.morse@arm.com> 664 665Unix/Linux makefiles: Added an option to disable compile optimizations. 666The disable occurs when the NOOPT flag is set to TRUE. 667theracermaster@gmail.com 668 669Acpidump: Added support for multiple DSDT and FACS tables. This can occur 670when there are different tables for 32-bit versus 64-bit. 671 672Enhanced error reporting for the ASL test suite (ASLTS) by removing 673unnecessary/verbose text, and emit the actual line number where an error 674has occurred. These changes are intended to improve the usefulness of the 675test suite. 676 677---------------------------------------- 67829 June 2017. Summary of changes for version 20170629: 679 680 6811) ACPICA kernel-resident subsystem: 682 683Tables: Implemented a deferred ACPI table verification. This is useful 684for operating systems where the tables cannot be verified in the early 685initialization stage due to early memory mapping limitations on some 686architectures. Lv Zheng. 687 688Tables: Removed the signature validation for dynamically loaded tables. 689Provides compatibility with other ACPI implementations. Previously, only 690SSDT tables were allowed, as per the ACPI specification. Now, any table 691signature can be used via the Load() operator. Lv Zheng. 692 693Tables: Fixed several mutex issues that could cause errors during table 694acquisition. Lv Zheng. 695 696Tables: Fixed a problem where an ACPI warning could be generated if a 697null pointer was passed to the AcpiPutTable interface. Lv Zheng. 698 699Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 700AcpiPutTable interfaces. This applies to the "late stage" table loading 701when the use of AcpiPutTable is no longer required (since the system 702memory manager is fully running and available). Lv Zheng. 703 704Fixed/Reverted a regression during processing of resource descriptors 705that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 706exception in this case. 707 708Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 709I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 710 711Interpreter: Fixed a possible fault if an Alias operator with an invalid 712or duplicate target is encountered during Alias creation in 713AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 714 715Added an option to use designated initializers for function pointers. 716Kees Cook <keescook@google.com> 717 718 7192) iASL Compiler/Disassembler and Tools: 720 721iASL: Allow compilation of External declarations with target pathnames 722that refer to existing named objects within the table. Erik Schmauss. 723 724iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 725FieldUnit name also is declared via External in the same table. Erik 726Schmauss. 727 728iASL: Allow existing scope names within pathnames used in External 729statements. For example: 730 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 731 Device (ABCD) 732 733iASL: IORT ACPI table: Implemented changes required to decode the new 734Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 735compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 736 737Disassembler: Don't abort disassembly on errors from External() 738statements. Erik Schmauss. 739 740Disassembler: fixed a possible fault when one of the Create*Field 741operators references a Resource Template. ACPICA Bugzilla 1396. 742 743iASL: In the source code, resolved some naming inconsistences across the 744parsing support. Fixes confusion between "Parse Op" and "Parse Node". 745Adds a new file, aslparseop.c 746 747---------------------------------------- 74831 May 2017. Summary of changes for version 20170531: 749 750 7510) ACPI 6.2 support: 752 753The ACPI specification version 6.2 has been released and is available at 754http://uefi.org/specifications 755 756This version of ACPICA fully supports the ACPI 6.2 specification. Changes 757are summarized below. 758 759New ACPI tables (Table Compiler/Disassembler/Templates): 760 HMAT (Heterogeneous Memory Attributes Table) 761 WSMT (Windows SMM Security Mitigation Table) 762 PPTT (Processor Properties Topology Table) 763 764New subtables for existing ACPI tables: 765 HEST (New subtable, Arch-deferred machine check) 766 SRAT (New subtable, Arch-specific affinity structure) 767 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 768 769Simple updates for existing ACPI tables: 770 BGRT (two new flag bits) 771 HEST (New bit defined for several subtables, GHES_ASSIST) 772 773New Resource Descriptors and Resource macros (Compiler/Disassembler): 774 PinConfig() 775 PinFunction() 776 PinGroup() 777 PinGroupConfig() 778 PinGroupFunction() 779 New type for hardware error notification (section 18.3.2.9) 780 781New predefined names/methods (Compiler/Interpreter): 782 _HMA (Heterogeneous Memory Attributes) 783 _LSI (Label Storage Information) 784 _LSR (Label Storage Read) 785 _LSW (Label Storage Write) 786 787ASL grammar/macro changes (Compiler): 788 For() ASL macro, implemented with the AML while operator 789 Extensions to Concatenate operator 790 Support for multiple definition blocks in same ASL file 791 Clarification for Buffer operator 792 Allow executable AML code underneath all scopes (Devices, etc.) 793 Clarification/change for the _OSI return value 794 ASL grammar update for reference operators 795 Allow a zero-length string for AML filename in DefinitionBlock 796 797Miscellaneous: 798 New device object notification value 799 Remove a notify value (0x0C) for graceful shutdown 800 New UUIDs for processor/cache properties and 801 physical package property 802 New _HID, ACPI0014 (Wireless Power Calibration Device) 803 804 8051) ACPICA kernel-resident subsystem: 806 807Added support to disable ACPI events on hardware-reduced platforms. 808Eliminates error messages of the form "Could not enable fixed event". Lv 809Zheng 810 811Fixed a problem using Device/Thermal objects with the ObjectType and 812DerefOf ASL operators. This support had not been fully/properly 813implemented. 814 815Fixed a problem where if a Buffer object containing a resource template 816was longer than the actual resource template, an error was generated -- 817even though the AML is legal. This case has been seen in the field. 818 819Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 820The values for DUAL_PIC and MULTIPLE_APIC were reversed. 821 822Added header file changes for the TPM2 ACPI table. Update to new version 823of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 824 825Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 826These interfaces are intended to be used only in conjunction with the 827predefined _DLM method (Device Lock Method). "This object appears in a 828device scope when AML access to the device must be synchronized with the 829OS environment". 830 831Example Code and Data Size: These are the sizes for the OS-independent 832acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 833debug version of the code includes the debug output trace mechanism and 834has a much larger code and data size. 835 836 Current Release: 837 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 838 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 839 Previous Release: 840 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 841 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 842 843 8442) iASL Compiler/Disassembler and Tools: 845 846iASL: Fixed a problem where an External() declaration could not refer to 847a Field Unit. Erik Schmauss. 848 849Disassembler: Improved support for the Switch/Case operators. This 850feature will disassemble AML code back to the original Switch operators 851when possible, instead of an If..Else sequence. David Box 852 853iASL and disassembler: Improved the handling of multiple extraneous 854parentheses for both ASL input and disassembled ASL output. 855 856Improved the behavior of the iASL compiler and disassembler to detect 857improper use of external declarations 858 859Disassembler: Now aborts immediately upon detection of an unknown AML 860opcode. The AML parser has no real way to recover from this, and can 861result in the creation of an ill-formed parse tree that causes errors 862later during the disassembly. 863 864All tools: Fixed a problem where the Unix application OSL did not handle 865control-c correctly. For example, a control-c could incorrectly wake the 866debugger. 867 868AcpiExec: Improved the Control-C handling and added a handler for 869segmentation faults (SIGSEGV). Supports both Windows and Unix-like 870environments. 871 872Reduced the verbosity of the generic unix makefiles. Previously, each 873compilation displayed the full set of compiler options. This has been 874eliminated as the options are easily inspected within the makefiles. Each 875compilation now results in a single line of output. 876 877---------------------------------------- 87803 March 2017. Summary of changes for version 20170303: 879 880 8810) ACPICA licensing: 882 883The licensing information at the start of each source code module has 884been updated. In addition to the Intel license, the dual GPLv2/BSD 885license has been added for completeness. Now, a single version of the 886source code should be suitable for all ACPICA customers. This is the 887major change for this release since it affects all source code modules. 888 889 8901) ACPICA kernel-resident subsystem: 891 892Fixed two issues with the common asltypes.h header that could cause 893problems in some environments: (Kim Jung-uk) 894 Removed typedef for YY_BUFFER_STATE ? 895 Fixes an error with earlier versions of Flex. 896 Removed use of FILE typedef (which is only defined in stdio.h) 897 898 8992) iASL Compiler/Disassembler and Tools: 900 901Disassembler: fixed a regression introduced in 20170224. A fix for a 902memory leak related to resource descriptor tags (names) could fault when 903the disassembler was generated with 64-bit compilers. 904 905The ASLTS test suite has been updated to implement a new testing 906architecture. During generation of the suite from ASL source, both the 907ASL and ASL+ compilers are now validated, as well as the disassembler 908itself (Erik Schmauss). The architecture executes as follows: 909 910 For every ASL source module: 911 Compile (legacy ASL compilation) 912 Disassemble the resulting AML to ASL+ source code 913 Compile the new ASL+ module 914 Perform a binary compare on the legacy AML and the new ASL+ AML 915 The ASLTS suite then executes normally using the AML binaries. 916 917---------------------------------------- 91824 February 2017. Summary of changes for version 20170224: 919 920 9211) ACPICA kernel-resident subsystem: 922 923Interpreter: Fixed two issues with the control method return value auto- 924repair feature, where an attempt to double-delete an internal object 925could result in an ACPICA warning (for _CID repair and others). No fault 926occurs, however, because the attempted deletion (actually a release to an 927internal cache) is detected and ignored via object poisoning. 928 929Debugger: Fixed an AML interpreter mutex issue during the single stepping 930of control methods. If certain debugger commands are executed during 931stepping, a mutex aquire/release error could occur. Lv Zheng. 932 933Fixed some issues generating ACPICA with the Intel C compiler by 934restoring the original behavior and compiler-specific include file in 935acenv.h. Lv Zheng. 936 937Example Code and Data Size: These are the sizes for the OS-independent 938acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 939debug version of the code includes the debug output trace mechanism and 940has a much larger code and data size. 941 942 Current Release: 943 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 944 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 945 Previous Release: 946 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 947 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 948 949 9502) iASL Compiler/Disassembler and Tools: 951 952iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 953tool has been designed, implemented, and included in this release. The 954key feature of this utility is that the original comments within the 955input ASL file are preserved during the conversion process, and included 956within the converted ASL+ file -- thus creating a transparent conversion 957of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 958 959 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 960converted code 961 962iASL/Disassembler: Improved the detection and correct disassembly of 963Switch/Case operators. This feature detects sequences of if/elseif/else 964operators that originated from ASL Switch/Case/Default operators and 965emits the original operators. David Box. 966 967iASL: Improved the IORT ACPI table support in the following areas. Lv 968Zheng: 969 Clear MappingOffset if the MappingCount is zero. 970 Fix the disassembly of the SMMU GSU interrupt offset. 971 Update the template file for the IORT table. 972 973Disassembler: Enhanced the detection and disassembly of resource 974template/descriptor within a Buffer object. An EndTag descriptor is now 975required to have a zero second byte, since all known ASL compilers emit 976this. This helps eliminate incorrect decisions when a buffer is 977disassembled (false positives on resource templates). 978 979---------------------------------------- 98019 January 2017. Summary of changes for version 20170119: 981 982 9831) General ACPICA software: 984 985Entire source code base: Added the 2017 copyright to all source code 986legal/licensing module headers and utility/tool signons. This includes 987the standard Linux dual-license header. This affects virtually every file 988in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 989the ACPICA test suite. 990 991 9922) iASL Compiler/Disassembler and Tools: 993 994iASL: Removed/fixed an inadvertent remark when a method argument 995containing a reference is used as a target operand within the method (and 996never used as a simple argument), as in the example below. Jeffrey Hugo. 997 998 dsdt.asl 1507: Store(0x1, Arg0) 999 Remark 2146 - ^ Method Argument is never used (Arg0) 1000 1001All tools: Removed the bit width of the compiler that generated the tool 1002from the common signon for all user space tools. This proved to be 1003confusing and unnecessary. This includes similar removal of HARDWARE_NAME 1004from the generic makefiles (Thomas Petazzoni). Example below. 1005 1006 Old: 1007 ASL+ Optimizing Compiler version 20170119-32 1008 ASL+ Optimizing Compiler version 20170119-64 1009 1010 New: 1011 ASL+ Optimizing Compiler version 20170119 1012 1013---------------------------------------- 101422 December 2016. Summary of changes for version 20161222: 1015 1016 10171) ACPICA kernel-resident subsystem: 1018 1019AML Debugger: Implemented a new mechanism to simplify and enhance 1020debugger integration into all environments, including kernel debuggers 1021and user-space utilities, as well as remote debug services. This 1022mechanism essentially consists of new OSL interfaces to support debugger 1023initialization/termination, as well as wait/notify interfaces to perform 1024the debugger handshake with the host. Lv Zheng. 1025 1026 New OSL interfaces: 1027 AcpiOsInitializeDebugger (void) 1028 AcpiOsTerminateDebugger (void) 1029 AcpiOsWaitCommandReady (void) 1030 AcpiOsNotifyCommandComplete (void) 1031 1032 New OS services layer: 1033 osgendbg.c -- Example implementation, and used for AcpiExec 1034 1035Update for Generic Address Space (GAS) support: Although the AccessWidth 1036and/or BitOffset fields of the GAS are not often used, this change now 1037fully supports these fields. This affects the internal support for FADT 1038registers, registers in other ACPI data tables, and the AcpiRead and 1039AcpiWrite public interfaces. Lv Zheng. 1040 1041Sleep support: In order to simplify integration of ACPI sleep for the 1042various host operating systems, a new OSL interface has been introduced. 1043AcpiOsEnterSleep allows the host to perform any required operations 1044before the final write to the sleep control register(s) is performed by 1045ACPICA. Lv Zheng. 1046 1047 New OSL interface: 1048 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 1049 1050 Called from these internal interfaces: 1051 AcpiHwLegacySleep 1052 AcpiHwExtendedSleep 1053 1054EFI support: Added a very small EFI/ACPICA example application. Provides 1055a simple demo for EFI integration, as well as assisting with resolution 1056of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 1057 1058 source/tools/efihello/efihello.c 1059 1060Local C library: Implemented several new functions to enhance ACPICA 1061portability, for environments where these clib functions are not 1062available (such as EFI). Lv Zheng: 1063 putchar 1064 getchar 1065 strpbrk 1066 strtok 1067 memmove 1068 1069Fixed a regression where occasionally a valid resource descriptor was 1070incorrectly detected as invalid at runtime, and a 1071AE_AML_NO_RESOURCE_END_TAG was returned. 1072 1073Fixed a problem with the recently implemented support that enables 1074control method invocations as Target operands to many ASL operators. 1075Warnings of this form: "Needed type [Reference], found [Processor]" were 1076seen at runtime for some method invocations. 1077 1078Example Code and Data Size: These are the sizes for the OS-independent 1079acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1080debug version of the code includes the debug output trace mechanism and 1081has a much larger code and data size. 1082 1083 Current Release: 1084 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 1085 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 1086 Previous Release: 1087 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1088 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1089 1090 10912) iASL Compiler/Disassembler and Tools: 1092 1093Disassembler: Enhanced output by adding the capability to detect and 1094disassemble ASL Switch/Case statements back to the original ASL source 1095code instead of if/else blocks. David Box. 1096 1097AcpiHelp: Split a large file into separate files based upon 1098functionality/purpose. New files are: 1099 ahaml.c 1100 ahasl.c 1101 1102---------------------------------------- 110317 November 2016. Summary of changes for version 20161117: 1104 1105 11061) ACPICA kernel-resident subsystem: 1107 1108Table Manager: Fixed a regression introduced in 20160729, "FADT support 1109cleanup". This was an attempt to remove all references in the source to 1110the FADT version 2, which never was a legal version number. It was 1111skipped because it was an early version of 64-bit support that was 1112eventually abandoned for the current 64-bit support. 1113 1114Interpreter: Fixed a problem where runtime implicit conversion was 1115incorrectly disabled for the ASL operators below. This brings the 1116behavior into compliance with the ACPI specification: 1117 FromBCD 1118 ToBCD 1119 ToDecimalString 1120 ToHexString 1121 ToInteger 1122 ToBuffer 1123 1124Table Manager: Added a new public interface, AcpiPutTable, used to 1125release and free an ACPI table returned by AcpiGetTable and related 1126interfaces. Lv Zheng. 1127 1128Example Code and Data Size: These are the sizes for the OS-independent 1129acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1130debug version of the code includes the debug output trace mechanism and 1131has a much larger code and data size. 1132 1133 Current Release: 1134 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1135 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1136 Previous Release: 1137 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1138 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1139 1140 11412) iASL Compiler/Disassembler and Tools: 1142 1143Disassembler: Fixed a regression for disassembly of Resource Template. 1144Detection of templates in the AML stream missed some types of templates. 1145 1146iASL: Fixed a problem where an Access Size error was returned for the PCC 1147address space when the AccessSize of the GAS register is greater than a 1148DWORD. Hoan Tran. 1149 1150iASL: Implemented several grammar changes for the operators below. These 1151changes are slated for the next version of the ACPI specification: 1152 RefOf - Disallow method invocation as an operand 1153 CondRefOf - Disallow method invocation as an operand 1154 DerefOf - Disallow operands that use the result from operators 1155that 1156 do not return a reference (Changed TermArg to 1157SuperName). 1158 1159iASL: Control method invocations are now allowed for Target operands, as 1160per the ACPI specification. Removed error for using a control method 1161invocation as a Target operand. 1162 1163Disassembler: Improved detection of Resource Templates, Unicode, and 1164Strings within Buffer objects. These subtypes do not contain a specific 1165opcode to indicate the originating ASL code, and they must be detected by 1166other means within the disassembler. 1167 1168iASL: Implemented an optimization improvement for 32-bit ACPI tables 1169(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 1170only after 64-bit to 32-bit truncation. A truncation warning message is 1171still emitted, however. 1172 1173AcpiXtract: Implemented handling for both types of line terminators (LF 1174or CR/LF) so that it can accept AcpiDump output files from any system. 1175Peter Wu. 1176 1177AcpiBin: Added two new options for comparing AML files: 1178 -a: compare and display ALL mismatches 1179 -o: start compare at this offset into the second file 1180 1181---------------------------------------- 118230 September 2016. Summary of changes for version 20160930: 1183 1184 11851) ACPICA kernel-resident subsystem: 1186 1187Fixed a regression in the internal AcpiTbFindTable function where a non 1188AE_OK exception could inadvertently be returned even if the function did 1189not fail. This problem affects the following operators: 1190 DataTableRegion 1191 LoadTable 1192 1193Fixed a regression in the LoadTable operator where a load to any 1194namespace location other than the root no longer worked properly. 1195 1196Increased the maximum loop count value that will result in the 1197AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 1198prevent infinite loops within the AML interpreter and thus the host OS 1199kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 12001,048,575). 1201 1202Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 1203acpixf.h file. This allows hosts to easily configure the maximum loop 1204count at runtime. 1205 1206Removed an illegal character in the strtoul64.c file. This character 1207caused errors with some C compilers. 1208 1209Example Code and Data Size: These are the sizes for the OS-independent 1210acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1211debug version of the code includes the debug output trace mechanism and 1212has a much larger code and data size. 1213 1214 Current Release: 1215 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1216 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1217 Previous Release: 1218 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 1219 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 1220 1221 12222) iASL Compiler/Disassembler and Tools: 1223 1224Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 1225the simpler ASL ElseIf keyword. During the conversion, a trailing If 1226block could be lost and missing from the disassembled output. 1227 1228iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 1229the missing rule caused a parse error when using the Index operator as an 1230operand to ObjectType. This construct now compiles properly. Example: 1231 ObjectType(PKG1[4]). 1232 1233iASL: Correctly handle unresolved symbols in the hardware map file (-lm 1234option). Previously, unresolved symbols could cause a protection fault. 1235Such symbols are now marked as unresolved in the map file. 1236 1237iASL: Implemented support to allow control method invocations as an 1238operand to the ASL DeRefOf operator. Example: 1239 DeRefOf(MTH1(Local0)) 1240 1241Disassembler: Improved support for the ToPLD ASL macro. Detection of a 1242possible _PLD buffer now includes examination of both the normal buffer 1243length (16 or 20) as well as the surrounding AML package length. 1244 1245Disassembler: Fixed a problem with the decoding of complex expressions 1246within the Divide operator for ASL+. For the case where both the quotient 1247and remainder targets are specified, the entire statement cannot be 1248disassembled. Previously, the output incorrectly contained a mix of ASL- 1249and ASL+ operators. This mixed statement causes a syntax error when 1250compiled. Example: 1251 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 1252disassembled to: 1253 Divide (INT1 + 6, 128, RSLT, QUOT) 1254 1255iASL/Tools: Added support to process AML and non-AML ACPI tables 1256consistently. For the disassembler and AcpiExec, allow all types of ACPI 1257tables (AML and data tables). For the iASL -e option, allow only AML 1258tables (DSDT/SSDT). 1259 1260---------------------------------------- 126131 August 2016. Summary of changes for version 20160831: 1262 1263 12641) ACPICA kernel-resident subsystem: 1265 1266Improve support for the so-called "module-level code", which is defined 1267to be math, logical and control AML opcodes that appear outside of any 1268control method. This change improves the support by adding more opcodes 1269that can be executed in the manner. Some other issues have been solved, 1270and the ASL grammar changes to support such code under all scope 1271operators (Device, etc.) are complete. Lv Zheng. 1272 1273UEFI support: these OSL functions have been implemented. This is an 1274additional step toward supporting the AcpiExec utility natively (with 1275full hardware access) under UEFI. Marcelo Ferreira. 1276 AcpiOsReadPciConfiguration 1277 AcpiOsWritePciConfiguration 1278 1279Fixed a possible mutex error during control method auto-serialization. Lv 1280Zheng. 1281 1282Updated support for the Generic Address Structure by fully implementing 1283all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 1284Zheng. 1285 1286Updated the return value for the internal _OSI method. Instead of 12870xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 1288for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 1289implementations, and will be reflected and clarified in the next version 1290of the ACPI specification. 1291 1292Implemented two new table events that can be passed to an ACPICA table 1293handler. These events are used to indicate a table installation or 1294uninstallation. These events are used in addition to existed table load 1295and unload events. Lv Zheng. 1296 1297Implemented a cleanup for all internal string-to-integer conversions. 1298Consolidate multiple versions of this functionality and limit possible 1299bases to either 10 or 16 to simplify the code. Adds a new file, 1300utstrtoul64. 1301 1302Cleanup the inclusion order of the various compiler-specific headers. 1303This simplifies build configuration management. The compiler-specific 1304headers are now split out from the host-specific headers. Lv Zheng. 1305 1306Example Code and Data Size: These are the sizes for the OS-independent 1307acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1308debug version of the code includes the debug output trace mechanism and 1309has a much larger code and data size. 1310 1311 Current Release: 1312 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 1313 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 1314 1315 13162) iASL Compiler/Disassembler and Tools: 1317 1318iASL/AcpiExec: Added a command line option to display the build date/time 1319of the tool (-vd). This can be useful to verify that the correct version 1320of the tools are being used. 1321 1322AML Debugger: Implemented a new subcommand ("execute predef") to execute 1323all predefined control methods and names within the current namespace. 1324This can be useful for debugging problems with ACPI tables and the ACPI 1325namespace. 1326 1327---------------------------------------- 132829 July 2016. Summary of changes for version 20160729: 1329 1330 13311) ACPICA kernel-resident subsystem: 1332 1333Implemented basic UEFI support for the various ACPICA tools. This 1334includes: 13351) An OSL to implement the various AcpiOs* interfaces on UEFI. 13362) Support to obtain the ACPI tables on UEFI. 13373) Local implementation of required C library functions not available on 1338UEFI. 13394) A front-end (main) function for the tools for UEFI-related 1340initialization. 1341 1342The initial deployment of this support is the AcpiDump utility executing 1343as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 1344Current environments supported are Linux/Unix. MSVC generation is not 1345supported at this time. See the generate/efi/README file for build 1346instructions. Lv Zheng. 1347 1348Future plans include porting the AcpiExec utility to execute natively on 1349the platform with I/O and memory access. This will allow viewing/dump of 1350the platform namespace and native execution of ACPI control methods that 1351access the actual hardware. To fully implement this support, the OSL 1352functions below must be implemented with UEFI interfaces. Any community 1353help in the implementation of these functions would be appreciated: 1354 AcpiOsReadPort 1355 AcpiOsWritePort 1356 AcpiOsReadMemory 1357 AcpiOsWriteMemory 1358 AcpiOsReadPciConfiguration 1359 AcpiOsWritePciConfiguration 1360 1361Restructured and standardized the C library configuration for ACPICA, 1362resulting in the various configuration options below. This includes a 1363global restructuring of the compiler-dependent and platform-dependent 1364include files. These changes may affect the existing platform-dependent 1365configuration files on some hosts. Lv Zheng. 1366 1367The current C library configuration options appear below. For any issues, 1368it may be helpful to examine the existing compiler-dependent and 1369platform-dependent files as examples. Lv Zheng. 1370 13711) Linux kernel: 1372 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 1373library. 1374 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 13752) Unix/Windows/BSD applications: 1376 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 1377library. 1378 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 13793) UEFI applications: 1380 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 1381library. 1382 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 13834) UEFI applications (EDK2/StdLib): 1384 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 1385 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 1386 1387 1388AML interpreter: "module-level code" support. Allows for execution of so- 1389called "executable" AML code (math/logical operations, etc.) outside of 1390control methods not just at the module level (top level) but also within 1391any scope declared outside of a control method - Scope{}, Device{}, 1392Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 1393 1394Simplified the configuration of the "maximum AML loops" global option by 1395adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 1396modified at runtime. 1397 1398 1399Example Code and Data Size: These are the sizes for the OS-independent 1400acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1401debug version of the code includes the debug output trace mechanism and 1402has a much larger code and data size. 1403 1404 Current Release: 1405 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 1406 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 1407 1408 14092) iASL Compiler/Disassembler and Tools: 1410 1411iASL: Add full support for the RASF ACPI table (RAS Features Table). 1412Includes disassembler, data table compiler, and header support. 1413 1414iASL Expand "module-level code" support. Allows for 1415compilation/disassembly of so-called "executable" AML code (math/logical 1416operations, etc.) outside of control methods not just at the module level 1417(top level) but also within any scope declared outside of a control 1418method - Scope{}, Device{}, Processor{}, PowerResource{}, and 1419ThermalZone{}. 1420 1421AcpiDump: Added support for dumping all SSDTs on newer versions of 1422Windows. These tables are now easily available -- SSDTs are not available 1423through the registry on older versions. 1424 1425---------------------------------------- 142627 May 2016. Summary of changes for version 20160527: 1427 1428 14291) ACPICA kernel-resident subsystem: 1430 1431Temporarily reverted the new arbitrary bit length/alignment support in 1432AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 1433a number of regressions with the new code that need to be fully resolved 1434and tested before this support can be finally integrated into ACPICA. 1435Apologies for any inconveniences these issues may have caused. 1436 1437The ACPI message macros are not configurable (ACPI_MSG_ERROR, 1438ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 1439and ACPI_MSG_BIOS_WARNING). Lv Zheng. 1440 1441Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 1442option. Adds a new return macro, return_STR. Junk-uk Kim. 1443 1444Example Code and Data Size: These are the sizes for the OS-independent 1445acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1446debug version of the code includes the debug output trace mechanism and 1447has a much larger code and data size. 1448 1449 Current Release: 1450 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 1451 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1452 Previous Release: 1453 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1454 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 1455 1456---------------------------------------- 145722 April 2016. Summary of changes for version 20160422: 1458 14591) ACPICA kernel-resident subsystem: 1460 1461Fixed a regression in the GAS (generic address structure) arbitrary bit 1462support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 1463and incorrect return values. Lv Zheng. ACPICA BZ 1270. 1464 1465ACPI 6.0: Added support for new/renamed resource macros. One new argument 1466was added to each of these macros, and the original name has been 1467deprecated. The AML disassembler will always disassemble to the new 1468names. Support for the new macros was added to iASL, disassembler, 1469resource manager, and the acpihelp utility. ACPICA BZ 1274. 1470 1471 I2cSerialBus -> I2cSerialBusV2 1472 SpiSerialBus -> SpiSerialBusV2 1473 UartSerialBus -> UartSerialBusV2 1474 1475ACPI 6.0: Added support for a new integer field that was appended to the 1476package object returned by the _BIX method. This adds iASL compile-time 1477and AML runtime error checking. ACPICA BZ 1273. 1478 1479ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 1480Subspace Type2" (Headers, Disassembler, and data table compiler). 1481 1482Example Code and Data Size: These are the sizes for the OS-independent 1483acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1484debug version of the code includes the debug output trace mechanism and 1485has a much larger code and data size. 1486 1487 Current Release: 1488 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1489 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1490 Previous Release: 1491 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 1492 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 1493 1494 14952) iASL Compiler/Disassembler and Tools: 1496 1497iASL: Implemented an ASL grammar extension to allow/enable executable 1498"module-level code" to be created and executed under the various 1499operators that create new scopes. This type of AML code is already 1500supported in all known AML interpreters, and the grammar change will 1501appear in the next version of the ACPI specification. Simplifies the 1502conditional runtime creation of named objects under these object types: 1503 1504 Device 1505 PowerResource 1506 Processor 1507 Scope 1508 ThermalZone 1509 1510iASL: Implemented a new ASL extension, a "For" loop macro to add greater 1511ease-of-use to the ASL language. The syntax is similar to the 1512corresponding C operator, and is implemented with the existing AML While 1513opcode -- thus requiring no changes to existing AML interpreters. 1514 1515 For (Initialize, Predicate, Update) {TermList} 1516 1517Grammar: 1518 ForTerm := 1519 For ( 1520 Initializer // Nothing | TermArg => ComputationalData 1521 Predicate // Nothing | TermArg => ComputationalData 1522 Update // Nothing | TermArg => ComputationalData 1523 ) {TermList} 1524 1525 1526iASL: The _HID/_ADR detection and validation has been enhanced to search 1527under conditionals in order to allow these objects to be conditionally 1528created at runtime. 1529 1530iASL: Fixed several issues with the constant folding feature. The 1531improvement allows better detection and resolution of statements that can 1532be folded at compile time. ACPICA BZ 1266. 1533 1534iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 1535conversion to the ASL ElseIf operator where incorrect ASL code could be 1536generated. 1537 1538iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 1539sometimes an extra (and extraneous) set of parentheses were emitted for 1540some combinations of operators. Although this did not cause any problems 1541with recompilation of the disassembled code, it made the code more 1542difficult to read. David Box. ACPICA BZ 1231. 1543 1544iASL: Changed to ignore the unreferenced detection for predefined names 1545of resource descriptor elements, when the resource descriptor is 1546created/defined within a control method. 1547 1548iASL: Disassembler: Fix a possible fault with externally declared Buffer 1549objects. 1550 1551---------------------------------------- 155218 March 2016. Summary of changes for version 20160318: 1553 15541) ACPICA kernel-resident subsystem: 1555 1556Added support for arbitrary bit lengths and bit offsets for registers 1557defined by the Generic Address Structure. Previously, only aligned bit 1558lengths of 8/16/32/64 were supported. This was sufficient for many years, 1559but recently some machines have been seen that require arbitrary bit- 1560level support. ACPICA BZ 1240. Lv Zheng. 1561 1562Fixed an issue where the \_SB._INI method sometimes must be evaluated 1563before any _REG methods are evaluated. Lv Zheng. 1564 1565Implemented several changes related to ACPI table support 1566(Headers/Disassembler/TableCompiler): 1567NFIT: For ACPI 6.1, updated to add some additional new fields and 1568constants. 1569FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 15706). 1571DMAR: Added new constants per the 10/2014 DMAR spec. 1572IORT: Added new subtable per the 10/2015 IORT spec. 1573HEST: For ACPI 6.1, added new constants and new subtable. 1574DBG2: Added new constants per the 12/2015 DBG2 spec. 1575FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 1576ACPICA BZ 1249. 1577ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 1578 1579Updated header support for the DMAR table to match the current version of 1580the related spec. 1581 1582Added extensions to the ASL Concatenate operator to allow any ACPI object 1583to be passed as an operand. Any object other than Integer/String/Buffer 1584simply returns a string containing the object type. This extends the 1585usefulness of the Printf macros. Previously, Concatenate would abort the 1586control method if a non-data object was encountered. 1587 1588ACPICA source code: Deployed the C "const" keyword across the source code 1589where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 1590 1591Example Code and Data Size: These are the sizes for the OS-independent 1592acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1593debug version of the code includes the debug output trace mechanism and 1594has a much larger code and data size. 1595 1596 Current Release: 1597 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 1598 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 1599 Previous Release: 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 1602 1603 16042) iASL Compiler/Disassembler and Tools: 1605 1606iASL/Disassembler: Improved the heuristic used to determine the number of 1607arguments for an externally defined control method (a method in another 1608table). Although this is an improvement, there is no deterministic way to 1609"guess" the number of method arguments. Only the ACPI 6.0 External opcode 1610will completely solve this problem as it is deployed (automatically) in 1611newer BIOS code. 1612 1613iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 1614statements that could cause errors when the disassembled file is 1615compiled. ACPICA BZ 1243. David Box. 1616 1617iASL: Fixed a regression caused by the merger of the two versions of the 1618local strtoul64. Because of a dependency on a global variable, strtoul64 1619could return an error for integers greater than a 32-bit value. ACPICA BZ 16201260. 1621 1622iASL: Fixed a regression where a fault could occur for an ASL Return 1623statement if it invokes a control method that is not resolved. ACPICA BZ 16241264. 1625 1626AcpiXtract: Improved input file validation: detection of binary files and 1627non-acpidump text files. 1628 1629---------------------------------------- 163012 February 2016. Summary of changes for version 20160212: 1631 16321) ACPICA kernel-resident subsystem: 1633 1634Implemented full support for the ACPI 6.1 specification (released in 1635January). This version of the specification is available at: 1636http://www.uefi.org/specifications 1637 1638Only a relatively small number of changes were required in ACPICA to 1639support ACPI 6.1, in these areas: 1640- New predefined names 1641- New _HID values 1642- A new subtable for HEST 1643- A few other header changes for new values 1644 1645Ensure \_SB_._INI is executed before any _REG methods are executed. There 1646appears to be existing BIOS code that relies on this behavior. Lv Zheng. 1647 1648Reverted a change made in version 20151218 which enabled method 1649invocations to be targets of various ASL operators (SuperName and Target 1650grammar elements). While the new behavior is supported by the ACPI 1651specification, other AML interpreters do not support this behavior and 1652never will. The ACPI specification will be updated for ACPI 6.2 to remove 1653this support. Therefore, the change was reverted to the original ACPICA 1654behavior. 1655 1656ACPICA now supports the GCC 6 compiler. 1657 1658Current Release: (Note: build changes increased sizes) 1659 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 1660 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 1661Previous Release: 1662 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 1663 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 1664 1665 16662) iASL Compiler/Disassembler and Tools: 1667 1668Completed full support for the ACPI 6.0 External() AML opcode. The 1669compiler emits an external AML opcode for each ASL External statement. 1670This opcode is used by the disassembler to assist with the disassembly of 1671external control methods by specifying the required number of arguments 1672for the method. AML interpreters do not use this opcode. To ensure that 1673interpreters do not even see the opcode, a block of one or more external 1674opcodes is surrounded by an "If(0)" construct. As this feature becomes 1675commonly deployed in BIOS code, the ability of disassemblers to correctly 1676disassemble AML code will be greatly improved. David Box. 1677 1678iASL: Implemented support for an optional cross-reference output file. 1679The -lx option will create a the cross-reference file with the suffix 1680"xrf". Three different types of cross-reference are created in this file: 1681- List of object references made from within each control method 1682- Invocation (caller) list for each user-defined control method 1683- List of references to each non-method object in the namespace 1684 1685iASL: Method invocations as ASL Target operands are now disallowed and 1686flagged as errors in preparation for ACPI 6.2 (see the description of the 1687problem above). 1688 1689---------------------------------------- 16908 January 2016. Summary of changes for version 20160108: 1691 16921) ACPICA kernel-resident subsystem: 1693 1694Updated all ACPICA copyrights and signons to 2016: Added the 2016 1695copyright to all source code module headers and utility/tool signons. 1696This includes the standard Linux dual-license header. This affects 1697virtually every file in the ACPICA core subsystem, iASL compiler, all 1698ACPICA utilities, and the ACPICA test suite. 1699 1700Fixed a regression introduced in version 20151218 concerning the 1701execution of so-called module-level ASL/AML code. Namespace objects 1702created under a module-level If() construct were not properly/fully 1703entered into the namespace and could cause an interpreter fault when 1704accessed. 1705 1706Example Code and Data Size: These are the sizes for the OS-independent 1707acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1708debug version of the code includes the debug output trace mechanism and 1709has a much larger code and data size. 1710 1711Current Release: 1712 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 1713 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 1714 Previous Release: 1715 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 1716 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 1717 1718 17192) iASL Compiler/Disassembler and Tools: 1720 1721Fixed a problem with the compilation of the GpioIo and GpioInt resource 1722descriptors. The _PIN field name was incorrectly defined to be an array 1723of 32-bit values, but the _PIN values are in fact 16 bits each. This 1724would cause incorrect bit width warnings when using Word (16-bit) fields 1725to access the descriptors. 1726 1727 1728---------------------------------------- 172918 December 2015. Summary of changes for version 20151218: 1730 17311) ACPICA kernel-resident subsystem: 1732 1733Implemented per-AML-table execution of "module-level code" as individual 1734ACPI tables are loaded into the namespace during ACPICA initialization. 1735In other words, any module-level code within an AML table is executed 1736immediately after the table is loaded, instead of batched and executed 1737after all of the tables have been loaded. This provides compatibility 1738with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 1739David Box. 1740 1741To fully support the feature above, the default operation region handlers 1742for the SystemMemory, SystemIO, and PCI_Config address spaces are now 1743installed before any ACPI tables are loaded. This enables module-level 1744code to access these address spaces during the table load and module- 1745level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 1746Box. 1747 1748Implemented several changes to the internal _REG support in conjunction 1749with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 1750utilities for the changes above. Although these tools were changed, host 1751operating systems that simply use the default handlers for SystemMemory, 1752SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 1753 1754For example, in the code below, DEV1 is conditionally added to the 1755namespace by the DSDT via module-level code that accesses an operation 1756region. The SSDT references DEV1 via the Scope operator. DEV1 must be 1757created immediately after the DSDT is loaded in order for the SSDT to 1758successfully reference DEV1. Previously, this code would cause an 1759AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 1760fully supported by ACPICA. 1761 1762 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 1763 { 1764 OperationRegion (OPR1, SystemMemory, 0x400, 32) 1765 Field (OPR1, AnyAcc, NoLock, Preserve) 1766 { 1767 FLD1, 1 1768 } 1769 If (FLD1) 1770 { 1771 Device (\DEV1) 1772 { 1773 } 1774 } 1775 } 1776 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 1777 { 1778 External (\DEV1, DeviceObj) 1779 Scope (\DEV1) 1780 { 1781 } 1782 } 1783 1784Fixed an AML interpreter problem where control method invocations were 1785not handled correctly when the invocation was itself a SuperName argument 1786to another ASL operator. In these cases, the method was not invoked. 1787ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 1788argument: 1789 Store 1790 Acquire, Wait 1791 CondRefOf, RefOf 1792 Decrement, Increment 1793 Load, Unload 1794 Notify 1795 Signal, Release, Reset 1796 SizeOf 1797 1798Implemented automatic String-to-ObjectReference conversion support for 1799packages returned by predefined names (such as _DEP). A common BIOS error 1800is to add double quotes around an ObjectReference namepath, which turns 1801the reference into an unexpected string object. This support detects the 1802problem and corrects it before the package is returned to the caller that 1803invoked the method. Lv Zheng. 1804 1805Implemented extensions to the Concatenate operator. Concatenate now 1806accepts any type of object, it is not restricted to simply 1807Integer/String/Buffer. For objects other than these 3 basic data types, 1808the argument is treated as a string containing the name of the object 1809type. This expands the utility of Concatenate and the Printf/Fprintf 1810macros. ACPICA BZ 1222. 1811 1812Cleaned up the output of the ASL Debug object. The timer() value is now 1813optional and no longer emitted by default. Also, the basic data types of 1814Integer/String/Buffer are simply emitted as their values, without a data 1815type string -- since the data type is obvious from the output. ACPICA BZ 18161221. 1817 1818Example Code and Data Size: These are the sizes for the OS-independent 1819acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1820debug version of the code includes the debug output trace mechanism and 1821has a much larger code and data size. 1822 1823 Current Release: 1824 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 1825 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 1826 Previous Release: 1827 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 1828 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 1829 1830 18312) iASL Compiler/Disassembler and Tools: 1832 1833iASL: Fixed some issues with the ASL Include() operator. This operator 1834was incorrectly defined in the iASL parser rules, causing a new scope to 1835be opened for the code within the include file. This could lead to 1836several issues, including allowing ASL code that is technically illegal 1837and not supported by AML interpreters. Note, this does not affect the 1838related #include preprocessor operator. ACPICA BZ 1212. 1839 1840iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 1841operator is essentially an ASL macro since there is no AML opcode 1842associated with it. The code emitted by the iASL compiler for ElseIf is 1843an Else opcode followed immediately by an If opcode. The disassembler 1844will now emit an ElseIf if it finds an Else immediately followed by an 1845If. This simplifies the decoded ASL, especially for deeply nested 1846If..Else and large Switch constructs. Thus, the disassembled code more 1847closely follows the original source ASL. ACPICA BZ 1211. Example: 1848 1849 Old disassembly: 1850 Else 1851 { 1852 If (Arg0 == 0x02) 1853 { 1854 Local0 = 0x05 1855 } 1856 } 1857 1858 New disassembly: 1859 ElseIf (Arg0 == 0x02) 1860 { 1861 Local0 = 0x05 1862 } 1863 1864AcpiExec: Added support for the new module level code behavior and the 1865early region installation. This required a small change to the 1866initialization, since AcpiExec must install its own operation region 1867handlers. 1868 1869AcpiExec: Added support to make the debug object timer optional. Default 1870is timer disabled. This cleans up the debug object output -- the timer 1871data is rarely used. 1872 1873AcpiExec: Multiple ACPI tables are now loaded in the order that they 1874appear on the command line. This can be important when there are 1875interdependencies/references between the tables. 1876 1877iASL/Templates. Add support to generate template files with multiple 1878SSDTs within a single output file. Also added ommand line support to 1879specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 18801223, 1225. 1881 1882 1883---------------------------------------- 188424 November 2015. Summary of changes for version 20151124: 1885 18861) ACPICA kernel-resident subsystem: 1887 1888Fixed a possible regression for a previous update to FADT handling. The 1889FADT no longer has a fixed table ID, causing some issues with code that 1890was hardwired to a specific ID. Lv Zheng. 1891 1892Fixed a problem where the method auto-serialization could interfere with 1893the current SyncLevel. This change makes the auto-serialization support 1894transparent to the SyncLevel support and management. 1895 1896Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 1897interface is intended for early access to the namespace during the 1898initial namespace device discovery walk. The _SUB method has been seen to 1899access operation regions in some cases, causing errors because the 1900operation regions are not fully initialized. 1901 1902AML Debugger: Fixed some issues with the terminate/quit/exit commands 1903that can cause faults. Lv Zheng. 1904 1905AML Debugger: Add thread ID support so that single-step mode only applies 1906to the AML Debugger thread. This prevents runtime errors within some 1907kernels. Lv Zheng. 1908 1909Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 1910methods that are invoked by this interface are optional, removed warnings 1911emitted for the case where one or more of these methods do not exist. 1912ACPICA BZ 1208, original change by Prarit Bhargava. 1913 1914Made a major pass through the entire ACPICA source code base to 1915standardize formatting that has diverged a bit over time. There are no 1916functional changes, but this will of course cause quite a few code 1917differences from the previous ACPICA release. 1918 1919Example Code and Data Size: These are the sizes for the OS-independent 1920acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1921debug version of the code includes the debug output trace mechanism and 1922has a much larger code and data size. 1923 1924 Current Release: 1925 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 1926 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 1927 Previous Release: 1928 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1929 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 1930 1931 19322) iASL Compiler/Disassembler and Tools: 1933 1934iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 1935definition blocks within a single ASL file and the resulting AML file. 1936Support for this type of file was also added to the various tools that 1937use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 1938example code below shows two definition blocks within the same file: 1939 1940 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 19410x12345678) 1942 { 1943 } 1944 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 1945 { 1946 } 1947 1948iASL: Enhanced typechecking for the Name() operator. All expressions for 1949the value of the named object must be reduced/folded to a single constant 1950at compile time, as per the ACPI specification (the AML definition of 1951Name()). 1952 1953iASL: Fixed some code indentation issues for the -ic and -ia options (C 1954and assembly headers). Now all emitted code correctly begins in column 1. 1955 1956iASL: Added an error message for an attempt to open a Scope() on an 1957object defined in an SSDT. The DSDT is always loaded into the namespace 1958first, so any attempt to open a Scope on an SSDT object will fail at 1959runtime. 1960 1961 1962---------------------------------------- 196330 September 2015. Summary of changes for version 20150930: 1964 19651) ACPICA kernel-resident subsystem: 1966 1967Debugger: Implemented several changes and bug fixes to assist support for 1968the in-kernel version of the AML debugger. Lv Zheng. 1969- Fix the "predefined" command for in-kernel debugger. 1970- Do not enter debug command loop for the help and version commands. 1971- Disallow "execute" command during execution/single-step of a method. 1972 1973Interpreter: Updated runtime typechecking for all operators that have 1974target operands. The operand is resolved and validated that it is legal. 1975For example, the target cannot be a non-data object such as a Device, 1976Mutex, ThermalZone, etc., as per the ACPI specification. 1977 1978Debugger: Fixed the double-mutex user I/O handshake to work when local 1979deadlock detection is enabled. 1980 1981Debugger: limited display of method locals and arguments (LocalX and 1982ArgX) to only those that have actually been initialized. This prevents 1983lines of extraneous output. 1984 1985Updated the definition of the NFIT table to correct the bit polarity of 1986one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 1987 1988Example Code and Data Size: These are the sizes for the OS-independent 1989acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1990debug version of the code includes the debug output trace mechanism and 1991has a much larger code and data size. 1992 1993 Current Release: 1994 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1995 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 1996 Previous Release: 1997 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 1998 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 1999 2000 20012) iASL Compiler/Disassembler and Tools: 2002 2003iASL: Improved the compile-time typechecking for operands of many of the 2004ASL operators: 2005 2006-- Added an option to disable compiler operand/operator typechecking (- 2007ot). 2008 2009-- For the following operators, the TermArg operands are now validated 2010when possible to be Integer data objects: BankField, OperationRegion, 2011DataTableRegion, Buffer, and Package. 2012 2013-- Store (Source, Target): Both the source and target operands are 2014resolved and checked that the operands are both legal. For example, 2015neither operand can be a non-data object such as a Device, Mutex, 2016ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 2017operator can be used to store an object to any type of target object. 2018 2019-- Store (Source, Target): If the source is a Package object, the target 2020must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 2021is a Package, the source must also be a Package. 2022 2023-- Store (Source, Target): A warning is issued if the source and target 2024resolve to the identical named object. 2025 2026-- Store (Source, <method invocation>): An error is generated for the 2027target method invocation, as this construct is not supported by the AML 2028interpreter. 2029 2030-- For all ASL math and logic operators, the target operand must be a 2031data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 2032includes the function return value also. 2033 2034-- External declarations are also included in the typechecking where 2035possible. External objects defined using the UnknownObj keyword cannot be 2036typechecked, however. 2037 2038iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 2039operator: 2040- Legacy code: Index(PKG1, 3) 2041- New ASL+ code: PKG1[3] 2042This completes the ACPI 6.0 ASL+ support as it was the only operator not 2043supported. 2044 2045iASL: Fixed the file suffix for the preprocessor output file (.i). Two 2046spaces were inadvertently appended to the filename, causing file access 2047and deletion problems on some systems. 2048 2049ASL Test Suite (ASLTS): Updated the master makefile to generate all 2050possible compiler output files when building the test suite -- thus 2051exercising these features of the compiler. These files are automatically 2052deleted when the test suite exits. 2053 2054 2055---------------------------------------- 205618 August 2015. Summary of changes for version 20150818: 2057 20581) ACPICA kernel-resident subsystem: 2059 2060Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 2061Zheng. ACPICA BZ 1186. 2062 2063Completed development to ensure that the ACPICA Disassembler and Debugger 2064are fully standalone components of ACPICA. Removed cross-component 2065dependences. Lv Zheng. 2066 2067The max-number-of-AML-loops is now runtime configurable (previously was 2068compile-time only). This is essentially a loop timeout to force-abort 2069infinite AML loops. ACPCIA BZ 1192. 2070 2071Debugger: Cleanup output to dump ACPI names and namepaths without any 2072trailing underscores. Lv Zheng. ACPICA BZ 1135. 2073 2074Removed unnecessary conditional compilations across the Debugger and 2075Disassembler components where entire modules could be left uncompiled. 2076 2077The aapits test is deprecated and has been removed from the ACPICA git 2078tree. The test has never been completed and has not been maintained, thus 2079becoming rather useless. ACPICA BZ 1015, 794. 2080 2081A batch of small changes to close bugzilla and other reports: 2082- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 2083- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 2084- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 2085- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 2086Moore. 2087- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 2088ACPICA BZ 1184. 2089- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 2090operators. 2091- Debugger: Split debugger initialization/termination interfaces. Lv 2092Zheng. 2093- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 2094identification. 2095- AcpiExec: Add debug message during _REG method phase during table 2096load/init. 2097- AcpiNames: Fix a regression where some output was missing and no longer 2098emitted. 2099- Debugger: General cleanup and simplification. Lv Zheng. 2100- Disassembler: Cleanup use of several global option variables. Lv Zheng. 2101 2102Example Code and Data Size: These are the sizes for the OS-independent 2103acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2104debug version of the code includes the debug output trace mechanism and 2105has a much larger code and data size. 2106 2107 Current Release: 2108 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2109 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2110 Previous Release: 2111 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2112 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2113 2114 21152) iASL Compiler/Disassembler and Tools: 2116 2117AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 2118were not handled properly and caused load errors. Now, properly invoke 2119and use the ACPICA auto-reallocate mechanism for ACPI table data 2120structures. ACPICA BZ 1188 2121 2122AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 2123BZ 1190. 2124 2125AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 2126AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 2127executed during initialization. ACPICA BZ 1187, 1189. 2128 2129iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 2130that corresponds to each disassembled ASL statement, to simplify 2131debugging. ACPICA BZ 1191. 2132 2133Debugger: Add option to the "objects" command to display a summary of the 2134current namespace objects (Object type and count). This is displayed if 2135the command is entered with no arguments. 2136 2137AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 2138 2139 2140---------------------------------------- 214117 July 2015. Summary of changes for version 20150717: 2142 21431) ACPICA kernel-resident subsystem: 2144 2145Improved the partitioning between the Debugger and Disassembler 2146components. This allows the Debugger to be used standalone within kernel 2147code without the Disassembler (which is used for single stepping also). 2148This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 2149 2150Debugger: Implemented a new command to trace the execution of control 2151methods (Trace). This is especially useful for the in-kernel version of 2152the debugger when file I/O may not be available for method trace output. 2153See the ACPICA reference for more information. Lv Zheng. 2154 2155Moved all C library prototypes (used for the local versions of these 2156functions when requested) to a new header, acclib.h 2157Cleaned up the use of non-ANSI C library functions. These functions are 2158implemented locally in ACPICA. Moved all such functions to a common 2159source file, utnonansi.c 2160 2161Debugger: Fixed a problem with the "!!" command (get last command 2162executed) where the debugger could enter an infinite loop and eventually 2163crash. 2164 2165Removed the use of local macros that were used for some of the standard C 2166library functions to automatically cast input parameters. This mostly 2167affected the is* functions where the input parameter is defined to be an 2168int. This required a few modifications to the main ACPICA source code to 2169provide casting for these functions and eliminate possible compiler 2170warnings for these parameters. 2171 2172Across the source code, added additional status/error checking to resolve 2173issues discovered by static source code analysis tools such as Coverity. 2174 2175Example Code and Data Size: These are the sizes for the OS-independent 2176acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2177debug version of the code includes the debug output trace mechanism and 2178has a much larger code and data size. 2179 2180 Current Release: 2181 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2182 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2183 Previous Release: 2184 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 2185 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 2186 2187 21882) iASL Compiler/Disassembler and Tools: 2189 2190iASL: Fixed a regression where the device map file feature no longer 2191worked properly when used in conjunction with the disassembler. It only 2192worked properly with the compiler itself. 2193 2194iASL: Implemented a new warning for method LocalX variables that are set 2195but never used (similar to a C compiler such as gcc). This also applies 2196to ArgX variables that are not defined by the parent method, and are 2197instead (legally) used as local variables. 2198 2199iASL/Preprocessor: Finished the pass-through of line numbers from the 2200preprocessor to the compiler. This ensures that compiler errors/warnings 2201have the correct original line numbers and filenames, regardless of any 2202#include files. 2203 2204iASL/Preprocessor: Fixed a couple of issues with comment handling and the 2205pass-through of comments to the preprocessor output file (which becomes 2206the compiler input file). Also fixed a problem with // comments that 2207appear after a math expression. 2208 2209iASL: Added support for the TCPA server table to the table compiler and 2210template generator. (The client table was already previously supported) 2211 2212iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 2213identify the iASL compiler. 2214 2215Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 2216multiple times. The new names are ACPI_SIGN_NEGATIVE and 2217ACPI_SIGN_POSITIVE. 2218 2219AcpiHelp: Update to expand help messages for the iASL preprocessor 2220directives. 2221 2222 2223---------------------------------------- 222419 June 2015. Summary of changes for version 20150619: 2225 2226Two regressions in version 20150616 have been addressed: 2227 2228Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 2229etc.) This update changes ACPICA to only use the standard headers for 2230functions, or the prototypes for the local versions of the C library 2231functions. Across the source code, this required some additional casts 2232for some Clib invocations for portability. Moved all local prototypes to 2233a new file, acclib.h 2234 2235Fixes several problems with recent changes to the handling of the FACS 2236table that could cause some systems not to boot. 2237 2238 2239---------------------------------------- 224016 June 2015. Summary of changes for version 20150616: 2241 2242 22431) ACPICA kernel-resident subsystem: 2244 2245Across the entire ACPICA source code base, the various macros for the C 2246library functions (such as ACPI_STRLEN, etc.) have been removed and 2247replaced by the standard C library names (strlen, etc.) The original 2248purpose for these macros is no longer applicable. This simplification 2249reduces the number of macros used in the ACPICA source code 2250significantly, improving readability and maintainability. 2251 2252Implemented support for a new ACPI table, the OSDT. This table, the 2253"override" SDT, can be loaded directly by the host OS at boot time. It 2254enables the replacement of existing namespace objects that were installed 2255via the DSDT and/or SSDTs. The primary purpose for this is to replace 2256buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 2257for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 2258Moore. 2259 2260Added support for systems with (improperly) two FACS tables -- a "32-bit" 2261table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 2262X field). This change will support both automatically. There continues to 2263be systems found with this issue. This support requires a change to the 2264AcpiSetFirmwareWakingVector interface. Also, a public global variable has 2265been added to allow the host to select which FACS is desired 2266(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 2267details Lv Zheng. 2268 2269Added a new feature to allow for systems that do not contain an FACS. 2270Although this is already supported on hardware-reduced platforms, the 2271feature has been extended for all platforms. The reasoning is that we do 2272not want to abort the entire ACPICA initialization just because the 2273system is seriously buggy and has no FACS. 2274 2275Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 2276not correctly transcribed from the ACPI specification in ACPICA version 227720150515. 2278 2279Implemented support for the _CLS object in the AcpiGetObjectInfo external 2280interface. 2281 2282Updated the definitions of the TCPA and TPM2 ACPI tables to the more 2283recent TCG ACPI Specification, December 14, 2014. Table disassembler and 2284compiler also updated. Note: The TCPA "server" table is not supported by 2285the disassembler/table-compiler at this time. 2286 2287ACPI 6.0: Added definitions for the new GIC version field in the MADT. 2288 2289Example Code and Data Size: These are the sizes for the OS-independent 2290acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2291debug version of the code includes the debug output trace mechanism and 2292has a much larger code and data size. 2293 2294 Current Release: 2295 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 2296 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 2297 Previous Release: 2298 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 2299 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 2300 2301 23022) iASL Compiler/Disassembler and Tools: 2303 2304Disassembler: Fixed a problem with the new symbolic operator disassembler 2305where incorrect ASL code could be emitted in some cases for the "non- 2306commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 2307ShiftRight. The actual problem cases seem to be rather unusual in common 2308ASL code, however. David Box. 2309 2310Modified the linux version of acpidump to obtain ACPI tables from not 2311just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 2312Zheng. 2313 2314iASL: Fixed a problem where the user preprocessor output file (.i) 2315contained extra data that was not expected. The compiler was using this 2316file as a temporary file and passed through #line directives in order to 2317keep compiler error messages in sync with the input file and line number 2318across multiple include files. The (.i) is no longer a temporary file as 2319the compiler uses a new, different file for the original purpose. 2320 2321iASL: Fixed a problem where comments within the original ASL source code 2322file were not passed through to the preprocessor output file, nor any 2323listing files. 2324 2325iASL: Fixed some issues for the handling of the "#include" preprocessor 2326directive and the similar (but not the same) "Include" ASL operator. 2327 2328iASL: Add support for the new OSDT in both the disassembler and compiler. 2329 2330iASL: Fixed a problem with the constant folding support where a Buffer 2331object could be incorrectly generated (incorrectly formed) during a 2332conversion to a Store() operator. 2333 2334AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 2335description text for the _REV predefined name. _REV now permanently 2336returns 2, as per the ACPI 6.0 specification. 2337 2338Debugger: Enhanced the output of the Debug ASL object for references 2339produced by the Index operator. For Buffers and strings, only output the 2340actual byte pointed to by the index. For packages, only print the single 2341package element decoded by the index. Previously, the entire 2342buffer/string/package was emitted. 2343 2344iASL/Table-compiler: Fixed a regression where the "generic" data types 2345were no longer recognized, causing errors. 2346 2347 2348---------------------------------------- 234915 May 2015. Summary of changes for version 20150515: 2350 2351This release implements most of ACPI 6.0 as described below. 2352 23531) ACPICA kernel-resident subsystem: 2354 2355Implemented runtime argument checking and return value checking for all 2356new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 2357_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 2358 2359Example Code and Data Size: These are the sizes for the OS-independent 2360acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2361debug version of the code includes the debug output trace mechanism and 2362has a much larger code and data size. 2363 2364 Current Release: 2365 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 2366 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 2367 Previous Release: 2368 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 2369 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 2370 2371 23722) iASL Compiler/Disassembler and Tools: 2373 2374iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 2375names (argument count validation and return value typechecking.) 2376 2377iASL disassembler and table compiler: implemented support for all new 2378ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 2379 2380iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 2381tables: FADT, MADT. 2382 2383iASL preprocessor: Added a new directive to enable inclusion of binary 2384blobs into ASL code. The new directive is #includebuffer. It takes a 2385binary file as input and emits a named ascii buffer object into the ASL 2386code. 2387 2388AcpiHelp: Added support for all new ACPI 6.0 predefined names. 2389 2390AcpiHelp: Added a new option, -d, to display all iASL preprocessor 2391directives. 2392 2393AcpiHelp: Added a new option, -t, to display all known/supported ACPI 2394tables. 2395 2396 2397---------------------------------------- 239810 April 2015. Summary of changes for version 20150410: 2399 2400Reverted a change introduced in version 20150408 that caused 2401a regression in the disassembler where incorrect operator 2402symbols could be emitted. 2403 2404 2405---------------------------------------- 240608 April 2015. Summary of changes for version 20150408: 2407 2408 24091) ACPICA kernel-resident subsystem: 2410 2411Permanently set the return value for the _REV predefined name. It now 2412returns 2 (was 5). This matches other ACPI implementations. _REV will be 2413deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 2414for ACPI 2.0 and later. It should never be used to differentiate or 2415identify operating systems. 2416 2417Added the "Windows 2015" string to the _OSI support. ACPICA will now 2418return TRUE to a query with this string. 2419 2420Fixed several issues with the local version of the printf function. 2421 2422Added the C99 compiler option (-std=c99) to the Unix makefiles. 2423 2424 Current Release: 2425 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 2426 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 2427 Previous Release: 2428 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2429 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2430 2431 24322) iASL Compiler/Disassembler and Tools: 2433 2434iASL: Implemented an enhancement to the constant folding feature to 2435transform the parse tree to a simple Store operation whenever possible: 2436 Add (2, 3, X) ==> is converted to: Store (5, X) 2437 X = 2 + 3 ==> is converted to: Store (5, X) 2438 2439Updated support for the SLIC table (Software Licensing Description Table) 2440in both the Data Table compiler and the disassembler. The SLIC table 2441support now conforms to "Microsoft Software Licensing Tables (SLIC and 2442MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 2443following the ACPI header is now defined to be "Proprietary Data", and as 2444such, can only be entered or displayed as a hex data block. 2445 2446Implemented full support for the MSDM table as described in the document 2447above. Note: The format of MSDM is similar to SLIC. Any MSDM data 2448following the ACPI header is defined to be "Proprietary Data", and can 2449only be entered or displayed as a hex data block. 2450 2451Implemented the -Pn option for the iASL Table Compiler (was only 2452implemented for the ASL compiler). This option disables the iASL 2453preprocessor. 2454 2455Disassembler: For disassembly of Data Tables, added a comment field 2456around the Ascii equivalent data that is emitted as part of the "Raw 2457Table Data" block. This prevents the iASL Preprocessor from possible 2458confusion if/when the table is compiled. 2459 2460Disassembler: Added an option (-df) to force the disassembler to assume 2461that the table being disassembled contains valid AML. This feature is 2462useful for disassembling AML files that contain ACPI signatures other 2463than DSDT or SSDT (such as OEMx or other signatures). 2464 2465Changes for the EFI version of the tools: 24661) Fixed a build error/issue 24672) Fixed a cast warning 2468 2469iASL: Fixed a path issue with the __FILE__ operator by making the 2470directory prefix optional within the internal SplitInputFilename 2471function. 2472 2473Debugger: Removed some unused global variables. 2474 2475Tests: Updated the makefile for proper generation of the AAPITS suite. 2476 2477 2478---------------------------------------- 247904 February 2015. Summary of changes for version 20150204: 2480 2481ACPICA kernel-resident subsystem: 2482 2483Updated all ACPICA copyrights and signons to 2014. Added the 2014 2484copyright to all module headers and signons, including the standard Linux 2485header. This affects virtually every file in the ACPICA core subsystem, 2486iASL compiler, all ACPICA utilities, and the test suites. 2487 2488Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 2489A raw gpe handling mechanism was created to allow better handling of GPE 2490storms that aren't easily managed by the normal handler. The raw handler 2491allows disabling/renabling of the the GPE so that interrupt storms can be 2492avoided in cases where events cannot be timely serviced. In this 2493scenario, handlers should use the AcpiSetGpe() API to disable/enable the 2494GPE. This API will leave the reference counts undisturbed, thereby 2495preventing unintentional clearing of the GPE when the intent in only to 2496temporarily disable it. Raw handlers allow enabling and disabling of a 2497GPE by removing GPE register locking. As such, raw handlers much provide 2498their own locks while using GPE API's to protect access to GPE data 2499structures. 2500Lv Zheng 2501 2502Events: Always modify GPE registers under the GPE lock. 2503Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 2504values. Reported as bug by joe.liu@apple.com. 2505 2506Unix makefiles: Separate option to disable optimizations and 2507_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 2508NOOPT disable option and creates a separate flag (NOFORTIFY) for this 2509purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 2510errors when building ACPICA. This allows disabling the option without 2511also having to disable optimazations. 2512David Box 2513 2514 Current Release: 2515 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2516 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 2517 2518-- 2519-------------------------------------- 252007 November 2014. Summary of changes for version 20141107: 2521 2522This release is available at https://acpica.org/downloads 2523 2524This release introduces and implements language extensions to ASL that 2525provide support for symbolic ("C-style") operators and expressions. These 2526language extensions are known collectively as ASL+. 2527 2528 25291) iASL Compiler/Disassembler and Tools: 2530 2531Disassembler: Fixed a problem with disassembly of the UartSerialBus 2532macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 2533Box. 2534 2535Disassembler: Fixed the Unicode macro support to add escape sequences. 2536All non-printable ASCII values are emitted as escape sequences, as well 2537as the standard escapes for quote and backslash. Ensures that the 2538disassembled macro can be correctly recompiled. 2539 2540iASL: Added Printf/Fprintf macros for formatted output. These macros are 2541translated to existing AML Concatenate and Store operations. Printf 2542writes to the ASL Debug object. Fprintf allows the specification of an 2543ASL name as the target. Only a single format specifier is required, %o, 2544since the AML interpreter dynamically converts objects to the required 2545type. David E. Box. 2546 2547 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 2548 (Concatenate (Concatenate (Concatenate ("", Arg0), 2549 ": Unexpected value for "), Arg1), ", "), Arg2), 2550 " at line "), Arg3), Debug) 2551 2552 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 2553 Arg0, Arg1, Arg2, Arg3) 2554 2555 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 2556 ("", Arg1), ": "), Arg0), " Successful"), STR1) 2557 2558 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 2559 2560iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 2561ASL parse tree before the AML code is generated. This allows blocks of 2562ASL code to be removed in order to help locate and identify problem 2563devices and/or code. David E. Box. 2564 2565AcpiExec: Added support (-fi) for an optional namespace object 2566initialization file. This file specifies initial values for namespace 2567objects as necessary for debugging and testing different ASL code paths 2568that may be taken as a result of BIOS options. 2569 2570 25712) Overview of symbolic operator support for ASL (ASL+) 2572------------------------------------------------------- 2573 2574As an extension to the ASL language, iASL implements support for symbolic 2575(C-style) operators for math and logical expressions. This can greatly 2576simplify ASL code as well as improve both readability and 2577maintainability. These language extensions can exist concurrently with 2578all legacy ASL code and expressions. 2579 2580The symbolic extensions are 100% compatible with existing AML 2581interpreters, since no new AML opcodes are created. To implement the 2582extensions, the iASL compiler transforms the symbolic expressions into 2583the legacy ASL/AML equivalents at compile time. 2584 2585Full symbolic expressions are supported, along with the standard C 2586precedence and associativity rules. 2587 2588Full disassembler support for the symbolic expressions is provided, and 2589creates an automatic migration path for existing ASL code to ASL+ code 2590via the disassembly process. By default, the disassembler now emits ASL+ 2591code with symbolic expressions. An option (-dl) is provided to force the 2592disassembler to emit legacy ASL code if desired. 2593 2594Below is the complete list of the currently supported symbolic operators 2595with examples. See the iASL User Guide for additional information. 2596 2597 2598ASL+ Syntax Legacy ASL Equivalent 2599----------- --------------------- 2600 2601 // Math operators 2602 2603Z = X + Y Add (X, Y, Z) 2604Z = X - Y Subtract (X, Y, Z) 2605Z = X * Y Multiply (X, Y, Z) 2606Z = X / Y Divide (X, Y, , Z) 2607Z = X % Y Mod (X, Y, Z) 2608Z = X << Y ShiftLeft (X, Y, Z) 2609Z = X >> Y ShiftRight (X, Y, Z) 2610Z = X & Y And (X, Y, Z) 2611Z = X | Y Or (X, Y, Z) 2612Z = X ^ Y Xor (X, Y, Z) 2613Z = ~X Not (X, Z) 2614X++ Increment (X) 2615X-- Decrement (X) 2616 2617 // Logical operators 2618 2619(X == Y) LEqual (X, Y) 2620(X != Y) LNotEqual (X, Y) 2621(X < Y) LLess (X, Y) 2622(X > Y) LGreater (X, Y) 2623(X <= Y) LLessEqual (X, Y) 2624(X >= Y) LGreaterEqual (X, Y) 2625(X && Y) LAnd (X, Y) 2626(X || Y) LOr (X, Y) 2627(!X) LNot (X) 2628 2629 // Assignment and compound assignment operations 2630 2631X = Y Store (Y, X) 2632X += Y Add (X, Y, X) 2633X -= Y Subtract (X, Y, X) 2634X *= Y Multiply (X, Y, X) 2635X /= Y Divide (X, Y, , X) 2636X %= Y Mod (X, Y, X) 2637X <<= Y ShiftLeft (X, Y, X) 2638X >>= Y ShiftRight (X, Y, X) 2639X &= Y And (X, Y, X) 2640X |= Y Or (X, Y, X) 2641X ^= Y Xor (X, Y, X) 2642 2643 26443) ASL+ Examples: 2645----------------- 2646 2647Legacy ASL: 2648 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 2649 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 26500x03FB), 2651 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 2652 { 2653 And (MEMB, 0xFFFFFFF0, SRMB) 2654 Store (MEMB, Local2) 2655 Store (PDBM, Local1) 2656 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 2657 Store (SRMB, MEMB) 2658 Or (PDBM, 0x02, PDBM) 2659 } 2660 2661ASL+ version: 2662 If (((R510 & 0x03FB) == 0x02E0) || 2663 ((R520 & 0x03FB) == 0x02E0) || 2664 ((R530 & 0x03FB) == 0x02E0) || 2665 ((R540 & 0x03FB) == 0x02E0)) 2666 { 2667 SRMB = (MEMB & 0xFFFFFFF0) 2668 Local2 = MEMB 2669 Local1 = PDBM 2670 PDBM &= 0xFFFFFFFFFFFFFFF9 2671 MEMB = SRMB 2672 PDBM |= 0x02 2673 } 2674 2675Legacy ASL: 2676 Store (0x1234, Local1) 2677 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 2678 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 2679 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 2680 Store (Index (PKG1, 0x03), Local6) 2681 Store (Add (Local3, Local2), Debug) 2682 Add (Local1, 0x0F, Local2) 2683 Add (Local1, Multiply (Local2, Local3), Local2) 2684 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 2685 2686ASL+ version: 2687 Local1 = 0x1234 2688 Local3 = (((Local1 + TEST) + 0x20) * Local2) 2689 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 2690 Local3 = (Local1 + (TEST + (0x20 * Local2))) 2691 Local6 = Index (PKG1, 0x03) 2692 Debug = (Local3 + Local2) 2693 Local2 = (Local1 + 0x0F) 2694 Local2 = (Local1 + (Local2 * Local3)) 2695 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 2696 2697 2698---------------------------------------- 269926 September 2014. Summary of changes for version 20140926: 2700 27011) ACPICA kernel-resident subsystem: 2702 2703Updated the GPIO operation region handler interface (GeneralPurposeIo). 2704In order to support GPIO Connection objects with multiple pins, along 2705with the related Field objects, the following changes to the interface 2706have been made: The Address is now defined to be the offset in bits of 2707the field unit from the previous invocation of a Connection. It can be 2708viewed as a "Pin Number Index" into the connection resource descriptor. 2709The BitWidth is the exact bit width of the field. It is usually one bit, 2710but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 2711additional information and examples. 2712 2713GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 2714corresponding _Lxx/_Exx methods are disabled (they may have been enabled 2715by the firmware), so that they cannot fire until they are enabled via 2716AcpiUpdateAllGpes. Rafael J. Wysocki. 2717 2718Added a new return flag for the Event/GPE status interfaces -- 2719AcpiGetEventStatus and AcpiGetGpeStatus. The new 2720ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 2721GPE currently has a handler associated with it, and can thus actually 2722affect the system. Lv Zheng. 2723 2724Example Code and Data Size: These are the sizes for the OS-independent 2725acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2726debug version of the code includes the debug output trace mechanism and 2727has a much larger code and data size. 2728 2729 Current Release: 2730 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 2731 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 2732 Previous Release: 2733 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2734 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2735 27362) iASL Compiler/Disassembler and Tools: 2737 2738iASL: Fixed a memory allocation/free regression introduced in 20140828 2739that could cause the compiler to crash. This was introduced inadvertently 2740during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 27411113. 2742 2743iASL: Removed two error messages that have been found to create false 2744positives, until they can be fixed and fully validated (ACPICA BZ 1112): 27451) Illegal forward reference within a method 27462) Illegal reference across two methods 2747 2748iASL: Implemented a new option (-lm) to create a hardware mapping file 2749that summarizes all GPIO, I2C, SPI, and UART connections. This option 2750works for both the compiler and disassembler. See the iASL compiler user 2751guide for additional information and examples (section 6.4.6). 2752 2753AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 2754version 2. This corrects the AE_BAD_HEADER exception seen on systems with 2755a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 2756 2757AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 2758unless STDIN is actually a terminal. Assists with batch-mode processing. 2759ACPICA BZ 1114. 2760 2761Disassembler/AcpiHelp: Added another large group of recognized _HID 2762values. 2763 2764 2765---------------------------------------- 276628 August 2014. Summary of changes for version 20140828: 2767 27681) ACPICA kernel-resident subsystem: 2769 2770Fixed a problem related to the internal use of the Timer() operator where 2771a 64-bit divide could cause an attempted link to a double-precision math 2772library. This divide is not actually necessary, so the code was 2773restructured to eliminate it. Lv Zheng. 2774 2775ACPI 5.1: Added support for the runtime validation of the _DSD package 2776(similar to the iASL support). 2777 2778ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 2779SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 2780 2781Example Code and Data Size: These are the sizes for the OS-independent 2782acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2783debug version of the code includes the debug output trace mechanism and 2784has a much larger code and data size. 2785 2786 Current Release: 2787 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2788 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2789 Previous Release: 2790 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 2791 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 2792 27932) iASL Compiler/Disassembler and Tools: 2794 2795AcpiExec: Fixed a problem on unix systems where the original terminal 2796state was not always properly restored upon exit. Seen when using the -v 2797option. ACPICA BZ 1104. 2798 2799iASL: Fixed a problem with the validation of the ranges/length within the 2800Memory24 resource descriptor. There was a boundary condition when the 2801range was equal to the (length -1) caused by the fact that these values 2802are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 2803 2804Disassembler: Fixed a problem with the GpioInt descriptor interrupt 2805polarity 2806flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 2807is 2808now supported properly. 2809 2810ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 2811in the disassembler, data table compiler, and table template generator. 2812 2813iASL: Added a requirement for Device() objects that one of either a _HID 2814or _ADR must exist within the scope of a Device, as per the ACPI 2815specification. Remove a similar requirement that was incorrectly in place 2816for the _DSD object. 2817 2818iASL: Added error detection for illegal named references within control 2819methods that would cause runtime failures. Now trapped as errors are: 1) 2820References to objects within a non-parent control method. 2) Forward 2821references (within a method) -- for control methods, AML interpreters use 2822a one-pass parse of control methods. ACPICA BZ 1008. 2823 2824iASL: Added error checking for dependencies related to the _PSx power 2825methods. ACPICA BZ 1029. 28261) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 2827_PS3. 28282) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 2829scope. 2830 2831iASL and table compiler: Cleanup miscellaneous memory leaks by fully 2832deploying the existing object and string caches and adding new caches for 2833the table compiler. 2834 2835iASL: Split the huge parser source file into multiple subfiles to improve 2836manageability. Generation now requires the M4 macro preprocessor, which 2837is part of the Bison distribution on both unix and windows platforms. 2838 2839AcpiSrc: Fixed and removed all extraneous warnings generated during 2840entire ACPICA source code scan and/or conversion. 2841 2842 2843---------------------------------------- 2844 284524 July 2014. Summary of changes for version 20140724: 2846 2847The ACPI 5.1 specification has been released and is available at: 2848http://uefi.org/specs/access 2849 2850 28510) ACPI 5.1 support in ACPICA: 2852 2853ACPI 5.1 is fully supported in ACPICA as of this release. 2854 2855New predefined names. Support includes iASL and runtime ACPICA 2856validation. 2857 _CCA (Cache Coherency Attribute). 2858 _DSD (Device-Specific Data). David Box. 2859 2860Modifications to existing ACPI tables. Support includes headers, iASL 2861Data Table compiler, disassembler, and the template generator. 2862 FADT - New fields and flags. Graeme Gregory. 2863 GTDT - One new subtable and new fields. Tomasz Nowicki. 2864 MADT - Two new subtables. Tomasz Nowicki. 2865 PCCT - One new subtable. 2866 2867Miscellaneous. 2868 New notification type for System Resource Affinity change events. 2869 2870 28711) ACPICA kernel-resident subsystem: 2872 2873Fixed a regression introduced in 20140627 where a fault can happen during 2874the deletion of Alias AML namespace objects. The problem affected both 2875the core ACPICA and the ACPICA tools including iASL and AcpiExec. 2876 2877Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 2878simple mechanism to enable wake GPEs that have no associated handler or 2879control method. Rafael Wysocki. 2880 2881Updated the AcpiEnableGpe interface to disallow the enable if there is no 2882handler or control method associated with the particular GPE. This will 2883help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 2884 2885Updated GPE handling and dispatch by disabling the GPE before clearing 2886the status bit for edge-triggered GPEs. Lv Zheng. 2887 2888Added Timer() support to the AML Debug object. The current timer value is 2889now displayed with each invocation of (Store to) the debug object to 2890enable simple generation of execution times for AML code (method 2891execution for example.) ACPICA BZ 1093. 2892 2893Example Code and Data Size: These are the sizes for the OS-independent 2894acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2895debug version of the code includes the debug output trace mechanism and 2896has a much larger code and data size. 2897 2898 Current Release: 2899 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 2900 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 2901 Previous Release: 2902 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 2903 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 2904 2905 29062) iASL Compiler/Disassembler and Tools: 2907 2908Fixed an issue with the recently added local printf implementation, 2909concerning width/precision specifiers that could cause incorrect output. 2910Lv Zheng. ACPICA BZ 1094. 2911 2912Disassembler: Added support to detect buffers that contain UUIDs and 2913disassemble them to an invocation of the ToUUID operator. Also emit 2914commented descriptions of known ACPI-related UUIDs. 2915 2916AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 2917-u. Adds three new files. 2918 2919iASL: Update table compiler and disassembler for DMAR table changes that 2920were introduced in September 2013. With assistance by David Woodhouse. 2921 2922---------------------------------------- 292327 June 2014. Summary of changes for version 20140627: 2924 29251) ACPICA kernel-resident subsystem: 2926 2927Formatted Output: Implemented local versions of standard formatted output 2928utilities such as printf, etc. Over time, it has been discovered that 2929there are in fact many portability issues with printf, and the addition 2930of this feature will fix/prevent these issues once and for all. Some 2931known issues are summarized below: 2932 29331) Output of 64-bit values is not portable. For example, UINT64 is %ull 2934for the Linux kernel and is %uI64 for some MSVC versions. 29352) Invoking printf consistently in a manner that is portable across both 293632-bit and 64-bit platforms is difficult at best in many situations. 29373) The output format for pointers varies from system to system (leading 2938zeros especially), and leads to inconsistent output from ACPICA across 2939platforms. 29404) Certain platform-specific printf formats may conflict with ACPICA use. 29415) If there is no local C library available, ACPICA now has local support 2942for printf. 2943 2944-- To address these printf issues in a complete manner, ACPICA now 2945directly implements a small subset of printf format specifiers, only 2946those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 2947 2948Implemented support for ACPICA generation within the EFI environment. 2949Initially, the AcpiDump utility is supported in the UEFI shell 2950environment. Lv Zheng. 2951 2952Added a new external interface, AcpiLogError, to improve ACPICA 2953portability. This allows the host to redirect error messages from the 2954ACPICA utilities. Lv Zheng. 2955 2956Added and deployed new OSL file I/O interfaces to improve ACPICA 2957portability: 2958 AcpiOsOpenFile 2959 AcpiOsCloseFile 2960 AcpiOsReadFile 2961 AcpiOsWriteFile 2962 AcpiOsGetFileOffset 2963 AcpiOsSetFileOffset 2964There are C library implementations of these functions in the new file 2965service_layers/oslibcfs.c -- however, the functions can be implemented by 2966the local host in any way necessary. Lv Zheng. 2967 2968Implemented a mechanism to disable/enable ACPI table checksum validation 2969at runtime. This can be useful when loading tables very early during OS 2970initialization when it may not be possible to map the entire table in 2971order to compute the checksum. Lv Zheng. 2972 2973Fixed a buffer allocation issue for the Generic Serial Bus support. 2974Originally, a fixed buffer length was used. This change allows for 2975variable-length buffers based upon the protocol indicated by the field 2976access attributes. Reported by Lan Tianyu. Lv Zheng. 2977 2978Fixed a problem where an object detached from a namespace node was not 2979properly terminated/cleared and could cause a circular list problem if 2980reattached. ACPICA BZ 1063. David Box. 2981 2982Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 2983 2984Fixed a possible memory leak in an error return path within the function 2985AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 2986 2987Example Code and Data Size: These are the sizes for the OS-independent 2988acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2989debug version of the code includes the debug output trace mechanism and 2990has a much larger code and data size. 2991 2992 Current Release: 2993 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 2994 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 2995 Previous Release: 2996 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 2997 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 2998 2999 30002) iASL Compiler/Disassembler and Tools: 3001 3002Disassembler: Add dump of ASCII equivalent text within a comment at the 3003end of each line of the output for the Buffer() ASL operator. 3004 3005AcpiDump: Miscellaneous changes: 3006 Fixed repetitive table dump in -n mode. 3007 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 3008the ACPI 2.0 GUID fails. 3009 3010iASL: Fixed a problem where the compiler could fault if incorrectly given 3011an acpidump output file as input. ACPICA BZ 1088. David Box. 3012 3013AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 3014they are invoked without any arguments. 3015 3016Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 30171086. Colin Ian King. 3018 3019Disassembler: Cleaned up a block of code that extracts a parent Op 3020object. Added a comment that explains that the parent is guaranteed to be 3021valid in this case. ACPICA BZ 1069. 3022 3023 3024---------------------------------------- 302524 April 2014. Summary of changes for version 20140424: 3026 30271) ACPICA kernel-resident subsystem: 3028 3029Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 3030Some of these tables are known to contain a trailing NULL entry. Lv 3031Zheng. 3032 3033Removed an extraneous error message for the case where there are a large 3034number of system GPEs (> 124). This was the "32-bit FADT register is too 3035long to convert to GAS struct" message, which is irrelevant for GPEs 3036since the GPEx_BLK_LEN fields of the FADT are always used instead of the 3037(limited capacity) GAS bit length. Also, several changes to ensure proper 3038support for GPE numbers > 255, where some "GPE number" fields were 8-bits 3039internally. 3040 3041Implemented and deployed additional configuration support for the public 3042ACPICA external interfaces. Entire classes of interfaces can now be 3043easily modified or configured out, replaced by stubbed inline functions 3044by default. Lv Zheng. 3045 3046Moved all public ACPICA runtime configuration globals to the public 3047ACPICA external interface file for convenience. Also, removed some 3048obsolete/unused globals. See the file acpixf.h. Lv Zheng. 3049 3050Documentation: Added a new section to the ACPICA reference describing the 3051maximum number of GPEs that can be supported by the FADT-defined GPEs in 3052block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 3053reference. 3054 3055Example Code and Data Size: These are the sizes for the OS-independent 3056acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3057debug version of the code includes the debug output trace mechanism and 3058has a much larger code and data size. 3059 3060 Current Release: 3061 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3062 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3063 Previous Release: 3064 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3065 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3066 3067 30682) iASL Compiler/Disassembler and Tools: 3069 3070iASL and disassembler: Add full support for the LPIT table (Low Power 3071Idle Table). Includes support in the disassembler, data table compiler, 3072and template generator. 3073 3074AcpiDump utility: 30751) Add option to force the use of the RSDT (over the XSDT). 30762) Improve validation of the RSDP signature (use 8 chars instead of 4). 3077 3078iASL: Add check for predefined packages that are too large. For 3079predefined names that contain subpackages, check if each subpackage is 3080too large. (Check for too small already exists.) 3081 3082Debugger: Updated the GPE command (which simulates a GPE by executing the 3083GPE code paths in ACPICA). The GPE device is now optional, and defaults 3084to the GPE 0/1 FADT-defined blocks. 3085 3086Unix application OSL: Update line-editing support. Add additional error 3087checking and take care not to reset terminal attributes on exit if they 3088were never set. This should help guarantee that the terminal is always 3089left in the previous state on program exit. 3090 3091 3092---------------------------------------- 309325 March 2014. Summary of changes for version 20140325: 3094 30951) ACPICA kernel-resident subsystem: 3096 3097Updated the auto-serialize feature for control methods. This feature 3098automatically serializes all methods that create named objects in order 3099to prevent runtime errors. The update adds support to ignore the 3100currently executing AML SyncLevel when invoking such a method, in order 3101to prevent disruption of any existing SyncLevel priorities that may exist 3102in the AML code. Although the use of SyncLevels is relatively rare, this 3103change fixes a regression where an AE_AML_MUTEX_ORDER exception can 3104appear on some machines starting with the 20140214 release. 3105 3106Added a new external interface to allow the host to install ACPI tables 3107very early, before the namespace is even created. AcpiInstallTable gives 3108the host additional flexibility for ACPI table management. Tables can be 3109installed directly by the host as if they had originally appeared in the 3110XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 3111(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 3112with additional internal restructuring and cleanup. See the ACPICA 3113Reference for interface details. Lv Zheng. 3114 3115Added validation of the checksum for all incoming dynamically loaded 3116tables (via external interfaces or via AML Load/LoadTable operators). Lv 3117Zheng. 3118 3119Updated the use of the AcpiOsWaitEventsComplete interface during Notify 3120and GPE handler removal. Restructured calls to eliminate possible race 3121conditions. Lv Zheng. 3122 3123Added a warning for the use/execution of the ASL/AML Unload (table) 3124operator. This will help detect and identify machines that use this 3125operator if and when it is ever used. This operator has never been seen 3126in the field and the usage model and possible side-effects of the drastic 3127runtime action of a full table removal are unknown. 3128 3129Reverted the use of #pragma push/pop which was introduced in the 20140214 3130release. It appears that push and pop are not implemented by enough 3131compilers to make the use of this feature feasible for ACPICA at this 3132time. However, these operators may be deployed in a future ACPICA 3133release. 3134 3135Added the missing EXPORT_SYMBOL macros for the install and remove SCI 3136handler interfaces. 3137 3138Source code generation: 31391) Disabled the use of the "strchr" macro for the gcc-specific 3140generation. For some versions of gcc, this macro can periodically expose 3141a compiler bug which in turn causes compile-time error(s). 31422) Added support for PPC64 compilation. Colin Ian King. 3143 3144Example Code and Data Size: These are the sizes for the OS-independent 3145acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3146debug version of the code includes the debug output trace mechanism and 3147has a much larger code and data size. 3148 3149 Current Release: 3150 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3151 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3152 Previous Release: 3153 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3154 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3155 3156 31572) iASL Compiler/Disassembler and Tools: 3158 3159Disassembler: Added several new features to improve the readability of 3160the resulting ASL code. Extra information is emitted within comment 3161fields in the ASL code: 31621) Known _HID/_CID values are decoded to descriptive text. 31632) Standard values for the Notify() operator are decoded to descriptive 3164text. 31653) Target operands are expanded to full pathnames (in a comment) when 3166possible. 3167 3168Disassembler: Miscellaneous updates for extern() handling: 31691) Abort compiler if file specified by -fe option does not exist. 31702) Silence unnecessary warnings about argument count mismatches. 31713) Update warning messages concerning unresolved method externals. 31724) Emit "UnknownObj" keyword for externals whose type cannot be 3173determined. 3174 3175AcpiHelp utility: 31761) Added the -a option to display both the ASL syntax and the AML 3177encoding for an input ASL operator. This effectively displays all known 3178information about an ASL operator with one AcpiHelp invocation. 31792) Added substring match support (similar to a wildcard) for the -i 3180(_HID/PNP IDs) option. 3181 3182iASL/Disassembler: Since this tool does not yet support execution on big- 3183endian machines, added detection of endianness and an error message if 3184execution is attempted on big-endian. Support for big-endian within iASL 3185is a feature that is on the ACPICA to-be-done list. 3186 3187AcpiBin utility: 31881) Remove option to extract binary files from an acpidump; this function 3189is made obsolete by the AcpiXtract utility. 31902) General cleanup of open files and allocated buffers. 3191 3192 3193---------------------------------------- 319414 February 2014. Summary of changes for version 20140214: 3195 31961) ACPICA kernel-resident subsystem: 3197 3198Implemented a new mechanism to proactively prevent problems with ill- 3199behaved reentrant control methods that create named ACPI objects. This 3200behavior is illegal as per the ACPI specification, but is nonetheless 3201frequently seen in the field. Previously, this could lead to an 3202AE_ALREADY_EXISTS exception if the method was actually entered by more 3203than one thread. This new mechanism detects such methods at table load 3204time and marks them "serialized" to prevent reentrancy. A new global 3205option, AcpiGbl_AutoSerializeMethods, has been added to disable this 3206feature if desired. This mechanism and global option obsoletes and 3207supersedes the previous AcpiGbl_SerializeAllMethods option. 3208 3209Added the "Windows 2013" string to the _OSI support. ACPICA will now 3210respond TRUE to _OSI queries with this string. It is the stated policy of 3211ACPICA to add new strings to the _OSI support as soon as possible after 3212they are defined. See the full ACPICA _OSI policy which has been added to 3213the utilities/utosi.c file. 3214 3215Hardened/updated the _PRT return value auto-repair code: 32161) Do not abort the repair on a single subpackage failure, continue to 3217check all subpackages. 32182) Add check for the minimum subpackage length (4). 32193) Properly handle extraneous NULL package elements. 3220 3221Added support to avoid the possibility of infinite loops when traversing 3222object linked lists. Never allow an infinite loop, even in the face of 3223corrupted object lists. 3224 3225ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 3226pack(pop) directives to ensure that the ACPICA headers are independent of 3227compiler settings or other host headers. 3228 3229Example Code and Data Size: These are the sizes for the OS-independent 3230acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3231debug version of the code includes the debug output trace mechanism and 3232has a much larger code and data size. 3233 3234 Current Release: 3235 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3236 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3237 Previous Release: 3238 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 3239 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 3240 3241 32422) iASL Compiler/Disassembler and Tools: 3243 3244iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 3245first reserved field was incorrectly forced to have a value of zero. This 3246change correctly forces the field to have a value of one. ACPICA BZ 1081. 3247 3248Debugger: Added missing support for the "Extra" and "Data" subobjects 3249when displaying object data. 3250 3251Debugger: Added support to display entire object linked lists when 3252displaying object data. 3253 3254iASL: Removed the obsolete -g option to obtain ACPI tables from the 3255Windows registry. This feature has been superseded by the acpidump 3256utility. 3257 3258 3259---------------------------------------- 326014 January 2014. Summary of changes for version 20140114: 3261 32621) ACPICA kernel-resident subsystem: 3263 3264Updated all ACPICA copyrights and signons to 2014. Added the 2014 3265copyright to all module headers and signons, including the standard Linux 3266header. This affects virtually every file in the ACPICA core subsystem, 3267iASL compiler, all ACPICA utilities, and the test suites. 3268 3269Improved parameter validation for AcpiInstallGpeBlock. Added the 3270following checks: 32711) The incoming device handle refers to type ACPI_TYPE_DEVICE. 32722) There is not already a GPE block attached to the device. 3273Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 3274device. 3275 3276Correctly support "references" in the ACPI_OBJECT. This change fixes the 3277support to allow references (namespace nodes) to be passed as arguments 3278to control methods via the evaluate object interface. This is probably 3279most useful for testing purposes, however. 3280 3281Improved support for 32/64 bit physical addresses in printf()-like 3282output. This change improves the support for physical addresses in printf 3283debug statements and other output on both 32-bit and 64-bit hosts. It 3284consistently outputs the appropriate number of bytes for each host. The 3285%p specifier is unsatisfactory since it does not emit uniform output on 3286all hosts/clib implementations (on some, leading zeros are not supported, 3287leading to difficult-to-read output). 3288 3289Example Code and Data Size: These are the sizes for the OS-independent 3290acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3291debug version of the code includes the debug output trace mechanism and 3292has a much larger code and data size. 3293 3294 Current Release: 3295 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 3296 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 3297 Previous Release: 3298 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 3299 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 3300 3301 33022) iASL Compiler/Disassembler and Tools: 3303 3304iASL: Fix a possible fault when using the Connection() operator. Fixes a 3305problem if the parent Field definition for the Connection operator refers 3306to an operation region that does not exist. ACPICA BZ 1064. 3307 3308AcpiExec: Load of local test tables is now optional. The utility has the 3309capability to load some various tables to test features of ACPICA. 3310However, there are enough of them that the output of the utility became 3311confusing. With this change, only the required local tables are displayed 3312(RSDP, XSDT, etc.) along with the actual tables loaded via the command 3313line specification. This makes the default output simler and easier to 3314understand. The -el command line option restores the original behavior 3315for testing purposes. 3316 3317AcpiExec: Added support for overlapping operation regions. This change 3318expands the simulation of operation regions by supporting regions that 3319overlap within the given address space. Supports SystemMemory and 3320SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 3321 3322AcpiExec: Added region handler support for PCI_Config and EC spaces. This 3323allows AcpiExec to simulate these address spaces, similar to the current 3324support for SystemMemory and SystemIO. 3325 3326Debugger: Added new command to read/write/compare all namespace objects. 3327The command "test objects" will exercise the entire namespace by writing 3328new values to each data object, and ensuring that the write was 3329successful. The original value is then restored and verified. 3330 3331Debugger: Added the "test predefined" command. This change makes this 3332test public and puts it under the new "test" command. The test executes 3333each and every predefined name within the current namespace. 3334 3335 3336---------------------------------------- 333718 December 2013. Summary of changes for version 20131218: 3338 3339Global note: The ACPI 5.0A specification was released this month. There 3340are no changes needed for ACPICA since this release of ACPI is an 3341errata/clarification release. The specification is available at 3342acpi.info. 3343 3344 33451) ACPICA kernel-resident subsystem: 3346 3347Added validation of the XSDT root table if it is present. Some older 3348platforms contain an XSDT that is ill-formed or otherwise invalid (such 3349as containing some or all entries that are NULL pointers). This change 3350adds a new function to validate the XSDT before actually using it. If the 3351XSDT is found to be invalid, ACPICA will now automatically fall back to 3352using the RSDT instead. Original implementation by Zhao Yakui. Ported to 3353ACPICA and enhanced by Lv Zheng and Bob Moore. 3354 3355Added a runtime option to ignore the XSDT and force the use of the RSDT. 3356This change adds a runtime option that will force ACPICA to use the RSDT 3357instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 3358requires that an XSDT be used instead of the RSDT, the XSDT has been 3359found to be corrupt or ill-formed on some machines. Lv Zheng. 3360 3361Added a runtime option to favor 32-bit FADT register addresses over the 336264-bit addresses. This change adds an option to favor 32-bit FADT 3363addresses when there is a conflict between the 32-bit and 64-bit versions 3364of the same register. The default behavior is to use the 64-bit version 3365in accordance with the ACPI specification. This can now be overridden via 3366the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 3367 3368During the change above, the internal "Convert FADT" and "Verify FADT" 3369functions have been merged to simplify the code, making it easier to 3370understand and maintain. ACPICA BZ 933. 3371 3372Improve exception reporting and handling for GPE block installation. 3373Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 3374status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 3375 3376Added helper macros to extract bus/segment numbers from the HEST table. 3377This change adds two macros to extract the encoded bus and segment 3378numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 3379Betty Dall <betty.dall@hp.com> 3380 3381Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 3382by ACPICA. It is not a public macro, so it should have no effect on 3383existing OSV code. Lv Zheng. 3384 3385Example Code and Data Size: These are the sizes for the OS-independent 3386acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3387debug version of the code includes the debug output trace mechanism and 3388has a much larger code and data size. 3389 3390 Current Release: 3391 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 3392 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 3393 Previous Release: 3394 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 3395 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 3396 3397 33982) iASL Compiler/Disassembler and Tools: 3399 3400Disassembler: Improved pathname support for emitted External() 3401statements. This change adds full pathname support for external names 3402that have been resolved internally by the inclusion of additional ACPI 3403tables (via the iASL -e option). Without this change, the disassembler 3404can emit multiple externals for the same object, or it become confused 3405when the Scope() operator is used on an external object. Overall, greatly 3406improves the ability to actually recompile the emitted ASL code when 3407objects a referenced across multiple ACPI tables. Reported by Michael 3408Tsirkin (mst@redhat.com). 3409 3410Tests/ASLTS: Updated functional control suite to execute with no errors. 3411David Box. Fixed several errors related to the testing of the interpreter 3412slack mode. Lv Zheng. 3413 3414iASL: Added support to detect names that are declared within a control 3415method, but are unused (these are temporary names that are only valid 3416during the time the method is executing). A remark is issued for these 3417cases. ACPICA BZ 1022. 3418 3419iASL: Added full support for the DBG2 table. Adds full disassembler, 3420table compiler, and template generator support for the DBG2 table (Debug 3421Port 2 table). 3422 3423iASL: Added full support for the PCCT table, update the table definition. 3424Updates the PCCT table definition in the actbl3.h header and adds table 3425compiler and template generator support. 3426 3427iASL: Added an option to emit only error messages (no warnings/remarks). 3428The -ve option will enable only error messages, warnings and remarks are 3429suppressed. This can simplify debugging when only the errors are 3430important, such as when an ACPI table is disassembled and there are many 3431warnings and remarks -- but only the actual errors are of real interest. 3432 3433Example ACPICA code (source/tools/examples): Updated the example code so 3434that it builds to an actual working program, not just example code. Added 3435ACPI tables and execution of an example control method in the DSDT. Added 3436makefile support for Unix generation. 3437 3438 3439---------------------------------------- 344015 November 2013. Summary of changes for version 20131115: 3441 3442This release is available at https://acpica.org/downloads 3443 3444 34451) ACPICA kernel-resident subsystem: 3446 3447Resource Manager: Fixed loop termination for the "get AML length" 3448function. The loop previously had an error termination on a NULL resource 3449pointer, which can never happen since the loop simply increments a valid 3450resource pointer. This fix changes the loop to terminate with an error on 3451an invalid end-of-buffer condition. The problem can be seen as an 3452infinite loop by callers to AcpiSetCurrentResources with an invalid or 3453corrupted resource descriptor, or a resource descriptor that is missing 3454an END_TAG descriptor. Reported by Dan Carpenter 3455<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 3456 3457Table unload and ACPICA termination: Delete all attached data objects 3458during namespace node deletion. This fix updates namespace node deletion 3459to delete the entire list of attached objects (attached via 3460AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 34611024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 3462 3463ACPICA termination: Added support to delete all objects attached to the 3464root namespace node. This fix deletes any and all objects that have been 3465attached to the root node via AcpiAttachData. Previously, none of these 3466objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 3467 3468Debug output: Do not emit the function nesting level for the in-kernel 3469build. The nesting level is really only useful during a single-thread 3470execution. Therefore, only enable this output for the AcpiExec utility. 3471Also, only emit the thread ID when executing under AcpiExec (Context 3472switches are still always detected and a message is emitted). ACPICA BZ 3473972. 3474 3475Example Code and Data Size: These are the sizes for the OS-independent 3476acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3477debug version of the code includes the debug output trace mechanism and 3478has a much larger code and data size. 3479 3480 Current Release: 3481 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 3482 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 3483 Previous Release: 3484 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 3485 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 3486 3487 34882) iASL Compiler/Disassembler and Tools: 3489 3490AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 3491correct portable POSIX header for terminal control functions. 3492 3493Disassembler: Fixed control method invocation issues related to the use 3494of the CondRefOf() operator. The problem is seen in the disassembly where 3495control method invocations may not be disassembled properly if the 3496control method name has been used previously as an argument to CondRefOf. 3497The solution is to not attempt to emit an external declaration for the 3498CondRefOf target (it is not necessary in the first place). This prevents 3499disassembler object type confusion. ACPICA BZ 988. 3500 3501Unix Makefiles: Added an option to disable compiler optimizations and the 3502_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 3503with optimizations (reportedly, gcc 4.4 for example). This change adds a 3504command line option for make (NOOPT) that disables all compiler 3505optimizations and the _FORTIFY_SOURCE compiler flag. The default 3506optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 35071034. Lv Zheng, Bob Moore. 3508 3509Tests/ASLTS: Added options to specify individual test cases and modes. 3510This allows testers running aslts.sh to optionally specify individual 3511test modes and test cases. Also added an option to disable the forced 3512generation of the ACPICA tools from source if desired. Lv Zheng. 3513 3514---------------------------------------- 351527 September 2013. Summary of changes for version 20130927: 3516 3517This release is available at https://acpica.org/downloads 3518 3519 35201) ACPICA kernel-resident subsystem: 3521 3522Fixed a problem with store operations to reference objects. This change 3523fixes a problem where a Store operation to an ArgX object that contained 3524a 3525reference to a field object did not complete the automatic dereference 3526and 3527then write to the actual field object. Instead, the object type of the 3528field object was inadvertently changed to match the type of the source 3529operand. The new behavior will actually write to the field object (buffer 3530field or field unit), thus matching the correct ACPI-defined behavior. 3531 3532Implemented support to allow the host to redefine individual OSL 3533prototypes. This change enables the host to redefine OSL prototypes found 3534in the acpiosxf.h file. This allows the host to implement OSL interfaces 3535with a macro or inlined function. Further, it allows the host to add any 3536additional required modifiers such as __iomem, __init, __exit, etc., as 3537necessary on a per-interface basis. Enables maximum flexibility for the 3538OSL interfaces. Lv Zheng. 3539 3540Hardcoded the access width for the FADT-defined reset register. The ACPI 3541specification requires the reset register width to be 8 bits. ACPICA now 3542hardcodes the width to 8 and ignores the FADT width value. This provides 3543compatibility with other ACPI implementations that have allowed BIOS code 3544with bad register width values to go unnoticed. Matthew Garett, Bob 3545Moore, 3546Lv Zheng. 3547 3548Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 3549used 3550in the OSL header (acpiosxf). The change modifies the position of this 3551macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 3552build issues if the OSL defines the implementation of the interface to be 3553an inline stub function. Lv Zheng. 3554 3555Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 3556initialization interfaces. This change adds a new macro for the main init 3557and terminate external interfaces in order to support hosts that require 3558additional or different processing for these functions. Changed from 3559ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 3560Zheng, Bob Moore. 3561 3562Cleaned up the memory allocation macros for configurability. In the 3563common 3564case, the ACPI_ALLOCATE and related macros now resolve directly to their 3565respective AcpiOs* OSL interfaces. Two options: 35661) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 3567default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 35682) For AcpiExec (and for debugging), the macros can optionally be 3569resolved 3570to the local ACPICA interfaces that track each allocation (local tracking 3571is used to immediately detect memory leaks). 3572Lv Zheng. 3573 3574Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 3575to predefine this macro to either TRUE or FALSE during the system build. 3576 3577Replaced __FUNCTION_ with __func__ in the gcc-specific header. 3578 3579Example Code and Data Size: These are the sizes for the OS-independent 3580acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3581debug version of the code includes the debug output trace mechanism and 3582has a much larger code and data size. 3583 3584 Current Release: 3585 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 3586 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 3587 Previous Release: 3588 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 3589 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3590 3591 35922) iASL Compiler/Disassembler and Tools: 3593 3594iASL: Implemented wildcard support for the -e option. This simplifies use 3595when there are many SSDTs that must be included to resolve external 3596method 3597declarations. ACPICA BZ 1041. Example: 3598 iasl -e ssdt*.dat -d dsdt.dat 3599 3600AcpiExec: Add history/line-editing for Unix/Linux systems. This change 3601adds a portable module that implements full history and limited line 3602editing for Unix and Linux systems. It does not use readline() due to 3603portability issues. Instead it uses the POSIX termio interface to put the 3604terminal in raw input mode so that the various special keys can be 3605trapped 3606(such as up/down-arrow for history support and left/right-arrow for line 3607editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 3608 3609AcpiXtract: Add support to handle (ignore) "empty" lines containing only 3610one or more spaces. This provides compatible with early or different 3611versions of the AcpiDump utility. ACPICA BZ 1044. 3612 3613AcpiDump: Do not ignore tables that contain only an ACPI table header. 3614Apparently, some BIOSs create SSDTs that contain an ACPI table header but 3615no other data. This change adds support to dump these tables. Any tables 3616shorter than the length of an ACPI table header remain in error (an error 3617message is emitted). Reported by Yi Li. 3618 3619Debugger: Echo actual command along with the "unknown command" message. 3620 3621---------------------------------------- 362223 August 2013. Summary of changes for version 20130823: 3623 36241) ACPICA kernel-resident subsystem: 3625 3626Implemented support for host-installed System Control Interrupt (SCI) 3627handlers. Certain ACPI functionality requires the host to handle raw 3628SCIs. For example, the "SCI Doorbell" that is defined for memory power 3629state support requires the host device driver to handle SCIs to examine 3630if the doorbell has been activated. Multiple SCI handlers can be 3631installed to allow for future expansion. New external interfaces are 3632AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 3633details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 3634 3635Operation region support: Never locally free the handler "context" 3636pointer. This change removes some dangerous code that attempts to free 3637the handler context pointer in some (rare) circumstances. The owner of 3638the handler owns this pointer and the ACPICA code should never touch it. 3639Although not seen to be an issue in any kernel, it did show up as a 3640problem (fault) under AcpiExec. Also, set the internal storage field for 3641the context pointer to zero when the region is deactivated, simply for 3642sanity. David Box. ACPICA BZ 1039. 3643 3644AcpiRead: On error, do not modify the return value target location. If an 3645error happens in the middle of a split 32/32 64-bit I/O operation, do not 3646modify the target of the return value pointer. Makes the code consistent 3647with the rest of ACPICA. Bjorn Helgaas. 3648 3649Example Code and Data Size: These are the sizes for the OS-independent 3650acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3651debug version of the code includes the debug output trace mechanism and 3652has a much larger code and data size. 3653 3654 Current Release: 3655 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 3656 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3657 Previous Release: 3658 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 3659 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 3660 3661 36622) iASL Compiler/Disassembler and Tools: 3663 3664AcpiDump: Implemented several new features and fixed some problems: 36651) Added support to dump the RSDP, RSDT, and XSDT tables. 36662) Added support for multiple table instances (SSDT, UEFI). 36673) Added option to dump "customized" (overridden) tables (-c). 36684) Fixed a problem where some table filenames were improperly 3669constructed. 36705) Improved some error messages, removed some unnecessary messages. 3671 3672iASL: Implemented additional support for disassembly of ACPI tables that 3673contain invocations of external control methods. The -fe<file> option 3674allows the import of a file that specifies the external methods along 3675with the required number of arguments for each -- allowing for the 3676correct disassembly of the table. This is a workaround for a limitation 3677of AML code where the disassembler often cannot determine the number of 3678arguments required for an external control method and generates incorrect 3679ASL code. See the iASL reference for details. ACPICA BZ 1030. 3680 3681Debugger: Implemented a new command (paths) that displays the full 3682pathnames (namepaths) and object types of all objects in the namespace. 3683This is an alternative to the namespace command. 3684 3685Debugger: Implemented a new command (sci) that invokes the SCI dispatch 3686mechanism and any installed handlers. 3687 3688iASL: Fixed a possible segfault for "too many parent prefixes" condition. 3689This can occur if there are too many parent prefixes in a namepath (for 3690example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 3691 3692Application OSLs: Set the return value for the PCI read functions. These 3693functions simply return AE_OK, but should set the return value to zero 3694also. This change implements this. ACPICA BZ 1038. 3695 3696Debugger: Prevent possible command line buffer overflow. Increase the 3697size of a couple of the debugger line buffers, and ensure that overflow 3698cannot happen. ACPICA BZ 1037. 3699 3700iASL: Changed to abort immediately on serious errors during the parsing 3701phase. Due to the nature of ASL, there is no point in attempting to 3702compile these types of errors, and they typically end up causing a 3703cascade of hundreds of errors which obscure the original problem. 3704 3705---------------------------------------- 370625 July 2013. Summary of changes for version 20130725: 3707 37081) ACPICA kernel-resident subsystem: 3709 3710Fixed a problem with the DerefOf operator where references to FieldUnits 3711and BufferFields incorrectly returned the parent object, not the actual 3712value of the object. After this change, a dereference of a FieldUnit 3713reference results in a read operation on the field to get the value, and 3714likewise, the appropriate BufferField value is extracted from the target 3715buffer. 3716 3717Fixed a problem where the _WAK method could cause a fault under these 3718circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 3719method returned no value. The problem is rarely seen because most kernels 3720run ACPICA in slack mode. 3721 3722For the DerefOf operator, a fatal error now results if an attempt is made 3723to dereference a reference (created by the Index operator) to a NULL 3724package element. Provides compatibility with other ACPI implementations, 3725and this behavior will be added to a future version of the ACPI 3726specification. 3727 3728The ACPI Power Management Timer (defined in the FADT) is now optional. 3729This provides compatibility with other ACPI implementations and will 3730appear in the next version of the ACPI specification. If there is no PM 3731Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 3732zero in the FADT indicates no PM timer. 3733 3734Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 3735allows the host to globally enable/disable all vendor strings, all 3736feature strings, or both. Intended to be primarily used for debugging 3737purposes only. Lv Zheng. 3738 3739Expose the collected _OSI data to the host via a global variable. This 3740data tracks the highest level vendor ID that has been invoked by the BIOS 3741so that the host (and potentially ACPICA itself) can change behaviors 3742based upon the age of the BIOS. 3743 3744Example Code and Data Size: These are the sizes for the OS-independent 3745acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3746debug version of the code includes the debug output trace mechanism and 3747has a much larger code and data size. 3748 3749 Current Release: 3750 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 3751 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3752 Previous Release: 3753 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 3754 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 3755 3756 37572) iASL Compiler/Disassembler and Tools: 3758 3759iASL: Created the following enhancements for the -so option (create 3760offset table): 37611)Add offsets for the last nameseg in each namepath for every supported 3762object type 37632)Add support for Processor, Device, Thermal Zone, and Scope objects 37643)Add the actual AML opcode for the parent object of every supported 3765object type 37664)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 3767 3768Disassembler: Emit all unresolved external symbols in a single block. 3769These are external references to control methods that could not be 3770resolved, and thus, the disassembler had to make a guess at the number of 3771arguments to parse. 3772 3773iASL: The argument to the -T option (create table template) is now 3774optional. If not specified, the default table is a DSDT, typically the 3775most common case. 3776 3777---------------------------------------- 377826 June 2013. Summary of changes for version 20130626: 3779 37801) ACPICA kernel-resident subsystem: 3781 3782Fixed an issue with runtime repair of the _CST object. Null or invalid 3783elements were not always removed properly. Lv Zheng. 3784 3785Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 3786FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 3787the maximum number of GPEs is 1016. Use of multiple GPE block devices 3788makes the system-wide number of GPEs essentially unlimited. 3789 3790Example Code and Data Size: These are the sizes for the OS-independent 3791acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3792debug version of the code includes the debug output trace mechanism and 3793has a much larger code and data size. 3794 3795 Current Release: 3796 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 3797 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 3798 Previous Release: 3799 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 3800 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 3801 3802 38032) iASL Compiler/Disassembler and Tools: 3804 3805Portable AcpiDump: Implemented full support for the Linux and FreeBSD 3806hosts. Now supports Linux, FreeBSD, and Windows. 3807 3808Disassembler: Added some missing types for the HEST and EINJ tables: "Set 3809Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 3810 3811iASL/Preprocessor: Implemented full support for nested 3812#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 3813 3814Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 3815max. The original purpose of this constraint was to limit the amount of 3816debug output. However, the string function in question (UtPrintString) is 3817now used for the disassembler also, where 256 bytes is insufficient. 3818Reported by RehabMan@GitHub. 3819 3820iASL/DataTables: Fixed some problems and issues with compilation of DMAR 3821tables. ACPICA BZ 999. Lv Zheng. 3822 3823iASL: Fixed a couple of error exit issues that could result in a "Could 3824not delete <file>" message during ASL compilation. 3825 3826AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 3827the actual signatures for these tables are "FACP" and "APIC", 3828respectively. 3829 3830AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 3831tables are allowed to have multiple instances. 3832 3833---------------------------------------- 383417 May 2013. Summary of changes for version 20130517: 3835 38361) ACPICA kernel-resident subsystem: 3837 3838Fixed a regression introduced in version 20130328 for _INI methods. This 3839change fixes a problem introduced in 20130328 where _INI methods are no 3840longer executed properly because of a memory block that was not 3841initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 3842<tomasz.nowicki@linaro.org>. 3843 3844Fixed a possible problem with the new extended sleep registers in the 3845ACPI 38465.0 FADT. Do not use these registers (even if populated) unless the HW- 3847reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 38481020. Lv Zheng. 3849 3850Implemented return value repair code for _CST predefined objects: Sort 3851the 3852list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 3853 3854Implemented a debug-only option to disable loading of SSDTs from the 3855RSDT/XSDT during ACPICA initialization. This can be useful for debugging 3856ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 3857acglobal.h - ACPICA BZ 1005. Lv Zheng. 3858 3859Fixed some issues in the ACPICA initialization and termination code: 3860Tomasz Nowicki <tomasz.nowicki@linaro.org> 38611) Clear events initialized flag upon event component termination. ACPICA 3862BZ 1013. 38632) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 38643) Delete global lock pending lock during termination. ACPICA BZ 1012. 38654) Clear debug buffer global on termination to prevent possible multiple 3866delete. ACPICA BZ 1010. 3867 3868Standardized all switch() blocks across the entire source base. After 3869many 3870years, different formatting for switch() had crept in. This change makes 3871the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 3872 3873Split some files to enhance ACPICA modularity and configurability: 38741) Split buffer dump routines into utilities/utbuffer.c 38752) Split internal error message routines into utilities/uterror.c 38763) Split table print utilities into tables/tbprint.c 38774) Split iASL command-line option processing into asloptions.c 3878 3879Makefile enhancements: 38801) Support for all new files above. 38812) Abort make on errors from any subcomponent. Chao Guan. 38823) Add build support for Apple Mac OS X. Liang Qi. 3883 3884Example Code and Data Size: These are the sizes for the OS-independent 3885acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3886debug version of the code includes the debug output trace mechanism and 3887has a much larger code and data size. 3888 3889 Current Release: 3890 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 3891 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 3892 Previous Release: 3893 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 3894 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 3895 3896 38972) iASL Compiler/Disassembler and Tools: 3898 3899New utility: Implemented an easily portable version of the acpidump 3900utility to extract ACPI tables from the system (or a file) in an ASCII 3901hex 3902dump format. The top-level code implements the various command line 3903options, file I/O, and table dump routines. To port to a new host, only 3904three functions need to be implemented to get tables -- since this 3905functionality is OS-dependent. See the tools/acpidump/apmain.c module and 3906the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 39071) The Windows version obtains the ACPI tables from the Registry. 39082) The Linux version is under development. 39093) Other hosts - If an OS-dependent module is submitted, it will be 3910distributed with ACPICA. 3911 3912iASL: Fixed a regression for -D preprocessor option (define symbol). A 3913restructuring/change to the initialization sequence caused this option to 3914no longer work properly. 3915 3916iASL: Implemented a mechanism to disable specific warnings and remarks. 3917Adds a new command line option, "-vw <messageid> as well as "#pragma 3918disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 3919 3920iASL: Fix for too-strict package object validation. The package object 3921validation for return values from the predefined names is a bit too 3922strict, it does not allow names references within the package (which will 3923be resolved at runtime.) These types of references cannot be validated at 3924compile time. This change ignores named references within package objects 3925for names that return or define static packages. 3926 3927Debugger: Fixed the 80-character command line limitation for the History 3928command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 3929 3930iASL: Added control method and package support for the -so option 3931(generates AML offset table for BIOS support.) 3932 3933iASL: issue a remark if a non-serialized method creates named objects. If 3934a thread blocks within the method for any reason, and another thread 3935enters the method, the method will fail because an attempt will be made 3936to 3937create the same (named) object twice. In this case, issue a remark that 3938the method should be marked serialized. NOTE: may become a warning later. 3939ACPICA BZ 909. 3940 3941---------------------------------------- 394218 April 2013. Summary of changes for version 20130418: 3943 39441) ACPICA kernel-resident subsystem: 3945 3946Fixed a possible buffer overrun during some rare but specific field unit 3947read operations. This overrun can only happen if the DSDT version is 1 -- 3948meaning that all AML integers are 32 bits -- and the field length is 3949between 33 and 55 bits long. During the read, an internal buffer object 3950is 3951created for the field unit because the field is larger than an integer 3952(32 3953bits). However, in this case, the buffer will be incorrectly written 3954beyond the end because the buffer length is less than the internal 3955minimum 3956of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 3957long, but a full 8 bytes will be written. 3958 3959Updated the Embedded Controller "orphan" _REG method support. This refers 3960to _REG methods under the EC device that have no corresponding operation 3961region. This is allowed by the ACPI specification. This update removes a 3962dependency on the existence an ECDT table. It will execute an orphan _REG 3963method as long as the operation region handler for the EC is installed at 3964the EC device node and not the namespace root. Rui Zhang (original 3965update), Bob Moore (update/integrate). 3966 3967Implemented run-time argument typechecking for all predefined ACPI names 3968(_STA, _BIF, etc.) This change performs object typechecking on all 3969incoming arguments for all predefined names executed via 3970AcpiEvaluateObject. This ensures that ACPI-related device drivers are 3971passing correct object types as well as the correct number of arguments 3972(therefore identifying any issues immediately). Also, the ASL/namespace 3973definition of the predefined name is checked against the ACPI 3974specification for the proper argument count. Adds one new file, 3975nsarguments.c 3976 3977Changed an exception code for the ASL UnLoad() operator. Changed the 3978exception code for the case where the input DdbHandle is invalid, from 3979AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 3980 3981Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 3982global makefile. The use of this flag causes compiler errors on earlier 3983versions of GCC, so it has been removed for compatibility. 3984 3985Miscellaneous cleanup: 39861) Removed some unused/obsolete macros 39872) Fixed a possible memory leak in the _OSI support 39883) Removed an unused variable in the predefined name support 39894) Windows OSL: remove obsolete reference to a memory list field 3990 3991Example Code and Data Size: These are the sizes for the OS-independent 3992acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3993debug version of the code includes the debug output trace mechanism and 3994has a much larger code and data size. 3995 3996 Current Release: 3997 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 3998 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 3999 Previous Release: 4000 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 4001 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 4002 4003 40042) iASL Compiler/Disassembler and Tools: 4005 4006AcpiExec: Added installation of a handler for the SystemCMOS address 4007space. This prevents control method abort if a method accesses this 4008space. 4009 4010AcpiExec: Added support for multiple EC devices, and now install EC 4011operation region handler(s) at the actual EC device instead of the 4012namespace root. This reflects the typical behavior of host operating 4013systems. 4014 4015AcpiExec: Updated to ensure that all operation region handlers are 4016installed before the _REG methods are executed. This prevents a _REG 4017method from aborting if it accesses an address space has no handler. 4018AcpiExec installs a handler for every possible address space. 4019 4020Debugger: Enhanced the "handlers" command to display non-root handlers. 4021This change enhances the handlers command to display handlers associated 4022with individual devices throughout the namespace, in addition to the 4023currently supported display of handlers associated with the root 4024namespace 4025node. 4026 4027ASL Test Suite: Several test suite errors have been identified and 4028resolved, reducing the total error count during execution. Chao Guan. 4029 4030---------------------------------------- 403128 March 2013. Summary of changes for version 20130328: 4032 40331) ACPICA kernel-resident subsystem: 4034 4035Fixed several possible race conditions with the internal object reference 4036counting mechanism. Some of the external ACPICA interfaces update object 4037reference counts without holding the interpreter or namespace lock. This 4038change adds a spinlock to protect reference count updates on the internal 4039ACPICA objects. Reported by and with assistance from Andriy Gapon 4040(avg@FreeBSD.org). 4041 4042FADT support: Removed an extraneous warning for very large GPE register 4043sets. This change removes a size mismatch warning if the legacy length 4044field for a GPE register set is larger than the 64-bit GAS structure can 4045accommodate. GPE register sets can be larger than the 255-bit width 4046limitation of the GAS structure. Linn Crosetto (linn@hp.com). 4047 4048_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 4049return from this interface. Handles a possible timeout case if 4050ACPI_WAIT_FOREVER is modified by the host to be a value less than 4051"forever". Jung-uk Kim. 4052 4053Predefined name support: Add allowed/required argument type information 4054to 4055the master predefined info table. This change adds the infrastructure to 4056enable typechecking on incoming arguments for all predefined 4057methods/objects. It does not actually contain the code that will fully 4058utilize this information, this is still under development. Also condenses 4059some duplicate code for the predefined names into a new module, 4060utilities/utpredef.c 4061 4062Example Code and Data Size: These are the sizes for the OS-independent 4063acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4064debug version of the code includes the debug output trace mechanism and 4065has a much larger code and data size. 4066 4067 Previous Release: 4068 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4069 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4070 Current Release: 4071 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4072 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4073 4074 40752) iASL Compiler/Disassembler and Tools: 4076 4077iASL: Implemented a new option to simplify the development of ACPI- 4078related 4079BIOS code. Adds support for a new "offset table" output file. The -so 4080option will create a C table containing the AML table offsets of various 4081named objects in the namespace so that BIOS code can modify them easily 4082at 4083boot time. This can simplify BIOS runtime code by eliminating expensive 4084searches for "magic values", enhancing boot times and adding greater 4085reliability. With assistance from Lee Hamel. 4086 4087iASL: Allow additional predefined names to return zero-length packages. 4088Now, all predefined names that are defined by the ACPI specification to 4089return a "variable-length package of packages" are allowed to return a 4090zero length top-level package. This allows the BIOS to tell the host that 4091the requested feature is not supported, and supports existing BIOS/ASL 4092code and practices. 4093 4094iASL: Changed the "result not used" warning to an error. This is the case 4095where an ASL operator is effectively a NOOP because the result of the 4096operation is not stored anywhere. For example: 4097 Add (4, Local0) 4098There is no target (missing 3rd argument), nor is the function return 4099value used. This is potentially a very serious problem -- since the code 4100was probably intended to do something, but for whatever reason, the value 4101was not stored. Therefore, this issue has been upgraded from a warning to 4102an error. 4103 4104AcpiHelp: Added allowable/required argument types to the predefined names 4105info display. This feature utilizes the recent update to the predefined 4106names table (above). 4107 4108---------------------------------------- 410914 February 2013. Summary of changes for version 20130214: 4110 41111) ACPICA Kernel-resident Subsystem: 4112 4113Fixed a possible regression on some hosts: Reinstated the safe return 4114macros (return_ACPI_STATUS, etc.) that ensure that the argument is 4115evaluated only once. Although these macros are not needed for the ACPICA 4116code itself, they are often used by ACPI-related host device drivers 4117where 4118the safe feature may be necessary. 4119 4120Fixed several issues related to the ACPI 5.0 reduced hardware support 4121(SOC): Now ensure that if the platform declares itself as hardware- 4122reduced 4123via the FADT, the following functions become NOOPs (and always return 4124AE_OK) because ACPI is always enabled by definition on these machines: 4125 AcpiEnable 4126 AcpiDisable 4127 AcpiHwGetMode 4128 AcpiHwSetMode 4129 4130Dynamic Object Repair: Implemented additional runtime repairs for 4131predefined name return values. Both of these repairs can simplify code in 4132the related device drivers that invoke these methods: 41331) For the _STR and _MLS names, automatically repair/convert an ASCII 4134string to a Unicode buffer. 41352) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 4136a 4137lone end tag descriptor in the following cases: A Return(0) was executed, 4138a null buffer was returned, or no object at all was returned (non-slack 4139mode only). Adds a new file, nsconvert.c 4140ACPICA BZ 998. Bob Moore, Lv Zheng. 4141 4142Resource Manager: Added additional code to prevent possible infinite 4143loops 4144while traversing corrupted or ill-formed resource template buffers. Check 4145for zero-length resource descriptors in all code that loops through 4146resource templates (the length field is used to index through the 4147template). This change also hardens the external AcpiWalkResources and 4148AcpiWalkResourceBuffer interfaces. 4149 4150Local Cache Manager: Enhanced the main data structure to eliminate an 4151unnecessary mechanism to access the next object in the list. Actually 4152provides a small performance enhancement for hosts that use the local 4153ACPICA cache manager. Jung-uk Kim. 4154 4155Example Code and Data Size: These are the sizes for the OS-independent 4156acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4157debug version of the code includes the debug output trace mechanism and 4158has a much larger code and data size. 4159 4160 Previous Release: 4161 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4162 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4163 Current Release: 4164 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4165 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4166 4167 41682) iASL Compiler/Disassembler and Tools: 4169 4170iASL/Disassembler: Fixed several issues with the definition of the ACPI 41715.0 RASF table (RAS Feature Table). This change incorporates late changes 4172that were made to the ACPI 5.0 specification. 4173 4174iASL/Disassembler: Added full support for the following new ACPI tables: 4175 1) The MTMR table (MID Timer Table) 4176 2) The VRTC table (Virtual Real Time Clock Table). 4177Includes header file, disassembler, table compiler, and template support 4178for both tables. 4179 4180iASL: Implemented compile-time validation of package objects returned by 4181predefined names. This new feature validates static package objects 4182returned by the various predefined names defined to return packages. Both 4183object types and package lengths are validated, for both parent packages 4184and sub-packages, if any. The code is similar in structure and behavior 4185to 4186the runtime repair mechanism within the AML interpreter and uses the 4187existing predefined name information table. Adds a new file, aslprepkg.c. 4188ACPICA BZ 938. 4189 4190iASL: Implemented auto-detection of binary ACPI tables for disassembly. 4191This feature detects a binary file with a valid ACPI table header and 4192invokes the disassembler automatically. Eliminates the need to 4193specifically invoke the disassembler with the -d option. ACPICA BZ 862. 4194 4195iASL/Disassembler: Added several warnings for the case where there are 4196unresolved control methods during the disassembly. This can potentially 4197cause errors when the output file is compiled, because the disassembler 4198assumes zero method arguments in these cases (it cannot determine the 4199actual number of arguments without resolution/definition of the method). 4200 4201Debugger: Added support to display all resources with a single command. 4202Invocation of the resources command with no arguments will now display 4203all 4204resources within the current namespace. 4205 4206AcpiHelp: Added descriptive text for each ACPICA exception code displayed 4207via the -e option. 4208 4209---------------------------------------- 421017 January 2013. Summary of changes for version 20130117: 4211 42121) ACPICA Kernel-resident Subsystem: 4213 4214Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 4215return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 4216objects to return a package containing one integer, most BIOS code 4217returns 4218two integers and the previous code reflects that. However, we also need 4219to 4220support BIOS code that actually implements to the ACPI spec, and this 4221change reflects this. 4222 4223Fixed two issues with the ACPI_DEBUG_PRINT macros: 42241) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 4225C compilers that require this support. 42262) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 4227ACPI_DEBUG is already used by many of the various hosts. 4228 4229Updated all ACPICA copyrights and signons to 2013. Added the 2013 4230copyright to all module headers and signons, including the standard Linux 4231header. This affects virtually every file in the ACPICA core subsystem, 4232iASL compiler, all ACPICA utilities, and the test suites. 4233 4234Example Code and Data Size: These are the sizes for the OS-independent 4235acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4236debug version of the code includes the debug output trace mechanism and 4237has a much larger code and data size. 4238 4239 Previous Release: 4240 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 4241 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 4242 Current Release: 4243 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4244 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4245 4246 42472) iASL Compiler/Disassembler and Tools: 4248 4249Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 4250prevent a possible fault on some hosts. Some C libraries modify the arg 4251pointer parameter to vfprintf making it difficult to call it twice in the 4252AcpiOsVprintf function. Use a local buffer to workaround this issue. This 4253does not affect the Windows OSL since the Win C library does not modify 4254the arg pointer. Chao Guan, Bob Moore. 4255 4256iASL: Fixed a possible infinite loop when the maximum error count is 4257reached. If an output file other than the .AML file is specified (such as 4258a listing file), and the maximum number of errors is reached, do not 4259attempt to flush data to the output file(s) as the compiler is aborting. 4260This can cause an infinite loop as the max error count code essentially 4261keeps calling itself. 4262 4263iASL/Disassembler: Added an option (-in) to ignore NOOP 4264opcodes/operators. 4265Implemented for both the compiler and the disassembler. Often, the NOOP 4266opcode is used as padding for packages that are changed dynamically by 4267the 4268BIOS. When disassembled and recompiled, these NOOPs will cause syntax 4269errors. This option causes the disassembler to ignore all NOOP opcodes 4270(0xA3), and it also causes the compiler to ignore all ASL source code 4271NOOP 4272statements as well. 4273 4274Debugger: Enhanced the Sleep command to execute all sleep states. This 4275change allows Sleep to be invoked with no arguments and causes the 4276debugger to execute all of the sleep states, 0-5, automatically. 4277 4278---------------------------------------- 427920 December 2012. Summary of changes for version 20121220: 4280 42811) ACPICA Kernel-resident Subsystem: 4282 4283Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 4284alternate entry point for AcpiWalkResources and improves the usability of 4285the resource manager by accepting as input a buffer containing the output 4286of either a _CRS, _PRS, or _AEI method. The key functionality is that the 4287input buffer is not deleted by this interface so that it can be used by 4288the host later. See the ACPICA reference for details. 4289 4290Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 4291(DSDT version < 2). The constant will be truncated and this warning 4292reflects that behavior. 4293 4294Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 4295ExtendedInterrupt, and GpioInt descriptors. This change adds support to 4296both get and set the new wake bit in these descriptors, separately from 4297the existing share bit. Reported by Aaron Lu. 4298 4299Interpreter: Fix Store() when an implicit conversion is not possible. For 4300example, in the cases such as a store of a string to an existing package 4301object, implement the store as a CopyObject(). This is a small departure 4302from the ACPI specification which states that the control method should 4303be 4304aborted in this case. However, the ASLTS suite depends on this behavior. 4305 4306Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 4307macros: check if debug output is currently enabled as soon as possible to 4308minimize performance impact if debug is in fact not enabled. 4309 4310Source code restructuring: Cleanup to improve modularity. The following 4311new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 4312psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 4313Associated makefiles and project files have been updated. 4314 4315Changed an exception code for LoadTable operator. For the case where one 4316of the input strings is too long, change the returned exception code from 4317AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 4318 4319Fixed a possible memory leak in dispatcher error path. On error, delete 4320the mutex object created during method mutex creation. Reported by 4321tim.gardner@canonical.com. 4322 4323Example Code and Data Size: These are the sizes for the OS-independent 4324acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4325debug version of the code includes the debug output trace mechanism and 4326has a much larger code and data size. 4327 4328 Previous Release: 4329 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 4330 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4331 Current Release: 4332 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 4333 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 4334 4335 43362) iASL Compiler/Disassembler and Tools: 4337 4338iASL: Disallow a method call as argument to the ObjectType ASL operator. 4339This change tracks an errata to the ACPI 5.0 document. The AML grammar 4340will not allow the interpreter to differentiate between a method and a 4341method invocation when these are used as an argument to the ObjectType 4342operator. The ACPI specification change is to disallow a method 4343invocation 4344(UserTerm) for the ObjectType operator. 4345 4346Finish support for the TPM2 and CSRT tables in the headers, table 4347compiler, and disassembler. 4348 4349Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 4350always expires immediately if the semaphore is not available. The 4351original 4352code was using a relative-time timeout, but sem_timedwait requires the 4353use 4354of an absolute time. 4355 4356iASL: Added a remark if the Timer() operator is used within a 32-bit 4357table. This operator returns a 64-bit time value that will be truncated 4358within a 32-bit table. 4359 4360iASL Source code restructuring: Cleanup to improve modularity. The 4361following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 4362aslmethod.c, and aslfileio.c. Associated makefiles and project files have 4363been updated. 4364 4365 4366---------------------------------------- 436714 November 2012. Summary of changes for version 20121114: 4368 43691) ACPICA Kernel-resident Subsystem: 4370 4371Implemented a performance enhancement for ACPI/AML Package objects. This 4372change greatly increases the performance of Package objects within the 4373interpreter. It changes the processing of reference counts for packages 4374by 4375optimizing for the most common case where the package sub-objects are 4376either Integers, Strings, or Buffers. Increases the overall performance 4377of 4378the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 43792X.) 4380Chao Guan. ACPICA BZ 943. 4381 4382Implemented and deployed common macros to extract flag bits from resource 4383descriptors. Improves readability and maintainability of the code. Fixes 4384a 4385problem with the UART serial bus descriptor for the number of data bits 4386flags (was incorrectly 2 bits, should be 3). 4387 4388Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 4389of the macros and changed the SETx macros to the style of (destination, 4390source). Also added ACPI_CASTx companion macros. Lv Zheng. 4391 4392Example Code and Data Size: These are the sizes for the OS-independent 4393acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4394debug version of the code includes the debug output trace mechanism and 4395has a much larger code and data size. 4396 4397 Previous Release: 4398 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 4399 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4400 Current Release: 4401 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 4402 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4403 4404 44052) iASL Compiler/Disassembler and Tools: 4406 4407Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 4408adds the ShareAndWake and ExclusiveAndWake flags which were added to the 4409Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 4410 4411Disassembler: Fixed a problem with external declaration generation. Fixes 4412a problem where an incorrect pathname could be generated for an external 4413declaration if the original reference to the object includes leading 4414carats (^). ACPICA BZ 984. 4415 4416Debugger: Completed a major update for the Disassemble<method> command. 4417This command was out-of-date and did not properly disassemble control 4418methods that had any reasonable complexity. This fix brings the command 4419up 4420to the same level as the rest of the disassembler. Adds one new file, 4421dmdeferred.c, which is existing code that is now common with the main 4422disassembler and the debugger disassemble command. ACPICA MZ 978. 4423 4424iASL: Moved the parser entry prototype to avoid a duplicate declaration. 4425Newer versions of Bison emit this prototype, so moved the prototype out 4426of 4427the iASL header to where it is actually used in order to avoid a 4428duplicate 4429declaration. 4430 4431iASL/Tools: Standardized use of the stream I/O functions: 4432 1) Ensure check for I/O error after every fopen/fread/fwrite 4433 2) Ensure proper order of size/count arguments for fread/fwrite 4434 3) Use test of (Actual != Requested) after all fwrite, and most fread 4435 4) Standardize I/O error messages 4436Improves reliability and maintainability of the code. Bob Moore, Lv 4437Zheng. 4438ACPICA BZ 981. 4439 4440Disassembler: Prevent duplicate External() statements. During generation 4441of external statements, detect similar pathnames that are actually 4442duplicates such as these: 4443 External (\ABCD) 4444 External (ABCD) 4445Remove all leading '\' characters from pathnames during the external 4446statement generation so that duplicates will be detected and tossed. 4447ACPICA BZ 985. 4448 4449Tools: Replace low-level I/O with stream I/O functions. Replace 4450open/read/write/close with the stream I/O equivalents 4451fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 4452Moore. 4453 4454AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 4455name header so that AcpiXtract recognizes the output file/table. 4456 4457iASL: Remove obsolete -2 option flag. Originally intended to force the 4458compiler/disassembler into an ACPI 2.0 mode, this was never implemented 4459and the entire concept is now obsolete. 4460 4461---------------------------------------- 446218 October 2012. Summary of changes for version 20121018: 4463 4464 44651) ACPICA Kernel-resident Subsystem: 4466 4467Updated support for the ACPI 5.0 MPST table. Fixes some problems 4468introduced by late changes to the table as it was added to the ACPI 5.0 4469specification. Includes header, disassembler, and data table compiler 4470support as well as a new version of the MPST template. 4471 4472AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 44735.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 4474methods: _HID, _CID, and _UID. 4475 4476Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 4477ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 4478name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 4479names for their various drivers. Affects the AcpiGetObjectInfo external 4480interface, and other internal interfaces as well. 4481 4482Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 4483This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 4484on machines that support non-aligned transfers. Optimizes for this case 4485rather than using a strncpy. With assistance from Zheng Lv. 4486 4487Resource Manager: Small fix for buffer size calculation. Fixed a one byte 4488error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 4489 4490Added a new debug print message for AML mutex objects that are force- 4491released. At control method termination, any currently acquired mutex 4492objects are force-released. Adds a new debug-only message for each one 4493that is released. 4494 4495Audited/updated all ACPICA return macros and the function debug depth 4496counter: 1) Ensure that all functions that use the various TRACE macros 4497also use the appropriate ACPICA return macros. 2) Ensure that all normal 4498return statements surround the return expression (value) with parens to 4499ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 4500Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 4501 4502Global source code changes/maintenance: All extra lines at the start and 4503end of each source file have been removed for consistency. Also, within 4504comments, all new sentences start with a single space instead of a double 4505space, again for consistency across the code base. 4506 4507Example Code and Data Size: These are the sizes for the OS-independent 4508acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4509debug version of the code includes the debug output trace mechanism and 4510has a much larger code and data size. 4511 4512 Previous Release: 4513 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 4514 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 4515 Current Release: 4516 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 4517 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4518 4519 45202) iASL Compiler/Disassembler and Tools: 4521 4522AcpiExec: Improved the algorithm used for memory leak/corruption 4523detection. Added some intelligence to the code that maintains the global 4524list of allocated memory. The list is now ordered by allocated memory 4525address, significantly improving performance. When running AcpiExec on 4526the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 4527on the platform and/or the environment. Note, this performance 4528enhancement affects the AcpiExec utility only, not the kernel-resident 4529ACPICA code. 4530 4531Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 4532the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 4533incorrect table offset reported for invalid opcodes. Report the original 453432-bit value for bad ACPI_NAMEs (as well as the repaired name.) 4535 4536Disassembler: Enhanced the -vt option to emit the binary table data in 4537hex format to assist with debugging. 4538 4539Fixed a potential filename buffer overflow in osunixdir.c. Increased the 4540size of file structure. Colin Ian King. 4541 4542---------------------------------------- 454313 September 2012. Summary of changes for version 20120913: 4544 4545 45461) ACPICA Kernel-resident Subsystem: 4547 4548ACPI 5.0: Added two new notify types for the Hardware Error Notification 4549Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 4550and 4551MCE(6). 4552 4553Table Manager: Merged/removed duplicate code in the root table resize 4554functions. One function is external, the other is internal. Lv Zheng, 4555ACPICA 4556BZ 846. 4557 4558Makefiles: Completely removed the obsolete "Linux" makefiles under 4559acpica/generate/linux. These makefiles are obsolete and have been 4560replaced 4561by 4562the generic unix makefiles under acpica/generate/unix. 4563 4564Makefiles: Ensure that binary files always copied properly. Minor rule 4565change 4566to ensure that the final binary output files are always copied up to the 4567appropriate binary directory (bin32 or bin64.) 4568 4569Example Code and Data Size: These are the sizes for the OS-independent 4570acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4571debug 4572version of the code includes the debug output trace mechanism and has a 4573much 4574larger code and data size. 4575 4576 Previous Release: 4577 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 4578 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 4579 Current Release: 4580 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 4581 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 4582 4583 45842) iASL Compiler/Disassembler and Tools: 4585 4586Disassembler: Fixed a possible fault during the disassembly of resource 4587descriptors when a second parse is required because of the invocation of 4588external control methods within the table. With assistance from 4589adq@lidskialf.net. ACPICA BZ 976. 4590 4591iASL: Fixed a namepath optimization problem. An error can occur if the 4592parse 4593node that contains the namepath to be optimized does not have a parent 4594node 4595that is a named object. This change fixes the problem. 4596 4597iASL: Fixed a regression where the AML file is not deleted on errors. The 4598AML 4599output file should be deleted if there are any errors during the 4600compiler. 4601The 4602only exception is if the -f (force output) option is used. ACPICA BZ 974. 4603 4604iASL: Added a feature to automatically increase internal line buffer 4605sizes. 4606Via realloc(), automatically increase the internal line buffer sizes as 4607necessary to support very long source code lines. The current version of 4608the 4609preprocessor requires a buffer long enough to contain full source code 4610lines. 4611This change increases the line buffer(s) if the input lines go beyond the 4612current buffer size. This eliminates errors that occurred when a source 4613code 4614line was longer than the buffer. 4615 4616iASL: Fixed a problem with constant folding in method declarations. The 4617SyncLevel term is a ByteConstExpr, and incorrect code would be generated 4618if a 4619Type3 opcode was used. 4620 4621Debugger: Improved command help support. For incorrect argument count, 4622display 4623full help for the command. For help command itself, allow an argument to 4624specify a command. 4625 4626Test Suites: Several bug fixes for the ASLTS suite reduces the number of 4627errors during execution of the suite. Guan Chao. 4628 4629---------------------------------------- 463016 August 2012. Summary of changes for version 20120816: 4631 4632 46331) ACPICA Kernel-resident Subsystem: 4634 4635Removed all use of the deprecated _GTS and _BFS predefined methods. The 4636_GTS 4637(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 4638deprecated and will probably be removed from the ACPI specification. 4639Windows 4640does not invoke them, and reportedly never will. The final nail in the 4641coffin 4642is that the ACPI specification states that these methods must be run with 4643interrupts off, which is not going to happen in a kernel interpreter. 4644Note: 4645Linux has removed all use of the methods also. It was discovered that 4646invoking these functions caused failures on some machines, probably 4647because 4648they were never tested since Windows does not call them. Affects two 4649external 4650interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 4651ACPICA BZ 969. 4652 4653Implemented support for complex bit-packed buffers returned from the _PLD 4654(Physical Location of Device) predefined method. Adds a new external 4655interface, AcpiDecodePldBuffer that parses the buffer into a more usable 4656C 4657structure. Note: C Bitfields cannot be used for this type of predefined 4658structure since the memory layout of individual bitfields is not defined 4659by 4660the C language. In addition, there are endian concerns where a compiler 4661will 4662change the bitfield ordering based on the machine type. The new ACPICA 4663interface eliminates these issues, and should be called after _PLD is 4664executed. ACPICA BZ 954. 4665 4666Implemented a change to allow a scope change to root (via "Scope (\)") 4667during 4668execution of module-level ASL code (code that is executed at table load 4669time.) Lin Ming. 4670 4671Added the Windows8/Server2012 string for the _OSI method. This change 4672adds 4673a 4674new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 46752012. 4676 4677Added header support for the new ACPI tables DBG2 (Debug Port Table Type 46782) 4679and CSRT (Core System Resource Table). 4680 4681Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 4682names. This simplifies access to the buffers returned by these predefined 4683names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 4684 4685GPE support: Removed an extraneous parameter from the various low-level 4686internal GPE functions. Tang Feng. 4687 4688Removed the linux makefiles from the unix packages. The generate/linux 4689makefiles are obsolete and have been removed from the unix tarball 4690release 4691packages. The replacement makefiles are under generate/unix, and there is 4692a 4693top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 4694 4695Updates for Unix makefiles: 46961) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 46972) Update linker flags (move to end of command line) for AcpiExec 4698utility. 4699Guan Chao. 4700 4701Split ACPICA initialization functions to new file, utxfinit.c. Split from 4702utxface.c to improve modularity and reduce file size. 4703 4704Example Code and Data Size: These are the sizes for the OS-independent 4705acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4706debug version of the code includes the debug output trace mechanism and 4707has a 4708much larger code and data size. 4709 4710 Previous Release: 4711 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 4712 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 4713 Current Release: 4714 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 4715 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 4716 4717 47182) iASL Compiler/Disassembler and Tools: 4719 4720iASL: Fixed a problem with constant folding for fixed-length constant 4721expressions. The constant-folding code was not being invoked for constant 4722expressions that allow the use of type 3/4/5 opcodes to generate 4723constants 4724for expressions such as ByteConstExpr, WordConstExpr, etc. This could 4725result 4726in the generation of invalid AML bytecode. ACPICA BZ 970. 4727 4728iASL: Fixed a generation issue on newer versions of Bison. Newer versions 4729apparently automatically emit some of the necessary externals. This 4730change 4731handles these versions in order to eliminate generation warnings. 4732 4733Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 4734 4735Disassembler: Add support to decode _PLD buffers. The decoded buffer 4736appears 4737within comments in the output file. 4738 4739Debugger: Fixed a regression with the "Threads" command where 4740AE_BAD_PARAMETER was always returned. 4741 4742---------------------------------------- 474311 July 2012. Summary of changes for version 20120711: 4744 47451) ACPICA Kernel-resident Subsystem: 4746 4747Fixed a possible fault in the return package object repair code. Fixes a 4748problem that can occur when a lone package object is wrapped with an 4749outer 4750package object in order to force conformance to the ACPI specification. 4751Can 4752affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 4753_DLM, 4754_CSD, _PSD, _TSD. 4755 4756Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 4757PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 4758ARB_DIS bit must be implemented in the host-dependent C3 processor power 4759state 4760support. Note, ARB_DIS is obsolete and only applies to older chipsets, 4761both 4762Intel and other vendors. (for Intel: ICH4-M and earlier) 4763 4764This change removes the code to disable/enable bus master arbitration 4765during 4766suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 4767causes 4768resume problems on some machines. The change has been in use for over 4769seven 4770years within Linux. 4771 4772Implemented two new external interfaces to support host-directed dynamic 4773ACPI 4774table load and unload. They are intended to simplify the host 4775implementation 4776of hot-plug support: 4777 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 4778 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 4779table. 4780See the ACPICA reference for additional details. Adds one new file, 4781components/tables/tbxfload.c 4782 4783Implemented and deployed two new interfaces for errors and warnings that 4784are 4785known to be caused by BIOS/firmware issues: 4786 AcpiBiosError: Prints "ACPI Firmware Error" message. 4787 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 4788Deployed these new interfaces in the ACPICA Table Manager code for ACPI 4789table 4790and FADT errors. Additional deployment to be completed as appropriate in 4791the 4792future. The associated conditional macros are ACPI_BIOS_ERROR and 4793ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 4794ACPICA 4795BZ 4796843. 4797 4798Implicit notify support: ensure that no memory allocation occurs within a 4799critical region. This fix moves a memory allocation outside of the time 4800that a 4801spinlock is held. Fixes issues on systems that do not allow this 4802behavior. 4803Jung-uk Kim. 4804 4805Split exception code utilities and tables into a new file, 4806utilities/utexcep.c 4807 4808Example Code and Data Size: These are the sizes for the OS-independent 4809acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4810debug 4811version of the code includes the debug output trace mechanism and has a 4812much 4813larger code and data size. 4814 4815 Previous Release: 4816 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 4817 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 4818 Current Release: 4819 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 4820 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 4821 4822 48232) iASL Compiler/Disassembler and Tools: 4824 4825iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 4826of 48270. Jung-uk Kim. 4828 4829Debugger: Enhanced the "tables" command to emit additional information 4830about 4831the current set of ACPI tables, including the owner ID and flags decode. 4832 4833Debugger: Reimplemented the "unload" command to use the new 4834AcpiUnloadParentTable external interface. This command was disable 4835previously 4836due to need for an unload interface. 4837 4838AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 4839option 4840will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 4841 4842---------------------------------------- 484320 June 2012. Summary of changes for version 20120620: 4844 4845 48461) ACPICA Kernel-resident Subsystem: 4847 4848Implemented support to expand the "implicit notify" feature to allow 4849multiple 4850devices to be notified by a single GPE. This feature automatically 4851generates a 4852runtime device notification in the absence of a BIOS-provided GPE control 4853method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 4854notify is 4855provided by ACPICA for Windows compatibility, and is a workaround for 4856BIOS 4857AML 4858code errors. See the description of the AcpiSetupGpeForWake interface in 4859the 4860APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 4861 4862Changed some comments and internal function names to simplify and ensure 4863correctness of the Linux code translation. No functional changes. 4864 4865Example Code and Data Size: These are the sizes for the OS-independent 4866acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4867debug 4868version of the code includes the debug output trace mechanism and has a 4869much 4870larger code and data size. 4871 4872 Previous Release: 4873 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 4874 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 4875 Current Release: 4876 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 4877 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 4878 4879 48802) iASL Compiler/Disassembler and Tools: 4881 4882Disassembler: Added support to emit short, commented descriptions for the 4883ACPI 4884predefined names in order to improve the readability of the disassembled 4885output. ACPICA BZ 959. Changes include: 4886 1) Emit descriptions for all standard predefined names (_INI, _STA, 4887_PRW, 4888etc.) 4889 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 4890 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 4891etc.) 4892 4893AcpiSrc: Fixed several long-standing Linux code translation issues. 4894Argument 4895descriptions in function headers are now translated properly to lower 4896case 4897and 4898underscores. ACPICA BZ 961. Also fixes translation problems such as 4899these: 4900(old -> new) 4901 i_aSL -> iASL 4902 00-7_f -> 00-7F 4903 16_k -> 16K 4904 local_fADT -> local_FADT 4905 execute_oSI -> execute_OSI 4906 4907iASL: Fixed a problem where null bytes were inadvertently emitted into 4908some 4909listing files. 4910 4911iASL: Added the existing debug options to the standard help screen. There 4912are 4913no longer two different help screens. ACPICA BZ 957. 4914 4915AcpiHelp: Fixed some typos in the various predefined name descriptions. 4916Also 4917expand some of the descriptions where appropriate. 4918 4919iASL: Fixed the -ot option (display compile times/statistics). Was not 4920working 4921properly for standard output; only worked for the debug file case. 4922 4923---------------------------------------- 492418 May 2012. Summary of changes for version 20120518: 4925 4926 49271) ACPICA Core Subsystem: 4928 4929Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 4930defined 4931to block until asynchronous events such as notifies and GPEs have 4932completed. 4933Within ACPICA, it is only called before a notify or GPE handler is 4934removed/uninstalled. It also may be useful for the host OS within related 4935drivers such as the Embedded Controller driver. See the ACPICA reference 4936for 4937additional information. ACPICA BZ 868. 4938 4939ACPI Tables: Added a new error message for a possible overflow failure 4940during 4941the conversion of FADT 32-bit legacy register addresses to internal 4942common 494364- 4944bit GAS structure representation. The GAS has a one-byte "bit length" 4945field, 4946thus limiting the register length to 255 bits. ACPICA BZ 953. 4947 4948Example Code and Data Size: These are the sizes for the OS-independent 4949acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4950debug 4951version of the code includes the debug output trace mechanism and has a 4952much 4953larger code and data size. 4954 4955 Previous Release: 4956 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4957 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 4958 Current Release: 4959 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 4960 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 4961 4962 49632) iASL Compiler/Disassembler and Tools: 4964 4965iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 4966macro. 4967This keyword was added late in the ACPI 5.0 release cycle and was not 4968implemented until now. 4969 4970Disassembler: Added support for Operation Region externals. Adds missing 4971support for operation regions that are defined in another table, and 4972referenced locally via a Field or BankField ASL operator. Now generates 4973the 4974correct External statement. 4975 4976Disassembler: Several additional fixes for the External() statement 4977generation 4978related to some ASL operators. Also, order the External() statements 4979alphabetically in the disassembler output. Fixes the External() 4980generation 4981for 4982the Create* field, Alias, and Scope operators: 4983 1) Create* buffer field operators - fix type mismatch warning on 4984disassembly 4985 2) Alias - implement missing External support 4986 3) Scope - fix to make sure all necessary externals are emitted. 4987 4988iASL: Improved pathname support. For include files, merge the prefix 4989pathname 4990with the file pathname and eliminate unnecessary components. Convert 4991backslashes in all pathnames to forward slashes, for readability. Include 4992file 4993pathname changes affect both #include and Include() type operators. 4994 4995iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 4996end 4997of a valid line by inserting a newline and then returning the EOF during 4998the 4999next call to GetNextLine. Prevents the line from being ignored due to EOF 5000condition. 5001 5002iASL: Implemented some changes to enhance the IDE support (-vi option.) 5003Error 5004and Warning messages are now correctly recognized for both the source 5005code 5006browser and the global error and warning counts. 5007 5008---------------------------------------- 500920 April 2012. Summary of changes for version 20120420: 5010 5011 50121) ACPICA Core Subsystem: 5013 5014Implemented support for multiple notify handlers. This change adds 5015support 5016to 5017allow multiple system and device notify handlers on Device, Thermal Zone, 5018and 5019Processor objects. This can simplify the host OS notification 5020implementation. 5021Also re-worked and restructured the entire notify support code to 5022simplify 5023handler installation, handler removal, notify event queuing, and notify 5024dispatch to handler(s). Note: there can still only be two global notify 5025handlers - one for system notifies and one for device notifies. There are 5026no 5027changes to the existing handler install/remove interfaces. Lin Ming, Bob 5028Moore, Rafael Wysocki. 5029 5030Fixed a regression in the package repair code where the object reference 5031count was calculated incorrectly. Regression was introduced in the commit 5032"Support to add Package wrappers". 5033 5034Fixed a couple possible memory leaks in the AML parser, in the error 5035recovery 5036path. Jesper Juhl, Lin Ming. 5037 5038Example Code and Data Size: These are the sizes for the OS-independent 5039acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5040debug version of the code includes the debug output trace mechanism and 5041has a 5042much larger code and data size. 5043 5044 Previous Release: 5045 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5046 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5047 Current Release: 5048 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5049 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 5050 5051 50522) iASL Compiler/Disassembler and Tools: 5053 5054iASL: Fixed a problem with the resource descriptor support where the 5055length 5056of the StartDependentFn and StartDependentFnNoPrio descriptors were not 5057included in cumulative descriptor offset, resulting in incorrect values 5058for 5059resource tags within resource descriptors appearing after a 5060StartDependent* 5061descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 5062 5063iASL and Preprocessor: Implemented full support for the #line directive 5064to 5065correctly track original source file line numbers through the .i 5066preprocessor 5067output file - for error and warning messages. 5068 5069iASL: Expand the allowable byte constants for address space IDs. 5070Previously, 5071the allowable range was 0x80-0xFF (user-defined spaces), now the range is 50720x0A-0xFF to allow for custom and new IDs without changing the compiler. 5073 5074iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 5075 5076iASL: Add option to completely disable the preprocessor (-Pn). 5077 5078iASL: Now emit all error/warning messages to standard error (stderr) by 5079default (instead of the previous stdout). 5080 5081ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 5082Update 5083for resource descriptor offset fix above. Update/cleanup error output 5084routines. Enable and send iASL errors/warnings to an error logfile 5085(error.txt). Send all other iASL output to a logfile (compiler.txt). 5086Fixed 5087several extraneous "unrecognized operator" messages. 5088 5089---------------------------------------- 509020 March 2012. Summary of changes for version 20120320: 5091 5092 50931) ACPICA Core Subsystem: 5094 5095Enhanced the sleep/wake interfaces to optionally execute the _GTS method 5096(Going To Sleep) and the _BFS method (Back From Sleep). Windows 5097apparently 5098does not execute these methods, and therefore these methods are often 5099untested. It has been seen on some systems where the execution of these 5100methods causes errors and also prevents the machine from entering S5. It 5101is 5102therefore suggested that host operating systems do not execute these 5103methods 5104by default. In the future, perhaps these methods can be optionally 5105executed 5106based on the age of the system and/or what is the newest version of 5107Windows 5108that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 5109and 5110AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 5111Ming. 5112 5113Fixed a problem where the length of the local/common FADT was set too 5114early. 5115The local FADT table length cannot be set to the common length until the 5116original length has been examined. There is code that checks the table 5117length 5118and sets various fields appropriately. This can affect older machines 5119with 5120early FADT versions. For example, this can cause inadvertent writes to 5121the 5122CST_CNT register. Julian Anastasov. 5123 5124Fixed a mapping issue related to a physical table override. Use the 5125deferred 5126mapping mechanism for tables loaded via the physical override OSL 5127interface. 5128This allows for early mapping before the virtual memory manager is 5129available. 5130Thomas Renninger, Bob Moore. 5131 5132Enhanced the automatic return-object repair code: Repair a common problem 5133with 5134predefined methods that are defined to return a variable-length Package 5135of 5136sub-objects. If there is only one sub-object, some BIOS ASL code 5137mistakenly 5138simply returns the single object instead of a Package with one sub- 5139object. 5140This new support will repair this error by wrapping a Package object 5141around 5142the original object, creating the correct and expected Package with one 5143sub- 5144object. Names that can be repaired in this manner include: _ALR, _CSD, 5145_HPX, 5146_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 5147939. 5148 5149Changed the exception code returned for invalid ACPI paths passed as 5150parameters to external interfaces such as AcpiEvaluateObject. Was 5151AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 5152 5153Example Code and Data Size: These are the sizes for the OS-independent 5154acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5155debug 5156version of the code includes the debug output trace mechanism and has a 5157much 5158larger code and data size. 5159 5160 Previous Release: 5161 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 5162 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5163 Current Release: 5164 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5165 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5166 5167 51682) iASL Compiler/Disassembler and Tools: 5169 5170iASL: Added the infrastructure and initial implementation of a integrated 5171C- 5172like preprocessor. This will simplify BIOS development process by 5173eliminating 5174the need for a separate preprocessing step during builds. On Windows, it 5175also 5176eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 5177features including full #define() macro support are still under 5178development. 5179These preprocessor directives are supported: 5180 #define 5181 #elif 5182 #else 5183 #endif 5184 #error 5185 #if 5186 #ifdef 5187 #ifndef 5188 #include 5189 #pragma message 5190 #undef 5191 #warning 5192In addition, these new command line options are supported: 5193 -D <symbol> Define symbol for preprocessor use 5194 -li Create preprocessed output file (*.i) 5195 -P Preprocess only and create preprocessor output file (*.i) 5196 5197Table Compiler: Fixed a problem where the equals operator within an 5198expression 5199did not work properly. 5200 5201Updated iASL to use the current versions of Bison/Flex. Updated the 5202Windows 5203project file to invoke these tools from the standard location. ACPICA BZ 5204904. 5205Versions supported: 5206 Flex for Windows: V2.5.4 5207 Bison for Windows: V2.4.1 5208 5209---------------------------------------- 521015 February 2012. Summary of changes for version 20120215: 5211 5212 52131) ACPICA Core Subsystem: 5214 5215There have been some major changes to the sleep/wake support code, as 5216described below (a - e). 5217 5218a) The AcpiLeaveSleepState has been split into two interfaces, similar to 5219AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 5220AcpiLeaveSleepStatePrep. This allows the host to perform actions between 5221the 5222time the _BFS method is called and the _WAK method is called. NOTE: all 5223hosts 5224must update their wake/resume code or else sleep/wake will not work 5225properly. 5226Rafael Wysocki. 5227 5228b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 5229_WAK 5230method. Some machines require that the GPEs are enabled before the _WAK 5231method 5232is executed. Thomas Renninger. 5233 5234c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 5235bit. 5236Some BIOS code assumes that WAK_STS will be cleared on resume and use it 5237to 5238determine whether the system is rebooting or resuming. Matthew Garrett. 5239 5240d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 5241Sleep) to 5242match the ACPI specification requirement. Rafael Wysocki. 5243 5244e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 5245registers within the V5 FADT. This support adds two new files: 5246hardware/hwesleep.c implements the support for the new registers. Moved 5247all 5248sleep/wake external interfaces to hardware/hwxfsleep.c. 5249 5250 5251Added a new OSL interface for ACPI table overrides, 5252AcpiOsPhysicalTableOverride. This interface allows the host to override a 5253table via a physical address, instead of the logical address required by 5254AcpiOsTableOverride. This simplifies the host implementation. Initial 5255implementation by Thomas Renninger. The ACPICA implementation creates a 5256single 5257shared function for table overrides that attempts both a logical and a 5258physical override. 5259 5260Expanded the OSL memory read/write interfaces to 64-bit data 5261(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 5262transfer support for GAS register structures passed to AcpiRead and 5263AcpiWrite. 5264 5265Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 5266custom 5267build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 5268model. 5269See the ACPICA reference for details. ACPICA BZ 942. This option removes 5270about 527110% of the code and 5% of the static data, and the following hardware 5272ACPI 5273features become unavailable: 5274 PM Event and Control registers 5275 SCI interrupt (and handler) 5276 Fixed Events 5277 General Purpose Events (GPEs) 5278 Global Lock 5279 ACPI PM timer 5280 FACS table (Waking vectors and Global Lock) 5281 5282Updated the unix tarball directory structure to match the ACPICA git 5283source 5284tree. This ensures that the generic unix makefiles work properly (in 5285generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 5286867. 5287 5288Updated the return value of the _REV predefined method to integer value 5 5289to 5290reflect ACPI 5.0 support. 5291 5292Moved the external ACPI PM timer interface prototypes to the public 5293acpixf.h 5294file where they belong. 5295 5296Example Code and Data Size: These are the sizes for the OS-independent 5297acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5298debug 5299version of the code includes the debug output trace mechanism and has a 5300much 5301larger code and data size. 5302 5303 Previous 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 Current Release: 5307 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 5308 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5309 5310 53112) iASL Compiler/Disassembler and Tools: 5312 5313Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 5314descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 5315incorrectly displayed. 5316 5317AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 5318specification. 5319 5320---------------------------------------- 532111 January 2012. Summary of changes for version 20120111: 5322 5323 53241) ACPICA Core Subsystem: 5325 5326Implemented a new mechanism to allow host device drivers to check for 5327address 5328range conflicts with ACPI Operation Regions. Both SystemMemory and 5329SystemIO 5330address spaces are supported. A new external interface, 5331AcpiCheckAddressRange, 5332allows drivers to check an address range against the ACPI namespace. See 5333the 5334ACPICA reference for additional details. Adds one new file, 5335utilities/utaddress.c. Lin Ming, Bob Moore. 5336 5337Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 5338Control 5339and 5340Status registers, update the ACPI 5.0 flags, and update internal data 5341structures to handle an FADT larger than 256 bytes. The size of the ACPI 53425.0 5343FADT is 268 bytes. 5344 5345Updated all ACPICA copyrights and signons to 2012. Added the 2012 5346copyright to 5347all module headers and signons, including the standard Linux header. This 5348affects virtually every file in the ACPICA core subsystem, iASL compiler, 5349and 5350all ACPICA utilities. 5351 5352Example Code and Data Size: These are the sizes for the OS-independent 5353acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5354debug 5355version of the code includes the debug output trace mechanism and has a 5356much 5357larger code and data size. 5358 5359 Previous Release: 5360 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 5361 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 5362 Current Release: 5363 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 5364 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 5365 5366 53672) iASL Compiler/Disassembler and Tools: 5368 5369Disassembler: fixed a problem with the automatic resource tag generation 5370support. Fixes a problem where the resource tags are inadvertently not 5371constructed if the table being disassembled contains external references 5372to 5373control methods. Moved the actual construction of the tags to after the 5374final 5375namespace is constructed (after 2nd parse is invoked due to external 5376control 5377method references.) ACPICA BZ 941. 5378 5379Table Compiler: Make all "generic" operators caseless. These are the 5380operators 5381like UINT8, String, etc. Making these caseless improves ease-of-use. 5382ACPICA BZ 5383934. 5384 5385---------------------------------------- 538623 November 2011. Summary of changes for version 20111123: 5387 53880) ACPI 5.0 Support: 5389 5390This release contains full support for the ACPI 5.0 specification, as 5391summarized below. 5392 5393Reduced Hardware Support: 5394------------------------- 5395 5396This support allows for ACPI systems without the usual ACPI hardware. 5397This 5398support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 5399will 5400not attempt to initialize or use any of the usual ACPI hardware. Note, 5401when 5402this flag is set, all of the following ACPI hardware is assumed to be not 5403present and is not initialized or accessed: 5404 5405 General Purpose Events (GPEs) 5406 Fixed Events (PM1a/PM1b and PM Control) 5407 Power Management Timer and Console Buttons (power/sleep) 5408 Real-time Clock Alarm 5409 Global Lock 5410 System Control Interrupt (SCI) 5411 The FACS is assumed to be non-existent 5412 5413ACPI Tables: 5414------------ 5415 5416All new tables and updates to existing tables are fully supported in the 5417ACPICA headers (for use by device drivers), the disassembler, and the 5418iASL 5419Data Table Compiler. ACPI 5.0 defines these new tables: 5420 5421 BGRT /* Boot Graphics Resource Table */ 5422 DRTM /* Dynamic Root of Trust for Measurement table */ 5423 FPDT /* Firmware Performance Data Table */ 5424 GTDT /* Generic Timer Description Table */ 5425 MPST /* Memory Power State Table */ 5426 PCCT /* Platform Communications Channel Table */ 5427 PMTT /* Platform Memory Topology Table */ 5428 RASF /* RAS Feature table */ 5429 5430Operation Regions/SpaceIDs: 5431--------------------------- 5432 5433All new operation regions are fully supported by the iASL compiler, the 5434disassembler, and the ACPICA runtime code (for dispatch to region 5435handlers.) 5436The new operation region Space IDs are: 5437 5438 GeneralPurposeIo 5439 GenericSerialBus 5440 5441Resource Descriptors: 5442--------------------- 5443 5444All new ASL resource descriptors are fully supported by the iASL 5445compiler, 5446the 5447ASL/AML disassembler, and the ACPICA runtime Resource Manager code 5448(including 5449all new predefined resource tags). New descriptors are: 5450 5451 FixedDma 5452 GpioIo 5453 GpioInt 5454 I2cSerialBus 5455 SpiSerialBus 5456 UartSerialBus 5457 5458ASL/AML Operators, New and Modified: 5459------------------------------------ 5460 5461One new operator is added, the Connection operator, which is used to 5462associate 5463a GeneralPurposeIo or GenericSerialBus resource descriptor with 5464individual 5465field objects within an operation region. Several new protocols are 5466associated 5467with the AccessAs operator. All are fully supported by the iASL compiler, 5468disassembler, and runtime ACPICA AML interpreter: 5469 5470 Connection // Declare Field Connection 5471attributes 5472 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 5473 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 5474Protocol 5475 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 5476 RawDataBuffer // Data type for Vendor Data 5477fields 5478 5479Predefined ASL/AML Objects: 5480--------------------------- 5481 5482All new predefined objects/control-methods are supported by the iASL 5483compiler 5484and the ACPICA runtime validation/repair (arguments and return values.) 5485New 5486predefined names include the following: 5487 5488Standard Predefined Names (Objects or Control Methods): 5489 _AEI, _CLS, _CPC, _CWS, _DEP, 5490 _DLM, _EVT, _GCP, _CRT, _GWS, 5491 _HRV, _PRE, _PSE, _SRT, _SUB. 5492 5493Resource Tags (Names used to access individual fields within resource 5494descriptors): 5495 _DBT, _DPL, _DRS, _END, _FLC, 5496 _IOR, _LIN, _MOD, _PAR, _PHA, 5497 _PIN, _PPI, _POL, _RXL, _SLV, 5498 _SPE, _STB, _TXL, _VEN. 5499 5500ACPICA External Interfaces: 5501--------------------------- 5502 5503Several new interfaces have been defined for use by ACPI-related device 5504drivers and other host OS services: 5505 5506AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 5507to 5508acquire and release AML mutexes that are defined in the DSDT/SSDT tables 5509provided by the BIOS. They are intended to be used in conjunction with 5510the 5511ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 5512mutual exclusion with the AML code/interpreter. 5513 5514AcpiGetEventResources: Returns the (formatted) resource descriptors as 5515defined 5516by the ACPI 5.0 _AEI object (ACPI Event Information). This object 5517provides 5518resource descriptors associated with hardware-reduced platform events, 5519similar 5520to the AcpiGetCurrentResources interface. 5521 5522Operation Region Handlers: For General Purpose IO and Generic Serial Bus 5523operation regions, information about the Connection() object and any 5524optional 5525length information is passed to the region handler within the Context 5526parameter. 5527 5528AcpiBufferToResource: This interface converts a raw AML buffer containing 5529a 5530resource template or resource descriptor to the ACPI_RESOURCE internal 5531format 5532suitable for use by device drivers. Can be used by an operation region 5533handler 5534to convert the Connection() buffer object into a ACPI_RESOURCE. 5535 5536Miscellaneous/Tools/TestSuites: 5537------------------------------- 5538 5539Support for extended _HID names (Four alpha characters instead of three). 5540Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 5541Support for ACPI 5.0 features in the ASLTS test suite. 5542Fully updated documentation (ACPICA and iASL reference documents.) 5543 5544ACPI Table Definition Language: 5545------------------------------- 5546 5547Support for this language was implemented and released as a subsystem of 5548the 5549iASL compiler in 2010. (See the iASL compiler User Guide.) 5550 5551 5552Non-ACPI 5.0 changes for this release: 5553-------------------------------------- 5554 55551) ACPICA Core Subsystem: 5556 5557Fix a problem with operation region declarations where a failure can 5558occur 5559if 5560the region name and an argument that evaluates to an object (such as the 5561region address) are in different namespace scopes. Lin Ming, ACPICA BZ 5562937. 5563 5564Do not abort an ACPI table load if an invalid space ID is found within. 5565This 5566will be caught later if the offending method is executed. ACPICA BZ 925. 5567 5568Fixed an issue with the FFixedHW space ID where the ID was not always 5569recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 5570 5571Fixed a problem with the 32-bit generation of the unix-specific OSL 5572(osunixxf.c). Lin Ming, ACPICA BZ 936. 5573 5574Several changes made to enable generation with the GCC 4.6 compiler. 5575ACPICA BZ 5576935. 5577 5578New error messages: Unsupported I/O requests (not 8/16/32 bit), and 5579Index/Bank 5580field registers out-of-range. 5581 55822) iASL Compiler/Disassembler and Tools: 5583 5584iASL: Implemented the __PATH__ operator, which returns the full pathname 5585of 5586the current source file. 5587 5588AcpiHelp: Automatically display expanded keyword information for all ASL 5589operators. 5590 5591Debugger: Add "Template" command to disassemble/dump resource template 5592buffers. 5593 5594Added a new master script to generate and execute the ASLTS test suite. 5595Automatically handles 32- and 64-bit generation. See tests/aslts.sh 5596 5597iASL: Fix problem with listing generation during processing of the 5598Switch() 5599operator where AML listing was disabled until the entire Switch block was 5600completed. 5601 5602iASL: Improve support for semicolon statement terminators. Fix "invalid 5603character" message for some cases when the semicolon is used. Semicolons 5604are 5605now allowed after every <Term> grammar element. ACPICA BZ 927. 5606 5607iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 5608923. 5609 5610Disassembler: Fix problem with disassembly of the DataTableRegion 5611operator 5612where an inadvertent "Unhandled deferred opcode" message could be 5613generated. 5614 56153) Example Code and Data Size 5616 5617These are the sizes for the OS-independent acpica.lib produced by the 5618Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 5619includes the debug output trace mechanism and has a much larger code and 5620data 5621size. 5622 5623 Previous Release: 5624 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5625 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5626 Current Release: 5627 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 5628 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 5629 5630---------------------------------------- 563122 September 2011. Summary of changes for version 20110922: 5632 56330) ACPI 5.0 News: 5634 5635Support for ACPI 5.0 in ACPICA has been underway for several months and 5636will 5637be released at the same time that ACPI 5.0 is officially released. 5638 5639The ACPI 5.0 specification is on track for release in the next few 5640months. 5641 56421) ACPICA Core Subsystem: 5643 5644Fixed a problem where the maximum sleep time for the Sleep() operator was 5645intended to be limited to two seconds, but was inadvertently limited to 564620 5647seconds instead. 5648 5649Linux and Unix makefiles: Added header file dependencies to ensure 5650correct 5651generation of ACPICA core code and utilities. Also simplified the 5652makefiles 5653considerably through the use of the vpath variable to specify search 5654paths. 5655ACPICA BZ 924. 5656 56572) iASL Compiler/Disassembler and Tools: 5658 5659iASL: Implemented support to check the access length for all fields 5660created to 5661access named Resource Descriptor fields. For example, if a resource field 5662is 5663defined to be two bits, a warning is issued if a CreateXxxxField() is 5664used 5665with an incorrect bit length. This is implemented for all current 5666resource 5667descriptor names. ACPICA BZ 930. 5668 5669Disassembler: Fixed a byte ordering problem with the output of 24-bit and 567056- 5671bit integers. 5672 5673iASL: Fixed a couple of issues associated with variable-length package 5674objects. 1) properly handle constants like One, Ones, Zero -- do not make 5675a 5676VAR_PACKAGE when these are used as a package length. 2) Allow the 5677VAR_PACKAGE 5678opcode (in addition to PACKAGE) when validating object types for 5679predefined 5680names. 5681 5682iASL: Emit statistics for all output files (instead of just the ASL input 5683and 5684AML output). Includes listings, hex files, etc. 5685 5686iASL: Added -G option to the table compiler to allow the compilation of 5687custom 5688ACPI tables. The only part of a table that is required is the standard 568936- 5690byte 5691ACPI header. 5692 5693AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 5694headers), 5695which also adds correct 64-bit support. Also, now all output filenames 5696are 5697completely lower case. 5698 5699AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 5700loading table files. A warning is issued for any such tables. The only 5701exception is an FADT. This also fixes a possible fault when attempting to 5702load 5703non-AML tables. ACPICA BZ 932. 5704 5705AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 5706a 5707missing table terminator could cause a fault when using the -p option. 5708 5709AcpiSrc: Fixed a possible divide-by-zero fault when generating file 5710statistics. 5711 57123) Example Code and Data Size 5713 5714These are the sizes for the OS-independent acpica.lib produced by the 5715Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 5716includes the debug output trace mechanism and has a much larger code and 5717data 5718size. 5719 5720 Previous Release (VC 9.0): 5721 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K 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 5727 5728---------------------------------------- 572923 June 2011. Summary of changes for version 20110623: 5730 57311) ACPI CA Core Subsystem: 5732 5733Updated the predefined name repair mechanism to not attempt repair of a 5734_TSS 5735return object if a _PSS object is present. We can only sort the _TSS 5736return 5737package if there is no _PSS within the same scope. This is because if 5738_PSS 5739is 5740present, the ACPI specification dictates that the _TSS Power Dissipation 5741field 5742is to be ignored, and therefore some BIOSs leave garbage values in the 5743_TSS 5744Power field(s). In this case, it is best to just return the _TSS package 5745as- 5746is. Reported by, and fixed with assistance from Fenghua Yu. 5747 5748Added an option to globally disable the control method return value 5749validation 5750and repair. This runtime option can be used to disable return value 5751repair 5752if 5753this is causing a problem on a particular machine. Also added an option 5754to 5755AcpiExec (-dr) to set this disable flag. 5756 5757All makefiles and project files: Major changes to improve generation of 5758ACPICA 5759tools. ACPICA BZ 912: 5760 Reduce default optimization levels to improve compatibility 5761 For Linux, add strict-aliasing=0 for gcc 4 5762 Cleanup and simplify use of command line defines 5763 Cleanup multithread library support 5764 Improve usage messages 5765 5766Linux-specific header: update handling of THREAD_ID and pthread. For the 576732- 5768bit case, improve casting to eliminate possible warnings, especially with 5769the 5770acpica tools. 5771 5772Example Code and Data Size: These are the sizes for the OS-independent 5773acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5774debug 5775version of the code includes the debug output trace mechanism and has a 5776much 5777larger code and data size. 5778 5779 Previous Release (VC 9.0): 5780 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 5781 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5782 Current Release (VC 9.0): 5783 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5784 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5785 57862) iASL Compiler/Disassembler and Tools: 5787 5788With this release, a new utility named "acpihelp" has been added to the 5789ACPICA 5790package. This utility summarizes the ACPI specification chapters for the 5791ASL 5792and AML languages. It generates under Linux/Unix as well as Windows, and 5793provides the following functionality: 5794 Find/display ASL operator(s) -- with description and syntax. 5795 Find/display ASL keyword(s) -- with exact spelling and descriptions. 5796 Find/display ACPI predefined name(s) -- with description, number 5797 of arguments, and the return value data type. 5798 Find/display AML opcode name(s) -- with opcode, arguments, and 5799grammar. 5800 Decode/display AML opcode -- with opcode name, arguments, and 5801grammar. 5802 5803Service Layers: Make multi-thread support configurable. Conditionally 5804compile 5805the multi-thread support so that threading libraries will not be linked 5806if 5807not 5808necessary. The only tool that requires multi-thread support is AcpiExec. 5809 5810iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 5811of 5812Bison appear to want the interface to yyerror to be a const char * (or at 5813least this is a problem when generating iASL on some systems.) ACPICA BZ 5814923 5815Pierre Lejeune. 5816 5817Tools: Fix for systems where O_BINARY is not defined. Only used for 5818Windows 5819versions of the tools. 5820 5821---------------------------------------- 582227 May 2011. Summary of changes for version 20110527: 5823 58241) ACPI CA Core Subsystem: 5825 5826ASL Load() operator: Reinstate most restrictions on the incoming ACPI 5827table 5828signature. Now, only allow SSDT, OEMx, and a null signature. History: 5829 1) Originally, we checked the table signature for "SSDT" or "PSDT". 5830 (PSDT is now obsolete.) 5831 2) We added support for OEMx tables, signature "OEM" plus a fourth 5832 "don't care" character. 5833 3) Valid tables were encountered with a null signature, so we just 5834 gave up on validating the signature, (05/2008). 5835 4) We encountered non-AML tables such as the MADT, which caused 5836 interpreter errors and kernel faults. So now, we once again allow 5837 only SSDT, OEMx, and now, also a null signature. (05/2011). 5838 5839Added the missing _TDL predefined name to the global name list in order 5840to 5841enable validation. Affects both the core ACPICA code and the iASL 5842compiler. 5843 5844Example Code and Data Size: These are the sizes for the OS-independent 5845acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5846debug 5847version of the code includes the debug output trace mechanism and has a 5848much 5849larger code and data size. 5850 5851 Previous Release (VC 9.0): 5852 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 5853 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 5854 Current Release (VC 9.0): 5855 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 5856 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5857 58582) iASL Compiler/Disassembler and Tools: 5859 5860Debugger/AcpiExec: Implemented support for "complex" method arguments on 5861the 5862debugger command line. This adds support beyond simple integers -- 5863including 5864Strings, Buffers, and Packages. Includes support for nested packages. 5865Increased the default command line buffer size to accommodate these 5866arguments. 5867See the ACPICA reference for details and syntax. ACPICA BZ 917. 5868 5869Debugger/AcpiExec: Implemented support for "default" method arguments for 5870the 5871Execute/Debug command. Now, the debugger will always invoke a control 5872method 5873with the required number of arguments -- even if the command line 5874specifies 5875none or insufficient arguments. It uses default integer values for any 5876missing 5877arguments. Also fixes a bug where only six method arguments maximum were 5878supported instead of the required seven. 5879 5880Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 5881and 5882also return status in order to prevent buffer overruns. See the ACPICA 5883reference for details and syntax. ACPICA BZ 921 5884 5885iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 5886makefiles to simplify support for the two different but similar parser 5887generators, bison and yacc. 5888 5889Updated the generic unix makefile for gcc 4. The default gcc version is 5890now 5891expected to be 4 or greater, since options specific to gcc 4 are used. 5892 5893---------------------------------------- 589413 April 2011. Summary of changes for version 20110413: 5895 58961) ACPI CA Core Subsystem: 5897 5898Implemented support to execute a so-called "orphan" _REG method under the 5899EC 5900device. This change will force the execution of a _REG method underneath 5901the 5902EC 5903device even if there is no corresponding operation region of type 5904EmbeddedControl. Fixes a problem seen on some machines and apparently is 5905compatible with Windows behavior. ACPICA BZ 875. 5906 5907Added more predefined methods that are eligible for automatic NULL 5908package 5909element removal. This change adds another group of predefined names to 5910the 5911list 5912of names that can be repaired by having NULL package elements dynamically 5913removed. This group are those methods that return a single variable- 5914length 5915package containing simple data types such as integers, buffers, strings. 5916This 5917includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 5918_PSL, 5919_Sx, 5920and _TZD. ACPICA BZ 914. 5921 5922Split and segregated all internal global lock functions to a new file, 5923evglock.c. 5924 5925Updated internal address SpaceID for DataTable regions. Moved this 5926internal 5927space 5928id in preparation for ACPI 5.0 changes that will include some new space 5929IDs. 5930This 5931change should not affect user/host code. 5932 5933Example Code and Data Size: These are the sizes for the OS-independent 5934acpica.lib 5935produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 5936version of 5937the code includes the debug output trace mechanism and has a much larger 5938code 5939and 5940data size. 5941 5942 Previous Release (VC 9.0): 5943 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 5944 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 5945 Current Release (VC 9.0): 5946 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 5947 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 5948 59492) iASL Compiler/Disassembler and Tools: 5950 5951iASL/DTC: Major update for new grammar features. Allow generic data types 5952in 5953custom ACPI tables. Field names are now optional. Any line can be split 5954to 5955multiple lines using the continuation char (\). Large buffers now use 5956line- 5957continuation character(s) and no colon on the continuation lines. See the 5958grammar 5959update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 5960Moore. 5961 5962iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 5963statements. 5964Since the parser stuffs a "zero" as the return value for these statements 5965(due 5966to 5967the underlying AML grammar), they were seen as "return with value" by the 5968iASL 5969semantic checking. They are now seen correctly as "null" return 5970statements. 5971 5972iASL: Check if a_REG declaration has a corresponding Operation Region. 5973Adds a 5974check for each _REG to ensure that there is in fact a corresponding 5975operation 5976region declaration in the same scope. If not, the _REG method is not very 5977useful 5978since it probably won't be executed. ACPICA BZ 915. 5979 5980iASL/DTC: Finish support for expression evaluation. Added a new 5981expression 5982parser 5983that implements c-style operator precedence and parenthesization. ACPICA 5984bugzilla 5985908. 5986 5987Disassembler/DTC: Remove support for () and <> style comments in data 5988tables. 5989Now 5990that DTC has full expression support, we don't want to have comment 5991strings 5992that 5993start with a parentheses or a less-than symbol. Now, only the standard /* 5994and 5995// 5996comments are supported, as well as the bracket [] comments. 5997 5998AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 5999"unusual" 6000headers in the acpidump file. Update the header validation to support 6001these 6002tables. Problem introduced in previous AcpiXtract version in the change 6003to 6004support "wrong checksum" error messages emitted by acpidump utility. 6005 6006iASL: Add a * option to generate all template files (as a synonym for 6007ALL) 6008as 6009in 6010"iasl -T *" or "iasl -T ALL". 6011 6012iASL/DTC: Do not abort compiler on fatal errors. We do not want to 6013completely 6014abort the compiler on "fatal" errors, simply should abort the current 6015compile. 6016This allows multiple compiles with a single (possibly wildcard) compiler 6017invocation. 6018 6019---------------------------------------- 602016 March 2011. Summary of changes for version 20110316: 6021 60221) ACPI CA Core Subsystem: 6023 6024Fixed a problem caused by a _PRW method appearing at the namespace root 6025scope 6026during the setup of wake GPEs. A fault could occur if a _PRW directly 6027under 6028the 6029root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 6030 6031Implemented support for "spurious" Global Lock interrupts. On some 6032systems, a 6033global lock interrupt can occur without the pending flag being set. Upon 6034a 6035GL 6036interrupt, we now ensure that a thread is actually waiting for the lock 6037before 6038signaling GL availability. Rafael Wysocki, Bob Moore. 6039 6040Example Code and Data Size: These are the sizes for the OS-independent 6041acpica.lib 6042produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 6043version of 6044the code includes the debug output trace mechanism and has a much larger 6045code 6046and 6047data size. 6048 6049 Previous Release (VC 9.0): 6050 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6051 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6052 Current Release (VC 9.0): 6053 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 6054 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 6055 60562) iASL Compiler/Disassembler and Tools: 6057 6058Implemented full support for the "SLIC" ACPI table. Includes support in 6059the 6060header files, disassembler, table compiler, and template generator. Bob 6061Moore, 6062Lin Ming. 6063 6064AcpiXtract: Correctly handle embedded comments and messages from 6065AcpiDump. 6066Apparently some or all versions of acpidump will occasionally emit a 6067comment 6068like 6069"Wrong checksum", etc., into the dump file. This was causing problems for 6070AcpiXtract. ACPICA BZ 905. 6071 6072iASL: Fix the Linux makefile by removing an inadvertent double file 6073inclusion. 6074ACPICA BZ 913. 6075 6076AcpiExec: Update installation of operation region handlers. Install one 6077handler 6078for a user-defined address space. This is used by the ASL test suite 6079(ASLTS). 6080 6081---------------------------------------- 608211 February 2011. Summary of changes for version 20110211: 6083 60841) ACPI CA Core Subsystem: 6085 6086Added a mechanism to defer _REG methods for some early-installed 6087handlers. 6088Most user handlers should be installed before call to 6089AcpiEnableSubsystem. 6090However, Event handlers and region handlers should be installed after 6091AcpiInitializeObjects. Override handlers for the "default" regions should 6092be 6093installed early, however. This change executes all _REG methods for the 6094default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 6095chicken/egg issues between them. ACPICA BZ 848. 6096 6097Implemented an optimization for GPE detection. This optimization will 6098simply 6099ignore GPE registers that contain no enabled GPEs -- there is no need to 6100read the register since this information is available internally. This 6101becomes more important on machines with a large GPE space. ACPICA 6102bugzilla 6103884. Lin Ming. Suggestion from Joe Liu. 6104 6105Removed all use of the highly unreliable FADT revision field. The 6106revision 6107number in the FADT has been found to be completely unreliable and cannot 6108be 6109trusted. Only the actual table length can be used to infer the version. 6110This 6111change updates the ACPICA core and the disassembler so that both no 6112longer 6113even look at the FADT version and instead depend solely upon the FADT 6114length. 6115 6116Fix an unresolved name issue for the no-debug and no-error-message source 6117generation cases. The _AcpiModuleName was left undefined in these cases, 6118but 6119it is actually needed as a parameter to some interfaces. Define 6120_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 6121 6122Split several large files (makefiles and project files updated) 6123 utglobal.c -> utdecode.c 6124 dbcomds.c -> dbmethod.c dbnames.c 6125 dsopcode.c -> dsargs.c dscontrol.c 6126 dsload.c -> dsload2.c 6127 aslanalyze.c -> aslbtypes.c aslwalks.c 6128 6129Example Code and Data Size: These are the sizes for the OS-independent 6130acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6131debug version of the code includes the debug output trace mechanism and 6132has 6133a much larger code and data size. 6134 6135 Previous Release (VC 9.0): 6136 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6137 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6138 Current Release (VC 9.0): 6139 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6140 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6141 61422) iASL Compiler/Disassembler and Tools: 6143 6144iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 6145These are useful C-style macros with the standard definitions. ACPICA 6146bugzilla 898. 6147 6148iASL/DTC: Added support for integer expressions and labels. Support for 6149full 6150expressions for all integer fields in all ACPI tables. Support for labels 6151in 6152"generic" portions of tables such as UEFI. See the iASL reference manual. 6153 6154Debugger: Added a command to display the status of global handlers. The 6155"handlers" command will display op region, fixed event, and miscellaneous 6156global handlers. installation status -- and for op regions, whether 6157default 6158or user-installed handler will be used. 6159 6160iASL: Warn if reserved method incorrectly returns a value. Many 6161predefined 6162names are defined such that they do not return a value. If implemented as 6163a 6164method, issue a warning if such a name explicitly returns a value. ACPICA 6165Bugzilla 855. 6166 6167iASL: Added detection of GPE method name conflicts. Detects a conflict 6168where 6169there are two GPE methods of the form _Lxy and _Exy in the same scope. 6170(For 6171example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 6172 6173iASL/DTC: Fixed a couple input scanner issues with comments and line 6174numbers. Comment remover could get confused and miss a comment ending. 6175Fixed 6176a problem with line counter maintenance. 6177 6178iASL/DTC: Reduced the severity of some errors from fatal to error. There 6179is 6180no need to abort on simple errors within a field definition. 6181 6182Debugger: Simplified the output of the help command. All help output now 6183in 6184a single screen, instead of help subcommands. ACPICA Bugzilla 897. 6185 6186---------------------------------------- 618712 January 2011. Summary of changes for version 20110112: 6188 61891) ACPI CA Core Subsystem: 6190 6191Fixed a race condition between method execution and namespace walks that 6192can 6193possibly cause a fault. The problem was apparently introduced in version 619420100528 as a result of a performance optimization that reduces the 6195number 6196of 6197namespace walks upon method exit by using the delete_namespace_subtree 6198function instead of the delete_namespace_by_owner function used 6199previously. 6200Bug is a missing namespace lock in the delete_namespace_subtree function. 6201dana.myers@oracle.com 6202 6203Fixed several issues and a possible fault with the automatic "serialized" 6204method support. History: This support changes a method to "serialized" on 6205the 6206fly if the method generates an AE_ALREADY_EXISTS error, indicating the 6207possibility that it cannot handle reentrancy. This fix repairs a couple 6208of 6209issues seen in the field, especially on machines with many cores: 6210 6211 1) Delete method children only upon the exit of the last thread, 6212 so as to not delete objects out from under other running threads 6213 (and possibly causing a fault.) 6214 2) Set the "serialized" bit for the method only upon the exit of the 6215 Last thread, so as to not cause deadlock when running threads 6216 attempt to exit. 6217 3) Cleanup the use of the AML "MethodFlags" and internal method flags 6218 so that there is no longer any confusion between the two. 6219 6220 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 6221 6222Debugger: Now lock the namespace for duration of a namespace dump. 6223Prevents 6224issues if the namespace is changing dynamically underneath the debugger. 6225Especially affects temporary namespace nodes, since the debugger displays 6226these also. 6227 6228Updated the ordering of include files. The ACPICA headers should appear 6229before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 6230set 6231any necessary compiler-specific defines, etc. Affects the ACPI-related 6232tools 6233and utilities. 6234 6235Updated all ACPICA copyrights and signons to 2011. Added the 2011 6236copyright 6237to all module headers and signons, including the Linux header. This 6238affects 6239virtually every file in the ACPICA core subsystem, iASL compiler, and all 6240utilities. 6241 6242Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 6243project files for VC++ 6.0 are now obsolete. New project files can be 6244found 6245under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 6246details. 6247 6248Example Code and Data Size: These are the sizes for the OS-independent 6249acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6250debug version of the code includes the debug output trace mechanism and 6251has a 6252much larger code and data size. 6253 6254 Previous Release (VC 6.0): 6255 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 6256 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 6257 Current Release (VC 9.0): 6258 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6259 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6260 62612) iASL Compiler/Disassembler and Tools: 6262 6263iASL: Added generic data types to the Data Table compiler. Add "generic" 6264data 6265types such as UINT32, String, Unicode, etc., to simplify the generation 6266of 6267platform-defined tables such as UEFI. Lin Ming. 6268 6269iASL: Added listing support for the Data Table Compiler. Adds listing 6270support 6271(-l) to display actual binary output for each line of input code. 6272 6273---------------------------------------- 627409 December 2010. Summary of changes for version 20101209: 6275 62761) ACPI CA Core Subsystem: 6277 6278Completed the major overhaul of the GPE support code that was begun in 6279July 62802010. Major features include: removal of _PRW execution in ACPICA (host 6281executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 6282changes to existing interfaces, simplification of GPE handler operation, 6283and 6284a handful of new interfaces: 6285 6286 AcpiUpdateAllGpes 6287 AcpiFinishGpe 6288 AcpiSetupGpeForWake 6289 AcpiSetGpeWakeMask 6290 One new file, evxfgpe.c to consolidate all external GPE interfaces. 6291 6292See the ACPICA Programmer Reference for full details and programming 6293information. See the new section 4.4 "General Purpose Event (GPE) 6294Support" 6295for a full overview, and section 8.7 "ACPI General Purpose Event 6296Management" 6297for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 6298Ming, 6299Bob Moore, Rafael Wysocki. 6300 6301Implemented a new GPE feature for Windows compatibility, the "Implicit 6302Wake 6303GPE Notify". This feature will automatically issue a Notify(2) on a 6304device 6305when a Wake GPE is received if there is no corresponding GPE method or 6306handler. ACPICA BZ 870. 6307 6308Fixed a problem with the Scope() operator during table parse and load 6309phase. 6310During load phase (table load or method execution), the scope operator 6311should 6312not enter the target into the namespace. Instead, it should open a new 6313scope 6314at the target location. Linux BZ 19462, ACPICA BZ 882. 6315 6316Example Code and Data Size: These are the sizes for the OS-independent 6317acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6318debug version of the code includes the debug output trace mechanism and 6319has a 6320much larger code and data size. 6321 6322 Previous Release: 6323 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 6324 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 6325 Current Release: 6326 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6327 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6328 63292) iASL Compiler/Disassembler and Tools: 6330 6331iASL: Relax the alphanumeric restriction on _CID strings. These strings 6332are 6333"bus-specific" per the ACPI specification, and therefore any characters 6334are 6335acceptable. The only checks that can be performed are for a null string 6336and 6337perhaps for a leading asterisk. ACPICA BZ 886. 6338 6339iASL: Fixed a problem where a syntax error that caused a premature EOF 6340condition on the source file emitted a very confusing error message. The 6341premature EOF is now detected correctly. ACPICA BZ 891. 6342 6343Disassembler: Decode the AccessSize within a Generic Address Structure 6344(byte 6345access, word access, etc.) Note, this field does not allow arbitrary bit 6346access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 6347 6348New: AcpiNames utility - Example namespace dump utility. Shows an example 6349of 6350ACPICA configuration for a minimal namespace dump utility. Uses table and 6351namespace managers, but no AML interpreter. Does not add any 6352functionality 6353over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 6354partition and configure ACPICA. ACPICA BZ 883. 6355 6356AML Debugger: Increased the debugger buffer size for method return 6357objects. 6358Was 4K, increased to 16K. Also enhanced error messages for debugger 6359method 6360execution, including the buffer overflow case. 6361 6362---------------------------------------- 636313 October 2010. Summary of changes for version 20101013: 6364 63651) ACPI CA Core Subsystem: 6366 6367Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 6368now 6369clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 6370HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 6371 6372Changed the type of the predefined namespace object _TZ from ThermalZone 6373to 6374Device. This was found to be confusing to the host software that 6375processes 6376the various thermal zones, since _TZ is not really a ThermalZone. 6377However, 6378a 6379Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 6380Zhang. 6381 6382Added Windows Vista SP2 to the list of supported _OSI strings. The actual 6383string is "Windows 2006 SP2". 6384 6385Eliminated duplicate code in AcpiUtExecute* functions. Now that the 6386nsrepair 6387code automatically repairs _HID-related strings, this type of code is no 6388longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 6389878. 6390 6391Example Code and Data Size: These are the sizes for the OS-independent 6392acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6393debug version of the code includes the debug output trace mechanism and 6394has a 6395much larger code and data size. 6396 6397 Previous Release: 6398 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6399 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6400 Current Release: 6401 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6402 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6403 64042) iASL Compiler/Disassembler and Tools: 6405 6406iASL: Implemented additional compile-time validation for _HID strings. 6407The 6408non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 6409length 6410of 6411the string must be exactly seven or eight characters. For both _HID and 6412_CID 6413strings, all characters must be alphanumeric. ACPICA BZ 874. 6414 6415iASL: Allow certain "null" resource descriptors. Some BIOS code creates 6416descriptors that are mostly or all zeros, with the expectation that they 6417will 6418be filled in at runtime. iASL now allows this as long as there is a 6419"resource 6420tag" (name) associated with the descriptor, which gives the ASL a handle 6421needed to modify the descriptor. ACPICA BZ 873. 6422 6423Added single-thread support to the generic Unix application OSL. 6424Primarily 6425for iASL support, this change removes the use of semaphores in the 6426single- 6427threaded ACPICA tools/applications - increasing performance. The 6428_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 6429option. ACPICA BZ 879. 6430 6431AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 6432support 6433for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 6434 6435iASL: Moved all compiler messages to a new file, aslmessages.h. 6436 6437---------------------------------------- 643815 September 2010. Summary of changes for version 20100915: 6439 64401) ACPI CA Core Subsystem: 6441 6442Removed the AcpiOsDerivePciId OSL interface. The various host 6443implementations 6444of this function were not OS-dependent and are now obsolete and can be 6445removed from all host OSLs. This function has been replaced by 6446AcpiHwDerivePciId, which is now part of the ACPICA core code. 6447AcpiHwDerivePciId has been implemented without recursion. Adds one new 6448module, hwpci.c. ACPICA BZ 857. 6449 6450Implemented a dynamic repair for _HID and _CID strings. The following 6451problems are now repaired at runtime: 1) Remove a leading asterisk in the 6452string, and 2) the entire string is uppercased. Both repairs are in 6453accordance with the ACPI specification and will simplify host driver 6454code. 6455ACPICA BZ 871. 6456 6457The ACPI_THREAD_ID type is no longer configurable, internally it is now 6458always UINT64. This simplifies the ACPICA code, especially any printf 6459output. 6460UINT64 is the only common data type for all thread_id types across all 6461operating systems. It is now up to the host OSL to cast the native 6462thread_id 6463type to UINT64 before returning the value to ACPICA (via 6464AcpiOsGetThreadId). 6465Lin Ming, Bob Moore. 6466 6467Added the ACPI_INLINE type to enhance the ACPICA configuration. The 6468"inline" 6469keyword is not standard across compilers, and this type allows inline to 6470be 6471configured on a per-compiler basis. Lin Ming. 6472 6473Made the system global AcpiGbl_SystemAwakeAndRunning publically 6474available. 6475Added an extern for this boolean in acpixf.h. Some hosts utilize this 6476value 6477during suspend/restore operations. ACPICA BZ 869. 6478 6479All code that implements error/warning messages with the "ACPI:" prefix 6480has 6481been moved to a new module, utxferror.c. 6482 6483The UINT64_OVERLAY was moved to utmath.c, which is the only module where 6484it 6485is used. ACPICA BZ 829. Lin Ming, Bob Moore. 6486 6487Example Code and Data Size: These are the sizes for the OS-independent 6488acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6489debug version of the code includes the debug output trace mechanism and 6490has a 6491much larger code and data size. 6492 6493 Previous Release: 6494 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 6495 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 6496 Current Release: 6497 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6498 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6499 65002) iASL Compiler/Disassembler and Tools: 6501 6502iASL/Disassembler: Write ACPI errors to stderr instead of the output 6503file. 6504This keeps the output files free of random error messages that may 6505originate 6506from within the namespace/interpreter code. Used this opportunity to 6507merge 6508all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 6509866. Lin Ming, Bob Moore. 6510 6511Tools: update some printfs for ansi warnings on size_t. Handle width 6512change 6513of size_t on 32-bit versus 64-bit generations. Lin Ming. 6514 6515---------------------------------------- 651606 August 2010. Summary of changes for version 20100806: 6517 65181) ACPI CA Core Subsystem: 6519 6520Designed and implemented a new host interface to the _OSI support code. 6521This 6522will allow the host to dynamically add or remove multiple _OSI strings, 6523as 6524well as install an optional handler that is called for each _OSI 6525invocation. 6526Also added a new AML debugger command, 'osi' to display and modify the 6527global 6528_OSI string table, and test support in the AcpiExec utility. See the 6529ACPICA 6530reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 6531New Functions: 6532 AcpiInstallInterface - Add an _OSI string. 6533 AcpiRemoveInterface - Delete an _OSI string. 6534 AcpiInstallInterfaceHandler - Install optional _OSI handler. 6535Obsolete Functions: 6536 AcpiOsValidateInterface - no longer used. 6537New Files: 6538 source/components/utilities/utosi.c 6539 6540Re-introduced the support to enable multi-byte transfers for Embedded 6541Controller (EC) operation regions. A reported problem was found to be a 6542bug 6543in the host OS, not in the multi-byte support. Previously, the maximum 6544data 6545size passed to the EC operation region handler was a single byte. There 6546are 6547often EC Fields larger than one byte that need to be transferred, and it 6548is 6549useful for the EC driver to lock these as a single transaction. This 6550change 6551enables single transfers larger than 8 bits. This effectively changes the 6552access to the EC space from ByteAcc to AnyAcc, and will probably require 6553changes to the host OS Embedded Controller driver to enable 16/32/64/256- 6554bit 6555transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 6556 6557Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 6558prototype in acpiosxf.h had the output value pointer as a (void *). 6559It should be a (UINT64 *). This may affect some host OSL code. 6560 6561Fixed a couple problems with the recently modified Linux makefiles for 6562iASL 6563and AcpiExec. These new makefiles place the generated object files in the 6564local directory so that there can be no collisions between the files that 6565are 6566shared between them that are compiled with different options. 6567 6568Example Code and Data Size: These are the sizes for the OS-independent 6569acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6570debug version of the code includes the debug output trace mechanism and 6571has a 6572much larger code and data size. 6573 6574 Previous Release: 6575 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6576 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 6577 Current Release: 6578 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 6579 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 6580 65812) iASL Compiler/Disassembler and Tools: 6582 6583iASL/Disassembler: Added a new option (-da, "disassemble all") to load 6584the 6585namespace from and disassemble an entire group of AML files. Useful for 6586loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 6587and 6588disassembling with one simple command. ACPICA BZ 865. Lin Ming. 6589 6590iASL: Allow multiple invocations of -e option. This change allows 6591multiple 6592uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 6593834. 6594Lin Ming. 6595 6596---------------------------------------- 659702 July 2010. Summary of changes for version 20100702: 6598 65991) ACPI CA Core Subsystem: 6600 6601Implemented several updates to the recently added GPE reference count 6602support. The model for "wake" GPEs is changing to give the host OS 6603complete 6604control of these GPEs. Eventually, the ACPICA core will not execute any 6605_PRW 6606methods, since the host already must execute them. Also, additional 6607changes 6608were made to help ensure that the reference counts are kept in proper 6609synchronization with reality. Rafael J. Wysocki. 6610 66111) Ensure that GPEs are not enabled twice during initialization. 66122) Ensure that GPE enable masks stay in sync with the reference count. 66133) Do not inadvertently enable GPEs when writing GPE registers. 66144) Remove the internal wake reference counter and add new AcpiGpeWakeup 6615interface. This interface will set or clear individual GPEs for wakeup. 66165) Remove GpeType argument from AcpiEnable and AcpiDisable. These 6617interfaces 6618are now used for "runtime" GPEs only. 6619 6620Changed the behavior of the GPE install/remove handler interfaces. The 6621GPE 6622is 6623no longer disabled during this process, as it was found to cause problems 6624on 6625some machines. Rafael J. Wysocki. 6626 6627Reverted a change introduced in version 20100528 to enable Embedded 6628Controller multi-byte transfers. This change was found to cause problems 6629with 6630Index Fields and possibly Bank Fields. It will be reintroduced when these 6631problems have been resolved. 6632 6633Fixed a problem with references to Alias objects within Package Objects. 6634A 6635reference to an Alias within the definition of a Package was not always 6636resolved properly. Aliases to objects like Processors, Thermal zones, 6637etc. 6638were resolved to the actual object instead of a reference to the object 6639as 6640it 6641should be. Package objects are only allowed to contain integer, string, 6642buffer, package, and reference objects. Redhat bugzilla 608648. 6643 6644Example Code and Data Size: These are the sizes for the OS-independent 6645acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6646debug version of the code includes the debug output trace mechanism and 6647has a 6648much larger code and data size. 6649 6650 Previous Release: 6651 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6652 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 6653 Current Release: 6654 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6655 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 6656 66572) iASL Compiler/Disassembler and Tools: 6658 6659iASL: Implemented a new compiler subsystem to allow definition and 6660compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 6661These 6662are called "ACPI Data Tables", and the new compiler is the "Data Table 6663Compiler". This compiler is intended to simplify the existing error-prone 6664process of creating these tables for the BIOS, as well as allowing the 6665disassembly, modification, recompilation, and override of existing ACPI 6666data 6667tables. See the iASL User Guide for detailed information. 6668 6669iASL: Implemented a new Template Generator option in support of the new 6670Data 6671Table Compiler. This option will create examples of all known ACPI tables 6672that can be used as the basis for table development. See the iASL 6673documentation and the -T option. 6674 6675Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 6676Descriptor Table). 6677 6678Updated the Linux makefiles for iASL and AcpiExec to place the generated 6679object files in the local directory so that there can be no collisions 6680between the shared files between them that are generated with different 6681options. 6682 6683Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 6684Use 6685the #define __APPLE__ to enable this support. 6686 6687---------------------------------------- 668828 May 2010. Summary of changes for version 20100528: 6689 6690Note: The ACPI 4.0a specification was released on April 5, 2010 and is 6691available at www.acpi.info. This is primarily an errata release. 6692 66931) ACPI CA Core Subsystem: 6694 6695Undefined ACPI tables: We are looking for the definitions for the 6696following 6697ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 6698 6699Implemented support to enable multi-byte transfers for Embedded 6700Controller 6701(EC) operation regions. Previously, the maximum data size passed to the 6702EC 6703operation region handler was a single byte. There are often EC Fields 6704larger 6705than one byte that need to be transferred, and it is useful for the EC 6706driver 6707to lock these as a single transaction. This change enables single 6708transfers 6709larger than 8 bits. This effectively changes the access to the EC space 6710from 6711ByteAcc to AnyAcc, and will probably require changes to the host OS 6712Embedded 6713Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 6714bit 6715transfers. Alexey Starikovskiy, Lin Ming 6716 6717Implemented a performance enhancement for namespace search and access. 6718This 6719change enhances the performance of namespace searches and walks by adding 6720a 6721backpointer to the parent in each namespace node. On large namespaces, 6722this 6723change can improve overall ACPI performance by up to 9X. Adding a pointer 6724to 6725each namespace node increases the overall size of the internal namespace 6726by 6727about 5%, since each namespace entry usually consists of both a namespace 6728node and an ACPI operand object. However, this is the first growth of the 6729namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 6730 6731Implemented a performance optimization that reduces the number of 6732namespace 6733walks. On control method exit, only walk the namespace if the method is 6734known 6735to have created namespace objects outside of its local scope. Previously, 6736the 6737entire namespace was traversed on each control method exit. This change 6738can 6739improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 6740Moore. 6741 6742Added support to truncate I/O addresses to 16 bits for Windows 6743compatibility. 6744Some ASL code has been seen in the field that inadvertently has bits set 6745above bit 15. This feature is optional and is enabled if the BIOS 6746requests 6747any Windows OSI strings. It can also be enabled by the host OS. Matthew 6748Garrett, Bob Moore. 6749 6750Added support to limit the maximum time for the ASL Sleep() operator. To 6751prevent accidental deep sleeps, limit the maximum time that Sleep() will 6752actually sleep. Configurable, the default maximum is two seconds. ACPICA 6753bugzilla 854. 6754 6755Added run-time validation support for the _WDG and_WED Microsoft 6756predefined 6757methods. These objects are defined by "Windows Instrumentation", and are 6758not 6759part of the ACPI spec. ACPICA BZ 860. 6760 6761Expanded all statistic counters used during namespace and device 6762initialization from 16 to 32 bits in order to support very large 6763namespaces. 6764 6765Replaced all instances of %d in printf format specifiers with %u since 6766nearly 6767all integers in ACPICA are unsigned. 6768 6769Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 6770returned 6771as AE_NO_HANDLER. 6772 6773Example Code and Data Size: These are the sizes for the OS-independent 6774acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6775debug version of the code includes the debug output trace mechanism and 6776has a 6777much larger code and data size. 6778 6779 Previous Release: 6780 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 6781 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 6782 Current Release: 6783 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6784 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 6785 67862) iASL Compiler/Disassembler and Tools: 6787 6788iASL: Added compiler support for the _WDG and_WED Microsoft predefined 6789methods. These objects are defined by "Windows Instrumentation", and are 6790not 6791part of the ACPI spec. ACPICA BZ 860. 6792 6793AcpiExec: added option to disable the memory tracking mechanism. The -dt 6794option will disable the tracking mechanism, which improves performance 6795considerably. 6796 6797AcpiExec: Restructured the command line options into -d (disable) and -e 6798(enable) options. 6799 6800---------------------------------------- 680128 April 2010. Summary of changes for version 20100428: 6802 68031) ACPI CA Core Subsystem: 6804 6805Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 6806including FADT-based and GPE Block Devices, execute any _PRW methods in 6807the 6808new table, and process any _Lxx/_Exx GPE methods in the new table. Any 6809runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 6810immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 6811Devices. Provides compatibility with other ACPI implementations. Two new 6812files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 6813Moore. 6814 6815Fixed a regression introduced in version 20100331 within the table 6816manager 6817where initial table loading could fail. This was introduced in the fix 6818for 6819AcpiReallocateRootTable. Also, renamed some of fields in the table 6820manager 6821data structures to clarify their meaning and use. 6822 6823Fixed a possible allocation overrun during internal object copy in 6824AcpiUtCopySimpleObject. The original code did not correctly handle the 6825case 6826where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 6827847. 6828 6829Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 6830possible access beyond end-of-allocation. Also, now fully validate 6831descriptor 6832(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 6833 6834Example Code and Data Size: These are the sizes for the OS-independent 6835acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6836debug version of the code includes the debug output trace mechanism and 6837has a 6838much larger code and data size. 6839 6840 Previous Release: 6841 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 6842 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 6843 Current Release: 6844 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 6845 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 6846 68472) iASL Compiler/Disassembler and Tools: 6848 6849iASL: Implemented Min/Max/Len/Gran validation for address resource 6850descriptors. This change implements validation for the address fields 6851that 6852are common to all address-type resource descriptors. These checks are 6853implemented: Checks for valid Min/Max, length within the Min/Max window, 6854valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 6855per 6856table 6-40 in the ACPI 4.0a specification. Also split the large 6857aslrestype1.c 6858and aslrestype2.c files into five new files. ACPICA BZ 840. 6859 6860iASL: Added support for the _Wxx predefined names. This support was 6861missing 6862and these names were not recognized by the compiler as valid predefined 6863names. ACPICA BZ 851. 6864 6865iASL: Added an error for all predefined names that are defined to return 6866no 6867value and thus must be implemented as Control Methods. These include all 6868of 6869the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 6870names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 6871 6872iASL: Implemented the -ts option to emit hex AML data in ASL format, as 6873an 6874ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 6875be 6876dynamically loaded via the Load() operator. Also cleaned up output for 6877the 6878- 6879ta and -tc options. ACPICA BZ 853. 6880 6881Tests: Added a new file with examples of extended iASL error checking. 6882Demonstrates the advanced error checking ability of the iASL compiler. 6883Available at tests/misc/badcode.asl. 6884 6885---------------------------------------- 688631 March 2010. Summary of changes for version 20100331: 6887 68881) ACPI CA Core Subsystem: 6889 6890Completed a major update for the GPE support in order to improve support 6891for 6892shared GPEs and to simplify both host OS and ACPICA code. Added a 6893reference 6894count mechanism to support shared GPEs that require multiple device 6895drivers. 6896Several external interfaces have changed. One external interface has been 6897removed. One new external interface was added. Most of the GPE external 6898interfaces now use the GPE spinlock instead of the events mutex (and the 6899Flags parameter for many GPE interfaces has been removed.) See the 6900updated 6901ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 6902Rafael 6903Wysocki. ACPICA BZ 831. 6904 6905Changed: 6906 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 6907Removed: 6908 AcpiSetGpeType 6909New: 6910 AcpiSetGpe 6911 6912Implemented write support for DataTable operation regions. These regions 6913are 6914defined via the DataTableRegion() operator. Previously, only read support 6915was 6916implemented. The ACPI specification allows DataTableRegions to be 6917read/write, 6918however. 6919 6920Implemented a new subsystem option to force a copy of the DSDT to local 6921memory. Optionally copy the entire DSDT to local memory (instead of 6922simply 6923mapping it.) There are some (albeit very rare) BIOSs that corrupt or 6924replace 6925the original DSDT, creating the need for this option. Default is FALSE, 6926do 6927not copy the DSDT. 6928 6929Implemented detection of a corrupted or replaced DSDT. This change adds 6930support to detect a DSDT that has been corrupted and/or replaced from 6931outside 6932the OS (by firmware). This is typically catastrophic for the system, but 6933has 6934been seen on some machines. Once this problem has been detected, the DSDT 6935copy option can be enabled via system configuration. Lin Ming, Bob Moore. 6936 6937Fixed two problems with AcpiReallocateRootTable during the root table 6938copy. 6939When copying the root table to the new allocation, the length used was 6940incorrect. The new size was used instead of the current table size, 6941meaning 6942too much data was copied. Also, the count of available slots for ACPI 6943tables 6944was not set correctly. Alexey Starikovskiy, Bob Moore. 6945 6946Example Code and Data Size: These are the sizes for the OS-independent 6947acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6948debug version of the code includes the debug output trace mechanism and 6949has a 6950much larger code and data size. 6951 6952 Previous Release: 6953 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 6954 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 6955 Current Release: 6956 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 6957 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 6958 69592) iASL Compiler/Disassembler and Tools: 6960 6961iASL: Implement limited typechecking for values returned from predefined 6962control methods. The type of any returned static (unnamed) object is now 6963validated. For example, Return(1). ACPICA BZ 786. 6964 6965iASL: Fixed a predefined name object verification regression. Fixes a 6966problem 6967introduced in version 20100304. An error is incorrectly generated if a 6968predefined name is declared as a static named object with a value defined 6969using the keywords "Zero", "One", or "Ones". Lin Ming. 6970 6971iASL: Added Windows 7 support for the -g option (get local ACPI tables) 6972by 6973reducing the requested registry access rights. ACPICA BZ 842. 6974 6975Disassembler: fixed a possible fault when generating External() 6976statements. 6977Introduced in commit ae7d6fd: Properly handle externals with parent- 6978prefix 6979(carat). Fixes a string length allocation calculation. Lin Ming. 6980 6981---------------------------------------- 698204 March 2010. Summary of changes for version 20100304: 6983 69841) ACPI CA Core Subsystem: 6985 6986Fixed a possible problem with the AML Mutex handling function 6987AcpiExReleaseMutex where the function could fault under the very rare 6988condition when the interpreter has blocked, the interpreter lock is 6989released, 6990the interpreter is then reentered via the same thread, and attempts to 6991acquire an AML mutex that was previously acquired. FreeBSD report 140979. 6992Lin 6993Ming. 6994 6995Implemented additional configuration support for the AML "Debug Object". 6996Output from the debug object can now be enabled via a global variable, 6997AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 6998debugging. 6999This debug output is now available in the release version of ACPICA 7000instead 7001of just the debug version. Also, the entire debug output module can now 7002be 7003configured out of the ACPICA build if desired. One new file added, 7004executer/exdebug.c. Lin Ming, Bob Moore. 7005 7006Added header support for the ACPI MCHI table (Management Controller Host 7007Interface Table). This table was added in ACPI 4.0, but the defining 7008document 7009has only recently become available. 7010 7011Standardized output of integer values for ACPICA warnings/errors. Always 7012use 70130x prefix for hex output, always use %u for unsigned integer decimal 7014output. 7015Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 7016400 7017invocations.) These invocations were converted from the original 7018ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 7019 7020Example Code and Data Size: These are the sizes for the OS-independent 7021acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7022debug version of the code includes the debug output trace mechanism and 7023has a 7024much larger code and data size. 7025 7026 Previous Release: 7027 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7028 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7029 Current Release: 7030 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 7031 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 7032 70332) iASL Compiler/Disassembler and Tools: 7034 7035iASL: Implemented typechecking support for static (non-control method) 7036predefined named objects that are declared with the Name() operator. For 7037example, the type of this object is now validated to be of type Integer: 7038Name(_BBN, 1). This change migrates the compiler to using the core 7039predefined 7040name table instead of maintaining a local version. Added a new file, 7041aslpredef.c. ACPICA BZ 832. 7042 7043Disassembler: Added support for the ACPI 4.0 MCHI table. 7044 7045---------------------------------------- 704621 January 2010. Summary of changes for version 20100121: 7047 70481) ACPI CA Core Subsystem: 7049 7050Added the 2010 copyright to all module headers and signons. This affects 7051virtually every file in the ACPICA core subsystem, the iASL compiler, the 7052tools/utilities, and the test suites. 7053 7054Implemented a change to the AcpiGetDevices interface to eliminate 7055unnecessary 7056invocations of the _STA method. In the case where a specific _HID is 7057requested, do not run _STA until a _HID match is found. This eliminates 7058potentially dozens of _STA calls during a search for a particular 7059device/HID, 7060which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 7061 7062Implemented an additional repair for predefined method return values. 7063Attempt 7064to repair unexpected NULL elements within returned Package objects. 7065Create 7066an 7067Integer of value zero, a NULL String, or a zero-length Buffer as 7068appropriate. 7069ACPICA BZ 818. Lin Ming, Bob Moore. 7070 7071Removed the obsolete ACPI_INTEGER data type. This type was introduced as 7072the 7073code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 7074(with 707564-bit AML integers). It is now obsolete and this change removes it from 7076the 7077ACPICA code base, replaced by UINT64. The original typedef has been 7078retained 7079for now for compatibility with existing device driver code. ACPICA BZ 7080824. 7081 7082Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 7083in 7084the parse tree object. 7085 7086Added additional warning options for the gcc-4 generation. Updated the 7087source 7088accordingly. This includes some code restructuring to eliminate 7089unreachable 7090code, elimination of some gotos, elimination of unused return values, 7091some 7092additional casting, and removal of redundant declarations. 7093 7094Example Code and Data Size: These are the sizes for the OS-independent 7095acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7096debug version of the code includes the debug output trace mechanism and 7097has a 7098much larger code and data size. 7099 7100 Previous Release: 7101 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7102 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7103 Current Release: 7104 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7105 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7106 71072) iASL Compiler/Disassembler and Tools: 7108 7109No functional changes for this release. 7110 7111---------------------------------------- 711214 December 2009. Summary of changes for version 20091214: 7113 71141) ACPI CA Core Subsystem: 7115 7116Enhanced automatic data type conversions for predefined name repairs. 7117This 7118change expands the automatic repairs/conversions for predefined name 7119return 7120values to make Integers, Strings, and Buffers fully interchangeable. 7121Also, 7122a 7123Buffer can be converted to a Package of Integers if necessary. The 7124nsrepair.c 7125module was completely restructured. Lin Ming, Bob Moore. 7126 7127Implemented automatic removal of null package elements during predefined 7128name 7129repairs. This change will automatically remove embedded and trailing NULL 7130package elements from returned package objects that are defined to 7131contain 7132a 7133variable number of sub-packages. The driver is then presented with a 7134package 7135with no null elements to deal with. ACPICA BZ 819. 7136 7137Implemented a repair for the predefined _FDE and _GTM names. The expected 7138return value for both names is a Buffer of 5 DWORDs. This repair fixes 7139two 7140possible problems (both seen in the field), where a package of integers 7141is 7142returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 7143Kim. 7144 7145Implemented additional module-level code support. This change will 7146properly 7147execute module-level code that is not at the root of the namespace (under 7148a 7149Device object, etc.). Now executes the code within the current scope 7150instead 7151of the root. ACPICA BZ 762. Lin Ming. 7152 7153Fixed possible mutex acquisition errors when running _REG methods. Fixes 7154a 7155problem where mutex errors can occur when running a _REG method that is 7156in 7157the same scope as a method-defined operation region or an operation 7158region 7159under a module-level IF block. This type of code is rare, so the problem 7160has 7161not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 7162 7163Fixed a possible memory leak during module-level code execution. An 7164object 7165could be leaked for each block of executed module-level code if the 7166interpreter slack mode is enabled This change deletes any implicitly 7167returned 7168object from the module-level code block. Lin Ming. 7169 7170Removed messages for successful predefined repair(s). The repair 7171mechanism 7172was considered too wordy. Now, messages are only unconditionally emitted 7173if 7174the return object cannot be repaired. Existing messages for successful 7175repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 7176827. 7177 7178Example Code and Data Size: These are the sizes for the OS-independent 7179acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7180debug version of the code includes the debug output trace mechanism and 7181has a 7182much larger code and data size. 7183 7184 Previous Release: 7185 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 7186 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 7187 Current Release: 7188 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7189 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7190 71912) iASL Compiler/Disassembler and Tools: 7192 7193iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 7194files 7195were no longer automatically removed at the termination of the compile. 7196 7197acpiexec: Implemented the -f option to specify default region fill value. 7198This option specifies the value used to initialize buffers that simulate 7199operation regions. Default value is zero. Useful for debugging problems 7200that 7201depend on a specific initial value for a region or field. 7202 7203---------------------------------------- 720412 November 2009. Summary of changes for version 20091112: 7205 72061) ACPI CA Core Subsystem: 7207 7208Implemented a post-order callback to AcpiWalkNamespace. The existing 7209interface only has a pre-order callback. This change adds an additional 7210parameter for a post-order callback which will be more useful for bus 7211scans. 7212ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 7213 7214Modified the behavior of the operation region memory mapping cache for 7215SystemMemory. Ensure that the memory mappings created for operation 7216regions 7217do not cross 4K page boundaries. Crossing a page boundary while mapping 7218regions can cause kernel warnings on some hosts if the pages have 7219different 7220attributes. Such regions are probably BIOS bugs, and this is the 7221workaround. 7222Linux BZ 14445. Lin Ming. 7223 7224Implemented an automatic repair for predefined methods that must return 7225sorted lists. This change will repair (by sorting) packages returned by 7226_ALR, 7227_PSS, and _TSS. Drivers can now assume that the packages are correctly 7228sorted 7229and do not contain NULL package elements. Adds one new file, 7230namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 7231 7232Fixed a possible fault during predefined name validation if a return 7233Package 7234object contains NULL elements. Also adds a warning if a NULL element is 7235followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 7236may 7237include repair or removal of all such NULL elements where possible. 7238 7239Implemented additional module-level executable AML code support. This 7240change 7241will execute module-level code that is not at the root of the namespace 7242(under a Device object, etc.) at table load time. Module-level executable 7243AML 7244code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 7245 7246Implemented a new internal function to create Integer objects. This 7247function 7248simplifies miscellaneous object creation code. ACPICA BZ 823. 7249 7250Reduced the severity of predefined repair messages, Warning to Info. 7251Since 7252the object was successfully repaired, a warning is too severe. Reduced to 7253an 7254info message for now. These messages may eventually be changed to debug- 7255only. 7256ACPICA BZ 812. 7257 7258Example Code and Data Size: These are the sizes for the OS-independent 7259acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7260debug version of the code includes the debug output trace mechanism and 7261has a 7262much larger code and data size. 7263 7264 Previous Release: 7265 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 7266 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 7267 Current Release: 7268 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 7269 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 7270 72712) iASL Compiler/Disassembler and Tools: 7272 7273iASL: Implemented Switch() with While(1) so that Break works correctly. 7274This 7275change correctly implements the Switch operator with a surrounding 7276While(1) 7277so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 7278 7279iASL: Added a message if a package initializer list is shorter than 7280package 7281length. Adds a new remark for a Package() declaration if an initializer 7282list 7283exists, but is shorter than the declared length of the package. Although 7284technically legal, this is probably a coding error and it is seen in the 7285field. ACPICA BZ 815. Lin Ming, Bob Moore. 7286 7287iASL: Fixed a problem where the compiler could fault after the maximum 7288number 7289of errors was reached (200). 7290 7291acpixtract: Fixed a possible warning for pointer cast if the compiler 7292warning 7293level set very high. 7294 7295---------------------------------------- 729613 October 2009. Summary of changes for version 20091013: 7297 72981) ACPI CA Core Subsystem: 7299 7300Fixed a problem where an Operation Region _REG method could be executed 7301more 7302than once. If a custom address space handler is installed by the host 7303before 7304the "initialize operation regions" phase of the ACPICA initialization, 7305any 7306_REG methods for that address space could be executed twice. This change 7307fixes the problem. ACPICA BZ 427. Lin Ming. 7308 7309Fixed a possible memory leak for the Scope() ASL operator. When the exact 7310invocation of "Scope(\)" is executed (change scope to root), one internal 7311operand object was leaked. Lin Ming. 7312 7313Implemented a run-time repair for the _MAT predefined method. If the _MAT 7314return value is defined as a Field object in the AML, and the field 7315size is less than or equal to the default width of an integer (32 or 731664),_MAT 7317can incorrectly return an Integer instead of a Buffer. ACPICA now 7318automatically repairs this problem. ACPICA BZ 810. 7319 7320Implemented a run-time repair for the _BIF and _BIX predefined methods. 7321The 7322"OEM Information" field is often incorrectly returned as an Integer with 7323value zero if the field is not supported by the platform. This is due to 7324an 7325ambiguity in the ACPI specification. The field should always be a string. 7326ACPICA now automatically repairs this problem by returning a NULL string 7327within the returned Package. ACPICA BZ 807. 7328 7329Example Code and Data Size: These are the sizes for the OS-independent 7330acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7331debug version of the code includes the debug output trace mechanism and 7332has a 7333much larger code and data size. 7334 7335 Previous Release: 7336 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 7337 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 7338 Current Release: 7339 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 7340 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 7341 73422) iASL Compiler/Disassembler and Tools: 7343 7344Disassembler: Fixed a problem where references to external symbols that 7345contained one or more parent-prefixes (carats) were not handled 7346correctly, 7347possibly causing a fault. ACPICA BZ 806. Lin Ming. 7348 7349Disassembler: Restructured the code so that all functions that handle 7350external symbols are in a single module. One new file is added, 7351common/dmextern.c. 7352 7353AML Debugger: Added a max count argument for the Batch command (which 7354executes multiple predefined methods within the namespace.) 7355 7356iASL: Updated the compiler documentation (User Reference.) Available at 7357http://www.acpica.org/documentation/. ACPICA BZ 750. 7358 7359AcpiXtract: Updated for Lint and other formatting changes. Close all open 7360files. 7361 7362---------------------------------------- 736303 September 2009. Summary of changes for version 20090903: 7364 73651) ACPI CA Core Subsystem: 7366 7367For Windows Vista compatibility, added the automatic execution of an _INI 7368method located at the namespace root (\_INI). This method is executed at 7369table load time. This support is in addition to the automatic execution 7370of 7371\_SB._INI. Lin Ming. 7372 7373Fixed a possible memory leak in the interpreter for AML package objects 7374if 7375the package initializer list is longer than the defined size of the 7376package. 7377This apparently can only happen if the BIOS changes the package size on 7378the 7379fly (seen in a _PSS object), as ASL compilers do not allow this. The 7380interpreter will truncate the package to the defined size (and issue an 7381error 7382message), but previously could leave the extra objects undeleted if they 7383were 7384pre-created during the argument processing (such is the case if the 7385package 7386consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 7387 7388Fixed a problem seen when a Buffer or String is stored to itself via ASL. 7389This has been reported in the field. Previously, ACPICA would zero out 7390the 7391buffer/string. Now, the operation is treated as a noop. Provides Windows 7392compatibility. ACPICA BZ 803. Lin Ming. 7393 7394Removed an extraneous error message for ASL constructs of the form 7395Store(LocalX,LocalX) when LocalX is uninitialized. These curious 7396statements 7397are seen in many BIOSs and are once again treated as NOOPs and no error 7398is 7399emitted when they are encountered. ACPICA BZ 785. 7400 7401Fixed an extraneous warning message if a _DSM reserved method returns a 7402Package object. _DSM can return any type of object, so validation on the 7403return type cannot be performed. ACPICA BZ 802. 7404 7405Example Code and Data Size: These are the sizes for the OS-independent 7406acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7407debug version of the code includes the debug output trace mechanism and 7408has a 7409much larger code and data size. 7410 7411 Previous Release: 7412 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 7413 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 7414 Current Release: 7415 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 7416 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 7417 74182) iASL Compiler/Disassembler and Tools: 7419 7420iASL: Fixed a problem with the use of the Alias operator and Resource 7421Templates. The correct alias is now constructed and no error is emitted. 7422ACPICA BZ 738. 7423 7424iASL: Implemented the -I option to specify additional search directories 7425for 7426include files. Allows multiple additional search paths for include files. 7427Directories are searched in the order specified on the command line 7428(after 7429the local directory is searched.) ACPICA BZ 800. 7430 7431iASL: Fixed a problem where the full pathname for include files was not 7432emitted for warnings/errors. This caused the IDE support to not work 7433properly. ACPICA BZ 765. 7434 7435iASL: Implemented the -@ option to specify a Windows-style response file 7436containing additional command line options. ACPICA BZ 801. 7437 7438AcpiExec: Added support to load multiple AML files simultaneously (such 7439as 7440a 7441DSDT and multiple SSDTs). Also added support for wildcards within the AML 7442pathname. These features allow all machine tables to be easily loaded and 7443debugged together. ACPICA BZ 804. 7444 7445Disassembler: Added missing support for disassembly of HEST table Error 7446Bank 7447subtables. 7448 7449---------------------------------------- 745030 July 2009. Summary of changes for version 20090730: 7451 7452The ACPI 4.0 implementation for ACPICA is complete with this release. 7453 74541) ACPI CA Core Subsystem: 7455 7456ACPI 4.0: Added header file support for all new and changed ACPI tables. 7457Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 7458new 7459for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 7460BERT, 7461EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 7462There 7463have been some ACPI 4.0 changes to other existing tables. Split the large 7464actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 7465 7466ACPI 4.0: Implemented predefined name validation for all new names. There 7467are 746831 new names in ACPI 4.0. The predefined validation module was split into 7469two 7470files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 7471 7472Implemented support for so-called "module-level executable code". This is 7473executable AML code that exists outside of any control method and is 7474intended 7475to be executed at table load time. Although illegal since ACPI 2.0, this 7476type 7477of code still exists and is apparently still being created. Blocks of 7478this 7479code are now detected and executed as intended. Currently, the code 7480blocks 7481must exist under either an If, Else, or While construct; these are the 7482typical cases seen in the field. ACPICA BZ 762. Lin Ming. 7483 7484Implemented an automatic dynamic repair for predefined names that return 7485nested Package objects. This applies to predefined names that are defined 7486to 7487return a variable-length Package of sub-packages. If the number of sub- 7488packages is one, BIOS code is occasionally seen that creates a simple 7489single 7490package with no sub-packages. This code attempts to fix the problem by 7491wrapping a new package object around the existing package. These methods 7492can 7493be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 7494BZ 7495790. 7496 7497Fixed a regression introduced in 20090625 for the AcpiGetDevices 7498interface. 7499The _HID/_CID matching was broken and no longer matched IDs correctly. 7500ACPICA 7501BZ 793. 7502 7503Fixed a problem with AcpiReset where the reset would silently fail if the 7504register was one of the protected I/O ports. AcpiReset now bypasses the 7505port 7506validation mechanism. This may eventually be driven into the 7507AcpiRead/Write 7508interfaces. 7509 7510Fixed a regression related to the recent update of the AcpiRead/Write 7511interfaces. A sleep/suspend could fail if the optional PM2 Control 7512register 7513does not exist during an attempt to write the Bus Master Arbitration bit. 7514(However, some hosts already delete the code that writes this bit, and 7515the 7516code may in fact be obsolete at this date.) ACPICA BZ 799. 7517 7518Fixed a problem where AcpiTerminate could fault if inadvertently called 7519twice 7520in succession. ACPICA BZ 795. 7521 7522Example Code and Data Size: These are the sizes for the OS-independent 7523acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7524debug version of the code includes the debug output trace mechanism and 7525has a 7526much larger code and data size. 7527 7528 Previous Release: 7529 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 7530 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 7531 Current Release: 7532 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 7533 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 7534 75352) iASL Compiler/Disassembler and Tools: 7536 7537ACPI 4.0: Implemented disassembler support for all new ACPI tables and 7538changes to existing tables. ACPICA BZ 775. 7539 7540---------------------------------------- 754125 June 2009. Summary of changes for version 20090625: 7542 7543The ACPI 4.0 Specification was released on June 16 and is available at 7544www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 7545continue for the next few releases. 7546 75471) ACPI CA Core Subsystem: 7548 7549ACPI 4.0: Implemented interpreter support for the IPMI operation region 7550address space. Includes support for bi-directional data buffers and an 7551IPMI 7552address space handler (to be installed by an IPMI device driver.) ACPICA 7553BZ 7554773. Lin Ming. 7555 7556ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 7557Includes 7558support in both the header files and the disassembler. 7559 7560Completed a major update for the AcpiGetObjectInfo external interface. 7561Changes include: 7562 - Support for variable, unlimited length HID, UID, and CID strings. 7563 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 7564etc.) 7565 - Call the _SxW power methods on behalf of a device object. 7566 - Determine if a device is a PCI root bridge. 7567 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 7568These changes will require an update to all callers of this interface. 7569See 7570the updated ACPICA Programmer Reference for details. One new source file 7571has 7572been added - utilities/utids.c. ACPICA BZ 368, 780. 7573 7574Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 7575transfers. The Value parameter has been extended from 32 bits to 64 bits 7576in 7577order to support new ACPI 4.0 tables. These changes will require an 7578update 7579to 7580all callers of these interfaces. See the ACPICA Programmer Reference for 7581details. ACPICA BZ 768. 7582 7583Fixed several problems with AcpiAttachData. The handler was not invoked 7584when 7585the host node was deleted. The data sub-object was not automatically 7586deleted 7587when the host node was deleted. The interface to the handler had an 7588unused 7589parameter, this was removed. ACPICA BZ 778. 7590 7591Enhanced the function that dumps ACPI table headers. All non-printable 7592characters in the string fields are now replaced with '?' (Signature, 7593OemId, 7594OemTableId, and CompilerId.) ACPI tables with non-printable characters in 7595these fields are occasionally seen in the field. ACPICA BZ 788. 7596 7597Fixed a problem with predefined method repair code where the code that 7598attempts to repair/convert an object of incorrect type is only executed 7599on 7600the first time the predefined method is called. The mechanism that 7601disables 7602warnings on subsequent calls was interfering with the repair mechanism. 7603ACPICA BZ 781. 7604 7605Fixed a possible memory leak in the predefined validation/repair code 7606when 7607a 7608buffer is automatically converted to an expected string object. 7609 7610Removed obsolete 16-bit files from the distribution and from the current 7611git 7612tree head. ACPICA BZ 776. 7613 7614Example Code and Data Size: These are the sizes for the OS-independent 7615acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7616debug version of the code includes the debug output trace mechanism and 7617has a 7618much larger code and data size. 7619 7620 Previous Release: 7621 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 7622 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 7623 Current Release: 7624 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 7625 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 7626 76272) iASL Compiler/Disassembler and Tools: 7628 7629ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 7630operation region keyword. ACPICA BZ 771, 772. Lin Ming. 7631 7632ACPI 4.0: iASL - implemented compile-time validation support for all new 7633predefined names and control methods (31 total). ACPICA BZ 769. 7634 7635---------------------------------------- 763621 May 2009. Summary of changes for version 20090521: 7637 76381) ACPI CA Core Subsystem: 7639 7640Disabled the preservation of the SCI enable bit in the PM1 control 7641register. 7642The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 7643to 7644be 7645a "preserved" bit - "OSPM always preserves this bit position", section 76464.7.3.2.1. However, some machines fail if this bit is in fact preserved 7647because the bit needs to be explicitly set by the OS as a workaround. No 7648machines fail if the bit is not preserved. Therefore, ACPICA no longer 7649attempts to preserve this bit. 7650 7651Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 7652incorrectly formed _PRT package could cause a fault. Added validation to 7653ensure that each package element is actually a sub-package. 7654 7655Implemented a new interface to install or override a single control 7656method, 7657AcpiInstallMethod. This interface is useful when debugging in order to 7658repair 7659an existing method or to install a missing method without having to 7660override 7661the entire ACPI table. See the ACPICA Programmer Reference for use and 7662examples. Lin Ming, Bob Moore. 7663 7664Fixed several reference count issues with the DdbHandle object that is 7665created from a Load or LoadTable operator. Prevent premature deletion of 7666the 7667object. Also, mark the object as invalid once the table has been 7668unloaded. 7669This is needed because the handle itself may not be deleted after the 7670table 7671unload, depending on whether it has been stored in a named object by the 7672caller. Lin Ming. 7673 7674Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 7675mutexes of the same sync level are acquired but then not released in 7676strict 7677opposite order, the internally maintained Current Sync Level becomes 7678confused 7679and can cause subsequent execution errors. ACPICA BZ 471. 7680 7681Changed the allowable release order for ASL mutex objects. The ACPI 4.0 7682specification has been changed to make the SyncLevel for mutex objects 7683more 7684useful. When releasing a mutex, the SyncLevel of the mutex must now be 7685the 7686same as the current sync level. This makes more sense than the previous 7687rule 7688(SyncLevel less than or equal). This change updates the code to match the 7689specification. 7690 7691Fixed a problem with the local version of the AcpiOsPurgeCache function. 7692The 7693(local) cache must be locked during all cache object deletions. Andrew 7694Baumann. 7695 7696Updated the Load operator to use operation region interfaces. This 7697replaces 7698direct memory mapping with region access calls. Now, all region accesses 7699go 7700through the installed region handler as they should. 7701 7702Simplified and optimized the NsGetNextNode function. Reduced parameter 7703count 7704and reduced code for this frequently used function. 7705 7706Example Code and Data Size: These are the sizes for the OS-independent 7707acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7708debug version of the code includes the debug output trace mechanism and 7709has a 7710much larger code and data size. 7711 7712 Previous 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 Current Release: 7716 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 7717 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 7718 77192) iASL Compiler/Disassembler and Tools: 7720 7721Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 7722problems 7723with sub-table disassembly and handling invalid sub-tables. Attempt 7724recovery 7725after an invalid sub-table ID. 7726 7727---------------------------------------- 772822 April 2009. Summary of changes for version 20090422: 7729 77301) ACPI CA Core Subsystem: 7731 7732Fixed a compatibility issue with the recently released I/O port 7733protection 7734mechanism. For windows compatibility, 1) On a port protection violation, 7735simply ignore the request and do not return an exception (allow the 7736control 7737method to continue execution.) 2) If only part of the request overlaps a 7738protected port, read/write the individual ports that are not protected. 7739Linux 7740BZ 13036. Lin Ming 7741 7742Enhanced the execution of the ASL/AML BreakPoint operator so that it 7743actually 7744breaks into the AML debugger if the debugger is present. This matches the 7745ACPI-defined behavior. 7746 7747Fixed several possible warnings related to the use of the configurable 7748ACPI_THREAD_ID. This type can now be configured as either an integer or a 7749pointer with no warnings. Also fixes several warnings in printf-like 7750statements for the 64-bit build when the type is configured as a pointer. 7751ACPICA BZ 766, 767. 7752 7753Fixed a number of possible warnings when compiling with gcc 4+ (depending 7754on 7755warning options.) Examples include printf formats, aliasing, unused 7756globals, 7757missing prototypes, missing switch default statements, use of non-ANSI 7758library functions, use of non-ANSI constructs. See generate/unix/Makefile 7759for 7760a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 7761 7762Example Code and Data Size: These are the sizes for the OS-independent 7763acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7764debug version of the code includes the debug output trace mechanism and 7765has a 7766much larger code and data size. 7767 7768 Previous Release: 7769 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 7770 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 7771 Current Release: 7772 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 7773 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 7774 77752) iASL Compiler/Disassembler and Tools: 7776 7777iASL: Fixed a generation warning from Bison 2.3 and fixed several 7778warnings 7779on 7780the 64-bit build. 7781 7782iASL: Fixed a problem where the Unix/Linux versions of the compiler could 7783not 7784correctly digest Windows/DOS formatted files (with CR/LF). 7785 7786iASL: Added a new option for "quiet mode" (-va) that produces only the 7787compilation summary, not individual errors and warnings. Useful for large 7788batch compilations. 7789 7790AcpiExec: Implemented a new option (-z) to enable a forced 7791semaphore/mutex 7792timeout that can be used to detect hang conditions during execution of 7793AML 7794code (includes both internal semaphores and AML-defined mutexes and 7795events.) 7796 7797Added new makefiles for the generation of acpica in a generic unix-like 7798environment. These makefiles are intended to generate the acpica tools 7799and 7800utilities from the original acpica git source tree structure. 7801 7802Test Suites: Updated and cleaned up the documentation files. Updated the 7803copyrights to 2009, affecting all source files. Use the new version of 7804iASL 7805with quiet mode. Increased the number of available semaphores in the 7806Windows 7807OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 7808added 7809an alternate implementation of the semaphore timeout to allow aslts to 7810execute fully on Cygwin. 7811 7812---------------------------------------- 781320 March 2009. Summary of changes for version 20090320: 7814 78151) ACPI CA Core Subsystem: 7816 7817Fixed a possible race condition between AcpiWalkNamespace and dynamic 7818table 7819unloads. Added a reader/writer locking mechanism to allow multiple 7820concurrent 7821namespace walks (readers), but block a dynamic table unload until it can 7822gain 7823exclusive write access to the namespace. This fixes a problem where a 7824table 7825unload could (possibly catastrophically) delete the portion of the 7826namespace 7827that is currently being examined by a walk. Adds a new file, utlock.c, 7828that 7829implements the reader/writer lock mechanism. ACPICA BZ 749. 7830 7831Fixed a regression introduced in version 20090220 where a change to the 7832FADT 7833handling could cause the ACPICA subsystem to access non-existent I/O 7834ports. 7835 7836Modified the handling of FADT register and table (FACS/DSDT) addresses. 7837The 7838FADT can contain both 32-bit and 64-bit versions of these addresses. 7839Previously, the 64-bit versions were favored, meaning that if both 32 and 784064 7841versions were valid, but not equal, the 64-bit version was used. This was 7842found to cause some machines to fail. Now, in this case, the 32-bit 7843version 7844is used instead. This now matches the Windows behavior. 7845 7846Implemented a new mechanism to protect certain I/O ports. Provides 7847Microsoft 7848compatibility and protects the standard PC I/O ports from access via AML 7849code. Adds a new file, hwvalid.c 7850 7851Fixed a possible extraneous warning message from the FADT support. The 7852message warns of a 32/64 length mismatch between the legacy and GAS 7853definitions for a register. 7854 7855Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 7856is 7857made obsolete by the port protection mechanism above. It was previously 7858used 7859to validate the entire address range of an operation region, which could 7860be 7861incorrect if the range included illegal ports, but fields within the 7862operation region did not actually access those ports. Validation is now 7863performed on a per-field basis instead of the entire region. 7864 7865Modified the handling of the PM1 Status Register ignored bit (bit 11.) 7866Ignored bits must be "preserved" according to the ACPI spec. Usually, 7867this 7868means a read/modify/write when writing to the register. However, for 7869status 7870registers, writing a one means clear the event. Writing a zero means 7871preserve 7872the event (do not clear.) This behavior is clarified in the ACPI 4.0 7873spec, 7874and the ACPICA code now simply always writes a zero to the ignored bit. 7875 7876Modified the handling of ignored bits for the PM1 A/B Control Registers. 7877As 7878per the ACPI specification, for the control registers, preserve 7879(read/modify/write) all bits that are defined as either reserved or 7880ignored. 7881 7882Updated the handling of write-only bits in the PM1 A/B Control Registers. 7883When reading the register, zero the write-only bits as per the ACPI spec. 7884ACPICA BZ 443. Lin Ming. 7885 7886Removed "Linux" from the list of supported _OSI strings. Linux no longer 7887wants to reply true to this request. The Windows strings are the only 7888paths 7889through the AML that are tested and known to work properly. 7890 7891 Previous Release: 7892 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 7893 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 7894 Current Release: 7895 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 7896 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 7897 78982) iASL Compiler/Disassembler and Tools: 7899 7900Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 7901and 7902aetables.c 7903 7904---------------------------------------- 790520 February 2009. Summary of changes for version 20090220: 7906 79071) ACPI CA Core Subsystem: 7908 7909Optimized the ACPI register locking. Removed locking for reads from the 7910ACPI 7911bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 7912is 7913not required when reading the single-bit registers. The 7914AcpiGetRegisterUnlocked function is no longer needed and has been 7915removed. 7916This will improve performance for reads on these registers. ACPICA BZ 7917760. 7918 7919Fixed the parameter validation for AcpiRead/Write. Now return 7920AE_BAD_PARAMETER if the input register pointer is null, and 7921AE_BAD_ADDRESS 7922if 7923the register has an address of zero. Previously, these cases simply 7924returned 7925AE_OK. For optional registers such as PM1B status/enable/control, the 7926caller 7927should check for a valid register address before calling. ACPICA BZ 748. 7928 7929Renamed the external ACPI bit register access functions. Renamed 7930AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 7931functions. The new names are AcpiReadBitRegister and 7932AcpiWriteBitRegister. 7933Also, restructured the code for these functions by simplifying the code 7934path 7935and condensing duplicate code to reduce code size. 7936 7937Added new functions to transparently handle the possibly split PM1 A/B 7938registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 7939functions 7940now handle the split registers for PM1 Status, Enable, and Control. 7941ACPICA 7942BZ 7943746. 7944 7945Added a function to handle the PM1 control registers, 7946AcpiHwWritePm1Control. 7947This function writes both of the PM1 control registers (A/B). These 7948registers 7949are different than the PM1 A/B status and enable registers in that 7950different 7951values can be written to the A/B registers. Most notably, the SLP_TYP 7952bits 7953can be different, as per the values returned from the _Sx predefined 7954methods. 7955 7956Removed an extra register write within AcpiHwClearAcpiStatus. This 7957function 7958was writing an optional PM1B status register twice. The existing call to 7959the 7960low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 7961A/B 7962register. ACPICA BZ 751. 7963 7964Split out the PM1 Status registers from the FADT. Added new globals for 7965these 7966registers (A/B), similar to the way the PM1 Enable registers are handled. 7967Instead of overloading the FADT Event Register blocks. This makes the 7968code 7969clearer and less prone to error. 7970 7971Fixed the warning message for when the platform contains too many ACPI 7972tables 7973for the default size of the global root table data structure. The 7974calculation 7975for the truncation value was incorrect. 7976 7977Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 7978obsolete macro, since it is now a simple reference to ->common.type. 7979There 7980were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 7981 7982Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 7983TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 7984simply SLEEP_TYPE. ACPICA BZ 754. 7985 7986Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 7987function is only needed on 64-bit host operating systems and is thus not 7988included for 32-bit hosts. 7989 7990Debug output: print the input and result for invocations of the _OSI 7991reserved 7992control method via the ACPI_LV_INFO debug level. Also, reduced some of 7993the 7994verbosity of this debug level. Len Brown. 7995 7996Example Code and Data Size: These are the sizes for the OS-independent 7997acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7998debug version of the code includes the debug output trace mechanism and 7999has a 8000much larger code and data size. 8001 8002 Previous Release: 8003 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8004 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8005 Current Release: 8006 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 8007 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 8008 80092) iASL Compiler/Disassembler and Tools: 8010 8011Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 8012various legal performance profiles. 8013 8014---------------------------------------- 801523 January 2009. Summary of changes for version 20090123: 8016 80171) ACPI CA Core Subsystem: 8018 8019Added the 2009 copyright to all module headers and signons. This affects 8020virtually every file in the ACPICA core subsystem, the iASL compiler, and 8021the tools/utilities. 8022 8023Implemented a change to allow the host to override any ACPI table, 8024including 8025dynamically loaded tables. Previously, only the DSDT could be replaced by 8026the 8027host. With this change, the AcpiOsTableOverride interface is called for 8028each 8029table found in the RSDT/XSDT during ACPICA initialization, and also 8030whenever 8031a table is dynamically loaded via the AML Load operator. 8032 8033Updated FADT flag definitions, especially the Boot Architecture flags. 8034 8035Debugger: For the Find command, automatically pad the input ACPI name 8036with 8037underscores if the name is shorter than 4 characters. This enables a 8038match 8039with the actual namespace entry which is itself padded with underscores. 8040 8041Example Code and Data Size: These are the sizes for the OS-independent 8042acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8043debug version of the code includes the debug output trace mechanism and 8044has a 8045much larger code and data size. 8046 8047 Previous Release: 8048 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8049 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8050 Current Release: 8051 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8052 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8053 80542) iASL Compiler/Disassembler and Tools: 8055 8056Fix build error under Bison-2.4. 8057 8058Dissasembler: Enhanced FADT support. Added decoding of the Boot 8059Architecture 8060flags. Now decode all flags, regardless of the FADT version. Flag output 8061includes the FADT version which first defined each flag. 8062 8063The iASL -g option now dumps the RSDT to a file (in addition to the FADT 8064and 8065DSDT). Windows only. 8066 8067---------------------------------------- 806804 December 2008. Summary of changes for version 20081204: 8069 80701) ACPI CA Core Subsystem: 8071 8072The ACPICA Programmer Reference has been completely updated and revamped 8073for 8074this release. This includes updates to the external interfaces, OSL 8075interfaces, the overview sections, and the debugger reference. 8076 8077Several new ACPICA interfaces have been implemented and documented in the 8078programmer reference: 8079AcpiReset - Writes the reset value to the FADT-defined reset register. 8080AcpiDisableAllGpes - Disable all available GPEs. 8081AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 8082AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 8083AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 8084AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 8085AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 8086 8087Most of the public ACPI hardware-related interfaces have been moved to a 8088new 8089file, components/hardware/hwxface.c 8090 8091Enhanced the FADT parsing and low-level ACPI register access: The ACPI 8092register lengths within the FADT are now used, and the low level ACPI 8093register access no longer hardcodes the ACPI register lengths. Given that 8094there may be some risk in actually trusting the FADT register lengths, a 8095run- 8096time option was added to fall back to the default hardcoded lengths if 8097the 8098FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 8099option is set to true for now, and a warning is issued if a suspicious 8100FADT 8101register length is overridden with the default value. 8102 8103Fixed a reference count issue in NsRepairObject. This problem was 8104introduced 8105in version 20081031 as part of a fix to repair Buffer objects within 8106Packages. Lin Ming. 8107 8108Added semaphore support to the Linux/Unix application OS-services layer 8109(OSL). ACPICA BZ 448. Lin Ming. 8110 8111Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 8112will 8113be implemented in the OSL, or will binary semaphores be used instead. 8114 8115Example Code and Data Size: These are the sizes for the OS-independent 8116acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8117debug version of the code includes the debug output trace mechanism and 8118has a 8119much larger code and data size. 8120 8121 Previous Release: 8122 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 8123 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 8124 Current Release: 8125 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8126 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8127 81282) iASL Compiler/Disassembler and Tools: 8129 8130iASL: Completed the '-e' option to include additional ACPI tables in 8131order 8132to 8133aid with disassembly and External statement generation. ACPICA BZ 742. 8134Lin 8135Ming. 8136 8137iASL: Removed the "named object in while loop" error. The compiler cannot 8138determine how many times a loop will execute. ACPICA BZ 730. 8139 8140Disassembler: Implemented support for FADT revision 2 (MS extension). 8141ACPICA 8142BZ 743. 8143 8144Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 8145MCFG). 8146 8147---------------------------------------- 814831 October 2008. Summary of changes for version 20081031: 8149 81501) ACPI CA Core Subsystem: 8151 8152Restructured the ACPICA header files into public/private. acpi.h now 8153includes 8154only the "public" acpica headers. All other acpica headers are "private" 8155and 8156should not be included by acpica users. One new file, accommon.h is used 8157to 8158include the commonly used private headers for acpica code generation. 8159Future 8160plans include moving all private headers to a new subdirectory. 8161 8162Implemented an automatic Buffer->String return value conversion for 8163predefined ACPI methods. For these methods (such as _BIF), added 8164automatic 8165conversion for return objects that are required to be a String, but a 8166Buffer 8167was found instead. This can happen when reading string battery data from 8168an 8169operation region, because it used to be difficult to convert the data 8170from 8171buffer to string from within the ASL. Ensures that the host OS is 8172provided 8173with a valid null-terminated string. Linux BZ 11822. 8174 8175Updated the FACS waking vector interfaces. Split 8176AcpiSetFirmwareWakingVector 8177into two: one for the 32-bit vector, another for the 64-bit vector. This 8178is 8179required because the host OS must setup the wake much differently for 8180each 8181vector (real vs. protected mode, etc.) and the interface itself should 8182not 8183be 8184deciding which vector to use. Also, eliminated the 8185GetFirmwareWakingVector 8186interface, as it served no purpose (only the firmware reads the vector, 8187OS 8188only writes the vector.) ACPICA BZ 731. 8189 8190Implemented a mechanism to escape infinite AML While() loops. Added a 8191loop 8192counter to force exit from AML While loops if the count becomes too 8193large. 8194This can occur in poorly written AML when the hardware does not respond 8195within a while loop and the loop does not implement a timeout. The 8196maximum 8197loop count is configurable. A new exception code is returned when a loop 8198is 8199broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 8200 8201Optimized the execution of AML While loops. Previously, a control state 8202object was allocated and freed for each execution of the loop. The 8203optimization is to simply reuse the control state for each iteration. 8204This 8205speeds up the raw loop execution time by about 5%. 8206 8207Enhanced the implicit return mechanism. For Windows compatibility, return 8208an 8209implicit integer of value zero for methods that contain no executable 8210code. 8211Such methods are seen in the field as stubs (presumably), and can cause 8212drivers to fail if they expect a return value. Lin Ming. 8213 8214Allow multiple backslashes as root prefixes in namepaths. In a fully 8215qualified namepath, allow multiple backslash prefixes. This can happen 8216(and 8217is seen in the field) because of the use of a double-backslash in strings 8218(since backslash is the escape character) causing confusion. ACPICA BZ 8219739 8220Lin Ming. 8221 8222Emit a warning if two different FACS or DSDT tables are discovered in the 8223FADT. Checks if there are two valid but different addresses for the FACS 8224and 8225DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 8226 8227Consolidated the method argument count validation code. Merged the code 8228that 8229validates control method argument counts into the predefined validation 8230module. Eliminates possible multiple warnings for incorrect argument 8231counts. 8232 8233Implemented ACPICA example code. Includes code for ACPICA initialization, 8234handler installation, and calling a control method. Available at 8235source/tools/examples. 8236 8237Added a global pointer for FACS table to simplify internal FACS access. 8238Use 8239the global pointer instead of using AcpiGetTableByIndex for each FACS 8240access. 8241This simplifies the code for the Global Lock and the Firmware Waking 8242Vector(s). 8243 8244Example Code and Data Size: These are the sizes for the OS-independent 8245acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8246debug version of the code includes the debug output trace mechanism and 8247has a 8248much larger code and data size. 8249 8250 Previous Release: 8251 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 8252 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 8253 Current Release: 8254 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 8255 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 8256 82572) iASL Compiler/Disassembler and Tools: 8258 8259iASL: Improved disassembly of external method calls. Added the -e option 8260to 8261allow the inclusion of additional ACPI tables to help with the 8262disassembly 8263of 8264method invocations and the generation of external declarations during the 8265disassembly. Certain external method invocations cannot be disassembled 8266properly without the actual declaration of the method. Use the -e option 8267to 8268include the table where the external method(s) are actually declared. 8269Most 8270useful for disassembling SSDTs that make method calls back to the master 8271DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 8272-d 8273-e dsdt.aml ssdt1.aml 8274 8275iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 8276problem where the use of an alias within a namepath would result in a not 8277found error or cause the compiler to fault. Also now allows forward 8278references from the Alias operator itself. ACPICA BZ 738. 8279 8280---------------------------------------- 828126 September 2008. Summary of changes for version 20080926: 8282 82831) ACPI CA Core Subsystem: 8284 8285Designed and implemented a mechanism to validate predefined ACPI methods 8286and 8287objects. This code validates the predefined ACPI objects (objects whose 8288names 8289start with underscore) that appear in the namespace, at the time they are 8290evaluated. The argument count and the type of the returned object are 8291validated against the ACPI specification. The purpose of this validation 8292is 8293to detect problems with the BIOS-implemented predefined ACPI objects 8294before 8295the results are returned to the ACPI-related drivers. Future enhancements 8296may 8297include actual repair of incorrect return objects where possible. Two new 8298files are nspredef.c and acpredef.h. 8299 8300Fixed a fault in the AML parser if a memory allocation fails during the 8301Op 8302completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 8303 8304Fixed an issue with implicit return compatibility. This change improves 8305the 8306implicit return mechanism to be more compatible with the MS interpreter. 8307Lin 8308Ming, ACPICA BZ 349. 8309 8310Implemented support for zero-length buffer-to-string conversions. Allow 8311zero 8312length strings during interpreter buffer-to-string conversions. For 8313example, 8314during the ToDecimalString and ToHexString operators, as well as implicit 8315conversions. Fiodor Suietov, ACPICA BZ 585. 8316 8317Fixed two possible memory leaks in the error exit paths of 8318AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 8319are 8320similar in that they use a stack of state objects in order to eliminate 8321recursion. The stack must be fully unwound and deallocated if an error 8322occurs. Lin Ming. ACPICA BZ 383. 8323 8324Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 8325global 8326ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 8327Moore ACPICA BZ 442. 8328 8329Removed the obsolete version number in module headers. Removed the 8330"$Revision" number that appeared in each module header. This version 8331number 8332was useful under SourceSafe and CVS, but has no meaning under git. It is 8333not 8334only incorrect, it could also be misleading. 8335 8336Example Code and Data Size: These are the sizes for the OS-independent 8337acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8338debug version of the code includes the debug output trace mechanism and 8339has a 8340much larger code and data size. 8341 8342 Previous Release: 8343 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8344 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 8345 Current Release: 8346 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 8347 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 8348 8349---------------------------------------- 835029 August 2008. Summary of changes for version 20080829: 8351 83521) ACPI CA Core Subsystem: 8353 8354Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 8355Reference. Changes include the elimination of cheating on the Object 8356field 8357for the DdbHandle subtype, addition of a reference class field to 8358differentiate the various reference types (instead of an AML opcode), and 8359the 8360cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 8361 8362Reduce an error to a warning for an incorrect method argument count. 8363Previously aborted with an error if too few arguments were passed to a 8364control method via the external ACPICA interface. Now issue a warning 8365instead 8366and continue. Handles the case where the method inadvertently declares 8367too 8368many arguments, but does not actually use the extra ones. Applies mainly 8369to 8370the predefined methods. Lin Ming. Linux BZ 11032. 8371 8372Disallow the evaluation of named object types with no intrinsic value. 8373Return 8374AE_TYPE for objects that have no value and therefore evaluation is 8375undefined: 8376Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 8377of 8378these types were allowed, but an exception would be generated at some 8379point 8380during the evaluation. Now, the error is generated up front. 8381 8382Fixed a possible memory leak in the AcpiNsGetExternalPathname function 8383(nsnames.c). Fixes a leak in the error exit path. 8384 8385Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 8386debug 8387levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 8388ACPI_EXCEPTION 8389interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 8390ACPI_LV_EVENTS. 8391 8392Removed obsolete and/or unused exception codes from the acexcep.h header. 8393There is the possibility that certain device drivers may be affected if 8394they 8395use any of these exceptions. 8396 8397The ACPICA documentation has been added to the public git source tree, 8398under 8399acpica/documents. Included are the ACPICA programmer reference, the iASL 8400compiler reference, and the changes.txt release logfile. 8401 8402Example Code and Data Size: These are the sizes for the OS-independent 8403acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8404debug version of the code includes the debug output trace mechanism and 8405has a 8406much larger code and data size. 8407 8408 Previous Release: 8409 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8410 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 8411 Current Release: 8412 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8413 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 8414 84152) iASL Compiler/Disassembler and Tools: 8416 8417Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 8418defines _SCP with 3 arguments. Previous versions defined it with only 1 8419argument. iASL now allows both definitions. 8420 8421iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 8422zero- 8423length subtables when disassembling ACPI tables. Also fixed a couple of 8424errors where a full 16-bit table type field was not extracted from the 8425input 8426properly. 8427 8428acpisrc: Improve comment counting mechanism for generating source code 8429statistics. Count first and last lines of multi-line comments as 8430whitespace, 8431not comment lines. Handle Linux legal header in addition to standard 8432acpica 8433header. 8434 8435---------------------------------------- 8436 843729 July 2008. Summary of changes for version 20080729: 8438 84391) ACPI CA Core Subsystem: 8440 8441Fix a possible deadlock in the GPE dispatch. Remove call to 8442AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 8443attempt 8444to acquire the GPE lock but can deadlock since the GPE lock is already 8445held 8446at dispatch time. This code was introduced in version 20060831 as a 8447response 8448to Linux BZ 6881 and has since been removed from Linux. 8449 8450Add a function to dereference returned reference objects. Examines the 8451return 8452object from a call to AcpiEvaluateObject. Any Index or RefOf references 8453are 8454automatically dereferenced in an attempt to return something useful 8455(these 8456reference types cannot be converted into an external ACPI_OBJECT.) 8457Provides 8458MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 8459 8460x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 8461subtables for the MADT and one new subtable for the SRAT. Includes 8462disassembler and AcpiSrc support. Data from the Intel 64 Architecture 8463x2APIC 8464Specification, June 2008. 8465 8466Additional error checking for pathname utilities. Add error check after 8467all 8468calls to AcpiNsGetPathnameLength. Add status return from 8469AcpiNsBuildExternalPath and check after all calls. Add parameter 8470validation 8471to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 8472 8473Return status from the global init function AcpiUtGlobalInitialize. This 8474is 8475used by both the kernel subsystem and the utilities such as iASL 8476compiler. 8477The function could possibly fail when the caches are initialized. Yang 8478Yi. 8479 8480Add a function to decode reference object types to strings. Created for 8481improved error messages. 8482 8483Improve object conversion error messages. Better error messages during 8484object 8485conversion from internal to the external ACPI_OBJECT. Used for external 8486calls 8487to AcpiEvaluateObject. 8488 8489Example Code and Data Size: These are the sizes for the OS-independent 8490acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8491debug version of the code includes the debug output trace mechanism and 8492has a 8493much larger code and data size. 8494 8495 Previous Release: 8496 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 8497 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 8498 Current Release: 8499 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8500 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 8501 85022) iASL Compiler/Disassembler and Tools: 8503 8504Debugger: fix a possible hang when evaluating non-methods. Fixes a 8505problem 8506introduced in version 20080701. If the object being evaluated (via 8507execute 8508command) is not a method, the debugger can hang while trying to obtain 8509non- 8510existent parameters. 8511 8512iASL: relax error for using reserved "_T_x" identifiers. These names can 8513appear in a disassembled ASL file if they were emitted by the original 8514compiler. Instead of issuing an error or warning and forcing the user to 8515manually change these names, issue a remark instead. 8516 8517iASL: error if named object created in while loop. Emit an error if any 8518named 8519object is created within a While loop. If allowed, this code will 8520generate 8521a 8522run-time error on the second iteration of the loop when an attempt is 8523made 8524to 8525create the same named object twice. ACPICA bugzilla 730. 8526 8527iASL: Support absolute pathnames for include files. Add support for 8528absolute 8529pathnames within the Include operator. previously, only relative 8530pathnames 8531were supported. 8532 8533iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 8534Descriptor. 8535The ACPI spec requires one interrupt minimum. BZ 423 8536 8537iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 8538Handles the case for the Interrupt Resource Descriptor where 8539the ResourceSource argument is omitted but ResourceSourceIndex 8540is present. Now leave room for the Index. BZ 426 8541 8542iASL: Prevent error message if CondRefOf target does not exist. Fixes 8543cases 8544where an error message is emitted if the target does not exist. BZ 516 8545 8546iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 8547(get ACPI tables on Windows). This was apparently broken in version 854820070919. 8549 8550AcpiXtract: Handle EOF while extracting data. Correctly handle the case 8551where 8552the EOF happens immediately after the last table in the input file. Print 8553completion message. Previously, no message was displayed in this case. 8554 8555---------------------------------------- 855601 July 2008. Summary of changes for version 20080701: 8557 85580) Git source tree / acpica.org 8559 8560Fixed a problem where a git-clone from http would not transfer the entire 8561source tree. 8562 85631) ACPI CA Core Subsystem: 8564 8565Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 8566enable bit. Now performs a read-change-write of the enable register 8567instead 8568of simply writing out the cached enable mask. This will prevent 8569inadvertent 8570enabling of GPEs if a rogue GPE is received during initialization (before 8571GPE 8572handlers are installed.) 8573 8574Implemented a copy for dynamically loaded tables. Previously, dynamically 8575loaded tables were simply mapped - but on some machines this memory is 8576corrupted after suspend. Now copy the table to a local buffer. For the 8577OpRegion case, added checksum verify. Use the table length from the table 8578header, not the region length. For the Buffer case, use the table length 8579also. Dennis Noordsij, Bob Moore. BZ 10734 8580 8581Fixed a problem where the same ACPI table could not be dynamically loaded 8582and 8583unloaded more than once. Without this change, a table cannot be loaded 8584again 8585once it has been loaded/unloaded one time. The current mechanism does not 8586unregister a table upon an unload. During a load, if the same table is 8587found, 8588this no longer returns an exception. BZ 722 8589 8590Fixed a problem where the wrong descriptor length was calculated for the 8591EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 8592EndTag 8593are calculated as 12 bytes long, but the actual length in the internal 8594descriptor is 16 because of the round-up to 8 on the 64-bit build. 8595Reported 8596by Linn Crosetto. BZ 728 8597 8598Fixed a possible memory leak in the Unload operator. The DdbHandle 8599returned 8600by Load() did not have its reference count decremented during unload, 8601leading 8602to a memory leak. Lin Ming. BZ 727 8603 8604Fixed a possible memory leak when deleting thermal/processor objects. Any 8605associated notify handlers (and objects) were not being deleted. Fiodor 8606Suietov. BZ 506 8607 8608Fixed the ordering of the ASCII names in the global mutex table to match 8609the 8610actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 8611only. 8612Vegard Nossum. BZ 726 8613 8614Enhanced the AcpiGetObjectInfo interface to return the number of required 8615arguments if the object is a control method. Added this call to the 8616debugger 8617so the proper number of default arguments are passed to a method. This 8618prevents a warning when executing methods from AcpiExec. 8619 8620Added a check for an invalid handle in AcpiGetObjectInfo. Return 8621AE_BAD_PARAMETER if input handle is invalid. BZ 474 8622 8623Fixed an extraneous warning from exconfig.c on the 64-bit build. 8624 8625Example Code and Data Size: These are the sizes for the OS-independent 8626acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8627debug version of the code includes the debug output trace mechanism and 8628has a 8629much larger code and data size. 8630 8631 Previous Release: 8632 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 8633 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 8634 Current Release: 8635 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 8636 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 8637 86382) iASL Compiler/Disassembler and Tools: 8639 8640iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 8641resource descriptor names. 8642 8643iASL: Detect invalid ASCII characters in input (windows version). Removed 8644the 8645"-CF" flag from the flex compile, enables correct detection of non-ASCII 8646characters in the input. BZ 441 8647 8648iASL: Eliminate warning when result of LoadTable is not used. Eliminate 8649the 8650"result of operation not used" warning when the DDB handle returned from 8651LoadTable is not used. The warning is not needed. BZ 590 8652 8653AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 8654method 8655to 8656pass address of table to the AML. Added option to disable OpRegion 8657simulation 8658to allow creation of an OpRegion with a real address that was passed to 8659_CFG. 8660All of this allows testing of the Load and Unload operators from 8661AcpiExec. 8662 8663Debugger: update tables command for unloaded tables. Handle unloaded 8664tables 8665and use the standard table header output routine. 8666 8667---------------------------------------- 866809 June 2008. Summary of changes for version 20080609: 8669 86701) ACPI CA Core Subsystem: 8671 8672Implemented a workaround for reversed _PRT entries. A significant number 8673of 8674BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 8675change dynamically detects and repairs this problem. Provides 8676compatibility 8677with MS ACPI. BZ 6859 8678 8679Simplified the internal ACPI hardware interfaces to eliminate the locking 8680flag parameter from Register Read/Write. Added a new external interface, 8681AcpiGetRegisterUnlocked. 8682 8683Fixed a problem where the invocation of a GPE control method could hang. 8684This 8685was a regression introduced in 20080514. The new method argument count 8686validation mechanism can enter an infinite loop when a GPE method is 8687dispatched. Problem fixed by removing the obsolete code that passed GPE 8688block 8689information to the notify handler via the control method parameter 8690pointer. 8691 8692Fixed a problem where the _SST execution status was incorrectly returned 8693to 8694the caller of AcpiEnterSleepStatePrep. This was a regression introduced 8695in 869620080514. _SST is optional and a NOT_FOUND exception should never be 8697returned. BZ 716 8698 8699Fixed a problem where a deleted object could be accessed from within the 8700AML 8701parser. This was a regression introduced in version 20080123 as a fix for 8702the 8703Unload operator. Lin Ming. BZ 10669 8704 8705Cleaned up the debug operand dump mechanism. Eliminated unnecessary 8706operands 8707and eliminated the use of a negative index in a loop. Operands are now 8708displayed in the correct order, not backwards. This also fixes a 8709regression 8710introduced in 20080514 on 64-bit systems where the elimination of 8711ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 8712715 8713 8714Fixed a possible memory leak in EvPciConfigRegionSetup where the error 8715exit 8716path did not delete a locally allocated structure. 8717 8718Updated definitions for the DMAR and SRAT tables to synchronize with the 8719current specifications. Includes disassembler support. 8720 8721Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 8722loop termination value was used. Loop terminated on iteration early, 8723missing 8724one mutex. Linn Crosetto 8725 8726Example Code and Data Size: These are the sizes for the OS-independent 8727acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8728debug version of the code includes the debug output trace mechanism and 8729has a 8730much larger code and data size. 8731 8732 Previous Release: 8733 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 8734 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 8735 Current Release: 8736 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 8737 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 8738 87392) iASL Compiler/Disassembler and Tools: 8740 8741Disassembler: Implemented support for EisaId() within _CID objects. Now 8742disassemble integer _CID objects back to EisaId invocations, including 8743multiple integers within _CID packages. Includes single-step support for 8744debugger also. 8745 8746Disassembler: Added support for DMAR and SRAT table definition changes. 8747 8748---------------------------------------- 874914 May 2008. Summary of changes for version 20080514: 8750 87511) ACPI CA Core Subsystem: 8752 8753Fixed a problem where GPEs were enabled too early during the ACPICA 8754initialization. This could lead to "handler not installed" errors on some 8755machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 8756This 8757ensures that all operation regions and devices throughout the namespace 8758have 8759been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 8760 8761Implemented a change to the enter sleep code. Moved execution of the _GTS 8762method to just before setting sleep enable bit. The execution was moved 8763from 8764AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 8765immediately before the SLP_EN bit is set, as per the ACPI specification. 8766Luming Yu, BZ 1653. 8767 8768Implemented a fix to disable unknown GPEs (2nd version). Now always 8769disable 8770the GPE, even if ACPICA thinks that that it is already disabled. It is 8771possible that the AML or some other code has enabled the GPE unbeknownst 8772to 8773the ACPICA code. 8774 8775Fixed a problem with the Field operator where zero-length fields would 8776return 8777an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 8778ASL 8779field declarations in Field(), BankField(), and IndexField(). BZ 10606. 8780 8781Implemented a fix for the Load operator, now load the table at the 8782namespace 8783root. This reverts a change introduced in version 20071019. The table is 8784now 8785loaded at the namespace root even though this goes against the ACPI 8786specification. This provides compatibility with other ACPI 8787implementations. 8788The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 8789Ming. 8790 8791Fixed a problem where ACPICA would not Load() tables with unusual 8792signatures. 8793Now ignore ACPI table signature for Load() operator. Only "SSDT" is 8794acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 8795Therefore, signature validation is worthless. Apparently MS ACPI accepts 8796such 8797signatures, ACPICA must be compatible. BZ 10454. 8798 8799Fixed a possible negative array index in AcpiUtValidateException. Added 8800NULL 8801fields to the exception string arrays to eliminate a -1 subtraction on 8802the 8803SubStatus field. 8804 8805Updated the debug tracking macros to reduce overall code and data size. 8806Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 8807instead of pointers to static strings. Jan Beulich and Bob Moore. 8808 8809Implemented argument count checking in control method invocation via 8810AcpiEvaluateObject. Now emit an error if too few arguments, warning if 8811too 8812many. This applies only to extern programmatic control method execution, 8813not 8814method-to-method calls within the AML. Lin Ming. 8815 8816Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 8817no 8818longer needed, especially with the removal of 16-bit support. It was 8819replaced 8820mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 8821bit 8822on 882332/64-bit platforms is required. 8824 8825Added the C const qualifier for appropriate string constants -- mostly 8826MODULE_NAME and printf format strings. Jan Beulich. 8827 8828Example Code and Data Size: These are the sizes for the OS-independent 8829acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8830debug version of the code includes the debug output trace mechanism and 8831has a 8832much larger code and data size. 8833 8834 Previous Release: 8835 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 8836 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 8837 Current Release: 8838 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 8839 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 8840 88412) iASL Compiler/Disassembler and Tools: 8842 8843Implemented ACPI table revision ID validation in the disassembler. Zero 8844is 8845always invalid. For DSDTs, the ID controls the interpreter integer width. 88461 8847means 32-bit and this is unusual. 2 or greater is 64-bit. 8848 8849---------------------------------------- 885021 March 2008. Summary of changes for version 20080321: 8851 88521) ACPI CA Core Subsystem: 8853 8854Implemented an additional change to the GPE support in order to suppress 8855spurious or stray GPEs. The AcpiEvDisableGpe function will now 8856permanently 8857disable incoming GPEs that are neither enabled nor disabled -- meaning 8858that 8859the GPE is unknown to the system. This should prevent future interrupt 8860floods 8861from that GPE. BZ 6217 (Zhang Rui) 8862 8863Fixed a problem where NULL package elements were not returned to the 8864AcpiEvaluateObject interface correctly. The element was simply ignored 8865instead of returning a NULL ACPI_OBJECT package element, potentially 8866causing 8867a buffer overflow and/or confusing the caller who expected a fixed number 8868of 8869elements. BZ 10132 (Lin Ming, Bob Moore) 8870 8871Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 8872Dword, 8873Qword), Field, BankField, and IndexField operators when invoked from 8874inside 8875an executing control method. In this case, these operators created 8876namespace 8877nodes that were incorrectly left marked as permanent nodes instead of 8878temporary nodes. This could cause a problem if there is race condition 8879between an exiting control method and a running namespace walk. (Reported 8880by 8881Linn Crosetto) 8882 8883Fixed a problem where the CreateField and CreateXXXField operators would 8884incorrectly allow duplicate names (the name of the field) with no 8885exception 8886generated. 8887 8888Implemented several changes for Notify handling. Added support for new 8889Notify 8890values (ACPI 2.0+) and improved the Notify debug output. Notify on 8891PowerResource objects is no longer allowed, as per the ACPI 8892specification. 8893(Bob Moore, Zhang Rui) 8894 8895All Reference Objects returned via the AcpiEvaluateObject interface are 8896now 8897marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 8898for 8899NULL objects - either NULL package elements or unresolved named 8900references. 8901 8902Fixed a problem where an extraneous debug message was produced for 8903package 8904objects (when debugging enabled). The message "Package List length larger 8905than NumElements count" is now produced in the correct case, and is now 8906an 8907error message rather than a debug message. Added a debug message for the 8908opposite case, where NumElements is larger than the Package List (the 8909package 8910will be padded out with NULL elements as per the ACPI spec.) 8911 8912Implemented several improvements for the output of the ASL "Debug" object 8913to 8914clarify and keep all data for a given object on one output line. 8915 8916Fixed two size calculation issues with the variable-length Start 8917Dependent 8918resource descriptor. 8919 8920Example Code and Data Size: These are the sizes for the OS-independent 8921acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8922debug version of the code includes the debug output trace mechanism and 8923has 8924a much larger code and data size. 8925 8926 Previous Release: 8927 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 8928 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 8929 Current Release: 8930 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 8931 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 8932 89332) iASL Compiler/Disassembler and Tools: 8934 8935Fixed a problem with the use of the Switch operator where execution of 8936the 8937containing method by multiple concurrent threads could cause an 8938AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 8939actual Switch opcode, it must be simulated with local named temporary 8940variables and if/else pairs. The solution chosen was to mark any method 8941that 8942uses Switch as Serialized, thus preventing multiple thread entries. BZ 8943469. 8944 8945---------------------------------------- 894613 February 2008. Summary of changes for version 20080213: 8947 89481) ACPI CA Core Subsystem: 8949 8950Implemented another MS compatibility design change for GPE/Notify 8951handling. 8952GPEs are now cleared/enabled asynchronously to allow all pending notifies 8953to 8954complete first. It is expected that the OSL will queue the enable request 8955behind all pending notify requests (may require changes to the local host 8956OSL 8957in AcpiOsExecute). Alexey Starikovskiy. 8958 8959Fixed a problem where buffer and package objects passed as arguments to a 8960control method via the external AcpiEvaluateObject interface could cause 8961an 8962AE_AML_INTERNAL exception depending on the order and type of operators 8963executed by the target control method. 8964 8965Fixed a problem where resource descriptor size optimization could cause a 8966problem when a _CRS resource template is passed to a _SRS method. The 8967_SRS 8968resource template must use the same descriptors (with the same size) as 8969returned from _CRS. This change affects the following resource 8970descriptors: 8971IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 89729487) 8973 8974Fixed a problem where a CopyObject to RegionField, BankField, and 8975IndexField 8976objects did not perform an implicit conversion as it should. These types 8977must 8978retain their initial type permanently as per the ACPI specification. 8979However, 8980a CopyObject to all other object types should not perform an implicit 8981conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 8982 8983Fixed a problem with the AcpiGetDevices interface where the mechanism to 8984match device CIDs did not examine the entire list of available CIDs, but 8985instead aborted on the first non-matching CID. Andrew Patterson. 8986 8987Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 8988was 8989inadvertently changed to return a 16-bit value instead of a 32-bit value, 8990truncating the upper dword of a 64-bit value. This macro is only used to 8991display debug output, so no incorrect calculations were made. Also, 8992reimplemented the macro so that a 64-bit shift is not performed by 8993inefficient compilers. 8994 8995Added missing va_end statements that should correspond with each va_start 8996statement. 8997 8998Example Code and Data Size: These are the sizes for the OS-independent 8999acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9000debug version of the code includes the debug output trace mechanism and 9001has 9002a much larger code and data size. 9003 9004 Previous Release: 9005 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9006 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9007 Current Release: 9008 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 9009 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 9010 90112) iASL Compiler/Disassembler and Tools: 9012 9013Implemented full disassembler support for the following new ACPI tables: 9014BERT, EINJ, and ERST. Implemented partial disassembler support for the 9015complicated HEST table. These tables support the Windows Hardware Error 9016Architecture (WHEA). 9017 9018---------------------------------------- 901923 January 2008. Summary of changes for version 20080123: 9020 90211) ACPI CA Core Subsystem: 9022 9023Added the 2008 copyright to all module headers and signons. This affects 9024virtually every file in the ACPICA core subsystem, the iASL compiler, and 9025the tools/utilities. 9026 9027Fixed a problem with the SizeOf operator when used with Package and 9028Buffer 9029objects. These objects have deferred execution for some arguments, and 9030the 9031execution is now completed before the SizeOf is executed. This problem 9032caused 9033unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 9034BZ 90359558 9036 9037Implemented an enhancement to the interpreter "slack mode". In the 9038absence 9039of 9040an explicit return or an implicitly returned object from the last 9041executed 9042opcode, a control method will now implicitly return an integer of value 0 9043for 9044Microsoft compatibility. (Lin Ming) BZ 392 9045 9046Fixed a problem with the Load operator where an exception was not 9047returned 9048in 9049the case where the table is already loaded. (Lin Ming) BZ 463 9050 9051Implemented support for the use of DDBHandles as an Indexed Reference, as 9052per 9053the ACPI spec. (Lin Ming) BZ 486 9054 9055Implemented support for UserTerm (Method invocation) for the Unload 9056operator 9057as per the ACPI spec. (Lin Ming) BZ 580 9058 9059Fixed a problem with the LoadTable operator where the OemId and 9060OemTableId 9061input strings could cause unexpected failures if they were shorter than 9062the 9063maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 9064 9065Implemented support for UserTerm (Method invocation) for the Unload 9066operator 9067as per the ACPI spec. (Lin Ming) BZ 580 9068 9069Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 9070HEST, 9071IBFT, UEFI, WDAT. Disassembler support is forthcoming. 9072 9073Example Code and Data Size: These are the sizes for the OS-independent 9074acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9075debug version of the code includes the debug output trace mechanism and 9076has 9077a much larger code and data size. 9078 9079 Previous Release: 9080 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9081 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9082 Current Release: 9083 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9084 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9085 90862) iASL Compiler/Disassembler and Tools: 9087 9088Implemented support in the disassembler for checksum validation on 9089incoming 9090binary DSDTs and SSDTs. If incorrect, a message is displayed within the 9091table 9092header dump at the start of the disassembly. 9093 9094Implemented additional debugging information in the namespace listing 9095file 9096created during compilation. In addition to the namespace hierarchy, the 9097full 9098pathname to each namespace object is displayed. 9099 9100Fixed a problem with the disassembler where invalid ACPI tables could 9101cause 9102faults or infinite loops. 9103 9104Fixed an unexpected parse error when using the optional "parameter types" 9105list in a control method declaration. (Lin Ming) BZ 397 9106 9107Fixed a problem where two External declarations with the same name did 9108not 9109cause an error (Lin Ming) BZ 509 9110 9111Implemented support for full TermArgs (adding Argx, Localx and method 9112invocation) for the ParameterData parameter to the LoadTable operator. 9113(Lin 9114Ming) BZ 583,587 9115 9116---------------------------------------- 911719 December 2007. Summary of changes for version 20071219: 9118 91191) ACPI CA Core Subsystem: 9120 9121Implemented full support for deferred execution for the TermArg string 9122arguments for DataTableRegion. This enables forward references and full 9123operand resolution for the three string arguments. Similar to 9124OperationRegion 9125deferred argument execution.) Lin Ming. BZ 430 9126 9127Implemented full argument resolution support for the BankValue argument 9128to 9129BankField. Previously, only constants were supported, now any TermArg may 9130be 9131used. Lin Ming BZ 387, 393 9132 9133Fixed a problem with AcpiGetDevices where the search of a branch of the 9134device tree could be terminated prematurely. In accordance with the ACPI 9135specification, the search down the current branch is terminated if a 9136device 9137is both not present and not functional (instead of just not present.) 9138Yakui 9139Zhao. 9140 9141Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 9142if 9143the underlying AML code changed the GPE enable registers. Now, any 9144unknown 9145incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 9146disabled 9147instead of simply ignored. Rui Zhang. 9148 9149Fixed a problem with Index Fields where the Index register was 9150incorrectly 9151limited to a maximum of 32 bits. Now any size may be used. 9152 9153Fixed a couple memory leaks associated with "implicit return" objects 9154when 9155the AML Interpreter slack mode is enabled. Lin Ming BZ 349 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: 79.0K Code, 17.2K Data, 96.2K Total 9165 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9166 Current Release: 9167 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9168 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9169 9170---------------------------------------- 917114 November 2007. Summary of changes for version 20071114: 9172 91731) ACPI CA Core Subsystem: 9174 9175Implemented event counters for each of the Fixed Events, the ACPI SCI 9176(interrupt) itself, and control methods executed. Named 9177AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 9178These 9179should be useful for debugging and statistics. 9180 9181Implemented a new external interface, AcpiGetStatistics, to retrieve the 9182contents of the various event counters. Returns the current values for 9183AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 9184AcpiMethodCount. The interface can be expanded in the future if new 9185counters 9186are added. Device drivers should use this interface rather than access 9187the 9188counters directly. 9189 9190Fixed a problem with the FromBCD and ToBCD operators. With some 9191compilers, 9192the ShortDivide function worked incorrectly, causing problems with the 9193BCD 9194functions with large input values. A truncation from 64-bit to 32-bit 9195inadvertently occurred. Internal BZ 435. Lin Ming 9196 9197Fixed a problem with Index references passed as method arguments. 9198References 9199passed as arguments to control methods were dereferenced immediately 9200(before 9201control was passed to the called method). The references are now 9202correctly 9203passed directly to the called method. BZ 5389. Lin Ming 9204 9205Fixed a problem with CopyObject used in conjunction with the Index 9206operator. 9207The reference was incorrectly dereferenced before the copy. The reference 9208is 9209now correctly copied. BZ 5391. Lin Ming 9210 9211Fixed a problem with Control Method references within Package objects. 9212These 9213references are now correctly generated. This completes the package 9214construction overhaul that began in version 20071019. 9215 9216Example Code and Data Size: These are the sizes for the OS-independent 9217acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9218debug version of the code includes the debug output trace mechanism and 9219has 9220a much larger code and data size. 9221 9222 Previous Release: 9223 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 9224 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 9225 Current Release: 9226 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 9227 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9228 9229 92302) iASL Compiler/Disassembler and Tools: 9231 9232The AcpiExec utility now installs handlers for all of the predefined 9233Operation Region types. New types supported are: PCI_Config, CMOS, and 9234PCIBARTarget. 9235 9236Fixed a problem with the 64-bit version of AcpiExec where the extended 9237(64- 9238bit) address fields for the DSDT and FACS within the FADT were not being 9239used, causing truncation of the upper 32-bits of these addresses. Lin 9240Ming 9241and Bob Moore 9242 9243---------------------------------------- 924419 October 2007. Summary of changes for version 20071019: 9245 92461) ACPI CA Core Subsystem: 9247 9248Fixed a problem with the Alias operator when the target of the alias is a 9249named ASL operator that opens a new scope -- Scope, Device, 9250PowerResource, 9251Processor, and ThermalZone. In these cases, any children of the original 9252operator could not be accessed via the alias, potentially causing 9253unexpected 9254AE_NOT_FOUND exceptions. (BZ 9067) 9255 9256Fixed a problem with the Package operator where all named references were 9257created as object references and left otherwise unresolved. According to 9258the 9259ACPI specification, a Package can only contain Data Objects or references 9260to 9261control methods. The implication is that named references to Data Objects 9262(Integer, Buffer, String, Package, BufferField, Field) should be resolved 9263immediately upon package creation. This is the approach taken with this 9264change. References to all other named objects (Methods, Devices, Scopes, 9265etc.) are all now properly created as reference objects. (BZ 5328) 9266 9267Reverted a change to Notify handling that was introduced in version 926820070508. This version changed the Notify handling from asynchronous to 9269fully synchronous (Device driver Notify handling with respect to the 9270Notify 9271ASL operator). It was found that this change caused more problems than it 9272solved and was removed by most users. 9273 9274Fixed a problem with the Increment and Decrement operators where the type 9275of 9276the target object could be unexpectedly and incorrectly changed. (BZ 353) 9277Lin Ming. 9278 9279Fixed a problem with the Load and LoadTable operators where the table 9280location within the namespace was ignored. Instead, the table was always 9281loaded into the root or current scope. Lin Ming. 9282 9283Fixed a problem with the Load operator when loading a table from a buffer 9284object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 9285 9286Fixed a problem with the Debug object where a store of a DdbHandle 9287reference 9288object to the Debug object could cause a fault. 9289 9290Added a table checksum verification for the Load operator, in the case 9291where 9292the load is from a buffer. (BZ 578). 9293 9294Implemented additional parameter validation for the LoadTable operator. 9295The 9296length of the input strings SignatureString, OemIdString, and OemTableId 9297are 9298now checked for maximum lengths. (BZ 582) Lin Ming. 9299 9300Example Code and Data Size: These are the sizes for the OS-independent 9301acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9302debug version of the code includes the debug output trace mechanism and 9303has 9304a much larger code and data size. 9305 9306 Previous Release: 9307 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 9308 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 9309 Current Release: 9310 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 9311 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 9312 9313 93142) iASL Compiler/Disassembler: 9315 9316Fixed a problem where if a single file was specified and the file did not 9317exist, no error message was emitted. (Introduced with wildcard support in 9318version 20070917.) 9319 9320---------------------------------------- 932119 September 2007. Summary of changes for version 20070919: 9322 93231) ACPI CA Core Subsystem: 9324 9325Designed and implemented new external interfaces to install and remove 9326handlers for ACPI table-related events. Current events that are defined 9327are 9328LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 9329they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 9330AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 9331 9332Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 9333(acpi_serialized option on Linux) could cause some systems to hang during 9334initialization. (Bob Moore) BZ 8171 9335 9336Fixed a problem where objects of certain types (Device, ThermalZone, 9337Processor, PowerResource) can be not found if they are declared and 9338referenced from within the same control method (Lin Ming) BZ 341 9339 9340Example Code and Data Size: These are the sizes for the OS-independent 9341acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9342debug version of the code includes the debug output trace mechanism and 9343has 9344a much larger code and data size. 9345 9346 Previous Release: 9347 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 9348 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 9349 Current Release: 9350 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 9351 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 9352 9353 93542) iASL Compiler/Disassembler: 9355 9356Implemented support to allow multiple files to be compiled/disassembled 9357in 9358a 9359single invocation. This includes command line wildcard support for both 9360the 9361Windows and Unix versions of the compiler. This feature simplifies the 9362disassembly and compilation of multiple ACPI tables in a single 9363directory. 9364 9365---------------------------------------- 936608 May 2007. Summary of changes for version 20070508: 9367 93681) ACPI CA Core Subsystem: 9369 9370Implemented a Microsoft compatibility design change for the handling of 9371the 9372Notify AML operator. Previously, notify handlers were dispatched and 9373executed completely asynchronously in a deferred thread. The new design 9374still executes the notify handlers in a different thread, but the 9375original 9376thread that executed the Notify() now waits at a synchronization point 9377for 9378the notify handler to complete. Some machines depend on a synchronous 9379Notify 9380operator in order to operate correctly. 9381 9382Implemented support to allow Package objects to be passed as method 9383arguments to the external AcpiEvaluateObject interface. Previously, this 9384would return the AE_NOT_IMPLEMENTED exception. This feature had not been 9385implemented since there were no reserved control methods that required it 9386until recently. 9387 9388Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 9389that 9390contained invalid non-zero values in reserved fields could cause later 9391failures because these fields have meaning in later revisions of the 9392FADT. 9393For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 9394fields 9395are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 9396 9397Fixed a problem where the Global Lock handle was not properly updated if 9398a 9399thread that acquired the Global Lock via executing AML code then 9400attempted 9401to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 9402Joe 9403Liu. 9404 9405Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 9406could be corrupted if the interrupt being removed was at the head of the 9407list. Reported by Linn Crosetto. 9408 9409Example Code and Data Size: These are the sizes for the OS-independent 9410acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9411debug version of the code includes the debug output trace mechanism and 9412has 9413a much larger code and data size. 9414 9415 Previous Release: 9416 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9417 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 9418 Current Release: 9419 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 9420 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 9421 9422---------------------------------------- 942320 March 2007. Summary of changes for version 20070320: 9424 94251) ACPI CA Core Subsystem: 9426 9427Implemented a change to the order of interpretation and evaluation of AML 9428operand objects within the AML interpreter. The interpreter now evaluates 9429operands in the order that they appear in the AML stream (and the 9430corresponding ASL code), instead of in the reverse order (after the 9431entire 9432operand list has been parsed). The previous behavior caused several 9433subtle 9434incompatibilities with the Microsoft AML interpreter as well as being 9435somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 9436 9437Implemented a change to the ACPI Global Lock support. All interfaces to 9438the 9439global lock now allow the same thread to acquire the lock multiple times. 9440This affects the AcpiAcquireGlobalLock external interface to the global 9441lock 9442as well as the internal use of the global lock to support AML fields -- a 9443control method that is holding the global lock can now simultaneously 9444access 9445AML fields that require global lock protection. Previously, in both 9446cases, 9447this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 9448to 9449AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 9450Controller. There is no change to the behavior of the AML Acquire 9451operator, 9452as this can already be used to acquire a mutex multiple times by the same 9453thread. BZ 8066. With assistance from Alexey Starikovskiy. 9454 9455Fixed a problem where invalid objects could be referenced in the AML 9456Interpreter after error conditions. During operand evaluation, ensure 9457that 9458the internal "Return Object" field is cleared on error and only valid 9459pointers are stored there. Caused occasional access to deleted objects 9460that 9461resulted in "large reference count" warning messages. Valery Podrezov. 9462 9463Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 9464on 9465deeply nested control method invocations. BZ 7873, local BZ 487. Valery 9466Podrezov. 9467 9468Fixed an internal problem with the handling of result objects on the 9469interpreter result stack. BZ 7872. Valery Podrezov. 9470 9471Removed obsolete code that handled the case where AML_NAME_OP is the 9472target 9473of a reference (Reference.Opcode). This code was no longer necessary. BZ 94747874. Valery Podrezov. 9475 9476Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 9477was 9478a 9479remnant from the previously discontinued 16-bit support. 9480 9481Example Code and Data Size: These are the sizes for the OS-independent 9482acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9483debug version of the code includes the debug output trace mechanism and 9484has 9485a much larger code and data size. 9486 9487 Previous Release: 9488 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9489 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9490 Current Release: 9491 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9492 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 9493 9494---------------------------------------- 949526 January 2007. Summary of changes for version 20070126: 9496 94971) ACPI CA Core Subsystem: 9498 9499Added the 2007 copyright to all module headers and signons. This affects 9500virtually every file in the ACPICA core subsystem, the iASL compiler, and 9501the utilities. 9502 9503Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 9504during a table load. A bad pointer was passed in the case where the DSDT 9505is 9506overridden, causing a fault in this case. 9507 9508Example Code and Data Size: These are the sizes for the OS-independent 9509acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9510debug version of the code includes the debug output trace mechanism and 9511has 9512a much larger code and data size. 9513 9514 Previous Release: 9515 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9516 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9517 Current Release: 9518 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9519 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9520 9521---------------------------------------- 952215 December 2006. Summary of changes for version 20061215: 9523 95241) ACPI CA Core Subsystem: 9525 9526Support for 16-bit ACPICA has been completely removed since it is no 9527longer 9528necessary and it clutters the code. All 16-bit macros, types, and 9529conditional compiles have been removed, cleaning up and simplifying the 9530code 9531across the entire subsystem. DOS support is no longer needed since the 9532bootable Linux firmware kit is now available. 9533 9534The handler for the Global Lock is now removed during AcpiTerminate to 9535enable a clean subsystem restart, via the implementation of the 9536AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 9537HP) 9538 9539Implemented enhancements to the multithreading support within the 9540debugger 9541to enable improved multithreading debugging and evaluation of the 9542subsystem. 9543(Valery Podrezov) 9544 9545Debugger: Enhanced the Statistics/Memory command to emit the total 9546(maximum) 9547memory used during the execution, as well as the maximum memory consumed 9548by 9549each of the various object types. (Valery Podrezov) 9550 9551Example Code and Data Size: These are the sizes for the OS-independent 9552acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9553debug version of the code includes the debug output trace mechanism and 9554has 9555a much larger code and data size. 9556 9557 Previous Release: 9558 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 9559 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 9560 Current Release: 9561 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9562 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9563 9564 95652) iASL Compiler/Disassembler and Tools: 9566 9567AcpiExec: Implemented a new option (-m) to display full memory use 9568statistics upon subsystem/program termination. (Valery Podrezov) 9569 9570---------------------------------------- 957109 November 2006. Summary of changes for version 20061109: 9572 95731) ACPI CA Core Subsystem: 9574 9575Optimized the Load ASL operator in the case where the source operand is 9576an 9577operation region. Simply map the operation region memory, instead of 9578performing a bytewise read. (Region must be of type SystemMemory, see 9579below.) 9580 9581Fixed the Load ASL operator for the case where the source operand is a 9582region field. A buffer object is also allowed as the source operand. BZ 9583480 9584 9585Fixed a problem where the Load ASL operator allowed the source operand to 9586be 9587an operation region of any type. It is now restricted to regions of type 9588SystemMemory, as per the ACPI specification. BZ 481 9589 9590Additional cleanup and optimizations for the new Table Manager code. 9591 9592AcpiEnable will now fail if all of the required ACPI tables are not 9593loaded 9594(FADT, FACS, DSDT). BZ 477 9595 9596Added #pragma pack(8/4) to acobject.h to ensure that the structures in 9597this 9598header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 9599manually optimized to be aligned and will not work if it is byte-packed. 9600 9601Example Code and Data Size: These are the sizes for the OS-independent 9602acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9603debug version of the code includes the debug output trace mechanism and 9604has 9605a much larger code and data size. 9606 9607 Previous Release: 9608 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 9609 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 9610 Current Release: 9611 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 9612 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 9613 9614 96152) iASL Compiler/Disassembler and Tools: 9616 9617Fixed a problem where the presence of the _OSI predefined control method 9618within complex expressions could cause an internal compiler error. 9619 9620AcpiExec: Implemented full region support for multiple address spaces. 9621SpaceId is now part of the REGION object. BZ 429 9622 9623---------------------------------------- 962411 October 2006. Summary of changes for version 20061011: 9625 96261) ACPI CA Core Subsystem: 9627 9628Completed an AML interpreter performance enhancement for control method 9629execution. Previously a 2-pass parse/execution, control methods are now 9630completely parsed and executed in a single pass. This improves overall 9631interpreter performance by ~25%, reduces code size, and reduces CPU stack 9632use. (Valery Podrezov + interpreter changes in version 20051202 that 9633eliminated namespace loading during the pass one parse.) 9634 9635Implemented _CID support for PCI Root Bridge detection. If the _HID does 9636not 9637match the predefined PCI Root Bridge IDs, the _CID list (if present) is 9638now 9639obtained and also checked for an ID match. 9640 9641Implemented additional support for the PCI _ADR execution: upsearch until 9642a 9643device scope is found before executing _ADR. This allows PCI_Config 9644operation regions to be declared locally within control methods 9645underneath 9646PCI device objects. 9647 9648Fixed a problem with a possible race condition between threads executing 9649AcpiWalkNamespace and the AML interpreter. This condition was removed by 9650modifying AcpiWalkNamespace to (by default) ignore all temporary 9651namespace 9652entries created during any concurrent control method execution. An 9653additional namespace race condition is known to exist between 9654AcpiWalkNamespace and the Load/Unload ASL operators and is still under 9655investigation. 9656 9657Restructured the AML ParseLoop function, breaking it into several 9658subfunctions in order to reduce CPU stack use and improve 9659maintainability. 9660(Mikhail Kouzmich) 9661 9662AcpiGetHandle: Fix for parameter validation to detect invalid 9663combinations 9664of prefix handle and pathname. BZ 478 9665 9666Example Code and Data Size: These are the sizes for the OS-independent 9667acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9668debug version of the code includes the debug output trace mechanism and 9669has 9670a much larger code and data size. 9671 9672 Previous Release: 9673 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9674 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 9675 Current Release: 9676 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 9677 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 9678 96792) iASL Compiler/Disassembler and Tools: 9680 9681Ported the -g option (get local ACPI tables) to the new ACPICA Table 9682Manager 9683to restore original behavior. 9684 9685---------------------------------------- 968627 September 2006. Summary of changes for version 20060927: 9687 96881) ACPI CA Core Subsystem: 9689 9690Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 9691These functions now use a spinlock for mutual exclusion and the interrupt 9692level indication flag is not needed. 9693 9694Fixed a problem with the Global Lock where the lock could appear to be 9695obtained before it is actually obtained. The global lock semaphore was 9696inadvertently created with one unit instead of zero units. (BZ 464) 9697Fiodor 9698Suietov. 9699 9700Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 9701during 9702a read from a buffer or region field. (BZ 458) Fiodor Suietov. 9703 9704Example Code and Data Size: These are the sizes for the OS-independent 9705acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9706debug version of the code includes the debug output trace mechanism and 9707has 9708a much larger code and data size. 9709 9710 Previous Release: 9711 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9712 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 9713 Current Release: 9714 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9715 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 9716 9717 97182) iASL Compiler/Disassembler and Tools: 9719 9720Fixed a compilation problem with the pre-defined Resource Descriptor 9721field 9722names where an "object does not exist" error could be incorrectly 9723generated 9724if the parent ResourceTemplate pathname places the template within a 9725different namespace scope than the current scope. (BZ 7212) 9726 9727Fixed a problem where the compiler could hang after syntax errors 9728detected 9729in an ElseIf construct. (BZ 453) 9730 9731Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 9732operator. An incorrect output filename was produced when this parameter 9733was 9734a null string (""). Now, the original input filename is used as the AML 9735output filename, with an ".aml" extension. 9736 9737Implemented a generic batch command mode for the AcpiExec utility 9738(execute 9739any AML debugger command) (Valery Podrezov). 9740 9741---------------------------------------- 974212 September 2006. Summary of changes for version 20060912: 9743 97441) ACPI CA Core Subsystem: 9745 9746Enhanced the implementation of the "serialized mode" of the interpreter 9747(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 9748specified, instead of creating a serialization semaphore per control 9749method, 9750the interpreter lock is simply no longer released before a blocking 9751operation during control method execution. This effectively makes the AML 9752Interpreter single-threaded. The overhead of a semaphore per-method is 9753eliminated. 9754 9755Fixed a regression where an error was no longer emitted if a control 9756method 9757attempts to create 2 objects of the same name. This once again returns 9758AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 9759that 9760will dynamically serialize the control method to possible prevent future 9761errors. (BZ 440) 9762 9763Integrated a fix for a problem with PCI Express HID detection in the PCI 9764Config Space setup procedure. (BZ 7145) 9765 9766Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 9767AcpiHwInitialize function - the FADT registers are now validated when the 9768table is loaded. 9769 9770Added two new warnings during FADT verification - 1) if the FADT is 9771larger 9772than the largest known FADT version, and 2) if there is a mismatch 9773between 9774a 977532-bit block address and the 64-bit X counterpart (when both are non- 9776zero.) 9777 9778Example Code and Data Size: These are the sizes for the OS-independent 9779acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9780debug version of the code includes the debug output trace mechanism and 9781has 9782a much larger code and data size. 9783 9784 Previous Release: 9785 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 9786 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 9787 Current Release: 9788 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9789 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 9790 9791 97922) iASL Compiler/Disassembler and Tools: 9793 9794Fixed a problem with the implementation of the Switch() operator where 9795the 9796temporary variable was declared too close to the actual Switch, instead 9797of 9798at method level. This could cause a problem if the Switch() operator is 9799within a while loop, causing an error on the second iteration. (BZ 460) 9800 9801Disassembler - fix for error emitted for unknown type for target of scope 9802operator. Now, ignore it and continue. 9803 9804Disassembly of an FADT now verifies the input FADT and reports any errors 9805found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 9806 9807Disassembly of raw data buffers with byte initialization data now 9808prefixes 9809each output line with the current buffer offset. 9810 9811Disassembly of ASF! table now includes all variable-length data fields at 9812the end of some of the subtables. 9813 9814The disassembler now emits a comment if a buffer appears to be a 9815ResourceTemplate, but cannot be disassembled as such because the EndTag 9816does 9817not appear at the very end of the buffer. 9818 9819AcpiExec - Added the "-t" command line option to enable the serialized 9820mode 9821of the AML interpreter. 9822 9823---------------------------------------- 982431 August 2006. Summary of changes for version 20060831: 9825 98261) ACPI CA Core Subsystem: 9827 9828Miscellaneous fixes for the Table Manager: 9829- Correctly initialize internal common FADT for all 64-bit "X" fields 9830- Fixed a couple table mapping issues during table load 9831- Fixed a couple alignment issues for IA64 9832- Initialize input array to zero in AcpiInitializeTables 9833- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 9834AcpiGetTableByIndex 9835 9836Change for GPE support: when a "wake" GPE is received, all wake GPEs are 9837now 9838immediately disabled to prevent the waking GPE from firing again and to 9839prevent other wake GPEs from interrupting the wake process. 9840 9841Added the AcpiGpeCount global that tracks the number of processed GPEs, 9842to 9843be used for debugging systems with a large number of ACPI interrupts. 9844 9845Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 9846both the ACPICA headers and the disassembler. 9847 9848Example Code and Data Size: These are the sizes for the OS-independent 9849acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9850debug version of the code includes the debug output trace mechanism and 9851has 9852a much larger code and data size. 9853 9854 Previous Release: 9855 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 9856 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 9857 Current Release: 9858 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 9859 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 9860 9861 98622) iASL Compiler/Disassembler and Tools: 9863 9864Disassembler support for the DMAR ACPI table. 9865 9866---------------------------------------- 986723 August 2006. Summary of changes for version 20060823: 9868 98691) ACPI CA Core Subsystem: 9870 9871The Table Manager component has been completely redesigned and 9872reimplemented. The new design is much simpler, and reduces the overall 9873code 9874and data size of the kernel-resident ACPICA by approximately 5%. Also, it 9875is 9876now possible to obtain the ACPI tables very early during kernel 9877initialization, even before dynamic memory management is initialized. 9878(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 9879 9880Obsolete ACPICA interfaces: 9881 9882- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 9883init 9884time). 9885- AcpiLoadTable: Not needed. 9886- AcpiUnloadTable: Not needed. 9887 9888New ACPICA interfaces: 9889 9890- AcpiInitializeTables: Must be called before the table manager can be 9891used. 9892- AcpiReallocateRootTable: Used to transfer the root table to dynamically 9893allocated memory after it becomes available. 9894- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 9895tables 9896in the RSDT/XSDT. 9897 9898Other ACPICA changes: 9899 9900- AcpiGetTableHeader returns the actual mapped table header, not a copy. 9901Use 9902AcpiOsUnmapMemory to free this mapping. 9903- AcpiGetTable returns the actual mapped table. The mapping is managed 9904internally and must not be deleted by the caller. Use of this interface 9905causes no additional dynamic memory allocation. 9906- AcpiFindRootPointer: Support for physical addressing has been 9907eliminated, 9908it appeared to be unused. 9909- The interface to AcpiOsMapMemory has changed to be consistent with the 9910other allocation interfaces. 9911- The interface to AcpiOsGetRootPointer has changed to eliminate 9912unnecessary 9913parameters. 9914- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 991564- 9916bit platforms. Was previously 64 bits on all platforms. 9917- The interface to the ACPI Global Lock acquire/release macros have 9918changed 9919slightly since ACPICA no longer keeps a local copy of the FACS with a 9920constructed pointer to the actual global lock. 9921 9922Porting to the new table manager: 9923 9924- AcpiInitializeTables: Must be called once, and can be called anytime 9925during the OS initialization process. It allows the host to specify an 9926area 9927of memory to be used to store the internal version of the RSDT/XSDT (root 9928table). This allows the host to access ACPI tables before memory 9929management 9930is initialized and running. 9931- AcpiReallocateRootTable: Can be called after memory management is 9932running 9933to copy the root table to a dynamically allocated array, freeing up the 9934scratch memory specified in the call to AcpiInitializeTables. 9935- AcpiSubsystemInitialize: This existing interface is independent of the 9936Table Manager, and does not have to be called before the Table Manager 9937can 9938be used, it only must be called before the rest of ACPICA can be used. 9939- ACPI Tables: Some changes have been made to the names and structure of 9940the 9941actbl.h and actbl1.h header files and may require changes to existing 9942code. 9943For example, bitfields have been completely removed because of their lack 9944of 9945portability across C compilers. 9946- Update interfaces to the Global Lock acquire/release macros if local 9947versions are used. (see acwin.h) 9948 9949Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 9950 9951New files: tbfind.c 9952 9953Example Code and Data Size: These are the sizes for the OS-independent 9954acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9955debug version of the code includes the debug output trace mechanism and 9956has 9957a much larger code and data size. 9958 9959 Previous Release: 9960 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 9961 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 9962 Current Release: 9963 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 9964 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 9965 9966 99672) iASL Compiler/Disassembler and Tools: 9968 9969No changes for this release. 9970 9971---------------------------------------- 997221 July 2006. Summary of changes for version 20060721: 9973 99741) ACPI CA Core Subsystem: 9975 9976The full source code for the ASL test suite used to validate the iASL 9977compiler and the ACPICA core subsystem is being released with the ACPICA 9978source for the first time. The source is contained in a separate package 9979and 9980consists of over 1100 files that exercise all ASL/AML operators. The 9981package 9982should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 9983Fiodor 9984Suietov) 9985 9986Completed a new design and implementation for support of the ACPI Global 9987Lock. On the OS side, the global lock is now treated as a standard AML 9988mutex. Previously, multiple OS threads could "acquire" the global lock 9989simultaneously. However, this could cause the BIOS to be starved out of 9990the 9991lock - especially in cases such as the Embedded Controller driver where 9992there is a tight coupling between the OS and the BIOS. 9993 9994Implemented an optimization for the ACPI Global Lock interrupt mechanism. 9995The Global Lock interrupt handler no longer queues the execution of a 9996separate thread to signal the global lock semaphore. Instead, the 9997semaphore 9998is signaled directly from the interrupt handler. 9999 10000Implemented support within the AML interpreter for package objects that 10001contain a larger AML length (package list length) than the package 10002element 10003count. In this case, the length of the package is truncated to match the 10004package element count. Some BIOS code apparently modifies the package 10005length 10006on the fly, and this change supports this behavior. Provides 10007compatibility 10008with the MS AML interpreter. (With assistance from Fiodor Suietov) 10009 10010Implemented a temporary fix for the BankValue parameter of a Bank Field 10011to 10012support all constant values, now including the Zero and One opcodes. 10013Evaluation of this parameter must eventually be converted to a full 10014TermArg 10015evaluation. A not-implemented error is now returned (temporarily) for 10016non- 10017constant values for this parameter. 10018 10019Fixed problem reports (Fiodor Suietov) integrated: 10020- Fix for premature object deletion after CopyObject on Operation Region 10021(BZ 10022350) 10023 10024Example Code and Data Size: These are the sizes for the OS-independent 10025acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10026debug version of the code includes the debug output trace mechanism and 10027has 10028a much larger code and data size. 10029 10030 Previous Release: 10031 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 10032 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 10033 Current Release: 10034 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10035 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10036 10037 100382) iASL Compiler/Disassembler and Tools: 10039 10040No changes for this release. 10041 10042---------------------------------------- 1004307 July 2006. Summary of changes for version 20060707: 10044 100451) ACPI CA Core Subsystem: 10046 10047Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 10048that do not allow the initialization of address pointers within packed 10049structures - even though the hardware itself may support misaligned 10050transfers. Some of the debug data structures are packed by default to 10051minimize size. 10052 10053Added an error message for the case where AcpiOsGetThreadId() returns 10054zero. 10055A non-zero value is required by the core ACPICA code to ensure the proper 10056operation of AML mutexes and recursive control methods. 10057 10058The DSDT is now the only ACPI table that determines whether the AML 10059interpreter is in 32-bit or 64-bit mode. Not really a functional change, 10060but 10061the hooks for per-table 32/64 switching have been removed from the code. 10062A 10063clarification to the ACPI specification is forthcoming in ACPI 3.0B. 10064 10065Fixed a possible leak of an OwnerID in the error path of 10066AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 10067deletion to a single place in AcpiTbUninstallTable to correct possible 10068leaks 10069when using the AcpiTbDeleteTablesByType interface (with assistance from 10070Lance Ortiz.) 10071 10072Fixed a problem with Serialized control methods where the semaphore 10073associated with the method could be over-signaled after multiple method 10074invocations. 10075 10076Fixed two issues with the locking of the internal namespace data 10077structure. 10078Both the Unload() operator and AcpiUnloadTable interface now lock the 10079namespace during the namespace deletion associated with the table unload 10080(with assistance from Linn Crosetto.) 10081 10082Fixed problem reports (Valery Podrezov) integrated: 10083- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 10084 10085Fixed problem reports (Fiodor Suietov) integrated: 10086- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 10087- On Address Space handler deletion, needless deactivation call (BZ 374) 10088- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 10089375) 10090- Possible memory leak, Notify sub-objects of Processor, Power, 10091ThermalZone 10092(BZ 376) 10093- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 10094- Minimum Length of RSDT should be validated (BZ 379) 10095- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 10096Handler (BZ (380) 10097- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 10098loaded 10099(BZ 381) 10100 10101Example Code and Data Size: These are the sizes for the OS-independent 10102acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10103debug version of the code includes the debug output trace mechanism and 10104has 10105a much larger code and data size. 10106 10107 Previous Release: 10108 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10109 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10110 Current Release: 10111 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10112 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10113 10114 101152) iASL Compiler/Disassembler and Tools: 10116 10117Fixed problem reports: 10118Compiler segfault when ASL contains a long (>1024) String declaration (BZ 10119436) 10120 10121---------------------------------------- 1012223 June 2006. Summary of changes for version 20060623: 10123 101241) ACPI CA Core Subsystem: 10125 10126Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 10127allows the type to be customized to the host OS for improved efficiency 10128(since a spinlock is usually a very small object.) 10129 10130Implemented support for "ignored" bits in the ACPI registers. According 10131to 10132the ACPI specification, these bits should be preserved when writing the 10133registers via a read/modify/write cycle. There are 3 bits preserved in 10134this 10135manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 10136 10137Implemented the initial deployment of new OSL mutex interfaces. Since 10138some 10139host operating systems have separate mutex and semaphore objects, this 10140feature was requested. The base code now uses mutexes (and the new mutex 10141interfaces) wherever a binary semaphore was used previously. However, for 10142the current release, the mutex interfaces are defined as macros to map 10143them 10144to the existing semaphore interfaces. Therefore, no OSL changes are 10145required 10146at this time. (See acpiosxf.h) 10147 10148Fixed several problems with the support for the control method SyncLevel 10149parameter. The SyncLevel now works according to the ACPI specification 10150and 10151in concert with the Mutex SyncLevel parameter, since the current 10152SyncLevel 10153is a property of the executing thread. Mutual exclusion for control 10154methods 10155is now implemented with a mutex instead of a semaphore. 10156 10157Fixed three instances of the use of the C shift operator in the bitfield 10158support code (exfldio.c) to avoid the use of a shift value larger than 10159the 10160target data width. The behavior of C compilers is undefined in this case 10161and 10162can cause unpredictable results, and therefore the case must be detected 10163and 10164avoided. (Fiodor Suietov) 10165 10166Added an info message whenever an SSDT or OEM table is loaded dynamically 10167via the Load() or LoadTable() ASL operators. This should improve 10168debugging 10169capability since it will show exactly what tables have been loaded 10170(beyond 10171the tables present in the RSDT/XSDT.) 10172 10173Example Code and Data Size: These are the sizes for the OS-independent 10174acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10175debug version of the code includes the debug output trace mechanism and 10176has 10177a much larger code and data size. 10178 10179 Previous Release: 10180 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10181 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10182 Current Release: 10183 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10184 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10185 10186 101872) iASL Compiler/Disassembler and Tools: 10188 10189No changes for this release. 10190 10191---------------------------------------- 1019208 June 2006. Summary of changes for version 20060608: 10193 101941) ACPI CA Core Subsystem: 10195 10196Converted the locking mutex used for the ACPI hardware to a spinlock. 10197This 10198change should eliminate all problems caused by attempting to acquire a 10199semaphore at interrupt level, and it means that all ACPICA external 10200interfaces that directly access the ACPI hardware can be safely called 10201from 10202interrupt level. OSL code that implements the semaphore interfaces should 10203be 10204able to eliminate any workarounds for being called at interrupt level. 10205 10206Fixed a regression introduced in 20060526 where the ACPI device 10207initialization could be prematurely aborted with an AE_NOT_FOUND if a 10208device 10209did not have an optional _INI method. 10210 10211Fixed an IndexField issue where a write to the Data Register should be 10212limited in size to the AccessSize (width) of the IndexField itself. (BZ 10213433, 10214Fiodor Suietov) 10215 10216Fixed problem reports (Valery Podrezov) integrated: 10217- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 10218 10219Fixed problem reports (Fiodor Suietov) integrated: 10220- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 10221 10222Removed four global mutexes that were obsolete and were no longer being 10223used. 10224 10225Example Code and Data Size: These are the sizes for the OS-independent 10226acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10227debug version of the code includes the debug output trace mechanism and 10228has 10229a much larger code and data size. 10230 10231 Previous Release: 10232 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 10233 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 10234 Current Release: 10235 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10236 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10237 10238 102392) iASL Compiler/Disassembler and Tools: 10240 10241Fixed a fault when using -g option (get tables from registry) on Windows 10242machines. 10243 10244Fixed problem reports integrated: 10245- Generate error if CreateField NumBits parameter is zero. (BZ 405) 10246- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 10247Suietov) 10248- Global table revision override (-r) is ignored (BZ 413) 10249 10250---------------------------------------- 1025126 May 2006. Summary of changes for version 20060526: 10252 102531) ACPI CA Core Subsystem: 10254 10255Restructured, flattened, and simplified the internal interfaces for 10256namespace object evaluation - resulting in smaller code, less CPU stack 10257use, 10258and fewer interfaces. (With assistance from Mikhail Kouzmich) 10259 10260Fixed a problem with the CopyObject operator where the first parameter 10261was 10262not typed correctly for the parser, interpreter, compiler, and 10263disassembler. 10264Caused various errors and unexpected behavior. 10265 10266Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 10267produced incorrect results with some C compilers. Since the behavior of C 10268compilers when the shift value is larger than the datatype width is 10269apparently not well defined, the interpreter now detects this condition 10270and 10271simply returns zero as expected in all such cases. (BZ 395) 10272 10273Fixed problem reports (Valery Podrezov) integrated: 10274- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 10275- Allow interpreter to handle nested method declarations (BZ 5361) 10276 10277Fixed problem reports (Fiodor Suietov) integrated: 10278- AcpiTerminate doesn't free debug memory allocation list objects (BZ 10279355) 10280- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 10281356) 10282- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 10283- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 10284- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 10285- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 10286- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 10287- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 10288- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 10289365) 10290- Status of the Global Initialization Handler call not used (BZ 366) 10291- Incorrect object parameter to Global Initialization Handler (BZ 367) 10292 10293Example Code and Data Size: These are the sizes for the OS-independent 10294acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10295debug version of the code includes the debug output trace mechanism and 10296has 10297a much larger code and data size. 10298 10299 Previous Release: 10300 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 10301 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 10302 Current Release: 10303 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 10304 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 10305 10306 103072) iASL Compiler/Disassembler and Tools: 10308 10309Modified the parser to allow the names IO, DMA, and IRQ to be used as 10310namespace identifiers with no collision with existing resource descriptor 10311macro names. This provides compatibility with other ASL compilers and is 10312most useful for disassembly/recompilation of existing tables without 10313parse 10314errors. (With assistance from Thomas Renninger) 10315 10316Disassembler: fixed an incorrect disassembly problem with the 10317DataTableRegion and CopyObject operators. Fixed a possible fault during 10318disassembly of some Alias operators. 10319 10320---------------------------------------- 1032112 May 2006. Summary of changes for version 20060512: 10322 103231) ACPI CA Core Subsystem: 10324 10325Replaced the AcpiOsQueueForExecution interface with a new interface named 10326AcpiOsExecute. The major difference is that the new interface does not 10327have 10328a Priority parameter, this appeared to be useless and has been replaced 10329by 10330a 10331Type parameter. The Type tells the host what type of execution is being 10332requested, such as global lock handler, notify handler, GPE handler, etc. 10333This allows the host to queue and execute the request as appropriate for 10334the 10335request type, possibly using different work queues and different 10336priorities 10337for the various request types. This enables fixes for multithreading 10338deadlock problems such as BZ #5534, and will require changes to all 10339existing 10340OS interface layers. (Alexey Starikovskiy and Bob Moore) 10341 10342Fixed a possible memory leak associated with the support for the so- 10343called 10344"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 10345Suietov) 10346 10347Fixed a problem with the Load() operator where a table load from an 10348operation region could overwrite an internal table buffer by up to 7 10349bytes 10350and cause alignment faults on IPF systems. (With assistance from Luming 10351Yu) 10352 10353Example Code and Data Size: These are the sizes for the OS-independent 10354acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10355debug version of the code includes the debug output trace mechanism and 10356has 10357a much larger code and data size. 10358 10359 Previous Release: 10360 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 10361 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 10362 Current Release: 10363 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 10364 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 10365 10366 10367 103682) iASL Compiler/Disassembler and Tools: 10369 10370Disassembler: Implemented support to cross reference the internal 10371namespace 10372and automatically generate ASL External() statements for symbols not 10373defined 10374within the current table being disassembled. This will simplify the 10375disassembly and recompilation of interdependent tables such as SSDTs 10376since 10377these statements will no longer have to be added manually. 10378 10379Disassembler: Implemented experimental support to automatically detect 10380invocations of external control methods and generate appropriate 10381External() 10382statements. This is problematic because the AML cannot be correctly 10383parsed 10384until the number of arguments for each control method is known. 10385Currently, 10386standalone method invocations and invocations as the source operand of a 10387Store() statement are supported. 10388 10389Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 10390LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 10391LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 10392more readable and likely closer to the original ASL source. 10393 10394---------------------------------------- 1039521 April 2006. Summary of changes for version 20060421: 10396 103971) ACPI CA Core Subsystem: 10398 10399Removed a device initialization optimization introduced in 20051216 where 10400the _STA method was not run unless an _INI was also present for the same 10401device. This optimization could cause problems because it could allow 10402_INI 10403methods to be run within a not-present device subtree. (If a not-present 10404device had no _INI, _STA would not be run, the not-present status would 10405not 10406be discovered, and the children of the device would be incorrectly 10407traversed.) 10408 10409Implemented a new _STA optimization where namespace subtrees that do not 10410contain _INI are identified and ignored during device initialization. 10411Selectively running _STA can significantly improve boot time on large 10412machines (with assistance from Len Brown.) 10413 10414Implemented support for the device initialization case where the returned 10415_STA flags indicate a device not-present but functioning. In this case, 10416_INI 10417is not run, but the device children are examined for presence, as per the 10418ACPI specification. 10419 10420Implemented an additional change to the IndexField support in order to 10421conform to MS behavior. The value written to the Index Register is not 10422simply a byte offset, it is a byte offset in units of the access width of 10423the parent Index Field. (Fiodor Suietov) 10424 10425Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 10426interface is called during the creation of all AML operation regions, and 10427allows the host OS to exert control over what addresses it will allow the 10428AML code to access. Operation Regions whose addresses are disallowed will 10429cause a runtime exception when they are actually accessed (will not 10430affect 10431or abort table loading.) See oswinxf or osunixxf for an example 10432implementation. 10433 10434Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 10435interface allows the host OS to match the various "optional" 10436interface/behavior strings for the _OSI predefined control method as 10437appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 10438for an example implementation. 10439 10440Restructured and corrected various problems in the exception handling 10441code 10442paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 10443(with assistance from Takayoshi Kochi.) 10444 10445Modified the Linux source converter to ignore quoted string literals 10446while 10447converting identifiers from mixed to lower case. This will correct 10448problems 10449with the disassembler and other areas where such strings must not be 10450modified. 10451 10452The ACPI_FUNCTION_* macros no longer require quotes around the function 10453name. This allows the Linux source converter to convert the names, now 10454that 10455the converter ignores quoted strings. 10456 10457Example Code and Data Size: These are the sizes for the OS-independent 10458acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10459debug version of the code includes the debug output trace mechanism and 10460has 10461a much larger code and data size. 10462 10463 Previous Release: 10464 10465 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 10466 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 10467 Current Release: 10468 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 10469 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 10470 10471 104722) iASL Compiler/Disassembler and Tools: 10473 10474Implemented 3 new warnings for iASL, and implemented multiple warning 10475levels 10476(w2 flag). 10477 104781) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 10479not 10480WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 10481check for the possible timeout, a warning is issued. 10482 104832) Useless operators: If an ASL operator does not specify an optional 10484target 10485operand and it also does not use the function return value from the 10486operator, a warning is issued since the operator effectively does 10487nothing. 10488 104893) Unreferenced objects: If a namespace object is created, but never 10490referenced, a warning is issued. This is a warning level 2 since there 10491are 10492cases where this is ok, such as when a secondary table is loaded that 10493uses 10494the unreferenced objects. Even so, care is taken to only flag objects 10495that 10496don't look like they will ever be used. For example, the reserved methods 10497(starting with an underscore) are usually not referenced because it is 10498expected that the OS will invoke them. 10499 10500---------------------------------------- 1050131 March 2006. Summary of changes for version 20060331: 10502 105031) ACPI CA Core Subsystem: 10504 10505Implemented header file support for the following additional ACPI tables: 10506ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 10507support, 10508all current and known ACPI tables are now defined in the ACPICA headers 10509and 10510are available for use by device drivers and other software. 10511 10512Implemented support to allow tables that contain ACPI names with invalid 10513characters to be loaded. Previously, this would cause the table load to 10514fail, but since there are several known cases of such tables on existing 10515machines, this change was made to enable ACPI support for them. Also, 10516this 10517matches the behavior of the Microsoft ACPI implementation. 10518 10519Fixed a couple regressions introduced during the memory optimization in 10520the 1052120060317 release. The namespace node definition required additional 10522reorganization and an internal datatype that had been changed to 8-bit 10523was 10524restored to 32-bit. (Valery Podrezov) 10525 10526Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 10527could be passed through to AcpiOsReleaseObject which is unexpected. Such 10528null pointers are now trapped and ignored, matching the behavior of the 10529previous implementation before the deployment of AcpiOsReleaseObject. 10530(Valery Podrezov, Fiodor Suietov) 10531 10532Fixed a memory mapping leak during the deletion of a SystemMemory 10533operation 10534region where a cached memory mapping was not deleted. This became a 10535noticeable problem for operation regions that are defined within 10536frequently 10537used control methods. (Dana Meyers) 10538 10539Reorganized the ACPI table header files into two main files: one for the 10540ACPI tables consumed by the ACPICA core, and another for the 10541miscellaneous 10542ACPI tables that are consumed by the drivers and other software. The 10543various 10544FADT definitions were merged into one common section and three different 10545tables (ACPI 1.0, 1.0+, and 2.0) 10546 10547Example Code and Data Size: These are the sizes for the OS-independent 10548acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10549debug version of the code includes the debug output trace mechanism and 10550has 10551a much larger code and data size. 10552 10553 Previous Release: 10554 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 10555 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 10556 Current Release: 10557 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 10558 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 10559 10560 105612) iASL Compiler/Disassembler and Tools: 10562 10563Disassembler: Implemented support to decode and format all non-AML ACPI 10564tables (tables other than DSDTs and SSDTs.) This includes the new tables 10565added to the ACPICA headers, therefore all current and known ACPI tables 10566are 10567supported. 10568 10569Disassembler: The change to allow ACPI names with invalid characters also 10570enables the disassembly of such tables. Invalid characters within names 10571are 10572changed to '*' to make the name printable; the iASL compiler will still 10573generate an error for such names, however, since this is an invalid ACPI 10574character. 10575 10576Implemented an option for AcpiXtract (-a) to extract all tables found in 10577the 10578input file. The default invocation extracts only the DSDTs and SSDTs. 10579 10580Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 10581makefile for the AcpiXtract utility. 10582 10583---------------------------------------- 1058417 March 2006. Summary of changes for version 20060317: 10585 105861) ACPI CA Core Subsystem: 10587 10588Implemented the use of a cache object for all internal namespace nodes. 10589Since there are about 1000 static nodes in a typical system, this will 10590decrease memory use for cache implementations that minimize per- 10591allocation 10592overhead (such as a slab allocator.) 10593 10594Removed the reference count mechanism for internal namespace nodes, since 10595it 10596was deemed unnecessary. This reduces the size of each namespace node by 10597about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 10598case, 10599and 32 bytes for the 64-bit case. 10600 10601Optimized several internal data structures to reduce object size on 64- 10602bit 10603platforms by packing data within the 64-bit alignment. This includes the 10604frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 10605instances corresponding to the namespace objects. 10606 10607Added two new strings for the predefined _OSI method: "Windows 2001.1 10608SP1" 10609and "Windows 2006". 10610 10611Split the allocation tracking mechanism out to a separate file, from 10612utalloc.c to uttrack.c. This mechanism appears to be only useful for 10613application-level code. Kernels may wish to not include uttrack.c in 10614distributions. 10615 10616Removed all remnants of the obsolete ACPI_REPORT_* macros and the 10617associated 10618code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 10619macros.) 10620 10621Code and Data Size: These are the sizes for the acpica.lib produced by 10622the 10623Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10624ACPI 10625driver or OSPM code. The debug version of the code includes the debug 10626output 10627trace mechanism and has a much larger code and data size. Note that these 10628values will vary depending on the efficiency of the compiler and the 10629compiler options used during generation. 10630 10631 Previous Release: 10632 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10633 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 10634 Current Release: 10635 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 10636 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 10637 10638 106392) iASL Compiler/Disassembler and Tools: 10640 10641Implemented an ANSI C version of the acpixtract utility. This version 10642will 10643automatically extract the DSDT and all SSDTs from the input acpidump text 10644file and dump the binary output to separate files. It can also display a 10645summary of the input file including the headers for each table found and 10646will extract any single ACPI table, with any signature. (See 10647source/tools/acpixtract) 10648 10649---------------------------------------- 1065010 March 2006. Summary of changes for version 20060310: 10651 106521) ACPI CA Core Subsystem: 10653 10654Tagged all external interfaces to the subsystem with the new 10655ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 10656assist 10657kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 10658macro. The default definition is NULL. 10659 10660Added the ACPI_THREAD_ID type for the return value from 10661AcpiOsGetThreadId. 10662This allows the host to define this as necessary to simplify kernel 10663integration. The default definition is ACPI_NATIVE_UINT. 10664 10665Fixed two interpreter problems related to error processing, the deletion 10666of 10667objects, and placing invalid pointers onto the internal operator result 10668stack. BZ 6028, 6151 (Valery Podrezov) 10669 10670Increased the reference count threshold where a warning is emitted for 10671large 10672reference counts in order to eliminate unnecessary warnings on systems 10673with 10674large namespaces (especially 64-bit.) Increased the value from 0x400 to 106750x800. 10676 10677Due to universal disagreement as to the meaning of the 'c' in the 10678calloc() 10679function, the ACPI_MEM_CALLOCATE macro has been renamed to 10680ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 10681ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 10682ACPI_FREE. 10683 10684Code and Data Size: These are the sizes for the acpica.lib produced by 10685the 10686Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10687ACPI 10688driver or OSPM code. The debug version of the code includes the debug 10689output 10690trace mechanism and has a much larger code and data size. Note that these 10691values will vary depending on the efficiency of the compiler and the 10692compiler options used during generation. 10693 10694 Previous Release: 10695 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 10696 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 10697 Current Release: 10698 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10699 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 10700 10701 107022) iASL Compiler/Disassembler: 10703 10704Disassembler: implemented support for symbolic resource descriptor 10705references. If a CreateXxxxField operator references a fixed offset 10706within 10707a 10708resource descriptor, a name is assigned to the descriptor and the offset 10709is 10710translated to the appropriate resource tag and pathname. The addition of 10711this support brings the disassembled code very close to the original ASL 10712source code and helps eliminate run-time errors when the disassembled 10713code 10714is modified (and recompiled) in such a way as to invalidate the original 10715fixed offsets. 10716 10717Implemented support for a Descriptor Name as the last parameter to the 10718ASL 10719Register() macro. This parameter was inadvertently left out of the ACPI 10720specification, and will be added for ACPI 3.0b. 10721 10722Fixed a problem where the use of the "_OSI" string (versus the full path 10723"\_OSI") caused an internal compiler error. ("No back ptr to op") 10724 10725Fixed a problem with the error message that occurs when an invalid string 10726is 10727used for a _HID object (such as one with an embedded asterisk: 10728"*PNP010A".) 10729The correct message is now displayed. 10730 10731---------------------------------------- 1073217 February 2006. Summary of changes for version 20060217: 10733 107341) ACPI CA Core Subsystem: 10735 10736Implemented a change to the IndexField support to match the behavior of 10737the 10738Microsoft AML interpreter. The value written to the Index register is now 10739a 10740byte offset, no longer an index based upon the width of the Data 10741register. 10742This should fix IndexField problems seen on some machines where the Data 10743register is not exactly one byte wide. The ACPI specification will be 10744clarified on this point. 10745 10746Fixed a problem where several resource descriptor types could overrun the 10747internal descriptor buffer due to size miscalculation: VendorShort, 10748VendorLong, and Interrupt. This was noticed on IA64 machines, but could 10749affect all platforms. 10750 10751Fixed a problem where individual resource descriptors were misaligned 10752within 10753the internal buffer, causing alignment faults on IA64 platforms. 10754 10755Code and Data Size: These are the sizes for the acpica.lib produced by 10756the 10757Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10758ACPI 10759driver or OSPM code. The debug version of the code includes the debug 10760output 10761trace mechanism and has a much larger code and data size. Note that these 10762values will vary depending on the efficiency of the compiler and the 10763compiler options used during generation. 10764 10765 Previous Release: 10766 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10767 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 10768 Current Release: 10769 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 10770 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 10771 10772 107732) iASL Compiler/Disassembler: 10774 10775Implemented support for new reserved names: _WDG and _WED are Microsoft 10776extensions for Windows Instrumentation Management, _TDL is a new ACPI- 10777defined method (Throttling Depth Limit.) 10778 10779Fixed a problem where a zero-length VendorShort or VendorLong resource 10780descriptor was incorrectly emitted as a descriptor of length one. 10781 10782---------------------------------------- 1078310 February 2006. Summary of changes for version 20060210: 10784 107851) ACPI CA Core Subsystem: 10786 10787Removed a couple of extraneous ACPI_ERROR messages that appeared during 10788normal execution. These became apparent after the conversion from 10789ACPI_DEBUG_PRINT. 10790 10791Fixed a problem where the CreateField operator could hang if the BitIndex 10792or 10793NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 10794 10795Fixed a problem where a DeRefOf operation on a buffer object incorrectly 10796failed with an exception. This also fixes a couple of related RefOf and 10797DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 10798 10799Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 10800of 10801AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 10802BZ 108035480) 10804 10805Implemented a memory cleanup at the end of the execution of each 10806iteration 10807of an AML While() loop, preventing the accumulation of outstanding 10808objects. 10809(Valery Podrezov, BZ 5427) 10810 10811Eliminated a chunk of duplicate code in the object resolution code. 10812(Valery 10813Podrezov, BZ 5336) 10814 10815Fixed several warnings during the 64-bit code generation. 10816 10817The AcpiSrc source code conversion tool now inserts one line of 10818whitespace 10819after an if() statement that is followed immediately by a comment, 10820improving 10821readability of the Linux code. 10822 10823Code and Data Size: The current and previous library sizes for the core 10824subsystem are shown below. These are the code and data sizes for the 10825acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10826These 10827values do not include any ACPI driver or OSPM code. The debug version of 10828the 10829code includes the debug output trace mechanism and has a much larger code 10830and data size. Note that these values will vary depending on the 10831efficiency 10832of the compiler and the compiler options used during generation. 10833 10834 Previous Release: 10835 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 10836 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 10837 Current Release: 10838 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10839 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 10840 10841 108422) iASL Compiler/Disassembler: 10843 10844Fixed a problem with the disassembly of a BankField operator with a 10845complex 10846expression for the BankValue parameter. 10847 10848---------------------------------------- 1084927 January 2006. Summary of changes for version 20060127: 10850 108511) ACPI CA Core Subsystem: 10852 10853Implemented support in the Resource Manager to allow unresolved 10854namestring 10855references within resource package objects for the _PRT method. This 10856support 10857is in addition to the previously implemented unresolved reference support 10858within the AML parser. If the interpreter slack mode is enabled, these 10859unresolved references will be passed through to the caller as a NULL 10860package 10861entry. 10862 10863Implemented and deployed new macros and functions for error and warning 10864messages across the subsystem. These macros are simpler and generate less 10865code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 10866ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 10867macros remain defined to allow ACPI drivers time to migrate to the new 10868macros. 10869 10870Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 10871the 10872Acquire/Release Lock OSL interfaces. 10873 10874Fixed a problem where Alias ASL operators are sometimes not correctly 10875resolved, in both the interpreter and the iASL compiler. 10876 10877Fixed several problems with the implementation of the 10878ConcatenateResTemplate 10879ASL operator. As per the ACPI specification, zero length buffers are now 10880treated as a single EndTag. One-length buffers always cause a fatal 10881exception. Non-zero length buffers that do not end with a full 2-byte 10882EndTag 10883cause a fatal exception. 10884 10885Fixed a possible structure overwrite in the AcpiGetObjectInfo external 10886interface. (With assistance from Thomas Renninger) 10887 10888Code and Data Size: The current and previous library sizes for the core 10889subsystem are shown below. These are the code and data sizes for the 10890acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10891These 10892values do not include any ACPI driver or OSPM code. The debug version of 10893the 10894code includes the debug output trace mechanism and has a much larger code 10895and data size. Note that these values will vary depending on the 10896efficiency 10897of the compiler and the compiler options used during generation. 10898 10899 Previous Release: 10900 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 10901 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 10902 Current Release: 10903 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 10904 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 10905 10906 109072) iASL Compiler/Disassembler: 10908 10909Fixed an internal error that was generated for any forward references to 10910ASL 10911Alias objects. 10912 10913---------------------------------------- 1091413 January 2006. Summary of changes for version 20060113: 10915 109161) ACPI CA Core Subsystem: 10917 10918Added 2006 copyright to all module headers and signons. This affects 10919virtually every file in the ACPICA core subsystem, iASL compiler, and the 10920utilities. 10921 10922Enhanced the ACPICA error reporting in order to simplify user migration 10923to 10924the non-debug version of ACPICA. Replaced all instances of the 10925ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 10926debug 10927levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 10928respectively. This preserves all error and warning messages in the non- 10929debug 10930version of the ACPICA code (this has been referred to as the "debug lite" 10931option.) Over 200 cases were converted to create a total of over 380 10932error/warning messages across the ACPICA code. This increases the code 10933and 10934data size of the default non-debug version of the code somewhat (about 1093513K), 10936but all error/warning reporting may be disabled if desired (and code 10937eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 10938configuration option. The size of the debug version of ACPICA remains 10939about 10940the same. 10941 10942Fixed a memory leak within the AML Debugger "Set" command. One object was 10943not properly deleted for every successful invocation of the command. 10944 10945Code and Data Size: The current and previous library sizes for the core 10946subsystem are shown below. These are the code and data sizes for the 10947acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10948These 10949values do not include any ACPI driver or OSPM code. The debug version of 10950the 10951code includes the debug output trace mechanism and has a much larger code 10952and data size. Note that these values will vary depending on the 10953efficiency 10954of the compiler and the compiler options used during generation. 10955 10956 Previous Release: 10957 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 10958 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 10959 Current Release: 10960 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 10961 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 10962 10963 109642) iASL Compiler/Disassembler: 10965 10966The compiler now officially supports the ACPI 3.0a specification that was 10967released on December 30, 2005. (Specification is available at 10968www.acpi.info) 10969 10970---------------------------------------- 1097116 December 2005. Summary of changes for version 20051216: 10972 109731) ACPI CA Core Subsystem: 10974 10975Implemented optional support to allow unresolved names within ASL Package 10976objects. A null object is inserted in the package when a named reference 10977cannot be located in the current namespace. Enabled via the interpreter 10978slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 10979machines 10980that contain such code. 10981 10982Implemented an optimization to the initialization sequence that can 10983improve 10984boot time. During ACPI device initialization, the _STA method is now run 10985if 10986and only if the _INI method exists. The _STA method is used to determine 10987if 10988the device is present; An _INI can only be run if _STA returns present, 10989but 10990it is a waste of time to run the _STA method if the _INI does not exist. 10991(Prototype and assistance from Dong Wei) 10992 10993Implemented use of the C99 uintptr_t for the pointer casting macros if it 10994is 10995available in the current compiler. Otherwise, the default (void *) cast 10996is 10997used as before. 10998 10999Fixed some possible memory leaks found within the execution path of the 11000Break, Continue, If, and CreateField operators. (Valery Podrezov) 11001 11002Fixed a problem introduced in the 20051202 release where an exception is 11003generated during method execution if a control method attempts to declare 11004another method. 11005 11006Moved resource descriptor string constants that are used by both the AML 11007disassembler and AML debugger to the common utilities directory so that 11008these components are independent. 11009 11010Implemented support in the AcpiExec utility (-e switch) to globally 11011ignore 11012exceptions during control method execution (method is not aborted.) 11013 11014Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 11015generation. 11016 11017Code and Data Size: The current and previous library sizes for the core 11018subsystem are shown below. These are the code and data sizes for the 11019acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11020These 11021values do not include any ACPI driver or OSPM code. The debug version of 11022the 11023code includes the debug output trace mechanism and has a much larger code 11024and data size. Note that these values will vary depending on the 11025efficiency 11026of the compiler and the compiler options used during generation. 11027 11028 Previous 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 Current Release: 11032 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 11033 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 11034 11035 110362) iASL Compiler/Disassembler: 11037 11038Fixed a problem where a CPU stack overflow fault could occur if a 11039recursive 11040method call was made from within a Return statement. 11041 11042---------------------------------------- 1104302 December 2005. Summary of changes for version 20051202: 11044 110451) ACPI CA Core Subsystem: 11046 11047Modified the parsing of control methods to no longer create namespace 11048objects during the first pass of the parse. Objects are now created only 11049during the execute phase, at the moment the namespace creation operator 11050is 11051encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 11052This 11053should eliminate ALREADY_EXISTS exceptions seen on some machines where 11054reentrant control methods are protected by an AML mutex. The mutex will 11055now 11056correctly block multiple threads from attempting to create the same 11057object 11058more than once. 11059 11060Increased the number of available Owner Ids for namespace object tracking 11061from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 11062on 11063some machines with a large number of ACPI tables (either static or 11064dynamic). 11065 11066Fixed a problem with the AcpiExec utility where a fault could occur when 11067the 11068-b switch (batch mode) is used. 11069 11070Enhanced the namespace dump routine to output the owner ID for each 11071namespace object. 11072 11073Code and Data Size: The current and previous library sizes for the core 11074subsystem are shown below. These are the code and data sizes for the 11075acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11076These 11077values do not include any ACPI driver or OSPM code. The debug version of 11078the 11079code includes the debug output trace mechanism and has a much larger code 11080and data size. Note that these values will vary depending on the 11081efficiency 11082of the compiler and the compiler options used during generation. 11083 11084 Previous Release: 11085 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11086 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11087 Current Release: 11088 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11089 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 11090 11091 110922) iASL Compiler/Disassembler: 11093 11094Fixed a parse error during compilation of certain Switch/Case constructs. 11095To 11096simplify the parse, the grammar now allows for multiple Default 11097statements 11098and this error is now detected and flagged during the analysis phase. 11099 11100Disassembler: The disassembly now includes the contents of the original 11101table header within a comment at the start of the file. This includes the 11102name and version of the original ASL compiler. 11103 11104---------------------------------------- 1110517 November 2005. Summary of changes for version 20051117: 11106 111071) ACPI CA Core Subsystem: 11108 11109Fixed a problem in the AML parser where the method thread count could be 11110decremented below zero if any errors occurred during the method parse 11111phase. 11112This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 11113machines. 11114This also fixed a related regression with the mechanism that detects and 11115corrects methods that cannot properly handle reentrancy (related to the 11116deployment of the new OwnerId mechanism.) 11117 11118Eliminated the pre-parsing of control methods (to detect errors) during 11119table load. Related to the problem above, this was causing unwind issues 11120if 11121any errors occurred during the parse, and it seemed to be overkill. A 11122table 11123load should not be aborted if there are problems with any single control 11124method, thus rendering this feature rather pointless. 11125 11126Fixed a problem with the new table-driven resource manager where an 11127internal 11128buffer overflow could occur for small resource templates. 11129 11130Implemented a new external interface, AcpiGetVendorResource. This 11131interface 11132will find and return a vendor-defined resource descriptor within a _CRS 11133or 11134_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 11135Helgaas. 11136 11137Removed the length limit (200) on string objects as per the upcoming ACPI 111383.0A specification. This affects the following areas of the interpreter: 111391) 11140any implicit conversion of a Buffer to a String, 2) a String object 11141result 11142of the ASL Concatentate operator, 3) the String object result of the ASL 11143ToString operator. 11144 11145Fixed a problem in the Windows OS interface layer (OSL) where a 11146WAIT_FOREVER 11147on a semaphore object would incorrectly timeout. This allows the 11148multithreading features of the AcpiExec utility to work properly under 11149Windows. 11150 11151Updated the Linux makefiles for the iASL compiler and AcpiExec to include 11152the recently added file named "utresrc.c". 11153 11154Code and Data Size: The current and previous library sizes for the core 11155subsystem are shown below. These are the code and data sizes for the 11156acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11157These 11158values do not include any ACPI driver or OSPM code. The debug version of 11159the 11160code includes the debug output trace mechanism and has a much larger code 11161and data size. Note that these values will vary depending on the 11162efficiency 11163of the compiler and the compiler options used during generation. 11164 11165 Previous Release: 11166 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11167 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11168 Current Release: 11169 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11170 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11171 11172 111732) iASL Compiler/Disassembler: 11174 11175Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 11176specification. For the iASL compiler, this means that string literals 11177within 11178the source ASL can be of any length. 11179 11180Enhanced the listing output to dump the AML code for resource descriptors 11181immediately after the ASL code for each descriptor, instead of in a block 11182at 11183the end of the entire resource template. 11184 11185Enhanced the compiler debug output to dump the entire original parse tree 11186constructed during the parse phase, before any transforms are applied to 11187the 11188tree. The transformed tree is dumped also. 11189 11190---------------------------------------- 1119102 November 2005. Summary of changes for version 20051102: 11192 111931) ACPI CA Core Subsystem: 11194 11195Modified the subsystem initialization sequence to improve GPE support. 11196The 11197GPE initialization has been split into two parts in order to defer 11198execution 11199of the _PRW methods (Power Resources for Wake) until after the hardware 11200is 11201fully initialized and the SCI handler is installed. This allows the _PRW 11202methods to access fields protected by the Global Lock. This will fix 11203systems 11204where a NO_GLOBAL_LOCK exception has been seen during initialization. 11205 11206Converted the ACPI internal object disassemble and display code within 11207the 11208AML debugger to fully table-driven operation, reducing code size and 11209increasing maintainability. 11210 11211Fixed a regression with the ConcatenateResTemplate() ASL operator 11212introduced 11213in the 20051021 release. 11214 11215Implemented support for "local" internal ACPI object types within the 11216debugger "Object" command and the AcpiWalkNamespace external interfaces. 11217These local types include RegionFields, BankFields, IndexFields, Alias, 11218and 11219reference objects. 11220 11221Moved common AML resource handling code into a new file, "utresrc.c". 11222This 11223code is shared by both the Resource Manager and the AML Debugger. 11224 11225Code and Data Size: The current and previous library sizes for the core 11226subsystem are shown below. These are the code and data sizes for the 11227acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11228These 11229values do not include any ACPI driver or OSPM code. The debug version of 11230the 11231code includes the debug output trace mechanism and has a much larger code 11232and data size. Note that these values will vary depending on the 11233efficiency 11234of the compiler and the compiler options used during generation. 11235 11236 Previous Release: 11237 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 11238 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 11239 Current Release: 11240 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11241 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11242 11243 112442) iASL Compiler/Disassembler: 11245 11246Fixed a problem with very large initializer lists (more than 4000 11247elements) 11248for both Buffer and Package objects where the parse stack could overflow. 11249 11250Enhanced the pre-compile source code scan for non-ASCII characters to 11251ignore 11252characters within comment fields. The scan is now always performed and is 11253no 11254longer optional, detecting invalid characters within a source file 11255immediately rather than during the parse phase or later. 11256 11257Enhanced the ASL grammar definition to force early reductions on all 11258list- 11259style grammar elements so that the overall parse stack usage is greatly 11260reduced. This should improve performance and reduce the possibility of 11261parse 11262stack overflow. 11263 11264Eliminated all reduce/reduce conflicts in the iASL parser generation. 11265Also, 11266with the addition of a %expected statement, the compiler generates from 11267source with no warnings. 11268 11269Fixed a possible segment fault in the disassembler if the input filename 11270does not contain a "dot" extension (Thomas Renninger). 11271 11272---------------------------------------- 1127321 October 2005. Summary of changes for version 20051021: 11274 112751) ACPI CA Core Subsystem: 11276 11277Implemented support for the EM64T and other x86-64 processors. This 11278essentially entails recognizing that these processors support non-aligned 11279memory transfers. Previously, all 64-bit processors were assumed to lack 11280hardware support for non-aligned transfers. 11281 11282Completed conversion of the Resource Manager to nearly full table-driven 11283operation. Specifically, the resource conversion code (convert AML to 11284internal format and the reverse) and the debug code to dump internal 11285resource descriptors are fully table-driven, reducing code and data size 11286and 11287improving maintainability. 11288 11289The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 11290word 11291on 64-bit processors instead of a fixed 32-bit word. (With assistance 11292from 11293Alexey Starikovskiy) 11294 11295Implemented support within the resource conversion code for the Type- 11296Specific byte within the various ACPI 3.0 *WordSpace macros. 11297 11298Fixed some issues within the resource conversion code for the type- 11299specific 11300flags for both Memory and I/O address resource descriptors. For Memory, 11301implemented support for the MTP and TTP flags. For I/O, split the TRS and 11302TTP flags into two separate fields. 11303 11304Code and Data Size: The current and previous library sizes for the core 11305subsystem are shown below. These are the code and data sizes for the 11306acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11307These 11308values do not include any ACPI driver or OSPM code. The debug version of 11309the 11310code includes the debug output trace mechanism and has a much larger code 11311and data size. Note that these values will vary depending on the 11312efficiency 11313of the compiler and the compiler options used during generation. 11314 11315 Previous Release: 11316 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 11317 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 11318 Current Release: 11319 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 11320 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 11321 11322 11323 113242) iASL Compiler/Disassembler: 11325 11326Relaxed a compiler restriction that disallowed a ResourceIndex byte if 11327the 11328corresponding ResourceSource string was not also present in a resource 11329descriptor declaration. This restriction caused problems with existing 11330AML/ASL code that includes the Index byte without the string. When such 11331AML 11332was disassembled, it could not be compiled without modification. Further, 11333the modified code created a resource template with a different size than 11334the 11335original, breaking code that used fixed offsets into the resource 11336template 11337buffer. 11338 11339Removed a recent feature of the disassembler to ignore a lone 11340ResourceIndex 11341byte. This byte is now emitted if present so that the exact AML can be 11342reproduced when the disassembled code is recompiled. 11343 11344Improved comments and text alignment for the resource descriptor code 11345emitted by the disassembler. 11346 11347Implemented disassembler support for the ACPI 3.0 AccessSize field within 11348a 11349Register() resource descriptor. 11350 11351---------------------------------------- 1135230 September 2005. Summary of changes for version 20050930: 11353 113541) ACPI CA Core Subsystem: 11355 11356Completed a major overhaul of the Resource Manager code - specifically, 11357optimizations in the area of the AML/internal resource conversion code. 11358The 11359code has been optimized to simplify and eliminate duplicated code, CPU 11360stack 11361use has been decreased by optimizing function parameters and local 11362variables, and naming conventions across the manager have been 11363standardized 11364for clarity and ease of maintenance (this includes function, parameter, 11365variable, and struct/typedef names.) The update may force changes in some 11366driver code, depending on how resources are handled by the host OS. 11367 11368All Resource Manager dispatch and information tables have been moved to a 11369single location for clarity and ease of maintenance. One new file was 11370created, named "rsinfo.c". 11371 11372The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 11373guarantee that the argument is not evaluated twice, making them less 11374prone 11375to macro side-effects. However, since there exists the possibility of 11376additional stack use if a particular compiler cannot optimize them (such 11377as 11378in the debug generation case), the original macros are optionally 11379available. 11380Note that some invocations of the return_VALUE macro may now cause size 11381mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 11382to 11383eliminate these. (From Randy Dunlap) 11384 11385Implemented a new mechanism to enable debug tracing for individual 11386control 11387methods. A new external interface, AcpiDebugTrace, is provided to enable 11388this mechanism. The intent is to allow the host OS to easily enable and 11389disable tracing for problematic control methods. This interface can be 11390easily exposed to a user or debugger interface if desired. See the file 11391psxface.c for details. 11392 11393AcpiUtCallocate will now return a valid pointer if a length of zero is 11394specified - a length of one is used and a warning is issued. This matches 11395the behavior of AcpiUtAllocate. 11396 11397Code and Data Size: The current and previous library sizes for the core 11398subsystem are shown below. These are the code and data sizes for the 11399acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11400These 11401values do not include any ACPI driver or OSPM code. The debug version of 11402the 11403code includes the debug output trace mechanism and has a much larger code 11404and data size. Note that these values will vary depending on the 11405efficiency 11406of the compiler and the compiler options used during generation. 11407 11408 Previous Release: 11409 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 11410 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 11411 Current Release: 11412 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 11413 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 11414 11415 114162) iASL Compiler/Disassembler: 11417 11418A remark is issued if the effective compile-time length of a package or 11419buffer is zero. Previously, this was a warning. 11420 11421---------------------------------------- 1142216 September 2005. Summary of changes for version 20050916: 11423 114241) ACPI CA Core Subsystem: 11425 11426Fixed a problem within the Resource Manager where support for the Generic 11427Register descriptor was not fully implemented. This descriptor is now 11428fully 11429recognized, parsed, disassembled, and displayed. 11430 11431Completely restructured the Resource Manager code to utilize table-driven 11432dispatch and lookup, eliminating many of the large switch() statements. 11433This 11434reduces overall subsystem code size and code complexity. Affects the 11435resource parsing and construction, disassembly, and debug dump output. 11436 11437Cleaned up and restructured the debug dump output for all resource 11438descriptors. Improved readability of the output and reduced code size. 11439 11440Fixed a problem where changes to internal data structures caused the 11441optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 11442 11443Code and Data Size: The current and previous library sizes for the core 11444subsystem are shown below. These are the code and data sizes for the 11445acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11446These 11447values do not include any ACPI driver or OSPM code. The debug version of 11448the 11449code includes the debug output trace mechanism and has a much larger code 11450and data size. Note that these values will vary depending on the 11451efficiency 11452of the compiler and the compiler options used during generation. 11453 11454 Previous Release: 11455 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 11456 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 11457 Current Release: 11458 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 11459 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 11460 11461 114622) iASL Compiler/Disassembler: 11463 11464Updated the disassembler to automatically insert an EndDependentFn() 11465macro 11466into the ASL stream if this macro is missing in the original AML code, 11467simplifying compilation of the resulting ASL module. 11468 11469Fixed a problem in the disassembler where a disassembled ResourceSource 11470string (within a large resource descriptor) was not surrounded by quotes 11471and 11472not followed by a comma, causing errors when the resulting ASL module was 11473compiled. Also, escape sequences within a ResourceSource string are now 11474handled correctly (especially "\\") 11475 11476---------------------------------------- 1147702 September 2005. Summary of changes for version 20050902: 11478 114791) ACPI CA Core Subsystem: 11480 11481Fixed a problem with the internal Owner ID allocation and deallocation 11482mechanisms for control method execution and recursive method invocation. 11483This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 11484messages seen on some systems. Recursive method invocation depth is 11485currently limited to 255. (Alexey Starikovskiy) 11486 11487Completely eliminated all vestiges of support for the "module-level 11488executable code" until this support is fully implemented and debugged. 11489This 11490should eliminate the NO_RETURN_VALUE exceptions seen during table load on 11491some systems that invoke this support. 11492 11493Fixed a problem within the resource manager code where the transaction 11494flags 11495for a 64-bit address descriptor were handled incorrectly in the type- 11496specific flag byte. 11497 11498Consolidated duplicate code within the address descriptor resource 11499manager 11500code, reducing overall subsystem code size. 11501 11502Fixed a fault when using the AML debugger "disassemble" command to 11503disassemble individual control methods. 11504 11505Removed references to the "release_current" directory within the Unix 11506release package. 11507 11508Code and Data Size: The current and previous core subsystem library sizes 11509are shown below. These are the code and data sizes for the acpica.lib 11510produced by the Microsoft Visual C++ 6.0 compiler. These values do not 11511include any ACPI driver or OSPM code. The debug version of the code 11512includes 11513the debug output trace mechanism and has a much larger code and data 11514size. 11515Note that these values will vary depending on the efficiency of the 11516compiler 11517and the compiler options used during generation. 11518 11519 Previous Release: 11520 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11521 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 11522 Current Release: 11523 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 11524 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 11525 11526 115272) iASL Compiler/Disassembler: 11528 11529Implemented an error check for illegal duplicate values in the interrupt 11530and 11531dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 11532Interrupt(). 11533 11534Implemented error checking for the Irq() and IrqNoFlags() macros to 11535detect 11536too many values in the interrupt list (16 max) and invalid values in the 11537list (range 0 - 15) 11538 11539The maximum length string literal within an ASL file is now restricted to 11540200 characters as per the ACPI specification. 11541 11542Fixed a fault when using the -ln option (generate namespace listing). 11543 11544Implemented an error check to determine if a DescriptorName within a 11545resource descriptor has already been used within the current scope. 11546 11547---------------------------------------- 1154815 August 2005. Summary of changes for version 20050815: 11549 115501) ACPI CA Core Subsystem: 11551 11552Implemented a full bytewise compare to determine if a table load request 11553is 11554attempting to load a duplicate table. The compare is performed if the 11555table 11556signatures and table lengths match. This will allow different tables with 11557the same OEM Table ID and revision to be loaded - probably against the 11558ACPI 11559specification, but discovered in the field nonetheless. 11560 11561Added the changes.txt logfile to each of the zipped release packages. 11562 11563Code and Data Size: Current and previous core subsystem library sizes are 11564shown below. These are the code and data sizes for the acpica.lib 11565produced 11566by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11567any ACPI driver or OSPM code. The debug version of the code includes the 11568debug output trace mechanism and has a much larger code and data size. 11569Note 11570that these values will vary depending on the efficiency of the compiler 11571and 11572the compiler options used during generation. 11573 11574 Previous Release: 11575 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11576 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 11577 Current Release: 11578 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11579 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 11580 11581 115822) iASL Compiler/Disassembler: 11583 11584Fixed a problem where incorrect AML code could be generated for Package 11585objects if optimization is disabled (via the -oa switch). 11586 11587Fixed a problem with where incorrect AML code is generated for variable- 11588length packages when the package length is not specified and the number 11589of 11590initializer values is greater than 255. 11591 11592 11593---------------------------------------- 1159429 July 2005. Summary of changes for version 20050729: 11595 115961) ACPI CA Core Subsystem: 11597 11598Implemented support to ignore an attempt to install/load a particular 11599ACPI 11600table more than once. Apparently there exists BIOS code that repeatedly 11601attempts to load the same SSDT upon certain events. With assistance from 11602Venkatesh Pallipadi. 11603 11604Restructured the main interface to the AML parser in order to correctly 11605handle all exceptional conditions. This will prevent leakage of the 11606OwnerId 11607resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 11608some 11609machines. With assistance from Alexey Starikovskiy. 11610 11611Support for "module level code" has been disabled in this version due to 11612a 11613number of issues that have appeared on various machines. The support can 11614be 11615enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 11616compilation. When the issues are fully resolved, the code will be enabled 11617by 11618default again. 11619 11620Modified the internal functions for debug print support to define the 11621FunctionName parameter as a (const char *) for compatibility with 11622compiler 11623built-in macros such as __FUNCTION__, etc. 11624 11625Linted the entire ACPICA source tree for both 32-bit and 64-bit. 11626 11627Implemented support to display an object count summary for the AML 11628Debugger 11629commands Object and Methods. 11630 11631Code and Data Size: Current and previous core subsystem library sizes are 11632shown below. These are the code and data sizes for the acpica.lib 11633produced 11634by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11635any ACPI driver or OSPM code. The debug version of the code includes the 11636debug output trace mechanism and has a much larger code and data size. 11637Note 11638that these values will vary depending on the efficiency of the compiler 11639and 11640the compiler options used during generation. 11641 11642 Previous Release: 11643 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 11644 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 11645 Current Release: 11646 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11647 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 11648 11649 116502) iASL Compiler/Disassembler: 11651 11652Fixed a regression that appeared in the 20050708 version of the compiler 11653where an error message was inadvertently emitted for invocations of the 11654_OSI 11655reserved control method. 11656 11657---------------------------------------- 1165808 July 2005. Summary of changes for version 20050708: 11659 116601) ACPI CA Core Subsystem: 11661 11662The use of the CPU stack in the debug version of the subsystem has been 11663considerably reduced. Previously, a debug structure was declared in every 11664function that used the debug macros. This structure has been removed in 11665favor of declaring the individual elements as parameters to the debug 11666functions. This reduces the cumulative stack use during nested execution 11667of 11668ACPI function calls at the cost of a small increase in the code size of 11669the 11670debug version of the subsystem. With assistance from Alexey Starikovskiy 11671and 11672Len Brown. 11673 11674Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 11675headers to define a macro that will return the current function name at 11676runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 11677by 11678the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 11679compiler-dependent header, the function name is saved on the CPU stack 11680(one 11681pointer per function.) This mechanism is used because apparently there 11682exists no standard ANSI-C defined macro that that returns the function 11683name. 11684 11685Redesigned and reimplemented the "Owner ID" mechanism used to track 11686namespace objects created/deleted by ACPI tables and control method 11687execution. A bitmap is now used to allocate and free the IDs, thus 11688solving 11689the wraparound problem present in the previous implementation. The size 11690of 11691the namespace node descriptor was reduced by 2 bytes as a result (Alexey 11692Starikovskiy). 11693 11694Removed the UINT32_BIT and UINT16_BIT types that were used for the 11695bitfield 11696flag definitions within the headers for the predefined ACPI tables. These 11697have been replaced by UINT8_BIT in order to increase the code portability 11698of 11699the subsystem. If the use of UINT8 remains a problem, we may be forced to 11700eliminate bitfields entirely because of a lack of portability. 11701 11702Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 11703This 11704is a frequently used function and this improvement increases the 11705performance 11706of the entire subsystem (Alexey Starikovskiy). 11707 11708Fixed several possible memory leaks and the inverse - premature object 11709deletion (Alexey Starikovskiy). 11710 11711Code and Data Size: Current and previous core subsystem library sizes are 11712shown below. These are the code and data sizes for the acpica.lib 11713produced 11714by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11715any ACPI driver or OSPM code. The debug version of the code includes the 11716debug output trace mechanism and has a much larger code and data size. 11717Note 11718that these values will vary depending on the efficiency of the compiler 11719and 11720the compiler options used during generation. 11721 11722 Previous Release: 11723 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 11724 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 11725 Current Release: 11726 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 11727 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 11728 11729---------------------------------------- 1173024 June 2005. Summary of changes for version 20050624: 11731 117321) ACPI CA Core Subsystem: 11733 11734Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 11735the host-defined cache object. This allows the OSL implementation to 11736define 11737and type this object in any manner desired, simplifying the OSL 11738implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 11739Linux, and should be defined in the OS-specific header file for other 11740operating systems as required. 11741 11742Changed the interface to AcpiOsAcquireObject to directly return the 11743requested object as the function return (instead of ACPI_STATUS.) This 11744change was made for performance reasons, since this is the purpose of the 11745interface in the first place. AcpiOsAcquireObject is now similar to the 11746AcpiOsAllocate interface. 11747 11748Implemented a new AML debugger command named Businfo. This command 11749displays 11750information about all devices that have an associate _PRT object. The 11751_ADR, 11752_HID, _UID, and _CID are displayed for these devices. 11753 11754Modified the initialization sequence in AcpiInitializeSubsystem to call 11755the 11756OSL interface AcpiOslInitialize first, before any local initialization. 11757This 11758change was required because the global initialization now calls OSL 11759interfaces. 11760 11761Enhanced the Dump command to display the entire contents of Package 11762objects 11763(including all sub-objects and their values.) 11764 11765Restructured the code base to split some files because of size and/or 11766because the code logically belonged in a separate file. New files are 11767listed 11768below. All makefiles and project files included in the ACPI CA release 11769have 11770been updated. 11771 utilities/utcache.c /* Local cache interfaces */ 11772 utilities/utmutex.c /* Local mutex support */ 11773 utilities/utstate.c /* State object support */ 11774 interpreter/parser/psloop.c /* Main AML parse loop */ 11775 11776Code and Data Size: Current and previous core subsystem library sizes are 11777shown below. These are the code and data sizes for the acpica.lib 11778produced 11779by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11780any ACPI driver or OSPM code. The debug version of the code includes the 11781debug output trace mechanism and has a much larger code and data size. 11782Note 11783that these values will vary depending on the efficiency of the compiler 11784and 11785the compiler options used during generation. 11786 11787 Previous Release: 11788 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 11789 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 11790 Current Release: 11791 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 11792 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 11793 11794 117952) iASL Compiler/Disassembler: 11796 11797Fixed a regression introduced in version 20050513 where the use of a 11798Package 11799object within a Case() statement caused a compile time exception. The 11800original behavior has been restored (a Match() operator is emitted.) 11801 11802---------------------------------------- 1180317 June 2005. Summary of changes for version 20050617: 11804 118051) ACPI CA Core Subsystem: 11806 11807Moved the object cache operations into the OS interface layer (OSL) to 11808allow 11809the host OS to handle these operations if desired (for example, the Linux 11810OSL will invoke the slab allocator). This support is optional; the 11811compile 11812time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 11813cache 11814code in the ACPI CA core. The new OSL interfaces are shown below. See 11815utalloc.c for an example implementation, and acpiosxf.h for the exact 11816interface definitions. With assistance from Alexey Starikovskiy. 11817 AcpiOsCreateCache 11818 AcpiOsDeleteCache 11819 AcpiOsPurgeCache 11820 AcpiOsAcquireObject 11821 AcpiOsReleaseObject 11822 11823Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 11824return 11825and restore a flags parameter. This fits better with many OS lock models. 11826Note: the current execution state (interrupt handler or not) is no longer 11827passed to these interfaces. If necessary, the OSL must determine this 11828state 11829by itself, a simple and fast operation. With assistance from Alexey 11830Starikovskiy. 11831 11832Fixed a problem in the ACPI table handling where a valid XSDT was assumed 11833present if the revision of the RSDP was 2 or greater. According to the 11834ACPI 11835specification, the XSDT is optional in all cases, and the table manager 11836therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 11837Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 11838contain 11839only the RSDT. 11840 11841Fixed an interpreter problem with the Mid() operator in the case of an 11842input 11843string where the resulting output string is of zero length. It now 11844correctly 11845returns a valid, null terminated string object instead of a string object 11846with a null pointer. 11847 11848Fixed a problem with the control method argument handling to allow a 11849store 11850to an Arg object that already contains an object of type Device. The 11851Device 11852object is now correctly overwritten. Previously, an error was returned. 11853 11854 11855Enhanced the debugger Find command to emit object values in addition to 11856the 11857found object pathnames. The output format is the same as the dump 11858namespace 11859command. 11860 11861Enhanced the debugger Set command. It now has the ability to set the 11862value 11863of any Named integer object in the namespace (Previously, only method 11864locals 11865and args could be set.) 11866 11867Code and Data Size: Current and previous core subsystem library sizes are 11868shown below. These are the code and data sizes for the acpica.lib 11869produced 11870by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11871any ACPI driver or OSPM code. The debug version of the code includes the 11872debug output trace mechanism and has a much larger code and data size. 11873Note 11874that these values will vary depending on the efficiency of the compiler 11875and 11876the compiler options used during generation. 11877 11878 Previous Release: 11879 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 11880 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 11881 Current Release: 11882 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 11883 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 11884 11885 118862) iASL Compiler/Disassembler: 11887 11888Fixed a regression in the disassembler where if/else/while constructs 11889were 11890output incorrectly. This problem was introduced in the previous release 11891(20050526). This problem also affected the single-step disassembly in the 11892debugger. 11893 11894Fixed a problem where compiling the reserved _OSI method would randomly 11895(but 11896rarely) produce compile errors. 11897 11898Enhanced the disassembler to emit compilable code in the face of 11899incorrect 11900AML resource descriptors. If the optional ResourceSourceIndex is present, 11901but the ResourceSource is not, do not emit the ResourceSourceIndex in the 11902disassembly. Otherwise, the resulting code cannot be compiled without 11903errors. 11904 11905---------------------------------------- 1190626 May 2005. Summary of changes for version 20050526: 11907 119081) ACPI CA Core Subsystem: 11909 11910Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 11911the module level (not within a control method.) These opcodes are 11912executed 11913exactly once at the time the table is loaded. This type of code was legal 11914up 11915until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 11916in 11917order to provide backwards compatibility with earlier BIOS 11918implementations. 11919This eliminates the "Encountered executable code at module level" warning 11920that was previously generated upon detection of such code. 11921 11922Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 11923inadvertently be generated during the lookup of namespace objects in the 11924second pass parse of ACPI tables and control methods. It appears that 11925this 11926problem could occur during the resolution of forward references to 11927namespace 11928objects. 11929 11930Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 11931corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 11932allows the deadlock detection debug code to be compiled out in the normal 11933case, improving mutex performance (and overall subsystem performance) 11934considerably. 11935 11936Implemented a handful of miscellaneous fixes for possible memory leaks on 11937error conditions and error handling control paths. These fixes were 11938suggested by FreeBSD and the Coverity Prevent source code analysis tool. 11939 11940Added a check for a null RSDT pointer in AcpiGetFirmwareTable 11941(tbxfroot.c) 11942to prevent a fault in this error case. 11943 11944Code and Data Size: Current and previous core subsystem library sizes are 11945shown below. These are the code and data sizes for the acpica.lib 11946produced 11947by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11948any ACPI driver or OSPM code. The debug version of the code includes the 11949debug output trace mechanism and has a much larger code and data size. 11950Note 11951that these values will vary depending on the efficiency of the compiler 11952and 11953the compiler options used during generation. 11954 11955 Previous Release: 11956 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11957 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11958 Current Release: 11959 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 11960 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 11961 11962 119632) iASL Compiler/Disassembler: 11964 11965Implemented support to allow Type 1 and Type 2 ASL operators to appear at 11966the module level (not within a control method.) These operators will be 11967executed once at the time the table is loaded. This type of code was 11968legal 11969up until the release of ACPI 2.0B (2002) and is now supported by the iASL 11970compiler in order to provide backwards compatibility with earlier BIOS 11971ASL 11972code. 11973 11974The ACPI integer width (specified via the table revision ID or the -r 11975override, 32 or 64 bits) is now used internally during compile-time 11976constant 11977folding to ensure that constants are truncated to 32 bits if necessary. 11978Previously, the revision ID value was only emitted in the AML table 11979header. 11980 11981An error message is now generated for the Mutex and Method operators if 11982the 11983SyncLevel parameter is outside the legal range of 0 through 15. 11984 11985Fixed a problem with the Method operator ParameterTypes list handling 11986(ACPI 119873.0). Previously, more than 2 types or 2 arguments generated a syntax 11988error. 11989The actual underlying implementation of method argument typechecking is 11990still under development, however. 11991 11992---------------------------------------- 1199313 May 2005. Summary of changes for version 20050513: 11994 119951) ACPI CA Core Subsystem: 11996 11997Implemented support for PCI Express root bridges -- added support for 11998device 11999PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 12000 12001The interpreter now automatically truncates incoming 64-bit constants to 1200232 12003bits if currently executing out of a 32-bit ACPI table (Revision < 2). 12004This 12005also affects the iASL compiler constant folding. (Note: as per below, the 12006iASL compiler no longer allows 64-bit constants within 32-bit tables.) 12007 12008Fixed a problem where string and buffer objects with "static" pointers 12009(pointers to initialization data within an ACPI table) were not handled 12010consistently. The internal object copy operation now always copies the 12011data 12012to a newly allocated buffer, regardless of whether the source object is 12013static or not. 12014 12015Fixed a problem with the FromBCD operator where an implicit result 12016conversion was improperly performed while storing the result to the 12017target 12018operand. Since this is an "explicit conversion" operator, the implicit 12019conversion should never be performed on the output. 12020 12021Fixed a problem with the CopyObject operator where a copy to an existing 12022named object did not always completely overwrite the existing object 12023stored 12024at name. Specifically, a buffer-to-buffer copy did not delete the 12025existing 12026buffer. 12027 12028Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 12029and 12030structs for consistency. 12031 12032Code and Data Size: Current and previous core subsystem library sizes are 12033shown below. These are the code and data sizes for the acpica.lib 12034produced 12035by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12036any ACPI driver or OSPM code. The debug version of the code includes the 12037debug output trace mechanism and has a much larger code and data size. 12038Note 12039that these values will vary depending on the efficiency of the compiler 12040and 12041the compiler options used during generation. 12042 12043 Previous Release: 12044 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12045 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12046 Current Release: (Same sizes) 12047 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12048 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12049 12050 120512) iASL Compiler/Disassembler: 12052 12053The compiler now emits a warning if an attempt is made to generate a 64- 12054bit 12055integer constant from within a 32-bit ACPI table (Revision < 2). The 12056integer 12057is truncated to 32 bits. 12058 12059Fixed a problem with large package objects: if the static length of the 12060package is greater than 255, the "variable length package" opcode is 12061emitted. Previously, this caused an error. This requires an update to the 12062ACPI spec, since it currently (incorrectly) states that packages larger 12063than 12064255 elements are not allowed. 12065 12066The disassembler now correctly handles variable length packages and 12067packages 12068larger than 255 elements. 12069 12070---------------------------------------- 1207108 April 2005. Summary of changes for version 20050408: 12072 120731) ACPI CA Core Subsystem: 12074 12075Fixed three cases in the interpreter where an "index" argument to an ASL 12076function was still (internally) 32 bits instead of the required 64 bits. 12077This was the Index argument to the Index, Mid, and Match operators. 12078 12079The "strupr" function is now permanently local (AcpiUtStrupr), since this 12080is 12081not a POSIX-defined function and not present in most kernel-level C 12082libraries. All references to the C library strupr function have been 12083removed 12084from the headers. 12085 12086Completed the deployment of static functions/prototypes. All prototypes 12087with 12088the static attribute have been moved from the headers to the owning C 12089file. 12090 12091Implemented an extract option (-e) for the AcpiBin utility (AML binary 12092utility). This option allows the utility to extract individual ACPI 12093tables 12094from the output of AcpiDmp. It provides the same functionality of the 12095acpixtract.pl perl script without the worry of setting the correct perl 12096options. AcpiBin runs on Windows and has not yet been generated/validated 12097in 12098the Linux/Unix environment (but should be soon). 12099 12100Updated and fixed the table dump option for AcpiBin (-d). This option 12101converts a single ACPI table to a hex/ascii file, similar to the output 12102of 12103AcpiDmp. 12104 12105Code and Data Size: Current and previous core subsystem library sizes are 12106shown below. These are the code and data sizes for the acpica.lib 12107produced 12108by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12109any ACPI driver or OSPM code. The debug version of the code includes the 12110debug output trace mechanism and has a much larger code and data size. 12111Note 12112that these values will vary depending on the efficiency of the compiler 12113and 12114the compiler options used during generation. 12115 12116 Previous Release: 12117 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12118 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12119 Current Release: 12120 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12121 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12122 12123 121242) iASL Compiler/Disassembler: 12125 12126Disassembler fix: Added a check to ensure that the table length found in 12127the 12128ACPI table header within the input file is not longer than the actual 12129input 12130file size. This indicates some kind of file or table corruption. 12131 12132---------------------------------------- 1213329 March 2005. Summary of changes for version 20050329: 12134 121351) ACPI CA Core Subsystem: 12136 12137An error is now generated if an attempt is made to create a Buffer Field 12138of 12139length zero (A CreateField with a length operand of zero.) 12140 12141The interpreter now issues a warning whenever executable code at the 12142module 12143level is detected during ACPI table load. This will give some idea of the 12144prevalence of this type of code. 12145 12146Implemented support for references to named objects (other than control 12147methods) within package objects. 12148 12149Enhanced package object output for the debug object. Package objects are 12150now 12151completely dumped, showing all elements. 12152 12153Enhanced miscellaneous object output for the debug object. Any object can 12154now be written to the debug object (for example, a device object can be 12155written, and the type of the object will be displayed.) 12156 12157The "static" qualifier has been added to all local functions across both 12158the 12159core subsystem and the iASL compiler. 12160 12161The number of "long" lines (> 80 chars) within the source has been 12162significantly reduced, by about 1/3. 12163 12164Cleaned up all header files to ensure that all CA/iASL functions are 12165prototyped (even static functions) and the formatting is consistent. 12166 12167Two new header files have been added, acopcode.h and acnames.h. 12168 12169Removed several obsolete functions that were no longer used. 12170 12171Code and Data Size: Current and previous core subsystem library sizes are 12172shown below. These are the code and data sizes for the acpica.lib 12173produced 12174by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12175any ACPI driver or OSPM code. The debug version of the code includes the 12176debug output trace mechanism and has a much larger code and data size. 12177Note 12178that these values will vary depending on the efficiency of the compiler 12179and 12180the compiler options used during generation. 12181 12182 Previous Release: 12183 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12184 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 12185 Current Release: 12186 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12187 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12188 12189 12190 121912) iASL Compiler/Disassembler: 12192 12193Fixed a problem with the resource descriptor generation/support. For the 12194ResourceSourceIndex and the ResourceSource fields, both must be present, 12195or 12196both must be not present - can't have one without the other. 12197 12198The compiler now returns non-zero from the main procedure if any errors 12199have 12200occurred during the compilation. 12201 12202 12203---------------------------------------- 1220409 March 2005. Summary of changes for version 20050309: 12205 122061) ACPI CA Core Subsystem: 12207 12208The string-to-buffer implicit conversion code has been modified again 12209after 12210a change to the ACPI specification. In order to match the behavior of 12211the 12212other major ACPI implementation, the target buffer is no longer truncated 12213if 12214the source string is smaller than an existing target buffer. This change 12215requires an update to the ACPI spec, and should eliminate the recent 12216AE_AML_BUFFER_LIMIT issues. 12217 12218The "implicit return" support was rewritten to a new algorithm that 12219solves 12220the general case. Rather than attempt to determine when a method is about 12221to 12222exit, the result of every ASL operator is saved momentarily until the 12223very 12224next ASL operator is executed. Therefore, no matter how the method exits, 12225there will always be a saved implicit return value. This feature is only 12226enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 12227eliminate 12228AE_AML_NO_RETURN_VALUE errors when enabled. 12229 12230Implemented implicit conversion support for the predicate (operand) of 12231the 12232If, Else, and While operators. String and Buffer arguments are 12233automatically 12234converted to Integers. 12235 12236Changed the string-to-integer conversion behavior to match the new ACPI 12237errata: "If no integer object exists, a new integer is created. The ASCII 12238string is interpreted as a hexadecimal constant. Each string character is 12239interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 12240with the first character as the most significant digit, and ending with 12241the 12242first non-hexadecimal character or end-of-string." This means that the 12243first 12244non-hex character terminates the conversion and this is the code that was 12245changed. 12246 12247Fixed a problem where the ObjectType operator would fail (fault) when 12248used 12249on an Index of a Package which pointed to a null package element. The 12250operator now properly returns zero (Uninitialized) in this case. 12251 12252Fixed a problem where the While operator used excessive memory by not 12253properly popping the result stack during execution. There was no memory 12254leak 12255after execution, however. (Code provided by Valery Podrezov.) 12256 12257Fixed a problem where references to control methods within Package 12258objects 12259caused the method to be invoked, instead of producing a reference object 12260pointing to the method. 12261 12262Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 12263to 12264improve performance and reduce code size. (Code provided by Alexey 12265Starikovskiy.) 12266 12267Code and Data Size: Current and previous core subsystem library sizes are 12268shown below. These are the code and data sizes for the acpica.lib 12269produced 12270by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12271any ACPI driver or OSPM code. The debug version of the code includes the 12272debug output trace mechanism and has a much larger code and data size. 12273Note 12274that these values will vary depending on the efficiency of the compiler 12275and 12276the compiler options used during generation. 12277 12278 Previous Release: 12279 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12280 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 12281 Current Release: 12282 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12283 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 12284 12285 122862) iASL Compiler/Disassembler: 12287 12288Fixed a problem with the Return operator with no arguments. Since the AML 12289grammar for the byte encoding requires an operand for the Return opcode, 12290the 12291compiler now emits a Return(Zero) for this case. An ACPI specification 12292update has been written for this case. 12293 12294For tables other than the DSDT, namepath optimization is automatically 12295disabled. This is because SSDTs can be loaded anywhere in the namespace, 12296the 12297compiler has no knowledge of where, and thus cannot optimize namepaths. 12298 12299Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 12300inadvertently omitted from the ACPI specification, and will require an 12301update to the spec. 12302 12303The source file scan for ASCII characters is now optional (-a). This 12304change 12305was made because some vendors place non-ascii characters within comments. 12306However, the scan is simply a brute-force byte compare to ensure all 12307characters in the file are in the range 0x00 to 0x7F. 12308 12309Fixed a problem with the CondRefOf operator where the compiler was 12310inappropriately checking for the existence of the target. Since the point 12311of 12312the operator is to check for the existence of the target at run-time, the 12313compiler no longer checks for the target existence. 12314 12315Fixed a problem where errors generated from the internal AML interpreter 12316during constant folding were not handled properly, causing a fault. 12317 12318Fixed a problem with overly aggressive range checking for the Stall 12319operator. The valid range (max 255) is now only checked if the operand is 12320of 12321type Integer. All other operand types cannot be statically checked. 12322 12323Fixed a problem where control method references within the RefOf, 12324DeRefOf, 12325and ObjectType operators were not treated properly. They are now treated 12326as 12327actual references, not method invocations. 12328 12329Fixed and enhanced the "list namespace" option (-ln). This option was 12330broken 12331a number of releases ago. 12332 12333Improved error handling for the Field, IndexField, and BankField 12334operators. 12335The compiler now cleanly reports and recovers from errors in the field 12336component (FieldUnit) list. 12337 12338Fixed a disassembler problem where the optional ResourceDescriptor fields 12339TRS and TTP were not always handled correctly. 12340 12341Disassembler - Comments in output now use "//" instead of "/*" 12342 12343---------------------------------------- 1234428 February 2005. Summary of changes for version 20050228: 12345 123461) ACPI CA Core Subsystem: 12347 12348Fixed a problem where the result of an Index() operator (an object 12349reference) must increment the reference count on the target object for 12350the 12351life of the object reference. 12352 12353Implemented AML Interpreter and Debugger support for the new ACPI 3.0 12354Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 12355WordSpace 12356resource descriptors. 12357 12358Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 12359Space Descriptor" string, indicating interpreter support for the 12360descriptors 12361above. 12362 12363Implemented header support for the new ACPI 3.0 FADT flag bits. 12364 12365Implemented header support for the new ACPI 3.0 PCI Express bits for the 12366PM1 12367status/enable registers. 12368 12369Updated header support for the MADT processor local Apic struct and MADT 12370platform interrupt source struct for new ACPI 3.0 fields. 12371 12372Implemented header support for the SRAT and SLIT ACPI tables. 12373 12374Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 12375flag 12376at runtime. 12377 12378Code and Data Size: Current and previous core subsystem library sizes are 12379shown below. These are the code and data sizes for the acpica.lib 12380produced 12381by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12382any ACPI driver or OSPM code. The debug version of the code includes the 12383debug output trace mechanism and has a much larger code and data size. 12384Note 12385that these values will vary depending on the efficiency of the compiler 12386and 12387the compiler options used during generation. 12388 12389 Previous Release: 12390 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 12391 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 12392 Current Release: 12393 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12394 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 12395 12396 123972) iASL Compiler/Disassembler: 12398 12399Fixed a problem with the internal 64-bit String-to-integer conversion 12400with 12401strings less than two characters long. 12402 12403Fixed a problem with constant folding where the result of the Index() 12404operator can not be considered a constant. This means that Index() cannot 12405be 12406a type3 opcode and this will require an update to the ACPI specification. 12407 12408Disassembler: Implemented support for the TTP, MTP, and TRS resource 12409descriptor fields. These fields were inadvertently ignored and not output 12410in 12411the disassembly of the resource descriptor. 12412 12413 12414 ---------------------------------------- 1241511 February 2005. Summary of changes for version 20050211: 12416 124171) ACPI CA Core Subsystem: 12418 12419Implemented ACPI 3.0 support for implicit conversion within the Match() 12420operator. MatchObjects can now be of type integer, buffer, or string 12421instead 12422of just type integer. Package elements are implicitly converted to the 12423type 12424of the MatchObject. This change aligns the behavior of Match() with the 12425behavior of the other logical operators (LLess(), etc.) It also requires 12426an 12427errata change to the ACPI specification as this support was intended for 12428ACPI 3.0, but was inadvertently omitted. 12429 12430Fixed a problem with the internal implicit "to buffer" conversion. 12431Strings 12432that are converted to buffers will cause buffer truncation if the string 12433is 12434smaller than the target buffer. Integers that are converted to buffers 12435will 12436not cause buffer truncation, only zero extension (both as per the ACPI 12437spec.) The problem was introduced when code was added to truncate the 12438buffer, but this should not be performed in all cases, only the string 12439case. 12440 12441Fixed a problem with the Buffer and Package operators where the 12442interpreter 12443would get confused if two such operators were used as operands to an ASL 12444operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 12445stack was not being popped after the execution of these operators, 12446resulting 12447in an AE_NO_RETURN_VALUE exception. 12448 12449Fixed a problem with constructs of the form Store(Index(...),...). The 12450reference object returned from Index was inadvertently resolved to an 12451actual 12452value. This problem was introduced in version 20050114 when the behavior 12453of 12454Store() was modified to restrict the object types that can be used as the 12455source operand (to match the ACPI specification.) 12456 12457Reduced excessive stack use within the AcpiGetObjectInfo procedure. 12458 12459Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 12460 12461Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 12462 12463Code and Data Size: Current and previous core subsystem library sizes are 12464shown below. These are the code and data sizes for the acpica.lib 12465produced 12466by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12467any ACPI driver or OSPM code. The debug version of the code includes the 12468debug output trace mechanism and has a much larger code and data size. 12469Note 12470that these values will vary depending on the efficiency of the compiler 12471and 12472the compiler options used during generation. 12473 12474 Previous Release: 12475 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 12476 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 12477 Current Release: 12478 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 12479 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 12480 12481 124822) iASL Compiler/Disassembler: 12483 12484Fixed a code generation problem in the constant folding optimization code 12485where incorrect code was generated if a constant was reduced to a buffer 12486object (i.e., a reduced type 5 opcode.) 12487 12488Fixed a typechecking problem for the ToBuffer operator. Caused by an 12489incorrect return type in the internal opcode information table. 12490 12491---------------------------------------- 1249225 January 2005. Summary of changes for version 20050125: 12493 124941) ACPI CA Core Subsystem: 12495 12496Fixed a recently introduced problem with the Global Lock where the 12497underlying semaphore was not created. This problem was introduced in 12498version 20050114, and caused an AE_AML_NO_OPERAND exception during an 12499Acquire() operation on _GL. 12500 12501The local object cache is now optional, and is disabled by default. Both 12502AcpiExec and the iASL compiler enable the cache because they run in user 12503mode and this enhances their performance. #define 12504ACPI_ENABLE_OBJECT_CACHE 12505to enable the local cache. 12506 12507Fixed an issue in the internal function AcpiUtEvaluateObject concerning 12508the 12509optional "implicit return" support where an error was returned if no 12510return 12511object was expected, but one was implicitly returned. AE_OK is now 12512returned 12513in this case and the implicitly returned object is deleted. 12514AcpiUtEvaluateObject is only occasionally used, and only to execute 12515reserved 12516methods such as _STA and _INI where the return type is known up front. 12517 12518Fixed a few issues with the internal convert-to-integer code. It now 12519returns 12520an error if an attempt is made to convert a null string, a string of only 12521blanks/tabs, or a zero-length buffer. This affects both implicit 12522conversion 12523and explicit conversion via the ToInteger() operator. 12524 12525The internal debug code in AcpiUtAcquireMutex has been commented out. It 12526is 12527not needed for normal operation and should increase the performance of 12528the 12529entire subsystem. The code remains in case it is needed for debug 12530purposes 12531again. 12532 12533The AcpiExec source and makefile are included in the Unix/Linux package 12534for 12535the first time. 12536 12537Code and Data Size: Current and previous core subsystem library sizes are 12538shown below. These are the code and data sizes for the acpica.lib 12539produced 12540by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12541any ACPI driver or OSPM code. The debug version of the code includes the 12542debug output trace mechanism and has a much larger code and data size. 12543Note 12544that these values will vary depending on the efficiency of the compiler 12545and 12546the compiler options used during generation. 12547 12548 Previous Release: 12549 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 12550 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 12551 Current Release: 12552 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 12553 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 12554 125552) iASL Compiler/Disassembler: 12556 12557Switch/Case support: A warning is now issued if the type of the Switch 12558value 12559cannot be determined at compile time. For example, Switch(Arg0) will 12560generate the warning, and the type is assumed to be an integer. As per 12561the 12562ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 12563the 12564warning. 12565 12566Switch/Case support: Implemented support for buffer and string objects as 12567the switch value. This is an ACPI 3.0 feature, now that LEqual supports 12568buffers and strings. 12569 12570Switch/Case support: The emitted code for the LEqual() comparisons now 12571uses 12572the switch value as the first operand, not the second. The case value is 12573now 12574the second operand, and this allows the case value to be implicitly 12575converted to the type of the switch value, not the other way around. 12576 12577Switch/Case support: Temporary variables are now emitted immediately 12578within 12579the control method, not at the global level. This means that there are 12580now 1258136 temps available per-method, not 36 temps per-module as was the case 12582with 12583the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 12584 12585---------------------------------------- 1258614 January 2005. Summary of changes for version 20050114: 12587 12588Added 2005 copyright to all module headers. This affects every module in 12589the core subsystem, iASL compiler, and the utilities. 12590 125911) ACPI CA Core Subsystem: 12592 12593Fixed an issue with the String-to-Buffer conversion code where the string 12594null terminator was not included in the buffer after conversion, but 12595there 12596is existing ASL that assumes the string null terminator is included. This 12597is 12598the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 12599introduced in the previous version when the code was updated to correctly 12600set the converted buffer size as per the ACPI specification. The ACPI 12601spec 12602is ambiguous and will be updated to specify that the null terminator must 12603be 12604included in the converted buffer. This also affects the ToBuffer() ASL 12605operator. 12606 12607Fixed a problem with the Mid() ASL/AML operator where it did not work 12608correctly on Buffer objects. Newly created sub-buffers were not being 12609marked 12610as initialized. 12611 12612 12613Fixed a problem in AcpiTbFindTable where incorrect string compares were 12614performed on the OemId and OemTableId table header fields. These fields 12615are 12616not null terminated, so strncmp is now used instead of strcmp. 12617 12618Implemented a restriction on the Store() ASL/AML operator to align the 12619behavior with the ACPI specification. Previously, any object could be 12620used 12621as the source operand. Now, the only objects that may be used are 12622Integers, 12623Buffers, Strings, Packages, Object References, and DDB Handles. If 12624necessary, the original behavior can be restored by enabling the 12625EnableInterpreterSlack flag. 12626 12627Enhanced the optional "implicit return" support to allow an implicit 12628return 12629value from methods that are invoked externally via the AcpiEvaluateObject 12630interface. This enables implicit returns from the _STA and _INI methods, 12631for example. 12632 12633Changed the Revision() ASL/AML operator to return the current version of 12634the 12635AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 12636returned 12637the supported ACPI version (This is the function of the _REV method). 12638 12639Updated the _REV predefined method to return the currently supported 12640version 12641of ACPI, now 3. 12642 12643Implemented batch mode option for the AcpiExec utility (-b). 12644 12645Code and Data Size: Current and previous core subsystem library sizes are 12646shown below. These are the code and data sizes for the acpica.lib 12647produced 12648by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12649any ACPI driver or OSPM code. The debug version of the code includes the 12650debug output trace mechanism and has a much larger code and data size. 12651Note 12652that these values will vary depending on the efficiency of the compiler 12653and 12654the compiler options used during generation. 12655 12656 Previous Release: 12657 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12658 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 12659 Current Release: 12660 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 12661 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 12662 12663---------------------------------------- 1266410 December 2004. Summary of changes for version 20041210: 12665 12666ACPI 3.0 support is nearing completion in both the iASL compiler and the 12667ACPI CA core subsystem. 12668 126691) ACPI CA Core Subsystem: 12670 12671Fixed a problem in the ToDecimalString operator where the resulting 12672string 12673length was incorrectly calculated. The length is now calculated exactly, 12674eliminating incorrect AE_STRING_LIMIT exceptions. 12675 12676Fixed a problem in the ToHexString operator to allow a maximum 200 12677character 12678string to be produced. 12679 12680Fixed a problem in the internal string-to-buffer and buffer-to-buffer 12681copy 12682routine where the length of the resulting buffer was not truncated to the 12683new size (if the target buffer already existed). 12684 12685Code and Data Size: Current and previous core subsystem library sizes are 12686shown below. These are the code and data sizes for the acpica.lib 12687produced 12688by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12689any ACPI driver or OSPM code. The debug version of the code includes the 12690debug output trace mechanism and has a much larger code and data size. 12691Note 12692that these values will vary depending on the efficiency of the compiler 12693and 12694the compiler options used during generation. 12695 12696 Previous Release: 12697 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12698 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 12699 Current Release: 12700 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12701 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 12702 12703 127042) iASL Compiler/Disassembler: 12705 12706Implemented the new ACPI 3.0 resource template macros - DWordSpace, 12707ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 12708Includes support in the disassembler. 12709 12710Implemented support for the new (ACPI 3.0) parameter to the Register 12711macro, 12712AccessSize. 12713 12714Fixed a problem where the _HE resource name for the Interrupt macro was 12715referencing bit 0 instead of bit 1. 12716 12717Implemented check for maximum 255 interrupts in the Interrupt macro. 12718 12719Fixed a problem with the predefined resource descriptor names where 12720incorrect AML code was generated if the offset within the resource buffer 12721was 0 or 1. The optimizer shortened the AML code to a single byte opcode 12722but did not update the surrounding package lengths. 12723 12724Changes to the Dma macro: All channels within the channel list must be 12725in 12726the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 12727optional (default is BusMaster). 12728 12729Implemented check for maximum 7 data bytes for the VendorShort macro. 12730 12731The ReadWrite parameter is now optional for the Memory32 and similar 12732macros. 12733 12734---------------------------------------- 1273503 December 2004. Summary of changes for version 20041203: 12736 127371) ACPI CA Core Subsystem: 12738 12739The low-level field insertion/extraction code (exfldio) has been 12740completely 12741rewritten to eliminate unnecessary complexity, bugs, and boundary 12742conditions. 12743 12744Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 12745ToDecimalString 12746operators where the input operand could be inadvertently deleted if no 12747conversion was necessary (e.g., if the input to ToInteger was an Integer 12748object.) 12749 12750Fixed a problem with the ToDecimalString and ToHexString where an 12751incorrect 12752exception code was returned if the resulting string would be > 200 chars. 12753AE_STRING_LIMIT is now returned. 12754 12755Fixed a problem with the Concatenate operator where AE_OK was always 12756returned, even if the operation failed. 12757 12758Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 12759semaphores to be allocated. 12760 12761Code and Data Size: Current and previous core subsystem library sizes are 12762shown below. These are the code and data sizes for the acpica.lib 12763produced 12764by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12765any ACPI driver or OSPM code. The debug version of the code includes the 12766debug output trace mechanism and has a much larger code and data size. 12767Note 12768that these values will vary depending on the efficiency of the compiler 12769and 12770the compiler options used during generation. 12771 12772 Previous Release: 12773 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12774 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12775 Current Release: 12776 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12777 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 12778 12779 127802) iASL Compiler/Disassembler: 12781 12782Fixed typechecking for the ObjectType and SizeOf operators. Problem was 12783recently introduced in 20041119. 12784 12785Fixed a problem with the ToUUID macro where the upper nybble of each 12786buffer 12787byte was inadvertently set to zero. 12788 12789---------------------------------------- 1279019 November 2004. Summary of changes for version 20041119: 12791 127921) ACPI CA Core Subsystem: 12793 12794Fixed a problem in the internal ConvertToInteger routine where new 12795integers 12796were not truncated to 32 bits for 32-bit ACPI tables. This routine 12797converts 12798buffers and strings to integers. 12799 12800Implemented support to store a value to an Index() on a String object. 12801This 12802is an ACPI 2.0 feature that had not yet been implemented. 12803 12804Implemented new behavior for storing objects to individual package 12805elements 12806(via the Index() operator). The previous behavior was to invoke the 12807implicit 12808conversion rules if an object was already present at the index. The new 12809behavior is to simply delete any existing object and directly store the 12810new 12811object. Although the ACPI specification seems unclear on this subject, 12812other 12813ACPI implementations behave in this manner. (This is the root of the 12814AE_BAD_HEX_CONSTANT issue.) 12815 12816Modified the RSDP memory scan mechanism to support the extended checksum 12817for 12818ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 12819RSDP signature is found with a valid checksum. 12820 12821Code and Data Size: Current and previous core subsystem library sizes are 12822shown below. These are the code and data sizes for the acpica.lib 12823produced 12824by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12825any ACPI driver or OSPM code. The debug version of the code includes the 12826debug output trace mechanism and has a much larger code and data size. 12827Note 12828that these values will vary depending on the efficiency of the compiler 12829and 12830the compiler options used during generation. 12831 12832 Previous Release: 12833 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12834 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12835 Current Release: 12836 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12837 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12838 12839 128402) iASL Compiler/Disassembler: 12841 12842Fixed a missing semicolon in the aslcompiler.y file. 12843 12844---------------------------------------- 1284505 November 2004. Summary of changes for version 20041105: 12846 128471) ACPI CA Core Subsystem: 12848 12849Implemented support for FADT revision 2. This was an interim table 12850(between 12851ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 12852 12853Implemented optional support to allow uninitialized LocalX and ArgX 12854variables in a control method. The variables are initialized to an 12855Integer 12856object with a value of zero. This support is enabled by setting the 12857AcpiGbl_EnableInterpreterSlack flag to TRUE. 12858 12859Implemented support for Integer objects for the SizeOf operator. Either 128604 12861or 8 is returned, depending on the current integer size (32-bit or 64- 12862bit, 12863depending on the parent table revision). 12864 12865Fixed a problem in the implementation of the SizeOf and ObjectType 12866operators 12867where the operand was resolved to a value too early, causing incorrect 12868return values for some objects. 12869 12870Fixed some possible memory leaks during exceptional conditions. 12871 12872Code and Data Size: Current and previous core subsystem library sizes are 12873shown below. These are the code and data sizes for the acpica.lib 12874produced 12875by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12876any ACPI driver or OSPM code. The debug version of the code includes the 12877debug output trace mechanism and has a much larger code and data size. 12878Note 12879that these values will vary depending on the efficiency of the compiler 12880and 12881the compiler options used during generation. 12882 12883 Previous Release: 12884 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12885 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 12886 Current Release: 12887 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12888 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12889 12890 128912) iASL Compiler/Disassembler: 12892 12893Implemented support for all ACPI 3.0 reserved names and methods. 12894 12895Implemented all ACPI 3.0 grammar elements in the front-end, including 12896support for semicolons. 12897 12898Implemented the ACPI 3.0 Function() and ToUUID() macros 12899 12900Fixed a problem in the disassembler where a Scope() operator would not be 12901emitted properly if the target of the scope was in another table. 12902 12903---------------------------------------- 1290415 October 2004. Summary of changes for version 20041015: 12905 12906Note: ACPI CA is currently undergoing an in-depth and complete formal 12907evaluation to test/verify the following areas. Other suggestions are 12908welcome. This will result in an increase in the frequency of releases and 12909the number of bug fixes in the next few months. 12910 - Functional tests for all ASL/AML operators 12911 - All implicit/explicit type conversions 12912 - Bit fields and operation regions 12913 - 64-bit math support and 32-bit-only "truncated" math support 12914 - Exceptional conditions, both compiler and interpreter 12915 - Dynamic object deletion and memory leaks 12916 - ACPI 3.0 support when implemented 12917 - External interfaces to the ACPI subsystem 12918 12919 129201) ACPI CA Core Subsystem: 12921 12922Fixed two alignment issues on 64-bit platforms - within debug statements 12923in 12924AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 12925Address 12926field within the non-aligned ACPI generic address structure. 12927 12928Fixed a problem in the Increment and Decrement operators where incorrect 12929operand resolution could result in the inadvertent modification of the 12930original integer when the integer is passed into another method as an 12931argument and the arg is then incremented/decremented. 12932 12933Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 12934bit 12935BCD number were truncated during conversion. 12936 12937Fixed a problem in the ToDecimal operator where the length of the 12938resulting 12939string could be set incorrectly too long if the input operand was a 12940Buffer 12941object. 12942 12943Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 12944(0) 12945within a buffer would prematurely terminate a compare between buffer 12946objects. 12947 12948Added a check for string overflow (>200 characters as per the ACPI 12949specification) during the Concatenate operator with two string operands. 12950 12951Code and Data Size: Current and previous core subsystem library sizes are 12952shown below. These are the code and data sizes for the acpica.lib 12953produced 12954by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12955any ACPI driver or OSPM code. The debug version of the code includes the 12956debug output trace mechanism and has a much larger code and data size. 12957Note 12958that these values will vary depending on the efficiency of the compiler 12959and 12960the compiler options used during generation. 12961 12962 Previous Release: 12963 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12964 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 12965 Current Release: 12966 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12967 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 12968 12969 12970 129712) iASL Compiler/Disassembler: 12972 12973Allow the use of the ObjectType operator on uninitialized Locals and Args 12974(returns 0 as per the ACPI specification). 12975 12976Fixed a problem where the compiler would fault if there was a syntax 12977error 12978in the FieldName of all of the various CreateXXXField operators. 12979 12980Disallow the use of lower case letters within the EISAID macro, as per 12981the 12982ACPI specification. All EISAID strings must be of the form "UUUNNNN" 12983Where 12984U is an uppercase letter and N is a hex digit. 12985 12986 12987---------------------------------------- 1298806 October 2004. Summary of changes for version 20041006: 12989 129901) ACPI CA Core Subsystem: 12991 12992Implemented support for the ACPI 3.0 Timer operator. This ASL function 12993implements a 64-bit timer with 100 nanosecond granularity. 12994 12995Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 12996implement the ACPI 3.0 Timer operator. This allows the host OS to 12997implement 12998the timer with the best clock available. Also, it keeps the core 12999subsystem 13000out of the clock handling business, since the host OS (usually) performs 13001this function. 13002 13003Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 13004functions use a 64-bit address which is part of the packed ACPI Generic 13005Address Structure. Since the structure is non-aligned, the alignment 13006macros 13007are now used to extract the address to a local variable before use. 13008 13009Fixed a problem where the ToInteger operator assumed all input strings 13010were 13011hexadecimal. The operator now handles both decimal strings and hex 13012strings 13013(prefixed with "0x"). 13014 13015Fixed a problem where the string length in the string object created as a 13016result of the internal ConvertToString procedure could be incorrect. This 13017potentially affected all implicit conversions and also the 13018ToDecimalString 13019and ToHexString operators. 13020 13021Fixed two problems in the ToString operator. If the length parameter was 13022zero, an incorrect string object was created and the value of the input 13023length parameter was inadvertently changed from zero to Ones. 13024 13025Fixed a problem where the optional ResourceSource string in the 13026ExtendedIRQ 13027resource macro was ignored. 13028 13029Simplified the interfaces to the internal division functions, reducing 13030code 13031size and complexity. 13032 13033Code and Data Size: Current and previous core subsystem library sizes are 13034shown below. These are the code and data sizes for the acpica.lib 13035produced 13036by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13037any ACPI driver or OSPM code. The debug version of the code includes the 13038debug output trace mechanism and has a much larger code and data size. 13039Note 13040that these values will vary depending on the efficiency of the compiler 13041and 13042the compiler options used during generation. 13043 13044 Previous Release: 13045 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13046 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13047 Current Release: 13048 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13049 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 13050 13051 130522) iASL Compiler/Disassembler: 13053 13054Implemented support for the ACPI 3.0 Timer operator. 13055 13056Fixed a problem where the Default() operator was inadvertently ignored in 13057a 13058Switch/Case block. This was a problem in the translation of the Switch 13059statement to If...Else pairs. 13060 13061Added support to allow a standalone Return operator, with no parentheses 13062(or 13063operands). 13064 13065Fixed a problem with code generation for the ElseIf operator where the 13066translated Else...If parse tree was improperly constructed leading to the 13067loss of some code. 13068 13069---------------------------------------- 1307022 September 2004. Summary of changes for version 20040922: 13071 130721) ACPI CA Core Subsystem: 13073 13074Fixed a problem with the implementation of the LNot() operator where 13075"Ones" 13076was not returned for the TRUE case. Changed the code to return Ones 13077instead 13078of (!Arg) which was usually 1. This change affects iASL constant folding 13079for 13080this operator also. 13081 13082Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 13083not 13084initialized properly -- Now zero the entire buffer in this case where the 13085buffer already exists. 13086 13087Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 13088Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 13089related code considerably. This will require changes/updates to all OS 13090interface layers (OSLs.) 13091 13092Implemented a new external interface, AcpiInstallExceptionHandler, to 13093allow 13094a system exception handler to be installed. This handler is invoked upon 13095any 13096run-time exception that occurs during control method execution. 13097 13098Added support for the DSDT in AcpiTbFindTable. This allows the 13099DataTableRegion() operator to access the local copy of the DSDT. 13100 13101Code and Data Size: Current and previous core subsystem library sizes are 13102shown below. These are the code and data sizes for the acpica.lib 13103produced 13104by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13105any ACPI driver or OSPM code. The debug version of the code includes the 13106debug output trace mechanism and has a much larger code and data size. 13107Note 13108that these values will vary depending on the efficiency of the compiler 13109and 13110the compiler options used during generation. 13111 13112 Previous Release: 13113 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13114 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13115 Current Release: 13116 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13117 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13118 13119 131202) iASL Compiler/Disassembler: 13121 13122Fixed a problem with constant folding and the LNot operator. LNot was 13123returning 1 in the TRUE case, not Ones as per the ACPI specification. 13124This 13125could result in the generation of an incorrect folded/reduced constant. 13126 13127End-Of-File is now allowed within a "//"-style comment. A parse error no 13128longer occurs if such a comment is at the very end of the input ASL 13129source 13130file. 13131 13132Implemented the "-r" option to override the Revision in the table header. 13133The initial use of this option will be to simplify the evaluation of the 13134AML 13135interpreter by allowing a single ASL source module to be compiled for 13136either 1313732-bit or 64-bit integers. 13138 13139 13140---------------------------------------- 1314127 August 2004. Summary of changes for version 20040827: 13142 131431) ACPI CA Core Subsystem: 13144 13145- Implemented support for implicit object conversion in the non-numeric 13146logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 13147and 13148LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 13149the second operand is implicitly converted on the fly to match the type 13150of 13151the first operand. For example: 13152 13153 LEqual (Source1, Source2) 13154 13155Source1 and Source2 must each evaluate to an integer, a string, or a 13156buffer. 13157The data type of Source1 dictates the required type of Source2. Source2 13158is 13159implicitly converted if necessary to match the type of Source1. 13160 13161- Updated and corrected the behavior of the string conversion support. 13162The 13163rules concerning conversion of buffers to strings (according to the ACPI 13164specification) are as follows: 13165 13166ToDecimalString - explicit byte-wise conversion of buffer to string of 13167decimal values (0-255) separated by commas. ToHexString - explicit byte- 13168wise 13169conversion of buffer to string of hex values (0-FF) separated by commas. 13170ToString - explicit byte-wise conversion of buffer to string. Byte-by- 13171byte 13172copy with no transform except NULL terminated. Any other implicit buffer- 13173to- 13174string conversion - byte-wise conversion of buffer to string of hex 13175values 13176(0-FF) separated by spaces. 13177 13178- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 13179 13180- Fixed a problem in AcpiNsGetPathnameLength where the returned length 13181was 13182one byte too short in the case of a node in the root scope. This could 13183cause a fault during debug output. 13184 13185- Code and Data Size: Current and previous core subsystem library sizes 13186are 13187shown below. These are the code and data sizes for the acpica.lib 13188produced 13189by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13190any ACPI driver or OSPM code. The debug version of the code includes the 13191debug output trace mechanism and has a much larger code and data size. 13192Note 13193that these values will vary depending on the efficiency of the compiler 13194and 13195the compiler options used during generation. 13196 13197 Previous Release: 13198 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 13199 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 13200 Current Release: 13201 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13202 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13203 13204 132052) iASL Compiler/Disassembler: 13206 13207- Fixed a Linux generation error. 13208 13209 13210---------------------------------------- 1321116 August 2004. Summary of changes for version 20040816: 13212 132131) ACPI CA Core Subsystem: 13214 13215Designed and implemented support within the AML interpreter for the so- 13216called "implicit return". This support returns the result of the last 13217ASL 13218operation within a control method, in the absence of an explicit Return() 13219operator. A few machines depend on this behavior, even though it is not 13220explicitly supported by the ASL language. It is optional support that 13221can 13222be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 13223 13224Removed support for the PCI_Config address space from the internal low 13225level 13226hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 13227support was not used internally, and would not work correctly anyway 13228because 13229the PCI bus number and segment number were not supported. There are 13230separate interfaces for PCI configuration space access because of the 13231unique 13232interface. 13233 13234Code and Data Size: Current and previous core subsystem library sizes are 13235shown below. These are the code and data sizes for the acpica.lib 13236produced 13237by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13238any ACPI driver or OSPM code. The debug version of the code includes the 13239debug output trace mechanism and has a much larger code and data size. 13240Note 13241that these values will vary depending on the efficiency of the compiler 13242and 13243the compiler options used during generation. 13244 13245 Previous Release: 13246 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13247 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 13248 Current Release: 13249 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 13250 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 13251 13252 132532) iASL Compiler/Disassembler: 13254 13255Fixed a problem where constants in ASL expressions at the root level (not 13256within a control method) could be inadvertently truncated during code 13257generation. This problem was introduced in the 20040715 release. 13258 13259 13260---------------------------------------- 1326115 July 2004. Summary of changes for version 20040715: 13262 132631) ACPI CA Core Subsystem: 13264 13265Restructured the internal HW GPE interfaces to pass/track the current 13266state 13267of interrupts (enabled/disabled) in order to avoid possible deadlock and 13268increase flexibility of the interfaces. 13269 13270Implemented a "lexicographical compare" for String and Buffer objects 13271within 13272the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 13273- 13274as per further clarification to the ACPI specification. Behavior is 13275similar 13276to C library "strcmp". 13277 13278Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 13279external function. In the 32-bit non-debug case, the stack use has been 13280reduced from 168 bytes to 32 bytes. 13281 13282Deployed a new run-time configuration flag, 13283AcpiGbl_EnableInterpreterSlack, 13284whose purpose is to allow the AML interpreter to forgive certain bad AML 13285constructs. Default setting is FALSE. 13286 13287Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 13288IO 13289support code. If enabled, it allows field access to go beyond the end of 13290a 13291region definition if the field is within the region length rounded up to 13292the 13293next access width boundary (a common coding error.) 13294 13295Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 13296ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 13297these 13298symbols are lowercased by the latest version of the AcpiSrc tool. 13299 13300The prototypes for the PCI interfaces in acpiosxf.h have been updated to 13301rename "Register" to simply "Reg" to prevent certain compilers from 13302complaining. 13303 13304Code and Data Size: Current and previous core subsystem library sizes are 13305shown below. These are the code and data sizes for the acpica.lib 13306produced 13307by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13308any ACPI driver or OSPM code. The debug version of the code includes the 13309debug output trace mechanism and has a much larger code and data size. 13310Note 13311that these values will vary depending on the efficiency of the compiler 13312and 13313the compiler options used during generation. 13314 13315 Previous Release: 13316 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13317 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 13318 Current Release: 13319 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13320 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 13321 13322 133232) iASL Compiler/Disassembler: 13324 13325Implemented full support for Package objects within the Case() operator. 13326Note: The Break() operator is currently not supported within Case blocks 13327(TermLists) as there is some question about backward compatibility with 13328ACPI 133291.0 interpreters. 13330 13331 13332Fixed a problem where complex terms were not supported properly within 13333the 13334Switch() operator. 13335 13336Eliminated extraneous warning for compiler-emitted reserved names of the 13337form "_T_x". (Used in Switch/Case operators.) 13338 13339Eliminated optimization messages for "_T_x" objects and small constants 13340within the DefinitionBlock operator. 13341 13342 13343---------------------------------------- 1334415 June 2004. Summary of changes for version 20040615: 13345 133461) ACPI CA Core Subsystem: 13347 13348Implemented support for Buffer and String objects (as per ACPI 2.0) for 13349the 13350following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 13351LLessEqual. 13352 13353All directory names in the entire source package are lower case, as they 13354were in earlier releases. 13355 13356Implemented "Disassemble" command in the AML debugger that will 13357disassemble 13358a single control method. 13359 13360Code and Data Size: Current and previous core subsystem library sizes are 13361shown below. These are the code and data sizes for the acpica.lib 13362produced 13363by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13364any ACPI driver or OSPM code. The debug version of the code includes the 13365debug output trace mechanism and has a much larger code and data size. 13366Note 13367that these values will vary depending on the efficiency of the compiler 13368and 13369the compiler options used during generation. 13370 13371 Previous Release: 13372 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 13373 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 13374 13375 Current Release: 13376 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13377 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 13378 13379 133802) iASL Compiler/Disassembler: 13381 13382Implemented support for Buffer and String objects (as per ACPI 2.0) for 13383the 13384following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 13385LLessEqual. 13386 13387All directory names in the entire source package are lower case, as they 13388were in earlier releases. 13389 13390Fixed a fault when using the -g or -d<nofilename> options if the FADT was 13391not found. 13392 13393Fixed an issue with the Windows version of the compiler where later 13394versions 13395of Windows place the FADT in the registry under the name "FADT" and not 13396"FACP" as earlier versions did. This applies when using the -g or - 13397d<nofilename> options. The compiler now looks for both strings as 13398necessary. 13399 13400Fixed a problem with compiler namepath optimization where a namepath 13401within 13402the Scope() operator could not be optimized if the namepath was a subpath 13403of 13404the current scope path. 13405 13406---------------------------------------- 1340727 May 2004. Summary of changes for version 20040527: 13408 134091) ACPI CA Core Subsystem: 13410 13411Completed a new design and implementation for EBDA (Extended BIOS Data 13412Area) 13413support in the RSDP scan code. The original code improperly scanned for 13414the 13415EBDA by simply scanning from memory location 0 to 0x400. The correct 13416method 13417is to first obtain the EBDA pointer from within the BIOS data area, then 13418scan 1K of memory starting at the EBDA pointer. There appear to be few 13419if 13420any machines that place the RSDP in the EBDA, however. 13421 13422Integrated a fix for a possible fault during evaluation of BufferField 13423arguments. Obsolete code that was causing the problem was removed. 13424 13425Found and fixed a problem in the Field Support Code where data could be 13426corrupted on a bit field read that starts on an aligned boundary but does 13427not end on an aligned boundary. Merged the read/write "datum length" 13428calculation code into a common procedure. 13429 13430Rolled in a couple of changes to the FreeBSD-specific header. 13431 13432 13433Code and Data Size: Current and previous core subsystem library sizes are 13434shown below. These are the code and data sizes for the acpica.lib 13435produced 13436by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13437any ACPI driver or OSPM code. The debug version of the code includes the 13438debug output trace mechanism and has a much larger code and data size. 13439Note 13440that these values will vary depending on the efficiency of the compiler 13441and 13442the compiler options used during generation. 13443 13444 Previous Release: 13445 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13446 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 13447 Current Release: 13448 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 13449 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 13450 13451 134522) iASL Compiler/Disassembler: 13453 13454Fixed a generation warning produced by some overly-verbose compilers for 13455a 1345664-bit constant. 13457 13458---------------------------------------- 1345914 May 2004. Summary of changes for version 20040514: 13460 134611) ACPI CA Core Subsystem: 13462 13463Fixed a problem where hardware GPE enable bits sometimes not set properly 13464during and after GPE method execution. Result of 04/27 changes. 13465 13466Removed extra "clear all GPEs" when sleeping/waking. 13467 13468Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 13469AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 13470to 13471the new AcpiEv* calls as appropriate. 13472 13473ACPI_OS_NAME was removed from the OS-specific headers. The default name 13474is 13475now "Microsoft Windows NT" for maximum compatibility. However this can 13476be 13477changed by modifying the acconfig.h file. 13478 13479Allow a single invocation of AcpiInstallNotifyHandler for a handler that 13480traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 13481 13482Run _INI methods on ThermalZone objects. This is against the ACPI 13483specification, but there is apparently ASL code in the field that has 13484these 13485_INI methods, and apparently "other" AML interpreters execute them. 13486 13487Performed a full 16/32/64 bit lint that resulted in some small changes. 13488 13489Added a sleep simulation command to the AML debugger to test sleep code. 13490 13491Code and Data Size: Current and previous core subsystem library sizes are 13492shown below. These are the code and data sizes for the acpica.lib 13493produced 13494by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13495any ACPI driver or OSPM code. The debug version of the code includes the 13496debug output trace mechanism and has a much larger code and data size. 13497Note 13498that these values will vary depending on the efficiency of the compiler 13499and 13500the compiler options used during generation. 13501 13502 Previous Release: 13503 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13504 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 13505 Current Release: 13506 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13507 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 13508 13509---------------------------------------- 1351027 April 2004. Summary of changes for version 20040427: 13511 135121) ACPI CA Core Subsystem: 13513 13514Completed a major overhaul of the GPE handling within ACPI CA. There are 13515now three types of GPEs: wake-only, runtime-only, and combination 13516wake/run. 13517The only GPEs allowed to be combination wake/run are for button-style 13518devices such as a control-method power button, control-method sleep 13519button, 13520or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 13521not 13522referenced by any _PRW methods are marked for "runtime" and hardware 13523enabled. Any GPE that is referenced by a _PRW method is marked for 13524"wake" 13525(and disabled at runtime). However, at sleep time, only those GPEs that 13526have been specifically enabled for wake via the AcpiEnableGpe interface 13527will 13528actually be hardware enabled. 13529 13530A new external interface has been added, AcpiSetGpeType(), that is meant 13531to 13532be used by device drivers to force a GPE to a particular type. It will 13533be 13534especially useful for the drivers for the button devices mentioned above. 13535 13536Completed restructuring of the ACPI CA initialization sequence so that 13537default operation region handlers are installed before GPEs are 13538initialized 13539and the _PRW methods are executed. This will prevent errors when the 13540_PRW 13541methods attempt to access system memory or I/O space. 13542 13543GPE enable/disable no longer reads the GPE enable register. We now keep 13544the 13545enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 13546thus no longer depend on the hardware to maintain these bits. 13547 13548Always clear the wake status and fixed/GPE status bits before sleep, even 13549for state S5. 13550 13551Improved the AML debugger output for displaying the GPE blocks and their 13552current status. 13553 13554Added new strings for the _OSI method, of the form "Windows 2001 SPx" 13555where 13556x = 0,1,2,3,4. 13557 13558Fixed a problem where the physical address was incorrectly calculated 13559when 13560the Load() operator was used to directly load from an Operation Region 13561(vs. 13562loading from a Field object.) Also added check for minimum table length 13563for 13564this case. 13565 13566Fix for multiple mutex acquisition. Restore original thread SyncLevel on 13567mutex release. 13568 13569Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 13570consistency with the other fields returned. 13571 13572Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 13573structure for each GPE in the system, so the size of this structure is 13574important. 13575 13576CPU stack requirement reduction: Cleaned up the method execution and 13577object 13578evaluation paths so that now a parameter structure is passed, instead of 13579copying the various method parameters over and over again. 13580 13581In evregion.c: Correctly exit and reenter the interpreter region if and 13582only if dispatching an operation region request to a user-installed 13583handler. 13584Do not exit/reenter when dispatching to a default handler (e.g., default 13585system memory or I/O handlers) 13586 13587 13588Notes for updating drivers for the new GPE support. The following 13589changes 13590must be made to ACPI-related device drivers that are attached to one or 13591more 13592GPEs: (This information will be added to the ACPI CA Programmer 13593Reference.) 13594 135951) AcpiInstallGpeHandler no longer automatically enables the GPE, you 13596must 13597explicitly call AcpiEnableGpe. 135982) There is a new interface called AcpiSetGpeType. This should be called 13599before enabling the GPE. Also, this interface will automatically disable 13600the GPE if it is currently enabled. 136013) AcpiEnableGpe no longer supports a GPE type flag. 13602 13603Specific drivers that must be changed: 136041) EC driver: 13605 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 13606AeGpeHandler, NULL); 13607 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 13608 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 13609 136102) Button Drivers (Power, Lid, Sleep): 13611Run _PRW method under parent device 13612If _PRW exists: /* This is a control-method button */ 13613 Extract GPE number and possibly GpeDevice 13614 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 13615 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 13616 13617For all other devices that have _PRWs, we automatically set the GPE type 13618to 13619ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 13620This 13621must be done on a selective basis, usually requiring some kind of user 13622app 13623to allow the user to pick the wake devices. 13624 13625 13626Code and Data Size: Current and previous core subsystem library sizes are 13627shown below. These are the code and data sizes for the acpica.lib 13628produced 13629by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13630any ACPI driver or OSPM code. The debug version of the code includes the 13631debug output trace mechanism and has a much larger code and data size. 13632Note 13633that these values will vary depending on the efficiency of the compiler 13634and 13635the compiler options used during generation. 13636 13637 Previous Release: 13638 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 13639 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 13640 Current Release: 13641 13642 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13643 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 13644 13645 13646 13647---------------------------------------- 1364802 April 2004. Summary of changes for version 20040402: 13649 136501) ACPI CA Core Subsystem: 13651 13652Fixed an interpreter problem where an indirect store through an ArgX 13653parameter was incorrectly applying the "implicit conversion rules" during 13654the store. From the ACPI specification: "If the target is a method local 13655or 13656argument (LocalX or ArgX), no conversion is performed and the result is 13657stored directly to the target". The new behavior is to disable implicit 13658conversion during ALL stores to an ArgX. 13659 13660Changed the behavior of the _PRW method scan to ignore any and all errors 13661returned by a given _PRW. This prevents the scan from aborting from the 13662failure of any single _PRW. 13663 13664Moved the runtime configuration parameters from the global init procedure 13665to 13666static variables in acglobal.h. This will allow the host to override the 13667default values easily. 13668 13669Code and Data Size: Current and previous core subsystem library sizes are 13670shown below. These are the code and data sizes for the acpica.lib 13671produced 13672by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13673any ACPI driver or OSPM code. The debug version of the code includes the 13674debug output trace mechanism and has a much larger code and data size. 13675Note 13676that these values will vary depending on the efficiency of the compiler 13677and 13678the compiler options used during generation. 13679 13680 Previous Release: 13681 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 13682 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 13683 Current Release: 13684 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 13685 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 13686 13687 136882) iASL Compiler/Disassembler: 13689 13690iASL now fully disassembles SSDTs. However, External() statements are 13691not 13692generated automatically for unresolved symbols at this time. This is a 13693planned feature for future implementation. 13694 13695Fixed a scoping problem in the disassembler that occurs when the type of 13696the 13697target of a Scope() operator is overridden. This problem caused an 13698incorrectly nested internal namespace to be constructed. 13699 13700Any warnings or errors that are emitted during disassembly are now 13701commented 13702out automatically so that the resulting file can be recompiled without 13703any 13704hand editing. 13705 13706---------------------------------------- 1370726 March 2004. Summary of changes for version 20040326: 13708 137091) ACPI CA Core Subsystem: 13710 13711Implemented support for "wake" GPEs via interaction between GPEs and the 13712_PRW methods. Every GPE that is pointed to by one or more _PRWs is 13713identified as a WAKE GPE and by default will no longer be enabled at 13714runtime. Previously, we were blindly enabling all GPEs with a 13715corresponding 13716_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 13717We 13718believe this has been the cause of thousands of "spurious" GPEs on some 13719systems. 13720 13721This new GPE behavior is can be reverted to the original behavior (enable 13722ALL GPEs at runtime) via a runtime flag. 13723 13724Fixed a problem where aliased control methods could not access objects 13725properly. The proper scope within the namespace was not initialized 13726(transferred to the target of the aliased method) before executing the 13727target method. 13728 13729Fixed a potential race condition on internal object deletion on the 13730return 13731object in AcpiEvaluateObject. 13732 13733Integrated a fix for resource descriptors where both _MEM and _MTP were 13734being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 13735wide, 0x0F instead of 0x03.) 13736 13737Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 13738preventing 13739a 13740fault in some cases. 13741 13742Updated Notify() values for debug statements in evmisc.c 13743 13744Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 13745 13746Code and Data Size: Current and previous core subsystem library sizes are 13747shown below. These are the code and data sizes for the acpica.lib 13748produced 13749by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13750any ACPI driver or OSPM code. The debug version of the code includes the 13751debug output trace mechanism and has a much larger code and data size. 13752Note 13753that these values will vary depending on the efficiency of the compiler 13754and 13755the compiler options used during generation. 13756 13757 Previous Release: 13758 13759 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 13760 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 13761 Current Release: 13762 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 13763 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 13764 13765---------------------------------------- 1376611 March 2004. Summary of changes for version 20040311: 13767 137681) ACPI CA Core Subsystem: 13769 13770Fixed a problem where errors occurring during the parse phase of control 13771method execution did not abort cleanly. For example, objects created and 13772installed in the namespace were not deleted. This caused all subsequent 13773invocations of the method to return the AE_ALREADY_EXISTS exception. 13774 13775Implemented a mechanism to force a control method to "Serialized" 13776execution 13777if the method attempts to create namespace objects. (The root of the 13778AE_ALREADY_EXISTS problem.) 13779 13780Implemented support for the predefined _OSI "internal" control method. 13781Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 13782and 13783"Windows 2001.1", and can be easily upgraded for new strings as 13784necessary. 13785This feature will allow "other" operating systems to execute the fully 13786tested, "Windows" code path through the ASL code 13787 13788Global Lock Support: Now allows multiple acquires and releases with any 13789internal thread. Removed concept of "owning thread" for this special 13790mutex. 13791 13792Fixed two functions that were inappropriately declaring large objects on 13793the 13794CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 13795during 13796method execution considerably. 13797 13798Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 13799S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 13800 13801Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 13802defined on the machine. 13803 13804Implemented two runtime options: One to force all control method 13805execution 13806to "Serialized" to mimic Windows behavior, another to disable _OSI 13807support 13808if it causes problems on a given machine. 13809 13810Code and Data Size: Current and previous core subsystem library sizes are 13811shown below. These are the code and data sizes for the acpica.lib 13812produced 13813by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13814any ACPI driver or OSPM code. The debug version of the code includes the 13815debug output trace mechanism and has a much larger code and data size. 13816Note 13817that these values will vary depending on the efficiency of the compiler 13818and 13819the compiler options used during generation. 13820 13821 Previous Release: 13822 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 13823 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 13824 Current Release: 13825 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 13826 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 13827 138282) iASL Compiler/Disassembler: 13829 13830Fixed an array size problem for FreeBSD that would cause the compiler to 13831fault. 13832 13833---------------------------------------- 1383420 February 2004. Summary of changes for version 20040220: 13835 13836 138371) ACPI CA Core Subsystem: 13838 13839Implemented execution of _SxD methods for Device objects in the 13840GetObjectInfo interface. 13841 13842Fixed calls to _SST method to pass the correct arguments. 13843 13844Added a call to _SST on wake to restore to "working" state. 13845 13846Check for End-Of-Buffer failure case in the WalkResources interface. 13847 13848Integrated fix for 64-bit alignment issue in acglobal.h by moving two 13849structures to the beginning of the file. 13850 13851After wake, clear GPE status register(s) before enabling GPEs. 13852 13853After wake, clear/enable power button. (Perhaps we should clear/enable 13854all 13855fixed events upon wake.) 13856 13857Fixed a couple of possible memory leaks in the Namespace manager. 13858 13859Integrated latest acnetbsd.h file. 13860 13861---------------------------------------- 1386211 February 2004. Summary of changes for version 20040211: 13863 13864 138651) ACPI CA Core Subsystem: 13866 13867Completed investigation and implementation of the call-by-reference 13868mechanism for control method arguments. 13869 13870Fixed a problem where a store of an object into an indexed package could 13871fail if the store occurs within a different method than the method that 13872created the package. 13873 13874Fixed a problem where the ToDecimal operator could return incorrect 13875results. 13876 13877Fixed a problem where the CopyObject operator could fail on some of the 13878more 13879obscure objects (e.g., Reference objects.) 13880 13881Improved the output of the Debug object to display buffer, package, and 13882index objects. 13883 13884Fixed a problem where constructs of the form "RefOf (ArgX)" did not 13885return 13886the expected result. 13887 13888Added permanent ACPI_REPORT_ERROR macros for all instances of the 13889ACPI_AML_INTERNAL exception. 13890 13891Integrated latest version of acfreebsd.h 13892 13893---------------------------------------- 1389416 January 2004. Summary of changes for version 20040116: 13895 13896The purpose of this release is primarily to update the copyright years in 13897each module, thus causing a huge number of diffs. There are a few small 13898functional changes, however. 13899 139001) ACPI CA Core Subsystem: 13901 13902Improved error messages when there is a problem finding one or more of 13903the 13904required base ACPI tables 13905 13906Reintroduced the definition of APIC_HEADER in actbl.h 13907 13908Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 13909 13910Removed extraneous reference to NewObj in dsmthdat.c 13911 139122) iASL compiler 13913 13914Fixed a problem introduced in December that disabled the correct 13915disassembly 13916of Resource Templates 13917 13918 13919---------------------------------------- 1392003 December 2003. Summary of changes for version 20031203: 13921 139221) ACPI CA Core Subsystem: 13923 13924Changed the initialization of Operation Regions during subsystem 13925init to perform two entire walks of the ACPI namespace; The first 13926to initialize the regions themselves, the second to execute the 13927_REG methods. This fixed some interdependencies across _REG 13928methods found on some machines. 13929 13930Fixed a problem where a Store(Local0, Local1) could simply update 13931the object reference count, and not create a new copy of the 13932object if the Local1 is uninitialized. 13933 13934Implemented support for the _SST reserved method during sleep 13935transitions. 13936 13937Implemented support to clear the SLP_TYP and SLP_EN bits when 13938waking up, this is apparently required by some machines. 13939 13940When sleeping, clear the wake status only if SleepState is not S5. 13941 13942Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 13943pointer arithmetic advanced a string pointer too far. 13944 13945Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 13946could be returned if the requested table has not been loaded. 13947 13948Within the support for IRQ resources, restructured the handling of 13949the active and edge/level bits. 13950 13951Fixed a few problems in AcpiPsxExecute() where memory could be 13952leaked under certain error conditions. 13953 13954Improved error messages for the cases where the ACPI mode could 13955not be entered. 13956 13957Code and Data Size: Current and previous core subsystem library 13958sizes are shown below. These are the code and data sizes for the 13959acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13960these values do not include any ACPI driver or OSPM code. The 13961debug version of the code includes the debug output trace 13962mechanism and has a much larger code and data size. Note that 13963these values will vary depending on the efficiency of the compiler 13964and the compiler options used during generation. 13965 13966 Previous Release (20031029): 13967 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 13968 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 13969 Current Release: 13970 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 13971 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 13972 139732) iASL Compiler/Disassembler: 13974 13975Implemented a fix for the iASL disassembler where a bad index was 13976generated. This was most noticeable on 64-bit platforms 13977 13978 13979---------------------------------------- 1398029 October 2003. Summary of changes for version 20031029: 13981 139821) ACPI CA Core Subsystem: 13983 13984 13985Fixed a problem where a level-triggered GPE with an associated 13986_Lxx control method was incorrectly cleared twice. 13987 13988Fixed a problem with the Field support code where an access can 13989occur beyond the end-of-region if the field is non-aligned but 13990extends to the very end of the parent region (resulted in an 13991AE_AML_REGION_LIMIT exception.) 13992 13993Fixed a problem with ACPI Fixed Events where an RT Clock handler 13994would not get invoked on an RTC event. The RTC event bitmasks for 13995the PM1 registers were not being initialized properly. 13996 13997Implemented support for executing _STA and _INI methods for 13998Processor objects. Although this is currently not part of the 13999ACPI specification, there is existing ASL code that depends on the 14000init-time execution of these methods. 14001 14002Implemented and deployed a GetDescriptorName function to decode 14003the various types of internal descriptors. Guards against null 14004descriptors during debug output also. 14005 14006Implemented and deployed a GetNodeName function to extract the 4- 14007character namespace node name. This function simplifies the debug 14008and error output, as well as guarding against null pointers during 14009output. 14010 14011Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 14012simplify the debug and error output of 64-bit integers. This 14013macro replaces the HIDWORD and LODWORD macros for dumping these 14014integers. 14015 14016Updated the implementation of the Stall() operator to only call 14017AcpiOsStall(), and also return an error if the operand is larger 14018than 255. This preserves the required behavior of not 14019relinquishing the processor, as would happen if AcpiOsSleep() was 14020called for "long stalls". 14021 14022Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 14023initialized are now treated as NOOPs. 14024 14025Cleaned up a handful of warnings during 64-bit generation. 14026 14027Fixed a reported error where and incorrect GPE number was passed 14028to the GPE dispatch handler. This value is only used for error 14029output, however. Used this opportunity to clean up and streamline 14030the GPE dispatch code. 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 14036 14037debug version of the code includes the debug output trace 14038mechanism and has a much larger code and data size. Note that 14039these values will vary depending on the efficiency of the compiler 14040and the compiler options used during generation. 14041 14042 Previous Release (20031002): 14043 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14044 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14045 Current Release: 14046 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 14047 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 14048 14049 140502) iASL Compiler/Disassembler: 14051 14052Updated the iASL compiler to return an error if the operand to the 14053Stall() operator is larger than 255. 14054 14055 14056---------------------------------------- 1405702 October 2003. Summary of changes for version 20031002: 14058 14059 140601) ACPI CA Core Subsystem: 14061 14062Fixed a problem with Index Fields where the index was not 14063incremented for fields that require multiple writes to the 14064index/data registers (Fields that are wider than the data 14065register.) 14066 14067Fixed a problem with all Field objects where a write could go 14068beyond the end-of-field if the field was larger than the access 14069granularity and therefore required multiple writes to complete the 14070request. An extra write beyond the end of the field could happen 14071inadvertently. 14072 14073Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 14074would incorrectly be returned if the width of the Data Register 14075was larger than the specified field access width. 14076 14077Completed fixes for LoadTable() and Unload() and verified their 14078operation. Implemented full support for the "DdbHandle" object 14079throughout the ACPI CA subsystem. 14080 14081Implemented full support for the MADT and ECDT tables in the ACPI 14082CA header files. Even though these tables are not directly 14083consumed by ACPI CA, the header definitions are useful for ACPI 14084device drivers. 14085 14086Integrated resource descriptor fixes posted to the Linux ACPI 14087list. This included checks for minimum descriptor length, and 14088support for trailing NULL strings within descriptors that have 14089optional string elements. 14090 14091Code and Data Size: Current and previous core subsystem library 14092sizes are shown below. These are the code and data sizes for the 14093acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14094these values do not include any ACPI driver or OSPM code. The 14095debug version of the code includes the debug output trace 14096mechanism and has a much larger code and data size. Note that 14097these values will vary depending on the efficiency of the compiler 14098and the compiler options used during generation. 14099 14100 Previous Release (20030918): 14101 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14102 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14103 Current Release: 14104 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14105 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14106 14107 141082) iASL Compiler: 14109 14110Implemented detection of non-ASCII characters within the input 14111source ASL file. This catches attempts to compile binary (AML) 14112files early in the compile, with an informative error message. 14113 14114Fixed a problem where the disassembler would fault if the output 14115filename could not be generated or if the output file could not be 14116opened. 14117 14118---------------------------------------- 1411918 September 2003. Summary of changes for version 20030918: 14120 14121 141221) ACPI CA Core Subsystem: 14123 14124Found and fixed a longstanding problem with the late execution of 14125the various deferred AML opcodes (such as Operation Regions, 14126Buffer Fields, Buffers, and Packages). If the name string 14127specified for the name of the new object placed the object in a 14128scope other than the current scope, the initialization/execution 14129of the opcode failed. The solution to this problem was to 14130implement a mechanism where the late execution of such opcodes 14131does not attempt to lookup/create the name a second time in an 14132incorrect scope. This fixes the "region size computed 14133incorrectly" problem. 14134 14135Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 14136Global Lock AE_BAD_PARAMETER error. 14137 14138Fixed several 64-bit issues with prototypes, casting and data 14139types. 14140 14141Removed duplicate prototype from acdisasm.h 14142 14143Fixed an issue involving EC Operation Region Detach (Shaohua Li) 14144 14145Code and Data Size: Current and previous core subsystem library 14146sizes are shown below. These are the code and data sizes for the 14147acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14148these values do not include any ACPI driver or OSPM code. The 14149debug version of the code includes the debug output trace 14150mechanism and has a much larger code and data size. Note that 14151these values will vary depending on the efficiency of the compiler 14152and the compiler options used during generation. 14153 14154 Previous Release: 14155 14156 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 14157 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 14158 Current Release: 14159 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14160 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14161 14162 141632) Linux: 14164 14165Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 14166correct sleep time in seconds. 14167 14168---------------------------------------- 1416914 July 2003. Summary of changes for version 20030619: 14170 141711) ACPI CA Core Subsystem: 14172 14173Parse SSDTs in order discovered, as opposed to reverse order 14174(Hrvoje Habjanic) 14175 14176Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 14177Klausner, 14178 Nate Lawson) 14179 14180 141812) Linux: 14182 14183Dynamically allocate SDT list (suggested by Andi Kleen) 14184 14185proc function return value cleanups (Andi Kleen) 14186 14187Correctly handle NMI watchdog during long stalls (Andrew Morton) 14188 14189Make it so acpismp=force works (reported by Andrew Morton) 14190 14191 14192---------------------------------------- 1419319 June 2003. Summary of changes for version 20030619: 14194 141951) ACPI CA Core Subsystem: 14196 14197Fix To/FromBCD, eliminating the need for an arch-specific #define. 14198 14199Do not acquire a semaphore in the S5 shutdown path. 14200 14201Fix ex_digits_needed for 0. (Takayoshi Kochi) 14202 14203Fix sleep/stall code reversal. (Andi Kleen) 14204 14205Revert a change having to do with control method calling 14206semantics. 14207 142082) Linux: 14209 14210acpiphp update (Takayoshi Kochi) 14211 14212Export acpi_disabled for sonypi (Stelian Pop) 14213 14214Mention acpismp=force in config help 14215 14216Re-add acpitable.c and acpismp=force. This improves backwards 14217 14218compatibility and also cleans up the code to a significant degree. 14219 14220Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 14221 14222---------------------------------------- 1422322 May 2003. Summary of changes for version 20030522: 14224 142251) ACPI CA Core Subsystem: 14226 14227Found and fixed a reported problem where an AE_NOT_FOUND error 14228occurred occasionally during _BST evaluation. This turned out to 14229be an Owner ID allocation issue where a called method did not get 14230a new ID assigned to it. Eventually, (after 64k calls), the Owner 14231ID UINT16 would wraparound so that the ID would be the same as the 14232caller's and the called method would delete the caller's 14233namespace. 14234 14235Implemented extended error reporting for control methods that are 14236aborted due to a run-time exception. Output includes the exact 14237AML instruction that caused the method abort, a dump of the method 14238locals and arguments at the time of the abort, and a trace of all 14239nested control method calls. 14240 14241Modified the interpreter to allow the creation of buffers of zero 14242length from the AML code. Implemented new code to ensure that no 14243attempt is made to actually allocate a memory buffer (of length 14244zero) - instead, a simple buffer object with a NULL buffer pointer 14245and length zero is created. A warning is no longer issued when 14246the AML attempts to create a zero-length buffer. 14247 14248Implemented a workaround for the "leading asterisk issue" in 14249_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 14250asterisk is automatically removed if present in any HID, UID, or 14251CID strings. The iASL compiler will still flag this asterisk as 14252an error, however. 14253 14254Implemented full support for _CID methods that return a package of 14255multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 14256now additionally returns a device _CID list if present. This 14257required a change to the external interface in order to pass an 14258ACPI_BUFFER object as a parameter since the _CID list is of 14259variable length. 14260 14261Fixed a problem with the new AE_SAME_HANDLER exception where 14262handler initialization code did not know about this exception. 14263 14264Code and Data Size: Current and previous core subsystem library 14265sizes are shown below. These are the code and data sizes for the 14266acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14267these values do not include any ACPI driver or OSPM code. The 14268debug version of the code includes the debug output trace 14269mechanism and has a much larger code and data size. Note that 14270these values will vary depending on the efficiency of the compiler 14271and the compiler options used during generation. 14272 14273 Previous Release (20030509): 14274 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 14275 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 14276 Current Release: 14277 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 14278 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 14279 14280 142812) Linux: 14282 14283Fixed a bug in which we would reinitialize the ACPI interrupt 14284after it was already working, thus disabling all ACPI and the IRQs 14285for any other device sharing the interrupt. (Thanks to Stian 14286Jordet) 14287 14288Toshiba driver update (John Belmonte) 14289 14290Return only 0 or 1 for our interrupt handler status (Andrew 14291Morton) 14292 14293 142943) iASL Compiler: 14295 14296Fixed a reported problem where multiple (nested) ElseIf() 14297statements were not handled correctly by the compiler, resulting 14298in incorrect warnings and incorrect AML code. This was a problem 14299in both the ASL parser and the code generator. 14300 14301 143024) Documentation: 14303 14304Added changes to existing interfaces, new exception codes, and new 14305text concerning reference count object management versus garbage 14306collection. 14307 14308---------------------------------------- 1430909 May 2003. Summary of changes for version 20030509. 14310 14311 143121) ACPI CA Core Subsystem: 14313 14314Changed the subsystem initialization sequence to hold off 14315installation of address space handlers until the hardware has been 14316initialized and the system has entered ACPI mode. This is because 14317the installation of space handlers can cause _REG methods to be 14318run. Previously, the _REG methods could potentially be run before 14319ACPI mode was enabled. 14320 14321Fixed some memory leak issues related to address space handler and 14322notify handler installation. There were some problems with the 14323reference count mechanism caused by the fact that the handler 14324objects are shared across several namespace objects. 14325 14326Fixed a reported problem where reference counts within the 14327namespace were not properly updated when named objects created by 14328method execution were deleted. 14329 14330Fixed a reported problem where multiple SSDTs caused a deletion 14331issue during subsystem termination. Restructured the table data 14332structures to simplify the linked lists and the related code. 14333 14334Fixed a problem where the table ID associated with secondary 14335tables (SSDTs) was not being propagated into the namespace objects 14336created by those tables. This would only present a problem for 14337tables that are unloaded at run-time, however. 14338 14339Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 14340type as the length parameter (instead of UINT32). 14341 14342Solved a long-standing problem where an ALREADY_EXISTS error 14343appears on various systems. This problem could happen when there 14344are multiple PCI_Config operation regions under a single PCI root 14345bus. This doesn't happen very frequently, but there are some 14346systems that do this in the ASL. 14347 14348Fixed a reported problem where the internal DeleteNode function 14349was incorrectly handling the case where a namespace node was the 14350first in the parent's child list, and had additional peers (not 14351the only child, but first in the list of children.) 14352 14353Code and Data Size: Current core subsystem library sizes are shown 14354below. These are the code and data sizes for the acpica.lib 14355produced by the Microsoft Visual C++ 6.0 compiler, and these 14356values do not include any ACPI driver or OSPM code. The debug 14357version of the code includes the debug output trace mechanism and 14358has a much larger code and data size. Note that these values will 14359vary depending on the efficiency of the compiler and the compiler 14360options used during generation. 14361 14362 Previous Release 14363 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 14364 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 14365 Current Release: 14366 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 14367 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 14368 14369 143702) Linux: 14371 14372Allow ":" in OS override string (Ducrot Bruno) 14373 14374Kobject fix (Greg KH) 14375 14376 143773 iASL Compiler/Disassembler: 14378 14379Fixed a problem in the generation of the C source code files (AML 14380is emitted in C source statements for BIOS inclusion) where the 14381Ascii dump that appears within a C comment at the end of each line 14382could cause a compile time error if the AML sequence happens to 14383have an open comment or close comment sequence embedded. 14384 14385 14386---------------------------------------- 1438724 April 2003. Summary of changes for version 20030424. 14388 14389 143901) ACPI CA Core Subsystem: 14391 14392Support for big-endian systems has been implemented. Most of the 14393support has been invisibly added behind big-endian versions of the 14394ACPI_MOVE_* macros. 14395 14396Fixed a problem in AcpiHwDisableGpeBlock() and 14397AcpiHwClearGpeBlock() where an incorrect offset was passed to the 14398low level hardware write routine. The offset parameter was 14399actually eliminated from the low level read/write routines because 14400they had become obsolete. 14401 14402Fixed a problem where a handler object was deleted twice during 14403the removal of a fixed event handler. 14404 14405 144062) Linux: 14407 14408A fix for SMP systems with link devices was contributed by 14409 14410Compaq's Dan Zink. 14411 14412(2.5) Return whether we handled the interrupt in our IRQ handler. 14413(Linux ISRs no longer return void, so we can propagate the handler 14414return value from the ACPI CA core back to the OS.) 14415 14416 14417 144183) Documentation: 14419 14420The ACPI CA Programmer Reference has been updated to reflect new 14421interfaces and changes to existing interfaces. 14422 14423---------------------------------------- 1442428 March 2003. Summary of changes for version 20030328. 14425 144261) ACPI CA Core Subsystem: 14427 14428The GPE Block Device support has been completed. New interfaces 14429are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 14430interfaces (enable, disable, clear, getstatus) have been split 14431into separate interfaces for Fixed Events and General Purpose 14432Events (GPEs) in order to support GPE Block Devices properly. 14433 14434Fixed a problem where the error message "Failed to acquire 14435semaphore" would appear during operations on the embedded 14436controller (EC). 14437 14438Code and Data Size: Current core subsystem library sizes are shown 14439below. These are the code and data sizes for the acpica.lib 14440produced by the Microsoft Visual C++ 6.0 compiler, and these 14441values do not include any ACPI driver or OSPM code. The debug 14442version of the code includes the debug output trace mechanism and 14443has a much larger code and data size. Note that these values will 14444vary depending on the efficiency of the compiler and the compiler 14445options used during generation. 14446 14447 Previous Release 14448 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 14449 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 14450 Current Release: 14451 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 14452 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 14453 14454 14455---------------------------------------- 1445628 February 2003. Summary of changes for version 20030228. 14457 14458 144591) ACPI CA Core Subsystem: 14460 14461The GPE handling and dispatch code has been completely overhauled 14462in preparation for support of GPE Block Devices (ID ACPI0006). 14463This affects internal data structures and code only; there should 14464be no differences visible externally. One new file has been 14465added, evgpeblk.c 14466 14467The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 14468fields that are used to determine the GPE block lengths. The 14469REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 14470structures are ignored. This is per the ACPI specification but it 14471isn't very clear. The full 256 Block 0/1 GPEs are now supported 14472(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 14473 14474In the SCI interrupt handler, removed the read of the PM1_CONTROL 14475register to look at the SCI_EN bit. On some machines, this read 14476causes an SMI event and greatly slows down SCI events. (This may 14477in fact be the cause of slow battery status response on some 14478systems.) 14479 14480Fixed a problem where a store of a NULL string to a package object 14481could cause the premature deletion of the object. This was seen 14482during execution of the battery _BIF method on some systems, 14483resulting in no battery data being returned. 14484 14485Added AcpiWalkResources interface to simplify parsing of resource 14486lists. 14487 14488Code and Data Size: Current core subsystem library sizes are shown 14489below. These are the code and data sizes for the acpica.lib 14490produced by the Microsoft Visual C++ 6.0 compiler, and these 14491values do not include any ACPI driver or OSPM code. The debug 14492version of the code includes the debug output trace mechanism and 14493has a much larger code and data size. Note that these values will 14494vary depending on the efficiency of the compiler and the compiler 14495options used during generation. 14496 14497 Previous Release 14498 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14499 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14500 Current Release: 14501 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 14502 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 14503 14504 145052) Linux 14506 14507S3 fixes (Ole Rohne) 14508 14509Update ACPI PHP driver with to use new acpi_walk_resource API 14510(Bjorn Helgaas) 14511 14512Add S4BIOS support (Pavel Machek) 14513 14514Map in entire table before performing checksum (John Stultz) 14515 14516Expand the mem= cmdline to allow the specification of reserved and 14517ACPI DATA blocks (Pavel Machek) 14518 14519Never use ACPI on VISWS 14520 14521Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 14522 14523Revert a change that allowed P_BLK lengths to be 4 or 5. This is 14524causing us to think that some systems support C2 when they really 14525don't. 14526 14527Do not count processor objects for non-present CPUs (Thanks to 14528Dominik Brodowski) 14529 14530 145313) iASL Compiler: 14532 14533Fixed a problem where ASL include files could not be found and 14534opened. 14535 14536Added support for the _PDC reserved name. 14537 14538 14539---------------------------------------- 1454022 January 2003. Summary of changes for version 20030122. 14541 14542 145431) ACPI CA Core Subsystem: 14544 14545Added a check for constructs of the form: Store (Local0, Local0) 14546where Local0 is not initialized. Apparently, some BIOS 14547programmers believe that this is a NOOP. Since this store doesn't 14548do anything anyway, the new prototype behavior will ignore this 14549error. This is a case where we can relax the strict checking in 14550the interpreter in the name of compatibility. 14551 14552 145532) Linux 14554 14555The AcpiSrc Source Conversion Utility has been released with the 14556Linux package for the first time. This is the utility that is 14557used to convert the ACPI CA base source code to the Linux version. 14558 14559(Both) Handle P_BLK lengths shorter than 6 more gracefully 14560 14561(Both) Move more headers to include/acpi, and delete an unused 14562header. 14563 14564(Both) Move drivers/acpi/include directory to include/acpi 14565 14566(Both) Boot functions don't use cmdline, so don't pass it around 14567 14568(Both) Remove include of unused header (Adrian Bunk) 14569 14570(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 14571the 14572former now also includes the latter, acpiphp.h only needs the one, 14573now. 14574 14575(2.5) Make it possible to select method of bios restoring after S3 14576resume. [=> no more ugly ifdefs] (Pavel Machek) 14577 14578(2.5) Make proc write interfaces work (Pavel Machek) 14579 14580(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 14581 14582(2.5) Break out ACPI Perf code into its own module, under cpufreq 14583(Dominik Brodowski) 14584 14585(2.4) S4BIOS support (Ducrot Bruno) 14586 14587(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 14588Visinoni) 14589 14590 145913) iASL Compiler: 14592 14593Added support to disassemble SSDT and PSDTs. 14594 14595Implemented support to obtain SSDTs from the Windows registry if 14596available. 14597 14598 14599---------------------------------------- 1460009 January 2003. Summary of changes for version 20030109. 14601 146021) ACPI CA Core Subsystem: 14603 14604Changed the behavior of the internal Buffer-to-String conversion 14605function. The current ACPI specification states that the contents 14606of the buffer are "converted to a string of two-character 14607hexadecimal numbers, each separated by a space". Unfortunately, 14608this definition is not backwards compatible with existing ACPI 1.0 14609implementations (although the behavior was not defined in the ACPI 146101.0 specification). The new behavior simply copies data from the 14611buffer to the string until a null character is found or the end of 14612the buffer is reached. The new String object is always null 14613terminated. This problem was seen during the generation of _BIF 14614battery data where incorrect strings were returned for battery 14615type, etc. This will also require an errata to the ACPI 14616specification. 14617 14618Renamed all instances of NATIVE_UINT and NATIVE_INT to 14619ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 14620 14621Copyright in all module headers (both Linux and non-Linux) has be 14622updated to 2003. 14623 14624Code and Data Size: Current core subsystem library sizes are shown 14625below. These are the code and data sizes for the acpica.lib 14626produced by the Microsoft Visual C++ 6.0 compiler, and these 14627values do not include any ACPI driver or OSPM code. The debug 14628version of the code includes the debug output trace mechanism and 14629has a much larger code and data size. Note that these values will 14630vary depending on the efficiency of the compiler and the compiler 14631options used during generation. 14632 14633 Previous Release 14634 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14635 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14636 Current Release: 14637 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14638 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14639 14640 146412) Linux 14642 14643Fixed an oops on module insertion/removal (Matthew Tippett) 14644 14645(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 14646 14647(2.5) Replace pr_debug (Randy Dunlap) 14648 14649(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 14650 14651(Both) Eliminate spawning of thread from timer callback, in favor 14652of schedule_work() 14653 14654(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 14655 14656(Both) Added define for Fixed Function HW region (Matthew Wilcox) 14657 14658(Both) Add missing statics to button.c (Pavel Machek) 14659 14660Several changes have been made to the source code translation 14661utility that generates the Linux Code in order to make the code 14662more "Linux-like": 14663 14664All typedefs on structs and unions have been removed in keeping 14665with the Linux coding style. 14666 14667Removed the non-Linux SourceSafe module revision number from each 14668module header. 14669 14670Completed major overhaul of symbols to be lowercased for linux. 14671Doubled the number of symbols that are lowercased. 14672 14673Fixed a problem where identifiers within procedure headers and 14674within quotes were not fully lower cased (they were left with a 14675starting capital.) 14676 14677Some C macros whose only purpose is to allow the generation of 16- 14678bit code are now completely removed in the Linux code, increasing 14679readability and maintainability. 14680 14681---------------------------------------- 14682 1468312 December 2002. Summary of changes for version 20021212. 14684 14685 146861) ACPI CA Core Subsystem: 14687 14688Fixed a problem where the creation of a zero-length AML Buffer 14689would cause a fault. 14690 14691Fixed a problem where a Buffer object that pointed to a static AML 14692buffer (in an ACPI table) could inadvertently be deleted, causing 14693memory corruption. 14694 14695Fixed a problem where a user buffer (passed in to the external 14696ACPI CA interfaces) could be overwritten if the buffer was too 14697small to complete the operation, causing memory corruption. 14698 14699Fixed a problem in the Buffer-to-String conversion code where a 14700string of length one was always returned, regardless of the size 14701of the input Buffer object. 14702 14703Removed the NATIVE_CHAR data type across the entire source due to 14704lack of need and lack of consistent use. 14705 14706Code and Data Size: Current core subsystem library sizes are shown 14707below. These are the code and data sizes for the acpica.lib 14708produced by the Microsoft Visual C++ 6.0 compiler, and these 14709values do not include any ACPI driver or OSPM code. The debug 14710version of the code includes the debug output trace mechanism and 14711has a much larger code and data size. Note that these values will 14712vary depending on the efficiency of the compiler and the compiler 14713options used during generation. 14714 14715 Previous Release 14716 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 14717 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 14718 Current Release: 14719 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14720 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14721 14722 14723---------------------------------------- 1472405 December 2002. Summary of changes for version 20021205. 14725 147261) ACPI CA Core Subsystem: 14727 14728Fixed a problem where a store to a String or Buffer object could 14729cause corruption of the DSDT if the object type being stored was 14730the same as the target object type and the length of the object 14731being stored was equal to or smaller than the original (existing) 14732target object. This was seen to cause corruption of battery _BIF 14733buffers if the _BIF method modified the buffer on the fly. 14734 14735Fixed a problem where an internal error was generated if a control 14736method invocation was used in an OperationRegion, Buffer, or 14737Package declaration. This was caused by the deferred parsing of 14738the control method and thus the deferred creation of the internal 14739method object. The solution to this problem was to create the 14740internal method object at the moment the method is encountered in 14741the first pass - so that subsequent references to the method will 14742able to obtain the required parameter count and thus properly 14743parse the method invocation. This problem presented itself as an 14744AE_AML_INTERNAL during the pass 1 parse phase during table load. 14745 14746Fixed a problem where the internal String object copy routine did 14747not always allocate sufficient memory for the target String object 14748and caused memory corruption. This problem was seen to cause 14749"Allocation already present in list!" errors as memory allocation 14750became corrupted. 14751 14752Implemented a new function for the evaluation of namespace objects 14753that allows the specification of the allowable return object 14754types. This simplifies a lot of code that checks for a return 14755object of one or more specific objects returned from the 14756evaluation (such as _STA, etc.) This may become and external 14757function if it would be useful to ACPI-related drivers. 14758 14759Completed another round of prefixing #defines with "ACPI_" for 14760clarity. 14761 14762Completed additional code restructuring to allow more modular 14763linking for iASL compiler and AcpiExec. Several files were split 14764creating new files. New files: nsparse.c dsinit.c evgpe.c 14765 14766Implemented an abort mechanism to terminate an executing control 14767method via the AML debugger. This feature is useful for debugging 14768control methods that depend (wait) for specific hardware 14769responses. 14770 14771Code and Data Size: Current core subsystem library sizes are shown 14772below. These are the code and data sizes for the acpica.lib 14773produced by the Microsoft Visual C++ 6.0 compiler, and these 14774values do not include any ACPI driver or OSPM code. The debug 14775version of the code includes the debug output trace mechanism and 14776has a much larger code and data size. Note that these values will 14777vary depending on the efficiency of the compiler and the compiler 14778options used during generation. 14779 14780 Previous Release 14781 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14782 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 14783 Current Release: 14784 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 14785 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 14786 14787 147882) iASL Compiler/Disassembler 14789 14790Fixed a compiler code generation problem for "Interrupt" Resource 14791Descriptors. If specified in the ASL, the optional "Resource 14792Source Index" and "Resource Source" fields were not inserted into 14793the correct location within the AML resource descriptor, creating 14794an invalid descriptor. 14795 14796Fixed a disassembler problem for "Interrupt" resource descriptors. 14797The optional "Resource Source Index" and "Resource Source" fields 14798were ignored. 14799 14800 14801---------------------------------------- 1480222 November 2002. Summary of changes for version 20021122. 14803 14804 148051) ACPI CA Core Subsystem: 14806 14807Fixed a reported problem where an object stored to a Method Local 14808or Arg was not copied to a new object during the store - the 14809object pointer was simply copied to the Local/Arg. This caused 14810all subsequent operations on the Local/Arg to also affect the 14811original source of the store operation. 14812 14813Fixed a problem where a store operation to a Method Local or Arg 14814was not completed properly if the Local/Arg contained a reference 14815(from RefOf) to a named field. The general-purpose store-to- 14816namespace-node code is now used so that this case is handled 14817automatically. 14818 14819Fixed a problem where the internal object copy routine would cause 14820a protection fault if the object being copied was a Package and 14821contained either 1) a NULL package element or 2) a nested sub- 14822package. 14823 14824Fixed a problem with the GPE initialization that resulted from an 14825ambiguity in the ACPI specification. One section of the 14826specification states that both the address and length of the GPE 14827block must be zero if the block is not supported. Another section 14828implies that only the address need be zero if the block is not 14829supported. The code has been changed so that both the address and 14830the length must be non-zero to indicate a valid GPE block (i.e., 14831if either the address or the length is zero, the GPE block is 14832invalid.) 14833 14834Code and Data Size: Current core subsystem library sizes are shown 14835below. These are the code and data sizes for the acpica.lib 14836produced by the Microsoft Visual C++ 6.0 compiler, and these 14837values do not include any ACPI driver or OSPM code. The debug 14838version of the code includes the debug output trace mechanism and 14839has a much larger code and data size. Note that these values will 14840vary depending on the efficiency of the compiler and the compiler 14841options used during generation. 14842 14843 Previous Release 14844 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 14845 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 14846 Current Release: 14847 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14848 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 14849 14850 148512) Linux 14852 14853Cleaned up EC driver. Exported an external EC read/write 14854interface. By going through this, other drivers (most notably 14855sonypi) will be able to serialize access to the EC. 14856 14857 148583) iASL Compiler/Disassembler 14859 14860Implemented support to optionally generate include files for both 14861ASM and C (the -i switch). This simplifies BIOS development by 14862automatically creating include files that contain external 14863declarations for the symbols that are created within the 14864 14865(optionally generated) ASM and C AML source files. 14866 14867 14868---------------------------------------- 1486915 November 2002. Summary of changes for version 20021115. 14870 148711) ACPI CA Core Subsystem: 14872 14873Fixed a memory leak problem where an error during resolution of 14874 14875method arguments during a method invocation from another method 14876failed to cleanup properly by deleting all successfully resolved 14877argument objects. 14878 14879Fixed a problem where the target of the Index() operator was not 14880correctly constructed if the source object was a package. This 14881problem has not been detected because the use of a target operand 14882with Index() is very rare. 14883 14884Fixed a problem with the Index() operator where an attempt was 14885made to delete the operand objects twice. 14886 14887Fixed a problem where an attempt was made to delete an operand 14888twice during execution of the CondRefOf() operator if the target 14889did not exist. 14890 14891Implemented the first of perhaps several internal create object 14892functions that create and initialize a specific object type. This 14893consolidates duplicated code wherever the object is created, thus 14894shrinking the size of the subsystem. 14895 14896Implemented improved debug/error messages for errors that occur 14897during nested method invocations. All executing method pathnames 14898are displayed (with the error) as the call stack is unwound - thus 14899simplifying debug. 14900 14901Fixed a problem introduced in the 10/02 release that caused 14902premature deletion of a buffer object if a buffer was used as an 14903ASL operand where an integer operand is required (Thus causing an 14904implicit object conversion from Buffer to Integer.) The change in 14905the 10/02 release was attempting to fix a memory leak (albeit 14906incorrectly.) 14907 14908Code and Data Size: Current core subsystem library sizes are shown 14909below. These are the code and data sizes for the acpica.lib 14910produced by the Microsoft Visual C++ 6.0 compiler, and these 14911values do not include any ACPI driver or OSPM code. The debug 14912version of the code includes the debug output trace mechanism and 14913has a much larger code and data size. Note that these values will 14914vary depending on the efficiency of the compiler and the compiler 14915options used during generation. 14916 14917 Previous Release 14918 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 14919 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 14920 Current Release: 14921 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 14922 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 14923 14924 149252) Linux 14926 14927Changed the implementation of the ACPI semaphores to use down() 14928instead of down_interruptable(). It is important that the 14929execution of ACPI control methods not be interrupted by signals. 14930Methods must run to completion, or the system may be left in an 14931unknown/unstable state. 14932 14933Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 14934(Shawn Starr) 14935 14936 149373) iASL Compiler/Disassembler 14938 14939 14940Changed the default location of output files. All output files 14941are now placed in the current directory by default instead of in 14942the directory of the source file. This change may affect some 14943existing makefiles, but it brings the behavior of the compiler in 14944line with other similar tools. The location of the output files 14945can be overridden with the -p command line switch. 14946 14947 14948---------------------------------------- 1494911 November 2002. Summary of changes for version 20021111. 14950 14951 149520) ACPI Specification 2.0B is released and is now available at: 14953http://www.acpi.info/index.html 14954 14955 149561) ACPI CA Core Subsystem: 14957 14958Implemented support for the ACPI 2.0 SMBus Operation Regions. 14959This includes the early detection and handoff of the request to 14960the SMBus region handler (avoiding all of the complex field 14961support code), and support for the bidirectional return packet 14962from an SMBus write operation. This paves the way for the 14963development of SMBus drivers in each host operating system. 14964 14965Fixed a problem where the semaphore WAIT_FOREVER constant was 14966defined as 32 bits, but must be 16 bits according to the ACPI 14967specification. This had the side effect of causing ASL 14968Mutex/Event timeouts even though the ASL code requested a wait 14969forever. Changed all internal references to the ACPI timeout 14970parameter to 16 bits to prevent future problems. Changed the name 14971of WAIT_FOREVER to ACPI_WAIT_FOREVER. 14972 14973Code and Data Size: Current core subsystem library sizes are shown 14974below. These are the code and data sizes for the acpica.lib 14975produced by the Microsoft Visual C++ 6.0 compiler, and these 14976values do not include any ACPI driver or OSPM code. The debug 14977version of the code includes the debug output trace mechanism and 14978has a much larger code and data size. Note that these values will 14979vary depending on the efficiency of the compiler and the compiler 14980options used during generation. 14981 14982 Previous Release 14983 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14984 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 14985 Current Release: 14986 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 14987 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 14988 14989 149902) Linux 14991 14992Module loading/unloading fixes (John Cagle) 14993 14994 149953) iASL Compiler/Disassembler 14996 14997Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 14998 14999Implemented support for the disassembly of all SMBus protocol 15000keywords (SMBQuick, SMBWord, etc.) 15001 15002---------------------------------------- 1500301 November 2002. Summary of changes for version 20021101. 15004 15005 150061) ACPI CA Core Subsystem: 15007 15008Fixed a problem where platforms that have a GPE1 block but no GPE0 15009block were not handled correctly. This resulted in a "GPE 15010overlap" error message. GPE0 is no longer required. 15011 15012Removed code added in the previous release that inserted nodes 15013into the namespace in alphabetical order. This caused some side- 15014effects on various machines. The root cause of the problem is 15015still under investigation since in theory, the internal ordering 15016of the namespace nodes should not matter. 15017 15018 15019Enhanced error reporting for the case where a named object is not 15020found during control method execution. The full ACPI namepath 15021(name reference) of the object that was not found is displayed in 15022this case. 15023 15024Note: as a result of the overhaul of the namespace object types in 15025the previous release, the namespace nodes for the predefined 15026scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 15027instead of ACPI_TYPE_ANY. This simplifies the namespace 15028management code but may affect code that walks the namespace tree 15029looking for specific object types. 15030 15031Code and Data Size: Current core subsystem library sizes are shown 15032below. These are the code and data sizes for the acpica.lib 15033produced by the Microsoft Visual C++ 6.0 compiler, and these 15034values do not include any ACPI driver or OSPM code. The debug 15035version of the code includes the debug output trace mechanism and 15036has a much larger code and data size. Note that these values will 15037vary depending on the efficiency of the compiler and the compiler 15038options used during generation. 15039 15040 Previous Release 15041 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15042 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15043 Current Release: 15044 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15045 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 15046 15047 150482) Linux 15049 15050Fixed a problem introduced in the previous release where the 15051Processor and Thermal objects were not recognized and installed in 15052/proc. This was related to the scope type change described above. 15053 15054 150553) iASL Compiler/Disassembler 15056 15057Implemented the -g option to get all of the required ACPI tables 15058from the registry and save them to files (Windows version of the 15059compiler only.) The required tables are the FADT, FACS, and DSDT. 15060 15061Added ACPI table checksum validation during table disassembly in 15062order to catch corrupted tables. 15063 15064 15065---------------------------------------- 1506622 October 2002. Summary of changes for version 20021022. 15067 150681) ACPI CA Core Subsystem: 15069 15070Implemented a restriction on the Scope operator that the target 15071must already exist in the namespace at the time the operator is 15072encountered (during table load or method execution). In other 15073words, forward references are not allowed and Scope() cannot 15074create a new object. This changes the previous behavior where the 15075interpreter would create the name if not found. This new behavior 15076correctly enables the search-to-root algorithm during namespace 15077lookup of the target name. Because of this upsearch, this fixes 15078the known Compaq _SB_.OKEC problem and makes both the AML 15079interpreter and iASL compiler compatible with other ACPI 15080implementations. 15081 15082Completed a major overhaul of the internal ACPI object types for 15083the ACPI Namespace and the associated operand objects. Many of 15084these types had become obsolete with the introduction of the two- 15085pass namespace load. This cleanup simplifies the code and makes 15086the entire namespace load mechanism much clearer and easier to 15087understand. 15088 15089Improved debug output for tracking scope opening/closing to help 15090diagnose scoping issues. The old scope name as well as the new 15091scope name are displayed. Also improved error messages for 15092problems with ASL Mutex objects and error messages for GPE 15093problems. 15094 15095Cleaned up the namespace dump code, removed obsolete code. 15096 15097All string output (for all namespace/object dumps) now uses the 15098common ACPI string output procedure which handles escapes properly 15099and does not emit non-printable characters. 15100 15101Fixed some issues with constants in the 64-bit version of the 15102local C library (utclib.c) 15103 15104 151052) Linux 15106 15107EC Driver: No longer attempts to acquire the Global Lock at 15108interrupt level. 15109 15110 151113) iASL Compiler/Disassembler 15112 15113Implemented ACPI 2.0B grammar change that disallows all Type 1 and 151142 opcodes outside of a control method. This means that the 15115"executable" operators (versus the "namespace" operators) cannot 15116be used at the table level; they can only be used within a control 15117method. 15118 15119Implemented the restriction on the Scope() operator where the 15120target must already exist in the namespace at the time the 15121operator is encountered (during ASL compilation). In other words, 15122forward references are not allowed and Scope() cannot create a new 15123object. This makes the iASL compiler compatible with other ACPI 15124implementations and makes the Scope() implementation adhere to the 15125ACPI specification. 15126 15127Fixed a problem where namepath optimization for the Alias operator 15128was optimizing the wrong path (of the two namepaths.) This caused 15129a "Missing alias link" error message. 15130 15131Fixed a problem where an "unknown reserved name" warning could be 15132incorrectly generated for names like "_SB" when the trailing 15133underscore is not used in the original ASL. 15134 15135Fixed a problem where the reserved name check did not handle 15136NamePaths with multiple NameSegs correctly. The first nameseg of 15137the NamePath was examined instead of the last NameSeg. 15138 15139 15140---------------------------------------- 15141 1514202 October 2002. Summary of changes for this release. 15143 15144 151451) ACPI CA Core Subsystem version 20021002: 15146 15147Fixed a problem where a store/copy of a string to an existing 15148string did not always set the string length properly in the String 15149object. 15150 15151Fixed a reported problem with the ToString operator where the 15152behavior was identical to the ToHexString operator instead of just 15153simply converting a raw buffer to a string data type. 15154 15155Fixed a problem where CopyObject and the other "explicit" 15156conversion operators were not updating the internal namespace node 15157type as part of the store operation. 15158 15159Fixed a memory leak during implicit source operand conversion 15160where the original object was not deleted if it was converted to a 15161new object of a different type. 15162 15163Enhanced error messages for all problems associated with namespace 15164lookups. Common procedure generates and prints the lookup name as 15165well as the formatted status. 15166 15167Completed implementation of a new design for the Alias support 15168within the namespace. The existing design did not handle the case 15169where a new object was assigned to one of the two names due to the 15170use of an explicit conversion operator, resulting in the two names 15171pointing to two different objects. The new design simply points 15172the Alias name to the original name node - not to the object. 15173This results in a level of indirection that must be handled in the 15174name resolution mechanism. 15175 15176Code and Data Size: Current core subsystem library sizes are shown 15177below. These are the code and data sizes for the acpica.lib 15178produced by the Microsoft Visual C++ 6.0 compiler, and these 15179values do not include any ACPI driver or OSPM code. The debug 15180version of the code includes the debug output trace mechanism and 15181has a larger code and data size. Note that these values will vary 15182depending on the efficiency of the compiler and the compiler 15183options used during generation. 15184 15185 Previous Release 15186 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15187 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 15188 Current Release: 15189 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15190 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15191 15192 151932) Linux 15194 15195Initialize thermal driver's timer before it is used. (Knut 15196Neumann) 15197 15198Allow handling negative celsius values. (Kochi Takayoshi) 15199 15200Fix thermal management and make trip points. R/W (Pavel Machek) 15201 15202Fix /proc/acpi/sleep. (P. Christeas) 15203 15204IA64 fixes. (David Mosberger) 15205 15206Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 15207 15208Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 15209Brodowski) 15210 15211 152123) iASL Compiler/Disassembler 15213 15214Clarified some warning/error messages. 15215 15216 15217---------------------------------------- 1521818 September 2002. Summary of changes for this release. 15219 15220 152211) ACPI CA Core Subsystem version 20020918: 15222 15223Fixed a reported problem with reference chaining (via the Index() 15224and RefOf() operators) in the ObjectType() and SizeOf() operators. 15225The definition of these operators includes the dereferencing of 15226all chained references to return information on the base object. 15227 15228Fixed a problem with stores to indexed package elements - the 15229existing code would not complete the store if an "implicit 15230conversion" was not performed. In other words, if the existing 15231object (package element) was to be replaced completely, the code 15232didn't handle this case. 15233 15234Relaxed typechecking on the ASL "Scope" operator to allow the 15235target name to refer to an object of type Integer, String, or 15236Buffer, in addition to the scoping object types (Device, 15237predefined Scopes, Processor, PowerResource, and ThermalZone.) 15238This allows existing AML code that has workarounds for a bug in 15239Windows to function properly. A warning is issued, however. This 15240affects both the AML interpreter and the iASL compiler. Below is 15241an example of this type of ASL code: 15242 15243 Name(DEB,0x00) 15244 Scope(DEB) 15245 { 15246 15247Fixed some reported problems with 64-bit integer support in the 15248local implementation of C library functions (clib.c) 15249 15250 152512) Linux 15252 15253Use ACPI fix map region instead of IOAPIC region, since it is 15254undefined in non-SMP. 15255 15256Ensure that the SCI has the proper polarity and trigger, even on 15257systems that do not have an interrupt override entry in the MADT. 15258 152592.5 big driver reorganization (Pat Mochel) 15260 15261Use early table mapping code from acpitable.c (Andi Kleen) 15262 15263New blacklist entries (Andi Kleen) 15264 15265Blacklist improvements. Split blacklist code out into a separate 15266file. Move checking the blacklist to very early. Previously, we 15267would use ACPI tables, and then halfway through init, check the 15268blacklist -- too late. Now, it's early enough to completely fall- 15269back to non-ACPI. 15270 15271 152723) iASL Compiler/Disassembler version 20020918: 15273 15274Fixed a problem where the typechecking code didn't know that an 15275alias could point to a method. In other words, aliases were not 15276being dereferenced during typechecking. 15277 15278 15279---------------------------------------- 1528029 August 2002. Summary of changes for this release. 15281 152821) ACPI CA Core Subsystem Version 20020829: 15283 15284If the target of a Scope() operator already exists, it must be an 15285object type that actually opens a scope -- such as a Device, 15286Method, Scope, etc. This is a fatal runtime error. Similar error 15287check has been added to the iASL compiler also. 15288 15289Tightened up the namespace load to disallow multiple names in the 15290same scope. This previously was allowed if both objects were of 15291the same type. (i.e., a lookup was the same as entering a new 15292name). 15293 15294 152952) Linux 15296 15297Ensure that the ACPI interrupt has the proper trigger and 15298polarity. 15299 15300local_irq_disable is extraneous. (Matthew Wilcox) 15301 15302Make "acpi=off" actually do what it says, and not use the ACPI 15303interpreter *or* the tables. 15304 15305Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 15306Takayoshi) 15307 15308 153093) iASL Compiler/Disassembler Version 20020829: 15310 15311Implemented namepath optimization for name declarations. For 15312example, a declaration like "Method (\_SB_.ABCD)" would get 15313optimized to "Method (ABCD)" if the declaration is within the 15314\_SB_ scope. This optimization is in addition to the named 15315reference path optimization first released in the previous 15316version. This would seem to complete all possible optimizations 15317for namepaths within the ASL/AML. 15318 15319If the target of a Scope() operator already exists, it must be an 15320object type that actually opens a scope -- such as a Device, 15321Method, Scope, etc. 15322 15323Implemented a check and warning for unreachable code in the same 15324block below a Return() statement. 15325 15326Fixed a problem where the listing file was not generated if the 15327compiler aborted if the maximum error count was exceeded (200). 15328 15329Fixed a problem where the typechecking of method return values was 15330broken. This includes the check for a return value when the 15331method is invoked as a TermArg (a return value is expected.) 15332 15333Fixed a reported problem where EOF conditions during a quoted 15334string or comment caused a fault. 15335 15336 15337---------------------------------------- 1533815 August 2002. Summary of changes for this release. 15339 153401) ACPI CA Core Subsystem Version 20020815: 15341 15342Fixed a reported problem where a Store to a method argument that 15343contains a reference did not perform the indirect store correctly. 15344This problem was created during the conversion to the new 15345reference object model - the indirect store to a method argument 15346code was not updated to reflect the new model. 15347 15348Reworked the ACPI mode change code to better conform to ACPI 2.0, 15349handle corner cases, and improve code legibility (Kochi Takayoshi) 15350 15351Fixed a problem with the pathname parsing for the carat (^) 15352prefix. The heavy use of the carat operator by the new namepath 15353optimization in the iASL compiler uncovered a problem with the AML 15354interpreter handling of this prefix. In the case where one or 15355more carats precede a single nameseg, the nameseg was treated as 15356standalone and the search rule (to root) was inadvertently 15357applied. This could cause both the iASL compiler and the 15358interpreter to find the wrong object or to miss the error that 15359should occur if the object does not exist at that exact pathname. 15360 15361Found and fixed the problem where the HP Pavilion DSDT would not 15362load. This was a relatively minor tweak to the table loading code 15363(a problem caused by the unexpected encounter with a method 15364invocation not within a control method), but it does not solve the 15365overall issue of the execution of AML code at the table level. 15366This investigation is still ongoing. 15367 15368Code and Data Size: Current core subsystem library sizes are shown 15369below. These are the code and data sizes for the acpica.lib 15370produced by the Microsoft Visual C++ 6.0 compiler, and these 15371values do not include any ACPI driver or OSPM code. The debug 15372version of the code includes the debug output trace mechanism and 15373has a larger code and data size. Note that these values will vary 15374depending on the efficiency of the compiler and the compiler 15375options used during generation. 15376 15377 Previous Release 15378 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 15379 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 15380 Current Release: 15381 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15382 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 15383 15384 153852) Linux 15386 15387Remove redundant slab.h include (Brad Hards) 15388 15389Fix several bugs in thermal.c (Herbert Nachtnebel) 15390 15391Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 15392 15393Change acpi_system_suspend to use updated irq functions (Pavel 15394Machek) 15395 15396Export acpi_get_firmware_table (Matthew Wilcox) 15397 15398Use proper root proc entry for ACPI (Kochi Takayoshi) 15399 15400Fix early-boot table parsing (Bjorn Helgaas) 15401 15402 154033) iASL Compiler/Disassembler 15404 15405Reworked the compiler options to make them more consistent and to 15406use two-letter options where appropriate. We were running out of 15407sensible letters. This may break some makefiles, so check the 15408current options list by invoking the compiler with no parameters. 15409 15410Completed the design and implementation of the ASL namepath 15411optimization option for the compiler. This option optimizes all 15412references to named objects to the shortest possible path. The 15413first attempt tries to utilize a single nameseg (4 characters) and 15414the "search-to-root" algorithm used by the interpreter. If that 15415cannot be used (because either the name is not in the search path 15416or there is a conflict with another object with the same name), 15417the pathname is optimized using the carat prefix (usually a 15418shorter string than specifying the entire path from the root.) 15419 15420Implemented support to obtain the DSDT from the Windows registry 15421(when the disassembly option is specified with no input file). 15422Added this code as the implementation for AcpiOsTableOverride in 15423the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 15424utility) to scan memory for the DSDT to the AcpiOsTableOverride 15425function in the DOS OSL to make the disassembler truly OS 15426independent. 15427 15428Implemented a new option to disassemble and compile in one step. 15429When used without an input filename, this option will grab the 15430DSDT from the local machine, disassemble it, and compile it in one 15431step. 15432 15433Added a warning message for invalid escapes (a backslash followed 15434by any character other than the allowable escapes). This catches 15435the quoted string error "\_SB_" (which should be "\\_SB_" ). 15436 15437Also, there are numerous instances in the ACPI specification where 15438this error occurs. 15439 15440Added a compiler option to disable all optimizations. This is 15441basically the "compatibility mode" because by using this option, 15442the AML code will come out exactly the same as other ASL 15443compilers. 15444 15445Added error messages for incorrectly ordered dependent resource 15446functions. This includes: missing EndDependentFn macro at end of 15447dependent resource list, nested dependent function macros (both 15448start and end), and missing StartDependentFn macro. These are 15449common errors that should be caught at compile time. 15450 15451Implemented _OSI support for the disassembler and compiler. _OSI 15452must be included in the namespace for proper disassembly (because 15453the disassembler must know the number of arguments.) 15454 15455Added an "optimization" message type that is optional (off by 15456default). This message is used for all optimizations - including 15457constant folding, integer optimization, and namepath optimization. 15458 15459---------------------------------------- 1546025 July 2002. Summary of changes for this release. 15461 15462 154631) ACPI CA Core Subsystem Version 20020725: 15464 15465The AML Disassembler has been enhanced to produce compilable ASL 15466code and has been integrated into the iASL compiler (see below) as 15467well as the single-step disassembly for the AML debugger and the 15468disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 15469resource templates and macros are fully supported. The 15470disassembler has been tested on over 30 different AML files, 15471producing identical AML when the resulting disassembled ASL file 15472is recompiled with the same ASL compiler. 15473 15474Modified the Resource Manager to allow zero interrupts and zero 15475dma channels during the GetCurrentResources call. This was 15476causing problems on some platforms. 15477 15478Added the AcpiOsRedirectOutput interface to the OSL to simplify 15479output redirection for the AcpiOsPrintf and AcpiOsVprintf 15480interfaces. 15481 15482Code and Data Size: Current core subsystem library sizes are shown 15483below. These are the code and data sizes for the acpica.lib 15484produced by the Microsoft Visual C++ 6.0 compiler, and these 15485values do not include any ACPI driver or OSPM code. The debug 15486version of the code includes the debug output trace mechanism and 15487has a larger code and data size. Note that these values will vary 15488depending on the efficiency of the compiler and the compiler 15489options used during generation. 15490 15491 Previous Release 15492 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 15493 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 15494 Current Release: 15495 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 15496 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 15497 15498 154992) Linux 15500 15501Fixed a panic in the EC driver (Dominik Brodowski) 15502 15503Implemented checksum of the R/XSDT itself during Linux table scan 15504(Richard Schaal) 15505 15506 155073) iASL compiler 15508 15509The AML disassembler is integrated into the compiler. The "-d" 15510option invokes the disassembler to completely disassemble an 15511input AML file, producing as output a text ASL file with the 15512extension ".dsl" (to avoid name collisions with existing .asl 15513source files.) A future enhancement will allow the disassembler 15514to obtain the BIOS DSDT from the registry under Windows. 15515 15516Fixed a problem with the VendorShort and VendorLong resource 15517descriptors where an invalid AML sequence was created. 15518 15519Implemented a fix for BufferData term in the ASL parser. It was 15520inadvertently defined twice, allowing invalid syntax to pass and 15521causing reduction conflicts. 15522 15523Fixed a problem where the Ones opcode could get converted to a 15524value of zero if "Ones" was used where a byte, word or dword value 15525was expected. The 64-bit value is now truncated to the correct 15526size with the correct value. 15527 15528 15529 15530---------------------------------------- 1553102 July 2002. Summary of changes for this release. 15532 15533 155341) ACPI CA Core Subsystem Version 20020702: 15535 15536The Table Manager code has been restructured to add several new 15537features. Tables that are not required by the core subsystem 15538(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 15539validated in any way and are returned from AcpiGetFirmwareTable if 15540requested. The AcpiOsTableOverride interface is now called for 15541each table that is loaded by the subsystem in order to allow the 15542host to override any table it chooses. Previously, only the DSDT 15543could be overridden. Added one new files, tbrsdt.c and 15544tbgetall.c. 15545 15546Fixed a problem with the conversion of internal package objects to 15547external objects (when a package is returned from a control 15548method.) The return buffer length was set to zero instead of the 15549proper length of the package object. 15550 15551Fixed a reported problem with the use of the RefOf and DeRefOf 15552operators when passing reference arguments to control methods. A 15553new type of Reference object is used internally for references 15554produced by the RefOf operator. 15555 15556Added additional error messages in the Resource Manager to explain 15557AE_BAD_DATA errors when they occur during resource parsing. 15558 15559Split the AcpiEnableSubsystem into two primitives to enable a 15560finer granularity initialization sequence. These two calls should 15561be called in this order: AcpiEnableSubsystem (flags), 15562AcpiInitializeObjects (flags). The flags parameter remains the 15563same. 15564 15565 155662) Linux 15567 15568Updated the ACPI utilities module to understand the new style of 15569fully resolved package objects that are now returned from the core 15570subsystem. This eliminates errors of the form: 15571 15572 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 15573 acpi_utils-0430 [145] acpi_evaluate_reference: 15574 Invalid element in package (not a device reference) 15575 15576The method evaluation utility uses the new buffer allocation 15577scheme instead of calling AcpiEvaluate Object twice. 15578 15579Added support for ECDT. This allows the use of the Embedded 15580 15581Controller before the namespace has been fully initialized, which 15582is necessary for ACPI 2.0 support, and for some laptops to 15583initialize properly. (Laptops using ECDT are still rare, so only 15584limited testing was performed of the added functionality.) 15585 15586Fixed memory leaks in the EC driver. 15587 15588Eliminated a brittle code structure in acpi_bus_init(). 15589 15590Eliminated the acpi_evaluate() helper function in utils.c. It is 15591no longer needed since acpi_evaluate_object can optionally 15592allocate memory for the return object. 15593 15594Implemented fix for keyboard hang when getting battery readings on 15595some systems (Stephen White) 15596 15597PCI IRQ routing update (Dominik Brodowski) 15598 15599Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 15600support 15601 15602---------------------------------------- 1560311 June 2002. Summary of changes for this release. 15604 15605 156061) ACPI CA Core Subsystem Version 20020611: 15607 15608Fixed a reported problem where constants such as Zero and One 15609appearing within _PRT packages were not handled correctly within 15610the resource manager code. Originally reported against the ASL 15611compiler because the code generator now optimizes integers to 15612their minimal AML representation (i.e. AML constants if possible.) 15613The _PRT code now handles all AML constant opcodes correctly 15614(Zero, One, Ones, Revision). 15615 15616Fixed a problem with the Concatenate operator in the AML 15617interpreter where a buffer result object was incorrectly marked as 15618not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 15619 15620All package sub-objects are now fully resolved before they are 15621returned from the external ACPI interfaces. This means that name 15622strings are resolved to object handles, and constant operators 15623(Zero, One, Ones, Revision) are resolved to Integers. 15624 15625Implemented immediate resolution of the AML Constant opcodes 15626(Zero, One, Ones, Revision) to Integer objects upon detection 15627within the AML stream. This has simplified and reduced the 15628generated code size of the subsystem by eliminating about 10 15629switch statements for these constants (which previously were 15630contained in Reference objects.) The complicating issues are that 15631the Zero opcode is used as a "placeholder" for unspecified 15632optional target operands and stores to constants are defined to be 15633no-ops. 15634 15635Code and Data Size: Current core subsystem library sizes are shown 15636below. These are the code and data sizes for the acpica.lib 15637produced by the Microsoft Visual C++ 6.0 compiler, and these 15638values do not include any ACPI driver or OSPM code. The debug 15639version of the code includes the debug output trace mechanism and 15640has a larger code and data size. Note that these values will vary 15641depending on the efficiency of the compiler and the compiler 15642options used during generation. 15643 15644 Previous Release 15645 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 15646 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 15647 Current Release: 15648 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 15649 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 15650 15651 156522) Linux 15653 15654 15655Added preliminary support for obtaining _TRA data for PCI root 15656bridges (Bjorn Helgaas). 15657 15658 156593) iASL Compiler Version X2046: 15660 15661Fixed a problem where the "_DDN" reserved name was defined to be a 15662control method with one argument. There are no arguments, and 15663_DDN does not have to be a control method. 15664 15665Fixed a problem with the Linux version of the compiler where the 15666source lines printed with error messages were the wrong lines. 15667This turned out to be the "LF versus CR/LF" difference between 15668Windows and Unix. This appears to be the longstanding issue 15669concerning listing output and error messages. 15670 15671Fixed a problem with the Linux version of compiler where opcode 15672names within error messages were wrong. This was caused by a 15673slight difference in the output of the Flex tool on Linux versus 15674Windows. 15675 15676Fixed a problem with the Linux compiler where the hex output files 15677contained some garbage data caused by an internal buffer overrun. 15678 15679 15680---------------------------------------- 1568117 May 2002. Summary of changes for this release. 15682 15683 156841) ACPI CA Core Subsystem Version 20020517: 15685 15686Implemented a workaround to an BIOS bug discovered on the HP 15687OmniBook where the FADT revision number and the table size are 15688inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 15689behavior is to fallback to using only the ACPI 1.0 fields of the 15690FADT if the table is too small to be a ACPI 2.0 table as claimed 15691by the revision number. Although this is a BIOS bug, this is a 15692case where the workaround is simple enough and with no side 15693effects, so it seemed prudent to add it. A warning message is 15694issued, however. 15695 15696Implemented minimum size checks for the fixed-length ACPI tables - 15697- the FADT and FACS, as well as consistency checks between the 15698revision number and the table size. 15699 15700Fixed a reported problem in the table override support where the 15701new table pointer was incorrectly treated as a physical address 15702instead of a logical address. 15703 15704Eliminated the use of the AE_AML_ERROR exception and replaced it 15705with more descriptive codes. 15706 15707Fixed a problem where an exception would occur if an ASL Field was 15708defined with no named Field Units underneath it (used by some 15709index fields). 15710 15711Code and Data Size: Current core subsystem library sizes are shown 15712below. These are the code and data sizes for the acpica.lib 15713produced by the Microsoft Visual C++ 6.0 compiler, and these 15714values do not include any ACPI driver or OSPM code. The debug 15715version of the code includes the debug output trace mechanism and 15716has a larger code and data size. Note that these values will vary 15717depending on the efficiency of the compiler and the compiler 15718options used during generation. 15719 15720 Previous Release 15721 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 15722 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 15723 Current Release: 15724 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 15725 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 15726 15727 15728 157292) Linux 15730 15731Much work done on ACPI init (MADT and PCI IRQ routing support). 15732(Paul D. and Dominik Brodowski) 15733 15734Fix PCI IRQ-related panic on boot (Sam Revitch) 15735 15736Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 15737 15738Fix "MHz" typo (Dominik Brodowski) 15739 15740Fix RTC year 2000 issue (Dominik Brodowski) 15741 15742Preclude multiple button proc entries (Eric Brunet) 15743 15744Moved arch-specific code out of include/platform/aclinux.h 15745 157463) iASL Compiler Version X2044: 15747 15748Implemented error checking for the string used in the EISAID macro 15749(Usually used in the definition of the _HID object.) The code now 15750strictly enforces the PnP format - exactly 7 characters, 3 15751uppercase letters and 4 hex digits. 15752 15753If a raw string is used in the definition of the _HID object 15754(instead of the EISAID macro), the string must contain all 15755alphanumeric characters (e.g., "*PNP0011" is not allowed because 15756of the asterisk.) 15757 15758Implemented checking for invalid use of ACPI reserved names for 15759most of the name creation operators (Name, Device, Event, Mutex, 15760OperationRegion, PowerResource, Processor, and ThermalZone.) 15761Previously, this check was only performed for control methods. 15762 15763Implemented an additional check on the Name operator to emit an 15764error if a reserved name that must be implemented in ASL as a 15765control method is used. We know that a reserved name must be a 15766method if it is defined with input arguments. 15767 15768The warning emitted when a namespace object reference is not found 15769during the cross reference phase has been changed into an error. 15770The "External" directive should be used for names defined in other 15771modules. 15772 15773 157744) Tools and Utilities 15775 15776The 16-bit tools (adump16 and aexec16) have been regenerated and 15777tested. 15778 15779Fixed a problem with the output of both acpidump and adump16 where 15780the indentation of closing parentheses and brackets was not 15781 15782aligned properly with the parent block. 15783 15784 15785---------------------------------------- 1578603 May 2002. Summary of changes for this release. 15787 15788 157891) ACPI CA Core Subsystem Version 20020503: 15790 15791Added support a new OSL interface that allows the host operating 15792 15793system software to override the DSDT found in the firmware - 15794AcpiOsTableOverride. With this interface, the OSL can examine the 15795version of the firmware DSDT and replace it with a different one 15796if desired. 15797 15798Added new external interfaces for accessing ACPI registers from 15799device drivers and other system software - AcpiGetRegister and 15800AcpiSetRegister. This was simply an externalization of the 15801existing AcpiHwBitRegister interfaces. 15802 15803Fixed a regression introduced in the previous build where the 15804ASL/AML CreateField operator always returned an error, 15805"destination must be a NS Node". 15806 15807Extended the maximum time (before failure) to successfully enable 15808ACPI mode to 3 seconds. 15809 15810Code and Data Size: Current core subsystem library sizes are shown 15811below. These are the code and data sizes for the acpica.lib 15812produced by the Microsoft Visual C++ 6.0 compiler, and these 15813values do not include any ACPI driver or OSPM code. The debug 15814version of the code includes the debug output trace mechanism and 15815has a larger code and data size. Note that these values will vary 15816depending on the efficiency of the compiler and the compiler 15817options used during generation. 15818 15819 Previous Release 15820 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 15821 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 15822 Current Release: 15823 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 15824 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 15825 15826 158272) Linux 15828 15829Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 15830free. While 3 out of 4 of our in-house systems work fine, the last 15831one still hangs when testing the LAPIC timer. 15832 15833Renamed many files in 2.5 kernel release to omit "acpi_" from the 15834name. 15835 15836Added warning on boot for Presario 711FR. 15837 15838Sleep improvements (Pavel Machek) 15839 15840ACPI can now be built without CONFIG_PCI enabled. 15841 15842IA64: Fixed memory map functions (JI Lee) 15843 15844 158453) iASL Compiler Version X2043: 15846 15847Added support to allow the compiler to be integrated into the MS 15848VC++ development environment for one-button compilation of single 15849files or entire projects -- with error-to-source-line mapping. 15850 15851Implemented support for compile-time constant folding for the 15852Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 15853specification. This allows the ASL writer to use expressions 15854instead of Integer/Buffer/String constants in terms that must 15855evaluate to constants at compile time and will also simplify the 15856emitted AML in any such sub-expressions that can be folded 15857(evaluated at compile-time.) This increases the size of the 15858compiler significantly because a portion of the ACPI CA AML 15859interpreter is included within the compiler in order to pre- 15860evaluate constant expressions. 15861 15862 15863Fixed a problem with the "Unicode" ASL macro that caused the 15864compiler to fault. (This macro is used in conjunction with the 15865_STR reserved name.) 15866 15867Implemented an AML opcode optimization to use the Zero, One, and 15868Ones opcodes where possible to further reduce the size of integer 15869constants and thus reduce the overall size of the generated AML 15870code. 15871 15872Implemented error checking for new reserved terms for ACPI version 158732.0A. 15874 15875Implemented the -qr option to display the current list of ACPI 15876reserved names known to the compiler. 15877 15878Implemented the -qc option to display the current list of ASL 15879operators that are allowed within constant expressions and can 15880therefore be folded at compile time if the operands are constants. 15881 15882 158834) Documentation 15884 15885Updated the Programmer's Reference for new interfaces, data types, 15886and memory allocation model options. 15887 15888Updated the iASL Compiler User Reference to apply new format and 15889add information about new features and options. 15890 15891---------------------------------------- 1589219 April 2002. Summary of changes for this release. 15893 158941) ACPI CA Core Subsystem Version 20020419: 15895 15896The source code base for the Core Subsystem has been completely 15897cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 15898versions. The Lint option files used are included in the 15899/acpi/generate/lint directory. 15900 15901Implemented enhanced status/error checking across the entire 15902Hardware manager subsystem. Any hardware errors (reported from 15903the OSL) are now bubbled up and will abort a running control 15904method. 15905 15906 15907Fixed a problem where the per-ACPI-table integer width (32 or 64) 15908was stored only with control method nodes, causing a fault when 15909non-control method code was executed during table loading. The 15910solution implemented uses a global variable to indicate table 15911width across the entire ACPI subsystem. Therefore, ACPI CA does 15912not support mixed integer widths across different ACPI tables 15913(DSDT, SSDT). 15914 15915Fixed a problem where NULL extended fields (X fields) in an ACPI 159162.0 ACPI FADT caused the table load to fail. Although the 15917existing ACPI specification is a bit fuzzy on this topic, the new 15918behavior is to fall back on a ACPI 1.0 field if the corresponding 15919ACPI 2.0 X field is zero (even though the table revision indicates 15920a full ACPI 2.0 table.) The ACPI specification will be updated to 15921clarify this issue. 15922 15923Fixed a problem with the SystemMemory operation region handler 15924where memory was always accessed byte-wise even if the AML- 15925specified access width was larger than a byte. This caused 15926problems on systems with memory-mapped I/O. Memory is now 15927accessed with the width specified. On systems that do not support 15928non-aligned transfers, a check is made to guarantee proper address 15929alignment before proceeding in order to avoid an AML-caused 15930alignment fault within the kernel. 15931 15932 15933Fixed a problem with the ExtendedIrq resource where only one byte 15934of the 4-byte Irq field was extracted. 15935 15936Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 15937function was out of date and required a rewrite. 15938 15939Code and Data Size: Current core subsystem library sizes are shown 15940below. These are the code and data sizes for the acpica.lib 15941produced by the Microsoft Visual C++ 6.0 compiler, and these 15942values do not include any ACPI driver or OSPM code. The debug 15943version of the code includes the debug output trace mechanism and 15944has a larger code and data size. Note that these values will vary 15945depending on the efficiency of the compiler and the compiler 15946options used during generation. 15947 15948 Previous Release 15949 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 15950 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 15951 Current Release: 15952 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 15953 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 15954 15955 159562) Linux 15957 15958PCI IRQ routing fixes (Dominik Brodowski) 15959 15960 159613) iASL Compiler Version X2042: 15962 15963Implemented an additional compile-time error check for a field 15964unit whose size + minimum access width would cause a run-time 15965access beyond the end-of-region. Previously, only the field size 15966itself was checked. 15967 15968The Core subsystem and iASL compiler now share a common parse 15969object in preparation for compile-time evaluation of the type 159703/4/5 ASL operators. 15971 15972 15973---------------------------------------- 15974Summary of changes for this release: 03_29_02 15975 159761) ACPI CA Core Subsystem Version 20020329: 15977 15978Implemented support for late evaluation of TermArg operands to 15979Buffer and Package objects. This allows complex expressions to be 15980used in the declarations of these object types. 15981 15982Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 159831.0, if the field was larger than 32 bits, it was returned as a 15984buffer - otherwise it was returned as an integer. In ACPI 2.0, 15985the field is returned as a buffer only if the field is larger than 1598664 bits. The TableRevision is now considered when making this 15987conversion to avoid incompatibility with existing ASL code. 15988 15989Implemented logical addressing for AcpiOsGetRootPointer. This 15990allows an RSDP with either a logical or physical address. With 15991this support, the host OS can now override all ACPI tables with 15992one logical RSDP. Includes implementation of "typed" pointer 15993support to allow a common data type for both physical and logical 15994pointers internally. This required a change to the 15995AcpiOsGetRootPointer interface. 15996 15997Implemented the use of ACPI 2.0 Generic Address Structures for all 15998GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 15999mapped I/O for these ACPI features. 16000 16001Initialization now ignores not only non-required tables (All 16002tables other than the FADT, FACS, DSDT, and SSDTs), but also does 16003not validate the table headers of unrecognized tables. 16004 16005Fixed a problem where a notify handler could only be 16006installed/removed on an object of type Device. All "notify" 16007 16008objects are now supported -- Devices, Processor, Power, and 16009Thermal. 16010 16011Removed most verbosity from the ACPI_DB_INFO debug level. Only 16012critical information is returned when this debug level is enabled. 16013 16014Code and Data Size: Current core subsystem library sizes are shown 16015below. These are the code and data sizes for the acpica.lib 16016produced by the Microsoft Visual C++ 6.0 compiler, and these 16017values do not include any ACPI driver or OSPM code. The debug 16018version of the code includes the debug output trace mechanism and 16019has a larger code and data size. Note that these values will vary 16020depending on the efficiency of the compiler and the compiler 16021options used during generation. 16022 16023 Previous Release 16024 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 16025 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 16026 Current Release: 16027 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 16028 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 16029 16030 160312) Linux: 16032 16033The processor driver (acpi_processor.c) now fully supports ACPI 160342.0-based processor performance control (e.g. Intel(R) 16035SpeedStep(TM) technology) Note that older laptops that only have 16036the Intel "applet" interface are not supported through this. The 16037'limit' and 'performance' interface (/proc) are fully functional. 16038[Note that basic policy for controlling performance state 16039transitions will be included in the next version of ospmd.] The 16040idle handler was modified to more aggressively use C2, and PIIX4 16041errata handling underwent a complete overhaul (big thanks to 16042Dominik Brodowski). 16043 16044Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 16045based devices in the ACPI namespace are now dynamically bound 16046(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 16047This allows, among other things, ACPI to resolve bus numbers for 16048subordinate PCI bridges. 16049 16050Enhanced PCI IRQ routing to get the proper bus number for _PRT 16051entries defined underneath PCI bridges. 16052 16053Added IBM 600E to bad bios list due to invalid _ADR value for 16054PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 16055 16056In the process of adding full MADT support (e.g. IOAPIC) for IA32 16057(acpi.c, mpparse.c) -- stay tuned. 16058 16059Added back visual differentiation between fixed-feature and 16060control-method buttons in dmesg. Buttons are also subtyped (e.g. 16061button/power/PWRF) to simplify button identification. 16062 16063We no longer use -Wno-unused when compiling debug. Please ignore 16064any "_THIS_MODULE defined but not used" messages. 16065 16066Can now shut down the system using "magic sysrq" key. 16067 16068 160693) iASL Compiler version 2041: 16070 16071Fixed a problem where conversion errors for hex/octal/decimal 16072constants were not reported. 16073 16074Implemented a fix for the General Register template Address field. 16075This field was 8 bits when it should be 64. 16076 16077Fixed a problem where errors/warnings were no longer being emitted 16078within the listing output file. 16079 16080Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 16081exactly 4 characters, alphanumeric only. 16082 16083 16084 16085 16086---------------------------------------- 16087Summary of changes for this release: 03_08_02 16088 16089 160901) ACPI CA Core Subsystem Version 20020308: 16091 16092Fixed a problem with AML Fields where the use of the "AccessAny" 16093keyword could cause an interpreter error due to attempting to read 16094or write beyond the end of the parent Operation Region. 16095 16096Fixed a problem in the SystemMemory Operation Region handler where 16097an attempt was made to map memory beyond the end of the region. 16098This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 16099errors on some Linux systems. 16100 16101Fixed a problem where the interpreter/namespace "search to root" 16102algorithm was not functioning for some object types. Relaxed the 16103internal restriction on the search to allow upsearches for all 16104external object types as well as most internal types. 16105 16106 161072) Linux: 16108 16109We now use safe_halt() macro versus individual calls to sti | hlt. 16110 16111Writing to the processor limit interface should now work. "echo 1" 16112will increase the limit, 2 will decrease, and 0 will reset to the 16113 16114default. 16115 16116 161173) ASL compiler: 16118 16119Fixed segfault on Linux version. 16120 16121 16122---------------------------------------- 16123Summary of changes for this release: 02_25_02 16124 161251) ACPI CA Core Subsystem: 16126 16127 16128Fixed a problem where the GPE bit masks were not initialized 16129properly, causing erratic GPE behavior. 16130 16131Implemented limited support for multiple calling conventions. The 16132code can be generated with either the VPL (variable parameter 16133list, or "C") convention, or the FPL (fixed parameter list, or 16134"Pascal") convention. The core subsystem is about 3.4% smaller 16135when generated with FPL. 16136 16137 161382) Linux 16139 16140Re-add some /proc/acpi/event functionality that was lost during 16141the rewrite 16142 16143Resolved issue with /proc events for fixed-feature buttons showing 16144up as the system device. 16145 16146Fixed checks on C2/C3 latencies to be inclusive of maximum values. 16147 16148Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 16149 16150Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 16151 16152Fixed limit interface & usage to fix bugs with passive cooling 16153hysterisis. 16154 16155Restructured PRT support. 16156 16157 16158---------------------------------------- 16159Summary of changes for this label: 02_14_02 16160 16161 161621) ACPI CA Core Subsystem: 16163 16164Implemented support in AcpiLoadTable to allow loading of FACS and 16165FADT tables. 16166 16167Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 16168been removed. All 64-bit platforms should be migrated to the ACPI 161692.0 tables. The actbl71.h header has been removed from the source 16170tree. 16171 16172All C macros defined within the subsystem have been prefixed with 16173"ACPI_" to avoid collision with other system include files. 16174 16175Removed the return value for the two AcpiOsPrint interfaces, since 16176it is never used and causes lint warnings for ignoring the return 16177value. 16178 16179Added error checking to all internal mutex acquire and release 16180calls. Although a failure from one of these interfaces is 16181probably a fatal system error, these checks will cause the 16182immediate abort of the currently executing method or interface. 16183 16184Fixed a problem where the AcpiSetCurrentResources interface could 16185fault. This was a side effect of the deployment of the new memory 16186allocation model. 16187 16188Fixed a couple of problems with the Global Lock support introduced 16189in the last major build. The "common" (1.0/2.0) internal FACS was 16190being overwritten with the FACS signature and clobbering the 16191Global Lock pointer. Also, the actual firmware FACS was being 16192unmapped after construction of the "common" FACS, preventing 16193access to the actual Global Lock field within it. The "common" 16194internal FACS is no longer installed as an actual ACPI table; it 16195is used simply as a global. 16196 16197Code and Data Size: Current core subsystem library sizes are shown 16198below. These are the code and data sizes for the acpica.lib 16199produced by the Microsoft Visual C++ 6.0 compiler, and these 16200values do not include any ACPI driver or OSPM code. The debug 16201version of the code includes the debug output trace mechanism and 16202has a larger code and data size. Note that these values will vary 16203depending on the efficiency of the compiler and the compiler 16204options used during generation. 16205 16206 Previous Release (02_07_01) 16207 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 16208 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 16209 Current Release: 16210 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 16211 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 16212 16213 162142) Linux 16215 16216Updated Linux-specific code for core macro and OSL interface 16217changes described above. 16218 16219Improved /proc/acpi/event. It now can be opened only once and has 16220proper poll functionality. 16221 16222Fixed and restructured power management (acpi_bus). 16223 16224Only create /proc "view by type" when devices of that class exist. 16225 16226Fixed "charging/discharging" bug (and others) in acpi_battery. 16227 16228Improved thermal zone code. 16229 16230 162313) ASL Compiler, version X2039: 16232 16233 16234Implemented the new compiler restriction on ASL String hex/octal 16235escapes to non-null, ASCII values. An error results if an invalid 16236value is used. (This will require an ACPI 2.0 specification 16237change.) 16238 16239AML object labels that are output to the optional C and ASM source 16240are now prefixed with both the ACPI table signature and table ID 16241to help guarantee uniqueness within a large BIOS project. 16242 16243 16244---------------------------------------- 16245Summary of changes for this label: 02_01_02 16246 162471) ACPI CA Core Subsystem: 16248 16249ACPI 2.0 support is complete in the entire Core Subsystem and the 16250ASL compiler. All new ACPI 2.0 operators are implemented and all 16251other changes for ACPI 2.0 support are complete. With 16252simultaneous code and data optimizations throughout the subsystem, 16253ACPI 2.0 support has been implemented with almost no additional 16254cost in terms of code and data size. 16255 16256Implemented a new mechanism for allocation of return buffers. If 16257the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 16258be allocated on behalf of the caller. Consolidated all return 16259buffer validation and allocation to a common procedure. Return 16260buffers will be allocated via the primary OSL allocation interface 16261since it appears that a separate pool is not needed by most users. 16262If a separate pool is required for these buffers, the caller can 16263still use the original mechanism and pre-allocate the buffer(s). 16264 16265Implemented support for string operands within the DerefOf 16266operator. 16267 16268Restructured the Hardware and Event managers to be table driven, 16269simplifying the source code and reducing the amount of generated 16270code. 16271 16272Split the common read/write low-level ACPI register bitfield 16273procedure into a separate read and write, simplifying the code 16274considerably. 16275 16276Obsoleted the AcpiOsCallocate OSL interface. This interface was 16277used only a handful of times and didn't have enough critical mass 16278for a separate interface. Replaced with a common calloc procedure 16279in the core. 16280 16281Fixed a reported problem with the GPE number mapping mechanism 16282that allows GPE1 numbers to be non-contiguous with GPE0. 16283Reorganized the GPE information and shrunk a large array that was 16284originally large enough to hold info for all possible GPEs (256) 16285to simply large enough to hold all GPEs up to the largest GPE 16286number on the machine. 16287 16288Fixed a reported problem with resource structure alignment on 64- 16289bit platforms. 16290 16291Changed the AcpiEnableEvent and AcpiDisableEvent external 16292interfaces to not require any flags for the common case of 16293enabling/disabling a GPE. 16294 16295Implemented support to allow a "Notify" on a Processor object. 16296 16297Most TBDs in comments within the source code have been resolved 16298and eliminated. 16299 16300 16301Fixed a problem in the interpreter where a standalone parent 16302prefix (^) was not handled correctly in the interpreter and 16303debugger. 16304 16305Removed obsolete and unnecessary GPE save/restore code. 16306 16307Implemented Field support in the ASL Load operator. This allows a 16308table to be loaded from a named field, in addition to loading a 16309table directly from an Operation Region. 16310 16311Implemented timeout and handle support in the external Global Lock 16312interfaces. 16313 16314Fixed a problem in the AcpiDump utility where pathnames were no 16315longer being generated correctly during the dump of named objects. 16316 16317Modified the AML debugger to give a full display of if/while 16318predicates instead of just one AML opcode at a time. (The 16319predicate can have several nested ASL statements.) The old method 16320was confusing during single stepping. 16321 16322Code and Data Size: Current core subsystem library sizes are shown 16323below. These are the code and data sizes for the acpica.lib 16324produced by the Microsoft Visual C++ 6.0 compiler, and these 16325values do not include any ACPI driver or OSPM code. The debug 16326version of the code includes the debug output trace mechanism and 16327has a larger code and data size. Note that these values will vary 16328depending on the efficiency of the compiler and the compiler 16329options used during generation. 16330 16331 Previous Release (12_18_01) 16332 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 16333 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 16334 Current Release: 16335 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 16336 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 16337 163382) Linux 16339 16340 Implemented fix for PIIX reverse throttling errata (Processor 16341driver) 16342 16343Added new Limit interface (Processor and Thermal drivers) 16344 16345New thermal policy (Thermal driver) 16346 16347Many updates to /proc 16348 16349Battery "low" event support (Battery driver) 16350 16351Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 16352 16353IA32 - IA64 initialization unification, no longer experimental 16354 16355Menuconfig options redesigned 16356 163573) ASL Compiler, version X2037: 16358 16359Implemented several new output features to simplify integration of 16360AML code into firmware: 1) Output the AML in C source code with 16361labels for each named ASL object. The original ASL source code 16362is interleaved as C comments. 2) Output the AML in ASM source code 16363with labels and interleaved ASL source. 3) Output the AML in 16364raw hex table form, in either C or ASM. 16365 16366Implemented support for optional string parameters to the 16367LoadTable operator. 16368 16369Completed support for embedded escape sequences within string 16370literals. The compiler now supports all single character escapes 16371as well as the Octal and Hex escapes. Note: the insertion of a 16372null byte into a string literal (via the hex/octal escape) causes 16373the string to be immediately terminated. A warning is issued. 16374 16375Fixed a problem where incorrect AML was generated for the case 16376where an ASL namepath consists of a single parent prefix ( 16377 16378) with no trailing name segments. 16379 16380The compiler has been successfully generated with a 64-bit C 16381compiler. 16382 16383 16384 16385 16386---------------------------------------- 16387Summary of changes for this label: 12_18_01 16388 163891) Linux 16390 16391Enhanced blacklist with reason and severity fields. Any table's 16392signature may now be used to identify a blacklisted system. 16393 16394Call _PIC control method to inform the firmware which interrupt 16395model the OS is using. Turn on any disabled link devices. 16396 16397Cleaned up busmgr /proc error handling (Andreas Dilger) 16398 16399 2) ACPI CA Core Subsystem: 16400 16401Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 16402while loop) 16403 16404Completed implementation of the ACPI 2.0 "Continue", 16405"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 16406operators. All new ACPI 2.0 operators are now implemented in both 16407the ASL compiler and the AML interpreter. The only remaining ACPI 164082.0 task is support for the String data type in the DerefOf 16409operator. Fixed a problem with AcquireMutex where the status code 16410was lost if the caller had to actually wait for the mutex. 16411 16412Increased the maximum ASL Field size from 64K bits to 4G bits. 16413 16414Completed implementation of the external Global Lock interfaces -- 16415AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 16416Handler parameters were added. 16417 16418Completed another pass at removing warnings and issues when 16419compiling with 64-bit compilers. The code now compiles cleanly 16420with the Intel 64-bit C/C++ compiler. Most notably, the pointer 16421add and subtract (diff) macros have changed considerably. 16422 16423 16424Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1642564-bit platforms, 32-bits on all others. This type is used 16426wherever memory allocation and/or the C sizeof() operator is used, 16427and affects the OSL memory allocation interfaces AcpiOsAllocate 16428and AcpiOsCallocate. 16429 16430Implemented sticky user breakpoints in the AML debugger. 16431 16432Code and Data Size: Current core subsystem library sizes are shown 16433below. These are the code and data sizes for the acpica.lib 16434produced by the Microsoft Visual C++ 6.0 compiler, and these 16435values do not include any ACPI driver or OSPM code. The debug 16436version of the code includes the debug output trace mechanism and 16437has a larger code and data size. Note that these values will vary 16438depending on the efficiency of the compiler and the compiler 16439options used during generation. 16440 16441 Previous Release (12_05_01) 16442 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 16443 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 16444 Current Release: 16445 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 16446 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 16447 16448 3) ASL Compiler, version X2034: 16449 16450Now checks for (and generates an error if detected) the use of a 16451Break or Continue statement without an enclosing While statement. 16452 16453 16454Successfully generated the compiler with the Intel 64-bit C 16455compiler. 16456 16457 ---------------------------------------- 16458Summary of changes for this label: 12_05_01 16459 16460 1) ACPI CA Core Subsystem: 16461 16462The ACPI 2.0 CopyObject operator is fully implemented. This 16463operator creates a new copy of an object (and is also used to 16464bypass the "implicit conversion" mechanism of the Store operator.) 16465 16466The ACPI 2.0 semantics for the SizeOf operator are fully 16467implemented. The change is that performing a SizeOf on a 16468reference object causes an automatic dereference of the object to 16469tha actual value before the size is evaluated. This behavior was 16470undefined in ACPI 1.0. 16471 16472The ACPI 2.0 semantics for the Extended IRQ resource descriptor 16473have been implemented. The interrupt polarity and mode are now 16474independently set. 16475 16476Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 16477appearing in Package objects were not properly converted to 16478integers when the internal Package was converted to an external 16479object (via the AcpiEvaluateObject interface.) 16480 16481Fixed a problem with the namespace object deletion mechanism for 16482objects created by control methods. There were two parts to this 16483problem: 1) Objects created during the initialization phase method 16484parse were not being deleted, and 2) The object owner ID mechanism 16485to track objects was broken. 16486 16487Fixed a problem where the use of the ASL Scope operator within a 16488control method would result in an invalid opcode exception. 16489 16490Fixed a problem introduced in the previous label where the buffer 16491length required for the _PRT structure was not being returned 16492correctly. 16493 16494Code and Data Size: Current core subsystem library sizes are shown 16495below. These are the code and data sizes for the acpica.lib 16496produced by the Microsoft Visual C++ 6.0 compiler, and these 16497values do not include any ACPI driver or OSPM code. The debug 16498version of the code includes the debug output trace mechanism and 16499has a larger code and data size. Note that these values will vary 16500depending on the efficiency of the compiler and the compiler 16501options used during generation. 16502 16503 Previous Release (11_20_01) 16504 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 16505 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 16506 16507 Current Release: 16508 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 16509 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 16510 16511 2) Linux: 16512 16513Updated all files to apply cleanly against 2.4.16. 16514 16515Added basic PCI Interrupt Routing Table (PRT) support for IA32 16516(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 16517version supports both static and dyanmic PRT entries, but dynamic 16518entries are treated as if they were static (not yet 16519reconfigurable). Architecture- specific code to use this data is 16520absent on IA32 but should be available shortly. 16521 16522Changed the initialization sequence to start the ACPI interpreter 16523(acpi_init) prior to initialization of the PCI driver (pci_init) 16524in init/main.c. This ordering is required to support PRT and 16525facilitate other (future) enhancement. A side effect is that the 16526ACPI bus driver and certain device drivers can no longer be loaded 16527as modules. 16528 16529Modified the 'make menuconfig' options to allow PCI Interrupt 16530Routing support to be included without the ACPI Bus and other 16531device drivers. 16532 16533 3) ASL Compiler, version X2033: 16534 16535Fixed some issues with the use of the new CopyObject and 16536DataTableRegion operators. Both are fully functional. 16537 16538 ---------------------------------------- 16539Summary of changes for this label: 11_20_01 16540 16541 20 November 2001. Summary of changes for this release. 16542 16543 1) ACPI CA Core Subsystem: 16544 16545Updated Index support to match ACPI 2.0 semantics. Storing a 16546Integer, String, or Buffer to an Index of a Buffer will store only 16547the least-significant byte of the source to the Indexed buffer 16548byte. Multiple writes are not performed. 16549 16550Fixed a problem where the access type used in an AccessAs ASL 16551operator was not recorded correctly into the field object. 16552 16553Fixed a problem where ASL Event objects were created in a 16554signalled state. Events are now created in an unsignalled state. 16555 16556The internal object cache is now purged after table loading and 16557initialization to reduce the use of dynamic kernel memory -- on 16558the assumption that object use is greatest during the parse phase 16559of the entire table (versus the run-time use of individual control 16560methods.) 16561 16562ACPI 2.0 variable-length packages are now fully operational. 16563 16564Code and Data Size: Code and Data optimizations have permitted new 16565feature development with an actual reduction in the library size. 16566Current core subsystem library sizes are shown below. These are 16567the code and data sizes for the acpica.lib produced by the 16568Microsoft Visual C++ 6.0 compiler, and these values do not include 16569any ACPI driver or OSPM code. The debug version of the code 16570includes the debug output trace mechanism and has a larger code 16571and data size. Note that these values will vary depending on the 16572efficiency of the compiler and the compiler options used during 16573generation. 16574 16575 Previous Release (11_09_01): 16576 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 16577 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 16578 16579 Current Release: 16580 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 16581 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 16582 16583 2) Linux: 16584 16585Enhanced the ACPI boot-time initialization code to allow the use 16586of Local APIC tables for processor enumeration on IA-32, and to 16587pave the way for a fully MPS-free boot (on SMP systems) in the 16588near future. This functionality replaces 16589arch/i386/kernel/acpitables.c, which was introduced in an earlier 165902.4.15-preX release. To enable this feature you must add 16591"acpi_boot=on" to the kernel command line -- see the help entry 16592for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 16593the works... 16594 16595Restructured the configuration options to allow boot-time table 16596parsing support without inclusion of the ACPI Interpreter (and 16597other) code. 16598 16599NOTE: This release does not include fixes for the reported events, 16600power-down, and thermal passive cooling issues (coming soon). 16601 16602 3) ASL Compiler: 16603 16604Added additional typechecking for Fields within restricted access 16605Operation Regions. All fields within EC and CMOS regions must be 16606declared with ByteAcc. All fields withing SMBus regions must be 16607declared with the BufferAcc access type. 16608 16609Fixed a problem where the listing file output of control methods 16610no longer interleaved the actual AML code with the ASL source 16611code. 16612 16613 16614 16615 16616---------------------------------------- 16617Summary of changes for this label: 11_09_01 16618 166191) ACPI CA Core Subsystem: 16620 16621Implemented ACPI 2.0-defined support for writes to fields with a 16622Buffer, String, or Integer source operand that is smaller than the 16623target field. In these cases, the source operand is zero-extended 16624to fill the target field. 16625 16626Fixed a problem where a Field starting bit offset (within the 16627parent operation region) was calculated incorrectly if the 16628 16629alignment of the field differed from the access width. This 16630affected CreateWordField, CreateDwordField, CreateQwordField, and 16631possibly other fields that use the "AccessAny" keyword. 16632 16633Fixed a problem introduced in the 11_02_01 release where indirect 16634stores through method arguments did not operate correctly. 16635 166362) Linux: 16637 16638Implemented boot-time ACPI table parsing support 16639(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 16640facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 16641legacy BIOS interfaces (e.g. MPS) for the configuration of system 16642processors, memory, and interrupts during setup_arch(). Note that 16643this patch does not include the required architecture-specific 16644changes required to apply this information -- subsequent patches 16645will be posted for both IA32 and IA64 to achieve this. 16646 16647Added low-level sleep support for IA32 platforms, courtesy of Pat 16648Mochel. This allows IA32 systems to transition to/from various 16649sleeping states (e.g. S1, S3), although the lack of a centralized 16650driver model and power-manageable drivers will prevent its 16651(successful) use on most systems. 16652 16653Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 16654submenu, unified IA32 and IA64 options, added new "Boot using ACPI 16655tables" option, etc. 16656 16657Increased the default timeout for the EC driver from 1ms to 10ms 16658(1000 cycles of 10us) to try to address AE_TIME errors during EC 16659transactions. 16660 16661 ---------------------------------------- 16662Summary of changes for this label: 11_02_01 16663 166641) ACPI CA Core Subsystem: 16665 16666ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 16667(QWordAcc keyword). All ACPI 2.0 64-bit support is now 16668implemented. 16669 16670OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 16671changes to support ACPI 2.0 Qword field access. Read/Write 16672PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 16673accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 16674the value parameter for the address space handler interface is now 16675an ACPI_INTEGER. OSL implementations of these interfaces must now 16676handle the case where the Width parameter is 64. 16677 16678Index Fields: Fixed a problem where unaligned bit assembly and 16679disassembly for IndexFields was not supported correctly. 16680 16681Index and Bank Fields: Nested Index and Bank Fields are now 16682supported. During field access, a check is performed to ensure 16683that the value written to an Index or Bank register is not out of 16684the range of the register. The Index (or Bank) register is 16685written before each access to the field data. Future support will 16686include allowing individual IndexFields to be wider than the 16687DataRegister width. 16688 16689Fields: Fixed a problem where the AML interpreter was incorrectly 16690attempting to write beyond the end of a Field/OpRegion. This was 16691a boundary case that occurred when a DWORD field was written to a 16692BYTE access OpRegion, forcing multiple writes and causing the 16693interpreter to write one datum too many. 16694 16695Fields: Fixed a problem with Field/OpRegion access where the 16696starting bit address of a field was incorrectly calculated if the 16697current access type was wider than a byte (WordAcc, DwordAcc, or 16698QwordAcc). 16699 16700Fields: Fixed a problem where forward references to individual 16701FieldUnits (individual Field names within a Field definition) were 16702not resolved during the AML table load. 16703 16704Fields: Fixed a problem where forward references from a Field 16705definition to the parent Operation Region definition were not 16706resolved during the AML table load. 16707 16708Fields: Duplicate FieldUnit names within a scope are now detected 16709during AML table load. 16710 16711Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 16712returned an incorrect name for the root node. 16713 16714Code and Data Size: Code and Data optimizations have permitted new 16715feature development with an actual reduction in the library size. 16716Current core subsystem library sizes are shown below. These are 16717the code and data sizes for the acpica.lib produced by the 16718Microsoft Visual C++ 6.0 compiler, and these values do not include 16719any ACPI driver or OSPM code. The debug version of the code 16720includes the debug output trace mechanism and has a larger code 16721and data size. Note that these values will vary depending on the 16722efficiency of the compiler and the compiler options used during 16723generation. 16724 16725 Previous Release (10_18_01): 16726 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 16727 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 16728 16729 Current Release: 16730 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 16731 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 16732 16733 2) Linux: 16734 16735Improved /proc processor output (Pavel Machek) Re-added 16736MODULE_LICENSE("GPL") to all modules. 16737 16738 3) ASL Compiler version X2030: 16739 16740Duplicate FieldUnit names within a scope are now detected and 16741flagged as errors. 16742 16743 4) Documentation: 16744 16745Programmer Reference updated to reflect OSL and address space 16746handler interface changes described above. 16747 16748---------------------------------------- 16749Summary of changes for this label: 10_18_01 16750 16751ACPI CA Core Subsystem: 16752 16753Fixed a problem with the internal object reference count mechanism 16754that occasionally caused premature object deletion. This resolves 16755all of the outstanding problem reports where an object is deleted 16756in the middle of an interpreter evaluation. Although this problem 16757only showed up in rather obscure cases, the solution to the 16758problem involved an adjustment of all reference counts involving 16759objects attached to namespace nodes. 16760 16761Fixed a problem with Field support in the interpreter where 16762writing to an aligned field whose length is an exact multiple (2 16763or greater) of the field access granularity would cause an attempt 16764to write beyond the end of the field. 16765 16766The top level AML opcode execution functions within the 16767interpreter have been renamed with a more meaningful and 16768consistent naming convention. The modules exmonad.c and 16769exdyadic.c were eliminated. New modules are exoparg1.c, 16770exoparg2.c, exoparg3.c, and exoparg6.c. 16771 16772Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 16773 16774Fixed a problem where the AML debugger was causing some internal 16775objects to not be deleted during subsystem termination. 16776 16777Fixed a problem with the external AcpiEvaluateObject interface 16778where the subsystem would fault if the named object to be 16779evaluated refered to a constant such as Zero, Ones, etc. 16780 16781Fixed a problem with IndexFields and BankFields where the 16782subsystem would fault if the index, data, or bank registers were 16783not defined in the same scope as the field itself. 16784 16785Added printf format string checking for compilers that support 16786this feature. Corrected more than 50 instances of issues with 16787format specifiers within invocations of ACPI_DEBUG_PRINT 16788throughout the core subsystem code. 16789 16790The ASL "Revision" operator now returns the ACPI support level 16791implemented in the core - the value "2" since the ACPI 2.0 support 16792is more than 50% implemented. 16793 16794Enhanced the output of the AML debugger "dump namespace" command 16795to output in a more human-readable form. 16796 16797Current core subsystem library code sizes are shown below. These 16798 16799are the code and data sizes for the acpica.lib produced by the 16800Microsoft Visual C++ 6.0 compiler, and these values do not include 16801any ACPI driver or OSPM code. The debug version of the code 16802includes the full debug trace mechanism -- leading to a much 16803 16804larger code and data size. Note that these values will vary 16805depending on the efficiency of the compiler and the compiler 16806options used during generation. 16807 16808 Previous Label (09_20_01): 16809 Non-Debug Version: 65K Code, 5K Data, 70K Total 16810 Debug Version: 138K Code, 58K Data, 196K Total 16811 16812 This Label: 16813 16814 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 16815 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 16816 16817Linux: 16818 16819Implemented a "Bad BIOS Blacklist" to track machines that have 16820known ASL/AML problems. 16821 16822Enhanced the /proc interface for the thermal zone driver and added 16823support for _HOT (the critical suspend trip point). The 'info' 16824file now includes threshold/policy information, and allows setting 16825of _SCP (cooling preference) and _TZP (polling frequency) values 16826to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 16827frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 16828preference to the passive/quiet mode (if supported by the ASL). 16829 16830Implemented a workaround for a gcc bug that resuted in an OOPs 16831when loading the control method battery driver. 16832 16833 ---------------------------------------- 16834Summary of changes for this label: 09_20_01 16835 16836 ACPI CA Core Subsystem: 16837 16838The AcpiEnableEvent and AcpiDisableEvent interfaces have been 16839modified to allow individual GPE levels to be flagged as wake- 16840enabled (i.e., these GPEs are to remain enabled when the platform 16841sleeps.) 16842 16843The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 16844support wake-enabled GPEs. This means that upon entering the 16845sleep state, all GPEs that are not wake-enabled are disabled. 16846When leaving the sleep state, these GPEs are reenabled. 16847 16848A local double-precision divide/modulo module has been added to 16849enhance portability to OS kernels where a 64-bit math library is 16850not available. The new module is "utmath.c". 16851 16852Several optimizations have been made to reduce the use of CPU 16853stack. Originally over 2K, the maximum stack usage is now below 168542K at 1860 bytes (1.82k) 16855 16856Fixed a problem with the AcpiGetFirmwareTable interface where the 16857root table pointer was not mapped into a logical address properly. 16858 16859Fixed a problem where a NULL pointer was being dereferenced in the 16860interpreter code for the ASL Notify operator. 16861 16862Fixed a problem where the use of the ASL Revision operator 16863returned an error. This operator now returns the current version 16864of the ACPI CA core subsystem. 16865 16866Fixed a problem where objects passed as control method parameters 16867to AcpiEvaluateObject were always deleted at method termination. 16868However, these objects may end up being stored into the namespace 16869by the called method. The object reference count mechanism was 16870applied to these objects instead of a force delete. 16871 16872Fixed a problem where static strings or buffers (contained in the 16873AML code) that are declared as package elements within the ASL 16874code could cause a fault because the interpreter would attempt to 16875delete them. These objects are now marked with the "static 16876object" flag to prevent any attempt to delete them. 16877 16878Implemented an interpreter optimization to use operands directly 16879from the state object instead of extracting the operands to local 16880variables. This reduces stack use and code size, and improves 16881performance. 16882 16883The module exxface.c was eliminated as it was an unnecessary extra 16884layer of code. 16885 16886Current core subsystem library code sizes are shown below. These 16887are the code and data sizes for the acpica.lib produced by the 16888Microsoft Visual C++ 6.0 compiler, and these values do not include 16889any ACPI driver or OSPM code. The debug version of the code 16890includes the full debug trace mechanism -- leading to a much 16891larger code and data size. Note that these values will vary 16892depending on the efficiency of the compiler and the compiler 16893options used during generation. 16894 16895 Non-Debug Version: 65K Code, 5K Data, 70K Total 16896(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 16897Total (Previously 195K) 16898 16899Linux: 16900 16901Support for ACPI 2.0 64-bit integers has been added. All ACPI 16902Integer objects are now 64 bits wide 16903 16904All Acpi data types and structures are now in lower case. Only 16905Acpi macros are upper case for differentiation. 16906 16907 Documentation: 16908 16909Changes to the external interfaces as described above. 16910 16911 ---------------------------------------- 16912Summary of changes for this label: 08_31_01 16913 16914 ACPI CA Core Subsystem: 16915 16916A bug with interpreter implementation of the ASL Divide operator 16917was found and fixed. The implicit function return value (not the 16918explicit store operands) was returning the remainder instead of 16919the quotient. This was a longstanding bug and it fixes several 16920known outstanding issues on various platforms. 16921 16922The ACPI_DEBUG_PRINT and function trace entry/exit macros have 16923been further optimized for size. There are 700 invocations of the 16924DEBUG_PRINT macro alone, so each optimization reduces the size of 16925the debug version of the subsystem significantly. 16926 16927A stack trace mechanism has been implemented. The maximum stack 16928usage is about 2K on 32-bit platforms. The debugger command "stat 16929stack" will display the current maximum stack usage. 16930 16931All public symbols and global variables within the subsystem are 16932now prefixed with the string "Acpi". This keeps all of the 16933symbols grouped together in a kernel map, and avoids conflicts 16934with other kernel subsystems. 16935 16936Most of the internal fixed lookup tables have been moved into the 16937code segment via the const operator. 16938 16939Several enhancements have been made to the interpreter to both 16940reduce the code size and improve performance. 16941 16942Current core subsystem library code sizes are shown below. These 16943are the code and data sizes for the acpica.lib produced by the 16944Microsoft Visual C++ 6.0 compiler, and these values do not include 16945any ACPI driver or OSPM code. The debug version of the code 16946includes the full debug trace mechanism which contains over 700 16947invocations of the DEBUG_PRINT macro, 500 function entry macro 16948invocations, and over 900 function exit macro invocations -- 16949leading to a much larger code and data size. Note that these 16950values will vary depending on the efficiency of the compiler and 16951the compiler options used during generation. 16952 16953 Non-Debug Version: 64K Code, 5K Data, 69K Total 16954Debug Version: 137K Code, 58K Data, 195K Total 16955 16956 Linux: 16957 16958Implemented wbinvd() macro, pending a kernel-wide definition. 16959 16960Fixed /proc/acpi/event to handle poll() and short reads. 16961 16962 ASL Compiler, version X2026: 16963 16964Fixed a problem introduced in the previous label where the AML 16965 16966code emitted for package objects produced packages with zero 16967length. 16968 16969 ---------------------------------------- 16970Summary of changes for this label: 08_16_01 16971 16972ACPI CA Core Subsystem: 16973 16974The following ACPI 2.0 ASL operators have been implemented in the 16975AML interpreter (These are already supported by the Intel ASL 16976compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 16977ToBuffer. Support for 64-bit AML constants is implemented in the 16978AML parser, debugger, and disassembler. 16979 16980The internal memory tracking mechanism (leak detection code) has 16981been upgraded to reduce the memory overhead (a separate tracking 16982block is no longer allocated for each memory allocation), and now 16983supports all of the internal object caches. 16984 16985The data structures and code for the internal object caches have 16986been coelesced and optimized so that there is a single cache and 16987memory list data structure and a single group of functions that 16988implement generic cache management. This has reduced the code 16989size in both the debug and release versions of the subsystem. 16990 16991The DEBUG_PRINT macro(s) have been optimized for size and replaced 16992by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 16993different, because it generates a single call to an internal 16994function. This results in a savings of about 90 bytes per 16995invocation, resulting in an overall code and data savings of about 1699616% in the debug version of the subsystem. 16997 16998 Linux: 16999 17000Fixed C3 disk corruption problems and re-enabled C3 on supporting 17001machines. 17002 17003Integrated low-level sleep code by Patrick Mochel. 17004 17005Further tweaked source code Linuxization. 17006 17007Other minor fixes. 17008 17009 ASL Compiler: 17010 17011Support for ACPI 2.0 variable length packages is fixed/completed. 17012 17013Fixed a problem where the optional length parameter for the ACPI 170142.0 ToString operator. 17015 17016Fixed multiple extraneous error messages when a syntax error is 17017detected within the declaration line of a control method. 17018 17019 ---------------------------------------- 17020Summary of changes for this label: 07_17_01 17021 17022ACPI CA Core Subsystem: 17023 17024Added a new interface named AcpiGetFirmwareTable to obtain any 17025ACPI table via the ACPI signature. The interface can be called at 17026any time during kernel initialization, even before the kernel 17027virtual memory manager is initialized and paging is enabled. This 17028allows kernel subsystems to obtain ACPI tables very early, even 17029before the ACPI CA subsystem is initialized. 17030 17031Fixed a problem where Fields defined with the AnyAcc attribute 17032could be resolved to the incorrect address under the following 17033conditions: 1) the field width is larger than 8 bits and 2) the 17034parent operation region is not defined on a DWORD boundary. 17035 17036Fixed a problem where the interpreter is not being locked during 17037namespace initialization (during execution of the _INI control 17038methods), causing an error when an attempt is made to release it 17039later. 17040 17041ACPI 2.0 support in the AML Interpreter has begun and will be 17042ongoing throughout the rest of this year. In this label, The Mod 17043operator is implemented. 17044 17045Added a new data type to contain full PCI addresses named 17046ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 17047and Function values. 17048 17049 Linux: 17050 17051Enhanced the Linux version of the source code to change most 17052capitalized ACPI type names to lowercase. For example, all 17053instances of ACPI_STATUS are changed to acpi_status. This will 17054result in a large diff, but the change is strictly cosmetic and 17055aligns the CA code closer to the Linux coding standard. 17056 17057OSL Interfaces: 17058 17059The interfaces to the PCI configuration space have been changed to 17060add the PCI Segment number and to split the single 32-bit combined 17061DeviceFunction field into two 16-bit fields. This was 17062accomplished by moving the four values that define an address in 17063PCI configuration space (segment, bus, device, and function) to 17064the new ACPI_PCI_ID structure. 17065 17066The changes to the PCI configuration space interfaces led to a 17067reexamination of the complete set of address space access 17068interfaces for PCI, I/O, and Memory. The previously existing 18 17069interfaces have proven difficult to maintain (any small change 17070must be propagated across at least 6 interfaces) and do not easily 17071allow for future expansion to 64 bits if necessary. Also, on some 17072systems, it would not be appropriate to demultiplex the access 17073width (8, 16, 32,or 64) before calling the OSL if the 17074corresponding native OS interfaces contain a similar access width 17075parameter. For these reasons, the 18 address space interfaces 17076have been replaced by these 6 new ones: 17077 17078AcpiOsReadPciConfiguration 17079AcpiOsWritePciConfiguration 17080AcpiOsReadMemory 17081AcpiOsWriteMemory 17082AcpiOsReadPort 17083AcpiOsWritePort 17084 17085Added a new interface named AcpiOsGetRootPointer to allow the OSL 17086to perform the platform and/or OS-specific actions necessary to 17087obtain the ACPI RSDP table pointer. On IA-32 platforms, this 17088interface will simply call down to the CA core to perform the low- 17089memory search for the table. On IA-64, the RSDP is obtained from 17090EFI. Migrating this interface to the OSL allows the CA core to 17091 17092remain OS and platform independent. 17093 17094Added a new interface named AcpiOsSignal to provide a generic 17095"function code and pointer" interface for various miscellaneous 17096signals and notifications that must be made to the host OS. The 17097first such signals are intended to support the ASL Fatal and 17098Breakpoint operators. In the latter case, the AcpiOsBreakpoint 17099interface has been obsoleted. 17100 17101The definition of the AcpiFormatException interface has been 17102changed to simplify its use. The caller no longer must supply a 17103buffer to the call; A pointer to a const string is now returned 17104directly. This allows the call to be easily used in printf 17105statements, etc. since the caller does not have to manage a local 17106buffer. 17107 17108 17109 ASL Compiler, Version X2025: 17110 17111The ACPI 2.0 Switch/Case/Default operators have been implemented 17112and are fully functional. They will work with all ACPI 1.0 17113interpreters, since the operators are simply translated to If/Else 17114pairs. 17115 17116The ACPI 2.0 ElseIf operator is implemented and will also work 17117with 1.0 interpreters, for the same reason. 17118 17119Implemented support for ACPI 2.0 variable-length packages. These 17120packages have a separate opcode, and their size is determined by 17121the interpreter at run-time. 17122 17123Documentation The ACPI CA Programmer Reference has been updated to 17124reflect the new interfaces and changes to existing interfaces. 17125 17126 ------------------------------------------ 17127Summary of changes for this label: 06_15_01 17128 17129 ACPI CA Core Subsystem: 17130 17131Fixed a problem where a DWORD-accessed field within a Buffer 17132object would get its byte address inadvertently rounded down to 17133the nearest DWORD. Buffers are always Byte-accessible. 17134 17135 ASL Compiler, version X2024: 17136 17137Fixed a problem where the Switch() operator would either fault or 17138hang the compiler. Note however, that the AML code for this ACPI 171392.0 operator is not yet implemented. 17140 17141Compiler uses the new AcpiOsGetTimer interface to obtain compile 17142timings. 17143 17144Implementation of the CreateField operator automatically converts 17145a reference to a named field within a resource descriptor from a 17146byte offset to a bit offset if required. 17147 17148Added some missing named fields from the resource descriptor 17149support. These are the names that are automatically created by the 17150compiler to reference fields within a descriptor. They are only 17151valid at compile time and are not passed through to the AML 17152interpreter. 17153 17154Resource descriptor named fields are now typed as Integers and 17155subject to compile-time typechecking when used in expressions. 17156 17157 ------------------------------------------ 17158Summary of changes for this label: 05_18_01 17159 17160 ACPI CA Core Subsystem: 17161 17162Fixed a couple of problems in the Field support code where bits 17163from adjacent fields could be returned along with the proper field 17164bits. Restructured the field support code to improve performance, 17165readability and maintainability. 17166 17167New DEBUG_PRINTP macro automatically inserts the procedure name 17168into the output, saving hundreds of copies of procedure name 17169strings within the source, shrinking the memory footprint of the 17170debug version of the core subsystem. 17171 17172 Source Code Structure: 17173 17174The source code directory tree was restructured to reflect the 17175current organization of the component architecture. Some files 17176and directories have been moved and/or renamed. 17177 17178 Linux: 17179 17180Fixed leaking kacpidpc processes. 17181 17182Fixed queueing event data even when /proc/acpi/event is not 17183opened. 17184 17185 ASL Compiler, version X2020: 17186 17187Memory allocation performance enhancement - over 24X compile time 17188improvement on large ASL files. Parse nodes and namestring 17189buffers are now allocated from a large internal compiler buffer. 17190 17191The temporary .SRC file is deleted unless the "-s" option is 17192specified 17193 17194The "-d" debug output option now sends all output to the .DBG file 17195instead of the console. 17196 17197"External" second parameter is now optional 17198 17199"ElseIf" syntax now properly allows the predicate 17200 17201Last operand to "Load" now recognized as a Target operand 17202 17203Debug object can now be used anywhere as a normal object. 17204 17205ResourceTemplate now returns an object of type BUFFER 17206 17207EISAID now returns an object of type INTEGER 17208 17209"Index" now works with a STRING operand 17210 17211"LoadTable" now accepts optional parameters 17212 17213"ToString" length parameter is now optional 17214 17215"Interrupt (ResourceType," parse error fixed. 17216 17217"Register" with a user-defined region space parse error fixed 17218 17219Escaped backslash at the end of a string ("\\") scan/parse error 17220fixed 17221 17222"Revision" is now an object of type INTEGER. 17223 17224 17225 17226------------------------------------------ 17227Summary of changes for this label: 05_02_01 17228 17229Linux: 17230 17231/proc/acpi/event now blocks properly. 17232 17233Removed /proc/sys/acpi. You can still dump your DSDT from 17234/proc/acpi/dsdt. 17235 17236 ACPI CA Core Subsystem: 17237 17238Fixed a problem introduced in the previous label where some of the 17239"small" resource descriptor types were not recognized. 17240 17241Improved error messages for the case where an ASL Field is outside 17242the range of the parent operation region. 17243 17244 ASL Compiler, version X2018: 17245 17246 17247Added error detection for ASL Fields that extend beyond the length 17248of the parent operation region (only if the length of the region 17249is known at compile time.) This includes fields that have a 17250minimum access width that is smaller than the parent region, and 17251individual field units that are partially or entirely beyond the 17252extent of the parent. 17253 17254 17255 17256------------------------------------------ 17257Summary of changes for this label: 04_27_01 17258 17259 ACPI CA Core Subsystem: 17260 17261Fixed a problem where the namespace mutex could be released at the 17262wrong time during execution of AcpiRemoveAddressSpaceHandler. 17263 17264Added optional thread ID output for debug traces, to simplify 17265debugging of multiple threads. Added context switch notification 17266when the debug code realizes that a different thread is now 17267executing ACPI code. 17268 17269Some additional external data types have been prefixed with the 17270string "ACPI_" for consistency. This may effect existing code. 17271The data types affected are the external callback typedefs - e.g., 17272 17273WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 17274 17275 Linux: 17276 17277Fixed an issue with the OSL semaphore implementation where a 17278thread was waking up with an error from receiving a SIGCHLD 17279signal. 17280 17281Linux version of ACPI CA now uses the system C library for string 17282manipulation routines instead of a local implementation. 17283 17284Cleaned up comments and removed TBDs. 17285 17286 ASL Compiler, version X2017: 17287 17288Enhanced error detection and reporting for all file I/O 17289operations. 17290 17291 Documentation: 17292 17293Programmer Reference updated to version 1.06. 17294 17295 17296 17297------------------------------------------ 17298Summary of changes for this label: 04_13_01 17299 17300 ACPI CA Core Subsystem: 17301 17302Restructured support for BufferFields and RegionFields. 17303BankFields support is now fully operational. All known 32-bit 17304limitations on field sizes have been removed. Both BufferFields 17305and (Operation) RegionFields are now supported by the same field 17306management code. 17307 17308Resource support now supports QWORD address and IO resources. The 1730916/32/64 bit address structures and the Extended IRQ structure 17310have been changed to properly handle Source Resource strings. 17311 17312A ThreadId of -1 is now used to indicate a "mutex not acquired" 17313condition internally and must never be returned by AcpiOsThreadId. 17314This reserved value was changed from 0 since Unix systems allow a 17315thread ID of 0. 17316 17317Linux: 17318 17319Driver code reorganized to enhance portability 17320 17321Added a kernel configuration option to control ACPI_DEBUG 17322 17323Fixed the EC driver to honor _GLK. 17324 17325ASL Compiler, version X2016: 17326 17327Fixed support for the "FixedHw" keyword. Previously, the FixedHw 17328address space was set to 0, not 0x7f as it should be. 17329 17330 ------------------------------------------ 17331Summary of changes for this label: 03_13_01 17332 17333 ACPI CA Core Subsystem: 17334 17335During ACPI initialization, the _SB_._INI method is now run if 17336present. 17337 17338Notify handler fix - notifies are deferred until the parent method 17339completes execution. This fixes the "mutex already acquired" 17340issue seen occasionally. 17341 17342Part of the "implicit conversion" rules in ACPI 2.0 have been 17343found to cause compatibility problems with existing ASL/AML. The 17344convert "result-to-target-type" implementation has been removed 17345for stores to method Args and Locals. Source operand conversion 17346is still fully implemented. Possible changes to ACPI 2.0 17347specification pending. 17348 17349Fix to AcpiRsCalculatePciRoutingTableLength to return correct 17350length. 17351 17352Fix for compiler warnings for 64-bit compiles. 17353 17354 Linux: 17355 17356/proc output aligned for easier parsing. 17357 17358Release-version compile problem fixed. 17359 17360New kernel configuration options documented in Configure.help. 17361 17362IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 17363context" message. 17364 17365 OSPM: 17366 17367Power resource driver integrated with bus manager. 17368 17369Fixed kernel fault during active cooling for thermal zones. 17370 17371Source Code: 17372 17373The source code tree has been restructured. 17374 17375 17376 17377------------------------------------------ 17378Summary of changes for this label: 03_02_01 17379 17380 Linux OS Services Layer (OSL): 17381 17382Major revision of all Linux-specific code. 17383 17384Modularized all ACPI-specific drivers. 17385 17386Added new thermal zone and power resource drivers. 17387 17388Revamped /proc interface (new functionality is under /proc/acpi). 17389 17390New kernel configuration options. 17391 17392 Linux known issues: 17393 17394New kernel configuration options not documented in Configure.help 17395yet. 17396 17397 17398Module dependencies not currently implemented. If used, they 17399should be loaded in this order: busmgr, power, ec, system, 17400processor, battery, ac_adapter, button, thermal. 17401 17402Modules will not load if CONFIG_MODVERSION is set. 17403 17404IBM 600E - entering S5 may reboot instead of shutting down. 17405 17406IBM 600E - Sleep button may generate "Invalid <NULL> context" 17407message. 17408 17409Some systems may fail with "execution mutex already acquired" 17410message. 17411 17412 ACPI CA Core Subsystem: 17413 17414Added a new OSL Interface, AcpiOsGetThreadId. This was required 17415for the deadlock detection code. Defined to return a non-zero, 32- 17416bit thread ID for the currently executing thread. May be a non- 17417zero constant integer on single-thread systems. 17418 17419Implemented deadlock detection for internal subsystem mutexes. We 17420may add conditional compilation for this code (debug only) later. 17421 17422ASL/AML Mutex object semantics are now fully supported. This 17423includes multiple acquires/releases by owner and support for the 17424 17425Mutex SyncLevel parameter. 17426 17427A new "Force Release" mechanism automatically frees all ASL 17428Mutexes that have been acquired but not released when a thread 17429exits the interpreter. This forces conformance to the ACPI spec 17430("All mutexes must be released when an invocation exits") and 17431prevents deadlocked ASL threads. This mechanism can be expanded 17432(later) to monitor other resource acquisitions if OEM ASL code 17433continues to misbehave (which it will). 17434 17435Several new ACPI exception codes have been added for the Mutex 17436support. 17437 17438Recursive method calls are now allowed and supported (the ACPI 17439spec does in fact allow recursive method calls.) The number of 17440recursive calls is subject to the restrictions imposed by the 17441SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 17442parameter. 17443 17444Implemented support for the SyncLevel parameter for control 17445methods (ACPI 2.0 feature) 17446 17447Fixed a deadlock problem when multiple threads attempted to use 17448the interpreter. 17449 17450Fixed a problem where the string length of a String package 17451element was not always set in a package returned from 17452AcpiEvaluateObject. 17453 17454Fixed a problem where the length of a String package element was 17455not always included in the length of the overall package returned 17456from AcpiEvaluateObject. 17457 17458Added external interfaces (Acpi*) to the ACPI debug memory 17459manager. This manager keeps a list of all outstanding 17460allocations, and can therefore detect memory leaks and attempts to 17461free memory blocks more than once. Useful for code such as the 17462power manager, etc. May not be appropriate for device drivers. 17463Performance with the debug code enabled is slow. 17464 17465The ACPI Global Lock is now an optional hardware element. 17466 17467 ASL Compiler Version X2015: 17468 17469Integrated changes to allow the compiler to be generated on 17470multiple platforms. 17471 17472Linux makefile added to generate the compiler on Linux 17473 17474 Source Code: 17475 17476All platform-specific headers have been moved to their own 17477subdirectory, Include/Platform. 17478 17479New source file added, Interpreter/ammutex.c 17480 17481New header file, Include/acstruct.h 17482 17483 Documentation: 17484 17485The programmer reference has been updated for the following new 17486interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 17487 17488 ------------------------------------------ 17489Summary of changes for this label: 02_08_01 17490 17491Core ACPI CA Subsystem: Fixed a problem where an error was 17492incorrectly returned if the return resource buffer was larger than 17493the actual data (in the resource interfaces). 17494 17495References to named objects within packages are resolved to the 17496 17497full pathname string before packages are returned directly (via 17498the AcpiEvaluateObject interface) or indirectly via the resource 17499interfaces. 17500 17501Linux OS Services Layer (OSL): 17502 17503Improved /proc battery interface. 17504 17505 17506Added C-state debugging output and other miscellaneous fixes. 17507 17508ASL Compiler Version X2014: 17509 17510All defined method arguments can now be used as local variables, 17511including the ones that are not actually passed in as parameters. 17512The compiler tracks initialization of the arguments and issues an 17513exception if they are used without prior assignment (just like 17514locals). 17515 17516The -o option now specifies a filename prefix that is used for all 17517output files, including the AML output file. Otherwise, the 17518default behavior is as follows: 1) the AML goes to the file 17519specified in the DSDT. 2) all other output files use the input 17520source filename as the base. 17521 17522 ------------------------------------------ 17523Summary of changes for this label: 01_25_01 17524 17525Core ACPI CA Subsystem: Restructured the implementation of object 17526store support within the interpreter. This includes support for 17527the Store operator as well as any ASL operators that include a 17528target operand. 17529 17530Partially implemented support for Implicit Result-to-Target 17531conversion. This is when a result object is converted on the fly 17532to the type of an existing target object. Completion of this 17533support is pending further analysis of the ACPI specification 17534concerning this matter. 17535 17536CPU-specific code has been removed from the subsystem (hardware 17537directory). 17538 17539New Power Management Timer functions added 17540 17541Linux OS Services Layer (OSL): Moved system state transition code 17542to the core, fixed it, and modified Linux OSL accordingly. 17543 17544Fixed C2 and C3 latency calculations. 17545 17546 17547We no longer use the compilation date for the version message on 17548initialization, but retrieve the version from AcpiGetSystemInfo(). 17549 17550Incorporated for fix Sony VAIO machines. 17551 17552Documentation: The Programmer Reference has been updated and 17553reformatted. 17554 17555 17556ASL Compiler: Version X2013: Fixed a problem where the line 17557numbering and error reporting could get out of sync in the 17558presence of multiple include files. 17559 17560 ------------------------------------------ 17561Summary of changes for this label: 01_15_01 17562 17563Core ACPI CA Subsystem: 17564 17565Implemented support for type conversions in the execution of the 17566ASL Concatenate operator (The second operand is converted to 17567match the type of the first operand before concatenation.) 17568 17569Support for implicit source operand conversion is partially 17570implemented. The ASL source operand types Integer, Buffer, and 17571String are freely interchangeable for most ASL operators and are 17572converted by the interpreter on the fly as required. Implicit 17573Target operand conversion (where the result is converted to the 17574target type before storing) is not yet implemented. 17575 17576Support for 32-bit and 64-bit BCD integers is implemented. 17577 17578Problem fixed where a field read on an aligned field could cause a 17579read past the end of the field. 17580 17581New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 17582does not return a value, but the caller expects one. (The ASL 17583compiler flags this as a warning.) 17584 17585ASL Compiler: 17586 17587Version X2011: 175881. Static typechecking of all operands is implemented. This 17589prevents the use of invalid objects (such as using a Package where 17590an Integer is required) at compile time instead of at interpreter 17591run-time. 175922. The ASL source line is printed with ALL errors and warnings. 175933. Bug fix for source EOF without final linefeed. 175944. Debug option is split into a parse trace and a namespace trace. 175955. Namespace output option (-n) includes initial values for 17596integers and strings. 175976. Parse-only option added for quick syntax checking. 175987. Compiler checks for duplicate ACPI name declarations 17599 17600Version X2012: 176011. Relaxed typechecking to allow interchangeability between 17602strings, integers, and buffers. These types are now converted by 17603the interpreter at runtime. 176042. Compiler reports time taken by each internal subsystem in the 17605debug output file. 17606 17607 17608 ------------------------------------------ 17609Summary of changes for this label: 12_14_00 17610 17611ASL Compiler: 17612 17613This is the first official release of the compiler. Since the 17614compiler requires elements of the Core Subsystem, this label 17615synchronizes everything. 17616 17617------------------------------------------ 17618Summary of changes for this label: 12_08_00 17619 17620 17621Fixed a problem where named references within the ASL definition 17622of both OperationRegions and CreateXXXFields did not work 17623properly. The symptom was an AE_AML_OPERAND_TYPE during 17624initialization of the region/field. This is similar (but not 17625related internally) to the problem that was fixed in the last 17626label. 17627 17628Implemented both 32-bit and 64-bit support for the BCD ASL 17629functions ToBCD and FromBCD. 17630 17631Updated all legal headers to include "2000" in the copyright 17632years. 17633 17634 ------------------------------------------ 17635Summary of changes for this label: 12_01_00 17636 17637Fixed a problem where method invocations within the ASL definition 17638of both OperationRegions and CreateXXXFields did not work 17639properly. The symptom was an AE_AML_OPERAND_TYPE during 17640initialization of the region/field: 17641 17642 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 17643[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 17644(0x3005) 17645 17646Fixed a problem where operators with more than one nested 17647subexpression would fail. The symptoms were varied, by mostly 17648AE_AML_OPERAND_TYPE errors. This was actually a rather serious 17649problem that has gone unnoticed until now. 17650 17651 Subtract (Add (1,2), Multiply (3,4)) 17652 17653Fixed a problem where AcpiGetHandle didn't quite get fixed in the 17654previous build (The prefix part of a relative path was handled 17655incorrectly). 17656 17657Fixed a problem where Operation Region initialization failed if 17658the operation region name was a "namepath" instead of a simple 17659"nameseg". Symptom was an AE_NO_OPERAND error. 17660 17661Fixed a problem where an assignment to a local variable via the 17662indirect RefOf mechanism only worked for the first such 17663assignment. Subsequent assignments were ignored. 17664 17665 ------------------------------------------ 17666Summary of changes for this label: 11_15_00 17667 17668ACPI 2.0 table support with backwards support for ACPI 1.0 and the 176690.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 17670the AML interpreter does NOT have support for the new 2.0 ASL 17671grammar terms at this time. 17672 17673All ACPI hardware access is via the GAS structures in the ACPI 2.0 17674FADT. 17675 17676All physical memory addresses across all platforms are now 64 bits 17677wide. Logical address width remains dependent on the platform 17678(i.e., "void *"). 17679 17680AcpiOsMapMemory interface changed to a 64-bit physical address. 17681 17682The AML interpreter integer size is now 64 bits, as per the ACPI 176832.0 specification. 17684 17685For backwards compatibility with ACPI 1.0, ACPI tables with a 17686revision number less than 2 use 32-bit integers only. 17687 17688Fixed a problem where the evaluation of OpRegion operands did not 17689always resolve them to numbers properly. 17690 17691------------------------------------------ 17692Summary of changes for this label: 10_20_00 17693 17694Fix for CBN_._STA issue. This fix will allow correct access to 17695CBN_ OpRegions when the _STA returns 0x8. 17696 17697Support to convert ACPI constants (Ones, Zeros, One) to actual 17698values before a package object is returned 17699 17700Fix for method call as predicate to if/while construct causing 17701incorrect if/while behavior 17702 17703Fix for Else block package lengths sometimes calculated wrong (if 17704block > 63 bytes) 17705 17706Fix for Processor object length field, was always zero 17707 17708Table load abort if FACP sanity check fails 17709 17710Fix for problem with Scope(name) if name already exists 17711 17712Warning emitted if a named object referenced cannot be found 17713(resolved) during method execution. 17714 17715 17716 17717 17718 17719------------------------------------------ 17720Summary of changes for this label: 9_29_00 17721 17722New table initialization interfaces: AcpiInitializeSubsystem no 17723longer has any parameters AcpiFindRootPointer - Find the RSDP (if 17724necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 17725>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 17726AcpiLoadTables 17727 17728Note: These interface changes require changes to all existing OSDs 17729 17730The PCI_Config default address space handler is always installed 17731at the root namespace object. 17732 17733------------------------------------------- 17734Summary of changes for this label: 09_15_00 17735 17736The new initialization architecture is implemented. New 17737interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 17738AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 17739 17740(Namespace is automatically loaded when a table is loaded) 17741 17742The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1774352 bytes to 32 bytes. There is usually one of these for every 17744namespace object, so the memory savings is significant. 17745 17746Implemented just-in-time evaluation of the CreateField operators. 17747 17748Bug fixes for IA-64 support have been integrated. 17749 17750Additional code review comments have been implemented 17751 17752The so-called "third pass parse" has been replaced by a final walk 17753through the namespace to initialize all operation regions (address 17754spaces) and fields that have not yet been initialized during the 17755execution of the various _INI and REG methods. 17756 17757New file - namespace/nsinit.c 17758 17759------------------------------------------- 17760Summary of changes for this label: 09_01_00 17761 17762Namespace manager data structures have been reworked to change the 17763primary object from a table to a single object. This has 17764resulted in dynamic memory savings of 3X within the namespace and 177652X overall in the ACPI CA subsystem. 17766 17767Fixed problem where the call to AcpiEvFindPciRootBuses was 17768inadvertently left commented out. 17769 17770Reduced the warning count when generating the source with the GCC 17771compiler. 17772 17773Revision numbers added to each module header showing the 17774SourceSafe version of the file. Please refer to this version 17775number when giving us feedback or comments on individual modules. 17776 17777The main object types within the subsystem have been renamed to 17778clarify their purpose: 17779 17780ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 17781ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 17782ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 17783 17784NOTE: no changes to the initialization sequence are included in 17785this label. 17786 17787------------------------------------------- 17788Summary of changes for this label: 08_23_00 17789 17790Fixed problem where TerminateControlMethod was being called 17791multiple times per method 17792 17793Fixed debugger problem where single stepping caused a semaphore to 17794be oversignalled 17795 17796Improved performance through additional parse object caching - 17797added ACPI_EXTENDED_OP type 17798 17799------------------------------------------- 17800Summary of changes for this label: 08_10_00 17801 17802Parser/Interpreter integration: Eliminated the creation of 17803complete parse trees for ACPI tables and control methods. 17804Instead, parse subtrees are created and then deleted as soon as 17805they are processed (Either entered into the namespace or executed 17806by the interpreter). This reduces the use of dynamic kernel 17807memory significantly. (about 10X) 17808 17809Exception codes broken into classes and renumbered. Be sure to 17810recompile all code that includes acexcep.h. Hopefully we won't 17811have to renumber the codes again now that they are split into 17812classes (environment, programmer, AML code, ACPI table, and 17813internal). 17814 17815Fixed some additional alignment issues in the Resource Manager 17816subcomponent 17817 17818Implemented semaphore tracking in the AcpiExec utility, and fixed 17819several places where mutexes/semaphores were being unlocked 17820without a corresponding lock operation. There are no known 17821semaphore or mutex "leaks" at this time. 17822 17823Fixed the case where an ASL Return operator is used to return an 17824unnamed package. 17825 17826------------------------------------------- 17827Summary of changes for this label: 07_28_00 17828 17829Fixed a problem with the way addresses were calculated in 17830AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 17831manifested itself when a Field was created with WordAccess or 17832DwordAccess, but the field unit defined within the Field was less 17833 17834than a Word or Dword. 17835 17836Fixed a problem in AmlDumpOperands() module's loop to pull 17837operands off of the operand stack to display information. The 17838problem manifested itself as a TLB error on 64-bit systems when 17839accessing an operand stack with two or more operands. 17840 17841Fixed a problem with the PCI configuration space handlers where 17842context was getting confused between accesses. This required a 17843change to the generic address space handler and address space 17844setup definitions. Handlers now get both a global handler context 17845(this is the one passed in by the user when executing 17846AcpiInstallAddressSpaceHandler() and a specific region context 17847that is unique to each region (For example, the _ADR, _SEG and 17848_BBN values associated with a specific region). The generic 17849function definitions have changed to the following: 17850 17851typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 17852UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 17853*HandlerContext, // This used to be void *Context void 17854*RegionContext); // This is an additional parameter 17855 17856typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 17857RegionHandle, UINT32 Function, void *HandlerContext, void 17858**RegionContext); // This used to be **ReturnContext 17859 17860------------------------------------------- 17861Summary of changes for this label: 07_21_00 17862 17863Major file consolidation and rename. All files within the 17864interpreter have been renamed as well as most header files. This 17865was done to prevent collisions with existing files in the host 17866OSs -- filenames such as "config.h" and "global.h" seem to be 17867quite common. The VC project files have been updated. All 17868makefiles will require modification. 17869 17870The parser/interpreter integration continues in Phase 5 with the 17871implementation of a complete 2-pass parse (the AML is parsed 17872twice) for each table; This avoids the construction of a huge 17873parse tree and therefore reduces the amount of dynamic memory 17874required by the subsystem. Greater use of the parse object cache 17875means that performance is unaffected. 17876 17877Many comments from the two code reviews have been rolled in. 17878 17879The 64-bit alignment support is complete. 17880 17881------------------------------------------- 17882Summary of changes for this label: 06_30_00 17883 17884With a nod and a tip of the hat to the technology of yesteryear, 17885we've added support in the source code for 80 column output 17886devices. The code is now mostly constrained to 80 columns or 17887less to support environments and editors that 1) cannot display 17888or print more than 80 characters on a single line, and 2) cannot 17889disable line wrapping. 17890 17891A major restructuring of the namespace data structure has been 17892completed. The result is 1) cleaner and more 17893understandable/maintainable code, and 2) a significant reduction 17894in the dynamic memory requirement for each named ACPI object 17895(almost half). 17896 17897------------------------------------------- 17898Summary of changes for this label: 06_23_00 17899 17900Linux support has been added. In order to obtain approval to get 17901the ACPI CA subsystem into the Linux kernel, we've had to make 17902quite a few changes to the base subsystem that will affect all 17903users (all the changes are generic and OS- independent). The 17904effects of these global changes have been somewhat far reaching. 17905Files have been merged and/or renamed and interfaces have been 17906renamed. The major changes are described below. 17907 17908Osd* interfaces renamed to AcpiOs* to eliminate namespace 17909pollution/confusion within our target kernels. All OSD 17910interfaces must be modified to match the new naming convention. 17911 17912Files merged across the subsystem. A number of the smaller source 17913and header files have been merged to reduce the file count and 17914increase the density of the existing files. There are too many 17915to list here. In general, makefiles that call out individual 17916files will require rebuilding. 17917 17918Interpreter files renamed. All interpreter files now have the 17919prefix am* instead of ie* and is*. 17920 17921Header files renamed: The acapi.h file is now acpixf.h. The 17922acpiosd.h file is now acpiosxf.h. We are removing references to 17923the acronym "API" since it is somewhat windowsy. The new name is 17924"external interface" or xface or xf in the filenames.j 17925 17926 17927All manifest constants have been forced to upper case (some were 17928mixed case.) Also, the string "ACPI_" has been prepended to many 17929(not all) of the constants, typedefs, and structs. 17930 17931The globals "DebugLevel" and "DebugLayer" have been renamed 17932"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 17933 17934All other globals within the subsystem are now prefixed with 17935"AcpiGbl_" Internal procedures within the subsystem are now 17936prefixed with "Acpi" (with only a few exceptions). The original 17937two-letter abbreviation for the subcomponent remains after "Acpi" 17938- for example, CmCallocate became AcpiCmCallocate. 17939 17940Added a source code translation/conversion utility. Used to 17941generate the Linux source code, it can be modified to generate 17942other types of source as well. Can also be used to cleanup 17943existing source by removing extraneous spaces and blank lines. 17944Found in tools/acpisrc/* 17945 17946OsdUnMapMemory was renamed to OsdUnmapMemory and then 17947AcpiOsUnmapMemory. (UnMap became Unmap). 17948 17949A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 17950When set to one, this indicates that the caller wants to use the 17951 17952semaphore as a mutex, not a counting semaphore. ACPI CA uses 17953both types. However, implementers of this call may want to use 17954different OS primitives depending on the type of semaphore 17955requested. For example, some operating systems provide separate 17956 17957"mutex" and "semaphore" interfaces - where the mutex interface is 17958much faster because it doesn't have all the overhead of a full 17959semaphore implementation. 17960 17961Fixed a deadlock problem where a method that accesses the PCI 17962address space can block forever if it is the first access to the 17963space. 17964 17965------------------------------------------- 17966Summary of changes for this label: 06_02_00 17967 17968Support for environments that cannot handle unaligned data 17969accesses (e.g. firmware and OS environments devoid of alignment 17970handler technology namely SAL/EFI and the IA-64 Linux kernel) has 17971been added (via configurable macros) in these three areas: - 17972Transfer of data from the raw AML byte stream is done via byte 17973moves instead of word/dword/qword moves. - External objects are 17974aligned within the user buffer, including package elements (sub- 17975objects). - Conversion of name strings to UINT32 Acpi Names is now 17976done byte-wise. 17977 17978The Store operator was modified to mimic Microsoft's 17979implementation when storing to a Buffer Field. 17980 17981Added a check of the BM_STS bit before entering C3. 17982 17983The methods subdirectory has been obsoleted and removed. A new 17984file, cmeval.c subsumes the functionality. 17985 17986A 16-bit (DOS) version of AcpiExec has been developed. The 17987makefile is under the acpiexec directory. 17988