1---------------------------------------- 210 August 2018. Summary of changes for version 20180810: 3 4 51) ACPICA kernel-resident subsystem: 6 7Initial ACPI table loading: Attempt to continue loading ACPI tables 8regardless of malformed AML. Since migrating table initialization to the 9new module-level code support, the AML interpreter rejected tables upon 10any ACPI error encountered during table load. This is a problem because 11non-serious ACPI errors during table load do not necessarily mean that 12the entire definition block (DSDT or SSDT) is invalid. This change 13improves the table loading by ignoring some types of errors that can be 14generated by incorrect AML. This can range from object type errors, scope 15errors, and index errors. 16 17Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 18during suspend/resume. The status of ACPI events is no longer cleared 19when entering the ACPI S5 system state (power off) which caused some 20systems to power up immediately after turning off power in certain 21situations. This was a functional regression. It was fixed by clearing 22the status of all ACPI events again when entering S5 (for system-wide 23suspend or hibernation the clearing of the status of all events is not 24desirable, as it might cause the kernel to miss wakeup events sometimes). 25Rafael Wysocki. 26 27 282) iASL Compiler/Disassembler and Tools: 29 30AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 31elements listed in the initialization file were previously initialized 32after the table load and before executing module-level code blocks. 33Recent changes in the module-level code support means that the table load 34becomes a large control method execution. If fields are used within 35module-level code and we are executing with the -fi option, the 36initialization values were used to initialize the namespace object(s) 37only after the table was finished loading. This change Provides an early 38initialization of objects specified in the initialization file so that 39field unit values are populated during the table load (not after the 40load). 41 42AcpiExec: Fixed a small memory leak regression that could result in 43warnings during exit of the utility. These warnings were similar to 44these: 45 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 46 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 47 48---------------------------------------- 4929 June 2018. Summary of changes for version 20180629: 50 51 521) iASL Compiler/Disassembler and Tools: 53 54iASL: Fixed a regression related to the use of the ASL External 55statement. Error checking for the use of the External() statement has 56been relaxed. Previously, a restriction on the use of External meant that 57the referenced named object was required to be defined in a different 58table (an SSDT). Thus it would be an error to declare an object as an 59external and then define the same named object in the same table. For 60example: 61 DefinitionBlock (...) 62 { 63 External (DEV1) 64 Device (DEV1){...} // This was an error 65 } 66However, this behavior has caused regressions in some existing ASL code, 67because there is code that depends on named objects and externals (with 68the same name) being declared in the same table. This change will allow 69the ASL code above to compile without errors or warnings. 70 71iASL: Implemented ASL language extensions for four operators to make some 72of their arguments optional instead of required: 73 1) Field (RegionName, AccessType, LockRule, UpdateRule) 74 2) BankField (RegionName, BankName, BankValue, 75 AccessType, LockRule, UpdateRule) 76 3) IndexField (IndexName, DataName, 77 AccessType, LockRule, UpdateRule) 78For the Field operators above, the AccessType, LockRule, and UpdateRule 79are now optional arguments. The default values are: 80 AccessType: AnyAcc 81 LockRule: NoLock 82 UpdateRule: Preserve 83 4) Mutex (MutexName, SyncLevel) 84For this operator, the SyncLevel argument is now optional. This argument 85is rarely used in any meaningful way by ASL code, and thus it makes sense 86to make it optional. The default value is: 87 SyncLevel: 0 88 89iASL: Attempted use of the ASL Unload() operator now results in the 90following warning: 91 "Unload is not supported by all operating systems" 92This is in fact very true, and the Unload operator may be completely 93deprecated in the near future. 94 95AcpiExec: Fixed a regression for the -fi option (Namespace initialization 96file. Recent changes in the ACPICA module-level code support altered the 97table load/initialization sequence . This means that the table load has 98become a large method execution of the table itself. If Operation Region 99Fields are used within any module-level code and the -fi option was 100specified, the initialization values were populated only after the table 101had completely finished loading (and thus the module-level code had 102already been executed). This change moves the initialization of objects 103listed in the initialization file to before the table is executed as a 104method. Field unit values are now initialized before the table execution 105is performed. 106 107---------------------------------------- 10831 May 2018. Summary of changes for version 20180531: 109 110 1111) ACPICA kernel-resident Subsystem: 112 113Implemented additional support to help ensure that a DSDT or SSDT is 114fully loaded even if errors are incurred during the load. The majority of 115the problems that are seen is the failure of individual AML operators 116that occur during execution of any module-level code (MLC) existing in 117the table. This support adds a mechanism to abort the current ASL 118statement (AML opcode), emit an error message, and to simply move on to 119the next opcode -- instead of aborting the entire table load. This is 120different than the execution of a control method where the entire method 121is aborted upon any error. The goal is to perform a very "best effort" to 122load the ACPI tables. The most common MLC errors that have been seen in 123the field are direct references to unresolved ASL/AML symbols (referenced 124directly without the use of the CondRefOf operator to validate the 125symbol). This new ACPICA behavior is now compatible with other ACPI 126implementations. 127 128Interpreter: The Unload AML operator is no longer supported for the 129reasons below. An AE_NOT_IMPLEMENTED exception is returned. 1301) A correct implementation on at least some hosts may not be possible. 1312) Other ACPI implementations do not correctly/fully support it. 1323) It requires host device driver support which is not known to exist. 133 (To properly support namespace unload out from underneath.) 1344) This AML operator has never been seen in the field. 135 136Parser: Added a debug option to dump AML parse sub-trees as they are 137being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 138ACPI_DB_PARSE_TREES. 139 140Debugger: Reduced the verbosity for errors incurred during table load and 141module-level code execution. 142 143Completed an investigation into adding a namespace node "owner list" 144instead of the current "owner ID" associated with namespace nodes. This 145list would link together all nodes that are owned by an individual 146control method. The purpose would be to enhance control method execution 147by speeding up cleanup during method exit (all namespace nodes created by 148a method are deleted upon method termination.) Currently, the entire 149namespace must be searched for matching owner IDs if (and only if) the 150method creates named objects outside of the local scope. However, by far 151the most common case is that methods create objects locally, not outside 152the method scope. There is already an ACPICA optimization in place that 153only searches the entire namespace in the rare case of a method creating 154objects elsewhere in the namespace. Therefore, it is felt that the 155overhead of adding an additional pointer to each namespace node to 156implement the owner list makes this feature unnecessary. 157 158 1592) iASL Compiler/Disassembler and Tools: 160 161iASL, Disassembler, and Template generator: Implemented support for 162Revision D of the IORT table. Adds a new subtable that is used to specify 163SMMUv3 PMCGs. rmurphy-arm. 164 165Disassembler: Restored correct table header validation for the "special" 166ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 167table header and must be special-cased. This was a regression that has 168been present for apparently a long time. 169 170AcpiExec: Reduced verbosity of the local exception handler implemented 171within acpiexec. This handler is invoked by ACPICA upon any exceptions 172generated during control method execution. A new option was added: -vh 173restores the original verbosity level if desired. 174 175AcpiExec: Changed the default base from decimal to hex for the -x option 176(set debug level). This simplifies the use of this option and matches the 177behavior of the corresponding iASL -x option. 178 179AcpiExec: Restored a force-exit on multiple control-c (sigint) 180interrupts. This allows program termination even if other issues cause 181the control-c to fail. 182 183ASL test suite (ASLTS): Added tests for the recently implemented package 184element resolution mechanism that allows forward references to named 185objects from individual package elements (this mechanism provides 186compatibility with other ACPI implementations.) 187 188 189---------------------------------------- 1908 May 2018. Summary of changes for version 20180508: 191 192 1931) ACPICA kernel-resident subsystem: 194 195Completed the new (recently deployed) package resolution mechanism for 196the Load and LoadTable ASL/AML operators. This fixes a regression that 197was introduced in version 20180209 that could result in an 198AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 199(SSDT) that contains package objects. 200 201 2022) iASL Compiler/Disassembler and Tools: 203 204AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 2051 MB. This change allows for table offsets within the acpidump file to be 206up to 8 characters. These changes are backwards compatible with existing 207acpidump files. 208 209 210---------------------------------------- 21127 April 2018. Summary of changes for version 20180427: 212 213 2141) ACPICA kernel-resident subsystem: 215 216Debugger: Added support for Package objects in the "Test Objects" 217command. This command walks the entire namespace and evaluates all named 218data objects (Integers, Strings, Buffers, and now Packages). 219 220Improved error messages for the namespace root node. Originally, the root 221was referred to by the confusing string "\___". This has been replaced by 222"Namespace Root" for clarification. 223 224Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 225Ian King <colin.king@canonical.com>. 226 227 2282) iASL Compiler/Disassembler and Tools: 229 230iASL: Implemented support to detect and flag illegal forward references. 231For compatibility with other ACPI implementations, these references are 232now illegal at the root level of the DSDT or SSDTs. Forward references 233have always been illegal within control methods. This change should not 234affect existing ASL/AML code because of the fact that these references 235have always been illegal in the other ACPI implementation. 236 237iASL: Added error messages for the case where a table OEM ID and OEM 238TABLE ID strings are longer than the ACPI-defined length. Previously, 239these strings were simply silently truncated. 240 241iASL: Enhanced the -tc option (which creates an AML hex file in C, 242suitable for import into a firmware project): 243 1) Create a unique name for the table, to simplify use of multiple 244SSDTs. 245 2) Add a protection #ifdef in the file, similar to a .h header file. 246With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 247evan.lloyd@arm.com 248 249AcpiExec: Added a new option, -df, to disable the local fault handler. 250This is useful during debugging, where it may be desired to drop into a 251debugger on a fault. 252 253---------------------------------------- 25413 March 2018. Summary of changes for version 20180313: 255 256 2571) ACPICA kernel-resident subsystem: 258 259Implemented various improvements to the GPE support: 260 2611) Dispatch all active GPEs at initialization time so that no GPEs are 262lost. 2632) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 264before devices are enumerated. 2653) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 266IRQs are not lost. 2674) Add parallel GPE handling to eliminate the possibility of dispatching 268the same GPE twice. 2695) Dispatch any pending GPEs after enabling for the first time. 270 271AcpiGetObjectInfo - removed support for the _STA method. This was causing 272problems on some platforms. 273 274Added a new _OSI string, "Windows 2017.2". 275 276Cleaned up and simplified the module-level code support. These changes 277are in preparation for the eventual removal of the legacy MLC support 278(deferred execution), replaced by the new MLC architecture which executes 279the MLC as a table is loaded (DSDT/SSDTs). 280 281Changed a compile-time option to a runtime option. Changes the option to 282ignore ACPI table load-time package resolution errors into a runtime 283option. Used only for platforms that generate many AE_NOT_FOUND errors 284during boot. AcpiGbl_IgnorePackageResolutionErrors. 285 286Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 287ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 288compilation errors from unused variables (seen with some compilers). 289 290 2912) iASL Compiler/Disassembler and Tools: 292 293ASLTS: parallelized execution in order to achieve an (approximately) 2X 294performance increase. 295 296ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 297error reporting. 298 299---------------------------------------- 30009 February 2018. Summary of changes for version 20180209: 301 302 3031) ACPICA kernel-resident subsystem: 304 305Completed the final integration of the recent changes to Package Object 306handling and the module-level AML code support. This allows forward 307references from individual package elements when the package object is 308declared from within module-level code blocks. Provides compatibility 309with other ACPI implementations. 310 311The new architecture for the AML module-level code has been completed and 312is now the default for the ACPICA code. This new architecture executes 313the module-level code in-line as the ACPI table is loaded/parsed instead 314of the previous architecture which deferred this code until after the 315table was fully loaded. This solves some ASL code ordering issues and 316provides compatibility with other ACPI implementations. At this time, 317there is an option to fallback to the earlier architecture, but this 318support is deprecated and is planned to be completely removed later this 319year. 320 321Added a compile-time option to ignore AE_NOT_FOUND exceptions during 322resolution of named reference elements within Package objects. Although 323this is potentially a serious problem, it can generate a lot of 324noise/errors on platforms whose firmware carries around a bunch of unused 325Package objects. To disable these errors, define 326ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 327errors are always reported for ACPICA applications such as AcpiExec. 328 329Fixed a regression related to the explicit type-conversion AML operators 330(ToXXXX). The regression was introduced early in 2017 but was not seen 331until recently because these operators are not fully supported by other 332ACPI implementations and are thus rarely used by firmware developers. The 333operators are defined by the ACPI specification to not implement the 334"implicit result object conversion". The regression incorrectly 335introduced this object conversion for the following explicit conversion 336operators: 337 ToInteger 338 ToString 339 ToBuffer 340 ToDecimalString 341 ToHexString 342 ToBCD 343 FromBCD 344 345 3462) iASL Compiler/Disassembler and Tools: 347 348iASL: Fixed a problem with the compiler constant folding feature as 349related to the ToXXXX explicit conversion operators. These operators do 350not support the "implicit result object conversion" by definition. Thus, 351ASL expressions that use these operators cannot be folded to a simple 352Store operator because Store implements the implicit conversion. This 353change uses the CopyObject operator for the ToXXXX operator folding 354instead. CopyObject is defined to not implement implicit result 355conversions and is thus appropriate for folding the ToXXXX operators. 356 357iASL: Changed the severity of an error condition to a simple warning for 358the case where a symbol is declared both locally and as an external 359symbol. This accommodates existing ASL code. 360 361AcpiExec: The -ep option to enable the new architecture for module-level 362code has been removed. It is replaced by the -dp option which instead has 363the opposite effect: it disables the new architecture (the default) and 364enables the legacy architecture. When the legacy code is removed in the 365future, the -dp option will be removed also. 366 367---------------------------------------- 36805 January 2018. Summary of changes for version 20180105: 369 370 3711) ACPICA kernel-resident subsystem: 372 373Updated all copyrights to 2018. This affects all source code modules. 374 375Fixed a possible build error caused by an unresolved reference to the 376AcpiUtSafeStrncpy function. 377 378Removed NULL pointer arithmetic in the various pointer manipulation 379macros. All "(void *) NULL" constructs are converted to "(void *) 0". 380This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 381 382Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 383Mittal. 384 385 3862) iASL Compiler/Disassembler and Tools: 387 388ASLTS: Updated all copyrights to 2018. 389 390Tools: Updated all signon copyrights to 2018. 391 392AcpiXtract: Fixed a regression related to ACPI table signatures where the 393signature was truncated to 3 characters (instead of 4). 394 395AcpiExec: Restore the original terminal mode after the use of the -v and 396-vd options. 397 398ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 399 400---------------------------------------- 40114 December 2017. Summary of changes for version 20171214: 402 403 4041) ACPICA kernel-resident subsystem: 405 406Fixed a regression in the external (public) AcpiEvaluateObjectTyped 407interface where the optional "pathname" argument had inadvertently become 408a required argument returning an error if omitted (NULL pointer 409argument). 410 411Fixed two possible memory leaks related to the recently developed "late 412resolution" of reference objects within ASL Package Object definitions. 413 414Added two recently defined _OSI strings: "Windows 2016" and "Windows 4152017". Mario Limonciello. 416 417Implemented and deployed a safer version of the C library function 418strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 419creation of unterminated strings as a possible result of a standard 420strncpy. 421 422Cleaned up and restructured the global variable file (acglobal.h). There 423are many changes, but no functional changes. 424 425 4262) iASL Compiler/Disassembler and Tools: 427 428iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 429optional OemData field at the end of the table was incorrectly required 430for proper compilation. It is now correctly an optional field. 431 432ASLTS: The entire suite was converted from standard ASL to the ASL+ 433language, using the ASL-to-ASL+ converter which is integrated into the 434iASL compiler. A binary compare of all output files has verified the 435correctness of the conversion. 436 437iASL: Fixed the source code build for platforms where "char" is unsigned. 438This affected the iASL lexer only. Jung-uk Kim. 439 440---------------------------------------- 44110 November 2017. Summary of changes for version 20171110: 442 443 4441) ACPICA kernel-resident subsystem: 445 446This release implements full support for ACPI 6.2A: 447 NFIT - Added a new subtable, "Platform Capabilities Structure" 448No other changes to ACPICA were required, since ACPI 6.2A is primarily an 449errata release of the specification. 450 451Other ACPI table changes: 452 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 453 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 454Linton 455 456Utilities: Modified the string/integer conversion functions to use 457internal 64-bit divide support instead of a native divide. On 32-bit 458platforms, a 64-bit divide typically requires a library function which 459may not be present in the build (kernel or otherwise). 460 461Implemented a targeted error message for timeouts returned from the 462Embedded Controller device driver. This is seen frequently enough to 463special-case an AE_TIME returned from an EC operation region access: 464 "Timeout from EC hardware or EC device driver" 465 466Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 467runtime error messages have the identical prefix. 468 469 4702) iASL Compiler/Disassembler and Tools: 471 472AcpiXtract: Fixed a problem with table header detection within the 473acpidump file. Processing a table could be ended early if a 0x40 (@) 474appears in the original binary table, resulting in the @ symbol appearing 475in the decoded ASCII field at the end of the acpidump text line. The 476symbol caused acpixtract to incorrectly think it had reached the end of 477the current table and the beginning of a new table. 478 479AcpiXtract: Added an option (-f) to ignore some errors during table 480extraction. This initial implementation ignores non-ASCII and non- 481printable characters found in the acpidump text file. 482 483TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 484for ASLTS. This feature is used to track memory allocations from 485different memory caches within the ACPICA code. At the end of an ASLTS 486run, these memory statistics are recorded and stored in a log file. 487 488Debugger (user-space version): Implemented a simple "Background" command. 489Creates a new thread to execute a control method in the background, while 490control returns to the debugger prompt to allow additional commands. 491 Syntax: Background <Namepath> [Arguments] 492 493---------------------------------------- 49429 September 2017. Summary of changes for version 20170929: 495 496 4971) ACPICA kernel-resident subsystem: 498 499Redesigned and implemented an improved ASL While() loop timeout 500mechanism. This mechanism is used to prevent infinite loops in the kernel 501AML interpreter caused by either non-responsive hardware or incorrect AML 502code. The new implementation uses AcpiOsGetTimer instead of a simple 503maximum loop count, and is thus more accurate and constant across 504different machines. The default timeout is currently 30 seconds, but this 505may be adjusted later. 506 507Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 508better reflect the new implementation of the loop timeout mechanism. 509 510Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 511and to fix an off-by-one error. Jung-uk Kim. 512 513Fixed an EFI build problem by updating the makefiles to for a new file 514that was added, utstrsuppt.c 515 516 5172) iASL Compiler/Disassembler and Tools: 518 519Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 520includes support in the table disassembler, compiler, and template 521generator. 522 523iASL: Added an exception for an illegal type of recursive method 524invocation. If a method creates named objects, the first recursive call 525will fail at runtime. This change adds an error detection at compile time 526to catch the problem up front. Note: Marking such a method as 527"serialized" will not help with this problem, because the same thread can 528acquire the method mutex more than once. Example compiler and runtime 529output: 530 531 Method (MTH1) 532 { 533 Name (INT1, 1) 534 MTH1 () 535 } 536 537 dsdt.asl 22: MTH1 () 538 Error 6152 - ^ Illegal recursive call to method 539 that creates named objects (MTH1) 540 541Previous runtime exception: 542 ACPI Error: [INT1] Namespace lookup failure, 543 AE_ALREADY_EXISTS (20170831/dswload2-465) 544 545iASL: Updated support for External() opcodes to improve namespace 546management and error detection. These changes are related to issues seen 547with multiple-segment namespace pathnames within External declarations, 548such as below: 549 550 External(\_SB.PCI0.GFX0, DeviceObj) 551 External(\_SB.PCI0.GFX0.ALSI) 552 553iASL: Implemented support for multi-line error/warning messages. This 554enables more detailed and helpful error messages as below, from the 555initial deployment for the duplicate names error: 556 557 DSDT.iiii 1692: Device(PEG2) { 558 Error 6074 - ^ Name already exists in scope 559(PEG2) 560 561 Original name creation/declaration below: 562 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 563 564AcpiXtract: Added additional flexibility to support differing input hex 565dump formats. Specifically, hex dumps that contain partial disassembly 566and/or comments within the ACPI table data definition. There exist some 567dump utilities seen in the field that create this type of hex dump (such 568as Simics). For example: 569 570 DSDT @ 0xdfffd0c0 (10999 bytes) 571 Signature DSDT 572 Length 10999 573 Revision 1 574 Checksum 0xf3 (Ok) 575 OEM_ID BXPC 576 OEM_table_id BXDSDT 577 OEM_revision 1 578 Creator_id 1280593481 579 Creator_revision 537399345 580 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 581 ... 582 2af0: 5f 4c 30 46 00 a4 01 583 584Test suite: Miscellaneous changes/fixes: 585 More cleanup and simplification of makefiles 586 Continue compilation of test cases after a compile failure 587 Do not perform binary compare unless both files actually exist 588 589iASL: Performed some code/module restructuring. Moved all memory 590allocation functions to new modules. Two new files, aslallocate.c and 591aslcache.c 592 593---------------------------------------- 59431 August 2017. Summary of changes for version 20170831: 595 596 5971) ACPICA kernel-resident subsystem: 598 599Implemented internal support for full 64-bit addresses that appear in all 600Generic Address Structure (GAS) structures. Previously, only the lower 32 601bits were used. Affects the use of GAS structures in the FADT and other 602tables, as well as the GAS structures passed to the AcpiRead and 603AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 604 605Added header support for the PDTT ACPI table (Processor Debug Trigger 606Table). Full support in the iASL Data Table Compiler and disassembler is 607forthcoming. 608 609 6102) iASL Compiler/Disassembler and Tools: 611 612iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 613Properties Topology Table) where a flag bit was specified in the wrong 614bit position ("Line Size Valid", bit 6). 615 616iASL: Implemented support for Octal integer constants as defined by the 617ASL language grammar, per the ACPI specification. Any integer constant 618that starts with a zero is an octal constant. For example, 619 Store (037777, Local0) /* Octal constant */ 620 Store (0x3FFF, Local0) /* Hex equivalent */ 621 Store (16383, Local0) /* Decimal equivalent */ 622 623iASL: Improved overflow detection for 64-bit string conversions during 624compilation of integer constants. "Overflow" in this case means a string 625that represents an integer that is too large to fit into a 64-bit value. 626Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 627the low-order 32 bits with a warning, as previously implemented. Several 628new exceptions are defined that indicate a 64-bit overflow, as well as 629the base (radix) that was used during the attempted conversion. Examples: 630 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 631 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 632 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 633 634iASL: Added a warning for the case where a ResourceTemplate is declared 635with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 636this case, the resulting template is created with a single END_TAG 637descriptor, which is essentially useless. 638 639iASL: Expanded the -vw option (ignore specific warnings/remarks) to 640include compilation error codes as well. 641 642---------------------------------------- 64328 July 2017. Summary of changes for version 20170728: 644 645 6461) ACPICA kernel-resident subsystem: 647 648Fixed a regression seen with small resource descriptors that could cause 649an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 650 651AML interpreter: Implemented a new feature that allows forward references 652from individual named references within package objects that are 653contained within blocks of "module-level code". This provides 654compatibility with other ACPI implementations and supports existing 655firmware that depends on this feature. Example: 656 657 Name (ABCD, 1) 658 If (ABCD) /* An If() at module-level */ 659 { 660 Name (PKG1, Package() 661 { 662 INT1 /* Forward reference to object INT1 663*/ 664 }) 665 Name (INT1, 0x1234) 666 } 667 668AML Interpreter: Fixed a problem with the Alias() operator where aliases 669to some ASL objects were not handled properly. Objects affected are: 670Mutex, Event, and OperationRegion. 671 672AML Debugger: Enhanced to properly handle AML Alias objects. These 673objects have one level of indirection which was not fully supported by 674the debugger. 675 676Table Manager: Added support to detect and ignore duplicate SSDTs within 677the XSDT/RSDT. This error in the XSDT has been seen in the field. 678 679EFI and EDK2 support: 680 Enabled /WX flag for MSVC builds 681 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 682 Added local support for 64-bit multiply and shift operations 683 Added support to compile acpidump.efi on Windows 684 Added OSL function stubs for interfaces not used under EFI 685 686Added additional support for the _DMA predefined name. _DMA returns a 687buffer containing a resource template. This change add support within the 688resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 689resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 690 691 6922) iASL Compiler/Disassembler and Tools: 693 694iASL: Fixed a problem where the internal input line buffer(s) could 695overflow if there are very long lines in the input ASL source code file. 696Implemented buffer management that automatically increases the size of 697the buffers as necessary. 698 699iASL: Added an option (-vx) to "expect" particular remarks, warnings and 700errors. If the specified exception is not raised during compilation, the 701compiler emits an error. This is intended to support the ASL test suite, 702but may be useful in other contexts. 703 704iASL: Implemented a new predefined macro, __METHOD__, which returns a 705string containing the name of the current control method that is being 706compiled. 707 708iASL: Implemented debugger and table compiler support for the SDEI ACPI 709table (Software Delegated Exception Interface). James Morse 710<james.morse@arm.com> 711 712Unix/Linux makefiles: Added an option to disable compile optimizations. 713The disable occurs when the NOOPT flag is set to TRUE. 714theracermaster@gmail.com 715 716Acpidump: Added support for multiple DSDT and FACS tables. This can occur 717when there are different tables for 32-bit versus 64-bit. 718 719Enhanced error reporting for the ASL test suite (ASLTS) by removing 720unnecessary/verbose text, and emit the actual line number where an error 721has occurred. These changes are intended to improve the usefulness of the 722test suite. 723 724---------------------------------------- 72529 June 2017. Summary of changes for version 20170629: 726 727 7281) ACPICA kernel-resident subsystem: 729 730Tables: Implemented a deferred ACPI table verification. This is useful 731for operating systems where the tables cannot be verified in the early 732initialization stage due to early memory mapping limitations on some 733architectures. Lv Zheng. 734 735Tables: Removed the signature validation for dynamically loaded tables. 736Provides compatibility with other ACPI implementations. Previously, only 737SSDT tables were allowed, as per the ACPI specification. Now, any table 738signature can be used via the Load() operator. Lv Zheng. 739 740Tables: Fixed several mutex issues that could cause errors during table 741acquisition. Lv Zheng. 742 743Tables: Fixed a problem where an ACPI warning could be generated if a 744null pointer was passed to the AcpiPutTable interface. Lv Zheng. 745 746Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 747AcpiPutTable interfaces. This applies to the "late stage" table loading 748when the use of AcpiPutTable is no longer required (since the system 749memory manager is fully running and available). Lv Zheng. 750 751Fixed/Reverted a regression during processing of resource descriptors 752that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 753exception in this case. 754 755Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 756I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 757 758Interpreter: Fixed a possible fault if an Alias operator with an invalid 759or duplicate target is encountered during Alias creation in 760AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 761 762Added an option to use designated initializers for function pointers. 763Kees Cook <keescook@google.com> 764 765 7662) iASL Compiler/Disassembler and Tools: 767 768iASL: Allow compilation of External declarations with target pathnames 769that refer to existing named objects within the table. Erik Schmauss. 770 771iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 772FieldUnit name also is declared via External in the same table. Erik 773Schmauss. 774 775iASL: Allow existing scope names within pathnames used in External 776statements. For example: 777 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 778 Device (ABCD) 779 780iASL: IORT ACPI table: Implemented changes required to decode the new 781Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 782compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 783 784Disassembler: Don't abort disassembly on errors from External() 785statements. Erik Schmauss. 786 787Disassembler: fixed a possible fault when one of the Create*Field 788operators references a Resource Template. ACPICA Bugzilla 1396. 789 790iASL: In the source code, resolved some naming inconsistences across the 791parsing support. Fixes confusion between "Parse Op" and "Parse Node". 792Adds a new file, aslparseop.c 793 794---------------------------------------- 79531 May 2017. Summary of changes for version 20170531: 796 797 7980) ACPI 6.2 support: 799 800The ACPI specification version 6.2 has been released and is available at 801http://uefi.org/specifications 802 803This version of ACPICA fully supports the ACPI 6.2 specification. Changes 804are summarized below. 805 806New ACPI tables (Table Compiler/Disassembler/Templates): 807 HMAT (Heterogeneous Memory Attributes Table) 808 WSMT (Windows SMM Security Mitigation Table) 809 PPTT (Processor Properties Topology Table) 810 811New subtables for existing ACPI tables: 812 HEST (New subtable, Arch-deferred machine check) 813 SRAT (New subtable, Arch-specific affinity structure) 814 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 815 816Simple updates for existing ACPI tables: 817 BGRT (two new flag bits) 818 HEST (New bit defined for several subtables, GHES_ASSIST) 819 820New Resource Descriptors and Resource macros (Compiler/Disassembler): 821 PinConfig() 822 PinFunction() 823 PinGroup() 824 PinGroupConfig() 825 PinGroupFunction() 826 New type for hardware error notification (section 18.3.2.9) 827 828New predefined names/methods (Compiler/Interpreter): 829 _HMA (Heterogeneous Memory Attributes) 830 _LSI (Label Storage Information) 831 _LSR (Label Storage Read) 832 _LSW (Label Storage Write) 833 834ASL grammar/macro changes (Compiler): 835 For() ASL macro, implemented with the AML while operator 836 Extensions to Concatenate operator 837 Support for multiple definition blocks in same ASL file 838 Clarification for Buffer operator 839 Allow executable AML code underneath all scopes (Devices, etc.) 840 Clarification/change for the _OSI return value 841 ASL grammar update for reference operators 842 Allow a zero-length string for AML filename in DefinitionBlock 843 844Miscellaneous: 845 New device object notification value 846 Remove a notify value (0x0C) for graceful shutdown 847 New UUIDs for processor/cache properties and 848 physical package property 849 New _HID, ACPI0014 (Wireless Power Calibration Device) 850 851 8521) ACPICA kernel-resident subsystem: 853 854Added support to disable ACPI events on hardware-reduced platforms. 855Eliminates error messages of the form "Could not enable fixed event". Lv 856Zheng 857 858Fixed a problem using Device/Thermal objects with the ObjectType and 859DerefOf ASL operators. This support had not been fully/properly 860implemented. 861 862Fixed a problem where if a Buffer object containing a resource template 863was longer than the actual resource template, an error was generated -- 864even though the AML is legal. This case has been seen in the field. 865 866Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 867The values for DUAL_PIC and MULTIPLE_APIC were reversed. 868 869Added header file changes for the TPM2 ACPI table. Update to new version 870of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 871 872Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 873These interfaces are intended to be used only in conjunction with the 874predefined _DLM method (Device Lock Method). "This object appears in a 875device scope when AML access to the device must be synchronized with the 876OS environment". 877 878Example Code and Data Size: These are the sizes for the OS-independent 879acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 880debug version of the code includes the debug output trace mechanism and 881has a much larger code and data size. 882 883 Current Release: 884 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 885 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 886 Previous Release: 887 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 888 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 889 890 8912) iASL Compiler/Disassembler and Tools: 892 893iASL: Fixed a problem where an External() declaration could not refer to 894a Field Unit. Erik Schmauss. 895 896Disassembler: Improved support for the Switch/Case operators. This 897feature will disassemble AML code back to the original Switch operators 898when possible, instead of an If..Else sequence. David Box 899 900iASL and disassembler: Improved the handling of multiple extraneous 901parentheses for both ASL input and disassembled ASL output. 902 903Improved the behavior of the iASL compiler and disassembler to detect 904improper use of external declarations 905 906Disassembler: Now aborts immediately upon detection of an unknown AML 907opcode. The AML parser has no real way to recover from this, and can 908result in the creation of an ill-formed parse tree that causes errors 909later during the disassembly. 910 911All tools: Fixed a problem where the Unix application OSL did not handle 912control-c correctly. For example, a control-c could incorrectly wake the 913debugger. 914 915AcpiExec: Improved the Control-C handling and added a handler for 916segmentation faults (SIGSEGV). Supports both Windows and Unix-like 917environments. 918 919Reduced the verbosity of the generic unix makefiles. Previously, each 920compilation displayed the full set of compiler options. This has been 921eliminated as the options are easily inspected within the makefiles. Each 922compilation now results in a single line of output. 923 924---------------------------------------- 92503 March 2017. Summary of changes for version 20170303: 926 927 9280) ACPICA licensing: 929 930The licensing information at the start of each source code module has 931been updated. In addition to the Intel license, the dual GPLv2/BSD 932license has been added for completeness. Now, a single version of the 933source code should be suitable for all ACPICA customers. This is the 934major change for this release since it affects all source code modules. 935 936 9371) ACPICA kernel-resident subsystem: 938 939Fixed two issues with the common asltypes.h header that could cause 940problems in some environments: (Kim Jung-uk) 941 Removed typedef for YY_BUFFER_STATE ? 942 Fixes an error with earlier versions of Flex. 943 Removed use of FILE typedef (which is only defined in stdio.h) 944 945 9462) iASL Compiler/Disassembler and Tools: 947 948Disassembler: fixed a regression introduced in 20170224. A fix for a 949memory leak related to resource descriptor tags (names) could fault when 950the disassembler was generated with 64-bit compilers. 951 952The ASLTS test suite has been updated to implement a new testing 953architecture. During generation of the suite from ASL source, both the 954ASL and ASL+ compilers are now validated, as well as the disassembler 955itself (Erik Schmauss). The architecture executes as follows: 956 957 For every ASL source module: 958 Compile (legacy ASL compilation) 959 Disassemble the resulting AML to ASL+ source code 960 Compile the new ASL+ module 961 Perform a binary compare on the legacy AML and the new ASL+ AML 962 The ASLTS suite then executes normally using the AML binaries. 963 964---------------------------------------- 96524 February 2017. Summary of changes for version 20170224: 966 967 9681) ACPICA kernel-resident subsystem: 969 970Interpreter: Fixed two issues with the control method return value auto- 971repair feature, where an attempt to double-delete an internal object 972could result in an ACPICA warning (for _CID repair and others). No fault 973occurs, however, because the attempted deletion (actually a release to an 974internal cache) is detected and ignored via object poisoning. 975 976Debugger: Fixed an AML interpreter mutex issue during the single stepping 977of control methods. If certain debugger commands are executed during 978stepping, a mutex aquire/release error could occur. Lv Zheng. 979 980Fixed some issues generating ACPICA with the Intel C compiler by 981restoring the original behavior and compiler-specific include file in 982acenv.h. Lv Zheng. 983 984Example Code and Data Size: These are the sizes for the OS-independent 985acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 986debug version of the code includes the debug output trace mechanism and 987has a much larger code and data size. 988 989 Current Release: 990 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 991 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 992 Previous Release: 993 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 994 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 995 996 9972) iASL Compiler/Disassembler and Tools: 998 999iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 1000tool has been designed, implemented, and included in this release. The 1001key feature of this utility is that the original comments within the 1002input ASL file are preserved during the conversion process, and included 1003within the converted ASL+ file -- thus creating a transparent conversion 1004of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 1005 1006 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 1007converted code 1008 1009iASL/Disassembler: Improved the detection and correct disassembly of 1010Switch/Case operators. This feature detects sequences of if/elseif/else 1011operators that originated from ASL Switch/Case/Default operators and 1012emits the original operators. David Box. 1013 1014iASL: Improved the IORT ACPI table support in the following areas. Lv 1015Zheng: 1016 Clear MappingOffset if the MappingCount is zero. 1017 Fix the disassembly of the SMMU GSU interrupt offset. 1018 Update the template file for the IORT table. 1019 1020Disassembler: Enhanced the detection and disassembly of resource 1021template/descriptor within a Buffer object. An EndTag descriptor is now 1022required to have a zero second byte, since all known ASL compilers emit 1023this. This helps eliminate incorrect decisions when a buffer is 1024disassembled (false positives on resource templates). 1025 1026---------------------------------------- 102719 January 2017. Summary of changes for version 20170119: 1028 1029 10301) General ACPICA software: 1031 1032Entire source code base: Added the 2017 copyright to all source code 1033legal/licensing module headers and utility/tool signons. This includes 1034the standard Linux dual-license header. This affects virtually every file 1035in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 1036the ACPICA test suite. 1037 1038 10392) iASL Compiler/Disassembler and Tools: 1040 1041iASL: Removed/fixed an inadvertent remark when a method argument 1042containing a reference is used as a target operand within the method (and 1043never used as a simple argument), as in the example below. Jeffrey Hugo. 1044 1045 dsdt.asl 1507: Store(0x1, Arg0) 1046 Remark 2146 - ^ Method Argument is never used (Arg0) 1047 1048All tools: Removed the bit width of the compiler that generated the tool 1049from the common signon for all user space tools. This proved to be 1050confusing and unnecessary. This includes similar removal of HARDWARE_NAME 1051from the generic makefiles (Thomas Petazzoni). Example below. 1052 1053 Old: 1054 ASL+ Optimizing Compiler version 20170119-32 1055 ASL+ Optimizing Compiler version 20170119-64 1056 1057 New: 1058 ASL+ Optimizing Compiler version 20170119 1059 1060---------------------------------------- 106122 December 2016. Summary of changes for version 20161222: 1062 1063 10641) ACPICA kernel-resident subsystem: 1065 1066AML Debugger: Implemented a new mechanism to simplify and enhance 1067debugger integration into all environments, including kernel debuggers 1068and user-space utilities, as well as remote debug services. This 1069mechanism essentially consists of new OSL interfaces to support debugger 1070initialization/termination, as well as wait/notify interfaces to perform 1071the debugger handshake with the host. Lv Zheng. 1072 1073 New OSL interfaces: 1074 AcpiOsInitializeDebugger (void) 1075 AcpiOsTerminateDebugger (void) 1076 AcpiOsWaitCommandReady (void) 1077 AcpiOsNotifyCommandComplete (void) 1078 1079 New OS services layer: 1080 osgendbg.c -- Example implementation, and used for AcpiExec 1081 1082Update for Generic Address Space (GAS) support: Although the AccessWidth 1083and/or BitOffset fields of the GAS are not often used, this change now 1084fully supports these fields. This affects the internal support for FADT 1085registers, registers in other ACPI data tables, and the AcpiRead and 1086AcpiWrite public interfaces. Lv Zheng. 1087 1088Sleep support: In order to simplify integration of ACPI sleep for the 1089various host operating systems, a new OSL interface has been introduced. 1090AcpiOsEnterSleep allows the host to perform any required operations 1091before the final write to the sleep control register(s) is performed by 1092ACPICA. Lv Zheng. 1093 1094 New OSL interface: 1095 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 1096 1097 Called from these internal interfaces: 1098 AcpiHwLegacySleep 1099 AcpiHwExtendedSleep 1100 1101EFI support: Added a very small EFI/ACPICA example application. Provides 1102a simple demo for EFI integration, as well as assisting with resolution 1103of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 1104 1105 source/tools/efihello/efihello.c 1106 1107Local C library: Implemented several new functions to enhance ACPICA 1108portability, for environments where these clib functions are not 1109available (such as EFI). Lv Zheng: 1110 putchar 1111 getchar 1112 strpbrk 1113 strtok 1114 memmove 1115 1116Fixed a regression where occasionally a valid resource descriptor was 1117incorrectly detected as invalid at runtime, and a 1118AE_AML_NO_RESOURCE_END_TAG was returned. 1119 1120Fixed a problem with the recently implemented support that enables 1121control method invocations as Target operands to many ASL operators. 1122Warnings of this form: "Needed type [Reference], found [Processor]" were 1123seen at runtime for some method invocations. 1124 1125Example Code and Data Size: These are the sizes for the OS-independent 1126acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1127debug version of the code includes the debug output trace mechanism and 1128has a much larger code and data size. 1129 1130 Current Release: 1131 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 1132 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 1133 Previous 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 1137 11382) iASL Compiler/Disassembler and Tools: 1139 1140Disassembler: Enhanced output by adding the capability to detect and 1141disassemble ASL Switch/Case statements back to the original ASL source 1142code instead of if/else blocks. David Box. 1143 1144AcpiHelp: Split a large file into separate files based upon 1145functionality/purpose. New files are: 1146 ahaml.c 1147 ahasl.c 1148 1149---------------------------------------- 115017 November 2016. Summary of changes for version 20161117: 1151 1152 11531) ACPICA kernel-resident subsystem: 1154 1155Table Manager: Fixed a regression introduced in 20160729, "FADT support 1156cleanup". This was an attempt to remove all references in the source to 1157the FADT version 2, which never was a legal version number. It was 1158skipped because it was an early version of 64-bit support that was 1159eventually abandoned for the current 64-bit support. 1160 1161Interpreter: Fixed a problem where runtime implicit conversion was 1162incorrectly disabled for the ASL operators below. This brings the 1163behavior into compliance with the ACPI specification: 1164 FromBCD 1165 ToBCD 1166 ToDecimalString 1167 ToHexString 1168 ToInteger 1169 ToBuffer 1170 1171Table Manager: Added a new public interface, AcpiPutTable, used to 1172release and free an ACPI table returned by AcpiGetTable and related 1173interfaces. Lv Zheng. 1174 1175Example Code and Data Size: These are the sizes for the OS-independent 1176acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1177debug version of the code includes the debug output trace mechanism and 1178has a much larger code and data size. 1179 1180 Current Release: 1181 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1182 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1183 Previous Release: 1184 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1185 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1186 1187 11882) iASL Compiler/Disassembler and Tools: 1189 1190Disassembler: Fixed a regression for disassembly of Resource Template. 1191Detection of templates in the AML stream missed some types of templates. 1192 1193iASL: Fixed a problem where an Access Size error was returned for the PCC 1194address space when the AccessSize of the GAS register is greater than a 1195DWORD. Hoan Tran. 1196 1197iASL: Implemented several grammar changes for the operators below. These 1198changes are slated for the next version of the ACPI specification: 1199 RefOf - Disallow method invocation as an operand 1200 CondRefOf - Disallow method invocation as an operand 1201 DerefOf - Disallow operands that use the result from operators 1202that 1203 do not return a reference (Changed TermArg to 1204SuperName). 1205 1206iASL: Control method invocations are now allowed for Target operands, as 1207per the ACPI specification. Removed error for using a control method 1208invocation as a Target operand. 1209 1210Disassembler: Improved detection of Resource Templates, Unicode, and 1211Strings within Buffer objects. These subtypes do not contain a specific 1212opcode to indicate the originating ASL code, and they must be detected by 1213other means within the disassembler. 1214 1215iASL: Implemented an optimization improvement for 32-bit ACPI tables 1216(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 1217only after 64-bit to 32-bit truncation. A truncation warning message is 1218still emitted, however. 1219 1220AcpiXtract: Implemented handling for both types of line terminators (LF 1221or CR/LF) so that it can accept AcpiDump output files from any system. 1222Peter Wu. 1223 1224AcpiBin: Added two new options for comparing AML files: 1225 -a: compare and display ALL mismatches 1226 -o: start compare at this offset into the second file 1227 1228---------------------------------------- 122930 September 2016. Summary of changes for version 20160930: 1230 1231 12321) ACPICA kernel-resident subsystem: 1233 1234Fixed a regression in the internal AcpiTbFindTable function where a non 1235AE_OK exception could inadvertently be returned even if the function did 1236not fail. This problem affects the following operators: 1237 DataTableRegion 1238 LoadTable 1239 1240Fixed a regression in the LoadTable operator where a load to any 1241namespace location other than the root no longer worked properly. 1242 1243Increased the maximum loop count value that will result in the 1244AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 1245prevent infinite loops within the AML interpreter and thus the host OS 1246kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 12471,048,575). 1248 1249Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 1250acpixf.h file. This allows hosts to easily configure the maximum loop 1251count at runtime. 1252 1253Removed an illegal character in the strtoul64.c file. This character 1254caused errors with some C compilers. 1255 1256Example Code and Data Size: These are the sizes for the OS-independent 1257acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1258debug version of the code includes the debug output trace mechanism and 1259has a much larger code and data size. 1260 1261 Current Release: 1262 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1263 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1264 Previous Release: 1265 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 1266 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 1267 1268 12692) iASL Compiler/Disassembler and Tools: 1270 1271Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 1272the simpler ASL ElseIf keyword. During the conversion, a trailing If 1273block could be lost and missing from the disassembled output. 1274 1275iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 1276the missing rule caused a parse error when using the Index operator as an 1277operand to ObjectType. This construct now compiles properly. Example: 1278 ObjectType(PKG1[4]). 1279 1280iASL: Correctly handle unresolved symbols in the hardware map file (-lm 1281option). Previously, unresolved symbols could cause a protection fault. 1282Such symbols are now marked as unresolved in the map file. 1283 1284iASL: Implemented support to allow control method invocations as an 1285operand to the ASL DeRefOf operator. Example: 1286 DeRefOf(MTH1(Local0)) 1287 1288Disassembler: Improved support for the ToPLD ASL macro. Detection of a 1289possible _PLD buffer now includes examination of both the normal buffer 1290length (16 or 20) as well as the surrounding AML package length. 1291 1292Disassembler: Fixed a problem with the decoding of complex expressions 1293within the Divide operator for ASL+. For the case where both the quotient 1294and remainder targets are specified, the entire statement cannot be 1295disassembled. Previously, the output incorrectly contained a mix of ASL- 1296and ASL+ operators. This mixed statement causes a syntax error when 1297compiled. Example: 1298 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 1299disassembled to: 1300 Divide (INT1 + 6, 128, RSLT, QUOT) 1301 1302iASL/Tools: Added support to process AML and non-AML ACPI tables 1303consistently. For the disassembler and AcpiExec, allow all types of ACPI 1304tables (AML and data tables). For the iASL -e option, allow only AML 1305tables (DSDT/SSDT). 1306 1307---------------------------------------- 130831 August 2016. Summary of changes for version 20160831: 1309 1310 13111) ACPICA kernel-resident subsystem: 1312 1313Improve support for the so-called "module-level code", which is defined 1314to be math, logical and control AML opcodes that appear outside of any 1315control method. This change improves the support by adding more opcodes 1316that can be executed in the manner. Some other issues have been solved, 1317and the ASL grammar changes to support such code under all scope 1318operators (Device, etc.) are complete. Lv Zheng. 1319 1320UEFI support: these OSL functions have been implemented. This is an 1321additional step toward supporting the AcpiExec utility natively (with 1322full hardware access) under UEFI. Marcelo Ferreira. 1323 AcpiOsReadPciConfiguration 1324 AcpiOsWritePciConfiguration 1325 1326Fixed a possible mutex error during control method auto-serialization. Lv 1327Zheng. 1328 1329Updated support for the Generic Address Structure by fully implementing 1330all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 1331Zheng. 1332 1333Updated the return value for the internal _OSI method. Instead of 13340xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 1335for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 1336implementations, and will be reflected and clarified in the next version 1337of the ACPI specification. 1338 1339Implemented two new table events that can be passed to an ACPICA table 1340handler. These events are used to indicate a table installation or 1341uninstallation. These events are used in addition to existed table load 1342and unload events. Lv Zheng. 1343 1344Implemented a cleanup for all internal string-to-integer conversions. 1345Consolidate multiple versions of this functionality and limit possible 1346bases to either 10 or 16 to simplify the code. Adds a new file, 1347utstrtoul64. 1348 1349Cleanup the inclusion order of the various compiler-specific headers. 1350This simplifies build configuration management. The compiler-specific 1351headers are now split out from the host-specific headers. Lv Zheng. 1352 1353Example Code and Data Size: These are the sizes for the OS-independent 1354acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1355debug version of the code includes the debug output trace mechanism and 1356has a much larger code and data size. 1357 1358 Current Release: 1359 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 1360 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 1361 1362 13632) iASL Compiler/Disassembler and Tools: 1364 1365iASL/AcpiExec: Added a command line option to display the build date/time 1366of the tool (-vd). This can be useful to verify that the correct version 1367of the tools are being used. 1368 1369AML Debugger: Implemented a new subcommand ("execute predef") to execute 1370all predefined control methods and names within the current namespace. 1371This can be useful for debugging problems with ACPI tables and the ACPI 1372namespace. 1373 1374---------------------------------------- 137529 July 2016. Summary of changes for version 20160729: 1376 1377 13781) ACPICA kernel-resident subsystem: 1379 1380Implemented basic UEFI support for the various ACPICA tools. This 1381includes: 13821) An OSL to implement the various AcpiOs* interfaces on UEFI. 13832) Support to obtain the ACPI tables on UEFI. 13843) Local implementation of required C library functions not available on 1385UEFI. 13864) A front-end (main) function for the tools for UEFI-related 1387initialization. 1388 1389The initial deployment of this support is the AcpiDump utility executing 1390as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 1391Current environments supported are Linux/Unix. MSVC generation is not 1392supported at this time. See the generate/efi/README file for build 1393instructions. Lv Zheng. 1394 1395Future plans include porting the AcpiExec utility to execute natively on 1396the platform with I/O and memory access. This will allow viewing/dump of 1397the platform namespace and native execution of ACPI control methods that 1398access the actual hardware. To fully implement this support, the OSL 1399functions below must be implemented with UEFI interfaces. Any community 1400help in the implementation of these functions would be appreciated: 1401 AcpiOsReadPort 1402 AcpiOsWritePort 1403 AcpiOsReadMemory 1404 AcpiOsWriteMemory 1405 AcpiOsReadPciConfiguration 1406 AcpiOsWritePciConfiguration 1407 1408Restructured and standardized the C library configuration for ACPICA, 1409resulting in the various configuration options below. This includes a 1410global restructuring of the compiler-dependent and platform-dependent 1411include files. These changes may affect the existing platform-dependent 1412configuration files on some hosts. Lv Zheng. 1413 1414The current C library configuration options appear below. For any issues, 1415it may be helpful to examine the existing compiler-dependent and 1416platform-dependent files as examples. Lv Zheng. 1417 14181) Linux kernel: 1419 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 1420library. 1421 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 14222) Unix/Windows/BSD applications: 1423 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 1424library. 1425 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 14263) UEFI applications: 1427 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 1428library. 1429 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 14304) UEFI applications (EDK2/StdLib): 1431 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 1432 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 1433 1434 1435AML interpreter: "module-level code" support. Allows for execution of so- 1436called "executable" AML code (math/logical operations, etc.) outside of 1437control methods not just at the module level (top level) but also within 1438any scope declared outside of a control method - Scope{}, Device{}, 1439Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 1440 1441Simplified the configuration of the "maximum AML loops" global option by 1442adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 1443modified at runtime. 1444 1445 1446Example Code and Data Size: These are the sizes for the OS-independent 1447acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1448debug version of the code includes the debug output trace mechanism and 1449has a much larger code and data size. 1450 1451 Current Release: 1452 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 1453 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 1454 1455 14562) iASL Compiler/Disassembler and Tools: 1457 1458iASL: Add full support for the RASF ACPI table (RAS Features Table). 1459Includes disassembler, data table compiler, and header support. 1460 1461iASL Expand "module-level code" support. Allows for 1462compilation/disassembly of so-called "executable" AML code (math/logical 1463operations, etc.) outside of control methods not just at the module level 1464(top level) but also within any scope declared outside of a control 1465method - Scope{}, Device{}, Processor{}, PowerResource{}, and 1466ThermalZone{}. 1467 1468AcpiDump: Added support for dumping all SSDTs on newer versions of 1469Windows. These tables are now easily available -- SSDTs are not available 1470through the registry on older versions. 1471 1472---------------------------------------- 147327 May 2016. Summary of changes for version 20160527: 1474 1475 14761) ACPICA kernel-resident subsystem: 1477 1478Temporarily reverted the new arbitrary bit length/alignment support in 1479AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 1480a number of regressions with the new code that need to be fully resolved 1481and tested before this support can be finally integrated into ACPICA. 1482Apologies for any inconveniences these issues may have caused. 1483 1484The ACPI message macros are not configurable (ACPI_MSG_ERROR, 1485ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 1486and ACPI_MSG_BIOS_WARNING). Lv Zheng. 1487 1488Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 1489option. Adds a new return macro, return_STR. Junk-uk Kim. 1490 1491Example Code and Data Size: These are the sizes for the OS-independent 1492acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1493debug version of the code includes the debug output trace mechanism and 1494has a much larger code and data size. 1495 1496 Current Release: 1497 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 1498 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1499 Previous Release: 1500 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1501 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 1502 1503---------------------------------------- 150422 April 2016. Summary of changes for version 20160422: 1505 15061) ACPICA kernel-resident subsystem: 1507 1508Fixed a regression in the GAS (generic address structure) arbitrary bit 1509support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 1510and incorrect return values. Lv Zheng. ACPICA BZ 1270. 1511 1512ACPI 6.0: Added support for new/renamed resource macros. One new argument 1513was added to each of these macros, and the original name has been 1514deprecated. The AML disassembler will always disassemble to the new 1515names. Support for the new macros was added to iASL, disassembler, 1516resource manager, and the acpihelp utility. ACPICA BZ 1274. 1517 1518 I2cSerialBus -> I2cSerialBusV2 1519 SpiSerialBus -> SpiSerialBusV2 1520 UartSerialBus -> UartSerialBusV2 1521 1522ACPI 6.0: Added support for a new integer field that was appended to the 1523package object returned by the _BIX method. This adds iASL compile-time 1524and AML runtime error checking. ACPICA BZ 1273. 1525 1526ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 1527Subspace Type2" (Headers, Disassembler, and data table compiler). 1528 1529Example Code and Data Size: These are the sizes for the OS-independent 1530acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1531debug version of the code includes the debug output trace mechanism and 1532has a much larger code and data size. 1533 1534 Current Release: 1535 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1536 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1537 Previous Release: 1538 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 1539 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 1540 1541 15422) iASL Compiler/Disassembler and Tools: 1543 1544iASL: Implemented an ASL grammar extension to allow/enable executable 1545"module-level code" to be created and executed under the various 1546operators that create new scopes. This type of AML code is already 1547supported in all known AML interpreters, and the grammar change will 1548appear in the next version of the ACPI specification. Simplifies the 1549conditional runtime creation of named objects under these object types: 1550 1551 Device 1552 PowerResource 1553 Processor 1554 Scope 1555 ThermalZone 1556 1557iASL: Implemented a new ASL extension, a "For" loop macro to add greater 1558ease-of-use to the ASL language. The syntax is similar to the 1559corresponding C operator, and is implemented with the existing AML While 1560opcode -- thus requiring no changes to existing AML interpreters. 1561 1562 For (Initialize, Predicate, Update) {TermList} 1563 1564Grammar: 1565 ForTerm := 1566 For ( 1567 Initializer // Nothing | TermArg => ComputationalData 1568 Predicate // Nothing | TermArg => ComputationalData 1569 Update // Nothing | TermArg => ComputationalData 1570 ) {TermList} 1571 1572 1573iASL: The _HID/_ADR detection and validation has been enhanced to search 1574under conditionals in order to allow these objects to be conditionally 1575created at runtime. 1576 1577iASL: Fixed several issues with the constant folding feature. The 1578improvement allows better detection and resolution of statements that can 1579be folded at compile time. ACPICA BZ 1266. 1580 1581iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 1582conversion to the ASL ElseIf operator where incorrect ASL code could be 1583generated. 1584 1585iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 1586sometimes an extra (and extraneous) set of parentheses were emitted for 1587some combinations of operators. Although this did not cause any problems 1588with recompilation of the disassembled code, it made the code more 1589difficult to read. David Box. ACPICA BZ 1231. 1590 1591iASL: Changed to ignore the unreferenced detection for predefined names 1592of resource descriptor elements, when the resource descriptor is 1593created/defined within a control method. 1594 1595iASL: Disassembler: Fix a possible fault with externally declared Buffer 1596objects. 1597 1598---------------------------------------- 159918 March 2016. Summary of changes for version 20160318: 1600 16011) ACPICA kernel-resident subsystem: 1602 1603Added support for arbitrary bit lengths and bit offsets for registers 1604defined by the Generic Address Structure. Previously, only aligned bit 1605lengths of 8/16/32/64 were supported. This was sufficient for many years, 1606but recently some machines have been seen that require arbitrary bit- 1607level support. ACPICA BZ 1240. Lv Zheng. 1608 1609Fixed an issue where the \_SB._INI method sometimes must be evaluated 1610before any _REG methods are evaluated. Lv Zheng. 1611 1612Implemented several changes related to ACPI table support 1613(Headers/Disassembler/TableCompiler): 1614NFIT: For ACPI 6.1, updated to add some additional new fields and 1615constants. 1616FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 16176). 1618DMAR: Added new constants per the 10/2014 DMAR spec. 1619IORT: Added new subtable per the 10/2015 IORT spec. 1620HEST: For ACPI 6.1, added new constants and new subtable. 1621DBG2: Added new constants per the 12/2015 DBG2 spec. 1622FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 1623ACPICA BZ 1249. 1624ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 1625 1626Updated header support for the DMAR table to match the current version of 1627the related spec. 1628 1629Added extensions to the ASL Concatenate operator to allow any ACPI object 1630to be passed as an operand. Any object other than Integer/String/Buffer 1631simply returns a string containing the object type. This extends the 1632usefulness of the Printf macros. Previously, Concatenate would abort the 1633control method if a non-data object was encountered. 1634 1635ACPICA source code: Deployed the C "const" keyword across the source code 1636where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 1637 1638Example Code and Data Size: These are the sizes for the OS-independent 1639acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1640debug version of the code includes the debug output trace mechanism and 1641has a much larger code and data size. 1642 1643 Current Release: 1644 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 1645 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 1646 Previous Release: 1647 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 1648 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 1649 1650 16512) iASL Compiler/Disassembler and Tools: 1652 1653iASL/Disassembler: Improved the heuristic used to determine the number of 1654arguments for an externally defined control method (a method in another 1655table). Although this is an improvement, there is no deterministic way to 1656"guess" the number of method arguments. Only the ACPI 6.0 External opcode 1657will completely solve this problem as it is deployed (automatically) in 1658newer BIOS code. 1659 1660iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 1661statements that could cause errors when the disassembled file is 1662compiled. ACPICA BZ 1243. David Box. 1663 1664iASL: Fixed a regression caused by the merger of the two versions of the 1665local strtoul64. Because of a dependency on a global variable, strtoul64 1666could return an error for integers greater than a 32-bit value. ACPICA BZ 16671260. 1668 1669iASL: Fixed a regression where a fault could occur for an ASL Return 1670statement if it invokes a control method that is not resolved. ACPICA BZ 16711264. 1672 1673AcpiXtract: Improved input file validation: detection of binary files and 1674non-acpidump text files. 1675 1676---------------------------------------- 167712 February 2016. Summary of changes for version 20160212: 1678 16791) ACPICA kernel-resident subsystem: 1680 1681Implemented full support for the ACPI 6.1 specification (released in 1682January). This version of the specification is available at: 1683http://www.uefi.org/specifications 1684 1685Only a relatively small number of changes were required in ACPICA to 1686support ACPI 6.1, in these areas: 1687- New predefined names 1688- New _HID values 1689- A new subtable for HEST 1690- A few other header changes for new values 1691 1692Ensure \_SB_._INI is executed before any _REG methods are executed. There 1693appears to be existing BIOS code that relies on this behavior. Lv Zheng. 1694 1695Reverted a change made in version 20151218 which enabled method 1696invocations to be targets of various ASL operators (SuperName and Target 1697grammar elements). While the new behavior is supported by the ACPI 1698specification, other AML interpreters do not support this behavior and 1699never will. The ACPI specification will be updated for ACPI 6.2 to remove 1700this support. Therefore, the change was reverted to the original ACPICA 1701behavior. 1702 1703ACPICA now supports the GCC 6 compiler. 1704 1705Current Release: (Note: build changes increased sizes) 1706 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 1707 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 1708Previous Release: 1709 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 1710 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 1711 1712 17132) iASL Compiler/Disassembler and Tools: 1714 1715Completed full support for the ACPI 6.0 External() AML opcode. The 1716compiler emits an external AML opcode for each ASL External statement. 1717This opcode is used by the disassembler to assist with the disassembly of 1718external control methods by specifying the required number of arguments 1719for the method. AML interpreters do not use this opcode. To ensure that 1720interpreters do not even see the opcode, a block of one or more external 1721opcodes is surrounded by an "If(0)" construct. As this feature becomes 1722commonly deployed in BIOS code, the ability of disassemblers to correctly 1723disassemble AML code will be greatly improved. David Box. 1724 1725iASL: Implemented support for an optional cross-reference output file. 1726The -lx option will create a the cross-reference file with the suffix 1727"xrf". Three different types of cross-reference are created in this file: 1728- List of object references made from within each control method 1729- Invocation (caller) list for each user-defined control method 1730- List of references to each non-method object in the namespace 1731 1732iASL: Method invocations as ASL Target operands are now disallowed and 1733flagged as errors in preparation for ACPI 6.2 (see the description of the 1734problem above). 1735 1736---------------------------------------- 17378 January 2016. Summary of changes for version 20160108: 1738 17391) ACPICA kernel-resident subsystem: 1740 1741Updated all ACPICA copyrights and signons to 2016: Added the 2016 1742copyright to all source code module headers and utility/tool signons. 1743This includes the standard Linux dual-license header. This affects 1744virtually every file in the ACPICA core subsystem, iASL compiler, all 1745ACPICA utilities, and the ACPICA test suite. 1746 1747Fixed a regression introduced in version 20151218 concerning the 1748execution of so-called module-level ASL/AML code. Namespace objects 1749created under a module-level If() construct were not properly/fully 1750entered into the namespace and could cause an interpreter fault when 1751accessed. 1752 1753Example Code and Data Size: These are the sizes for the OS-independent 1754acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1755debug version of the code includes the debug output trace mechanism and 1756has a much larger code and data size. 1757 1758Current Release: 1759 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 1760 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 1761 Previous Release: 1762 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 1763 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 1764 1765 17662) iASL Compiler/Disassembler and Tools: 1767 1768Fixed a problem with the compilation of the GpioIo and GpioInt resource 1769descriptors. The _PIN field name was incorrectly defined to be an array 1770of 32-bit values, but the _PIN values are in fact 16 bits each. This 1771would cause incorrect bit width warnings when using Word (16-bit) fields 1772to access the descriptors. 1773 1774 1775---------------------------------------- 177618 December 2015. Summary of changes for version 20151218: 1777 17781) ACPICA kernel-resident subsystem: 1779 1780Implemented per-AML-table execution of "module-level code" as individual 1781ACPI tables are loaded into the namespace during ACPICA initialization. 1782In other words, any module-level code within an AML table is executed 1783immediately after the table is loaded, instead of batched and executed 1784after all of the tables have been loaded. This provides compatibility 1785with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 1786David Box. 1787 1788To fully support the feature above, the default operation region handlers 1789for the SystemMemory, SystemIO, and PCI_Config address spaces are now 1790installed before any ACPI tables are loaded. This enables module-level 1791code to access these address spaces during the table load and module- 1792level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 1793Box. 1794 1795Implemented several changes to the internal _REG support in conjunction 1796with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 1797utilities for the changes above. Although these tools were changed, host 1798operating systems that simply use the default handlers for SystemMemory, 1799SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 1800 1801For example, in the code below, DEV1 is conditionally added to the 1802namespace by the DSDT via module-level code that accesses an operation 1803region. The SSDT references DEV1 via the Scope operator. DEV1 must be 1804created immediately after the DSDT is loaded in order for the SSDT to 1805successfully reference DEV1. Previously, this code would cause an 1806AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 1807fully supported by ACPICA. 1808 1809 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 1810 { 1811 OperationRegion (OPR1, SystemMemory, 0x400, 32) 1812 Field (OPR1, AnyAcc, NoLock, Preserve) 1813 { 1814 FLD1, 1 1815 } 1816 If (FLD1) 1817 { 1818 Device (\DEV1) 1819 { 1820 } 1821 } 1822 } 1823 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 1824 { 1825 External (\DEV1, DeviceObj) 1826 Scope (\DEV1) 1827 { 1828 } 1829 } 1830 1831Fixed an AML interpreter problem where control method invocations were 1832not handled correctly when the invocation was itself a SuperName argument 1833to another ASL operator. In these cases, the method was not invoked. 1834ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 1835argument: 1836 Store 1837 Acquire, Wait 1838 CondRefOf, RefOf 1839 Decrement, Increment 1840 Load, Unload 1841 Notify 1842 Signal, Release, Reset 1843 SizeOf 1844 1845Implemented automatic String-to-ObjectReference conversion support for 1846packages returned by predefined names (such as _DEP). A common BIOS error 1847is to add double quotes around an ObjectReference namepath, which turns 1848the reference into an unexpected string object. This support detects the 1849problem and corrects it before the package is returned to the caller that 1850invoked the method. Lv Zheng. 1851 1852Implemented extensions to the Concatenate operator. Concatenate now 1853accepts any type of object, it is not restricted to simply 1854Integer/String/Buffer. For objects other than these 3 basic data types, 1855the argument is treated as a string containing the name of the object 1856type. This expands the utility of Concatenate and the Printf/Fprintf 1857macros. ACPICA BZ 1222. 1858 1859Cleaned up the output of the ASL Debug object. The timer() value is now 1860optional and no longer emitted by default. Also, the basic data types of 1861Integer/String/Buffer are simply emitted as their values, without a data 1862type string -- since the data type is obvious from the output. ACPICA BZ 18631221. 1864 1865Example Code and Data Size: These are the sizes for the OS-independent 1866acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1867debug version of the code includes the debug output trace mechanism and 1868has a much larger code and data size. 1869 1870 Current Release: 1871 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 1872 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 1873 Previous Release: 1874 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 1875 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 1876 1877 18782) iASL Compiler/Disassembler and Tools: 1879 1880iASL: Fixed some issues with the ASL Include() operator. This operator 1881was incorrectly defined in the iASL parser rules, causing a new scope to 1882be opened for the code within the include file. This could lead to 1883several issues, including allowing ASL code that is technically illegal 1884and not supported by AML interpreters. Note, this does not affect the 1885related #include preprocessor operator. ACPICA BZ 1212. 1886 1887iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 1888operator is essentially an ASL macro since there is no AML opcode 1889associated with it. The code emitted by the iASL compiler for ElseIf is 1890an Else opcode followed immediately by an If opcode. The disassembler 1891will now emit an ElseIf if it finds an Else immediately followed by an 1892If. This simplifies the decoded ASL, especially for deeply nested 1893If..Else and large Switch constructs. Thus, the disassembled code more 1894closely follows the original source ASL. ACPICA BZ 1211. Example: 1895 1896 Old disassembly: 1897 Else 1898 { 1899 If (Arg0 == 0x02) 1900 { 1901 Local0 = 0x05 1902 } 1903 } 1904 1905 New disassembly: 1906 ElseIf (Arg0 == 0x02) 1907 { 1908 Local0 = 0x05 1909 } 1910 1911AcpiExec: Added support for the new module level code behavior and the 1912early region installation. This required a small change to the 1913initialization, since AcpiExec must install its own operation region 1914handlers. 1915 1916AcpiExec: Added support to make the debug object timer optional. Default 1917is timer disabled. This cleans up the debug object output -- the timer 1918data is rarely used. 1919 1920AcpiExec: Multiple ACPI tables are now loaded in the order that they 1921appear on the command line. This can be important when there are 1922interdependencies/references between the tables. 1923 1924iASL/Templates. Add support to generate template files with multiple 1925SSDTs within a single output file. Also added ommand line support to 1926specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 19271223, 1225. 1928 1929 1930---------------------------------------- 193124 November 2015. Summary of changes for version 20151124: 1932 19331) ACPICA kernel-resident subsystem: 1934 1935Fixed a possible regression for a previous update to FADT handling. The 1936FADT no longer has a fixed table ID, causing some issues with code that 1937was hardwired to a specific ID. Lv Zheng. 1938 1939Fixed a problem where the method auto-serialization could interfere with 1940the current SyncLevel. This change makes the auto-serialization support 1941transparent to the SyncLevel support and management. 1942 1943Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 1944interface is intended for early access to the namespace during the 1945initial namespace device discovery walk. The _SUB method has been seen to 1946access operation regions in some cases, causing errors because the 1947operation regions are not fully initialized. 1948 1949AML Debugger: Fixed some issues with the terminate/quit/exit commands 1950that can cause faults. Lv Zheng. 1951 1952AML Debugger: Add thread ID support so that single-step mode only applies 1953to the AML Debugger thread. This prevents runtime errors within some 1954kernels. Lv Zheng. 1955 1956Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 1957methods that are invoked by this interface are optional, removed warnings 1958emitted for the case where one or more of these methods do not exist. 1959ACPICA BZ 1208, original change by Prarit Bhargava. 1960 1961Made a major pass through the entire ACPICA source code base to 1962standardize formatting that has diverged a bit over time. There are no 1963functional changes, but this will of course cause quite a few code 1964differences from the previous ACPICA release. 1965 1966Example Code and Data Size: These are the sizes for the OS-independent 1967acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1968debug version of the code includes the debug output trace mechanism and 1969has a much larger code and data size. 1970 1971 Current Release: 1972 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 1973 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 1974 Previous Release: 1975 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1976 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 1977 1978 19792) iASL Compiler/Disassembler and Tools: 1980 1981iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 1982definition blocks within a single ASL file and the resulting AML file. 1983Support for this type of file was also added to the various tools that 1984use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 1985example code below shows two definition blocks within the same file: 1986 1987 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 19880x12345678) 1989 { 1990 } 1991 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 1992 { 1993 } 1994 1995iASL: Enhanced typechecking for the Name() operator. All expressions for 1996the value of the named object must be reduced/folded to a single constant 1997at compile time, as per the ACPI specification (the AML definition of 1998Name()). 1999 2000iASL: Fixed some code indentation issues for the -ic and -ia options (C 2001and assembly headers). Now all emitted code correctly begins in column 1. 2002 2003iASL: Added an error message for an attempt to open a Scope() on an 2004object defined in an SSDT. The DSDT is always loaded into the namespace 2005first, so any attempt to open a Scope on an SSDT object will fail at 2006runtime. 2007 2008 2009---------------------------------------- 201030 September 2015. Summary of changes for version 20150930: 2011 20121) ACPICA kernel-resident subsystem: 2013 2014Debugger: Implemented several changes and bug fixes to assist support for 2015the in-kernel version of the AML debugger. Lv Zheng. 2016- Fix the "predefined" command for in-kernel debugger. 2017- Do not enter debug command loop for the help and version commands. 2018- Disallow "execute" command during execution/single-step of a method. 2019 2020Interpreter: Updated runtime typechecking for all operators that have 2021target operands. The operand is resolved and validated that it is legal. 2022For example, the target cannot be a non-data object such as a Device, 2023Mutex, ThermalZone, etc., as per the ACPI specification. 2024 2025Debugger: Fixed the double-mutex user I/O handshake to work when local 2026deadlock detection is enabled. 2027 2028Debugger: limited display of method locals and arguments (LocalX and 2029ArgX) to only those that have actually been initialized. This prevents 2030lines of extraneous output. 2031 2032Updated the definition of the NFIT table to correct the bit polarity of 2033one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 2034 2035Example Code and Data Size: These are the sizes for the OS-independent 2036acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2037debug version of the code includes the debug output trace mechanism and 2038has a much larger code and data size. 2039 2040 Current Release: 2041 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2042 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 2043 Previous Release: 2044 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2045 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2046 2047 20482) iASL Compiler/Disassembler and Tools: 2049 2050iASL: Improved the compile-time typechecking for operands of many of the 2051ASL operators: 2052 2053-- Added an option to disable compiler operand/operator typechecking (- 2054ot). 2055 2056-- For the following operators, the TermArg operands are now validated 2057when possible to be Integer data objects: BankField, OperationRegion, 2058DataTableRegion, Buffer, and Package. 2059 2060-- Store (Source, Target): Both the source and target operands are 2061resolved and checked that the operands are both legal. For example, 2062neither operand can be a non-data object such as a Device, Mutex, 2063ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 2064operator can be used to store an object to any type of target object. 2065 2066-- Store (Source, Target): If the source is a Package object, the target 2067must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 2068is a Package, the source must also be a Package. 2069 2070-- Store (Source, Target): A warning is issued if the source and target 2071resolve to the identical named object. 2072 2073-- Store (Source, <method invocation>): An error is generated for the 2074target method invocation, as this construct is not supported by the AML 2075interpreter. 2076 2077-- For all ASL math and logic operators, the target operand must be a 2078data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 2079includes the function return value also. 2080 2081-- External declarations are also included in the typechecking where 2082possible. External objects defined using the UnknownObj keyword cannot be 2083typechecked, however. 2084 2085iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 2086operator: 2087- Legacy code: Index(PKG1, 3) 2088- New ASL+ code: PKG1[3] 2089This completes the ACPI 6.0 ASL+ support as it was the only operator not 2090supported. 2091 2092iASL: Fixed the file suffix for the preprocessor output file (.i). Two 2093spaces were inadvertently appended to the filename, causing file access 2094and deletion problems on some systems. 2095 2096ASL Test Suite (ASLTS): Updated the master makefile to generate all 2097possible compiler output files when building the test suite -- thus 2098exercising these features of the compiler. These files are automatically 2099deleted when the test suite exits. 2100 2101 2102---------------------------------------- 210318 August 2015. Summary of changes for version 20150818: 2104 21051) ACPICA kernel-resident subsystem: 2106 2107Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 2108Zheng. ACPICA BZ 1186. 2109 2110Completed development to ensure that the ACPICA Disassembler and Debugger 2111are fully standalone components of ACPICA. Removed cross-component 2112dependences. Lv Zheng. 2113 2114The max-number-of-AML-loops is now runtime configurable (previously was 2115compile-time only). This is essentially a loop timeout to force-abort 2116infinite AML loops. ACPCIA BZ 1192. 2117 2118Debugger: Cleanup output to dump ACPI names and namepaths without any 2119trailing underscores. Lv Zheng. ACPICA BZ 1135. 2120 2121Removed unnecessary conditional compilations across the Debugger and 2122Disassembler components where entire modules could be left uncompiled. 2123 2124The aapits test is deprecated and has been removed from the ACPICA git 2125tree. The test has never been completed and has not been maintained, thus 2126becoming rather useless. ACPICA BZ 1015, 794. 2127 2128A batch of small changes to close bugzilla and other reports: 2129- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 2130- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 2131- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 2132- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 2133Moore. 2134- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 2135ACPICA BZ 1184. 2136- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 2137operators. 2138- Debugger: Split debugger initialization/termination interfaces. Lv 2139Zheng. 2140- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 2141identification. 2142- AcpiExec: Add debug message during _REG method phase during table 2143load/init. 2144- AcpiNames: Fix a regression where some output was missing and no longer 2145emitted. 2146- Debugger: General cleanup and simplification. Lv Zheng. 2147- Disassembler: Cleanup use of several global option variables. Lv Zheng. 2148 2149Example Code and Data Size: These are the sizes for the OS-independent 2150acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2151debug version of the code includes the debug output trace mechanism and 2152has a much larger code and data size. 2153 2154 Current Release: 2155 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2156 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2157 Previous Release: 2158 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2159 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2160 2161 21622) iASL Compiler/Disassembler and Tools: 2163 2164AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 2165were not handled properly and caused load errors. Now, properly invoke 2166and use the ACPICA auto-reallocate mechanism for ACPI table data 2167structures. ACPICA BZ 1188 2168 2169AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 2170BZ 1190. 2171 2172AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 2173AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 2174executed during initialization. ACPICA BZ 1187, 1189. 2175 2176iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 2177that corresponds to each disassembled ASL statement, to simplify 2178debugging. ACPICA BZ 1191. 2179 2180Debugger: Add option to the "objects" command to display a summary of the 2181current namespace objects (Object type and count). This is displayed if 2182the command is entered with no arguments. 2183 2184AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 2185 2186 2187---------------------------------------- 218817 July 2015. Summary of changes for version 20150717: 2189 21901) ACPICA kernel-resident subsystem: 2191 2192Improved the partitioning between the Debugger and Disassembler 2193components. This allows the Debugger to be used standalone within kernel 2194code without the Disassembler (which is used for single stepping also). 2195This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 2196 2197Debugger: Implemented a new command to trace the execution of control 2198methods (Trace). This is especially useful for the in-kernel version of 2199the debugger when file I/O may not be available for method trace output. 2200See the ACPICA reference for more information. Lv Zheng. 2201 2202Moved all C library prototypes (used for the local versions of these 2203functions when requested) to a new header, acclib.h 2204Cleaned up the use of non-ANSI C library functions. These functions are 2205implemented locally in ACPICA. Moved all such functions to a common 2206source file, utnonansi.c 2207 2208Debugger: Fixed a problem with the "!!" command (get last command 2209executed) where the debugger could enter an infinite loop and eventually 2210crash. 2211 2212Removed the use of local macros that were used for some of the standard C 2213library functions to automatically cast input parameters. This mostly 2214affected the is* functions where the input parameter is defined to be an 2215int. This required a few modifications to the main ACPICA source code to 2216provide casting for these functions and eliminate possible compiler 2217warnings for these parameters. 2218 2219Across the source code, added additional status/error checking to resolve 2220issues discovered by static source code analysis tools such as Coverity. 2221 2222Example Code and Data Size: These are the sizes for the OS-independent 2223acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2224debug version of the code includes the debug output trace mechanism and 2225has a much larger code and data size. 2226 2227 Current Release: 2228 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2229 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2230 Previous Release: 2231 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 2232 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 2233 2234 22352) iASL Compiler/Disassembler and Tools: 2236 2237iASL: Fixed a regression where the device map file feature no longer 2238worked properly when used in conjunction with the disassembler. It only 2239worked properly with the compiler itself. 2240 2241iASL: Implemented a new warning for method LocalX variables that are set 2242but never used (similar to a C compiler such as gcc). This also applies 2243to ArgX variables that are not defined by the parent method, and are 2244instead (legally) used as local variables. 2245 2246iASL/Preprocessor: Finished the pass-through of line numbers from the 2247preprocessor to the compiler. This ensures that compiler errors/warnings 2248have the correct original line numbers and filenames, regardless of any 2249#include files. 2250 2251iASL/Preprocessor: Fixed a couple of issues with comment handling and the 2252pass-through of comments to the preprocessor output file (which becomes 2253the compiler input file). Also fixed a problem with // comments that 2254appear after a math expression. 2255 2256iASL: Added support for the TCPA server table to the table compiler and 2257template generator. (The client table was already previously supported) 2258 2259iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 2260identify the iASL compiler. 2261 2262Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 2263multiple times. The new names are ACPI_SIGN_NEGATIVE and 2264ACPI_SIGN_POSITIVE. 2265 2266AcpiHelp: Update to expand help messages for the iASL preprocessor 2267directives. 2268 2269 2270---------------------------------------- 227119 June 2015. Summary of changes for version 20150619: 2272 2273Two regressions in version 20150616 have been addressed: 2274 2275Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 2276etc.) This update changes ACPICA to only use the standard headers for 2277functions, or the prototypes for the local versions of the C library 2278functions. Across the source code, this required some additional casts 2279for some Clib invocations for portability. Moved all local prototypes to 2280a new file, acclib.h 2281 2282Fixes several problems with recent changes to the handling of the FACS 2283table that could cause some systems not to boot. 2284 2285 2286---------------------------------------- 228716 June 2015. Summary of changes for version 20150616: 2288 2289 22901) ACPICA kernel-resident subsystem: 2291 2292Across the entire ACPICA source code base, the various macros for the C 2293library functions (such as ACPI_STRLEN, etc.) have been removed and 2294replaced by the standard C library names (strlen, etc.) The original 2295purpose for these macros is no longer applicable. This simplification 2296reduces the number of macros used in the ACPICA source code 2297significantly, improving readability and maintainability. 2298 2299Implemented support for a new ACPI table, the OSDT. This table, the 2300"override" SDT, can be loaded directly by the host OS at boot time. It 2301enables the replacement of existing namespace objects that were installed 2302via the DSDT and/or SSDTs. The primary purpose for this is to replace 2303buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 2304for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 2305Moore. 2306 2307Added support for systems with (improperly) two FACS tables -- a "32-bit" 2308table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 2309X field). This change will support both automatically. There continues to 2310be systems found with this issue. This support requires a change to the 2311AcpiSetFirmwareWakingVector interface. Also, a public global variable has 2312been added to allow the host to select which FACS is desired 2313(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 2314details Lv Zheng. 2315 2316Added a new feature to allow for systems that do not contain an FACS. 2317Although this is already supported on hardware-reduced platforms, the 2318feature has been extended for all platforms. The reasoning is that we do 2319not want to abort the entire ACPICA initialization just because the 2320system is seriously buggy and has no FACS. 2321 2322Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 2323not correctly transcribed from the ACPI specification in ACPICA version 232420150515. 2325 2326Implemented support for the _CLS object in the AcpiGetObjectInfo external 2327interface. 2328 2329Updated the definitions of the TCPA and TPM2 ACPI tables to the more 2330recent TCG ACPI Specification, December 14, 2014. Table disassembler and 2331compiler also updated. Note: The TCPA "server" table is not supported by 2332the disassembler/table-compiler at this time. 2333 2334ACPI 6.0: Added definitions for the new GIC version field in the MADT. 2335 2336Example Code and Data Size: These are the sizes for the OS-independent 2337acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2338debug version of the code includes the debug output trace mechanism and 2339has a much larger code and data size. 2340 2341 Current Release: 2342 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 2343 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 2344 Previous Release: 2345 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 2346 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 2347 2348 23492) iASL Compiler/Disassembler and Tools: 2350 2351Disassembler: Fixed a problem with the new symbolic operator disassembler 2352where incorrect ASL code could be emitted in some cases for the "non- 2353commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 2354ShiftRight. The actual problem cases seem to be rather unusual in common 2355ASL code, however. David Box. 2356 2357Modified the linux version of acpidump to obtain ACPI tables from not 2358just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 2359Zheng. 2360 2361iASL: Fixed a problem where the user preprocessor output file (.i) 2362contained extra data that was not expected. The compiler was using this 2363file as a temporary file and passed through #line directives in order to 2364keep compiler error messages in sync with the input file and line number 2365across multiple include files. The (.i) is no longer a temporary file as 2366the compiler uses a new, different file for the original purpose. 2367 2368iASL: Fixed a problem where comments within the original ASL source code 2369file were not passed through to the preprocessor output file, nor any 2370listing files. 2371 2372iASL: Fixed some issues for the handling of the "#include" preprocessor 2373directive and the similar (but not the same) "Include" ASL operator. 2374 2375iASL: Add support for the new OSDT in both the disassembler and compiler. 2376 2377iASL: Fixed a problem with the constant folding support where a Buffer 2378object could be incorrectly generated (incorrectly formed) during a 2379conversion to a Store() operator. 2380 2381AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 2382description text for the _REV predefined name. _REV now permanently 2383returns 2, as per the ACPI 6.0 specification. 2384 2385Debugger: Enhanced the output of the Debug ASL object for references 2386produced by the Index operator. For Buffers and strings, only output the 2387actual byte pointed to by the index. For packages, only print the single 2388package element decoded by the index. Previously, the entire 2389buffer/string/package was emitted. 2390 2391iASL/Table-compiler: Fixed a regression where the "generic" data types 2392were no longer recognized, causing errors. 2393 2394 2395---------------------------------------- 239615 May 2015. Summary of changes for version 20150515: 2397 2398This release implements most of ACPI 6.0 as described below. 2399 24001) ACPICA kernel-resident subsystem: 2401 2402Implemented runtime argument checking and return value checking for all 2403new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 2404_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 2405 2406Example Code and Data Size: These are the sizes for the OS-independent 2407acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2408debug version of the code includes the debug output trace mechanism and 2409has a much larger code and data size. 2410 2411 Current Release: 2412 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 2413 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 2414 Previous Release: 2415 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 2416 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 2417 2418 24192) iASL Compiler/Disassembler and Tools: 2420 2421iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 2422names (argument count validation and return value typechecking.) 2423 2424iASL disassembler and table compiler: implemented support for all new 2425ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 2426 2427iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 2428tables: FADT, MADT. 2429 2430iASL preprocessor: Added a new directive to enable inclusion of binary 2431blobs into ASL code. The new directive is #includebuffer. It takes a 2432binary file as input and emits a named ascii buffer object into the ASL 2433code. 2434 2435AcpiHelp: Added support for all new ACPI 6.0 predefined names. 2436 2437AcpiHelp: Added a new option, -d, to display all iASL preprocessor 2438directives. 2439 2440AcpiHelp: Added a new option, -t, to display all known/supported ACPI 2441tables. 2442 2443 2444---------------------------------------- 244510 April 2015. Summary of changes for version 20150410: 2446 2447Reverted a change introduced in version 20150408 that caused 2448a regression in the disassembler where incorrect operator 2449symbols could be emitted. 2450 2451 2452---------------------------------------- 245308 April 2015. Summary of changes for version 20150408: 2454 2455 24561) ACPICA kernel-resident subsystem: 2457 2458Permanently set the return value for the _REV predefined name. It now 2459returns 2 (was 5). This matches other ACPI implementations. _REV will be 2460deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 2461for ACPI 2.0 and later. It should never be used to differentiate or 2462identify operating systems. 2463 2464Added the "Windows 2015" string to the _OSI support. ACPICA will now 2465return TRUE to a query with this string. 2466 2467Fixed several issues with the local version of the printf function. 2468 2469Added the C99 compiler option (-std=c99) to the Unix makefiles. 2470 2471 Current Release: 2472 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 2473 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 2474 Previous Release: 2475 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2476 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2477 2478 24792) iASL Compiler/Disassembler and Tools: 2480 2481iASL: Implemented an enhancement to the constant folding feature to 2482transform the parse tree to a simple Store operation whenever possible: 2483 Add (2, 3, X) ==> is converted to: Store (5, X) 2484 X = 2 + 3 ==> is converted to: Store (5, X) 2485 2486Updated support for the SLIC table (Software Licensing Description Table) 2487in both the Data Table compiler and the disassembler. The SLIC table 2488support now conforms to "Microsoft Software Licensing Tables (SLIC and 2489MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 2490following the ACPI header is now defined to be "Proprietary Data", and as 2491such, can only be entered or displayed as a hex data block. 2492 2493Implemented full support for the MSDM table as described in the document 2494above. Note: The format of MSDM is similar to SLIC. Any MSDM data 2495following the ACPI header is defined to be "Proprietary Data", and can 2496only be entered or displayed as a hex data block. 2497 2498Implemented the -Pn option for the iASL Table Compiler (was only 2499implemented for the ASL compiler). This option disables the iASL 2500preprocessor. 2501 2502Disassembler: For disassembly of Data Tables, added a comment field 2503around the Ascii equivalent data that is emitted as part of the "Raw 2504Table Data" block. This prevents the iASL Preprocessor from possible 2505confusion if/when the table is compiled. 2506 2507Disassembler: Added an option (-df) to force the disassembler to assume 2508that the table being disassembled contains valid AML. This feature is 2509useful for disassembling AML files that contain ACPI signatures other 2510than DSDT or SSDT (such as OEMx or other signatures). 2511 2512Changes for the EFI version of the tools: 25131) Fixed a build error/issue 25142) Fixed a cast warning 2515 2516iASL: Fixed a path issue with the __FILE__ operator by making the 2517directory prefix optional within the internal SplitInputFilename 2518function. 2519 2520Debugger: Removed some unused global variables. 2521 2522Tests: Updated the makefile for proper generation of the AAPITS suite. 2523 2524 2525---------------------------------------- 252604 February 2015. Summary of changes for version 20150204: 2527 2528ACPICA kernel-resident subsystem: 2529 2530Updated all ACPICA copyrights and signons to 2014. Added the 2014 2531copyright to all module headers and signons, including the standard Linux 2532header. This affects virtually every file in the ACPICA core subsystem, 2533iASL compiler, all ACPICA utilities, and the test suites. 2534 2535Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 2536A raw gpe handling mechanism was created to allow better handling of GPE 2537storms that aren't easily managed by the normal handler. The raw handler 2538allows disabling/renabling of the the GPE so that interrupt storms can be 2539avoided in cases where events cannot be timely serviced. In this 2540scenario, handlers should use the AcpiSetGpe() API to disable/enable the 2541GPE. This API will leave the reference counts undisturbed, thereby 2542preventing unintentional clearing of the GPE when the intent in only to 2543temporarily disable it. Raw handlers allow enabling and disabling of a 2544GPE by removing GPE register locking. As such, raw handlers much provide 2545their own locks while using GPE API's to protect access to GPE data 2546structures. 2547Lv Zheng 2548 2549Events: Always modify GPE registers under the GPE lock. 2550Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 2551values. Reported as bug by joe.liu@apple.com. 2552 2553Unix makefiles: Separate option to disable optimizations and 2554_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 2555NOOPT disable option and creates a separate flag (NOFORTIFY) for this 2556purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 2557errors when building ACPICA. This allows disabling the option without 2558also having to disable optimazations. 2559David Box 2560 2561 Current Release: 2562 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2563 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 2564 2565-- 2566-------------------------------------- 256707 November 2014. Summary of changes for version 20141107: 2568 2569This release is available at https://acpica.org/downloads 2570 2571This release introduces and implements language extensions to ASL that 2572provide support for symbolic ("C-style") operators and expressions. These 2573language extensions are known collectively as ASL+. 2574 2575 25761) iASL Compiler/Disassembler and Tools: 2577 2578Disassembler: Fixed a problem with disassembly of the UartSerialBus 2579macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 2580Box. 2581 2582Disassembler: Fixed the Unicode macro support to add escape sequences. 2583All non-printable ASCII values are emitted as escape sequences, as well 2584as the standard escapes for quote and backslash. Ensures that the 2585disassembled macro can be correctly recompiled. 2586 2587iASL: Added Printf/Fprintf macros for formatted output. These macros are 2588translated to existing AML Concatenate and Store operations. Printf 2589writes to the ASL Debug object. Fprintf allows the specification of an 2590ASL name as the target. Only a single format specifier is required, %o, 2591since the AML interpreter dynamically converts objects to the required 2592type. David E. Box. 2593 2594 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 2595 (Concatenate (Concatenate (Concatenate ("", Arg0), 2596 ": Unexpected value for "), Arg1), ", "), Arg2), 2597 " at line "), Arg3), Debug) 2598 2599 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 2600 Arg0, Arg1, Arg2, Arg3) 2601 2602 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 2603 ("", Arg1), ": "), Arg0), " Successful"), STR1) 2604 2605 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 2606 2607iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 2608ASL parse tree before the AML code is generated. This allows blocks of 2609ASL code to be removed in order to help locate and identify problem 2610devices and/or code. David E. Box. 2611 2612AcpiExec: Added support (-fi) for an optional namespace object 2613initialization file. This file specifies initial values for namespace 2614objects as necessary for debugging and testing different ASL code paths 2615that may be taken as a result of BIOS options. 2616 2617 26182) Overview of symbolic operator support for ASL (ASL+) 2619------------------------------------------------------- 2620 2621As an extension to the ASL language, iASL implements support for symbolic 2622(C-style) operators for math and logical expressions. This can greatly 2623simplify ASL code as well as improve both readability and 2624maintainability. These language extensions can exist concurrently with 2625all legacy ASL code and expressions. 2626 2627The symbolic extensions are 100% compatible with existing AML 2628interpreters, since no new AML opcodes are created. To implement the 2629extensions, the iASL compiler transforms the symbolic expressions into 2630the legacy ASL/AML equivalents at compile time. 2631 2632Full symbolic expressions are supported, along with the standard C 2633precedence and associativity rules. 2634 2635Full disassembler support for the symbolic expressions is provided, and 2636creates an automatic migration path for existing ASL code to ASL+ code 2637via the disassembly process. By default, the disassembler now emits ASL+ 2638code with symbolic expressions. An option (-dl) is provided to force the 2639disassembler to emit legacy ASL code if desired. 2640 2641Below is the complete list of the currently supported symbolic operators 2642with examples. See the iASL User Guide for additional information. 2643 2644 2645ASL+ Syntax Legacy ASL Equivalent 2646----------- --------------------- 2647 2648 // Math operators 2649 2650Z = X + Y Add (X, Y, Z) 2651Z = X - Y Subtract (X, Y, Z) 2652Z = X * Y Multiply (X, Y, Z) 2653Z = X / Y Divide (X, Y, , Z) 2654Z = X % Y Mod (X, Y, Z) 2655Z = X << Y ShiftLeft (X, Y, Z) 2656Z = X >> Y ShiftRight (X, Y, Z) 2657Z = X & Y And (X, Y, Z) 2658Z = X | Y Or (X, Y, Z) 2659Z = X ^ Y Xor (X, Y, Z) 2660Z = ~X Not (X, Z) 2661X++ Increment (X) 2662X-- Decrement (X) 2663 2664 // Logical operators 2665 2666(X == Y) LEqual (X, Y) 2667(X != Y) LNotEqual (X, Y) 2668(X < Y) LLess (X, Y) 2669(X > Y) LGreater (X, Y) 2670(X <= Y) LLessEqual (X, Y) 2671(X >= Y) LGreaterEqual (X, Y) 2672(X && Y) LAnd (X, Y) 2673(X || Y) LOr (X, Y) 2674(!X) LNot (X) 2675 2676 // Assignment and compound assignment operations 2677 2678X = Y Store (Y, X) 2679X += Y Add (X, Y, X) 2680X -= Y Subtract (X, Y, X) 2681X *= Y Multiply (X, Y, X) 2682X /= Y Divide (X, Y, , X) 2683X %= Y Mod (X, Y, X) 2684X <<= Y ShiftLeft (X, Y, X) 2685X >>= Y ShiftRight (X, Y, X) 2686X &= Y And (X, Y, X) 2687X |= Y Or (X, Y, X) 2688X ^= Y Xor (X, Y, X) 2689 2690 26913) ASL+ Examples: 2692----------------- 2693 2694Legacy ASL: 2695 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 2696 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 26970x03FB), 2698 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 2699 { 2700 And (MEMB, 0xFFFFFFF0, SRMB) 2701 Store (MEMB, Local2) 2702 Store (PDBM, Local1) 2703 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 2704 Store (SRMB, MEMB) 2705 Or (PDBM, 0x02, PDBM) 2706 } 2707 2708ASL+ version: 2709 If (((R510 & 0x03FB) == 0x02E0) || 2710 ((R520 & 0x03FB) == 0x02E0) || 2711 ((R530 & 0x03FB) == 0x02E0) || 2712 ((R540 & 0x03FB) == 0x02E0)) 2713 { 2714 SRMB = (MEMB & 0xFFFFFFF0) 2715 Local2 = MEMB 2716 Local1 = PDBM 2717 PDBM &= 0xFFFFFFFFFFFFFFF9 2718 MEMB = SRMB 2719 PDBM |= 0x02 2720 } 2721 2722Legacy ASL: 2723 Store (0x1234, Local1) 2724 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 2725 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 2726 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 2727 Store (Index (PKG1, 0x03), Local6) 2728 Store (Add (Local3, Local2), Debug) 2729 Add (Local1, 0x0F, Local2) 2730 Add (Local1, Multiply (Local2, Local3), Local2) 2731 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 2732 2733ASL+ version: 2734 Local1 = 0x1234 2735 Local3 = (((Local1 + TEST) + 0x20) * Local2) 2736 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 2737 Local3 = (Local1 + (TEST + (0x20 * Local2))) 2738 Local6 = Index (PKG1, 0x03) 2739 Debug = (Local3 + Local2) 2740 Local2 = (Local1 + 0x0F) 2741 Local2 = (Local1 + (Local2 * Local3)) 2742 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 2743 2744 2745---------------------------------------- 274626 September 2014. Summary of changes for version 20140926: 2747 27481) ACPICA kernel-resident subsystem: 2749 2750Updated the GPIO operation region handler interface (GeneralPurposeIo). 2751In order to support GPIO Connection objects with multiple pins, along 2752with the related Field objects, the following changes to the interface 2753have been made: The Address is now defined to be the offset in bits of 2754the field unit from the previous invocation of a Connection. It can be 2755viewed as a "Pin Number Index" into the connection resource descriptor. 2756The BitWidth is the exact bit width of the field. It is usually one bit, 2757but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 2758additional information and examples. 2759 2760GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 2761corresponding _Lxx/_Exx methods are disabled (they may have been enabled 2762by the firmware), so that they cannot fire until they are enabled via 2763AcpiUpdateAllGpes. Rafael J. Wysocki. 2764 2765Added a new return flag for the Event/GPE status interfaces -- 2766AcpiGetEventStatus and AcpiGetGpeStatus. The new 2767ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 2768GPE currently has a handler associated with it, and can thus actually 2769affect the system. Lv Zheng. 2770 2771Example Code and Data Size: These are the sizes for the OS-independent 2772acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2773debug version of the code includes the debug output trace mechanism and 2774has a much larger code and data size. 2775 2776 Current Release: 2777 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 2778 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 2779 Previous Release: 2780 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2781 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2782 27832) iASL Compiler/Disassembler and Tools: 2784 2785iASL: Fixed a memory allocation/free regression introduced in 20140828 2786that could cause the compiler to crash. This was introduced inadvertently 2787during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 27881113. 2789 2790iASL: Removed two error messages that have been found to create false 2791positives, until they can be fixed and fully validated (ACPICA BZ 1112): 27921) Illegal forward reference within a method 27932) Illegal reference across two methods 2794 2795iASL: Implemented a new option (-lm) to create a hardware mapping file 2796that summarizes all GPIO, I2C, SPI, and UART connections. This option 2797works for both the compiler and disassembler. See the iASL compiler user 2798guide for additional information and examples (section 6.4.6). 2799 2800AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 2801version 2. This corrects the AE_BAD_HEADER exception seen on systems with 2802a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 2803 2804AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 2805unless STDIN is actually a terminal. Assists with batch-mode processing. 2806ACPICA BZ 1114. 2807 2808Disassembler/AcpiHelp: Added another large group of recognized _HID 2809values. 2810 2811 2812---------------------------------------- 281328 August 2014. Summary of changes for version 20140828: 2814 28151) ACPICA kernel-resident subsystem: 2816 2817Fixed a problem related to the internal use of the Timer() operator where 2818a 64-bit divide could cause an attempted link to a double-precision math 2819library. This divide is not actually necessary, so the code was 2820restructured to eliminate it. Lv Zheng. 2821 2822ACPI 5.1: Added support for the runtime validation of the _DSD package 2823(similar to the iASL support). 2824 2825ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 2826SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 2827 2828Example Code and Data Size: These are the sizes for the OS-independent 2829acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2830debug version of the code includes the debug output trace mechanism and 2831has a much larger code and data size. 2832 2833 Current Release: 2834 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2835 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2836 Previous Release: 2837 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 2838 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 2839 28402) iASL Compiler/Disassembler and Tools: 2841 2842AcpiExec: Fixed a problem on unix systems where the original terminal 2843state was not always properly restored upon exit. Seen when using the -v 2844option. ACPICA BZ 1104. 2845 2846iASL: Fixed a problem with the validation of the ranges/length within the 2847Memory24 resource descriptor. There was a boundary condition when the 2848range was equal to the (length -1) caused by the fact that these values 2849are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 2850 2851Disassembler: Fixed a problem with the GpioInt descriptor interrupt 2852polarity 2853flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 2854is 2855now supported properly. 2856 2857ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 2858in the disassembler, data table compiler, and table template generator. 2859 2860iASL: Added a requirement for Device() objects that one of either a _HID 2861or _ADR must exist within the scope of a Device, as per the ACPI 2862specification. Remove a similar requirement that was incorrectly in place 2863for the _DSD object. 2864 2865iASL: Added error detection for illegal named references within control 2866methods that would cause runtime failures. Now trapped as errors are: 1) 2867References to objects within a non-parent control method. 2) Forward 2868references (within a method) -- for control methods, AML interpreters use 2869a one-pass parse of control methods. ACPICA BZ 1008. 2870 2871iASL: Added error checking for dependencies related to the _PSx power 2872methods. ACPICA BZ 1029. 28731) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 2874_PS3. 28752) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 2876scope. 2877 2878iASL and table compiler: Cleanup miscellaneous memory leaks by fully 2879deploying the existing object and string caches and adding new caches for 2880the table compiler. 2881 2882iASL: Split the huge parser source file into multiple subfiles to improve 2883manageability. Generation now requires the M4 macro preprocessor, which 2884is part of the Bison distribution on both unix and windows platforms. 2885 2886AcpiSrc: Fixed and removed all extraneous warnings generated during 2887entire ACPICA source code scan and/or conversion. 2888 2889 2890---------------------------------------- 2891 289224 July 2014. Summary of changes for version 20140724: 2893 2894The ACPI 5.1 specification has been released and is available at: 2895http://uefi.org/specs/access 2896 2897 28980) ACPI 5.1 support in ACPICA: 2899 2900ACPI 5.1 is fully supported in ACPICA as of this release. 2901 2902New predefined names. Support includes iASL and runtime ACPICA 2903validation. 2904 _CCA (Cache Coherency Attribute). 2905 _DSD (Device-Specific Data). David Box. 2906 2907Modifications to existing ACPI tables. Support includes headers, iASL 2908Data Table compiler, disassembler, and the template generator. 2909 FADT - New fields and flags. Graeme Gregory. 2910 GTDT - One new subtable and new fields. Tomasz Nowicki. 2911 MADT - Two new subtables. Tomasz Nowicki. 2912 PCCT - One new subtable. 2913 2914Miscellaneous. 2915 New notification type for System Resource Affinity change events. 2916 2917 29181) ACPICA kernel-resident subsystem: 2919 2920Fixed a regression introduced in 20140627 where a fault can happen during 2921the deletion of Alias AML namespace objects. The problem affected both 2922the core ACPICA and the ACPICA tools including iASL and AcpiExec. 2923 2924Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 2925simple mechanism to enable wake GPEs that have no associated handler or 2926control method. Rafael Wysocki. 2927 2928Updated the AcpiEnableGpe interface to disallow the enable if there is no 2929handler or control method associated with the particular GPE. This will 2930help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 2931 2932Updated GPE handling and dispatch by disabling the GPE before clearing 2933the status bit for edge-triggered GPEs. Lv Zheng. 2934 2935Added Timer() support to the AML Debug object. The current timer value is 2936now displayed with each invocation of (Store to) the debug object to 2937enable simple generation of execution times for AML code (method 2938execution for example.) ACPICA BZ 1093. 2939 2940Example Code and Data Size: These are the sizes for the OS-independent 2941acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2942debug version of the code includes the debug output trace mechanism and 2943has a much larger code and data size. 2944 2945 Current Release: 2946 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 2947 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 2948 Previous Release: 2949 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 2950 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 2951 2952 29532) iASL Compiler/Disassembler and Tools: 2954 2955Fixed an issue with the recently added local printf implementation, 2956concerning width/precision specifiers that could cause incorrect output. 2957Lv Zheng. ACPICA BZ 1094. 2958 2959Disassembler: Added support to detect buffers that contain UUIDs and 2960disassemble them to an invocation of the ToUUID operator. Also emit 2961commented descriptions of known ACPI-related UUIDs. 2962 2963AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 2964-u. Adds three new files. 2965 2966iASL: Update table compiler and disassembler for DMAR table changes that 2967were introduced in September 2013. With assistance by David Woodhouse. 2968 2969---------------------------------------- 297027 June 2014. Summary of changes for version 20140627: 2971 29721) ACPICA kernel-resident subsystem: 2973 2974Formatted Output: Implemented local versions of standard formatted output 2975utilities such as printf, etc. Over time, it has been discovered that 2976there are in fact many portability issues with printf, and the addition 2977of this feature will fix/prevent these issues once and for all. Some 2978known issues are summarized below: 2979 29801) Output of 64-bit values is not portable. For example, UINT64 is %ull 2981for the Linux kernel and is %uI64 for some MSVC versions. 29822) Invoking printf consistently in a manner that is portable across both 298332-bit and 64-bit platforms is difficult at best in many situations. 29843) The output format for pointers varies from system to system (leading 2985zeros especially), and leads to inconsistent output from ACPICA across 2986platforms. 29874) Certain platform-specific printf formats may conflict with ACPICA use. 29885) If there is no local C library available, ACPICA now has local support 2989for printf. 2990 2991-- To address these printf issues in a complete manner, ACPICA now 2992directly implements a small subset of printf format specifiers, only 2993those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 2994 2995Implemented support for ACPICA generation within the EFI environment. 2996Initially, the AcpiDump utility is supported in the UEFI shell 2997environment. Lv Zheng. 2998 2999Added a new external interface, AcpiLogError, to improve ACPICA 3000portability. This allows the host to redirect error messages from the 3001ACPICA utilities. Lv Zheng. 3002 3003Added and deployed new OSL file I/O interfaces to improve ACPICA 3004portability: 3005 AcpiOsOpenFile 3006 AcpiOsCloseFile 3007 AcpiOsReadFile 3008 AcpiOsWriteFile 3009 AcpiOsGetFileOffset 3010 AcpiOsSetFileOffset 3011There are C library implementations of these functions in the new file 3012service_layers/oslibcfs.c -- however, the functions can be implemented by 3013the local host in any way necessary. Lv Zheng. 3014 3015Implemented a mechanism to disable/enable ACPI table checksum validation 3016at runtime. This can be useful when loading tables very early during OS 3017initialization when it may not be possible to map the entire table in 3018order to compute the checksum. Lv Zheng. 3019 3020Fixed a buffer allocation issue for the Generic Serial Bus support. 3021Originally, a fixed buffer length was used. This change allows for 3022variable-length buffers based upon the protocol indicated by the field 3023access attributes. Reported by Lan Tianyu. Lv Zheng. 3024 3025Fixed a problem where an object detached from a namespace node was not 3026properly terminated/cleared and could cause a circular list problem if 3027reattached. ACPICA BZ 1063. David Box. 3028 3029Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 3030 3031Fixed a possible memory leak in an error return path within the function 3032AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 3033 3034Example Code and Data Size: These are the sizes for the OS-independent 3035acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3036debug version of the code includes the debug output trace mechanism and 3037has a much larger code and data size. 3038 3039 Current Release: 3040 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 3041 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 3042 Previous Release: 3043 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3044 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3045 3046 30472) iASL Compiler/Disassembler and Tools: 3048 3049Disassembler: Add dump of ASCII equivalent text within a comment at the 3050end of each line of the output for the Buffer() ASL operator. 3051 3052AcpiDump: Miscellaneous changes: 3053 Fixed repetitive table dump in -n mode. 3054 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 3055the ACPI 2.0 GUID fails. 3056 3057iASL: Fixed a problem where the compiler could fault if incorrectly given 3058an acpidump output file as input. ACPICA BZ 1088. David Box. 3059 3060AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 3061they are invoked without any arguments. 3062 3063Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 30641086. Colin Ian King. 3065 3066Disassembler: Cleaned up a block of code that extracts a parent Op 3067object. Added a comment that explains that the parent is guaranteed to be 3068valid in this case. ACPICA BZ 1069. 3069 3070 3071---------------------------------------- 307224 April 2014. Summary of changes for version 20140424: 3073 30741) ACPICA kernel-resident subsystem: 3075 3076Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 3077Some of these tables are known to contain a trailing NULL entry. Lv 3078Zheng. 3079 3080Removed an extraneous error message for the case where there are a large 3081number of system GPEs (> 124). This was the "32-bit FADT register is too 3082long to convert to GAS struct" message, which is irrelevant for GPEs 3083since the GPEx_BLK_LEN fields of the FADT are always used instead of the 3084(limited capacity) GAS bit length. Also, several changes to ensure proper 3085support for GPE numbers > 255, where some "GPE number" fields were 8-bits 3086internally. 3087 3088Implemented and deployed additional configuration support for the public 3089ACPICA external interfaces. Entire classes of interfaces can now be 3090easily modified or configured out, replaced by stubbed inline functions 3091by default. Lv Zheng. 3092 3093Moved all public ACPICA runtime configuration globals to the public 3094ACPICA external interface file for convenience. Also, removed some 3095obsolete/unused globals. See the file acpixf.h. Lv Zheng. 3096 3097Documentation: Added a new section to the ACPICA reference describing the 3098maximum number of GPEs that can be supported by the FADT-defined GPEs in 3099block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 3100reference. 3101 3102Example Code and Data Size: These are the sizes for the OS-independent 3103acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3104debug version of the code includes the debug output trace mechanism and 3105has a much larger code and data size. 3106 3107 Current Release: 3108 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3109 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3110 Previous Release: 3111 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3112 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3113 3114 31152) iASL Compiler/Disassembler and Tools: 3116 3117iASL and disassembler: Add full support for the LPIT table (Low Power 3118Idle Table). Includes support in the disassembler, data table compiler, 3119and template generator. 3120 3121AcpiDump utility: 31221) Add option to force the use of the RSDT (over the XSDT). 31232) Improve validation of the RSDP signature (use 8 chars instead of 4). 3124 3125iASL: Add check for predefined packages that are too large. For 3126predefined names that contain subpackages, check if each subpackage is 3127too large. (Check for too small already exists.) 3128 3129Debugger: Updated the GPE command (which simulates a GPE by executing the 3130GPE code paths in ACPICA). The GPE device is now optional, and defaults 3131to the GPE 0/1 FADT-defined blocks. 3132 3133Unix application OSL: Update line-editing support. Add additional error 3134checking and take care not to reset terminal attributes on exit if they 3135were never set. This should help guarantee that the terminal is always 3136left in the previous state on program exit. 3137 3138 3139---------------------------------------- 314025 March 2014. Summary of changes for version 20140325: 3141 31421) ACPICA kernel-resident subsystem: 3143 3144Updated the auto-serialize feature for control methods. This feature 3145automatically serializes all methods that create named objects in order 3146to prevent runtime errors. The update adds support to ignore the 3147currently executing AML SyncLevel when invoking such a method, in order 3148to prevent disruption of any existing SyncLevel priorities that may exist 3149in the AML code. Although the use of SyncLevels is relatively rare, this 3150change fixes a regression where an AE_AML_MUTEX_ORDER exception can 3151appear on some machines starting with the 20140214 release. 3152 3153Added a new external interface to allow the host to install ACPI tables 3154very early, before the namespace is even created. AcpiInstallTable gives 3155the host additional flexibility for ACPI table management. Tables can be 3156installed directly by the host as if they had originally appeared in the 3157XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 3158(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 3159with additional internal restructuring and cleanup. See the ACPICA 3160Reference for interface details. Lv Zheng. 3161 3162Added validation of the checksum for all incoming dynamically loaded 3163tables (via external interfaces or via AML Load/LoadTable operators). Lv 3164Zheng. 3165 3166Updated the use of the AcpiOsWaitEventsComplete interface during Notify 3167and GPE handler removal. Restructured calls to eliminate possible race 3168conditions. Lv Zheng. 3169 3170Added a warning for the use/execution of the ASL/AML Unload (table) 3171operator. This will help detect and identify machines that use this 3172operator if and when it is ever used. This operator has never been seen 3173in the field and the usage model and possible side-effects of the drastic 3174runtime action of a full table removal are unknown. 3175 3176Reverted the use of #pragma push/pop which was introduced in the 20140214 3177release. It appears that push and pop are not implemented by enough 3178compilers to make the use of this feature feasible for ACPICA at this 3179time. However, these operators may be deployed in a future ACPICA 3180release. 3181 3182Added the missing EXPORT_SYMBOL macros for the install and remove SCI 3183handler interfaces. 3184 3185Source code generation: 31861) Disabled the use of the "strchr" macro for the gcc-specific 3187generation. For some versions of gcc, this macro can periodically expose 3188a compiler bug which in turn causes compile-time error(s). 31892) Added support for PPC64 compilation. Colin Ian King. 3190 3191Example Code and Data Size: These are the sizes for the OS-independent 3192acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3193debug version of the code includes the debug output trace mechanism and 3194has a much larger code and data size. 3195 3196 Current Release: 3197 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3198 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3199 Previous Release: 3200 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3201 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3202 3203 32042) iASL Compiler/Disassembler and Tools: 3205 3206Disassembler: Added several new features to improve the readability of 3207the resulting ASL code. Extra information is emitted within comment 3208fields in the ASL code: 32091) Known _HID/_CID values are decoded to descriptive text. 32102) Standard values for the Notify() operator are decoded to descriptive 3211text. 32123) Target operands are expanded to full pathnames (in a comment) when 3213possible. 3214 3215Disassembler: Miscellaneous updates for extern() handling: 32161) Abort compiler if file specified by -fe option does not exist. 32172) Silence unnecessary warnings about argument count mismatches. 32183) Update warning messages concerning unresolved method externals. 32194) Emit "UnknownObj" keyword for externals whose type cannot be 3220determined. 3221 3222AcpiHelp utility: 32231) Added the -a option to display both the ASL syntax and the AML 3224encoding for an input ASL operator. This effectively displays all known 3225information about an ASL operator with one AcpiHelp invocation. 32262) Added substring match support (similar to a wildcard) for the -i 3227(_HID/PNP IDs) option. 3228 3229iASL/Disassembler: Since this tool does not yet support execution on big- 3230endian machines, added detection of endianness and an error message if 3231execution is attempted on big-endian. Support for big-endian within iASL 3232is a feature that is on the ACPICA to-be-done list. 3233 3234AcpiBin utility: 32351) Remove option to extract binary files from an acpidump; this function 3236is made obsolete by the AcpiXtract utility. 32372) General cleanup of open files and allocated buffers. 3238 3239 3240---------------------------------------- 324114 February 2014. Summary of changes for version 20140214: 3242 32431) ACPICA kernel-resident subsystem: 3244 3245Implemented a new mechanism to proactively prevent problems with ill- 3246behaved reentrant control methods that create named ACPI objects. This 3247behavior is illegal as per the ACPI specification, but is nonetheless 3248frequently seen in the field. Previously, this could lead to an 3249AE_ALREADY_EXISTS exception if the method was actually entered by more 3250than one thread. This new mechanism detects such methods at table load 3251time and marks them "serialized" to prevent reentrancy. A new global 3252option, AcpiGbl_AutoSerializeMethods, has been added to disable this 3253feature if desired. This mechanism and global option obsoletes and 3254supersedes the previous AcpiGbl_SerializeAllMethods option. 3255 3256Added the "Windows 2013" string to the _OSI support. ACPICA will now 3257respond TRUE to _OSI queries with this string. It is the stated policy of 3258ACPICA to add new strings to the _OSI support as soon as possible after 3259they are defined. See the full ACPICA _OSI policy which has been added to 3260the utilities/utosi.c file. 3261 3262Hardened/updated the _PRT return value auto-repair code: 32631) Do not abort the repair on a single subpackage failure, continue to 3264check all subpackages. 32652) Add check for the minimum subpackage length (4). 32663) Properly handle extraneous NULL package elements. 3267 3268Added support to avoid the possibility of infinite loops when traversing 3269object linked lists. Never allow an infinite loop, even in the face of 3270corrupted object lists. 3271 3272ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 3273pack(pop) directives to ensure that the ACPICA headers are independent of 3274compiler settings or other host headers. 3275 3276Example Code and Data Size: These are the sizes for the OS-independent 3277acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3278debug version of the code includes the debug output trace mechanism and 3279has a much larger code and data size. 3280 3281 Current Release: 3282 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3283 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3284 Previous Release: 3285 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 3286 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 3287 3288 32892) iASL Compiler/Disassembler and Tools: 3290 3291iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 3292first reserved field was incorrectly forced to have a value of zero. This 3293change correctly forces the field to have a value of one. ACPICA BZ 1081. 3294 3295Debugger: Added missing support for the "Extra" and "Data" subobjects 3296when displaying object data. 3297 3298Debugger: Added support to display entire object linked lists when 3299displaying object data. 3300 3301iASL: Removed the obsolete -g option to obtain ACPI tables from the 3302Windows registry. This feature has been superseded by the acpidump 3303utility. 3304 3305 3306---------------------------------------- 330714 January 2014. Summary of changes for version 20140114: 3308 33091) ACPICA kernel-resident subsystem: 3310 3311Updated all ACPICA copyrights and signons to 2014. Added the 2014 3312copyright to all module headers and signons, including the standard Linux 3313header. This affects virtually every file in the ACPICA core subsystem, 3314iASL compiler, all ACPICA utilities, and the test suites. 3315 3316Improved parameter validation for AcpiInstallGpeBlock. Added the 3317following checks: 33181) The incoming device handle refers to type ACPI_TYPE_DEVICE. 33192) There is not already a GPE block attached to the device. 3320Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 3321device. 3322 3323Correctly support "references" in the ACPI_OBJECT. This change fixes the 3324support to allow references (namespace nodes) to be passed as arguments 3325to control methods via the evaluate object interface. This is probably 3326most useful for testing purposes, however. 3327 3328Improved support for 32/64 bit physical addresses in printf()-like 3329output. This change improves the support for physical addresses in printf 3330debug statements and other output on both 32-bit and 64-bit hosts. It 3331consistently outputs the appropriate number of bytes for each host. The 3332%p specifier is unsatisfactory since it does not emit uniform output on 3333all hosts/clib implementations (on some, leading zeros are not supported, 3334leading to difficult-to-read output). 3335 3336Example Code and Data Size: These are the sizes for the OS-independent 3337acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3338debug version of the code includes the debug output trace mechanism and 3339has a much larger code and data size. 3340 3341 Current Release: 3342 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 3343 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 3344 Previous Release: 3345 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 3346 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 3347 3348 33492) iASL Compiler/Disassembler and Tools: 3350 3351iASL: Fix a possible fault when using the Connection() operator. Fixes a 3352problem if the parent Field definition for the Connection operator refers 3353to an operation region that does not exist. ACPICA BZ 1064. 3354 3355AcpiExec: Load of local test tables is now optional. The utility has the 3356capability to load some various tables to test features of ACPICA. 3357However, there are enough of them that the output of the utility became 3358confusing. With this change, only the required local tables are displayed 3359(RSDP, XSDT, etc.) along with the actual tables loaded via the command 3360line specification. This makes the default output simler and easier to 3361understand. The -el command line option restores the original behavior 3362for testing purposes. 3363 3364AcpiExec: Added support for overlapping operation regions. This change 3365expands the simulation of operation regions by supporting regions that 3366overlap within the given address space. Supports SystemMemory and 3367SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 3368 3369AcpiExec: Added region handler support for PCI_Config and EC spaces. This 3370allows AcpiExec to simulate these address spaces, similar to the current 3371support for SystemMemory and SystemIO. 3372 3373Debugger: Added new command to read/write/compare all namespace objects. 3374The command "test objects" will exercise the entire namespace by writing 3375new values to each data object, and ensuring that the write was 3376successful. The original value is then restored and verified. 3377 3378Debugger: Added the "test predefined" command. This change makes this 3379test public and puts it under the new "test" command. The test executes 3380each and every predefined name within the current namespace. 3381 3382 3383---------------------------------------- 338418 December 2013. Summary of changes for version 20131218: 3385 3386Global note: The ACPI 5.0A specification was released this month. There 3387are no changes needed for ACPICA since this release of ACPI is an 3388errata/clarification release. The specification is available at 3389acpi.info. 3390 3391 33921) ACPICA kernel-resident subsystem: 3393 3394Added validation of the XSDT root table if it is present. Some older 3395platforms contain an XSDT that is ill-formed or otherwise invalid (such 3396as containing some or all entries that are NULL pointers). This change 3397adds a new function to validate the XSDT before actually using it. If the 3398XSDT is found to be invalid, ACPICA will now automatically fall back to 3399using the RSDT instead. Original implementation by Zhao Yakui. Ported to 3400ACPICA and enhanced by Lv Zheng and Bob Moore. 3401 3402Added a runtime option to ignore the XSDT and force the use of the RSDT. 3403This change adds a runtime option that will force ACPICA to use the RSDT 3404instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 3405requires that an XSDT be used instead of the RSDT, the XSDT has been 3406found to be corrupt or ill-formed on some machines. Lv Zheng. 3407 3408Added a runtime option to favor 32-bit FADT register addresses over the 340964-bit addresses. This change adds an option to favor 32-bit FADT 3410addresses when there is a conflict between the 32-bit and 64-bit versions 3411of the same register. The default behavior is to use the 64-bit version 3412in accordance with the ACPI specification. This can now be overridden via 3413the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 3414 3415During the change above, the internal "Convert FADT" and "Verify FADT" 3416functions have been merged to simplify the code, making it easier to 3417understand and maintain. ACPICA BZ 933. 3418 3419Improve exception reporting and handling for GPE block installation. 3420Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 3421status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 3422 3423Added helper macros to extract bus/segment numbers from the HEST table. 3424This change adds two macros to extract the encoded bus and segment 3425numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 3426Betty Dall <betty.dall@hp.com> 3427 3428Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 3429by ACPICA. It is not a public macro, so it should have no effect on 3430existing OSV code. Lv Zheng. 3431 3432Example Code and Data Size: These are the sizes for the OS-independent 3433acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3434debug version of the code includes the debug output trace mechanism and 3435has a much larger code and data size. 3436 3437 Current Release: 3438 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 3439 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 3440 Previous Release: 3441 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 3442 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 3443 3444 34452) iASL Compiler/Disassembler and Tools: 3446 3447Disassembler: Improved pathname support for emitted External() 3448statements. This change adds full pathname support for external names 3449that have been resolved internally by the inclusion of additional ACPI 3450tables (via the iASL -e option). Without this change, the disassembler 3451can emit multiple externals for the same object, or it become confused 3452when the Scope() operator is used on an external object. Overall, greatly 3453improves the ability to actually recompile the emitted ASL code when 3454objects a referenced across multiple ACPI tables. Reported by Michael 3455Tsirkin (mst@redhat.com). 3456 3457Tests/ASLTS: Updated functional control suite to execute with no errors. 3458David Box. Fixed several errors related to the testing of the interpreter 3459slack mode. Lv Zheng. 3460 3461iASL: Added support to detect names that are declared within a control 3462method, but are unused (these are temporary names that are only valid 3463during the time the method is executing). A remark is issued for these 3464cases. ACPICA BZ 1022. 3465 3466iASL: Added full support for the DBG2 table. Adds full disassembler, 3467table compiler, and template generator support for the DBG2 table (Debug 3468Port 2 table). 3469 3470iASL: Added full support for the PCCT table, update the table definition. 3471Updates the PCCT table definition in the actbl3.h header and adds table 3472compiler and template generator support. 3473 3474iASL: Added an option to emit only error messages (no warnings/remarks). 3475The -ve option will enable only error messages, warnings and remarks are 3476suppressed. This can simplify debugging when only the errors are 3477important, such as when an ACPI table is disassembled and there are many 3478warnings and remarks -- but only the actual errors are of real interest. 3479 3480Example ACPICA code (source/tools/examples): Updated the example code so 3481that it builds to an actual working program, not just example code. Added 3482ACPI tables and execution of an example control method in the DSDT. Added 3483makefile support for Unix generation. 3484 3485 3486---------------------------------------- 348715 November 2013. Summary of changes for version 20131115: 3488 3489This release is available at https://acpica.org/downloads 3490 3491 34921) ACPICA kernel-resident subsystem: 3493 3494Resource Manager: Fixed loop termination for the "get AML length" 3495function. The loop previously had an error termination on a NULL resource 3496pointer, which can never happen since the loop simply increments a valid 3497resource pointer. This fix changes the loop to terminate with an error on 3498an invalid end-of-buffer condition. The problem can be seen as an 3499infinite loop by callers to AcpiSetCurrentResources with an invalid or 3500corrupted resource descriptor, or a resource descriptor that is missing 3501an END_TAG descriptor. Reported by Dan Carpenter 3502<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 3503 3504Table unload and ACPICA termination: Delete all attached data objects 3505during namespace node deletion. This fix updates namespace node deletion 3506to delete the entire list of attached objects (attached via 3507AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 35081024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 3509 3510ACPICA termination: Added support to delete all objects attached to the 3511root namespace node. This fix deletes any and all objects that have been 3512attached to the root node via AcpiAttachData. Previously, none of these 3513objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 3514 3515Debug output: Do not emit the function nesting level for the in-kernel 3516build. The nesting level is really only useful during a single-thread 3517execution. Therefore, only enable this output for the AcpiExec utility. 3518Also, only emit the thread ID when executing under AcpiExec (Context 3519switches are still always detected and a message is emitted). ACPICA BZ 3520972. 3521 3522Example Code and Data Size: These are the sizes for the OS-independent 3523acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3524debug version of the code includes the debug output trace mechanism and 3525has a much larger code and data size. 3526 3527 Current Release: 3528 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 3529 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 3530 Previous Release: 3531 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 3532 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 3533 3534 35352) iASL Compiler/Disassembler and Tools: 3536 3537AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 3538correct portable POSIX header for terminal control functions. 3539 3540Disassembler: Fixed control method invocation issues related to the use 3541of the CondRefOf() operator. The problem is seen in the disassembly where 3542control method invocations may not be disassembled properly if the 3543control method name has been used previously as an argument to CondRefOf. 3544The solution is to not attempt to emit an external declaration for the 3545CondRefOf target (it is not necessary in the first place). This prevents 3546disassembler object type confusion. ACPICA BZ 988. 3547 3548Unix Makefiles: Added an option to disable compiler optimizations and the 3549_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 3550with optimizations (reportedly, gcc 4.4 for example). This change adds a 3551command line option for make (NOOPT) that disables all compiler 3552optimizations and the _FORTIFY_SOURCE compiler flag. The default 3553optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 35541034. Lv Zheng, Bob Moore. 3555 3556Tests/ASLTS: Added options to specify individual test cases and modes. 3557This allows testers running aslts.sh to optionally specify individual 3558test modes and test cases. Also added an option to disable the forced 3559generation of the ACPICA tools from source if desired. Lv Zheng. 3560 3561---------------------------------------- 356227 September 2013. Summary of changes for version 20130927: 3563 3564This release is available at https://acpica.org/downloads 3565 3566 35671) ACPICA kernel-resident subsystem: 3568 3569Fixed a problem with store operations to reference objects. This change 3570fixes a problem where a Store operation to an ArgX object that contained 3571a 3572reference to a field object did not complete the automatic dereference 3573and 3574then write to the actual field object. Instead, the object type of the 3575field object was inadvertently changed to match the type of the source 3576operand. The new behavior will actually write to the field object (buffer 3577field or field unit), thus matching the correct ACPI-defined behavior. 3578 3579Implemented support to allow the host to redefine individual OSL 3580prototypes. This change enables the host to redefine OSL prototypes found 3581in the acpiosxf.h file. This allows the host to implement OSL interfaces 3582with a macro or inlined function. Further, it allows the host to add any 3583additional required modifiers such as __iomem, __init, __exit, etc., as 3584necessary on a per-interface basis. Enables maximum flexibility for the 3585OSL interfaces. Lv Zheng. 3586 3587Hardcoded the access width for the FADT-defined reset register. The ACPI 3588specification requires the reset register width to be 8 bits. ACPICA now 3589hardcodes the width to 8 and ignores the FADT width value. This provides 3590compatibility with other ACPI implementations that have allowed BIOS code 3591with bad register width values to go unnoticed. Matthew Garett, Bob 3592Moore, 3593Lv Zheng. 3594 3595Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 3596used 3597in the OSL header (acpiosxf). The change modifies the position of this 3598macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 3599build issues if the OSL defines the implementation of the interface to be 3600an inline stub function. Lv Zheng. 3601 3602Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 3603initialization interfaces. This change adds a new macro for the main init 3604and terminate external interfaces in order to support hosts that require 3605additional or different processing for these functions. Changed from 3606ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 3607Zheng, Bob Moore. 3608 3609Cleaned up the memory allocation macros for configurability. In the 3610common 3611case, the ACPI_ALLOCATE and related macros now resolve directly to their 3612respective AcpiOs* OSL interfaces. Two options: 36131) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 3614default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 36152) For AcpiExec (and for debugging), the macros can optionally be 3616resolved 3617to the local ACPICA interfaces that track each allocation (local tracking 3618is used to immediately detect memory leaks). 3619Lv Zheng. 3620 3621Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 3622to predefine this macro to either TRUE or FALSE during the system build. 3623 3624Replaced __FUNCTION_ with __func__ in the gcc-specific header. 3625 3626Example Code and Data Size: These are the sizes for the OS-independent 3627acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3628debug version of the code includes the debug output trace mechanism and 3629has a much larger code and data size. 3630 3631 Current Release: 3632 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 3633 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 3634 Previous Release: 3635 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 3636 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3637 3638 36392) iASL Compiler/Disassembler and Tools: 3640 3641iASL: Implemented wildcard support for the -e option. This simplifies use 3642when there are many SSDTs that must be included to resolve external 3643method 3644declarations. ACPICA BZ 1041. Example: 3645 iasl -e ssdt*.dat -d dsdt.dat 3646 3647AcpiExec: Add history/line-editing for Unix/Linux systems. This change 3648adds a portable module that implements full history and limited line 3649editing for Unix and Linux systems. It does not use readline() due to 3650portability issues. Instead it uses the POSIX termio interface to put the 3651terminal in raw input mode so that the various special keys can be 3652trapped 3653(such as up/down-arrow for history support and left/right-arrow for line 3654editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 3655 3656AcpiXtract: Add support to handle (ignore) "empty" lines containing only 3657one or more spaces. This provides compatible with early or different 3658versions of the AcpiDump utility. ACPICA BZ 1044. 3659 3660AcpiDump: Do not ignore tables that contain only an ACPI table header. 3661Apparently, some BIOSs create SSDTs that contain an ACPI table header but 3662no other data. This change adds support to dump these tables. Any tables 3663shorter than the length of an ACPI table header remain in error (an error 3664message is emitted). Reported by Yi Li. 3665 3666Debugger: Echo actual command along with the "unknown command" message. 3667 3668---------------------------------------- 366923 August 2013. Summary of changes for version 20130823: 3670 36711) ACPICA kernel-resident subsystem: 3672 3673Implemented support for host-installed System Control Interrupt (SCI) 3674handlers. Certain ACPI functionality requires the host to handle raw 3675SCIs. For example, the "SCI Doorbell" that is defined for memory power 3676state support requires the host device driver to handle SCIs to examine 3677if the doorbell has been activated. Multiple SCI handlers can be 3678installed to allow for future expansion. New external interfaces are 3679AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 3680details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 3681 3682Operation region support: Never locally free the handler "context" 3683pointer. This change removes some dangerous code that attempts to free 3684the handler context pointer in some (rare) circumstances. The owner of 3685the handler owns this pointer and the ACPICA code should never touch it. 3686Although not seen to be an issue in any kernel, it did show up as a 3687problem (fault) under AcpiExec. Also, set the internal storage field for 3688the context pointer to zero when the region is deactivated, simply for 3689sanity. David Box. ACPICA BZ 1039. 3690 3691AcpiRead: On error, do not modify the return value target location. If an 3692error happens in the middle of a split 32/32 64-bit I/O operation, do not 3693modify the target of the return value pointer. Makes the code consistent 3694with the rest of ACPICA. Bjorn Helgaas. 3695 3696Example Code and Data Size: These are the sizes for the OS-independent 3697acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3698debug version of the code includes the debug output trace mechanism and 3699has a much larger code and data size. 3700 3701 Current Release: 3702 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 3703 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3704 Previous Release: 3705 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 3706 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 3707 3708 37092) iASL Compiler/Disassembler and Tools: 3710 3711AcpiDump: Implemented several new features and fixed some problems: 37121) Added support to dump the RSDP, RSDT, and XSDT tables. 37132) Added support for multiple table instances (SSDT, UEFI). 37143) Added option to dump "customized" (overridden) tables (-c). 37154) Fixed a problem where some table filenames were improperly 3716constructed. 37175) Improved some error messages, removed some unnecessary messages. 3718 3719iASL: Implemented additional support for disassembly of ACPI tables that 3720contain invocations of external control methods. The -fe<file> option 3721allows the import of a file that specifies the external methods along 3722with the required number of arguments for each -- allowing for the 3723correct disassembly of the table. This is a workaround for a limitation 3724of AML code where the disassembler often cannot determine the number of 3725arguments required for an external control method and generates incorrect 3726ASL code. See the iASL reference for details. ACPICA BZ 1030. 3727 3728Debugger: Implemented a new command (paths) that displays the full 3729pathnames (namepaths) and object types of all objects in the namespace. 3730This is an alternative to the namespace command. 3731 3732Debugger: Implemented a new command (sci) that invokes the SCI dispatch 3733mechanism and any installed handlers. 3734 3735iASL: Fixed a possible segfault for "too many parent prefixes" condition. 3736This can occur if there are too many parent prefixes in a namepath (for 3737example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 3738 3739Application OSLs: Set the return value for the PCI read functions. These 3740functions simply return AE_OK, but should set the return value to zero 3741also. This change implements this. ACPICA BZ 1038. 3742 3743Debugger: Prevent possible command line buffer overflow. Increase the 3744size of a couple of the debugger line buffers, and ensure that overflow 3745cannot happen. ACPICA BZ 1037. 3746 3747iASL: Changed to abort immediately on serious errors during the parsing 3748phase. Due to the nature of ASL, there is no point in attempting to 3749compile these types of errors, and they typically end up causing a 3750cascade of hundreds of errors which obscure the original problem. 3751 3752---------------------------------------- 375325 July 2013. Summary of changes for version 20130725: 3754 37551) ACPICA kernel-resident subsystem: 3756 3757Fixed a problem with the DerefOf operator where references to FieldUnits 3758and BufferFields incorrectly returned the parent object, not the actual 3759value of the object. After this change, a dereference of a FieldUnit 3760reference results in a read operation on the field to get the value, and 3761likewise, the appropriate BufferField value is extracted from the target 3762buffer. 3763 3764Fixed a problem where the _WAK method could cause a fault under these 3765circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 3766method returned no value. The problem is rarely seen because most kernels 3767run ACPICA in slack mode. 3768 3769For the DerefOf operator, a fatal error now results if an attempt is made 3770to dereference a reference (created by the Index operator) to a NULL 3771package element. Provides compatibility with other ACPI implementations, 3772and this behavior will be added to a future version of the ACPI 3773specification. 3774 3775The ACPI Power Management Timer (defined in the FADT) is now optional. 3776This provides compatibility with other ACPI implementations and will 3777appear in the next version of the ACPI specification. If there is no PM 3778Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 3779zero in the FADT indicates no PM timer. 3780 3781Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 3782allows the host to globally enable/disable all vendor strings, all 3783feature strings, or both. Intended to be primarily used for debugging 3784purposes only. Lv Zheng. 3785 3786Expose the collected _OSI data to the host via a global variable. This 3787data tracks the highest level vendor ID that has been invoked by the BIOS 3788so that the host (and potentially ACPICA itself) can change behaviors 3789based upon the age of the BIOS. 3790 3791Example Code and Data Size: These are the sizes for the OS-independent 3792acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3793debug version of the code includes the debug output trace mechanism and 3794has a much larger code and data size. 3795 3796 Current Release: 3797 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 3798 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3799 Previous Release: 3800 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 3801 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 3802 3803 38042) iASL Compiler/Disassembler and Tools: 3805 3806iASL: Created the following enhancements for the -so option (create 3807offset table): 38081)Add offsets for the last nameseg in each namepath for every supported 3809object type 38102)Add support for Processor, Device, Thermal Zone, and Scope objects 38113)Add the actual AML opcode for the parent object of every supported 3812object type 38134)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 3814 3815Disassembler: Emit all unresolved external symbols in a single block. 3816These are external references to control methods that could not be 3817resolved, and thus, the disassembler had to make a guess at the number of 3818arguments to parse. 3819 3820iASL: The argument to the -T option (create table template) is now 3821optional. If not specified, the default table is a DSDT, typically the 3822most common case. 3823 3824---------------------------------------- 382526 June 2013. Summary of changes for version 20130626: 3826 38271) ACPICA kernel-resident subsystem: 3828 3829Fixed an issue with runtime repair of the _CST object. Null or invalid 3830elements were not always removed properly. Lv Zheng. 3831 3832Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 3833FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 3834the maximum number of GPEs is 1016. Use of multiple GPE block devices 3835makes the system-wide number of GPEs essentially unlimited. 3836 3837Example Code and Data Size: These are the sizes for the OS-independent 3838acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3839debug version of the code includes the debug output trace mechanism and 3840has a much larger code and data size. 3841 3842 Current Release: 3843 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 3844 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 3845 Previous Release: 3846 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 3847 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 3848 3849 38502) iASL Compiler/Disassembler and Tools: 3851 3852Portable AcpiDump: Implemented full support for the Linux and FreeBSD 3853hosts. Now supports Linux, FreeBSD, and Windows. 3854 3855Disassembler: Added some missing types for the HEST and EINJ tables: "Set 3856Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 3857 3858iASL/Preprocessor: Implemented full support for nested 3859#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 3860 3861Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 3862max. The original purpose of this constraint was to limit the amount of 3863debug output. However, the string function in question (UtPrintString) is 3864now used for the disassembler also, where 256 bytes is insufficient. 3865Reported by RehabMan@GitHub. 3866 3867iASL/DataTables: Fixed some problems and issues with compilation of DMAR 3868tables. ACPICA BZ 999. Lv Zheng. 3869 3870iASL: Fixed a couple of error exit issues that could result in a "Could 3871not delete <file>" message during ASL compilation. 3872 3873AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 3874the actual signatures for these tables are "FACP" and "APIC", 3875respectively. 3876 3877AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 3878tables are allowed to have multiple instances. 3879 3880---------------------------------------- 388117 May 2013. Summary of changes for version 20130517: 3882 38831) ACPICA kernel-resident subsystem: 3884 3885Fixed a regression introduced in version 20130328 for _INI methods. This 3886change fixes a problem introduced in 20130328 where _INI methods are no 3887longer executed properly because of a memory block that was not 3888initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 3889<tomasz.nowicki@linaro.org>. 3890 3891Fixed a possible problem with the new extended sleep registers in the 3892ACPI 38935.0 FADT. Do not use these registers (even if populated) unless the HW- 3894reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 38951020. Lv Zheng. 3896 3897Implemented return value repair code for _CST predefined objects: Sort 3898the 3899list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 3900 3901Implemented a debug-only option to disable loading of SSDTs from the 3902RSDT/XSDT during ACPICA initialization. This can be useful for debugging 3903ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 3904acglobal.h - ACPICA BZ 1005. Lv Zheng. 3905 3906Fixed some issues in the ACPICA initialization and termination code: 3907Tomasz Nowicki <tomasz.nowicki@linaro.org> 39081) Clear events initialized flag upon event component termination. ACPICA 3909BZ 1013. 39102) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 39113) Delete global lock pending lock during termination. ACPICA BZ 1012. 39124) Clear debug buffer global on termination to prevent possible multiple 3913delete. ACPICA BZ 1010. 3914 3915Standardized all switch() blocks across the entire source base. After 3916many 3917years, different formatting for switch() had crept in. This change makes 3918the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 3919 3920Split some files to enhance ACPICA modularity and configurability: 39211) Split buffer dump routines into utilities/utbuffer.c 39222) Split internal error message routines into utilities/uterror.c 39233) Split table print utilities into tables/tbprint.c 39244) Split iASL command-line option processing into asloptions.c 3925 3926Makefile enhancements: 39271) Support for all new files above. 39282) Abort make on errors from any subcomponent. Chao Guan. 39293) Add build support for Apple Mac OS X. Liang Qi. 3930 3931Example Code and Data Size: These are the sizes for the OS-independent 3932acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3933debug version of the code includes the debug output trace mechanism and 3934has a much larger code and data size. 3935 3936 Current Release: 3937 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 3938 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 3939 Previous Release: 3940 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 3941 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 3942 3943 39442) iASL Compiler/Disassembler and Tools: 3945 3946New utility: Implemented an easily portable version of the acpidump 3947utility to extract ACPI tables from the system (or a file) in an ASCII 3948hex 3949dump format. The top-level code implements the various command line 3950options, file I/O, and table dump routines. To port to a new host, only 3951three functions need to be implemented to get tables -- since this 3952functionality is OS-dependent. See the tools/acpidump/apmain.c module and 3953the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 39541) The Windows version obtains the ACPI tables from the Registry. 39552) The Linux version is under development. 39563) Other hosts - If an OS-dependent module is submitted, it will be 3957distributed with ACPICA. 3958 3959iASL: Fixed a regression for -D preprocessor option (define symbol). A 3960restructuring/change to the initialization sequence caused this option to 3961no longer work properly. 3962 3963iASL: Implemented a mechanism to disable specific warnings and remarks. 3964Adds a new command line option, "-vw <messageid> as well as "#pragma 3965disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 3966 3967iASL: Fix for too-strict package object validation. The package object 3968validation for return values from the predefined names is a bit too 3969strict, it does not allow names references within the package (which will 3970be resolved at runtime.) These types of references cannot be validated at 3971compile time. This change ignores named references within package objects 3972for names that return or define static packages. 3973 3974Debugger: Fixed the 80-character command line limitation for the History 3975command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 3976 3977iASL: Added control method and package support for the -so option 3978(generates AML offset table for BIOS support.) 3979 3980iASL: issue a remark if a non-serialized method creates named objects. If 3981a thread blocks within the method for any reason, and another thread 3982enters the method, the method will fail because an attempt will be made 3983to 3984create the same (named) object twice. In this case, issue a remark that 3985the method should be marked serialized. NOTE: may become a warning later. 3986ACPICA BZ 909. 3987 3988---------------------------------------- 398918 April 2013. Summary of changes for version 20130418: 3990 39911) ACPICA kernel-resident subsystem: 3992 3993Fixed a possible buffer overrun during some rare but specific field unit 3994read operations. This overrun can only happen if the DSDT version is 1 -- 3995meaning that all AML integers are 32 bits -- and the field length is 3996between 33 and 55 bits long. During the read, an internal buffer object 3997is 3998created for the field unit because the field is larger than an integer 3999(32 4000bits). However, in this case, the buffer will be incorrectly written 4001beyond the end because the buffer length is less than the internal 4002minimum 4003of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 4004long, but a full 8 bytes will be written. 4005 4006Updated the Embedded Controller "orphan" _REG method support. This refers 4007to _REG methods under the EC device that have no corresponding operation 4008region. This is allowed by the ACPI specification. This update removes a 4009dependency on the existence an ECDT table. It will execute an orphan _REG 4010method as long as the operation region handler for the EC is installed at 4011the EC device node and not the namespace root. Rui Zhang (original 4012update), Bob Moore (update/integrate). 4013 4014Implemented run-time argument typechecking for all predefined ACPI names 4015(_STA, _BIF, etc.) This change performs object typechecking on all 4016incoming arguments for all predefined names executed via 4017AcpiEvaluateObject. This ensures that ACPI-related device drivers are 4018passing correct object types as well as the correct number of arguments 4019(therefore identifying any issues immediately). Also, the ASL/namespace 4020definition of the predefined name is checked against the ACPI 4021specification for the proper argument count. Adds one new file, 4022nsarguments.c 4023 4024Changed an exception code for the ASL UnLoad() operator. Changed the 4025exception code for the case where the input DdbHandle is invalid, from 4026AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 4027 4028Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 4029global makefile. The use of this flag causes compiler errors on earlier 4030versions of GCC, so it has been removed for compatibility. 4031 4032Miscellaneous cleanup: 40331) Removed some unused/obsolete macros 40342) Fixed a possible memory leak in the _OSI support 40353) Removed an unused variable in the predefined name support 40364) Windows OSL: remove obsolete reference to a memory list field 4037 4038Example Code and Data Size: These are the sizes for the OS-independent 4039acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4040debug version of the code includes the debug output trace mechanism and 4041has a much larger code and data size. 4042 4043 Current Release: 4044 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4045 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4046 Previous Release: 4047 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 4048 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 4049 4050 40512) iASL Compiler/Disassembler and Tools: 4052 4053AcpiExec: Added installation of a handler for the SystemCMOS address 4054space. This prevents control method abort if a method accesses this 4055space. 4056 4057AcpiExec: Added support for multiple EC devices, and now install EC 4058operation region handler(s) at the actual EC device instead of the 4059namespace root. This reflects the typical behavior of host operating 4060systems. 4061 4062AcpiExec: Updated to ensure that all operation region handlers are 4063installed before the _REG methods are executed. This prevents a _REG 4064method from aborting if it accesses an address space has no handler. 4065AcpiExec installs a handler for every possible address space. 4066 4067Debugger: Enhanced the "handlers" command to display non-root handlers. 4068This change enhances the handlers command to display handlers associated 4069with individual devices throughout the namespace, in addition to the 4070currently supported display of handlers associated with the root 4071namespace 4072node. 4073 4074ASL Test Suite: Several test suite errors have been identified and 4075resolved, reducing the total error count during execution. Chao Guan. 4076 4077---------------------------------------- 407828 March 2013. Summary of changes for version 20130328: 4079 40801) ACPICA kernel-resident subsystem: 4081 4082Fixed several possible race conditions with the internal object reference 4083counting mechanism. Some of the external ACPICA interfaces update object 4084reference counts without holding the interpreter or namespace lock. This 4085change adds a spinlock to protect reference count updates on the internal 4086ACPICA objects. Reported by and with assistance from Andriy Gapon 4087(avg@FreeBSD.org). 4088 4089FADT support: Removed an extraneous warning for very large GPE register 4090sets. This change removes a size mismatch warning if the legacy length 4091field for a GPE register set is larger than the 64-bit GAS structure can 4092accommodate. GPE register sets can be larger than the 255-bit width 4093limitation of the GAS structure. Linn Crosetto (linn@hp.com). 4094 4095_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 4096return from this interface. Handles a possible timeout case if 4097ACPI_WAIT_FOREVER is modified by the host to be a value less than 4098"forever". Jung-uk Kim. 4099 4100Predefined name support: Add allowed/required argument type information 4101to 4102the master predefined info table. This change adds the infrastructure to 4103enable typechecking on incoming arguments for all predefined 4104methods/objects. It does not actually contain the code that will fully 4105utilize this information, this is still under development. Also condenses 4106some duplicate code for the predefined names into a new module, 4107utilities/utpredef.c 4108 4109Example Code and Data Size: These are the sizes for the OS-independent 4110acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4111debug version of the code includes the debug output trace mechanism and 4112has a much larger code and data size. 4113 4114 Previous Release: 4115 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4116 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4117 Current Release: 4118 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4119 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4120 4121 41222) iASL Compiler/Disassembler and Tools: 4123 4124iASL: Implemented a new option to simplify the development of ACPI- 4125related 4126BIOS code. Adds support for a new "offset table" output file. The -so 4127option will create a C table containing the AML table offsets of various 4128named objects in the namespace so that BIOS code can modify them easily 4129at 4130boot time. This can simplify BIOS runtime code by eliminating expensive 4131searches for "magic values", enhancing boot times and adding greater 4132reliability. With assistance from Lee Hamel. 4133 4134iASL: Allow additional predefined names to return zero-length packages. 4135Now, all predefined names that are defined by the ACPI specification to 4136return a "variable-length package of packages" are allowed to return a 4137zero length top-level package. This allows the BIOS to tell the host that 4138the requested feature is not supported, and supports existing BIOS/ASL 4139code and practices. 4140 4141iASL: Changed the "result not used" warning to an error. This is the case 4142where an ASL operator is effectively a NOOP because the result of the 4143operation is not stored anywhere. For example: 4144 Add (4, Local0) 4145There is no target (missing 3rd argument), nor is the function return 4146value used. This is potentially a very serious problem -- since the code 4147was probably intended to do something, but for whatever reason, the value 4148was not stored. Therefore, this issue has been upgraded from a warning to 4149an error. 4150 4151AcpiHelp: Added allowable/required argument types to the predefined names 4152info display. This feature utilizes the recent update to the predefined 4153names table (above). 4154 4155---------------------------------------- 415614 February 2013. Summary of changes for version 20130214: 4157 41581) ACPICA Kernel-resident Subsystem: 4159 4160Fixed a possible regression on some hosts: Reinstated the safe return 4161macros (return_ACPI_STATUS, etc.) that ensure that the argument is 4162evaluated only once. Although these macros are not needed for the ACPICA 4163code itself, they are often used by ACPI-related host device drivers 4164where 4165the safe feature may be necessary. 4166 4167Fixed several issues related to the ACPI 5.0 reduced hardware support 4168(SOC): Now ensure that if the platform declares itself as hardware- 4169reduced 4170via the FADT, the following functions become NOOPs (and always return 4171AE_OK) because ACPI is always enabled by definition on these machines: 4172 AcpiEnable 4173 AcpiDisable 4174 AcpiHwGetMode 4175 AcpiHwSetMode 4176 4177Dynamic Object Repair: Implemented additional runtime repairs for 4178predefined name return values. Both of these repairs can simplify code in 4179the related device drivers that invoke these methods: 41801) For the _STR and _MLS names, automatically repair/convert an ASCII 4181string to a Unicode buffer. 41822) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 4183a 4184lone end tag descriptor in the following cases: A Return(0) was executed, 4185a null buffer was returned, or no object at all was returned (non-slack 4186mode only). Adds a new file, nsconvert.c 4187ACPICA BZ 998. Bob Moore, Lv Zheng. 4188 4189Resource Manager: Added additional code to prevent possible infinite 4190loops 4191while traversing corrupted or ill-formed resource template buffers. Check 4192for zero-length resource descriptors in all code that loops through 4193resource templates (the length field is used to index through the 4194template). This change also hardens the external AcpiWalkResources and 4195AcpiWalkResourceBuffer interfaces. 4196 4197Local Cache Manager: Enhanced the main data structure to eliminate an 4198unnecessary mechanism to access the next object in the list. Actually 4199provides a small performance enhancement for hosts that use the local 4200ACPICA cache manager. Jung-uk Kim. 4201 4202Example Code and Data Size: These are the sizes for the OS-independent 4203acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4204debug version of the code includes the debug output trace mechanism and 4205has a much larger code and data size. 4206 4207 Previous Release: 4208 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4209 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4210 Current Release: 4211 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4212 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4213 4214 42152) iASL Compiler/Disassembler and Tools: 4216 4217iASL/Disassembler: Fixed several issues with the definition of the ACPI 42185.0 RASF table (RAS Feature Table). This change incorporates late changes 4219that were made to the ACPI 5.0 specification. 4220 4221iASL/Disassembler: Added full support for the following new ACPI tables: 4222 1) The MTMR table (MID Timer Table) 4223 2) The VRTC table (Virtual Real Time Clock Table). 4224Includes header file, disassembler, table compiler, and template support 4225for both tables. 4226 4227iASL: Implemented compile-time validation of package objects returned by 4228predefined names. This new feature validates static package objects 4229returned by the various predefined names defined to return packages. Both 4230object types and package lengths are validated, for both parent packages 4231and sub-packages, if any. The code is similar in structure and behavior 4232to 4233the runtime repair mechanism within the AML interpreter and uses the 4234existing predefined name information table. Adds a new file, aslprepkg.c. 4235ACPICA BZ 938. 4236 4237iASL: Implemented auto-detection of binary ACPI tables for disassembly. 4238This feature detects a binary file with a valid ACPI table header and 4239invokes the disassembler automatically. Eliminates the need to 4240specifically invoke the disassembler with the -d option. ACPICA BZ 862. 4241 4242iASL/Disassembler: Added several warnings for the case where there are 4243unresolved control methods during the disassembly. This can potentially 4244cause errors when the output file is compiled, because the disassembler 4245assumes zero method arguments in these cases (it cannot determine the 4246actual number of arguments without resolution/definition of the method). 4247 4248Debugger: Added support to display all resources with a single command. 4249Invocation of the resources command with no arguments will now display 4250all 4251resources within the current namespace. 4252 4253AcpiHelp: Added descriptive text for each ACPICA exception code displayed 4254via the -e option. 4255 4256---------------------------------------- 425717 January 2013. Summary of changes for version 20130117: 4258 42591) ACPICA Kernel-resident Subsystem: 4260 4261Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 4262return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 4263objects to return a package containing one integer, most BIOS code 4264returns 4265two integers and the previous code reflects that. However, we also need 4266to 4267support BIOS code that actually implements to the ACPI spec, and this 4268change reflects this. 4269 4270Fixed two issues with the ACPI_DEBUG_PRINT macros: 42711) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 4272C compilers that require this support. 42732) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 4274ACPI_DEBUG is already used by many of the various hosts. 4275 4276Updated all ACPICA copyrights and signons to 2013. Added the 2013 4277copyright to all module headers and signons, including the standard Linux 4278header. This affects virtually every file in the ACPICA core subsystem, 4279iASL compiler, all ACPICA utilities, and the test suites. 4280 4281Example Code and Data Size: These are the sizes for the OS-independent 4282acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4283debug version of the code includes the debug output trace mechanism and 4284has a much larger code and data size. 4285 4286 Previous Release: 4287 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 4288 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 4289 Current Release: 4290 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4291 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4292 4293 42942) iASL Compiler/Disassembler and Tools: 4295 4296Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 4297prevent a possible fault on some hosts. Some C libraries modify the arg 4298pointer parameter to vfprintf making it difficult to call it twice in the 4299AcpiOsVprintf function. Use a local buffer to workaround this issue. This 4300does not affect the Windows OSL since the Win C library does not modify 4301the arg pointer. Chao Guan, Bob Moore. 4302 4303iASL: Fixed a possible infinite loop when the maximum error count is 4304reached. If an output file other than the .AML file is specified (such as 4305a listing file), and the maximum number of errors is reached, do not 4306attempt to flush data to the output file(s) as the compiler is aborting. 4307This can cause an infinite loop as the max error count code essentially 4308keeps calling itself. 4309 4310iASL/Disassembler: Added an option (-in) to ignore NOOP 4311opcodes/operators. 4312Implemented for both the compiler and the disassembler. Often, the NOOP 4313opcode is used as padding for packages that are changed dynamically by 4314the 4315BIOS. When disassembled and recompiled, these NOOPs will cause syntax 4316errors. This option causes the disassembler to ignore all NOOP opcodes 4317(0xA3), and it also causes the compiler to ignore all ASL source code 4318NOOP 4319statements as well. 4320 4321Debugger: Enhanced the Sleep command to execute all sleep states. This 4322change allows Sleep to be invoked with no arguments and causes the 4323debugger to execute all of the sleep states, 0-5, automatically. 4324 4325---------------------------------------- 432620 December 2012. Summary of changes for version 20121220: 4327 43281) ACPICA Kernel-resident Subsystem: 4329 4330Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 4331alternate entry point for AcpiWalkResources and improves the usability of 4332the resource manager by accepting as input a buffer containing the output 4333of either a _CRS, _PRS, or _AEI method. The key functionality is that the 4334input buffer is not deleted by this interface so that it can be used by 4335the host later. See the ACPICA reference for details. 4336 4337Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 4338(DSDT version < 2). The constant will be truncated and this warning 4339reflects that behavior. 4340 4341Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 4342ExtendedInterrupt, and GpioInt descriptors. This change adds support to 4343both get and set the new wake bit in these descriptors, separately from 4344the existing share bit. Reported by Aaron Lu. 4345 4346Interpreter: Fix Store() when an implicit conversion is not possible. For 4347example, in the cases such as a store of a string to an existing package 4348object, implement the store as a CopyObject(). This is a small departure 4349from the ACPI specification which states that the control method should 4350be 4351aborted in this case. However, the ASLTS suite depends on this behavior. 4352 4353Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 4354macros: check if debug output is currently enabled as soon as possible to 4355minimize performance impact if debug is in fact not enabled. 4356 4357Source code restructuring: Cleanup to improve modularity. The following 4358new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 4359psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 4360Associated makefiles and project files have been updated. 4361 4362Changed an exception code for LoadTable operator. For the case where one 4363of the input strings is too long, change the returned exception code from 4364AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 4365 4366Fixed a possible memory leak in dispatcher error path. On error, delete 4367the mutex object created during method mutex creation. Reported by 4368tim.gardner@canonical.com. 4369 4370Example Code and Data Size: These are the sizes for the OS-independent 4371acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4372debug version of the code includes the debug output trace mechanism and 4373has a much larger code and data size. 4374 4375 Previous Release: 4376 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 4377 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4378 Current Release: 4379 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 4380 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 4381 4382 43832) iASL Compiler/Disassembler and Tools: 4384 4385iASL: Disallow a method call as argument to the ObjectType ASL operator. 4386This change tracks an errata to the ACPI 5.0 document. The AML grammar 4387will not allow the interpreter to differentiate between a method and a 4388method invocation when these are used as an argument to the ObjectType 4389operator. The ACPI specification change is to disallow a method 4390invocation 4391(UserTerm) for the ObjectType operator. 4392 4393Finish support for the TPM2 and CSRT tables in the headers, table 4394compiler, and disassembler. 4395 4396Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 4397always expires immediately if the semaphore is not available. The 4398original 4399code was using a relative-time timeout, but sem_timedwait requires the 4400use 4401of an absolute time. 4402 4403iASL: Added a remark if the Timer() operator is used within a 32-bit 4404table. This operator returns a 64-bit time value that will be truncated 4405within a 32-bit table. 4406 4407iASL Source code restructuring: Cleanup to improve modularity. The 4408following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 4409aslmethod.c, and aslfileio.c. Associated makefiles and project files have 4410been updated. 4411 4412 4413---------------------------------------- 441414 November 2012. Summary of changes for version 20121114: 4415 44161) ACPICA Kernel-resident Subsystem: 4417 4418Implemented a performance enhancement for ACPI/AML Package objects. This 4419change greatly increases the performance of Package objects within the 4420interpreter. It changes the processing of reference counts for packages 4421by 4422optimizing for the most common case where the package sub-objects are 4423either Integers, Strings, or Buffers. Increases the overall performance 4424of 4425the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 44262X.) 4427Chao Guan. ACPICA BZ 943. 4428 4429Implemented and deployed common macros to extract flag bits from resource 4430descriptors. Improves readability and maintainability of the code. Fixes 4431a 4432problem with the UART serial bus descriptor for the number of data bits 4433flags (was incorrectly 2 bits, should be 3). 4434 4435Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 4436of the macros and changed the SETx macros to the style of (destination, 4437source). Also added ACPI_CASTx companion macros. Lv Zheng. 4438 4439Example Code and Data Size: These are the sizes for the OS-independent 4440acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4441debug version of the code includes the debug output trace mechanism and 4442has a much larger code and data size. 4443 4444 Previous Release: 4445 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 4446 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4447 Current Release: 4448 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 4449 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4450 4451 44522) iASL Compiler/Disassembler and Tools: 4453 4454Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 4455adds the ShareAndWake and ExclusiveAndWake flags which were added to the 4456Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 4457 4458Disassembler: Fixed a problem with external declaration generation. Fixes 4459a problem where an incorrect pathname could be generated for an external 4460declaration if the original reference to the object includes leading 4461carats (^). ACPICA BZ 984. 4462 4463Debugger: Completed a major update for the Disassemble<method> command. 4464This command was out-of-date and did not properly disassemble control 4465methods that had any reasonable complexity. This fix brings the command 4466up 4467to the same level as the rest of the disassembler. Adds one new file, 4468dmdeferred.c, which is existing code that is now common with the main 4469disassembler and the debugger disassemble command. ACPICA MZ 978. 4470 4471iASL: Moved the parser entry prototype to avoid a duplicate declaration. 4472Newer versions of Bison emit this prototype, so moved the prototype out 4473of 4474the iASL header to where it is actually used in order to avoid a 4475duplicate 4476declaration. 4477 4478iASL/Tools: Standardized use of the stream I/O functions: 4479 1) Ensure check for I/O error after every fopen/fread/fwrite 4480 2) Ensure proper order of size/count arguments for fread/fwrite 4481 3) Use test of (Actual != Requested) after all fwrite, and most fread 4482 4) Standardize I/O error messages 4483Improves reliability and maintainability of the code. Bob Moore, Lv 4484Zheng. 4485ACPICA BZ 981. 4486 4487Disassembler: Prevent duplicate External() statements. During generation 4488of external statements, detect similar pathnames that are actually 4489duplicates such as these: 4490 External (\ABCD) 4491 External (ABCD) 4492Remove all leading '\' characters from pathnames during the external 4493statement generation so that duplicates will be detected and tossed. 4494ACPICA BZ 985. 4495 4496Tools: Replace low-level I/O with stream I/O functions. Replace 4497open/read/write/close with the stream I/O equivalents 4498fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 4499Moore. 4500 4501AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 4502name header so that AcpiXtract recognizes the output file/table. 4503 4504iASL: Remove obsolete -2 option flag. Originally intended to force the 4505compiler/disassembler into an ACPI 2.0 mode, this was never implemented 4506and the entire concept is now obsolete. 4507 4508---------------------------------------- 450918 October 2012. Summary of changes for version 20121018: 4510 4511 45121) ACPICA Kernel-resident Subsystem: 4513 4514Updated support for the ACPI 5.0 MPST table. Fixes some problems 4515introduced by late changes to the table as it was added to the ACPI 5.0 4516specification. Includes header, disassembler, and data table compiler 4517support as well as a new version of the MPST template. 4518 4519AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 45205.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 4521methods: _HID, _CID, and _UID. 4522 4523Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 4524ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 4525name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 4526names for their various drivers. Affects the AcpiGetObjectInfo external 4527interface, and other internal interfaces as well. 4528 4529Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 4530This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 4531on machines that support non-aligned transfers. Optimizes for this case 4532rather than using a strncpy. With assistance from Zheng Lv. 4533 4534Resource Manager: Small fix for buffer size calculation. Fixed a one byte 4535error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 4536 4537Added a new debug print message for AML mutex objects that are force- 4538released. At control method termination, any currently acquired mutex 4539objects are force-released. Adds a new debug-only message for each one 4540that is released. 4541 4542Audited/updated all ACPICA return macros and the function debug depth 4543counter: 1) Ensure that all functions that use the various TRACE macros 4544also use the appropriate ACPICA return macros. 2) Ensure that all normal 4545return statements surround the return expression (value) with parens to 4546ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 4547Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 4548 4549Global source code changes/maintenance: All extra lines at the start and 4550end of each source file have been removed for consistency. Also, within 4551comments, all new sentences start with a single space instead of a double 4552space, again for consistency across the code base. 4553 4554Example Code and Data Size: These are the sizes for the OS-independent 4555acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4556debug version of the code includes the debug output trace mechanism and 4557has a much larger code and data size. 4558 4559 Previous Release: 4560 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 4561 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 4562 Current Release: 4563 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 4564 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4565 4566 45672) iASL Compiler/Disassembler and Tools: 4568 4569AcpiExec: Improved the algorithm used for memory leak/corruption 4570detection. Added some intelligence to the code that maintains the global 4571list of allocated memory. The list is now ordered by allocated memory 4572address, significantly improving performance. When running AcpiExec on 4573the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 4574on the platform and/or the environment. Note, this performance 4575enhancement affects the AcpiExec utility only, not the kernel-resident 4576ACPICA code. 4577 4578Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 4579the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 4580incorrect table offset reported for invalid opcodes. Report the original 458132-bit value for bad ACPI_NAMEs (as well as the repaired name.) 4582 4583Disassembler: Enhanced the -vt option to emit the binary table data in 4584hex format to assist with debugging. 4585 4586Fixed a potential filename buffer overflow in osunixdir.c. Increased the 4587size of file structure. Colin Ian King. 4588 4589---------------------------------------- 459013 September 2012. Summary of changes for version 20120913: 4591 4592 45931) ACPICA Kernel-resident Subsystem: 4594 4595ACPI 5.0: Added two new notify types for the Hardware Error Notification 4596Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 4597and 4598MCE(6). 4599 4600Table Manager: Merged/removed duplicate code in the root table resize 4601functions. One function is external, the other is internal. Lv Zheng, 4602ACPICA 4603BZ 846. 4604 4605Makefiles: Completely removed the obsolete "Linux" makefiles under 4606acpica/generate/linux. These makefiles are obsolete and have been 4607replaced 4608by 4609the generic unix makefiles under acpica/generate/unix. 4610 4611Makefiles: Ensure that binary files always copied properly. Minor rule 4612change 4613to ensure that the final binary output files are always copied up to the 4614appropriate binary directory (bin32 or bin64.) 4615 4616Example Code and Data Size: These are the sizes for the OS-independent 4617acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4618debug 4619version of the code includes the debug output trace mechanism and has a 4620much 4621larger code and data size. 4622 4623 Previous Release: 4624 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 4625 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 4626 Current Release: 4627 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 4628 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 4629 4630 46312) iASL Compiler/Disassembler and Tools: 4632 4633Disassembler: Fixed a possible fault during the disassembly of resource 4634descriptors when a second parse is required because of the invocation of 4635external control methods within the table. With assistance from 4636adq@lidskialf.net. ACPICA BZ 976. 4637 4638iASL: Fixed a namepath optimization problem. An error can occur if the 4639parse 4640node that contains the namepath to be optimized does not have a parent 4641node 4642that is a named object. This change fixes the problem. 4643 4644iASL: Fixed a regression where the AML file is not deleted on errors. The 4645AML 4646output file should be deleted if there are any errors during the 4647compiler. 4648The 4649only exception is if the -f (force output) option is used. ACPICA BZ 974. 4650 4651iASL: Added a feature to automatically increase internal line buffer 4652sizes. 4653Via realloc(), automatically increase the internal line buffer sizes as 4654necessary to support very long source code lines. The current version of 4655the 4656preprocessor requires a buffer long enough to contain full source code 4657lines. 4658This change increases the line buffer(s) if the input lines go beyond the 4659current buffer size. This eliminates errors that occurred when a source 4660code 4661line was longer than the buffer. 4662 4663iASL: Fixed a problem with constant folding in method declarations. The 4664SyncLevel term is a ByteConstExpr, and incorrect code would be generated 4665if a 4666Type3 opcode was used. 4667 4668Debugger: Improved command help support. For incorrect argument count, 4669display 4670full help for the command. For help command itself, allow an argument to 4671specify a command. 4672 4673Test Suites: Several bug fixes for the ASLTS suite reduces the number of 4674errors during execution of the suite. Guan Chao. 4675 4676---------------------------------------- 467716 August 2012. Summary of changes for version 20120816: 4678 4679 46801) ACPICA Kernel-resident Subsystem: 4681 4682Removed all use of the deprecated _GTS and _BFS predefined methods. The 4683_GTS 4684(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 4685deprecated and will probably be removed from the ACPI specification. 4686Windows 4687does not invoke them, and reportedly never will. The final nail in the 4688coffin 4689is that the ACPI specification states that these methods must be run with 4690interrupts off, which is not going to happen in a kernel interpreter. 4691Note: 4692Linux has removed all use of the methods also. It was discovered that 4693invoking these functions caused failures on some machines, probably 4694because 4695they were never tested since Windows does not call them. Affects two 4696external 4697interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 4698ACPICA BZ 969. 4699 4700Implemented support for complex bit-packed buffers returned from the _PLD 4701(Physical Location of Device) predefined method. Adds a new external 4702interface, AcpiDecodePldBuffer that parses the buffer into a more usable 4703C 4704structure. Note: C Bitfields cannot be used for this type of predefined 4705structure since the memory layout of individual bitfields is not defined 4706by 4707the C language. In addition, there are endian concerns where a compiler 4708will 4709change the bitfield ordering based on the machine type. The new ACPICA 4710interface eliminates these issues, and should be called after _PLD is 4711executed. ACPICA BZ 954. 4712 4713Implemented a change to allow a scope change to root (via "Scope (\)") 4714during 4715execution of module-level ASL code (code that is executed at table load 4716time.) Lin Ming. 4717 4718Added the Windows8/Server2012 string for the _OSI method. This change 4719adds 4720a 4721new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 47222012. 4723 4724Added header support for the new ACPI tables DBG2 (Debug Port Table Type 47252) 4726and CSRT (Core System Resource Table). 4727 4728Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 4729names. This simplifies access to the buffers returned by these predefined 4730names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 4731 4732GPE support: Removed an extraneous parameter from the various low-level 4733internal GPE functions. Tang Feng. 4734 4735Removed the linux makefiles from the unix packages. The generate/linux 4736makefiles are obsolete and have been removed from the unix tarball 4737release 4738packages. The replacement makefiles are under generate/unix, and there is 4739a 4740top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 4741 4742Updates for Unix makefiles: 47431) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 47442) Update linker flags (move to end of command line) for AcpiExec 4745utility. 4746Guan Chao. 4747 4748Split ACPICA initialization functions to new file, utxfinit.c. Split from 4749utxface.c to improve modularity and reduce file size. 4750 4751Example Code and Data Size: These are the sizes for the OS-independent 4752acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4753debug version of the code includes the debug output trace mechanism and 4754has a 4755much larger code and data size. 4756 4757 Previous Release: 4758 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 4759 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 4760 Current Release: 4761 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 4762 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 4763 4764 47652) iASL Compiler/Disassembler and Tools: 4766 4767iASL: Fixed a problem with constant folding for fixed-length constant 4768expressions. The constant-folding code was not being invoked for constant 4769expressions that allow the use of type 3/4/5 opcodes to generate 4770constants 4771for expressions such as ByteConstExpr, WordConstExpr, etc. This could 4772result 4773in the generation of invalid AML bytecode. ACPICA BZ 970. 4774 4775iASL: Fixed a generation issue on newer versions of Bison. Newer versions 4776apparently automatically emit some of the necessary externals. This 4777change 4778handles these versions in order to eliminate generation warnings. 4779 4780Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 4781 4782Disassembler: Add support to decode _PLD buffers. The decoded buffer 4783appears 4784within comments in the output file. 4785 4786Debugger: Fixed a regression with the "Threads" command where 4787AE_BAD_PARAMETER was always returned. 4788 4789---------------------------------------- 479011 July 2012. Summary of changes for version 20120711: 4791 47921) ACPICA Kernel-resident Subsystem: 4793 4794Fixed a possible fault in the return package object repair code. Fixes a 4795problem that can occur when a lone package object is wrapped with an 4796outer 4797package object in order to force conformance to the ACPI specification. 4798Can 4799affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 4800_DLM, 4801_CSD, _PSD, _TSD. 4802 4803Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 4804PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 4805ARB_DIS bit must be implemented in the host-dependent C3 processor power 4806state 4807support. Note, ARB_DIS is obsolete and only applies to older chipsets, 4808both 4809Intel and other vendors. (for Intel: ICH4-M and earlier) 4810 4811This change removes the code to disable/enable bus master arbitration 4812during 4813suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 4814causes 4815resume problems on some machines. The change has been in use for over 4816seven 4817years within Linux. 4818 4819Implemented two new external interfaces to support host-directed dynamic 4820ACPI 4821table load and unload. They are intended to simplify the host 4822implementation 4823of hot-plug support: 4824 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 4825 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 4826table. 4827See the ACPICA reference for additional details. Adds one new file, 4828components/tables/tbxfload.c 4829 4830Implemented and deployed two new interfaces for errors and warnings that 4831are 4832known to be caused by BIOS/firmware issues: 4833 AcpiBiosError: Prints "ACPI Firmware Error" message. 4834 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 4835Deployed these new interfaces in the ACPICA Table Manager code for ACPI 4836table 4837and FADT errors. Additional deployment to be completed as appropriate in 4838the 4839future. The associated conditional macros are ACPI_BIOS_ERROR and 4840ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 4841ACPICA 4842BZ 4843843. 4844 4845Implicit notify support: ensure that no memory allocation occurs within a 4846critical region. This fix moves a memory allocation outside of the time 4847that a 4848spinlock is held. Fixes issues on systems that do not allow this 4849behavior. 4850Jung-uk Kim. 4851 4852Split exception code utilities and tables into a new file, 4853utilities/utexcep.c 4854 4855Example Code and Data Size: These are the sizes for the OS-independent 4856acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4857debug 4858version of the code includes the debug output trace mechanism and has a 4859much 4860larger code and data size. 4861 4862 Previous Release: 4863 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 4864 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 4865 Current Release: 4866 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 4867 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 4868 4869 48702) iASL Compiler/Disassembler and Tools: 4871 4872iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 4873of 48740. Jung-uk Kim. 4875 4876Debugger: Enhanced the "tables" command to emit additional information 4877about 4878the current set of ACPI tables, including the owner ID and flags decode. 4879 4880Debugger: Reimplemented the "unload" command to use the new 4881AcpiUnloadParentTable external interface. This command was disable 4882previously 4883due to need for an unload interface. 4884 4885AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 4886option 4887will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 4888 4889---------------------------------------- 489020 June 2012. Summary of changes for version 20120620: 4891 4892 48931) ACPICA Kernel-resident Subsystem: 4894 4895Implemented support to expand the "implicit notify" feature to allow 4896multiple 4897devices to be notified by a single GPE. This feature automatically 4898generates a 4899runtime device notification in the absence of a BIOS-provided GPE control 4900method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 4901notify is 4902provided by ACPICA for Windows compatibility, and is a workaround for 4903BIOS 4904AML 4905code errors. See the description of the AcpiSetupGpeForWake interface in 4906the 4907APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 4908 4909Changed some comments and internal function names to simplify and ensure 4910correctness of the Linux code translation. No functional changes. 4911 4912Example Code and Data Size: These are the sizes for the OS-independent 4913acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4914debug 4915version of the code includes the debug output trace mechanism and has a 4916much 4917larger code and data size. 4918 4919 Previous Release: 4920 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 4921 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 4922 Current Release: 4923 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 4924 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 4925 4926 49272) iASL Compiler/Disassembler and Tools: 4928 4929Disassembler: Added support to emit short, commented descriptions for the 4930ACPI 4931predefined names in order to improve the readability of the disassembled 4932output. ACPICA BZ 959. Changes include: 4933 1) Emit descriptions for all standard predefined names (_INI, _STA, 4934_PRW, 4935etc.) 4936 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 4937 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 4938etc.) 4939 4940AcpiSrc: Fixed several long-standing Linux code translation issues. 4941Argument 4942descriptions in function headers are now translated properly to lower 4943case 4944and 4945underscores. ACPICA BZ 961. Also fixes translation problems such as 4946these: 4947(old -> new) 4948 i_aSL -> iASL 4949 00-7_f -> 00-7F 4950 16_k -> 16K 4951 local_fADT -> local_FADT 4952 execute_oSI -> execute_OSI 4953 4954iASL: Fixed a problem where null bytes were inadvertently emitted into 4955some 4956listing files. 4957 4958iASL: Added the existing debug options to the standard help screen. There 4959are 4960no longer two different help screens. ACPICA BZ 957. 4961 4962AcpiHelp: Fixed some typos in the various predefined name descriptions. 4963Also 4964expand some of the descriptions where appropriate. 4965 4966iASL: Fixed the -ot option (display compile times/statistics). Was not 4967working 4968properly for standard output; only worked for the debug file case. 4969 4970---------------------------------------- 497118 May 2012. Summary of changes for version 20120518: 4972 4973 49741) ACPICA Core Subsystem: 4975 4976Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 4977defined 4978to block until asynchronous events such as notifies and GPEs have 4979completed. 4980Within ACPICA, it is only called before a notify or GPE handler is 4981removed/uninstalled. It also may be useful for the host OS within related 4982drivers such as the Embedded Controller driver. See the ACPICA reference 4983for 4984additional information. ACPICA BZ 868. 4985 4986ACPI Tables: Added a new error message for a possible overflow failure 4987during 4988the conversion of FADT 32-bit legacy register addresses to internal 4989common 499064- 4991bit GAS structure representation. The GAS has a one-byte "bit length" 4992field, 4993thus limiting the register length to 255 bits. ACPICA BZ 953. 4994 4995Example Code and Data Size: These are the sizes for the OS-independent 4996acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4997debug 4998version of the code includes the debug output trace mechanism and has a 4999much 5000larger code and data size. 5001 5002 Previous Release: 5003 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5004 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 5005 Current Release: 5006 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 5007 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 5008 5009 50102) iASL Compiler/Disassembler and Tools: 5011 5012iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 5013macro. 5014This keyword was added late in the ACPI 5.0 release cycle and was not 5015implemented until now. 5016 5017Disassembler: Added support for Operation Region externals. Adds missing 5018support for operation regions that are defined in another table, and 5019referenced locally via a Field or BankField ASL operator. Now generates 5020the 5021correct External statement. 5022 5023Disassembler: Several additional fixes for the External() statement 5024generation 5025related to some ASL operators. Also, order the External() statements 5026alphabetically in the disassembler output. Fixes the External() 5027generation 5028for 5029the Create* field, Alias, and Scope operators: 5030 1) Create* buffer field operators - fix type mismatch warning on 5031disassembly 5032 2) Alias - implement missing External support 5033 3) Scope - fix to make sure all necessary externals are emitted. 5034 5035iASL: Improved pathname support. For include files, merge the prefix 5036pathname 5037with the file pathname and eliminate unnecessary components. Convert 5038backslashes in all pathnames to forward slashes, for readability. Include 5039file 5040pathname changes affect both #include and Include() type operators. 5041 5042iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 5043end 5044of a valid line by inserting a newline and then returning the EOF during 5045the 5046next call to GetNextLine. Prevents the line from being ignored due to EOF 5047condition. 5048 5049iASL: Implemented some changes to enhance the IDE support (-vi option.) 5050Error 5051and Warning messages are now correctly recognized for both the source 5052code 5053browser and the global error and warning counts. 5054 5055---------------------------------------- 505620 April 2012. Summary of changes for version 20120420: 5057 5058 50591) ACPICA Core Subsystem: 5060 5061Implemented support for multiple notify handlers. This change adds 5062support 5063to 5064allow multiple system and device notify handlers on Device, Thermal Zone, 5065and 5066Processor objects. This can simplify the host OS notification 5067implementation. 5068Also re-worked and restructured the entire notify support code to 5069simplify 5070handler installation, handler removal, notify event queuing, and notify 5071dispatch to handler(s). Note: there can still only be two global notify 5072handlers - one for system notifies and one for device notifies. There are 5073no 5074changes to the existing handler install/remove interfaces. Lin Ming, Bob 5075Moore, Rafael Wysocki. 5076 5077Fixed a regression in the package repair code where the object reference 5078count was calculated incorrectly. Regression was introduced in the commit 5079"Support to add Package wrappers". 5080 5081Fixed a couple possible memory leaks in the AML parser, in the error 5082recovery 5083path. Jesper Juhl, Lin Ming. 5084 5085Example Code and Data Size: These are the sizes for the OS-independent 5086acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5087debug version of the code includes the debug output trace mechanism and 5088has a 5089much larger code and data size. 5090 5091 Previous Release: 5092 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5093 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5094 Current Release: 5095 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5096 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 5097 5098 50992) iASL Compiler/Disassembler and Tools: 5100 5101iASL: Fixed a problem with the resource descriptor support where the 5102length 5103of the StartDependentFn and StartDependentFnNoPrio descriptors were not 5104included in cumulative descriptor offset, resulting in incorrect values 5105for 5106resource tags within resource descriptors appearing after a 5107StartDependent* 5108descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 5109 5110iASL and Preprocessor: Implemented full support for the #line directive 5111to 5112correctly track original source file line numbers through the .i 5113preprocessor 5114output file - for error and warning messages. 5115 5116iASL: Expand the allowable byte constants for address space IDs. 5117Previously, 5118the allowable range was 0x80-0xFF (user-defined spaces), now the range is 51190x0A-0xFF to allow for custom and new IDs without changing the compiler. 5120 5121iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 5122 5123iASL: Add option to completely disable the preprocessor (-Pn). 5124 5125iASL: Now emit all error/warning messages to standard error (stderr) by 5126default (instead of the previous stdout). 5127 5128ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 5129Update 5130for resource descriptor offset fix above. Update/cleanup error output 5131routines. Enable and send iASL errors/warnings to an error logfile 5132(error.txt). Send all other iASL output to a logfile (compiler.txt). 5133Fixed 5134several extraneous "unrecognized operator" messages. 5135 5136---------------------------------------- 513720 March 2012. Summary of changes for version 20120320: 5138 5139 51401) ACPICA Core Subsystem: 5141 5142Enhanced the sleep/wake interfaces to optionally execute the _GTS method 5143(Going To Sleep) and the _BFS method (Back From Sleep). Windows 5144apparently 5145does not execute these methods, and therefore these methods are often 5146untested. It has been seen on some systems where the execution of these 5147methods causes errors and also prevents the machine from entering S5. It 5148is 5149therefore suggested that host operating systems do not execute these 5150methods 5151by default. In the future, perhaps these methods can be optionally 5152executed 5153based on the age of the system and/or what is the newest version of 5154Windows 5155that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 5156and 5157AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 5158Ming. 5159 5160Fixed a problem where the length of the local/common FADT was set too 5161early. 5162The local FADT table length cannot be set to the common length until the 5163original length has been examined. There is code that checks the table 5164length 5165and sets various fields appropriately. This can affect older machines 5166with 5167early FADT versions. For example, this can cause inadvertent writes to 5168the 5169CST_CNT register. Julian Anastasov. 5170 5171Fixed a mapping issue related to a physical table override. Use the 5172deferred 5173mapping mechanism for tables loaded via the physical override OSL 5174interface. 5175This allows for early mapping before the virtual memory manager is 5176available. 5177Thomas Renninger, Bob Moore. 5178 5179Enhanced the automatic return-object repair code: Repair a common problem 5180with 5181predefined methods that are defined to return a variable-length Package 5182of 5183sub-objects. If there is only one sub-object, some BIOS ASL code 5184mistakenly 5185simply returns the single object instead of a Package with one sub- 5186object. 5187This new support will repair this error by wrapping a Package object 5188around 5189the original object, creating the correct and expected Package with one 5190sub- 5191object. Names that can be repaired in this manner include: _ALR, _CSD, 5192_HPX, 5193_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 5194939. 5195 5196Changed the exception code returned for invalid ACPI paths passed as 5197parameters to external interfaces such as AcpiEvaluateObject. Was 5198AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 5199 5200Example Code and Data Size: These are the sizes for the OS-independent 5201acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5202debug 5203version of the code includes the debug output trace mechanism and has a 5204much 5205larger code and data size. 5206 5207 Previous Release: 5208 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 5209 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5210 Current Release: 5211 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5212 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5213 5214 52152) iASL Compiler/Disassembler and Tools: 5216 5217iASL: Added the infrastructure and initial implementation of a integrated 5218C- 5219like preprocessor. This will simplify BIOS development process by 5220eliminating 5221the need for a separate preprocessing step during builds. On Windows, it 5222also 5223eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 5224features including full #define() macro support are still under 5225development. 5226These preprocessor directives are supported: 5227 #define 5228 #elif 5229 #else 5230 #endif 5231 #error 5232 #if 5233 #ifdef 5234 #ifndef 5235 #include 5236 #pragma message 5237 #undef 5238 #warning 5239In addition, these new command line options are supported: 5240 -D <symbol> Define symbol for preprocessor use 5241 -li Create preprocessed output file (*.i) 5242 -P Preprocess only and create preprocessor output file (*.i) 5243 5244Table Compiler: Fixed a problem where the equals operator within an 5245expression 5246did not work properly. 5247 5248Updated iASL to use the current versions of Bison/Flex. Updated the 5249Windows 5250project file to invoke these tools from the standard location. ACPICA BZ 5251904. 5252Versions supported: 5253 Flex for Windows: V2.5.4 5254 Bison for Windows: V2.4.1 5255 5256---------------------------------------- 525715 February 2012. Summary of changes for version 20120215: 5258 5259 52601) ACPICA Core Subsystem: 5261 5262There have been some major changes to the sleep/wake support code, as 5263described below (a - e). 5264 5265a) The AcpiLeaveSleepState has been split into two interfaces, similar to 5266AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 5267AcpiLeaveSleepStatePrep. This allows the host to perform actions between 5268the 5269time the _BFS method is called and the _WAK method is called. NOTE: all 5270hosts 5271must update their wake/resume code or else sleep/wake will not work 5272properly. 5273Rafael Wysocki. 5274 5275b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 5276_WAK 5277method. Some machines require that the GPEs are enabled before the _WAK 5278method 5279is executed. Thomas Renninger. 5280 5281c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 5282bit. 5283Some BIOS code assumes that WAK_STS will be cleared on resume and use it 5284to 5285determine whether the system is rebooting or resuming. Matthew Garrett. 5286 5287d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 5288Sleep) to 5289match the ACPI specification requirement. Rafael Wysocki. 5290 5291e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 5292registers within the V5 FADT. This support adds two new files: 5293hardware/hwesleep.c implements the support for the new registers. Moved 5294all 5295sleep/wake external interfaces to hardware/hwxfsleep.c. 5296 5297 5298Added a new OSL interface for ACPI table overrides, 5299AcpiOsPhysicalTableOverride. This interface allows the host to override a 5300table via a physical address, instead of the logical address required by 5301AcpiOsTableOverride. This simplifies the host implementation. Initial 5302implementation by Thomas Renninger. The ACPICA implementation creates a 5303single 5304shared function for table overrides that attempts both a logical and a 5305physical override. 5306 5307Expanded the OSL memory read/write interfaces to 64-bit data 5308(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 5309transfer support for GAS register structures passed to AcpiRead and 5310AcpiWrite. 5311 5312Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 5313custom 5314build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 5315model. 5316See the ACPICA reference for details. ACPICA BZ 942. This option removes 5317about 531810% of the code and 5% of the static data, and the following hardware 5319ACPI 5320features become unavailable: 5321 PM Event and Control registers 5322 SCI interrupt (and handler) 5323 Fixed Events 5324 General Purpose Events (GPEs) 5325 Global Lock 5326 ACPI PM timer 5327 FACS table (Waking vectors and Global Lock) 5328 5329Updated the unix tarball directory structure to match the ACPICA git 5330source 5331tree. This ensures that the generic unix makefiles work properly (in 5332generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 5333867. 5334 5335Updated the return value of the _REV predefined method to integer value 5 5336to 5337reflect ACPI 5.0 support. 5338 5339Moved the external ACPI PM timer interface prototypes to the public 5340acpixf.h 5341file where they belong. 5342 5343Example Code and Data Size: These are the sizes for the OS-independent 5344acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5345debug 5346version of the code includes the debug output trace mechanism and has a 5347much 5348larger code and data size. 5349 5350 Previous Release: 5351 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 5352 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 5353 Current Release: 5354 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 5355 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5356 5357 53582) iASL Compiler/Disassembler and Tools: 5359 5360Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 5361descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 5362incorrectly displayed. 5363 5364AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 5365specification. 5366 5367---------------------------------------- 536811 January 2012. Summary of changes for version 20120111: 5369 5370 53711) ACPICA Core Subsystem: 5372 5373Implemented a new mechanism to allow host device drivers to check for 5374address 5375range conflicts with ACPI Operation Regions. Both SystemMemory and 5376SystemIO 5377address spaces are supported. A new external interface, 5378AcpiCheckAddressRange, 5379allows drivers to check an address range against the ACPI namespace. See 5380the 5381ACPICA reference for additional details. Adds one new file, 5382utilities/utaddress.c. Lin Ming, Bob Moore. 5383 5384Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 5385Control 5386and 5387Status registers, update the ACPI 5.0 flags, and update internal data 5388structures to handle an FADT larger than 256 bytes. The size of the ACPI 53895.0 5390FADT is 268 bytes. 5391 5392Updated all ACPICA copyrights and signons to 2012. Added the 2012 5393copyright to 5394all module headers and signons, including the standard Linux header. This 5395affects virtually every file in the ACPICA core subsystem, iASL compiler, 5396and 5397all ACPICA utilities. 5398 5399Example Code and Data Size: These are the sizes for the OS-independent 5400acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5401debug 5402version of the code includes the debug output trace mechanism and has a 5403much 5404larger code and data size. 5405 5406 Previous Release: 5407 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 5408 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 5409 Current Release: 5410 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 5411 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 5412 5413 54142) iASL Compiler/Disassembler and Tools: 5415 5416Disassembler: fixed a problem with the automatic resource tag generation 5417support. Fixes a problem where the resource tags are inadvertently not 5418constructed if the table being disassembled contains external references 5419to 5420control methods. Moved the actual construction of the tags to after the 5421final 5422namespace is constructed (after 2nd parse is invoked due to external 5423control 5424method references.) ACPICA BZ 941. 5425 5426Table Compiler: Make all "generic" operators caseless. These are the 5427operators 5428like UINT8, String, etc. Making these caseless improves ease-of-use. 5429ACPICA BZ 5430934. 5431 5432---------------------------------------- 543323 November 2011. Summary of changes for version 20111123: 5434 54350) ACPI 5.0 Support: 5436 5437This release contains full support for the ACPI 5.0 specification, as 5438summarized below. 5439 5440Reduced Hardware Support: 5441------------------------- 5442 5443This support allows for ACPI systems without the usual ACPI hardware. 5444This 5445support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 5446will 5447not attempt to initialize or use any of the usual ACPI hardware. Note, 5448when 5449this flag is set, all of the following ACPI hardware is assumed to be not 5450present and is not initialized or accessed: 5451 5452 General Purpose Events (GPEs) 5453 Fixed Events (PM1a/PM1b and PM Control) 5454 Power Management Timer and Console Buttons (power/sleep) 5455 Real-time Clock Alarm 5456 Global Lock 5457 System Control Interrupt (SCI) 5458 The FACS is assumed to be non-existent 5459 5460ACPI Tables: 5461------------ 5462 5463All new tables and updates to existing tables are fully supported in the 5464ACPICA headers (for use by device drivers), the disassembler, and the 5465iASL 5466Data Table Compiler. ACPI 5.0 defines these new tables: 5467 5468 BGRT /* Boot Graphics Resource Table */ 5469 DRTM /* Dynamic Root of Trust for Measurement table */ 5470 FPDT /* Firmware Performance Data Table */ 5471 GTDT /* Generic Timer Description Table */ 5472 MPST /* Memory Power State Table */ 5473 PCCT /* Platform Communications Channel Table */ 5474 PMTT /* Platform Memory Topology Table */ 5475 RASF /* RAS Feature table */ 5476 5477Operation Regions/SpaceIDs: 5478--------------------------- 5479 5480All new operation regions are fully supported by the iASL compiler, the 5481disassembler, and the ACPICA runtime code (for dispatch to region 5482handlers.) 5483The new operation region Space IDs are: 5484 5485 GeneralPurposeIo 5486 GenericSerialBus 5487 5488Resource Descriptors: 5489--------------------- 5490 5491All new ASL resource descriptors are fully supported by the iASL 5492compiler, 5493the 5494ASL/AML disassembler, and the ACPICA runtime Resource Manager code 5495(including 5496all new predefined resource tags). New descriptors are: 5497 5498 FixedDma 5499 GpioIo 5500 GpioInt 5501 I2cSerialBus 5502 SpiSerialBus 5503 UartSerialBus 5504 5505ASL/AML Operators, New and Modified: 5506------------------------------------ 5507 5508One new operator is added, the Connection operator, which is used to 5509associate 5510a GeneralPurposeIo or GenericSerialBus resource descriptor with 5511individual 5512field objects within an operation region. Several new protocols are 5513associated 5514with the AccessAs operator. All are fully supported by the iASL compiler, 5515disassembler, and runtime ACPICA AML interpreter: 5516 5517 Connection // Declare Field Connection 5518attributes 5519 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 5520 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 5521Protocol 5522 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 5523 RawDataBuffer // Data type for Vendor Data 5524fields 5525 5526Predefined ASL/AML Objects: 5527--------------------------- 5528 5529All new predefined objects/control-methods are supported by the iASL 5530compiler 5531and the ACPICA runtime validation/repair (arguments and return values.) 5532New 5533predefined names include the following: 5534 5535Standard Predefined Names (Objects or Control Methods): 5536 _AEI, _CLS, _CPC, _CWS, _DEP, 5537 _DLM, _EVT, _GCP, _CRT, _GWS, 5538 _HRV, _PRE, _PSE, _SRT, _SUB. 5539 5540Resource Tags (Names used to access individual fields within resource 5541descriptors): 5542 _DBT, _DPL, _DRS, _END, _FLC, 5543 _IOR, _LIN, _MOD, _PAR, _PHA, 5544 _PIN, _PPI, _POL, _RXL, _SLV, 5545 _SPE, _STB, _TXL, _VEN. 5546 5547ACPICA External Interfaces: 5548--------------------------- 5549 5550Several new interfaces have been defined for use by ACPI-related device 5551drivers and other host OS services: 5552 5553AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 5554to 5555acquire and release AML mutexes that are defined in the DSDT/SSDT tables 5556provided by the BIOS. They are intended to be used in conjunction with 5557the 5558ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 5559mutual exclusion with the AML code/interpreter. 5560 5561AcpiGetEventResources: Returns the (formatted) resource descriptors as 5562defined 5563by the ACPI 5.0 _AEI object (ACPI Event Information). This object 5564provides 5565resource descriptors associated with hardware-reduced platform events, 5566similar 5567to the AcpiGetCurrentResources interface. 5568 5569Operation Region Handlers: For General Purpose IO and Generic Serial Bus 5570operation regions, information about the Connection() object and any 5571optional 5572length information is passed to the region handler within the Context 5573parameter. 5574 5575AcpiBufferToResource: This interface converts a raw AML buffer containing 5576a 5577resource template or resource descriptor to the ACPI_RESOURCE internal 5578format 5579suitable for use by device drivers. Can be used by an operation region 5580handler 5581to convert the Connection() buffer object into a ACPI_RESOURCE. 5582 5583Miscellaneous/Tools/TestSuites: 5584------------------------------- 5585 5586Support for extended _HID names (Four alpha characters instead of three). 5587Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 5588Support for ACPI 5.0 features in the ASLTS test suite. 5589Fully updated documentation (ACPICA and iASL reference documents.) 5590 5591ACPI Table Definition Language: 5592------------------------------- 5593 5594Support for this language was implemented and released as a subsystem of 5595the 5596iASL compiler in 2010. (See the iASL compiler User Guide.) 5597 5598 5599Non-ACPI 5.0 changes for this release: 5600-------------------------------------- 5601 56021) ACPICA Core Subsystem: 5603 5604Fix a problem with operation region declarations where a failure can 5605occur 5606if 5607the region name and an argument that evaluates to an object (such as the 5608region address) are in different namespace scopes. Lin Ming, ACPICA BZ 5609937. 5610 5611Do not abort an ACPI table load if an invalid space ID is found within. 5612This 5613will be caught later if the offending method is executed. ACPICA BZ 925. 5614 5615Fixed an issue with the FFixedHW space ID where the ID was not always 5616recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 5617 5618Fixed a problem with the 32-bit generation of the unix-specific OSL 5619(osunixxf.c). Lin Ming, ACPICA BZ 936. 5620 5621Several changes made to enable generation with the GCC 4.6 compiler. 5622ACPICA BZ 5623935. 5624 5625New error messages: Unsupported I/O requests (not 8/16/32 bit), and 5626Index/Bank 5627field registers out-of-range. 5628 56292) iASL Compiler/Disassembler and Tools: 5630 5631iASL: Implemented the __PATH__ operator, which returns the full pathname 5632of 5633the current source file. 5634 5635AcpiHelp: Automatically display expanded keyword information for all ASL 5636operators. 5637 5638Debugger: Add "Template" command to disassemble/dump resource template 5639buffers. 5640 5641Added a new master script to generate and execute the ASLTS test suite. 5642Automatically handles 32- and 64-bit generation. See tests/aslts.sh 5643 5644iASL: Fix problem with listing generation during processing of the 5645Switch() 5646operator where AML listing was disabled until the entire Switch block was 5647completed. 5648 5649iASL: Improve support for semicolon statement terminators. Fix "invalid 5650character" message for some cases when the semicolon is used. Semicolons 5651are 5652now allowed after every <Term> grammar element. ACPICA BZ 927. 5653 5654iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 5655923. 5656 5657Disassembler: Fix problem with disassembly of the DataTableRegion 5658operator 5659where an inadvertent "Unhandled deferred opcode" message could be 5660generated. 5661 56623) Example Code and Data Size 5663 5664These are the sizes for the OS-independent acpica.lib produced by the 5665Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 5666includes the debug output trace mechanism and has a much larger code and 5667data 5668size. 5669 5670 Previous Release: 5671 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5672 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5673 Current Release: 5674 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 5675 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 5676 5677---------------------------------------- 567822 September 2011. Summary of changes for version 20110922: 5679 56800) ACPI 5.0 News: 5681 5682Support for ACPI 5.0 in ACPICA has been underway for several months and 5683will 5684be released at the same time that ACPI 5.0 is officially released. 5685 5686The ACPI 5.0 specification is on track for release in the next few 5687months. 5688 56891) ACPICA Core Subsystem: 5690 5691Fixed a problem where the maximum sleep time for the Sleep() operator was 5692intended to be limited to two seconds, but was inadvertently limited to 569320 5694seconds instead. 5695 5696Linux and Unix makefiles: Added header file dependencies to ensure 5697correct 5698generation of ACPICA core code and utilities. Also simplified the 5699makefiles 5700considerably through the use of the vpath variable to specify search 5701paths. 5702ACPICA BZ 924. 5703 57042) iASL Compiler/Disassembler and Tools: 5705 5706iASL: Implemented support to check the access length for all fields 5707created to 5708access named Resource Descriptor fields. For example, if a resource field 5709is 5710defined to be two bits, a warning is issued if a CreateXxxxField() is 5711used 5712with an incorrect bit length. This is implemented for all current 5713resource 5714descriptor names. ACPICA BZ 930. 5715 5716Disassembler: Fixed a byte ordering problem with the output of 24-bit and 571756- 5718bit integers. 5719 5720iASL: Fixed a couple of issues associated with variable-length package 5721objects. 1) properly handle constants like One, Ones, Zero -- do not make 5722a 5723VAR_PACKAGE when these are used as a package length. 2) Allow the 5724VAR_PACKAGE 5725opcode (in addition to PACKAGE) when validating object types for 5726predefined 5727names. 5728 5729iASL: Emit statistics for all output files (instead of just the ASL input 5730and 5731AML output). Includes listings, hex files, etc. 5732 5733iASL: Added -G option to the table compiler to allow the compilation of 5734custom 5735ACPI tables. The only part of a table that is required is the standard 573636- 5737byte 5738ACPI header. 5739 5740AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 5741headers), 5742which also adds correct 64-bit support. Also, now all output filenames 5743are 5744completely lower case. 5745 5746AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 5747loading table files. A warning is issued for any such tables. The only 5748exception is an FADT. This also fixes a possible fault when attempting to 5749load 5750non-AML tables. ACPICA BZ 932. 5751 5752AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 5753a 5754missing table terminator could cause a fault when using the -p option. 5755 5756AcpiSrc: Fixed a possible divide-by-zero fault when generating file 5757statistics. 5758 57593) Example Code and Data Size 5760 5761These are the sizes for the OS-independent acpica.lib produced by the 5762Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 5763includes the debug output trace mechanism and has a much larger code and 5764data 5765size. 5766 5767 Previous Release (VC 9.0): 5768 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5769 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5770 Current Release (VC 9.0): 5771 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5772 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5773 5774 5775---------------------------------------- 577623 June 2011. Summary of changes for version 20110623: 5777 57781) ACPI CA Core Subsystem: 5779 5780Updated the predefined name repair mechanism to not attempt repair of a 5781_TSS 5782return object if a _PSS object is present. We can only sort the _TSS 5783return 5784package if there is no _PSS within the same scope. This is because if 5785_PSS 5786is 5787present, the ACPI specification dictates that the _TSS Power Dissipation 5788field 5789is to be ignored, and therefore some BIOSs leave garbage values in the 5790_TSS 5791Power field(s). In this case, it is best to just return the _TSS package 5792as- 5793is. Reported by, and fixed with assistance from Fenghua Yu. 5794 5795Added an option to globally disable the control method return value 5796validation 5797and repair. This runtime option can be used to disable return value 5798repair 5799if 5800this is causing a problem on a particular machine. Also added an option 5801to 5802AcpiExec (-dr) to set this disable flag. 5803 5804All makefiles and project files: Major changes to improve generation of 5805ACPICA 5806tools. ACPICA BZ 912: 5807 Reduce default optimization levels to improve compatibility 5808 For Linux, add strict-aliasing=0 for gcc 4 5809 Cleanup and simplify use of command line defines 5810 Cleanup multithread library support 5811 Improve usage messages 5812 5813Linux-specific header: update handling of THREAD_ID and pthread. For the 581432- 5815bit case, improve casting to eliminate possible warnings, especially with 5816the 5817acpica tools. 5818 5819Example Code and Data Size: These are the sizes for the OS-independent 5820acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5821debug 5822version of the code includes the debug output trace mechanism and has a 5823much 5824larger code and data size. 5825 5826 Previous Release (VC 9.0): 5827 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 5828 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5829 Current Release (VC 9.0): 5830 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5831 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5832 58332) iASL Compiler/Disassembler and Tools: 5834 5835With this release, a new utility named "acpihelp" has been added to the 5836ACPICA 5837package. This utility summarizes the ACPI specification chapters for the 5838ASL 5839and AML languages. It generates under Linux/Unix as well as Windows, and 5840provides the following functionality: 5841 Find/display ASL operator(s) -- with description and syntax. 5842 Find/display ASL keyword(s) -- with exact spelling and descriptions. 5843 Find/display ACPI predefined name(s) -- with description, number 5844 of arguments, and the return value data type. 5845 Find/display AML opcode name(s) -- with opcode, arguments, and 5846grammar. 5847 Decode/display AML opcode -- with opcode name, arguments, and 5848grammar. 5849 5850Service Layers: Make multi-thread support configurable. Conditionally 5851compile 5852the multi-thread support so that threading libraries will not be linked 5853if 5854not 5855necessary. The only tool that requires multi-thread support is AcpiExec. 5856 5857iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 5858of 5859Bison appear to want the interface to yyerror to be a const char * (or at 5860least this is a problem when generating iASL on some systems.) ACPICA BZ 5861923 5862Pierre Lejeune. 5863 5864Tools: Fix for systems where O_BINARY is not defined. Only used for 5865Windows 5866versions of the tools. 5867 5868---------------------------------------- 586927 May 2011. Summary of changes for version 20110527: 5870 58711) ACPI CA Core Subsystem: 5872 5873ASL Load() operator: Reinstate most restrictions on the incoming ACPI 5874table 5875signature. Now, only allow SSDT, OEMx, and a null signature. History: 5876 1) Originally, we checked the table signature for "SSDT" or "PSDT". 5877 (PSDT is now obsolete.) 5878 2) We added support for OEMx tables, signature "OEM" plus a fourth 5879 "don't care" character. 5880 3) Valid tables were encountered with a null signature, so we just 5881 gave up on validating the signature, (05/2008). 5882 4) We encountered non-AML tables such as the MADT, which caused 5883 interpreter errors and kernel faults. So now, we once again allow 5884 only SSDT, OEMx, and now, also a null signature. (05/2011). 5885 5886Added the missing _TDL predefined name to the global name list in order 5887to 5888enable validation. Affects both the core ACPICA code and the iASL 5889compiler. 5890 5891Example Code and Data Size: These are the sizes for the OS-independent 5892acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5893debug 5894version of the code includes the debug output trace mechanism and has a 5895much 5896larger code and data size. 5897 5898 Previous Release (VC 9.0): 5899 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 5900 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 5901 Current Release (VC 9.0): 5902 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 5903 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5904 59052) iASL Compiler/Disassembler and Tools: 5906 5907Debugger/AcpiExec: Implemented support for "complex" method arguments on 5908the 5909debugger command line. This adds support beyond simple integers -- 5910including 5911Strings, Buffers, and Packages. Includes support for nested packages. 5912Increased the default command line buffer size to accommodate these 5913arguments. 5914See the ACPICA reference for details and syntax. ACPICA BZ 917. 5915 5916Debugger/AcpiExec: Implemented support for "default" method arguments for 5917the 5918Execute/Debug command. Now, the debugger will always invoke a control 5919method 5920with the required number of arguments -- even if the command line 5921specifies 5922none or insufficient arguments. It uses default integer values for any 5923missing 5924arguments. Also fixes a bug where only six method arguments maximum were 5925supported instead of the required seven. 5926 5927Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 5928and 5929also return status in order to prevent buffer overruns. See the ACPICA 5930reference for details and syntax. ACPICA BZ 921 5931 5932iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 5933makefiles to simplify support for the two different but similar parser 5934generators, bison and yacc. 5935 5936Updated the generic unix makefile for gcc 4. The default gcc version is 5937now 5938expected to be 4 or greater, since options specific to gcc 4 are used. 5939 5940---------------------------------------- 594113 April 2011. Summary of changes for version 20110413: 5942 59431) ACPI CA Core Subsystem: 5944 5945Implemented support to execute a so-called "orphan" _REG method under the 5946EC 5947device. This change will force the execution of a _REG method underneath 5948the 5949EC 5950device even if there is no corresponding operation region of type 5951EmbeddedControl. Fixes a problem seen on some machines and apparently is 5952compatible with Windows behavior. ACPICA BZ 875. 5953 5954Added more predefined methods that are eligible for automatic NULL 5955package 5956element removal. This change adds another group of predefined names to 5957the 5958list 5959of names that can be repaired by having NULL package elements dynamically 5960removed. This group are those methods that return a single variable- 5961length 5962package containing simple data types such as integers, buffers, strings. 5963This 5964includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 5965_PSL, 5966_Sx, 5967and _TZD. ACPICA BZ 914. 5968 5969Split and segregated all internal global lock functions to a new file, 5970evglock.c. 5971 5972Updated internal address SpaceID for DataTable regions. Moved this 5973internal 5974space 5975id in preparation for ACPI 5.0 changes that will include some new space 5976IDs. 5977This 5978change should not affect user/host code. 5979 5980Example Code and Data Size: These are the sizes for the OS-independent 5981acpica.lib 5982produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 5983version of 5984the code includes the debug output trace mechanism and has a much larger 5985code 5986and 5987data size. 5988 5989 Previous Release (VC 9.0): 5990 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 5991 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 5992 Current Release (VC 9.0): 5993 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 5994 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 5995 59962) iASL Compiler/Disassembler and Tools: 5997 5998iASL/DTC: Major update for new grammar features. Allow generic data types 5999in 6000custom ACPI tables. Field names are now optional. Any line can be split 6001to 6002multiple lines using the continuation char (\). Large buffers now use 6003line- 6004continuation character(s) and no colon on the continuation lines. See the 6005grammar 6006update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 6007Moore. 6008 6009iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 6010statements. 6011Since the parser stuffs a "zero" as the return value for these statements 6012(due 6013to 6014the underlying AML grammar), they were seen as "return with value" by the 6015iASL 6016semantic checking. They are now seen correctly as "null" return 6017statements. 6018 6019iASL: Check if a_REG declaration has a corresponding Operation Region. 6020Adds a 6021check for each _REG to ensure that there is in fact a corresponding 6022operation 6023region declaration in the same scope. If not, the _REG method is not very 6024useful 6025since it probably won't be executed. ACPICA BZ 915. 6026 6027iASL/DTC: Finish support for expression evaluation. Added a new 6028expression 6029parser 6030that implements c-style operator precedence and parenthesization. ACPICA 6031bugzilla 6032908. 6033 6034Disassembler/DTC: Remove support for () and <> style comments in data 6035tables. 6036Now 6037that DTC has full expression support, we don't want to have comment 6038strings 6039that 6040start with a parentheses or a less-than symbol. Now, only the standard /* 6041and 6042// 6043comments are supported, as well as the bracket [] comments. 6044 6045AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 6046"unusual" 6047headers in the acpidump file. Update the header validation to support 6048these 6049tables. Problem introduced in previous AcpiXtract version in the change 6050to 6051support "wrong checksum" error messages emitted by acpidump utility. 6052 6053iASL: Add a * option to generate all template files (as a synonym for 6054ALL) 6055as 6056in 6057"iasl -T *" or "iasl -T ALL". 6058 6059iASL/DTC: Do not abort compiler on fatal errors. We do not want to 6060completely 6061abort the compiler on "fatal" errors, simply should abort the current 6062compile. 6063This allows multiple compiles with a single (possibly wildcard) compiler 6064invocation. 6065 6066---------------------------------------- 606716 March 2011. Summary of changes for version 20110316: 6068 60691) ACPI CA Core Subsystem: 6070 6071Fixed a problem caused by a _PRW method appearing at the namespace root 6072scope 6073during the setup of wake GPEs. A fault could occur if a _PRW directly 6074under 6075the 6076root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 6077 6078Implemented support for "spurious" Global Lock interrupts. On some 6079systems, a 6080global lock interrupt can occur without the pending flag being set. Upon 6081a 6082GL 6083interrupt, we now ensure that a thread is actually waiting for the lock 6084before 6085signaling GL availability. Rafael Wysocki, Bob Moore. 6086 6087Example Code and Data Size: These are the sizes for the OS-independent 6088acpica.lib 6089produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 6090version of 6091the code includes the debug output trace mechanism and has a much larger 6092code 6093and 6094data size. 6095 6096 Previous Release (VC 9.0): 6097 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6098 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6099 Current Release (VC 9.0): 6100 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 6101 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 6102 61032) iASL Compiler/Disassembler and Tools: 6104 6105Implemented full support for the "SLIC" ACPI table. Includes support in 6106the 6107header files, disassembler, table compiler, and template generator. Bob 6108Moore, 6109Lin Ming. 6110 6111AcpiXtract: Correctly handle embedded comments and messages from 6112AcpiDump. 6113Apparently some or all versions of acpidump will occasionally emit a 6114comment 6115like 6116"Wrong checksum", etc., into the dump file. This was causing problems for 6117AcpiXtract. ACPICA BZ 905. 6118 6119iASL: Fix the Linux makefile by removing an inadvertent double file 6120inclusion. 6121ACPICA BZ 913. 6122 6123AcpiExec: Update installation of operation region handlers. Install one 6124handler 6125for a user-defined address space. This is used by the ASL test suite 6126(ASLTS). 6127 6128---------------------------------------- 612911 February 2011. Summary of changes for version 20110211: 6130 61311) ACPI CA Core Subsystem: 6132 6133Added a mechanism to defer _REG methods for some early-installed 6134handlers. 6135Most user handlers should be installed before call to 6136AcpiEnableSubsystem. 6137However, Event handlers and region handlers should be installed after 6138AcpiInitializeObjects. Override handlers for the "default" regions should 6139be 6140installed early, however. This change executes all _REG methods for the 6141default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 6142chicken/egg issues between them. ACPICA BZ 848. 6143 6144Implemented an optimization for GPE detection. This optimization will 6145simply 6146ignore GPE registers that contain no enabled GPEs -- there is no need to 6147read the register since this information is available internally. This 6148becomes more important on machines with a large GPE space. ACPICA 6149bugzilla 6150884. Lin Ming. Suggestion from Joe Liu. 6151 6152Removed all use of the highly unreliable FADT revision field. The 6153revision 6154number in the FADT has been found to be completely unreliable and cannot 6155be 6156trusted. Only the actual table length can be used to infer the version. 6157This 6158change updates the ACPICA core and the disassembler so that both no 6159longer 6160even look at the FADT version and instead depend solely upon the FADT 6161length. 6162 6163Fix an unresolved name issue for the no-debug and no-error-message source 6164generation cases. The _AcpiModuleName was left undefined in these cases, 6165but 6166it is actually needed as a parameter to some interfaces. Define 6167_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 6168 6169Split several large files (makefiles and project files updated) 6170 utglobal.c -> utdecode.c 6171 dbcomds.c -> dbmethod.c dbnames.c 6172 dsopcode.c -> dsargs.c dscontrol.c 6173 dsload.c -> dsload2.c 6174 aslanalyze.c -> aslbtypes.c aslwalks.c 6175 6176Example Code and Data Size: These are the sizes for the OS-independent 6177acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6178debug version of the code includes the debug output trace mechanism and 6179has 6180a much larger code and data size. 6181 6182 Previous Release (VC 9.0): 6183 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6184 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6185 Current Release (VC 9.0): 6186 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6187 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6188 61892) iASL Compiler/Disassembler and Tools: 6190 6191iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 6192These are useful C-style macros with the standard definitions. ACPICA 6193bugzilla 898. 6194 6195iASL/DTC: Added support for integer expressions and labels. Support for 6196full 6197expressions for all integer fields in all ACPI tables. Support for labels 6198in 6199"generic" portions of tables such as UEFI. See the iASL reference manual. 6200 6201Debugger: Added a command to display the status of global handlers. The 6202"handlers" command will display op region, fixed event, and miscellaneous 6203global handlers. installation status -- and for op regions, whether 6204default 6205or user-installed handler will be used. 6206 6207iASL: Warn if reserved method incorrectly returns a value. Many 6208predefined 6209names are defined such that they do not return a value. If implemented as 6210a 6211method, issue a warning if such a name explicitly returns a value. ACPICA 6212Bugzilla 855. 6213 6214iASL: Added detection of GPE method name conflicts. Detects a conflict 6215where 6216there are two GPE methods of the form _Lxy and _Exy in the same scope. 6217(For 6218example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 6219 6220iASL/DTC: Fixed a couple input scanner issues with comments and line 6221numbers. Comment remover could get confused and miss a comment ending. 6222Fixed 6223a problem with line counter maintenance. 6224 6225iASL/DTC: Reduced the severity of some errors from fatal to error. There 6226is 6227no need to abort on simple errors within a field definition. 6228 6229Debugger: Simplified the output of the help command. All help output now 6230in 6231a single screen, instead of help subcommands. ACPICA Bugzilla 897. 6232 6233---------------------------------------- 623412 January 2011. Summary of changes for version 20110112: 6235 62361) ACPI CA Core Subsystem: 6237 6238Fixed a race condition between method execution and namespace walks that 6239can 6240possibly cause a fault. The problem was apparently introduced in version 624120100528 as a result of a performance optimization that reduces the 6242number 6243of 6244namespace walks upon method exit by using the delete_namespace_subtree 6245function instead of the delete_namespace_by_owner function used 6246previously. 6247Bug is a missing namespace lock in the delete_namespace_subtree function. 6248dana.myers@oracle.com 6249 6250Fixed several issues and a possible fault with the automatic "serialized" 6251method support. History: This support changes a method to "serialized" on 6252the 6253fly if the method generates an AE_ALREADY_EXISTS error, indicating the 6254possibility that it cannot handle reentrancy. This fix repairs a couple 6255of 6256issues seen in the field, especially on machines with many cores: 6257 6258 1) Delete method children only upon the exit of the last thread, 6259 so as to not delete objects out from under other running threads 6260 (and possibly causing a fault.) 6261 2) Set the "serialized" bit for the method only upon the exit of the 6262 Last thread, so as to not cause deadlock when running threads 6263 attempt to exit. 6264 3) Cleanup the use of the AML "MethodFlags" and internal method flags 6265 so that there is no longer any confusion between the two. 6266 6267 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 6268 6269Debugger: Now lock the namespace for duration of a namespace dump. 6270Prevents 6271issues if the namespace is changing dynamically underneath the debugger. 6272Especially affects temporary namespace nodes, since the debugger displays 6273these also. 6274 6275Updated the ordering of include files. The ACPICA headers should appear 6276before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 6277set 6278any necessary compiler-specific defines, etc. Affects the ACPI-related 6279tools 6280and utilities. 6281 6282Updated all ACPICA copyrights and signons to 2011. Added the 2011 6283copyright 6284to all module headers and signons, including the Linux header. This 6285affects 6286virtually every file in the ACPICA core subsystem, iASL compiler, and all 6287utilities. 6288 6289Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 6290project files for VC++ 6.0 are now obsolete. New project files can be 6291found 6292under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 6293details. 6294 6295Example Code and Data Size: These are the sizes for the OS-independent 6296acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6297debug version of the code includes the debug output trace mechanism and 6298has a 6299much larger code and data size. 6300 6301 Previous Release (VC 6.0): 6302 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 6303 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 6304 Current Release (VC 9.0): 6305 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6306 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6307 63082) iASL Compiler/Disassembler and Tools: 6309 6310iASL: Added generic data types to the Data Table compiler. Add "generic" 6311data 6312types such as UINT32, String, Unicode, etc., to simplify the generation 6313of 6314platform-defined tables such as UEFI. Lin Ming. 6315 6316iASL: Added listing support for the Data Table Compiler. Adds listing 6317support 6318(-l) to display actual binary output for each line of input code. 6319 6320---------------------------------------- 632109 December 2010. Summary of changes for version 20101209: 6322 63231) ACPI CA Core Subsystem: 6324 6325Completed the major overhaul of the GPE support code that was begun in 6326July 63272010. Major features include: removal of _PRW execution in ACPICA (host 6328executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 6329changes to existing interfaces, simplification of GPE handler operation, 6330and 6331a handful of new interfaces: 6332 6333 AcpiUpdateAllGpes 6334 AcpiFinishGpe 6335 AcpiSetupGpeForWake 6336 AcpiSetGpeWakeMask 6337 One new file, evxfgpe.c to consolidate all external GPE interfaces. 6338 6339See the ACPICA Programmer Reference for full details and programming 6340information. See the new section 4.4 "General Purpose Event (GPE) 6341Support" 6342for a full overview, and section 8.7 "ACPI General Purpose Event 6343Management" 6344for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 6345Ming, 6346Bob Moore, Rafael Wysocki. 6347 6348Implemented a new GPE feature for Windows compatibility, the "Implicit 6349Wake 6350GPE Notify". This feature will automatically issue a Notify(2) on a 6351device 6352when a Wake GPE is received if there is no corresponding GPE method or 6353handler. ACPICA BZ 870. 6354 6355Fixed a problem with the Scope() operator during table parse and load 6356phase. 6357During load phase (table load or method execution), the scope operator 6358should 6359not enter the target into the namespace. Instead, it should open a new 6360scope 6361at the target location. Linux BZ 19462, ACPICA BZ 882. 6362 6363Example Code and Data Size: These are the sizes for the OS-independent 6364acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6365debug version of the code includes the debug output trace mechanism and 6366has a 6367much larger code and data size. 6368 6369 Previous Release: 6370 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 6371 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 6372 Current Release: 6373 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6374 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6375 63762) iASL Compiler/Disassembler and Tools: 6377 6378iASL: Relax the alphanumeric restriction on _CID strings. These strings 6379are 6380"bus-specific" per the ACPI specification, and therefore any characters 6381are 6382acceptable. The only checks that can be performed are for a null string 6383and 6384perhaps for a leading asterisk. ACPICA BZ 886. 6385 6386iASL: Fixed a problem where a syntax error that caused a premature EOF 6387condition on the source file emitted a very confusing error message. The 6388premature EOF is now detected correctly. ACPICA BZ 891. 6389 6390Disassembler: Decode the AccessSize within a Generic Address Structure 6391(byte 6392access, word access, etc.) Note, this field does not allow arbitrary bit 6393access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 6394 6395New: AcpiNames utility - Example namespace dump utility. Shows an example 6396of 6397ACPICA configuration for a minimal namespace dump utility. Uses table and 6398namespace managers, but no AML interpreter. Does not add any 6399functionality 6400over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 6401partition and configure ACPICA. ACPICA BZ 883. 6402 6403AML Debugger: Increased the debugger buffer size for method return 6404objects. 6405Was 4K, increased to 16K. Also enhanced error messages for debugger 6406method 6407execution, including the buffer overflow case. 6408 6409---------------------------------------- 641013 October 2010. Summary of changes for version 20101013: 6411 64121) ACPI CA Core Subsystem: 6413 6414Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 6415now 6416clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 6417HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 6418 6419Changed the type of the predefined namespace object _TZ from ThermalZone 6420to 6421Device. This was found to be confusing to the host software that 6422processes 6423the various thermal zones, since _TZ is not really a ThermalZone. 6424However, 6425a 6426Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 6427Zhang. 6428 6429Added Windows Vista SP2 to the list of supported _OSI strings. The actual 6430string is "Windows 2006 SP2". 6431 6432Eliminated duplicate code in AcpiUtExecute* functions. Now that the 6433nsrepair 6434code automatically repairs _HID-related strings, this type of code is no 6435longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 6436878. 6437 6438Example Code and Data Size: These are the sizes for the OS-independent 6439acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6440debug version of the code includes the debug output trace mechanism and 6441has a 6442much larger code and data size. 6443 6444 Previous Release: 6445 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6446 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6447 Current Release: 6448 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6449 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6450 64512) iASL Compiler/Disassembler and Tools: 6452 6453iASL: Implemented additional compile-time validation for _HID strings. 6454The 6455non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 6456length 6457of 6458the string must be exactly seven or eight characters. For both _HID and 6459_CID 6460strings, all characters must be alphanumeric. ACPICA BZ 874. 6461 6462iASL: Allow certain "null" resource descriptors. Some BIOS code creates 6463descriptors that are mostly or all zeros, with the expectation that they 6464will 6465be filled in at runtime. iASL now allows this as long as there is a 6466"resource 6467tag" (name) associated with the descriptor, which gives the ASL a handle 6468needed to modify the descriptor. ACPICA BZ 873. 6469 6470Added single-thread support to the generic Unix application OSL. 6471Primarily 6472for iASL support, this change removes the use of semaphores in the 6473single- 6474threaded ACPICA tools/applications - increasing performance. The 6475_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 6476option. ACPICA BZ 879. 6477 6478AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 6479support 6480for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 6481 6482iASL: Moved all compiler messages to a new file, aslmessages.h. 6483 6484---------------------------------------- 648515 September 2010. Summary of changes for version 20100915: 6486 64871) ACPI CA Core Subsystem: 6488 6489Removed the AcpiOsDerivePciId OSL interface. The various host 6490implementations 6491of this function were not OS-dependent and are now obsolete and can be 6492removed from all host OSLs. This function has been replaced by 6493AcpiHwDerivePciId, which is now part of the ACPICA core code. 6494AcpiHwDerivePciId has been implemented without recursion. Adds one new 6495module, hwpci.c. ACPICA BZ 857. 6496 6497Implemented a dynamic repair for _HID and _CID strings. The following 6498problems are now repaired at runtime: 1) Remove a leading asterisk in the 6499string, and 2) the entire string is uppercased. Both repairs are in 6500accordance with the ACPI specification and will simplify host driver 6501code. 6502ACPICA BZ 871. 6503 6504The ACPI_THREAD_ID type is no longer configurable, internally it is now 6505always UINT64. This simplifies the ACPICA code, especially any printf 6506output. 6507UINT64 is the only common data type for all thread_id types across all 6508operating systems. It is now up to the host OSL to cast the native 6509thread_id 6510type to UINT64 before returning the value to ACPICA (via 6511AcpiOsGetThreadId). 6512Lin Ming, Bob Moore. 6513 6514Added the ACPI_INLINE type to enhance the ACPICA configuration. The 6515"inline" 6516keyword is not standard across compilers, and this type allows inline to 6517be 6518configured on a per-compiler basis. Lin Ming. 6519 6520Made the system global AcpiGbl_SystemAwakeAndRunning publically 6521available. 6522Added an extern for this boolean in acpixf.h. Some hosts utilize this 6523value 6524during suspend/restore operations. ACPICA BZ 869. 6525 6526All code that implements error/warning messages with the "ACPI:" prefix 6527has 6528been moved to a new module, utxferror.c. 6529 6530The UINT64_OVERLAY was moved to utmath.c, which is the only module where 6531it 6532is used. ACPICA BZ 829. Lin Ming, Bob Moore. 6533 6534Example Code and Data Size: These are the sizes for the OS-independent 6535acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6536debug version of the code includes the debug output trace mechanism and 6537has a 6538much larger code and data size. 6539 6540 Previous Release: 6541 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 6542 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 6543 Current Release: 6544 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6545 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6546 65472) iASL Compiler/Disassembler and Tools: 6548 6549iASL/Disassembler: Write ACPI errors to stderr instead of the output 6550file. 6551This keeps the output files free of random error messages that may 6552originate 6553from within the namespace/interpreter code. Used this opportunity to 6554merge 6555all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 6556866. Lin Ming, Bob Moore. 6557 6558Tools: update some printfs for ansi warnings on size_t. Handle width 6559change 6560of size_t on 32-bit versus 64-bit generations. Lin Ming. 6561 6562---------------------------------------- 656306 August 2010. Summary of changes for version 20100806: 6564 65651) ACPI CA Core Subsystem: 6566 6567Designed and implemented a new host interface to the _OSI support code. 6568This 6569will allow the host to dynamically add or remove multiple _OSI strings, 6570as 6571well as install an optional handler that is called for each _OSI 6572invocation. 6573Also added a new AML debugger command, 'osi' to display and modify the 6574global 6575_OSI string table, and test support in the AcpiExec utility. See the 6576ACPICA 6577reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 6578New Functions: 6579 AcpiInstallInterface - Add an _OSI string. 6580 AcpiRemoveInterface - Delete an _OSI string. 6581 AcpiInstallInterfaceHandler - Install optional _OSI handler. 6582Obsolete Functions: 6583 AcpiOsValidateInterface - no longer used. 6584New Files: 6585 source/components/utilities/utosi.c 6586 6587Re-introduced the support to enable multi-byte transfers for Embedded 6588Controller (EC) operation regions. A reported problem was found to be a 6589bug 6590in the host OS, not in the multi-byte support. Previously, the maximum 6591data 6592size passed to the EC operation region handler was a single byte. There 6593are 6594often EC Fields larger than one byte that need to be transferred, and it 6595is 6596useful for the EC driver to lock these as a single transaction. This 6597change 6598enables single transfers larger than 8 bits. This effectively changes the 6599access to the EC space from ByteAcc to AnyAcc, and will probably require 6600changes to the host OS Embedded Controller driver to enable 16/32/64/256- 6601bit 6602transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 6603 6604Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 6605prototype in acpiosxf.h had the output value pointer as a (void *). 6606It should be a (UINT64 *). This may affect some host OSL code. 6607 6608Fixed a couple problems with the recently modified Linux makefiles for 6609iASL 6610and AcpiExec. These new makefiles place the generated object files in the 6611local directory so that there can be no collisions between the files that 6612are 6613shared between them that are compiled with different options. 6614 6615Example Code and Data Size: These are the sizes for the OS-independent 6616acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6617debug version of the code includes the debug output trace mechanism and 6618has a 6619much larger code and data size. 6620 6621 Previous Release: 6622 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6623 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 6624 Current Release: 6625 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 6626 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 6627 66282) iASL Compiler/Disassembler and Tools: 6629 6630iASL/Disassembler: Added a new option (-da, "disassemble all") to load 6631the 6632namespace from and disassemble an entire group of AML files. Useful for 6633loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 6634and 6635disassembling with one simple command. ACPICA BZ 865. Lin Ming. 6636 6637iASL: Allow multiple invocations of -e option. This change allows 6638multiple 6639uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 6640834. 6641Lin Ming. 6642 6643---------------------------------------- 664402 July 2010. Summary of changes for version 20100702: 6645 66461) ACPI CA Core Subsystem: 6647 6648Implemented several updates to the recently added GPE reference count 6649support. The model for "wake" GPEs is changing to give the host OS 6650complete 6651control of these GPEs. Eventually, the ACPICA core will not execute any 6652_PRW 6653methods, since the host already must execute them. Also, additional 6654changes 6655were made to help ensure that the reference counts are kept in proper 6656synchronization with reality. Rafael J. Wysocki. 6657 66581) Ensure that GPEs are not enabled twice during initialization. 66592) Ensure that GPE enable masks stay in sync with the reference count. 66603) Do not inadvertently enable GPEs when writing GPE registers. 66614) Remove the internal wake reference counter and add new AcpiGpeWakeup 6662interface. This interface will set or clear individual GPEs for wakeup. 66635) Remove GpeType argument from AcpiEnable and AcpiDisable. These 6664interfaces 6665are now used for "runtime" GPEs only. 6666 6667Changed the behavior of the GPE install/remove handler interfaces. The 6668GPE 6669is 6670no longer disabled during this process, as it was found to cause problems 6671on 6672some machines. Rafael J. Wysocki. 6673 6674Reverted a change introduced in version 20100528 to enable Embedded 6675Controller multi-byte transfers. This change was found to cause problems 6676with 6677Index Fields and possibly Bank Fields. It will be reintroduced when these 6678problems have been resolved. 6679 6680Fixed a problem with references to Alias objects within Package Objects. 6681A 6682reference to an Alias within the definition of a Package was not always 6683resolved properly. Aliases to objects like Processors, Thermal zones, 6684etc. 6685were resolved to the actual object instead of a reference to the object 6686as 6687it 6688should be. Package objects are only allowed to contain integer, string, 6689buffer, package, and reference objects. Redhat bugzilla 608648. 6690 6691Example Code and Data Size: These are the sizes for the OS-independent 6692acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6693debug version of the code includes the debug output trace mechanism and 6694has a 6695much larger code and data size. 6696 6697 Previous Release: 6698 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6699 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 6700 Current Release: 6701 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6702 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 6703 67042) iASL Compiler/Disassembler and Tools: 6705 6706iASL: Implemented a new compiler subsystem to allow definition and 6707compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 6708These 6709are called "ACPI Data Tables", and the new compiler is the "Data Table 6710Compiler". This compiler is intended to simplify the existing error-prone 6711process of creating these tables for the BIOS, as well as allowing the 6712disassembly, modification, recompilation, and override of existing ACPI 6713data 6714tables. See the iASL User Guide for detailed information. 6715 6716iASL: Implemented a new Template Generator option in support of the new 6717Data 6718Table Compiler. This option will create examples of all known ACPI tables 6719that can be used as the basis for table development. See the iASL 6720documentation and the -T option. 6721 6722Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 6723Descriptor Table). 6724 6725Updated the Linux makefiles for iASL and AcpiExec to place the generated 6726object files in the local directory so that there can be no collisions 6727between the shared files between them that are generated with different 6728options. 6729 6730Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 6731Use 6732the #define __APPLE__ to enable this support. 6733 6734---------------------------------------- 673528 May 2010. Summary of changes for version 20100528: 6736 6737Note: The ACPI 4.0a specification was released on April 5, 2010 and is 6738available at www.acpi.info. This is primarily an errata release. 6739 67401) ACPI CA Core Subsystem: 6741 6742Undefined ACPI tables: We are looking for the definitions for the 6743following 6744ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 6745 6746Implemented support to enable multi-byte transfers for Embedded 6747Controller 6748(EC) operation regions. Previously, the maximum data size passed to the 6749EC 6750operation region handler was a single byte. There are often EC Fields 6751larger 6752than one byte that need to be transferred, and it is useful for the EC 6753driver 6754to lock these as a single transaction. This change enables single 6755transfers 6756larger than 8 bits. This effectively changes the access to the EC space 6757from 6758ByteAcc to AnyAcc, and will probably require changes to the host OS 6759Embedded 6760Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 6761bit 6762transfers. Alexey Starikovskiy, Lin Ming 6763 6764Implemented a performance enhancement for namespace search and access. 6765This 6766change enhances the performance of namespace searches and walks by adding 6767a 6768backpointer to the parent in each namespace node. On large namespaces, 6769this 6770change can improve overall ACPI performance by up to 9X. Adding a pointer 6771to 6772each namespace node increases the overall size of the internal namespace 6773by 6774about 5%, since each namespace entry usually consists of both a namespace 6775node and an ACPI operand object. However, this is the first growth of the 6776namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 6777 6778Implemented a performance optimization that reduces the number of 6779namespace 6780walks. On control method exit, only walk the namespace if the method is 6781known 6782to have created namespace objects outside of its local scope. Previously, 6783the 6784entire namespace was traversed on each control method exit. This change 6785can 6786improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 6787Moore. 6788 6789Added support to truncate I/O addresses to 16 bits for Windows 6790compatibility. 6791Some ASL code has been seen in the field that inadvertently has bits set 6792above bit 15. This feature is optional and is enabled if the BIOS 6793requests 6794any Windows OSI strings. It can also be enabled by the host OS. Matthew 6795Garrett, Bob Moore. 6796 6797Added support to limit the maximum time for the ASL Sleep() operator. To 6798prevent accidental deep sleeps, limit the maximum time that Sleep() will 6799actually sleep. Configurable, the default maximum is two seconds. ACPICA 6800bugzilla 854. 6801 6802Added run-time validation support for the _WDG and_WED Microsoft 6803predefined 6804methods. These objects are defined by "Windows Instrumentation", and are 6805not 6806part of the ACPI spec. ACPICA BZ 860. 6807 6808Expanded all statistic counters used during namespace and device 6809initialization from 16 to 32 bits in order to support very large 6810namespaces. 6811 6812Replaced all instances of %d in printf format specifiers with %u since 6813nearly 6814all integers in ACPICA are unsigned. 6815 6816Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 6817returned 6818as AE_NO_HANDLER. 6819 6820Example Code and Data Size: These are the sizes for the OS-independent 6821acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6822debug version of the code includes the debug output trace mechanism and 6823has a 6824much larger code and data size. 6825 6826 Previous Release: 6827 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 6828 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 6829 Current Release: 6830 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6831 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 6832 68332) iASL Compiler/Disassembler and Tools: 6834 6835iASL: Added compiler support for the _WDG and_WED Microsoft predefined 6836methods. These objects are defined by "Windows Instrumentation", and are 6837not 6838part of the ACPI spec. ACPICA BZ 860. 6839 6840AcpiExec: added option to disable the memory tracking mechanism. The -dt 6841option will disable the tracking mechanism, which improves performance 6842considerably. 6843 6844AcpiExec: Restructured the command line options into -d (disable) and -e 6845(enable) options. 6846 6847---------------------------------------- 684828 April 2010. Summary of changes for version 20100428: 6849 68501) ACPI CA Core Subsystem: 6851 6852Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 6853including FADT-based and GPE Block Devices, execute any _PRW methods in 6854the 6855new table, and process any _Lxx/_Exx GPE methods in the new table. Any 6856runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 6857immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 6858Devices. Provides compatibility with other ACPI implementations. Two new 6859files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 6860Moore. 6861 6862Fixed a regression introduced in version 20100331 within the table 6863manager 6864where initial table loading could fail. This was introduced in the fix 6865for 6866AcpiReallocateRootTable. Also, renamed some of fields in the table 6867manager 6868data structures to clarify their meaning and use. 6869 6870Fixed a possible allocation overrun during internal object copy in 6871AcpiUtCopySimpleObject. The original code did not correctly handle the 6872case 6873where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 6874847. 6875 6876Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 6877possible access beyond end-of-allocation. Also, now fully validate 6878descriptor 6879(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 6880 6881Example Code and Data Size: These are the sizes for the OS-independent 6882acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6883debug version of the code includes the debug output trace mechanism and 6884has a 6885much larger code and data size. 6886 6887 Previous Release: 6888 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 6889 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 6890 Current Release: 6891 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 6892 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 6893 68942) iASL Compiler/Disassembler and Tools: 6895 6896iASL: Implemented Min/Max/Len/Gran validation for address resource 6897descriptors. This change implements validation for the address fields 6898that 6899are common to all address-type resource descriptors. These checks are 6900implemented: Checks for valid Min/Max, length within the Min/Max window, 6901valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 6902per 6903table 6-40 in the ACPI 4.0a specification. Also split the large 6904aslrestype1.c 6905and aslrestype2.c files into five new files. ACPICA BZ 840. 6906 6907iASL: Added support for the _Wxx predefined names. This support was 6908missing 6909and these names were not recognized by the compiler as valid predefined 6910names. ACPICA BZ 851. 6911 6912iASL: Added an error for all predefined names that are defined to return 6913no 6914value and thus must be implemented as Control Methods. These include all 6915of 6916the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 6917names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 6918 6919iASL: Implemented the -ts option to emit hex AML data in ASL format, as 6920an 6921ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 6922be 6923dynamically loaded via the Load() operator. Also cleaned up output for 6924the 6925- 6926ta and -tc options. ACPICA BZ 853. 6927 6928Tests: Added a new file with examples of extended iASL error checking. 6929Demonstrates the advanced error checking ability of the iASL compiler. 6930Available at tests/misc/badcode.asl. 6931 6932---------------------------------------- 693331 March 2010. Summary of changes for version 20100331: 6934 69351) ACPI CA Core Subsystem: 6936 6937Completed a major update for the GPE support in order to improve support 6938for 6939shared GPEs and to simplify both host OS and ACPICA code. Added a 6940reference 6941count mechanism to support shared GPEs that require multiple device 6942drivers. 6943Several external interfaces have changed. One external interface has been 6944removed. One new external interface was added. Most of the GPE external 6945interfaces now use the GPE spinlock instead of the events mutex (and the 6946Flags parameter for many GPE interfaces has been removed.) See the 6947updated 6948ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 6949Rafael 6950Wysocki. ACPICA BZ 831. 6951 6952Changed: 6953 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 6954Removed: 6955 AcpiSetGpeType 6956New: 6957 AcpiSetGpe 6958 6959Implemented write support for DataTable operation regions. These regions 6960are 6961defined via the DataTableRegion() operator. Previously, only read support 6962was 6963implemented. The ACPI specification allows DataTableRegions to be 6964read/write, 6965however. 6966 6967Implemented a new subsystem option to force a copy of the DSDT to local 6968memory. Optionally copy the entire DSDT to local memory (instead of 6969simply 6970mapping it.) There are some (albeit very rare) BIOSs that corrupt or 6971replace 6972the original DSDT, creating the need for this option. Default is FALSE, 6973do 6974not copy the DSDT. 6975 6976Implemented detection of a corrupted or replaced DSDT. This change adds 6977support to detect a DSDT that has been corrupted and/or replaced from 6978outside 6979the OS (by firmware). This is typically catastrophic for the system, but 6980has 6981been seen on some machines. Once this problem has been detected, the DSDT 6982copy option can be enabled via system configuration. Lin Ming, Bob Moore. 6983 6984Fixed two problems with AcpiReallocateRootTable during the root table 6985copy. 6986When copying the root table to the new allocation, the length used was 6987incorrect. The new size was used instead of the current table size, 6988meaning 6989too much data was copied. Also, the count of available slots for ACPI 6990tables 6991was not set correctly. Alexey Starikovskiy, Bob Moore. 6992 6993Example Code and Data Size: These are the sizes for the OS-independent 6994acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6995debug version of the code includes the debug output trace mechanism and 6996has a 6997much larger code and data size. 6998 6999 Previous Release: 7000 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 7001 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 7002 Current Release: 7003 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 7004 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 7005 70062) iASL Compiler/Disassembler and Tools: 7007 7008iASL: Implement limited typechecking for values returned from predefined 7009control methods. The type of any returned static (unnamed) object is now 7010validated. For example, Return(1). ACPICA BZ 786. 7011 7012iASL: Fixed a predefined name object verification regression. Fixes a 7013problem 7014introduced in version 20100304. An error is incorrectly generated if a 7015predefined name is declared as a static named object with a value defined 7016using the keywords "Zero", "One", or "Ones". Lin Ming. 7017 7018iASL: Added Windows 7 support for the -g option (get local ACPI tables) 7019by 7020reducing the requested registry access rights. ACPICA BZ 842. 7021 7022Disassembler: fixed a possible fault when generating External() 7023statements. 7024Introduced in commit ae7d6fd: Properly handle externals with parent- 7025prefix 7026(carat). Fixes a string length allocation calculation. Lin Ming. 7027 7028---------------------------------------- 702904 March 2010. Summary of changes for version 20100304: 7030 70311) ACPI CA Core Subsystem: 7032 7033Fixed a possible problem with the AML Mutex handling function 7034AcpiExReleaseMutex where the function could fault under the very rare 7035condition when the interpreter has blocked, the interpreter lock is 7036released, 7037the interpreter is then reentered via the same thread, and attempts to 7038acquire an AML mutex that was previously acquired. FreeBSD report 140979. 7039Lin 7040Ming. 7041 7042Implemented additional configuration support for the AML "Debug Object". 7043Output from the debug object can now be enabled via a global variable, 7044AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 7045debugging. 7046This debug output is now available in the release version of ACPICA 7047instead 7048of just the debug version. Also, the entire debug output module can now 7049be 7050configured out of the ACPICA build if desired. One new file added, 7051executer/exdebug.c. Lin Ming, Bob Moore. 7052 7053Added header support for the ACPI MCHI table (Management Controller Host 7054Interface Table). This table was added in ACPI 4.0, but the defining 7055document 7056has only recently become available. 7057 7058Standardized output of integer values for ACPICA warnings/errors. Always 7059use 70600x prefix for hex output, always use %u for unsigned integer decimal 7061output. 7062Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 7063400 7064invocations.) These invocations were converted from the original 7065ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 7066 7067Example Code and Data Size: These are the sizes for the OS-independent 7068acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7069debug version of the code includes the debug output trace mechanism and 7070has a 7071much larger code and data size. 7072 7073 Previous Release: 7074 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7075 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7076 Current Release: 7077 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 7078 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 7079 70802) iASL Compiler/Disassembler and Tools: 7081 7082iASL: Implemented typechecking support for static (non-control method) 7083predefined named objects that are declared with the Name() operator. For 7084example, the type of this object is now validated to be of type Integer: 7085Name(_BBN, 1). This change migrates the compiler to using the core 7086predefined 7087name table instead of maintaining a local version. Added a new file, 7088aslpredef.c. ACPICA BZ 832. 7089 7090Disassembler: Added support for the ACPI 4.0 MCHI table. 7091 7092---------------------------------------- 709321 January 2010. Summary of changes for version 20100121: 7094 70951) ACPI CA Core Subsystem: 7096 7097Added the 2010 copyright to all module headers and signons. This affects 7098virtually every file in the ACPICA core subsystem, the iASL compiler, the 7099tools/utilities, and the test suites. 7100 7101Implemented a change to the AcpiGetDevices interface to eliminate 7102unnecessary 7103invocations of the _STA method. In the case where a specific _HID is 7104requested, do not run _STA until a _HID match is found. This eliminates 7105potentially dozens of _STA calls during a search for a particular 7106device/HID, 7107which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 7108 7109Implemented an additional repair for predefined method return values. 7110Attempt 7111to repair unexpected NULL elements within returned Package objects. 7112Create 7113an 7114Integer of value zero, a NULL String, or a zero-length Buffer as 7115appropriate. 7116ACPICA BZ 818. Lin Ming, Bob Moore. 7117 7118Removed the obsolete ACPI_INTEGER data type. This type was introduced as 7119the 7120code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 7121(with 712264-bit AML integers). It is now obsolete and this change removes it from 7123the 7124ACPICA code base, replaced by UINT64. The original typedef has been 7125retained 7126for now for compatibility with existing device driver code. ACPICA BZ 7127824. 7128 7129Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 7130in 7131the parse tree object. 7132 7133Added additional warning options for the gcc-4 generation. Updated the 7134source 7135accordingly. This includes some code restructuring to eliminate 7136unreachable 7137code, elimination of some gotos, elimination of unused return values, 7138some 7139additional casting, and removal of redundant declarations. 7140 7141Example Code and Data Size: These are the sizes for the OS-independent 7142acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7143debug version of the code includes the debug output trace mechanism and 7144has a 7145much larger code and data size. 7146 7147 Previous Release: 7148 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7149 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7150 Current Release: 7151 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7152 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7153 71542) iASL Compiler/Disassembler and Tools: 7155 7156No functional changes for this release. 7157 7158---------------------------------------- 715914 December 2009. Summary of changes for version 20091214: 7160 71611) ACPI CA Core Subsystem: 7162 7163Enhanced automatic data type conversions for predefined name repairs. 7164This 7165change expands the automatic repairs/conversions for predefined name 7166return 7167values to make Integers, Strings, and Buffers fully interchangeable. 7168Also, 7169a 7170Buffer can be converted to a Package of Integers if necessary. The 7171nsrepair.c 7172module was completely restructured. Lin Ming, Bob Moore. 7173 7174Implemented automatic removal of null package elements during predefined 7175name 7176repairs. This change will automatically remove embedded and trailing NULL 7177package elements from returned package objects that are defined to 7178contain 7179a 7180variable number of sub-packages. The driver is then presented with a 7181package 7182with no null elements to deal with. ACPICA BZ 819. 7183 7184Implemented a repair for the predefined _FDE and _GTM names. The expected 7185return value for both names is a Buffer of 5 DWORDs. This repair fixes 7186two 7187possible problems (both seen in the field), where a package of integers 7188is 7189returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 7190Kim. 7191 7192Implemented additional module-level code support. This change will 7193properly 7194execute module-level code that is not at the root of the namespace (under 7195a 7196Device object, etc.). Now executes the code within the current scope 7197instead 7198of the root. ACPICA BZ 762. Lin Ming. 7199 7200Fixed possible mutex acquisition errors when running _REG methods. Fixes 7201a 7202problem where mutex errors can occur when running a _REG method that is 7203in 7204the same scope as a method-defined operation region or an operation 7205region 7206under a module-level IF block. This type of code is rare, so the problem 7207has 7208not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 7209 7210Fixed a possible memory leak during module-level code execution. An 7211object 7212could be leaked for each block of executed module-level code if the 7213interpreter slack mode is enabled This change deletes any implicitly 7214returned 7215object from the module-level code block. Lin Ming. 7216 7217Removed messages for successful predefined repair(s). The repair 7218mechanism 7219was considered too wordy. Now, messages are only unconditionally emitted 7220if 7221the return object cannot be repaired. Existing messages for successful 7222repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 7223827. 7224 7225Example Code and Data Size: These are the sizes for the OS-independent 7226acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7227debug version of the code includes the debug output trace mechanism and 7228has a 7229much larger code and data size. 7230 7231 Previous Release: 7232 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 7233 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 7234 Current Release: 7235 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7236 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7237 72382) iASL Compiler/Disassembler and Tools: 7239 7240iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 7241files 7242were no longer automatically removed at the termination of the compile. 7243 7244acpiexec: Implemented the -f option to specify default region fill value. 7245This option specifies the value used to initialize buffers that simulate 7246operation regions. Default value is zero. Useful for debugging problems 7247that 7248depend on a specific initial value for a region or field. 7249 7250---------------------------------------- 725112 November 2009. Summary of changes for version 20091112: 7252 72531) ACPI CA Core Subsystem: 7254 7255Implemented a post-order callback to AcpiWalkNamespace. The existing 7256interface only has a pre-order callback. This change adds an additional 7257parameter for a post-order callback which will be more useful for bus 7258scans. 7259ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 7260 7261Modified the behavior of the operation region memory mapping cache for 7262SystemMemory. Ensure that the memory mappings created for operation 7263regions 7264do not cross 4K page boundaries. Crossing a page boundary while mapping 7265regions can cause kernel warnings on some hosts if the pages have 7266different 7267attributes. Such regions are probably BIOS bugs, and this is the 7268workaround. 7269Linux BZ 14445. Lin Ming. 7270 7271Implemented an automatic repair for predefined methods that must return 7272sorted lists. This change will repair (by sorting) packages returned by 7273_ALR, 7274_PSS, and _TSS. Drivers can now assume that the packages are correctly 7275sorted 7276and do not contain NULL package elements. Adds one new file, 7277namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 7278 7279Fixed a possible fault during predefined name validation if a return 7280Package 7281object contains NULL elements. Also adds a warning if a NULL element is 7282followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 7283may 7284include repair or removal of all such NULL elements where possible. 7285 7286Implemented additional module-level executable AML code support. This 7287change 7288will execute module-level code that is not at the root of the namespace 7289(under a Device object, etc.) at table load time. Module-level executable 7290AML 7291code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 7292 7293Implemented a new internal function to create Integer objects. This 7294function 7295simplifies miscellaneous object creation code. ACPICA BZ 823. 7296 7297Reduced the severity of predefined repair messages, Warning to Info. 7298Since 7299the object was successfully repaired, a warning is too severe. Reduced to 7300an 7301info message for now. These messages may eventually be changed to debug- 7302only. 7303ACPICA BZ 812. 7304 7305Example Code and Data Size: These are the sizes for the OS-independent 7306acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7307debug version of the code includes the debug output trace mechanism and 7308has a 7309much larger code and data size. 7310 7311 Previous Release: 7312 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 7313 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 7314 Current Release: 7315 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 7316 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 7317 73182) iASL Compiler/Disassembler and Tools: 7319 7320iASL: Implemented Switch() with While(1) so that Break works correctly. 7321This 7322change correctly implements the Switch operator with a surrounding 7323While(1) 7324so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 7325 7326iASL: Added a message if a package initializer list is shorter than 7327package 7328length. Adds a new remark for a Package() declaration if an initializer 7329list 7330exists, but is shorter than the declared length of the package. Although 7331technically legal, this is probably a coding error and it is seen in the 7332field. ACPICA BZ 815. Lin Ming, Bob Moore. 7333 7334iASL: Fixed a problem where the compiler could fault after the maximum 7335number 7336of errors was reached (200). 7337 7338acpixtract: Fixed a possible warning for pointer cast if the compiler 7339warning 7340level set very high. 7341 7342---------------------------------------- 734313 October 2009. Summary of changes for version 20091013: 7344 73451) ACPI CA Core Subsystem: 7346 7347Fixed a problem where an Operation Region _REG method could be executed 7348more 7349than once. If a custom address space handler is installed by the host 7350before 7351the "initialize operation regions" phase of the ACPICA initialization, 7352any 7353_REG methods for that address space could be executed twice. This change 7354fixes the problem. ACPICA BZ 427. Lin Ming. 7355 7356Fixed a possible memory leak for the Scope() ASL operator. When the exact 7357invocation of "Scope(\)" is executed (change scope to root), one internal 7358operand object was leaked. Lin Ming. 7359 7360Implemented a run-time repair for the _MAT predefined method. If the _MAT 7361return value is defined as a Field object in the AML, and the field 7362size is less than or equal to the default width of an integer (32 or 736364),_MAT 7364can incorrectly return an Integer instead of a Buffer. ACPICA now 7365automatically repairs this problem. ACPICA BZ 810. 7366 7367Implemented a run-time repair for the _BIF and _BIX predefined methods. 7368The 7369"OEM Information" field is often incorrectly returned as an Integer with 7370value zero if the field is not supported by the platform. This is due to 7371an 7372ambiguity in the ACPI specification. The field should always be a string. 7373ACPICA now automatically repairs this problem by returning a NULL string 7374within the returned Package. ACPICA BZ 807. 7375 7376Example Code and Data Size: These are the sizes for the OS-independent 7377acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7378debug version of the code includes the debug output trace mechanism and 7379has a 7380much larger code and data size. 7381 7382 Previous Release: 7383 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 7384 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 7385 Current Release: 7386 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 7387 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 7388 73892) iASL Compiler/Disassembler and Tools: 7390 7391Disassembler: Fixed a problem where references to external symbols that 7392contained one or more parent-prefixes (carats) were not handled 7393correctly, 7394possibly causing a fault. ACPICA BZ 806. Lin Ming. 7395 7396Disassembler: Restructured the code so that all functions that handle 7397external symbols are in a single module. One new file is added, 7398common/dmextern.c. 7399 7400AML Debugger: Added a max count argument for the Batch command (which 7401executes multiple predefined methods within the namespace.) 7402 7403iASL: Updated the compiler documentation (User Reference.) Available at 7404http://www.acpica.org/documentation/. ACPICA BZ 750. 7405 7406AcpiXtract: Updated for Lint and other formatting changes. Close all open 7407files. 7408 7409---------------------------------------- 741003 September 2009. Summary of changes for version 20090903: 7411 74121) ACPI CA Core Subsystem: 7413 7414For Windows Vista compatibility, added the automatic execution of an _INI 7415method located at the namespace root (\_INI). This method is executed at 7416table load time. This support is in addition to the automatic execution 7417of 7418\_SB._INI. Lin Ming. 7419 7420Fixed a possible memory leak in the interpreter for AML package objects 7421if 7422the package initializer list is longer than the defined size of the 7423package. 7424This apparently can only happen if the BIOS changes the package size on 7425the 7426fly (seen in a _PSS object), as ASL compilers do not allow this. The 7427interpreter will truncate the package to the defined size (and issue an 7428error 7429message), but previously could leave the extra objects undeleted if they 7430were 7431pre-created during the argument processing (such is the case if the 7432package 7433consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 7434 7435Fixed a problem seen when a Buffer or String is stored to itself via ASL. 7436This has been reported in the field. Previously, ACPICA would zero out 7437the 7438buffer/string. Now, the operation is treated as a noop. Provides Windows 7439compatibility. ACPICA BZ 803. Lin Ming. 7440 7441Removed an extraneous error message for ASL constructs of the form 7442Store(LocalX,LocalX) when LocalX is uninitialized. These curious 7443statements 7444are seen in many BIOSs and are once again treated as NOOPs and no error 7445is 7446emitted when they are encountered. ACPICA BZ 785. 7447 7448Fixed an extraneous warning message if a _DSM reserved method returns a 7449Package object. _DSM can return any type of object, so validation on the 7450return type cannot be performed. ACPICA BZ 802. 7451 7452Example Code and Data Size: These are the sizes for the OS-independent 7453acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7454debug version of the code includes the debug output trace mechanism and 7455has a 7456much larger code and data size. 7457 7458 Previous Release: 7459 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 7460 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 7461 Current Release: 7462 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 7463 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 7464 74652) iASL Compiler/Disassembler and Tools: 7466 7467iASL: Fixed a problem with the use of the Alias operator and Resource 7468Templates. The correct alias is now constructed and no error is emitted. 7469ACPICA BZ 738. 7470 7471iASL: Implemented the -I option to specify additional search directories 7472for 7473include files. Allows multiple additional search paths for include files. 7474Directories are searched in the order specified on the command line 7475(after 7476the local directory is searched.) ACPICA BZ 800. 7477 7478iASL: Fixed a problem where the full pathname for include files was not 7479emitted for warnings/errors. This caused the IDE support to not work 7480properly. ACPICA BZ 765. 7481 7482iASL: Implemented the -@ option to specify a Windows-style response file 7483containing additional command line options. ACPICA BZ 801. 7484 7485AcpiExec: Added support to load multiple AML files simultaneously (such 7486as 7487a 7488DSDT and multiple SSDTs). Also added support for wildcards within the AML 7489pathname. These features allow all machine tables to be easily loaded and 7490debugged together. ACPICA BZ 804. 7491 7492Disassembler: Added missing support for disassembly of HEST table Error 7493Bank 7494subtables. 7495 7496---------------------------------------- 749730 July 2009. Summary of changes for version 20090730: 7498 7499The ACPI 4.0 implementation for ACPICA is complete with this release. 7500 75011) ACPI CA Core Subsystem: 7502 7503ACPI 4.0: Added header file support for all new and changed ACPI tables. 7504Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 7505new 7506for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 7507BERT, 7508EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 7509There 7510have been some ACPI 4.0 changes to other existing tables. Split the large 7511actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 7512 7513ACPI 4.0: Implemented predefined name validation for all new names. There 7514are 751531 new names in ACPI 4.0. The predefined validation module was split into 7516two 7517files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 7518 7519Implemented support for so-called "module-level executable code". This is 7520executable AML code that exists outside of any control method and is 7521intended 7522to be executed at table load time. Although illegal since ACPI 2.0, this 7523type 7524of code still exists and is apparently still being created. Blocks of 7525this 7526code are now detected and executed as intended. Currently, the code 7527blocks 7528must exist under either an If, Else, or While construct; these are the 7529typical cases seen in the field. ACPICA BZ 762. Lin Ming. 7530 7531Implemented an automatic dynamic repair for predefined names that return 7532nested Package objects. This applies to predefined names that are defined 7533to 7534return a variable-length Package of sub-packages. If the number of sub- 7535packages is one, BIOS code is occasionally seen that creates a simple 7536single 7537package with no sub-packages. This code attempts to fix the problem by 7538wrapping a new package object around the existing package. These methods 7539can 7540be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 7541BZ 7542790. 7543 7544Fixed a regression introduced in 20090625 for the AcpiGetDevices 7545interface. 7546The _HID/_CID matching was broken and no longer matched IDs correctly. 7547ACPICA 7548BZ 793. 7549 7550Fixed a problem with AcpiReset where the reset would silently fail if the 7551register was one of the protected I/O ports. AcpiReset now bypasses the 7552port 7553validation mechanism. This may eventually be driven into the 7554AcpiRead/Write 7555interfaces. 7556 7557Fixed a regression related to the recent update of the AcpiRead/Write 7558interfaces. A sleep/suspend could fail if the optional PM2 Control 7559register 7560does not exist during an attempt to write the Bus Master Arbitration bit. 7561(However, some hosts already delete the code that writes this bit, and 7562the 7563code may in fact be obsolete at this date.) ACPICA BZ 799. 7564 7565Fixed a problem where AcpiTerminate could fault if inadvertently called 7566twice 7567in succession. ACPICA BZ 795. 7568 7569Example Code and Data Size: These are the sizes for the OS-independent 7570acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7571debug version of the code includes the debug output trace mechanism and 7572has a 7573much larger code and data size. 7574 7575 Previous Release: 7576 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 7577 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 7578 Current Release: 7579 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 7580 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 7581 75822) iASL Compiler/Disassembler and Tools: 7583 7584ACPI 4.0: Implemented disassembler support for all new ACPI tables and 7585changes to existing tables. ACPICA BZ 775. 7586 7587---------------------------------------- 758825 June 2009. Summary of changes for version 20090625: 7589 7590The ACPI 4.0 Specification was released on June 16 and is available at 7591www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 7592continue for the next few releases. 7593 75941) ACPI CA Core Subsystem: 7595 7596ACPI 4.0: Implemented interpreter support for the IPMI operation region 7597address space. Includes support for bi-directional data buffers and an 7598IPMI 7599address space handler (to be installed by an IPMI device driver.) ACPICA 7600BZ 7601773. Lin Ming. 7602 7603ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 7604Includes 7605support in both the header files and the disassembler. 7606 7607Completed a major update for the AcpiGetObjectInfo external interface. 7608Changes include: 7609 - Support for variable, unlimited length HID, UID, and CID strings. 7610 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 7611etc.) 7612 - Call the _SxW power methods on behalf of a device object. 7613 - Determine if a device is a PCI root bridge. 7614 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 7615These changes will require an update to all callers of this interface. 7616See 7617the updated ACPICA Programmer Reference for details. One new source file 7618has 7619been added - utilities/utids.c. ACPICA BZ 368, 780. 7620 7621Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 7622transfers. The Value parameter has been extended from 32 bits to 64 bits 7623in 7624order to support new ACPI 4.0 tables. These changes will require an 7625update 7626to 7627all callers of these interfaces. See the ACPICA Programmer Reference for 7628details. ACPICA BZ 768. 7629 7630Fixed several problems with AcpiAttachData. The handler was not invoked 7631when 7632the host node was deleted. The data sub-object was not automatically 7633deleted 7634when the host node was deleted. The interface to the handler had an 7635unused 7636parameter, this was removed. ACPICA BZ 778. 7637 7638Enhanced the function that dumps ACPI table headers. All non-printable 7639characters in the string fields are now replaced with '?' (Signature, 7640OemId, 7641OemTableId, and CompilerId.) ACPI tables with non-printable characters in 7642these fields are occasionally seen in the field. ACPICA BZ 788. 7643 7644Fixed a problem with predefined method repair code where the code that 7645attempts to repair/convert an object of incorrect type is only executed 7646on 7647the first time the predefined method is called. The mechanism that 7648disables 7649warnings on subsequent calls was interfering with the repair mechanism. 7650ACPICA BZ 781. 7651 7652Fixed a possible memory leak in the predefined validation/repair code 7653when 7654a 7655buffer is automatically converted to an expected string object. 7656 7657Removed obsolete 16-bit files from the distribution and from the current 7658git 7659tree head. ACPICA BZ 776. 7660 7661Example Code and Data Size: These are the sizes for the OS-independent 7662acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7663debug version of the code includes the debug output trace mechanism and 7664has a 7665much larger code and data size. 7666 7667 Previous Release: 7668 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 7669 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 7670 Current Release: 7671 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 7672 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 7673 76742) iASL Compiler/Disassembler and Tools: 7675 7676ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 7677operation region keyword. ACPICA BZ 771, 772. Lin Ming. 7678 7679ACPI 4.0: iASL - implemented compile-time validation support for all new 7680predefined names and control methods (31 total). ACPICA BZ 769. 7681 7682---------------------------------------- 768321 May 2009. Summary of changes for version 20090521: 7684 76851) ACPI CA Core Subsystem: 7686 7687Disabled the preservation of the SCI enable bit in the PM1 control 7688register. 7689The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 7690to 7691be 7692a "preserved" bit - "OSPM always preserves this bit position", section 76934.7.3.2.1. However, some machines fail if this bit is in fact preserved 7694because the bit needs to be explicitly set by the OS as a workaround. No 7695machines fail if the bit is not preserved. Therefore, ACPICA no longer 7696attempts to preserve this bit. 7697 7698Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 7699incorrectly formed _PRT package could cause a fault. Added validation to 7700ensure that each package element is actually a sub-package. 7701 7702Implemented a new interface to install or override a single control 7703method, 7704AcpiInstallMethod. This interface is useful when debugging in order to 7705repair 7706an existing method or to install a missing method without having to 7707override 7708the entire ACPI table. See the ACPICA Programmer Reference for use and 7709examples. Lin Ming, Bob Moore. 7710 7711Fixed several reference count issues with the DdbHandle object that is 7712created from a Load or LoadTable operator. Prevent premature deletion of 7713the 7714object. Also, mark the object as invalid once the table has been 7715unloaded. 7716This is needed because the handle itself may not be deleted after the 7717table 7718unload, depending on whether it has been stored in a named object by the 7719caller. Lin Ming. 7720 7721Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 7722mutexes of the same sync level are acquired but then not released in 7723strict 7724opposite order, the internally maintained Current Sync Level becomes 7725confused 7726and can cause subsequent execution errors. ACPICA BZ 471. 7727 7728Changed the allowable release order for ASL mutex objects. The ACPI 4.0 7729specification has been changed to make the SyncLevel for mutex objects 7730more 7731useful. When releasing a mutex, the SyncLevel of the mutex must now be 7732the 7733same as the current sync level. This makes more sense than the previous 7734rule 7735(SyncLevel less than or equal). This change updates the code to match the 7736specification. 7737 7738Fixed a problem with the local version of the AcpiOsPurgeCache function. 7739The 7740(local) cache must be locked during all cache object deletions. Andrew 7741Baumann. 7742 7743Updated the Load operator to use operation region interfaces. This 7744replaces 7745direct memory mapping with region access calls. Now, all region accesses 7746go 7747through the installed region handler as they should. 7748 7749Simplified and optimized the NsGetNextNode function. Reduced parameter 7750count 7751and reduced code for this frequently used function. 7752 7753Example Code and Data Size: These are the sizes for the OS-independent 7754acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7755debug version of the code includes the debug output trace mechanism and 7756has a 7757much larger code and data size. 7758 7759 Previous Release: 7760 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 7761 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 7762 Current Release: 7763 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 7764 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 7765 77662) iASL Compiler/Disassembler and Tools: 7767 7768Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 7769problems 7770with sub-table disassembly and handling invalid sub-tables. Attempt 7771recovery 7772after an invalid sub-table ID. 7773 7774---------------------------------------- 777522 April 2009. Summary of changes for version 20090422: 7776 77771) ACPI CA Core Subsystem: 7778 7779Fixed a compatibility issue with the recently released I/O port 7780protection 7781mechanism. For windows compatibility, 1) On a port protection violation, 7782simply ignore the request and do not return an exception (allow the 7783control 7784method to continue execution.) 2) If only part of the request overlaps a 7785protected port, read/write the individual ports that are not protected. 7786Linux 7787BZ 13036. Lin Ming 7788 7789Enhanced the execution of the ASL/AML BreakPoint operator so that it 7790actually 7791breaks into the AML debugger if the debugger is present. This matches the 7792ACPI-defined behavior. 7793 7794Fixed several possible warnings related to the use of the configurable 7795ACPI_THREAD_ID. This type can now be configured as either an integer or a 7796pointer with no warnings. Also fixes several warnings in printf-like 7797statements for the 64-bit build when the type is configured as a pointer. 7798ACPICA BZ 766, 767. 7799 7800Fixed a number of possible warnings when compiling with gcc 4+ (depending 7801on 7802warning options.) Examples include printf formats, aliasing, unused 7803globals, 7804missing prototypes, missing switch default statements, use of non-ANSI 7805library functions, use of non-ANSI constructs. See generate/unix/Makefile 7806for 7807a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 7808 7809Example Code and Data Size: These are the sizes for the OS-independent 7810acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7811debug version of the code includes the debug output trace mechanism and 7812has a 7813much larger code and data size. 7814 7815 Previous Release: 7816 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 7817 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 7818 Current Release: 7819 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 7820 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 7821 78222) iASL Compiler/Disassembler and Tools: 7823 7824iASL: Fixed a generation warning from Bison 2.3 and fixed several 7825warnings 7826on 7827the 64-bit build. 7828 7829iASL: Fixed a problem where the Unix/Linux versions of the compiler could 7830not 7831correctly digest Windows/DOS formatted files (with CR/LF). 7832 7833iASL: Added a new option for "quiet mode" (-va) that produces only the 7834compilation summary, not individual errors and warnings. Useful for large 7835batch compilations. 7836 7837AcpiExec: Implemented a new option (-z) to enable a forced 7838semaphore/mutex 7839timeout that can be used to detect hang conditions during execution of 7840AML 7841code (includes both internal semaphores and AML-defined mutexes and 7842events.) 7843 7844Added new makefiles for the generation of acpica in a generic unix-like 7845environment. These makefiles are intended to generate the acpica tools 7846and 7847utilities from the original acpica git source tree structure. 7848 7849Test Suites: Updated and cleaned up the documentation files. Updated the 7850copyrights to 2009, affecting all source files. Use the new version of 7851iASL 7852with quiet mode. Increased the number of available semaphores in the 7853Windows 7854OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 7855added 7856an alternate implementation of the semaphore timeout to allow aslts to 7857execute fully on Cygwin. 7858 7859---------------------------------------- 786020 March 2009. Summary of changes for version 20090320: 7861 78621) ACPI CA Core Subsystem: 7863 7864Fixed a possible race condition between AcpiWalkNamespace and dynamic 7865table 7866unloads. Added a reader/writer locking mechanism to allow multiple 7867concurrent 7868namespace walks (readers), but block a dynamic table unload until it can 7869gain 7870exclusive write access to the namespace. This fixes a problem where a 7871table 7872unload could (possibly catastrophically) delete the portion of the 7873namespace 7874that is currently being examined by a walk. Adds a new file, utlock.c, 7875that 7876implements the reader/writer lock mechanism. ACPICA BZ 749. 7877 7878Fixed a regression introduced in version 20090220 where a change to the 7879FADT 7880handling could cause the ACPICA subsystem to access non-existent I/O 7881ports. 7882 7883Modified the handling of FADT register and table (FACS/DSDT) addresses. 7884The 7885FADT can contain both 32-bit and 64-bit versions of these addresses. 7886Previously, the 64-bit versions were favored, meaning that if both 32 and 788764 7888versions were valid, but not equal, the 64-bit version was used. This was 7889found to cause some machines to fail. Now, in this case, the 32-bit 7890version 7891is used instead. This now matches the Windows behavior. 7892 7893Implemented a new mechanism to protect certain I/O ports. Provides 7894Microsoft 7895compatibility and protects the standard PC I/O ports from access via AML 7896code. Adds a new file, hwvalid.c 7897 7898Fixed a possible extraneous warning message from the FADT support. The 7899message warns of a 32/64 length mismatch between the legacy and GAS 7900definitions for a register. 7901 7902Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 7903is 7904made obsolete by the port protection mechanism above. It was previously 7905used 7906to validate the entire address range of an operation region, which could 7907be 7908incorrect if the range included illegal ports, but fields within the 7909operation region did not actually access those ports. Validation is now 7910performed on a per-field basis instead of the entire region. 7911 7912Modified the handling of the PM1 Status Register ignored bit (bit 11.) 7913Ignored bits must be "preserved" according to the ACPI spec. Usually, 7914this 7915means a read/modify/write when writing to the register. However, for 7916status 7917registers, writing a one means clear the event. Writing a zero means 7918preserve 7919the event (do not clear.) This behavior is clarified in the ACPI 4.0 7920spec, 7921and the ACPICA code now simply always writes a zero to the ignored bit. 7922 7923Modified the handling of ignored bits for the PM1 A/B Control Registers. 7924As 7925per the ACPI specification, for the control registers, preserve 7926(read/modify/write) all bits that are defined as either reserved or 7927ignored. 7928 7929Updated the handling of write-only bits in the PM1 A/B Control Registers. 7930When reading the register, zero the write-only bits as per the ACPI spec. 7931ACPICA BZ 443. Lin Ming. 7932 7933Removed "Linux" from the list of supported _OSI strings. Linux no longer 7934wants to reply true to this request. The Windows strings are the only 7935paths 7936through the AML that are tested and known to work properly. 7937 7938 Previous Release: 7939 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 7940 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 7941 Current Release: 7942 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 7943 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 7944 79452) iASL Compiler/Disassembler and Tools: 7946 7947Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 7948and 7949aetables.c 7950 7951---------------------------------------- 795220 February 2009. Summary of changes for version 20090220: 7953 79541) ACPI CA Core Subsystem: 7955 7956Optimized the ACPI register locking. Removed locking for reads from the 7957ACPI 7958bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 7959is 7960not required when reading the single-bit registers. The 7961AcpiGetRegisterUnlocked function is no longer needed and has been 7962removed. 7963This will improve performance for reads on these registers. ACPICA BZ 7964760. 7965 7966Fixed the parameter validation for AcpiRead/Write. Now return 7967AE_BAD_PARAMETER if the input register pointer is null, and 7968AE_BAD_ADDRESS 7969if 7970the register has an address of zero. Previously, these cases simply 7971returned 7972AE_OK. For optional registers such as PM1B status/enable/control, the 7973caller 7974should check for a valid register address before calling. ACPICA BZ 748. 7975 7976Renamed the external ACPI bit register access functions. Renamed 7977AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 7978functions. The new names are AcpiReadBitRegister and 7979AcpiWriteBitRegister. 7980Also, restructured the code for these functions by simplifying the code 7981path 7982and condensing duplicate code to reduce code size. 7983 7984Added new functions to transparently handle the possibly split PM1 A/B 7985registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 7986functions 7987now handle the split registers for PM1 Status, Enable, and Control. 7988ACPICA 7989BZ 7990746. 7991 7992Added a function to handle the PM1 control registers, 7993AcpiHwWritePm1Control. 7994This function writes both of the PM1 control registers (A/B). These 7995registers 7996are different than the PM1 A/B status and enable registers in that 7997different 7998values can be written to the A/B registers. Most notably, the SLP_TYP 7999bits 8000can be different, as per the values returned from the _Sx predefined 8001methods. 8002 8003Removed an extra register write within AcpiHwClearAcpiStatus. This 8004function 8005was writing an optional PM1B status register twice. The existing call to 8006the 8007low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 8008A/B 8009register. ACPICA BZ 751. 8010 8011Split out the PM1 Status registers from the FADT. Added new globals for 8012these 8013registers (A/B), similar to the way the PM1 Enable registers are handled. 8014Instead of overloading the FADT Event Register blocks. This makes the 8015code 8016clearer and less prone to error. 8017 8018Fixed the warning message for when the platform contains too many ACPI 8019tables 8020for the default size of the global root table data structure. The 8021calculation 8022for the truncation value was incorrect. 8023 8024Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 8025obsolete macro, since it is now a simple reference to ->common.type. 8026There 8027were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 8028 8029Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 8030TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 8031simply SLEEP_TYPE. ACPICA BZ 754. 8032 8033Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 8034function is only needed on 64-bit host operating systems and is thus not 8035included for 32-bit hosts. 8036 8037Debug output: print the input and result for invocations of the _OSI 8038reserved 8039control method via the ACPI_LV_INFO debug level. Also, reduced some of 8040the 8041verbosity of this debug level. Len Brown. 8042 8043Example Code and Data Size: These are the sizes for the OS-independent 8044acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8045debug version of the code includes the debug output trace mechanism and 8046has a 8047much larger code and data size. 8048 8049 Previous Release: 8050 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8051 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8052 Current Release: 8053 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 8054 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 8055 80562) iASL Compiler/Disassembler and Tools: 8057 8058Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 8059various legal performance profiles. 8060 8061---------------------------------------- 806223 January 2009. Summary of changes for version 20090123: 8063 80641) ACPI CA Core Subsystem: 8065 8066Added the 2009 copyright to all module headers and signons. This affects 8067virtually every file in the ACPICA core subsystem, the iASL compiler, and 8068the tools/utilities. 8069 8070Implemented a change to allow the host to override any ACPI table, 8071including 8072dynamically loaded tables. Previously, only the DSDT could be replaced by 8073the 8074host. With this change, the AcpiOsTableOverride interface is called for 8075each 8076table found in the RSDT/XSDT during ACPICA initialization, and also 8077whenever 8078a table is dynamically loaded via the AML Load operator. 8079 8080Updated FADT flag definitions, especially the Boot Architecture flags. 8081 8082Debugger: For the Find command, automatically pad the input ACPI name 8083with 8084underscores if the name is shorter than 4 characters. This enables a 8085match 8086with the actual namespace entry which is itself padded with underscores. 8087 8088Example Code and Data Size: These are the sizes for the OS-independent 8089acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8090debug version of the code includes the debug output trace mechanism and 8091has a 8092much larger code and data size. 8093 8094 Previous Release: 8095 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8096 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8097 Current Release: 8098 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8099 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8100 81012) iASL Compiler/Disassembler and Tools: 8102 8103Fix build error under Bison-2.4. 8104 8105Dissasembler: Enhanced FADT support. Added decoding of the Boot 8106Architecture 8107flags. Now decode all flags, regardless of the FADT version. Flag output 8108includes the FADT version which first defined each flag. 8109 8110The iASL -g option now dumps the RSDT to a file (in addition to the FADT 8111and 8112DSDT). Windows only. 8113 8114---------------------------------------- 811504 December 2008. Summary of changes for version 20081204: 8116 81171) ACPI CA Core Subsystem: 8118 8119The ACPICA Programmer Reference has been completely updated and revamped 8120for 8121this release. This includes updates to the external interfaces, OSL 8122interfaces, the overview sections, and the debugger reference. 8123 8124Several new ACPICA interfaces have been implemented and documented in the 8125programmer reference: 8126AcpiReset - Writes the reset value to the FADT-defined reset register. 8127AcpiDisableAllGpes - Disable all available GPEs. 8128AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 8129AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 8130AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 8131AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 8132AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 8133 8134Most of the public ACPI hardware-related interfaces have been moved to a 8135new 8136file, components/hardware/hwxface.c 8137 8138Enhanced the FADT parsing and low-level ACPI register access: The ACPI 8139register lengths within the FADT are now used, and the low level ACPI 8140register access no longer hardcodes the ACPI register lengths. Given that 8141there may be some risk in actually trusting the FADT register lengths, a 8142run- 8143time option was added to fall back to the default hardcoded lengths if 8144the 8145FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 8146option is set to true for now, and a warning is issued if a suspicious 8147FADT 8148register length is overridden with the default value. 8149 8150Fixed a reference count issue in NsRepairObject. This problem was 8151introduced 8152in version 20081031 as part of a fix to repair Buffer objects within 8153Packages. Lin Ming. 8154 8155Added semaphore support to the Linux/Unix application OS-services layer 8156(OSL). ACPICA BZ 448. Lin Ming. 8157 8158Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 8159will 8160be implemented in the OSL, or will binary semaphores be used instead. 8161 8162Example Code and Data Size: These are the sizes for the OS-independent 8163acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8164debug version of the code includes the debug output trace mechanism and 8165has a 8166much larger code and data size. 8167 8168 Previous Release: 8169 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 8170 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 8171 Current Release: 8172 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8173 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8174 81752) iASL Compiler/Disassembler and Tools: 8176 8177iASL: Completed the '-e' option to include additional ACPI tables in 8178order 8179to 8180aid with disassembly and External statement generation. ACPICA BZ 742. 8181Lin 8182Ming. 8183 8184iASL: Removed the "named object in while loop" error. The compiler cannot 8185determine how many times a loop will execute. ACPICA BZ 730. 8186 8187Disassembler: Implemented support for FADT revision 2 (MS extension). 8188ACPICA 8189BZ 743. 8190 8191Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 8192MCFG). 8193 8194---------------------------------------- 819531 October 2008. Summary of changes for version 20081031: 8196 81971) ACPI CA Core Subsystem: 8198 8199Restructured the ACPICA header files into public/private. acpi.h now 8200includes 8201only the "public" acpica headers. All other acpica headers are "private" 8202and 8203should not be included by acpica users. One new file, accommon.h is used 8204to 8205include the commonly used private headers for acpica code generation. 8206Future 8207plans include moving all private headers to a new subdirectory. 8208 8209Implemented an automatic Buffer->String return value conversion for 8210predefined ACPI methods. For these methods (such as _BIF), added 8211automatic 8212conversion for return objects that are required to be a String, but a 8213Buffer 8214was found instead. This can happen when reading string battery data from 8215an 8216operation region, because it used to be difficult to convert the data 8217from 8218buffer to string from within the ASL. Ensures that the host OS is 8219provided 8220with a valid null-terminated string. Linux BZ 11822. 8221 8222Updated the FACS waking vector interfaces. Split 8223AcpiSetFirmwareWakingVector 8224into two: one for the 32-bit vector, another for the 64-bit vector. This 8225is 8226required because the host OS must setup the wake much differently for 8227each 8228vector (real vs. protected mode, etc.) and the interface itself should 8229not 8230be 8231deciding which vector to use. Also, eliminated the 8232GetFirmwareWakingVector 8233interface, as it served no purpose (only the firmware reads the vector, 8234OS 8235only writes the vector.) ACPICA BZ 731. 8236 8237Implemented a mechanism to escape infinite AML While() loops. Added a 8238loop 8239counter to force exit from AML While loops if the count becomes too 8240large. 8241This can occur in poorly written AML when the hardware does not respond 8242within a while loop and the loop does not implement a timeout. The 8243maximum 8244loop count is configurable. A new exception code is returned when a loop 8245is 8246broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 8247 8248Optimized the execution of AML While loops. Previously, a control state 8249object was allocated and freed for each execution of the loop. The 8250optimization is to simply reuse the control state for each iteration. 8251This 8252speeds up the raw loop execution time by about 5%. 8253 8254Enhanced the implicit return mechanism. For Windows compatibility, return 8255an 8256implicit integer of value zero for methods that contain no executable 8257code. 8258Such methods are seen in the field as stubs (presumably), and can cause 8259drivers to fail if they expect a return value. Lin Ming. 8260 8261Allow multiple backslashes as root prefixes in namepaths. In a fully 8262qualified namepath, allow multiple backslash prefixes. This can happen 8263(and 8264is seen in the field) because of the use of a double-backslash in strings 8265(since backslash is the escape character) causing confusion. ACPICA BZ 8266739 8267Lin Ming. 8268 8269Emit a warning if two different FACS or DSDT tables are discovered in the 8270FADT. Checks if there are two valid but different addresses for the FACS 8271and 8272DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 8273 8274Consolidated the method argument count validation code. Merged the code 8275that 8276validates control method argument counts into the predefined validation 8277module. Eliminates possible multiple warnings for incorrect argument 8278counts. 8279 8280Implemented ACPICA example code. Includes code for ACPICA initialization, 8281handler installation, and calling a control method. Available at 8282source/tools/examples. 8283 8284Added a global pointer for FACS table to simplify internal FACS access. 8285Use 8286the global pointer instead of using AcpiGetTableByIndex for each FACS 8287access. 8288This simplifies the code for the Global Lock and the Firmware Waking 8289Vector(s). 8290 8291Example Code and Data Size: These are the sizes for the OS-independent 8292acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8293debug version of the code includes the debug output trace mechanism and 8294has a 8295much larger code and data size. 8296 8297 Previous Release: 8298 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 8299 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 8300 Current Release: 8301 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 8302 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 8303 83042) iASL Compiler/Disassembler and Tools: 8305 8306iASL: Improved disassembly of external method calls. Added the -e option 8307to 8308allow the inclusion of additional ACPI tables to help with the 8309disassembly 8310of 8311method invocations and the generation of external declarations during the 8312disassembly. Certain external method invocations cannot be disassembled 8313properly without the actual declaration of the method. Use the -e option 8314to 8315include the table where the external method(s) are actually declared. 8316Most 8317useful for disassembling SSDTs that make method calls back to the master 8318DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 8319-d 8320-e dsdt.aml ssdt1.aml 8321 8322iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 8323problem where the use of an alias within a namepath would result in a not 8324found error or cause the compiler to fault. Also now allows forward 8325references from the Alias operator itself. ACPICA BZ 738. 8326 8327---------------------------------------- 832826 September 2008. Summary of changes for version 20080926: 8329 83301) ACPI CA Core Subsystem: 8331 8332Designed and implemented a mechanism to validate predefined ACPI methods 8333and 8334objects. This code validates the predefined ACPI objects (objects whose 8335names 8336start with underscore) that appear in the namespace, at the time they are 8337evaluated. The argument count and the type of the returned object are 8338validated against the ACPI specification. The purpose of this validation 8339is 8340to detect problems with the BIOS-implemented predefined ACPI objects 8341before 8342the results are returned to the ACPI-related drivers. Future enhancements 8343may 8344include actual repair of incorrect return objects where possible. Two new 8345files are nspredef.c and acpredef.h. 8346 8347Fixed a fault in the AML parser if a memory allocation fails during the 8348Op 8349completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 8350 8351Fixed an issue with implicit return compatibility. This change improves 8352the 8353implicit return mechanism to be more compatible with the MS interpreter. 8354Lin 8355Ming, ACPICA BZ 349. 8356 8357Implemented support for zero-length buffer-to-string conversions. Allow 8358zero 8359length strings during interpreter buffer-to-string conversions. For 8360example, 8361during the ToDecimalString and ToHexString operators, as well as implicit 8362conversions. Fiodor Suietov, ACPICA BZ 585. 8363 8364Fixed two possible memory leaks in the error exit paths of 8365AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 8366are 8367similar in that they use a stack of state objects in order to eliminate 8368recursion. The stack must be fully unwound and deallocated if an error 8369occurs. Lin Ming. ACPICA BZ 383. 8370 8371Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 8372global 8373ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 8374Moore ACPICA BZ 442. 8375 8376Removed the obsolete version number in module headers. Removed the 8377"$Revision" number that appeared in each module header. This version 8378number 8379was useful under SourceSafe and CVS, but has no meaning under git. It is 8380not 8381only incorrect, it could also be misleading. 8382 8383Example Code and Data Size: These are the sizes for the OS-independent 8384acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8385debug version of the code includes the debug output trace mechanism and 8386has a 8387much larger code and data size. 8388 8389 Previous Release: 8390 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8391 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 8392 Current Release: 8393 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 8394 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 8395 8396---------------------------------------- 839729 August 2008. Summary of changes for version 20080829: 8398 83991) ACPI CA Core Subsystem: 8400 8401Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 8402Reference. Changes include the elimination of cheating on the Object 8403field 8404for the DdbHandle subtype, addition of a reference class field to 8405differentiate the various reference types (instead of an AML opcode), and 8406the 8407cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 8408 8409Reduce an error to a warning for an incorrect method argument count. 8410Previously aborted with an error if too few arguments were passed to a 8411control method via the external ACPICA interface. Now issue a warning 8412instead 8413and continue. Handles the case where the method inadvertently declares 8414too 8415many arguments, but does not actually use the extra ones. Applies mainly 8416to 8417the predefined methods. Lin Ming. Linux BZ 11032. 8418 8419Disallow the evaluation of named object types with no intrinsic value. 8420Return 8421AE_TYPE for objects that have no value and therefore evaluation is 8422undefined: 8423Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 8424of 8425these types were allowed, but an exception would be generated at some 8426point 8427during the evaluation. Now, the error is generated up front. 8428 8429Fixed a possible memory leak in the AcpiNsGetExternalPathname function 8430(nsnames.c). Fixes a leak in the error exit path. 8431 8432Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 8433debug 8434levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 8435ACPI_EXCEPTION 8436interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 8437ACPI_LV_EVENTS. 8438 8439Removed obsolete and/or unused exception codes from the acexcep.h header. 8440There is the possibility that certain device drivers may be affected if 8441they 8442use any of these exceptions. 8443 8444The ACPICA documentation has been added to the public git source tree, 8445under 8446acpica/documents. Included are the ACPICA programmer reference, the iASL 8447compiler reference, and the changes.txt release logfile. 8448 8449Example Code and Data Size: These are the sizes for the OS-independent 8450acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8451debug version of the code includes the debug output trace mechanism and 8452has a 8453much larger code and data size. 8454 8455 Previous Release: 8456 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8457 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 8458 Current Release: 8459 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8460 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 8461 84622) iASL Compiler/Disassembler and Tools: 8463 8464Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 8465defines _SCP with 3 arguments. Previous versions defined it with only 1 8466argument. iASL now allows both definitions. 8467 8468iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 8469zero- 8470length subtables when disassembling ACPI tables. Also fixed a couple of 8471errors where a full 16-bit table type field was not extracted from the 8472input 8473properly. 8474 8475acpisrc: Improve comment counting mechanism for generating source code 8476statistics. Count first and last lines of multi-line comments as 8477whitespace, 8478not comment lines. Handle Linux legal header in addition to standard 8479acpica 8480header. 8481 8482---------------------------------------- 8483 848429 July 2008. Summary of changes for version 20080729: 8485 84861) ACPI CA Core Subsystem: 8487 8488Fix a possible deadlock in the GPE dispatch. Remove call to 8489AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 8490attempt 8491to acquire the GPE lock but can deadlock since the GPE lock is already 8492held 8493at dispatch time. This code was introduced in version 20060831 as a 8494response 8495to Linux BZ 6881 and has since been removed from Linux. 8496 8497Add a function to dereference returned reference objects. Examines the 8498return 8499object from a call to AcpiEvaluateObject. Any Index or RefOf references 8500are 8501automatically dereferenced in an attempt to return something useful 8502(these 8503reference types cannot be converted into an external ACPI_OBJECT.) 8504Provides 8505MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 8506 8507x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 8508subtables for the MADT and one new subtable for the SRAT. Includes 8509disassembler and AcpiSrc support. Data from the Intel 64 Architecture 8510x2APIC 8511Specification, June 2008. 8512 8513Additional error checking for pathname utilities. Add error check after 8514all 8515calls to AcpiNsGetPathnameLength. Add status return from 8516AcpiNsBuildExternalPath and check after all calls. Add parameter 8517validation 8518to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 8519 8520Return status from the global init function AcpiUtGlobalInitialize. This 8521is 8522used by both the kernel subsystem and the utilities such as iASL 8523compiler. 8524The function could possibly fail when the caches are initialized. Yang 8525Yi. 8526 8527Add a function to decode reference object types to strings. Created for 8528improved error messages. 8529 8530Improve object conversion error messages. Better error messages during 8531object 8532conversion from internal to the external ACPI_OBJECT. Used for external 8533calls 8534to AcpiEvaluateObject. 8535 8536Example Code and Data Size: These are the sizes for the OS-independent 8537acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8538debug version of the code includes the debug output trace mechanism and 8539has a 8540much larger code and data size. 8541 8542 Previous Release: 8543 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 8544 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 8545 Current Release: 8546 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8547 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 8548 85492) iASL Compiler/Disassembler and Tools: 8550 8551Debugger: fix a possible hang when evaluating non-methods. Fixes a 8552problem 8553introduced in version 20080701. If the object being evaluated (via 8554execute 8555command) is not a method, the debugger can hang while trying to obtain 8556non- 8557existent parameters. 8558 8559iASL: relax error for using reserved "_T_x" identifiers. These names can 8560appear in a disassembled ASL file if they were emitted by the original 8561compiler. Instead of issuing an error or warning and forcing the user to 8562manually change these names, issue a remark instead. 8563 8564iASL: error if named object created in while loop. Emit an error if any 8565named 8566object is created within a While loop. If allowed, this code will 8567generate 8568a 8569run-time error on the second iteration of the loop when an attempt is 8570made 8571to 8572create the same named object twice. ACPICA bugzilla 730. 8573 8574iASL: Support absolute pathnames for include files. Add support for 8575absolute 8576pathnames within the Include operator. previously, only relative 8577pathnames 8578were supported. 8579 8580iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 8581Descriptor. 8582The ACPI spec requires one interrupt minimum. BZ 423 8583 8584iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 8585Handles the case for the Interrupt Resource Descriptor where 8586the ResourceSource argument is omitted but ResourceSourceIndex 8587is present. Now leave room for the Index. BZ 426 8588 8589iASL: Prevent error message if CondRefOf target does not exist. Fixes 8590cases 8591where an error message is emitted if the target does not exist. BZ 516 8592 8593iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 8594(get ACPI tables on Windows). This was apparently broken in version 859520070919. 8596 8597AcpiXtract: Handle EOF while extracting data. Correctly handle the case 8598where 8599the EOF happens immediately after the last table in the input file. Print 8600completion message. Previously, no message was displayed in this case. 8601 8602---------------------------------------- 860301 July 2008. Summary of changes for version 20080701: 8604 86050) Git source tree / acpica.org 8606 8607Fixed a problem where a git-clone from http would not transfer the entire 8608source tree. 8609 86101) ACPI CA Core Subsystem: 8611 8612Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 8613enable bit. Now performs a read-change-write of the enable register 8614instead 8615of simply writing out the cached enable mask. This will prevent 8616inadvertent 8617enabling of GPEs if a rogue GPE is received during initialization (before 8618GPE 8619handlers are installed.) 8620 8621Implemented a copy for dynamically loaded tables. Previously, dynamically 8622loaded tables were simply mapped - but on some machines this memory is 8623corrupted after suspend. Now copy the table to a local buffer. For the 8624OpRegion case, added checksum verify. Use the table length from the table 8625header, not the region length. For the Buffer case, use the table length 8626also. Dennis Noordsij, Bob Moore. BZ 10734 8627 8628Fixed a problem where the same ACPI table could not be dynamically loaded 8629and 8630unloaded more than once. Without this change, a table cannot be loaded 8631again 8632once it has been loaded/unloaded one time. The current mechanism does not 8633unregister a table upon an unload. During a load, if the same table is 8634found, 8635this no longer returns an exception. BZ 722 8636 8637Fixed a problem where the wrong descriptor length was calculated for the 8638EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 8639EndTag 8640are calculated as 12 bytes long, but the actual length in the internal 8641descriptor is 16 because of the round-up to 8 on the 64-bit build. 8642Reported 8643by Linn Crosetto. BZ 728 8644 8645Fixed a possible memory leak in the Unload operator. The DdbHandle 8646returned 8647by Load() did not have its reference count decremented during unload, 8648leading 8649to a memory leak. Lin Ming. BZ 727 8650 8651Fixed a possible memory leak when deleting thermal/processor objects. Any 8652associated notify handlers (and objects) were not being deleted. Fiodor 8653Suietov. BZ 506 8654 8655Fixed the ordering of the ASCII names in the global mutex table to match 8656the 8657actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 8658only. 8659Vegard Nossum. BZ 726 8660 8661Enhanced the AcpiGetObjectInfo interface to return the number of required 8662arguments if the object is a control method. Added this call to the 8663debugger 8664so the proper number of default arguments are passed to a method. This 8665prevents a warning when executing methods from AcpiExec. 8666 8667Added a check for an invalid handle in AcpiGetObjectInfo. Return 8668AE_BAD_PARAMETER if input handle is invalid. BZ 474 8669 8670Fixed an extraneous warning from exconfig.c on the 64-bit build. 8671 8672Example Code and Data Size: These are the sizes for the OS-independent 8673acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8674debug version of the code includes the debug output trace mechanism and 8675has a 8676much larger code and data size. 8677 8678 Previous Release: 8679 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 8680 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 8681 Current Release: 8682 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 8683 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 8684 86852) iASL Compiler/Disassembler and Tools: 8686 8687iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 8688resource descriptor names. 8689 8690iASL: Detect invalid ASCII characters in input (windows version). Removed 8691the 8692"-CF" flag from the flex compile, enables correct detection of non-ASCII 8693characters in the input. BZ 441 8694 8695iASL: Eliminate warning when result of LoadTable is not used. Eliminate 8696the 8697"result of operation not used" warning when the DDB handle returned from 8698LoadTable is not used. The warning is not needed. BZ 590 8699 8700AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 8701method 8702to 8703pass address of table to the AML. Added option to disable OpRegion 8704simulation 8705to allow creation of an OpRegion with a real address that was passed to 8706_CFG. 8707All of this allows testing of the Load and Unload operators from 8708AcpiExec. 8709 8710Debugger: update tables command for unloaded tables. Handle unloaded 8711tables 8712and use the standard table header output routine. 8713 8714---------------------------------------- 871509 June 2008. Summary of changes for version 20080609: 8716 87171) ACPI CA Core Subsystem: 8718 8719Implemented a workaround for reversed _PRT entries. A significant number 8720of 8721BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 8722change dynamically detects and repairs this problem. Provides 8723compatibility 8724with MS ACPI. BZ 6859 8725 8726Simplified the internal ACPI hardware interfaces to eliminate the locking 8727flag parameter from Register Read/Write. Added a new external interface, 8728AcpiGetRegisterUnlocked. 8729 8730Fixed a problem where the invocation of a GPE control method could hang. 8731This 8732was a regression introduced in 20080514. The new method argument count 8733validation mechanism can enter an infinite loop when a GPE method is 8734dispatched. Problem fixed by removing the obsolete code that passed GPE 8735block 8736information to the notify handler via the control method parameter 8737pointer. 8738 8739Fixed a problem where the _SST execution status was incorrectly returned 8740to 8741the caller of AcpiEnterSleepStatePrep. This was a regression introduced 8742in 874320080514. _SST is optional and a NOT_FOUND exception should never be 8744returned. BZ 716 8745 8746Fixed a problem where a deleted object could be accessed from within the 8747AML 8748parser. This was a regression introduced in version 20080123 as a fix for 8749the 8750Unload operator. Lin Ming. BZ 10669 8751 8752Cleaned up the debug operand dump mechanism. Eliminated unnecessary 8753operands 8754and eliminated the use of a negative index in a loop. Operands are now 8755displayed in the correct order, not backwards. This also fixes a 8756regression 8757introduced in 20080514 on 64-bit systems where the elimination of 8758ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 8759715 8760 8761Fixed a possible memory leak in EvPciConfigRegionSetup where the error 8762exit 8763path did not delete a locally allocated structure. 8764 8765Updated definitions for the DMAR and SRAT tables to synchronize with the 8766current specifications. Includes disassembler support. 8767 8768Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 8769loop termination value was used. Loop terminated on iteration early, 8770missing 8771one mutex. Linn Crosetto 8772 8773Example Code and Data Size: These are the sizes for the OS-independent 8774acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8775debug version of the code includes the debug output trace mechanism and 8776has a 8777much larger code and data size. 8778 8779 Previous Release: 8780 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 8781 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 8782 Current Release: 8783 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 8784 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 8785 87862) iASL Compiler/Disassembler and Tools: 8787 8788Disassembler: Implemented support for EisaId() within _CID objects. Now 8789disassemble integer _CID objects back to EisaId invocations, including 8790multiple integers within _CID packages. Includes single-step support for 8791debugger also. 8792 8793Disassembler: Added support for DMAR and SRAT table definition changes. 8794 8795---------------------------------------- 879614 May 2008. Summary of changes for version 20080514: 8797 87981) ACPI CA Core Subsystem: 8799 8800Fixed a problem where GPEs were enabled too early during the ACPICA 8801initialization. This could lead to "handler not installed" errors on some 8802machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 8803This 8804ensures that all operation regions and devices throughout the namespace 8805have 8806been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 8807 8808Implemented a change to the enter sleep code. Moved execution of the _GTS 8809method to just before setting sleep enable bit. The execution was moved 8810from 8811AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 8812immediately before the SLP_EN bit is set, as per the ACPI specification. 8813Luming Yu, BZ 1653. 8814 8815Implemented a fix to disable unknown GPEs (2nd version). Now always 8816disable 8817the GPE, even if ACPICA thinks that that it is already disabled. It is 8818possible that the AML or some other code has enabled the GPE unbeknownst 8819to 8820the ACPICA code. 8821 8822Fixed a problem with the Field operator where zero-length fields would 8823return 8824an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 8825ASL 8826field declarations in Field(), BankField(), and IndexField(). BZ 10606. 8827 8828Implemented a fix for the Load operator, now load the table at the 8829namespace 8830root. This reverts a change introduced in version 20071019. The table is 8831now 8832loaded at the namespace root even though this goes against the ACPI 8833specification. This provides compatibility with other ACPI 8834implementations. 8835The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 8836Ming. 8837 8838Fixed a problem where ACPICA would not Load() tables with unusual 8839signatures. 8840Now ignore ACPI table signature for Load() operator. Only "SSDT" is 8841acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 8842Therefore, signature validation is worthless. Apparently MS ACPI accepts 8843such 8844signatures, ACPICA must be compatible. BZ 10454. 8845 8846Fixed a possible negative array index in AcpiUtValidateException. Added 8847NULL 8848fields to the exception string arrays to eliminate a -1 subtraction on 8849the 8850SubStatus field. 8851 8852Updated the debug tracking macros to reduce overall code and data size. 8853Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 8854instead of pointers to static strings. Jan Beulich and Bob Moore. 8855 8856Implemented argument count checking in control method invocation via 8857AcpiEvaluateObject. Now emit an error if too few arguments, warning if 8858too 8859many. This applies only to extern programmatic control method execution, 8860not 8861method-to-method calls within the AML. Lin Ming. 8862 8863Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 8864no 8865longer needed, especially with the removal of 16-bit support. It was 8866replaced 8867mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 8868bit 8869on 887032/64-bit platforms is required. 8871 8872Added the C const qualifier for appropriate string constants -- mostly 8873MODULE_NAME and printf format strings. Jan Beulich. 8874 8875Example Code and Data Size: These are the sizes for the OS-independent 8876acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8877debug version of the code includes the debug output trace mechanism and 8878has a 8879much larger code and data size. 8880 8881 Previous Release: 8882 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 8883 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 8884 Current Release: 8885 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 8886 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 8887 88882) iASL Compiler/Disassembler and Tools: 8889 8890Implemented ACPI table revision ID validation in the disassembler. Zero 8891is 8892always invalid. For DSDTs, the ID controls the interpreter integer width. 88931 8894means 32-bit and this is unusual. 2 or greater is 64-bit. 8895 8896---------------------------------------- 889721 March 2008. Summary of changes for version 20080321: 8898 88991) ACPI CA Core Subsystem: 8900 8901Implemented an additional change to the GPE support in order to suppress 8902spurious or stray GPEs. The AcpiEvDisableGpe function will now 8903permanently 8904disable incoming GPEs that are neither enabled nor disabled -- meaning 8905that 8906the GPE is unknown to the system. This should prevent future interrupt 8907floods 8908from that GPE. BZ 6217 (Zhang Rui) 8909 8910Fixed a problem where NULL package elements were not returned to the 8911AcpiEvaluateObject interface correctly. The element was simply ignored 8912instead of returning a NULL ACPI_OBJECT package element, potentially 8913causing 8914a buffer overflow and/or confusing the caller who expected a fixed number 8915of 8916elements. BZ 10132 (Lin Ming, Bob Moore) 8917 8918Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 8919Dword, 8920Qword), Field, BankField, and IndexField operators when invoked from 8921inside 8922an executing control method. In this case, these operators created 8923namespace 8924nodes that were incorrectly left marked as permanent nodes instead of 8925temporary nodes. This could cause a problem if there is race condition 8926between an exiting control method and a running namespace walk. (Reported 8927by 8928Linn Crosetto) 8929 8930Fixed a problem where the CreateField and CreateXXXField operators would 8931incorrectly allow duplicate names (the name of the field) with no 8932exception 8933generated. 8934 8935Implemented several changes for Notify handling. Added support for new 8936Notify 8937values (ACPI 2.0+) and improved the Notify debug output. Notify on 8938PowerResource objects is no longer allowed, as per the ACPI 8939specification. 8940(Bob Moore, Zhang Rui) 8941 8942All Reference Objects returned via the AcpiEvaluateObject interface are 8943now 8944marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 8945for 8946NULL objects - either NULL package elements or unresolved named 8947references. 8948 8949Fixed a problem where an extraneous debug message was produced for 8950package 8951objects (when debugging enabled). The message "Package List length larger 8952than NumElements count" is now produced in the correct case, and is now 8953an 8954error message rather than a debug message. Added a debug message for the 8955opposite case, where NumElements is larger than the Package List (the 8956package 8957will be padded out with NULL elements as per the ACPI spec.) 8958 8959Implemented several improvements for the output of the ASL "Debug" object 8960to 8961clarify and keep all data for a given object on one output line. 8962 8963Fixed two size calculation issues with the variable-length Start 8964Dependent 8965resource descriptor. 8966 8967Example Code and Data Size: These are the sizes for the OS-independent 8968acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8969debug version of the code includes the debug output trace mechanism and 8970has 8971a much larger code and data size. 8972 8973 Previous Release: 8974 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 8975 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 8976 Current Release: 8977 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 8978 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 8979 89802) iASL Compiler/Disassembler and Tools: 8981 8982Fixed a problem with the use of the Switch operator where execution of 8983the 8984containing method by multiple concurrent threads could cause an 8985AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 8986actual Switch opcode, it must be simulated with local named temporary 8987variables and if/else pairs. The solution chosen was to mark any method 8988that 8989uses Switch as Serialized, thus preventing multiple thread entries. BZ 8990469. 8991 8992---------------------------------------- 899313 February 2008. Summary of changes for version 20080213: 8994 89951) ACPI CA Core Subsystem: 8996 8997Implemented another MS compatibility design change for GPE/Notify 8998handling. 8999GPEs are now cleared/enabled asynchronously to allow all pending notifies 9000to 9001complete first. It is expected that the OSL will queue the enable request 9002behind all pending notify requests (may require changes to the local host 9003OSL 9004in AcpiOsExecute). Alexey Starikovskiy. 9005 9006Fixed a problem where buffer and package objects passed as arguments to a 9007control method via the external AcpiEvaluateObject interface could cause 9008an 9009AE_AML_INTERNAL exception depending on the order and type of operators 9010executed by the target control method. 9011 9012Fixed a problem where resource descriptor size optimization could cause a 9013problem when a _CRS resource template is passed to a _SRS method. The 9014_SRS 9015resource template must use the same descriptors (with the same size) as 9016returned from _CRS. This change affects the following resource 9017descriptors: 9018IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 90199487) 9020 9021Fixed a problem where a CopyObject to RegionField, BankField, and 9022IndexField 9023objects did not perform an implicit conversion as it should. These types 9024must 9025retain their initial type permanently as per the ACPI specification. 9026However, 9027a CopyObject to all other object types should not perform an implicit 9028conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 9029 9030Fixed a problem with the AcpiGetDevices interface where the mechanism to 9031match device CIDs did not examine the entire list of available CIDs, but 9032instead aborted on the first non-matching CID. Andrew Patterson. 9033 9034Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 9035was 9036inadvertently changed to return a 16-bit value instead of a 32-bit value, 9037truncating the upper dword of a 64-bit value. This macro is only used to 9038display debug output, so no incorrect calculations were made. Also, 9039reimplemented the macro so that a 64-bit shift is not performed by 9040inefficient compilers. 9041 9042Added missing va_end statements that should correspond with each va_start 9043statement. 9044 9045Example Code and Data Size: These are the sizes for the OS-independent 9046acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9047debug version of the code includes the debug output trace mechanism and 9048has 9049a much larger code and data size. 9050 9051 Previous Release: 9052 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9053 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9054 Current Release: 9055 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 9056 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 9057 90582) iASL Compiler/Disassembler and Tools: 9059 9060Implemented full disassembler support for the following new ACPI tables: 9061BERT, EINJ, and ERST. Implemented partial disassembler support for the 9062complicated HEST table. These tables support the Windows Hardware Error 9063Architecture (WHEA). 9064 9065---------------------------------------- 906623 January 2008. Summary of changes for version 20080123: 9067 90681) ACPI CA Core Subsystem: 9069 9070Added the 2008 copyright to all module headers and signons. This affects 9071virtually every file in the ACPICA core subsystem, the iASL compiler, and 9072the tools/utilities. 9073 9074Fixed a problem with the SizeOf operator when used with Package and 9075Buffer 9076objects. These objects have deferred execution for some arguments, and 9077the 9078execution is now completed before the SizeOf is executed. This problem 9079caused 9080unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 9081BZ 90829558 9083 9084Implemented an enhancement to the interpreter "slack mode". In the 9085absence 9086of 9087an explicit return or an implicitly returned object from the last 9088executed 9089opcode, a control method will now implicitly return an integer of value 0 9090for 9091Microsoft compatibility. (Lin Ming) BZ 392 9092 9093Fixed a problem with the Load operator where an exception was not 9094returned 9095in 9096the case where the table is already loaded. (Lin Ming) BZ 463 9097 9098Implemented support for the use of DDBHandles as an Indexed Reference, as 9099per 9100the ACPI spec. (Lin Ming) BZ 486 9101 9102Implemented support for UserTerm (Method invocation) for the Unload 9103operator 9104as per the ACPI spec. (Lin Ming) BZ 580 9105 9106Fixed a problem with the LoadTable operator where the OemId and 9107OemTableId 9108input strings could cause unexpected failures if they were shorter than 9109the 9110maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 9111 9112Implemented support for UserTerm (Method invocation) for the Unload 9113operator 9114as per the ACPI spec. (Lin Ming) BZ 580 9115 9116Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 9117HEST, 9118IBFT, UEFI, WDAT. Disassembler support is forthcoming. 9119 9120Example Code and Data Size: These are the sizes for the OS-independent 9121acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9122debug version of the code includes the debug output trace mechanism and 9123has 9124a much larger code and data size. 9125 9126 Previous Release: 9127 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9128 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9129 Current Release: 9130 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9131 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9132 91332) iASL Compiler/Disassembler and Tools: 9134 9135Implemented support in the disassembler for checksum validation on 9136incoming 9137binary DSDTs and SSDTs. If incorrect, a message is displayed within the 9138table 9139header dump at the start of the disassembly. 9140 9141Implemented additional debugging information in the namespace listing 9142file 9143created during compilation. In addition to the namespace hierarchy, the 9144full 9145pathname to each namespace object is displayed. 9146 9147Fixed a problem with the disassembler where invalid ACPI tables could 9148cause 9149faults or infinite loops. 9150 9151Fixed an unexpected parse error when using the optional "parameter types" 9152list in a control method declaration. (Lin Ming) BZ 397 9153 9154Fixed a problem where two External declarations with the same name did 9155not 9156cause an error (Lin Ming) BZ 509 9157 9158Implemented support for full TermArgs (adding Argx, Localx and method 9159invocation) for the ParameterData parameter to the LoadTable operator. 9160(Lin 9161Ming) BZ 583,587 9162 9163---------------------------------------- 916419 December 2007. Summary of changes for version 20071219: 9165 91661) ACPI CA Core Subsystem: 9167 9168Implemented full support for deferred execution for the TermArg string 9169arguments for DataTableRegion. This enables forward references and full 9170operand resolution for the three string arguments. Similar to 9171OperationRegion 9172deferred argument execution.) Lin Ming. BZ 430 9173 9174Implemented full argument resolution support for the BankValue argument 9175to 9176BankField. Previously, only constants were supported, now any TermArg may 9177be 9178used. Lin Ming BZ 387, 393 9179 9180Fixed a problem with AcpiGetDevices where the search of a branch of the 9181device tree could be terminated prematurely. In accordance with the ACPI 9182specification, the search down the current branch is terminated if a 9183device 9184is both not present and not functional (instead of just not present.) 9185Yakui 9186Zhao. 9187 9188Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 9189if 9190the underlying AML code changed the GPE enable registers. Now, any 9191unknown 9192incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 9193disabled 9194instead of simply ignored. Rui Zhang. 9195 9196Fixed a problem with Index Fields where the Index register was 9197incorrectly 9198limited to a maximum of 32 bits. Now any size may be used. 9199 9200Fixed a couple memory leaks associated with "implicit return" objects 9201when 9202the AML Interpreter slack mode is enabled. Lin Ming BZ 349 9203 9204Example Code and Data Size: These are the sizes for the OS-independent 9205acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9206debug version of the code includes the debug output trace mechanism and 9207has 9208a much larger code and data size. 9209 9210 Previous Release: 9211 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 9212 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9213 Current Release: 9214 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9215 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9216 9217---------------------------------------- 921814 November 2007. Summary of changes for version 20071114: 9219 92201) ACPI CA Core Subsystem: 9221 9222Implemented event counters for each of the Fixed Events, the ACPI SCI 9223(interrupt) itself, and control methods executed. Named 9224AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 9225These 9226should be useful for debugging and statistics. 9227 9228Implemented a new external interface, AcpiGetStatistics, to retrieve the 9229contents of the various event counters. Returns the current values for 9230AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 9231AcpiMethodCount. The interface can be expanded in the future if new 9232counters 9233are added. Device drivers should use this interface rather than access 9234the 9235counters directly. 9236 9237Fixed a problem with the FromBCD and ToBCD operators. With some 9238compilers, 9239the ShortDivide function worked incorrectly, causing problems with the 9240BCD 9241functions with large input values. A truncation from 64-bit to 32-bit 9242inadvertently occurred. Internal BZ 435. Lin Ming 9243 9244Fixed a problem with Index references passed as method arguments. 9245References 9246passed as arguments to control methods were dereferenced immediately 9247(before 9248control was passed to the called method). The references are now 9249correctly 9250passed directly to the called method. BZ 5389. Lin Ming 9251 9252Fixed a problem with CopyObject used in conjunction with the Index 9253operator. 9254The reference was incorrectly dereferenced before the copy. The reference 9255is 9256now correctly copied. BZ 5391. Lin Ming 9257 9258Fixed a problem with Control Method references within Package objects. 9259These 9260references are now correctly generated. This completes the package 9261construction overhaul that began in version 20071019. 9262 9263Example Code and Data Size: These are the sizes for the OS-independent 9264acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9265debug version of the code includes the debug output trace mechanism and 9266has 9267a much larger code and data size. 9268 9269 Previous Release: 9270 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 9271 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 9272 Current Release: 9273 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 9274 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9275 9276 92772) iASL Compiler/Disassembler and Tools: 9278 9279The AcpiExec utility now installs handlers for all of the predefined 9280Operation Region types. New types supported are: PCI_Config, CMOS, and 9281PCIBARTarget. 9282 9283Fixed a problem with the 64-bit version of AcpiExec where the extended 9284(64- 9285bit) address fields for the DSDT and FACS within the FADT were not being 9286used, causing truncation of the upper 32-bits of these addresses. Lin 9287Ming 9288and Bob Moore 9289 9290---------------------------------------- 929119 October 2007. Summary of changes for version 20071019: 9292 92931) ACPI CA Core Subsystem: 9294 9295Fixed a problem with the Alias operator when the target of the alias is a 9296named ASL operator that opens a new scope -- Scope, Device, 9297PowerResource, 9298Processor, and ThermalZone. In these cases, any children of the original 9299operator could not be accessed via the alias, potentially causing 9300unexpected 9301AE_NOT_FOUND exceptions. (BZ 9067) 9302 9303Fixed a problem with the Package operator where all named references were 9304created as object references and left otherwise unresolved. According to 9305the 9306ACPI specification, a Package can only contain Data Objects or references 9307to 9308control methods. The implication is that named references to Data Objects 9309(Integer, Buffer, String, Package, BufferField, Field) should be resolved 9310immediately upon package creation. This is the approach taken with this 9311change. References to all other named objects (Methods, Devices, Scopes, 9312etc.) are all now properly created as reference objects. (BZ 5328) 9313 9314Reverted a change to Notify handling that was introduced in version 931520070508. This version changed the Notify handling from asynchronous to 9316fully synchronous (Device driver Notify handling with respect to the 9317Notify 9318ASL operator). It was found that this change caused more problems than it 9319solved and was removed by most users. 9320 9321Fixed a problem with the Increment and Decrement operators where the type 9322of 9323the target object could be unexpectedly and incorrectly changed. (BZ 353) 9324Lin Ming. 9325 9326Fixed a problem with the Load and LoadTable operators where the table 9327location within the namespace was ignored. Instead, the table was always 9328loaded into the root or current scope. Lin Ming. 9329 9330Fixed a problem with the Load operator when loading a table from a buffer 9331object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 9332 9333Fixed a problem with the Debug object where a store of a DdbHandle 9334reference 9335object to the Debug object could cause a fault. 9336 9337Added a table checksum verification for the Load operator, in the case 9338where 9339the load is from a buffer. (BZ 578). 9340 9341Implemented additional parameter validation for the LoadTable operator. 9342The 9343length of the input strings SignatureString, OemIdString, and OemTableId 9344are 9345now checked for maximum lengths. (BZ 582) Lin Ming. 9346 9347Example Code and Data Size: These are the sizes for the OS-independent 9348acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9349debug version of the code includes the debug output trace mechanism and 9350has 9351a much larger code and data size. 9352 9353 Previous Release: 9354 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 9355 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 9356 Current Release: 9357 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 9358 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 9359 9360 93612) iASL Compiler/Disassembler: 9362 9363Fixed a problem where if a single file was specified and the file did not 9364exist, no error message was emitted. (Introduced with wildcard support in 9365version 20070917.) 9366 9367---------------------------------------- 936819 September 2007. Summary of changes for version 20070919: 9369 93701) ACPI CA Core Subsystem: 9371 9372Designed and implemented new external interfaces to install and remove 9373handlers for ACPI table-related events. Current events that are defined 9374are 9375LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 9376they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 9377AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 9378 9379Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 9380(acpi_serialized option on Linux) could cause some systems to hang during 9381initialization. (Bob Moore) BZ 8171 9382 9383Fixed a problem where objects of certain types (Device, ThermalZone, 9384Processor, PowerResource) can be not found if they are declared and 9385referenced from within the same control method (Lin Ming) BZ 341 9386 9387Example Code and Data Size: These are the sizes for the OS-independent 9388acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9389debug version of the code includes the debug output trace mechanism and 9390has 9391a much larger code and data size. 9392 9393 Previous Release: 9394 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 9395 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 9396 Current Release: 9397 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 9398 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 9399 9400 94012) iASL Compiler/Disassembler: 9402 9403Implemented support to allow multiple files to be compiled/disassembled 9404in 9405a 9406single invocation. This includes command line wildcard support for both 9407the 9408Windows and Unix versions of the compiler. This feature simplifies the 9409disassembly and compilation of multiple ACPI tables in a single 9410directory. 9411 9412---------------------------------------- 941308 May 2007. Summary of changes for version 20070508: 9414 94151) ACPI CA Core Subsystem: 9416 9417Implemented a Microsoft compatibility design change for the handling of 9418the 9419Notify AML operator. Previously, notify handlers were dispatched and 9420executed completely asynchronously in a deferred thread. The new design 9421still executes the notify handlers in a different thread, but the 9422original 9423thread that executed the Notify() now waits at a synchronization point 9424for 9425the notify handler to complete. Some machines depend on a synchronous 9426Notify 9427operator in order to operate correctly. 9428 9429Implemented support to allow Package objects to be passed as method 9430arguments to the external AcpiEvaluateObject interface. Previously, this 9431would return the AE_NOT_IMPLEMENTED exception. This feature had not been 9432implemented since there were no reserved control methods that required it 9433until recently. 9434 9435Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 9436that 9437contained invalid non-zero values in reserved fields could cause later 9438failures because these fields have meaning in later revisions of the 9439FADT. 9440For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 9441fields 9442are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 9443 9444Fixed a problem where the Global Lock handle was not properly updated if 9445a 9446thread that acquired the Global Lock via executing AML code then 9447attempted 9448to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 9449Joe 9450Liu. 9451 9452Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 9453could be corrupted if the interrupt being removed was at the head of the 9454list. Reported by Linn Crosetto. 9455 9456Example Code and Data Size: These are the sizes for the OS-independent 9457acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9458debug version of the code includes the debug output trace mechanism and 9459has 9460a much larger code and data size. 9461 9462 Previous Release: 9463 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9464 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 9465 Current Release: 9466 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 9467 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 9468 9469---------------------------------------- 947020 March 2007. Summary of changes for version 20070320: 9471 94721) ACPI CA Core Subsystem: 9473 9474Implemented a change to the order of interpretation and evaluation of AML 9475operand objects within the AML interpreter. The interpreter now evaluates 9476operands in the order that they appear in the AML stream (and the 9477corresponding ASL code), instead of in the reverse order (after the 9478entire 9479operand list has been parsed). The previous behavior caused several 9480subtle 9481incompatibilities with the Microsoft AML interpreter as well as being 9482somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 9483 9484Implemented a change to the ACPI Global Lock support. All interfaces to 9485the 9486global lock now allow the same thread to acquire the lock multiple times. 9487This affects the AcpiAcquireGlobalLock external interface to the global 9488lock 9489as well as the internal use of the global lock to support AML fields -- a 9490control method that is holding the global lock can now simultaneously 9491access 9492AML fields that require global lock protection. Previously, in both 9493cases, 9494this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 9495to 9496AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 9497Controller. There is no change to the behavior of the AML Acquire 9498operator, 9499as this can already be used to acquire a mutex multiple times by the same 9500thread. BZ 8066. With assistance from Alexey Starikovskiy. 9501 9502Fixed a problem where invalid objects could be referenced in the AML 9503Interpreter after error conditions. During operand evaluation, ensure 9504that 9505the internal "Return Object" field is cleared on error and only valid 9506pointers are stored there. Caused occasional access to deleted objects 9507that 9508resulted in "large reference count" warning messages. Valery Podrezov. 9509 9510Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 9511on 9512deeply nested control method invocations. BZ 7873, local BZ 487. Valery 9513Podrezov. 9514 9515Fixed an internal problem with the handling of result objects on the 9516interpreter result stack. BZ 7872. Valery Podrezov. 9517 9518Removed obsolete code that handled the case where AML_NAME_OP is the 9519target 9520of a reference (Reference.Opcode). This code was no longer necessary. BZ 95217874. Valery Podrezov. 9522 9523Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 9524was 9525a 9526remnant from the previously discontinued 16-bit support. 9527 9528Example Code and Data Size: These are the sizes for the OS-independent 9529acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9530debug version of the code includes the debug output trace mechanism and 9531has 9532a much larger code and data size. 9533 9534 Previous Release: 9535 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9536 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9537 Current Release: 9538 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9539 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 9540 9541---------------------------------------- 954226 January 2007. Summary of changes for version 20070126: 9543 95441) ACPI CA Core Subsystem: 9545 9546Added the 2007 copyright to all module headers and signons. This affects 9547virtually every file in the ACPICA core subsystem, the iASL compiler, and 9548the utilities. 9549 9550Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 9551during a table load. A bad pointer was passed in the case where the DSDT 9552is 9553overridden, causing a fault in this case. 9554 9555Example Code and Data Size: These are the sizes for the OS-independent 9556acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9557debug version of the code includes the debug output trace mechanism and 9558has 9559a much larger code and data size. 9560 9561 Previous Release: 9562 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9563 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9564 Current Release: 9565 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9566 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9567 9568---------------------------------------- 956915 December 2006. Summary of changes for version 20061215: 9570 95711) ACPI CA Core Subsystem: 9572 9573Support for 16-bit ACPICA has been completely removed since it is no 9574longer 9575necessary and it clutters the code. All 16-bit macros, types, and 9576conditional compiles have been removed, cleaning up and simplifying the 9577code 9578across the entire subsystem. DOS support is no longer needed since the 9579bootable Linux firmware kit is now available. 9580 9581The handler for the Global Lock is now removed during AcpiTerminate to 9582enable a clean subsystem restart, via the implementation of the 9583AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 9584HP) 9585 9586Implemented enhancements to the multithreading support within the 9587debugger 9588to enable improved multithreading debugging and evaluation of the 9589subsystem. 9590(Valery Podrezov) 9591 9592Debugger: Enhanced the Statistics/Memory command to emit the total 9593(maximum) 9594memory used during the execution, as well as the maximum memory consumed 9595by 9596each of the various object types. (Valery Podrezov) 9597 9598Example Code and Data Size: These are the sizes for the OS-independent 9599acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9600debug version of the code includes the debug output trace mechanism and 9601has 9602a much larger code and data size. 9603 9604 Previous Release: 9605 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 9606 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 9607 Current Release: 9608 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9609 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9610 9611 96122) iASL Compiler/Disassembler and Tools: 9613 9614AcpiExec: Implemented a new option (-m) to display full memory use 9615statistics upon subsystem/program termination. (Valery Podrezov) 9616 9617---------------------------------------- 961809 November 2006. Summary of changes for version 20061109: 9619 96201) ACPI CA Core Subsystem: 9621 9622Optimized the Load ASL operator in the case where the source operand is 9623an 9624operation region. Simply map the operation region memory, instead of 9625performing a bytewise read. (Region must be of type SystemMemory, see 9626below.) 9627 9628Fixed the Load ASL operator for the case where the source operand is a 9629region field. A buffer object is also allowed as the source operand. BZ 9630480 9631 9632Fixed a problem where the Load ASL operator allowed the source operand to 9633be 9634an operation region of any type. It is now restricted to regions of type 9635SystemMemory, as per the ACPI specification. BZ 481 9636 9637Additional cleanup and optimizations for the new Table Manager code. 9638 9639AcpiEnable will now fail if all of the required ACPI tables are not 9640loaded 9641(FADT, FACS, DSDT). BZ 477 9642 9643Added #pragma pack(8/4) to acobject.h to ensure that the structures in 9644this 9645header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 9646manually optimized to be aligned and will not work if it is byte-packed. 9647 9648Example Code and Data Size: These are the sizes for the OS-independent 9649acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9650debug version of the code includes the debug output trace mechanism and 9651has 9652a much larger code and data size. 9653 9654 Previous Release: 9655 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 9656 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 9657 Current Release: 9658 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 9659 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 9660 9661 96622) iASL Compiler/Disassembler and Tools: 9663 9664Fixed a problem where the presence of the _OSI predefined control method 9665within complex expressions could cause an internal compiler error. 9666 9667AcpiExec: Implemented full region support for multiple address spaces. 9668SpaceId is now part of the REGION object. BZ 429 9669 9670---------------------------------------- 967111 October 2006. Summary of changes for version 20061011: 9672 96731) ACPI CA Core Subsystem: 9674 9675Completed an AML interpreter performance enhancement for control method 9676execution. Previously a 2-pass parse/execution, control methods are now 9677completely parsed and executed in a single pass. This improves overall 9678interpreter performance by ~25%, reduces code size, and reduces CPU stack 9679use. (Valery Podrezov + interpreter changes in version 20051202 that 9680eliminated namespace loading during the pass one parse.) 9681 9682Implemented _CID support for PCI Root Bridge detection. If the _HID does 9683not 9684match the predefined PCI Root Bridge IDs, the _CID list (if present) is 9685now 9686obtained and also checked for an ID match. 9687 9688Implemented additional support for the PCI _ADR execution: upsearch until 9689a 9690device scope is found before executing _ADR. This allows PCI_Config 9691operation regions to be declared locally within control methods 9692underneath 9693PCI device objects. 9694 9695Fixed a problem with a possible race condition between threads executing 9696AcpiWalkNamespace and the AML interpreter. This condition was removed by 9697modifying AcpiWalkNamespace to (by default) ignore all temporary 9698namespace 9699entries created during any concurrent control method execution. An 9700additional namespace race condition is known to exist between 9701AcpiWalkNamespace and the Load/Unload ASL operators and is still under 9702investigation. 9703 9704Restructured the AML ParseLoop function, breaking it into several 9705subfunctions in order to reduce CPU stack use and improve 9706maintainability. 9707(Mikhail Kouzmich) 9708 9709AcpiGetHandle: Fix for parameter validation to detect invalid 9710combinations 9711of prefix handle and pathname. BZ 478 9712 9713Example Code and Data Size: These are the sizes for the OS-independent 9714acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9715debug version of the code includes the debug output trace mechanism and 9716has 9717a much larger code and data size. 9718 9719 Previous Release: 9720 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9721 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 9722 Current Release: 9723 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 9724 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 9725 97262) iASL Compiler/Disassembler and Tools: 9727 9728Ported the -g option (get local ACPI tables) to the new ACPICA Table 9729Manager 9730to restore original behavior. 9731 9732---------------------------------------- 973327 September 2006. Summary of changes for version 20060927: 9734 97351) ACPI CA Core Subsystem: 9736 9737Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 9738These functions now use a spinlock for mutual exclusion and the interrupt 9739level indication flag is not needed. 9740 9741Fixed a problem with the Global Lock where the lock could appear to be 9742obtained before it is actually obtained. The global lock semaphore was 9743inadvertently created with one unit instead of zero units. (BZ 464) 9744Fiodor 9745Suietov. 9746 9747Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 9748during 9749a read from a buffer or region field. (BZ 458) Fiodor Suietov. 9750 9751Example Code and Data Size: These are the sizes for the OS-independent 9752acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9753debug version of the code includes the debug output trace mechanism and 9754has 9755a much larger code and data size. 9756 9757 Previous Release: 9758 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9759 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 9760 Current Release: 9761 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9762 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 9763 9764 97652) iASL Compiler/Disassembler and Tools: 9766 9767Fixed a compilation problem with the pre-defined Resource Descriptor 9768field 9769names where an "object does not exist" error could be incorrectly 9770generated 9771if the parent ResourceTemplate pathname places the template within a 9772different namespace scope than the current scope. (BZ 7212) 9773 9774Fixed a problem where the compiler could hang after syntax errors 9775detected 9776in an ElseIf construct. (BZ 453) 9777 9778Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 9779operator. An incorrect output filename was produced when this parameter 9780was 9781a null string (""). Now, the original input filename is used as the AML 9782output filename, with an ".aml" extension. 9783 9784Implemented a generic batch command mode for the AcpiExec utility 9785(execute 9786any AML debugger command) (Valery Podrezov). 9787 9788---------------------------------------- 978912 September 2006. Summary of changes for version 20060912: 9790 97911) ACPI CA Core Subsystem: 9792 9793Enhanced the implementation of the "serialized mode" of the interpreter 9794(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 9795specified, instead of creating a serialization semaphore per control 9796method, 9797the interpreter lock is simply no longer released before a blocking 9798operation during control method execution. This effectively makes the AML 9799Interpreter single-threaded. The overhead of a semaphore per-method is 9800eliminated. 9801 9802Fixed a regression where an error was no longer emitted if a control 9803method 9804attempts to create 2 objects of the same name. This once again returns 9805AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 9806that 9807will dynamically serialize the control method to possible prevent future 9808errors. (BZ 440) 9809 9810Integrated a fix for a problem with PCI Express HID detection in the PCI 9811Config Space setup procedure. (BZ 7145) 9812 9813Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 9814AcpiHwInitialize function - the FADT registers are now validated when the 9815table is loaded. 9816 9817Added two new warnings during FADT verification - 1) if the FADT is 9818larger 9819than the largest known FADT version, and 2) if there is a mismatch 9820between 9821a 982232-bit block address and the 64-bit X counterpart (when both are non- 9823zero.) 9824 9825Example Code and Data Size: These are the sizes for the OS-independent 9826acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9827debug version of the code includes the debug output trace mechanism and 9828has 9829a much larger code and data size. 9830 9831 Previous Release: 9832 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 9833 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 9834 Current Release: 9835 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9836 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 9837 9838 98392) iASL Compiler/Disassembler and Tools: 9840 9841Fixed a problem with the implementation of the Switch() operator where 9842the 9843temporary variable was declared too close to the actual Switch, instead 9844of 9845at method level. This could cause a problem if the Switch() operator is 9846within a while loop, causing an error on the second iteration. (BZ 460) 9847 9848Disassembler - fix for error emitted for unknown type for target of scope 9849operator. Now, ignore it and continue. 9850 9851Disassembly of an FADT now verifies the input FADT and reports any errors 9852found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 9853 9854Disassembly of raw data buffers with byte initialization data now 9855prefixes 9856each output line with the current buffer offset. 9857 9858Disassembly of ASF! table now includes all variable-length data fields at 9859the end of some of the subtables. 9860 9861The disassembler now emits a comment if a buffer appears to be a 9862ResourceTemplate, but cannot be disassembled as such because the EndTag 9863does 9864not appear at the very end of the buffer. 9865 9866AcpiExec - Added the "-t" command line option to enable the serialized 9867mode 9868of the AML interpreter. 9869 9870---------------------------------------- 987131 August 2006. Summary of changes for version 20060831: 9872 98731) ACPI CA Core Subsystem: 9874 9875Miscellaneous fixes for the Table Manager: 9876- Correctly initialize internal common FADT for all 64-bit "X" fields 9877- Fixed a couple table mapping issues during table load 9878- Fixed a couple alignment issues for IA64 9879- Initialize input array to zero in AcpiInitializeTables 9880- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 9881AcpiGetTableByIndex 9882 9883Change for GPE support: when a "wake" GPE is received, all wake GPEs are 9884now 9885immediately disabled to prevent the waking GPE from firing again and to 9886prevent other wake GPEs from interrupting the wake process. 9887 9888Added the AcpiGpeCount global that tracks the number of processed GPEs, 9889to 9890be used for debugging systems with a large number of ACPI interrupts. 9891 9892Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 9893both the ACPICA headers and the disassembler. 9894 9895Example Code and Data Size: These are the sizes for the OS-independent 9896acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9897debug version of the code includes the debug output trace mechanism and 9898has 9899a much larger code and data size. 9900 9901 Previous Release: 9902 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 9903 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 9904 Current Release: 9905 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 9906 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 9907 9908 99092) iASL Compiler/Disassembler and Tools: 9910 9911Disassembler support for the DMAR ACPI table. 9912 9913---------------------------------------- 991423 August 2006. Summary of changes for version 20060823: 9915 99161) ACPI CA Core Subsystem: 9917 9918The Table Manager component has been completely redesigned and 9919reimplemented. The new design is much simpler, and reduces the overall 9920code 9921and data size of the kernel-resident ACPICA by approximately 5%. Also, it 9922is 9923now possible to obtain the ACPI tables very early during kernel 9924initialization, even before dynamic memory management is initialized. 9925(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 9926 9927Obsolete ACPICA interfaces: 9928 9929- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 9930init 9931time). 9932- AcpiLoadTable: Not needed. 9933- AcpiUnloadTable: Not needed. 9934 9935New ACPICA interfaces: 9936 9937- AcpiInitializeTables: Must be called before the table manager can be 9938used. 9939- AcpiReallocateRootTable: Used to transfer the root table to dynamically 9940allocated memory after it becomes available. 9941- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 9942tables 9943in the RSDT/XSDT. 9944 9945Other ACPICA changes: 9946 9947- AcpiGetTableHeader returns the actual mapped table header, not a copy. 9948Use 9949AcpiOsUnmapMemory to free this mapping. 9950- AcpiGetTable returns the actual mapped table. The mapping is managed 9951internally and must not be deleted by the caller. Use of this interface 9952causes no additional dynamic memory allocation. 9953- AcpiFindRootPointer: Support for physical addressing has been 9954eliminated, 9955it appeared to be unused. 9956- The interface to AcpiOsMapMemory has changed to be consistent with the 9957other allocation interfaces. 9958- The interface to AcpiOsGetRootPointer has changed to eliminate 9959unnecessary 9960parameters. 9961- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 996264- 9963bit platforms. Was previously 64 bits on all platforms. 9964- The interface to the ACPI Global Lock acquire/release macros have 9965changed 9966slightly since ACPICA no longer keeps a local copy of the FACS with a 9967constructed pointer to the actual global lock. 9968 9969Porting to the new table manager: 9970 9971- AcpiInitializeTables: Must be called once, and can be called anytime 9972during the OS initialization process. It allows the host to specify an 9973area 9974of memory to be used to store the internal version of the RSDT/XSDT (root 9975table). This allows the host to access ACPI tables before memory 9976management 9977is initialized and running. 9978- AcpiReallocateRootTable: Can be called after memory management is 9979running 9980to copy the root table to a dynamically allocated array, freeing up the 9981scratch memory specified in the call to AcpiInitializeTables. 9982- AcpiSubsystemInitialize: This existing interface is independent of the 9983Table Manager, and does not have to be called before the Table Manager 9984can 9985be used, it only must be called before the rest of ACPICA can be used. 9986- ACPI Tables: Some changes have been made to the names and structure of 9987the 9988actbl.h and actbl1.h header files and may require changes to existing 9989code. 9990For example, bitfields have been completely removed because of their lack 9991of 9992portability across C compilers. 9993- Update interfaces to the Global Lock acquire/release macros if local 9994versions are used. (see acwin.h) 9995 9996Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 9997 9998New files: tbfind.c 9999 10000Example Code and Data Size: These are the sizes for the OS-independent 10001acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10002debug version of the code includes the debug output trace mechanism and 10003has 10004a much larger code and data size. 10005 10006 Previous Release: 10007 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10008 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10009 Current Release: 10010 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 10011 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 10012 10013 100142) iASL Compiler/Disassembler and Tools: 10015 10016No changes for this release. 10017 10018---------------------------------------- 1001921 July 2006. Summary of changes for version 20060721: 10020 100211) ACPI CA Core Subsystem: 10022 10023The full source code for the ASL test suite used to validate the iASL 10024compiler and the ACPICA core subsystem is being released with the ACPICA 10025source for the first time. The source is contained in a separate package 10026and 10027consists of over 1100 files that exercise all ASL/AML operators. The 10028package 10029should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 10030Fiodor 10031Suietov) 10032 10033Completed a new design and implementation for support of the ACPI Global 10034Lock. On the OS side, the global lock is now treated as a standard AML 10035mutex. Previously, multiple OS threads could "acquire" the global lock 10036simultaneously. However, this could cause the BIOS to be starved out of 10037the 10038lock - especially in cases such as the Embedded Controller driver where 10039there is a tight coupling between the OS and the BIOS. 10040 10041Implemented an optimization for the ACPI Global Lock interrupt mechanism. 10042The Global Lock interrupt handler no longer queues the execution of a 10043separate thread to signal the global lock semaphore. Instead, the 10044semaphore 10045is signaled directly from the interrupt handler. 10046 10047Implemented support within the AML interpreter for package objects that 10048contain a larger AML length (package list length) than the package 10049element 10050count. In this case, the length of the package is truncated to match the 10051package element count. Some BIOS code apparently modifies the package 10052length 10053on the fly, and this change supports this behavior. Provides 10054compatibility 10055with the MS AML interpreter. (With assistance from Fiodor Suietov) 10056 10057Implemented a temporary fix for the BankValue parameter of a Bank Field 10058to 10059support all constant values, now including the Zero and One opcodes. 10060Evaluation of this parameter must eventually be converted to a full 10061TermArg 10062evaluation. A not-implemented error is now returned (temporarily) for 10063non- 10064constant values for this parameter. 10065 10066Fixed problem reports (Fiodor Suietov) integrated: 10067- Fix for premature object deletion after CopyObject on Operation Region 10068(BZ 10069350) 10070 10071Example Code and Data Size: These are the sizes for the OS-independent 10072acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10073debug version of the code includes the debug output trace mechanism and 10074has 10075a much larger code and data size. 10076 10077 Previous Release: 10078 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 10079 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 10080 Current Release: 10081 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10082 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10083 10084 100852) iASL Compiler/Disassembler and Tools: 10086 10087No changes for this release. 10088 10089---------------------------------------- 1009007 July 2006. Summary of changes for version 20060707: 10091 100921) ACPI CA Core Subsystem: 10093 10094Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 10095that do not allow the initialization of address pointers within packed 10096structures - even though the hardware itself may support misaligned 10097transfers. Some of the debug data structures are packed by default to 10098minimize size. 10099 10100Added an error message for the case where AcpiOsGetThreadId() returns 10101zero. 10102A non-zero value is required by the core ACPICA code to ensure the proper 10103operation of AML mutexes and recursive control methods. 10104 10105The DSDT is now the only ACPI table that determines whether the AML 10106interpreter is in 32-bit or 64-bit mode. Not really a functional change, 10107but 10108the hooks for per-table 32/64 switching have been removed from the code. 10109A 10110clarification to the ACPI specification is forthcoming in ACPI 3.0B. 10111 10112Fixed a possible leak of an OwnerID in the error path of 10113AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 10114deletion to a single place in AcpiTbUninstallTable to correct possible 10115leaks 10116when using the AcpiTbDeleteTablesByType interface (with assistance from 10117Lance Ortiz.) 10118 10119Fixed a problem with Serialized control methods where the semaphore 10120associated with the method could be over-signaled after multiple method 10121invocations. 10122 10123Fixed two issues with the locking of the internal namespace data 10124structure. 10125Both the Unload() operator and AcpiUnloadTable interface now lock the 10126namespace during the namespace deletion associated with the table unload 10127(with assistance from Linn Crosetto.) 10128 10129Fixed problem reports (Valery Podrezov) integrated: 10130- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 10131 10132Fixed problem reports (Fiodor Suietov) integrated: 10133- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 10134- On Address Space handler deletion, needless deactivation call (BZ 374) 10135- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 10136375) 10137- Possible memory leak, Notify sub-objects of Processor, Power, 10138ThermalZone 10139(BZ 376) 10140- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 10141- Minimum Length of RSDT should be validated (BZ 379) 10142- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 10143Handler (BZ (380) 10144- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 10145loaded 10146(BZ 381) 10147 10148Example Code and Data Size: These are the sizes for the OS-independent 10149acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10150debug version of the code includes the debug output trace mechanism and 10151has 10152a much larger code and data size. 10153 10154 Previous Release: 10155 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10156 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10157 Current Release: 10158 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10159 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10160 10161 101622) iASL Compiler/Disassembler and Tools: 10163 10164Fixed problem reports: 10165Compiler segfault when ASL contains a long (>1024) String declaration (BZ 10166436) 10167 10168---------------------------------------- 1016923 June 2006. Summary of changes for version 20060623: 10170 101711) ACPI CA Core Subsystem: 10172 10173Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 10174allows the type to be customized to the host OS for improved efficiency 10175(since a spinlock is usually a very small object.) 10176 10177Implemented support for "ignored" bits in the ACPI registers. According 10178to 10179the ACPI specification, these bits should be preserved when writing the 10180registers via a read/modify/write cycle. There are 3 bits preserved in 10181this 10182manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 10183 10184Implemented the initial deployment of new OSL mutex interfaces. Since 10185some 10186host operating systems have separate mutex and semaphore objects, this 10187feature was requested. The base code now uses mutexes (and the new mutex 10188interfaces) wherever a binary semaphore was used previously. However, for 10189the current release, the mutex interfaces are defined as macros to map 10190them 10191to the existing semaphore interfaces. Therefore, no OSL changes are 10192required 10193at this time. (See acpiosxf.h) 10194 10195Fixed several problems with the support for the control method SyncLevel 10196parameter. The SyncLevel now works according to the ACPI specification 10197and 10198in concert with the Mutex SyncLevel parameter, since the current 10199SyncLevel 10200is a property of the executing thread. Mutual exclusion for control 10201methods 10202is now implemented with a mutex instead of a semaphore. 10203 10204Fixed three instances of the use of the C shift operator in the bitfield 10205support code (exfldio.c) to avoid the use of a shift value larger than 10206the 10207target data width. The behavior of C compilers is undefined in this case 10208and 10209can cause unpredictable results, and therefore the case must be detected 10210and 10211avoided. (Fiodor Suietov) 10212 10213Added an info message whenever an SSDT or OEM table is loaded dynamically 10214via the Load() or LoadTable() ASL operators. This should improve 10215debugging 10216capability since it will show exactly what tables have been loaded 10217(beyond 10218the tables present in the RSDT/XSDT.) 10219 10220Example Code and Data Size: These are the sizes for the OS-independent 10221acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10222debug version of the code includes the debug output trace mechanism and 10223has 10224a much larger code and data size. 10225 10226 Previous Release: 10227 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10228 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10229 Current Release: 10230 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10231 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10232 10233 102342) iASL Compiler/Disassembler and Tools: 10235 10236No changes for this release. 10237 10238---------------------------------------- 1023908 June 2006. Summary of changes for version 20060608: 10240 102411) ACPI CA Core Subsystem: 10242 10243Converted the locking mutex used for the ACPI hardware to a spinlock. 10244This 10245change should eliminate all problems caused by attempting to acquire a 10246semaphore at interrupt level, and it means that all ACPICA external 10247interfaces that directly access the ACPI hardware can be safely called 10248from 10249interrupt level. OSL code that implements the semaphore interfaces should 10250be 10251able to eliminate any workarounds for being called at interrupt level. 10252 10253Fixed a regression introduced in 20060526 where the ACPI device 10254initialization could be prematurely aborted with an AE_NOT_FOUND if a 10255device 10256did not have an optional _INI method. 10257 10258Fixed an IndexField issue where a write to the Data Register should be 10259limited in size to the AccessSize (width) of the IndexField itself. (BZ 10260433, 10261Fiodor Suietov) 10262 10263Fixed problem reports (Valery Podrezov) integrated: 10264- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 10265 10266Fixed problem reports (Fiodor Suietov) integrated: 10267- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 10268 10269Removed four global mutexes that were obsolete and were no longer being 10270used. 10271 10272Example Code and Data Size: These are the sizes for the OS-independent 10273acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10274debug version of the code includes the debug output trace mechanism and 10275has 10276a much larger code and data size. 10277 10278 Previous Release: 10279 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 10280 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 10281 Current Release: 10282 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10283 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10284 10285 102862) iASL Compiler/Disassembler and Tools: 10287 10288Fixed a fault when using -g option (get tables from registry) on Windows 10289machines. 10290 10291Fixed problem reports integrated: 10292- Generate error if CreateField NumBits parameter is zero. (BZ 405) 10293- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 10294Suietov) 10295- Global table revision override (-r) is ignored (BZ 413) 10296 10297---------------------------------------- 1029826 May 2006. Summary of changes for version 20060526: 10299 103001) ACPI CA Core Subsystem: 10301 10302Restructured, flattened, and simplified the internal interfaces for 10303namespace object evaluation - resulting in smaller code, less CPU stack 10304use, 10305and fewer interfaces. (With assistance from Mikhail Kouzmich) 10306 10307Fixed a problem with the CopyObject operator where the first parameter 10308was 10309not typed correctly for the parser, interpreter, compiler, and 10310disassembler. 10311Caused various errors and unexpected behavior. 10312 10313Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 10314produced incorrect results with some C compilers. Since the behavior of C 10315compilers when the shift value is larger than the datatype width is 10316apparently not well defined, the interpreter now detects this condition 10317and 10318simply returns zero as expected in all such cases. (BZ 395) 10319 10320Fixed problem reports (Valery Podrezov) integrated: 10321- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 10322- Allow interpreter to handle nested method declarations (BZ 5361) 10323 10324Fixed problem reports (Fiodor Suietov) integrated: 10325- AcpiTerminate doesn't free debug memory allocation list objects (BZ 10326355) 10327- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 10328356) 10329- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 10330- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 10331- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 10332- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 10333- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 10334- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 10335- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 10336365) 10337- Status of the Global Initialization Handler call not used (BZ 366) 10338- Incorrect object parameter to Global Initialization Handler (BZ 367) 10339 10340Example Code and Data Size: These are the sizes for the OS-independent 10341acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10342debug version of the code includes the debug output trace mechanism and 10343has 10344a much larger code and data size. 10345 10346 Previous Release: 10347 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 10348 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 10349 Current Release: 10350 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 10351 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 10352 10353 103542) iASL Compiler/Disassembler and Tools: 10355 10356Modified the parser to allow the names IO, DMA, and IRQ to be used as 10357namespace identifiers with no collision with existing resource descriptor 10358macro names. This provides compatibility with other ASL compilers and is 10359most useful for disassembly/recompilation of existing tables without 10360parse 10361errors. (With assistance from Thomas Renninger) 10362 10363Disassembler: fixed an incorrect disassembly problem with the 10364DataTableRegion and CopyObject operators. Fixed a possible fault during 10365disassembly of some Alias operators. 10366 10367---------------------------------------- 1036812 May 2006. Summary of changes for version 20060512: 10369 103701) ACPI CA Core Subsystem: 10371 10372Replaced the AcpiOsQueueForExecution interface with a new interface named 10373AcpiOsExecute. The major difference is that the new interface does not 10374have 10375a Priority parameter, this appeared to be useless and has been replaced 10376by 10377a 10378Type parameter. The Type tells the host what type of execution is being 10379requested, such as global lock handler, notify handler, GPE handler, etc. 10380This allows the host to queue and execute the request as appropriate for 10381the 10382request type, possibly using different work queues and different 10383priorities 10384for the various request types. This enables fixes for multithreading 10385deadlock problems such as BZ #5534, and will require changes to all 10386existing 10387OS interface layers. (Alexey Starikovskiy and Bob Moore) 10388 10389Fixed a possible memory leak associated with the support for the so- 10390called 10391"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 10392Suietov) 10393 10394Fixed a problem with the Load() operator where a table load from an 10395operation region could overwrite an internal table buffer by up to 7 10396bytes 10397and cause alignment faults on IPF systems. (With assistance from Luming 10398Yu) 10399 10400Example Code and Data Size: These are the sizes for the OS-independent 10401acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10402debug version of the code includes the debug output trace mechanism and 10403has 10404a much larger code and data size. 10405 10406 Previous Release: 10407 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 10408 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 10409 Current Release: 10410 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 10411 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 10412 10413 10414 104152) iASL Compiler/Disassembler and Tools: 10416 10417Disassembler: Implemented support to cross reference the internal 10418namespace 10419and automatically generate ASL External() statements for symbols not 10420defined 10421within the current table being disassembled. This will simplify the 10422disassembly and recompilation of interdependent tables such as SSDTs 10423since 10424these statements will no longer have to be added manually. 10425 10426Disassembler: Implemented experimental support to automatically detect 10427invocations of external control methods and generate appropriate 10428External() 10429statements. This is problematic because the AML cannot be correctly 10430parsed 10431until the number of arguments for each control method is known. 10432Currently, 10433standalone method invocations and invocations as the source operand of a 10434Store() statement are supported. 10435 10436Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 10437LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 10438LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 10439more readable and likely closer to the original ASL source. 10440 10441---------------------------------------- 1044221 April 2006. Summary of changes for version 20060421: 10443 104441) ACPI CA Core Subsystem: 10445 10446Removed a device initialization optimization introduced in 20051216 where 10447the _STA method was not run unless an _INI was also present for the same 10448device. This optimization could cause problems because it could allow 10449_INI 10450methods to be run within a not-present device subtree. (If a not-present 10451device had no _INI, _STA would not be run, the not-present status would 10452not 10453be discovered, and the children of the device would be incorrectly 10454traversed.) 10455 10456Implemented a new _STA optimization where namespace subtrees that do not 10457contain _INI are identified and ignored during device initialization. 10458Selectively running _STA can significantly improve boot time on large 10459machines (with assistance from Len Brown.) 10460 10461Implemented support for the device initialization case where the returned 10462_STA flags indicate a device not-present but functioning. In this case, 10463_INI 10464is not run, but the device children are examined for presence, as per the 10465ACPI specification. 10466 10467Implemented an additional change to the IndexField support in order to 10468conform to MS behavior. The value written to the Index Register is not 10469simply a byte offset, it is a byte offset in units of the access width of 10470the parent Index Field. (Fiodor Suietov) 10471 10472Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 10473interface is called during the creation of all AML operation regions, and 10474allows the host OS to exert control over what addresses it will allow the 10475AML code to access. Operation Regions whose addresses are disallowed will 10476cause a runtime exception when they are actually accessed (will not 10477affect 10478or abort table loading.) See oswinxf or osunixxf for an example 10479implementation. 10480 10481Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 10482interface allows the host OS to match the various "optional" 10483interface/behavior strings for the _OSI predefined control method as 10484appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 10485for an example implementation. 10486 10487Restructured and corrected various problems in the exception handling 10488code 10489paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 10490(with assistance from Takayoshi Kochi.) 10491 10492Modified the Linux source converter to ignore quoted string literals 10493while 10494converting identifiers from mixed to lower case. This will correct 10495problems 10496with the disassembler and other areas where such strings must not be 10497modified. 10498 10499The ACPI_FUNCTION_* macros no longer require quotes around the function 10500name. This allows the Linux source converter to convert the names, now 10501that 10502the converter ignores quoted strings. 10503 10504Example Code and Data Size: These are the sizes for the OS-independent 10505acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10506debug version of the code includes the debug output trace mechanism and 10507has 10508a much larger code and data size. 10509 10510 Previous Release: 10511 10512 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 10513 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 10514 Current Release: 10515 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 10516 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 10517 10518 105192) iASL Compiler/Disassembler and Tools: 10520 10521Implemented 3 new warnings for iASL, and implemented multiple warning 10522levels 10523(w2 flag). 10524 105251) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 10526not 10527WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 10528check for the possible timeout, a warning is issued. 10529 105302) Useless operators: If an ASL operator does not specify an optional 10531target 10532operand and it also does not use the function return value from the 10533operator, a warning is issued since the operator effectively does 10534nothing. 10535 105363) Unreferenced objects: If a namespace object is created, but never 10537referenced, a warning is issued. This is a warning level 2 since there 10538are 10539cases where this is ok, such as when a secondary table is loaded that 10540uses 10541the unreferenced objects. Even so, care is taken to only flag objects 10542that 10543don't look like they will ever be used. For example, the reserved methods 10544(starting with an underscore) are usually not referenced because it is 10545expected that the OS will invoke them. 10546 10547---------------------------------------- 1054831 March 2006. Summary of changes for version 20060331: 10549 105501) ACPI CA Core Subsystem: 10551 10552Implemented header file support for the following additional ACPI tables: 10553ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 10554support, 10555all current and known ACPI tables are now defined in the ACPICA headers 10556and 10557are available for use by device drivers and other software. 10558 10559Implemented support to allow tables that contain ACPI names with invalid 10560characters to be loaded. Previously, this would cause the table load to 10561fail, but since there are several known cases of such tables on existing 10562machines, this change was made to enable ACPI support for them. Also, 10563this 10564matches the behavior of the Microsoft ACPI implementation. 10565 10566Fixed a couple regressions introduced during the memory optimization in 10567the 1056820060317 release. The namespace node definition required additional 10569reorganization and an internal datatype that had been changed to 8-bit 10570was 10571restored to 32-bit. (Valery Podrezov) 10572 10573Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 10574could be passed through to AcpiOsReleaseObject which is unexpected. Such 10575null pointers are now trapped and ignored, matching the behavior of the 10576previous implementation before the deployment of AcpiOsReleaseObject. 10577(Valery Podrezov, Fiodor Suietov) 10578 10579Fixed a memory mapping leak during the deletion of a SystemMemory 10580operation 10581region where a cached memory mapping was not deleted. This became a 10582noticeable problem for operation regions that are defined within 10583frequently 10584used control methods. (Dana Meyers) 10585 10586Reorganized the ACPI table header files into two main files: one for the 10587ACPI tables consumed by the ACPICA core, and another for the 10588miscellaneous 10589ACPI tables that are consumed by the drivers and other software. The 10590various 10591FADT definitions were merged into one common section and three different 10592tables (ACPI 1.0, 1.0+, and 2.0) 10593 10594Example Code and Data Size: These are the sizes for the OS-independent 10595acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10596debug version of the code includes the debug output trace mechanism and 10597has 10598a much larger code and data size. 10599 10600 Previous Release: 10601 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 10602 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 10603 Current Release: 10604 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 10605 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 10606 10607 106082) iASL Compiler/Disassembler and Tools: 10609 10610Disassembler: Implemented support to decode and format all non-AML ACPI 10611tables (tables other than DSDTs and SSDTs.) This includes the new tables 10612added to the ACPICA headers, therefore all current and known ACPI tables 10613are 10614supported. 10615 10616Disassembler: The change to allow ACPI names with invalid characters also 10617enables the disassembly of such tables. Invalid characters within names 10618are 10619changed to '*' to make the name printable; the iASL compiler will still 10620generate an error for such names, however, since this is an invalid ACPI 10621character. 10622 10623Implemented an option for AcpiXtract (-a) to extract all tables found in 10624the 10625input file. The default invocation extracts only the DSDTs and SSDTs. 10626 10627Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 10628makefile for the AcpiXtract utility. 10629 10630---------------------------------------- 1063117 March 2006. Summary of changes for version 20060317: 10632 106331) ACPI CA Core Subsystem: 10634 10635Implemented the use of a cache object for all internal namespace nodes. 10636Since there are about 1000 static nodes in a typical system, this will 10637decrease memory use for cache implementations that minimize per- 10638allocation 10639overhead (such as a slab allocator.) 10640 10641Removed the reference count mechanism for internal namespace nodes, since 10642it 10643was deemed unnecessary. This reduces the size of each namespace node by 10644about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 10645case, 10646and 32 bytes for the 64-bit case. 10647 10648Optimized several internal data structures to reduce object size on 64- 10649bit 10650platforms by packing data within the 64-bit alignment. This includes the 10651frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 10652instances corresponding to the namespace objects. 10653 10654Added two new strings for the predefined _OSI method: "Windows 2001.1 10655SP1" 10656and "Windows 2006". 10657 10658Split the allocation tracking mechanism out to a separate file, from 10659utalloc.c to uttrack.c. This mechanism appears to be only useful for 10660application-level code. Kernels may wish to not include uttrack.c in 10661distributions. 10662 10663Removed all remnants of the obsolete ACPI_REPORT_* macros and the 10664associated 10665code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 10666macros.) 10667 10668Code and Data Size: These are the sizes for the acpica.lib produced by 10669the 10670Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10671ACPI 10672driver or OSPM code. The debug version of the code includes the debug 10673output 10674trace mechanism and has a much larger code and data size. Note that these 10675values will vary depending on the efficiency of the compiler and the 10676compiler options used during generation. 10677 10678 Previous Release: 10679 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10680 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 10681 Current Release: 10682 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 10683 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 10684 10685 106862) iASL Compiler/Disassembler and Tools: 10687 10688Implemented an ANSI C version of the acpixtract utility. This version 10689will 10690automatically extract the DSDT and all SSDTs from the input acpidump text 10691file and dump the binary output to separate files. It can also display a 10692summary of the input file including the headers for each table found and 10693will extract any single ACPI table, with any signature. (See 10694source/tools/acpixtract) 10695 10696---------------------------------------- 1069710 March 2006. Summary of changes for version 20060310: 10698 106991) ACPI CA Core Subsystem: 10700 10701Tagged all external interfaces to the subsystem with the new 10702ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 10703assist 10704kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 10705macro. The default definition is NULL. 10706 10707Added the ACPI_THREAD_ID type for the return value from 10708AcpiOsGetThreadId. 10709This allows the host to define this as necessary to simplify kernel 10710integration. The default definition is ACPI_NATIVE_UINT. 10711 10712Fixed two interpreter problems related to error processing, the deletion 10713of 10714objects, and placing invalid pointers onto the internal operator result 10715stack. BZ 6028, 6151 (Valery Podrezov) 10716 10717Increased the reference count threshold where a warning is emitted for 10718large 10719reference counts in order to eliminate unnecessary warnings on systems 10720with 10721large namespaces (especially 64-bit.) Increased the value from 0x400 to 107220x800. 10723 10724Due to universal disagreement as to the meaning of the 'c' in the 10725calloc() 10726function, the ACPI_MEM_CALLOCATE macro has been renamed to 10727ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 10728ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 10729ACPI_FREE. 10730 10731Code and Data Size: These are the sizes for the acpica.lib produced by 10732the 10733Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10734ACPI 10735driver or OSPM code. The debug version of the code includes the debug 10736output 10737trace mechanism and has a much larger code and data size. Note that these 10738values will vary depending on the efficiency of the compiler and the 10739compiler options used during generation. 10740 10741 Previous Release: 10742 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 10743 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 10744 Current Release: 10745 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10746 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 10747 10748 107492) iASL Compiler/Disassembler: 10750 10751Disassembler: implemented support for symbolic resource descriptor 10752references. If a CreateXxxxField operator references a fixed offset 10753within 10754a 10755resource descriptor, a name is assigned to the descriptor and the offset 10756is 10757translated to the appropriate resource tag and pathname. The addition of 10758this support brings the disassembled code very close to the original ASL 10759source code and helps eliminate run-time errors when the disassembled 10760code 10761is modified (and recompiled) in such a way as to invalidate the original 10762fixed offsets. 10763 10764Implemented support for a Descriptor Name as the last parameter to the 10765ASL 10766Register() macro. This parameter was inadvertently left out of the ACPI 10767specification, and will be added for ACPI 3.0b. 10768 10769Fixed a problem where the use of the "_OSI" string (versus the full path 10770"\_OSI") caused an internal compiler error. ("No back ptr to op") 10771 10772Fixed a problem with the error message that occurs when an invalid string 10773is 10774used for a _HID object (such as one with an embedded asterisk: 10775"*PNP010A".) 10776The correct message is now displayed. 10777 10778---------------------------------------- 1077917 February 2006. Summary of changes for version 20060217: 10780 107811) ACPI CA Core Subsystem: 10782 10783Implemented a change to the IndexField support to match the behavior of 10784the 10785Microsoft AML interpreter. The value written to the Index register is now 10786a 10787byte offset, no longer an index based upon the width of the Data 10788register. 10789This should fix IndexField problems seen on some machines where the Data 10790register is not exactly one byte wide. The ACPI specification will be 10791clarified on this point. 10792 10793Fixed a problem where several resource descriptor types could overrun the 10794internal descriptor buffer due to size miscalculation: VendorShort, 10795VendorLong, and Interrupt. This was noticed on IA64 machines, but could 10796affect all platforms. 10797 10798Fixed a problem where individual resource descriptors were misaligned 10799within 10800the internal buffer, causing alignment faults on IA64 platforms. 10801 10802Code and Data Size: These are the sizes for the acpica.lib produced by 10803the 10804Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10805ACPI 10806driver or OSPM code. The debug version of the code includes the debug 10807output 10808trace mechanism and has a much larger code and data size. Note that these 10809values will vary depending on the efficiency of the compiler and the 10810compiler options used during generation. 10811 10812 Previous Release: 10813 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10814 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 10815 Current Release: 10816 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 10817 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 10818 10819 108202) iASL Compiler/Disassembler: 10821 10822Implemented support for new reserved names: _WDG and _WED are Microsoft 10823extensions for Windows Instrumentation Management, _TDL is a new ACPI- 10824defined method (Throttling Depth Limit.) 10825 10826Fixed a problem where a zero-length VendorShort or VendorLong resource 10827descriptor was incorrectly emitted as a descriptor of length one. 10828 10829---------------------------------------- 1083010 February 2006. Summary of changes for version 20060210: 10831 108321) ACPI CA Core Subsystem: 10833 10834Removed a couple of extraneous ACPI_ERROR messages that appeared during 10835normal execution. These became apparent after the conversion from 10836ACPI_DEBUG_PRINT. 10837 10838Fixed a problem where the CreateField operator could hang if the BitIndex 10839or 10840NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 10841 10842Fixed a problem where a DeRefOf operation on a buffer object incorrectly 10843failed with an exception. This also fixes a couple of related RefOf and 10844DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 10845 10846Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 10847of 10848AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 10849BZ 108505480) 10851 10852Implemented a memory cleanup at the end of the execution of each 10853iteration 10854of an AML While() loop, preventing the accumulation of outstanding 10855objects. 10856(Valery Podrezov, BZ 5427) 10857 10858Eliminated a chunk of duplicate code in the object resolution code. 10859(Valery 10860Podrezov, BZ 5336) 10861 10862Fixed several warnings during the 64-bit code generation. 10863 10864The AcpiSrc source code conversion tool now inserts one line of 10865whitespace 10866after an if() statement that is followed immediately by a comment, 10867improving 10868readability of the Linux code. 10869 10870Code and Data Size: The current and previous library sizes for the core 10871subsystem are shown below. These are the code and data sizes for the 10872acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10873These 10874values do not include any ACPI driver or OSPM code. The debug version of 10875the 10876code includes the debug output trace mechanism and has a much larger code 10877and data size. Note that these values will vary depending on the 10878efficiency 10879of the compiler and the compiler options used during generation. 10880 10881 Previous Release: 10882 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 10883 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 10884 Current Release: 10885 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10886 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 10887 10888 108892) iASL Compiler/Disassembler: 10890 10891Fixed a problem with the disassembly of a BankField operator with a 10892complex 10893expression for the BankValue parameter. 10894 10895---------------------------------------- 1089627 January 2006. Summary of changes for version 20060127: 10897 108981) ACPI CA Core Subsystem: 10899 10900Implemented support in the Resource Manager to allow unresolved 10901namestring 10902references within resource package objects for the _PRT method. This 10903support 10904is in addition to the previously implemented unresolved reference support 10905within the AML parser. If the interpreter slack mode is enabled, these 10906unresolved references will be passed through to the caller as a NULL 10907package 10908entry. 10909 10910Implemented and deployed new macros and functions for error and warning 10911messages across the subsystem. These macros are simpler and generate less 10912code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 10913ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 10914macros remain defined to allow ACPI drivers time to migrate to the new 10915macros. 10916 10917Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 10918the 10919Acquire/Release Lock OSL interfaces. 10920 10921Fixed a problem where Alias ASL operators are sometimes not correctly 10922resolved, in both the interpreter and the iASL compiler. 10923 10924Fixed several problems with the implementation of the 10925ConcatenateResTemplate 10926ASL operator. As per the ACPI specification, zero length buffers are now 10927treated as a single EndTag. One-length buffers always cause a fatal 10928exception. Non-zero length buffers that do not end with a full 2-byte 10929EndTag 10930cause a fatal exception. 10931 10932Fixed a possible structure overwrite in the AcpiGetObjectInfo external 10933interface. (With assistance from Thomas Renninger) 10934 10935Code and Data Size: The current and previous library sizes for the core 10936subsystem are shown below. These are the code and data sizes for the 10937acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10938These 10939values do not include any ACPI driver or OSPM code. The debug version of 10940the 10941code includes the debug output trace mechanism and has a much larger code 10942and data size. Note that these values will vary depending on the 10943efficiency 10944of the compiler and the compiler options used during generation. 10945 10946 Previous Release: 10947 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 10948 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 10949 Current Release: 10950 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 10951 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 10952 10953 109542) iASL Compiler/Disassembler: 10955 10956Fixed an internal error that was generated for any forward references to 10957ASL 10958Alias objects. 10959 10960---------------------------------------- 1096113 January 2006. Summary of changes for version 20060113: 10962 109631) ACPI CA Core Subsystem: 10964 10965Added 2006 copyright to all module headers and signons. This affects 10966virtually every file in the ACPICA core subsystem, iASL compiler, and the 10967utilities. 10968 10969Enhanced the ACPICA error reporting in order to simplify user migration 10970to 10971the non-debug version of ACPICA. Replaced all instances of the 10972ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 10973debug 10974levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 10975respectively. This preserves all error and warning messages in the non- 10976debug 10977version of the ACPICA code (this has been referred to as the "debug lite" 10978option.) Over 200 cases were converted to create a total of over 380 10979error/warning messages across the ACPICA code. This increases the code 10980and 10981data size of the default non-debug version of the code somewhat (about 1098213K), 10983but all error/warning reporting may be disabled if desired (and code 10984eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 10985configuration option. The size of the debug version of ACPICA remains 10986about 10987the same. 10988 10989Fixed a memory leak within the AML Debugger "Set" command. One object was 10990not properly deleted for every successful invocation of the command. 10991 10992Code and Data Size: The current and previous library sizes for the core 10993subsystem are shown below. These are the code and data sizes for the 10994acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10995These 10996values do not include any ACPI driver or OSPM code. The debug version of 10997the 10998code includes the debug output trace mechanism and has a much larger code 10999and data size. Note that these values will vary depending on the 11000efficiency 11001of the compiler and the compiler options used during generation. 11002 11003 Previous Release: 11004 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 11005 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 11006 Current Release: 11007 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 11008 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 11009 11010 110112) iASL Compiler/Disassembler: 11012 11013The compiler now officially supports the ACPI 3.0a specification that was 11014released on December 30, 2005. (Specification is available at 11015www.acpi.info) 11016 11017---------------------------------------- 1101816 December 2005. Summary of changes for version 20051216: 11019 110201) ACPI CA Core Subsystem: 11021 11022Implemented optional support to allow unresolved names within ASL Package 11023objects. A null object is inserted in the package when a named reference 11024cannot be located in the current namespace. Enabled via the interpreter 11025slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 11026machines 11027that contain such code. 11028 11029Implemented an optimization to the initialization sequence that can 11030improve 11031boot time. During ACPI device initialization, the _STA method is now run 11032if 11033and only if the _INI method exists. The _STA method is used to determine 11034if 11035the device is present; An _INI can only be run if _STA returns present, 11036but 11037it is a waste of time to run the _STA method if the _INI does not exist. 11038(Prototype and assistance from Dong Wei) 11039 11040Implemented use of the C99 uintptr_t for the pointer casting macros if it 11041is 11042available in the current compiler. Otherwise, the default (void *) cast 11043is 11044used as before. 11045 11046Fixed some possible memory leaks found within the execution path of the 11047Break, Continue, If, and CreateField operators. (Valery Podrezov) 11048 11049Fixed a problem introduced in the 20051202 release where an exception is 11050generated during method execution if a control method attempts to declare 11051another method. 11052 11053Moved resource descriptor string constants that are used by both the AML 11054disassembler and AML debugger to the common utilities directory so that 11055these components are independent. 11056 11057Implemented support in the AcpiExec utility (-e switch) to globally 11058ignore 11059exceptions during control method execution (method is not aborted.) 11060 11061Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 11062generation. 11063 11064Code and Data Size: The current and previous library sizes for the core 11065subsystem are shown below. These are the code and data sizes for the 11066acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11067These 11068values do not include any ACPI driver or OSPM code. The debug version of 11069the 11070code includes the debug output trace mechanism and has a much larger code 11071and data size. Note that these values will vary depending on the 11072efficiency 11073of the compiler and the compiler options used during generation. 11074 11075 Previous Release: 11076 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11077 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 11078 Current Release: 11079 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 11080 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 11081 11082 110832) iASL Compiler/Disassembler: 11084 11085Fixed a problem where a CPU stack overflow fault could occur if a 11086recursive 11087method call was made from within a Return statement. 11088 11089---------------------------------------- 1109002 December 2005. Summary of changes for version 20051202: 11091 110921) ACPI CA Core Subsystem: 11093 11094Modified the parsing of control methods to no longer create namespace 11095objects during the first pass of the parse. Objects are now created only 11096during the execute phase, at the moment the namespace creation operator 11097is 11098encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 11099This 11100should eliminate ALREADY_EXISTS exceptions seen on some machines where 11101reentrant control methods are protected by an AML mutex. The mutex will 11102now 11103correctly block multiple threads from attempting to create the same 11104object 11105more than once. 11106 11107Increased the number of available Owner Ids for namespace object tracking 11108from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 11109on 11110some machines with a large number of ACPI tables (either static or 11111dynamic). 11112 11113Fixed a problem with the AcpiExec utility where a fault could occur when 11114the 11115-b switch (batch mode) is used. 11116 11117Enhanced the namespace dump routine to output the owner ID for each 11118namespace object. 11119 11120Code and Data Size: The current and previous library sizes for the core 11121subsystem are shown below. These are the code and data sizes for the 11122acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11123These 11124values do not include any ACPI driver or OSPM code. The debug version of 11125the 11126code includes the debug output trace mechanism and has a much larger code 11127and data size. Note that these values will vary depending on the 11128efficiency 11129of the compiler and the compiler options used during generation. 11130 11131 Previous Release: 11132 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11133 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11134 Current Release: 11135 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11136 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 11137 11138 111392) iASL Compiler/Disassembler: 11140 11141Fixed a parse error during compilation of certain Switch/Case constructs. 11142To 11143simplify the parse, the grammar now allows for multiple Default 11144statements 11145and this error is now detected and flagged during the analysis phase. 11146 11147Disassembler: The disassembly now includes the contents of the original 11148table header within a comment at the start of the file. This includes the 11149name and version of the original ASL compiler. 11150 11151---------------------------------------- 1115217 November 2005. Summary of changes for version 20051117: 11153 111541) ACPI CA Core Subsystem: 11155 11156Fixed a problem in the AML parser where the method thread count could be 11157decremented below zero if any errors occurred during the method parse 11158phase. 11159This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 11160machines. 11161This also fixed a related regression with the mechanism that detects and 11162corrects methods that cannot properly handle reentrancy (related to the 11163deployment of the new OwnerId mechanism.) 11164 11165Eliminated the pre-parsing of control methods (to detect errors) during 11166table load. Related to the problem above, this was causing unwind issues 11167if 11168any errors occurred during the parse, and it seemed to be overkill. A 11169table 11170load should not be aborted if there are problems with any single control 11171method, thus rendering this feature rather pointless. 11172 11173Fixed a problem with the new table-driven resource manager where an 11174internal 11175buffer overflow could occur for small resource templates. 11176 11177Implemented a new external interface, AcpiGetVendorResource. This 11178interface 11179will find and return a vendor-defined resource descriptor within a _CRS 11180or 11181_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 11182Helgaas. 11183 11184Removed the length limit (200) on string objects as per the upcoming ACPI 111853.0A specification. This affects the following areas of the interpreter: 111861) 11187any implicit conversion of a Buffer to a String, 2) a String object 11188result 11189of the ASL Concatentate operator, 3) the String object result of the ASL 11190ToString operator. 11191 11192Fixed a problem in the Windows OS interface layer (OSL) where a 11193WAIT_FOREVER 11194on a semaphore object would incorrectly timeout. This allows the 11195multithreading features of the AcpiExec utility to work properly under 11196Windows. 11197 11198Updated the Linux makefiles for the iASL compiler and AcpiExec to include 11199the recently added file named "utresrc.c". 11200 11201Code and Data Size: The current and previous library sizes for the core 11202subsystem are shown below. These are the code and data sizes for the 11203acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11204These 11205values do not include any ACPI driver or OSPM code. The debug version of 11206the 11207code includes the debug output trace mechanism and has a much larger code 11208and data size. Note that these values will vary depending on the 11209efficiency 11210of the compiler and the compiler options used during generation. 11211 11212 Previous Release: 11213 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11214 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11215 Current Release: 11216 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11217 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11218 11219 112202) iASL Compiler/Disassembler: 11221 11222Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 11223specification. For the iASL compiler, this means that string literals 11224within 11225the source ASL can be of any length. 11226 11227Enhanced the listing output to dump the AML code for resource descriptors 11228immediately after the ASL code for each descriptor, instead of in a block 11229at 11230the end of the entire resource template. 11231 11232Enhanced the compiler debug output to dump the entire original parse tree 11233constructed during the parse phase, before any transforms are applied to 11234the 11235tree. The transformed tree is dumped also. 11236 11237---------------------------------------- 1123802 November 2005. Summary of changes for version 20051102: 11239 112401) ACPI CA Core Subsystem: 11241 11242Modified the subsystem initialization sequence to improve GPE support. 11243The 11244GPE initialization has been split into two parts in order to defer 11245execution 11246of the _PRW methods (Power Resources for Wake) until after the hardware 11247is 11248fully initialized and the SCI handler is installed. This allows the _PRW 11249methods to access fields protected by the Global Lock. This will fix 11250systems 11251where a NO_GLOBAL_LOCK exception has been seen during initialization. 11252 11253Converted the ACPI internal object disassemble and display code within 11254the 11255AML debugger to fully table-driven operation, reducing code size and 11256increasing maintainability. 11257 11258Fixed a regression with the ConcatenateResTemplate() ASL operator 11259introduced 11260in the 20051021 release. 11261 11262Implemented support for "local" internal ACPI object types within the 11263debugger "Object" command and the AcpiWalkNamespace external interfaces. 11264These local types include RegionFields, BankFields, IndexFields, Alias, 11265and 11266reference objects. 11267 11268Moved common AML resource handling code into a new file, "utresrc.c". 11269This 11270code is shared by both the Resource Manager and the AML Debugger. 11271 11272Code and Data Size: The current and previous library sizes for the core 11273subsystem are shown below. These are the code and data sizes for the 11274acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11275These 11276values do not include any ACPI driver or OSPM code. The debug version of 11277the 11278code includes the debug output trace mechanism and has a much larger code 11279and data size. Note that these values will vary depending on the 11280efficiency 11281of the compiler and the compiler options used during generation. 11282 11283 Previous Release: 11284 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 11285 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 11286 Current Release: 11287 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11288 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11289 11290 112912) iASL Compiler/Disassembler: 11292 11293Fixed a problem with very large initializer lists (more than 4000 11294elements) 11295for both Buffer and Package objects where the parse stack could overflow. 11296 11297Enhanced the pre-compile source code scan for non-ASCII characters to 11298ignore 11299characters within comment fields. The scan is now always performed and is 11300no 11301longer optional, detecting invalid characters within a source file 11302immediately rather than during the parse phase or later. 11303 11304Enhanced the ASL grammar definition to force early reductions on all 11305list- 11306style grammar elements so that the overall parse stack usage is greatly 11307reduced. This should improve performance and reduce the possibility of 11308parse 11309stack overflow. 11310 11311Eliminated all reduce/reduce conflicts in the iASL parser generation. 11312Also, 11313with the addition of a %expected statement, the compiler generates from 11314source with no warnings. 11315 11316Fixed a possible segment fault in the disassembler if the input filename 11317does not contain a "dot" extension (Thomas Renninger). 11318 11319---------------------------------------- 1132021 October 2005. Summary of changes for version 20051021: 11321 113221) ACPI CA Core Subsystem: 11323 11324Implemented support for the EM64T and other x86-64 processors. This 11325essentially entails recognizing that these processors support non-aligned 11326memory transfers. Previously, all 64-bit processors were assumed to lack 11327hardware support for non-aligned transfers. 11328 11329Completed conversion of the Resource Manager to nearly full table-driven 11330operation. Specifically, the resource conversion code (convert AML to 11331internal format and the reverse) and the debug code to dump internal 11332resource descriptors are fully table-driven, reducing code and data size 11333and 11334improving maintainability. 11335 11336The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 11337word 11338on 64-bit processors instead of a fixed 32-bit word. (With assistance 11339from 11340Alexey Starikovskiy) 11341 11342Implemented support within the resource conversion code for the Type- 11343Specific byte within the various ACPI 3.0 *WordSpace macros. 11344 11345Fixed some issues within the resource conversion code for the type- 11346specific 11347flags for both Memory and I/O address resource descriptors. For Memory, 11348implemented support for the MTP and TTP flags. For I/O, split the TRS and 11349TTP flags into two separate fields. 11350 11351Code and Data Size: The current and previous library sizes for the core 11352subsystem are shown below. These are the code and data sizes for the 11353acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11354These 11355values do not include any ACPI driver or OSPM code. The debug version of 11356the 11357code includes the debug output trace mechanism and has a much larger code 11358and data size. Note that these values will vary depending on the 11359efficiency 11360of the compiler and the compiler options used during generation. 11361 11362 Previous Release: 11363 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 11364 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 11365 Current Release: 11366 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 11367 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 11368 11369 11370 113712) iASL Compiler/Disassembler: 11372 11373Relaxed a compiler restriction that disallowed a ResourceIndex byte if 11374the 11375corresponding ResourceSource string was not also present in a resource 11376descriptor declaration. This restriction caused problems with existing 11377AML/ASL code that includes the Index byte without the string. When such 11378AML 11379was disassembled, it could not be compiled without modification. Further, 11380the modified code created a resource template with a different size than 11381the 11382original, breaking code that used fixed offsets into the resource 11383template 11384buffer. 11385 11386Removed a recent feature of the disassembler to ignore a lone 11387ResourceIndex 11388byte. This byte is now emitted if present so that the exact AML can be 11389reproduced when the disassembled code is recompiled. 11390 11391Improved comments and text alignment for the resource descriptor code 11392emitted by the disassembler. 11393 11394Implemented disassembler support for the ACPI 3.0 AccessSize field within 11395a 11396Register() resource descriptor. 11397 11398---------------------------------------- 1139930 September 2005. Summary of changes for version 20050930: 11400 114011) ACPI CA Core Subsystem: 11402 11403Completed a major overhaul of the Resource Manager code - specifically, 11404optimizations in the area of the AML/internal resource conversion code. 11405The 11406code has been optimized to simplify and eliminate duplicated code, CPU 11407stack 11408use has been decreased by optimizing function parameters and local 11409variables, and naming conventions across the manager have been 11410standardized 11411for clarity and ease of maintenance (this includes function, parameter, 11412variable, and struct/typedef names.) The update may force changes in some 11413driver code, depending on how resources are handled by the host OS. 11414 11415All Resource Manager dispatch and information tables have been moved to a 11416single location for clarity and ease of maintenance. One new file was 11417created, named "rsinfo.c". 11418 11419The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 11420guarantee that the argument is not evaluated twice, making them less 11421prone 11422to macro side-effects. However, since there exists the possibility of 11423additional stack use if a particular compiler cannot optimize them (such 11424as 11425in the debug generation case), the original macros are optionally 11426available. 11427Note that some invocations of the return_VALUE macro may now cause size 11428mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 11429to 11430eliminate these. (From Randy Dunlap) 11431 11432Implemented a new mechanism to enable debug tracing for individual 11433control 11434methods. A new external interface, AcpiDebugTrace, is provided to enable 11435this mechanism. The intent is to allow the host OS to easily enable and 11436disable tracing for problematic control methods. This interface can be 11437easily exposed to a user or debugger interface if desired. See the file 11438psxface.c for details. 11439 11440AcpiUtCallocate will now return a valid pointer if a length of zero is 11441specified - a length of one is used and a warning is issued. This matches 11442the behavior of AcpiUtAllocate. 11443 11444Code and Data Size: The current and previous library sizes for the core 11445subsystem are shown below. These are the code and data sizes for the 11446acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11447These 11448values do not include any ACPI driver or OSPM code. The debug version of 11449the 11450code includes the debug output trace mechanism and has a much larger code 11451and data size. Note that these values will vary depending on the 11452efficiency 11453of the compiler and the compiler options used during generation. 11454 11455 Previous Release: 11456 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 11457 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 11458 Current Release: 11459 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 11460 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 11461 11462 114632) iASL Compiler/Disassembler: 11464 11465A remark is issued if the effective compile-time length of a package or 11466buffer is zero. Previously, this was a warning. 11467 11468---------------------------------------- 1146916 September 2005. Summary of changes for version 20050916: 11470 114711) ACPI CA Core Subsystem: 11472 11473Fixed a problem within the Resource Manager where support for the Generic 11474Register descriptor was not fully implemented. This descriptor is now 11475fully 11476recognized, parsed, disassembled, and displayed. 11477 11478Completely restructured the Resource Manager code to utilize table-driven 11479dispatch and lookup, eliminating many of the large switch() statements. 11480This 11481reduces overall subsystem code size and code complexity. Affects the 11482resource parsing and construction, disassembly, and debug dump output. 11483 11484Cleaned up and restructured the debug dump output for all resource 11485descriptors. Improved readability of the output and reduced code size. 11486 11487Fixed a problem where changes to internal data structures caused the 11488optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 11489 11490Code and Data Size: The current and previous library sizes for the core 11491subsystem are shown below. These are the code and data sizes for the 11492acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11493These 11494values do not include any ACPI driver or OSPM code. The debug version of 11495the 11496code includes the debug output trace mechanism and has a much larger code 11497and data size. Note that these values will vary depending on the 11498efficiency 11499of the compiler and the compiler options used during generation. 11500 11501 Previous Release: 11502 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 11503 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 11504 Current Release: 11505 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 11506 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 11507 11508 115092) iASL Compiler/Disassembler: 11510 11511Updated the disassembler to automatically insert an EndDependentFn() 11512macro 11513into the ASL stream if this macro is missing in the original AML code, 11514simplifying compilation of the resulting ASL module. 11515 11516Fixed a problem in the disassembler where a disassembled ResourceSource 11517string (within a large resource descriptor) was not surrounded by quotes 11518and 11519not followed by a comma, causing errors when the resulting ASL module was 11520compiled. Also, escape sequences within a ResourceSource string are now 11521handled correctly (especially "\\") 11522 11523---------------------------------------- 1152402 September 2005. Summary of changes for version 20050902: 11525 115261) ACPI CA Core Subsystem: 11527 11528Fixed a problem with the internal Owner ID allocation and deallocation 11529mechanisms for control method execution and recursive method invocation. 11530This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 11531messages seen on some systems. Recursive method invocation depth is 11532currently limited to 255. (Alexey Starikovskiy) 11533 11534Completely eliminated all vestiges of support for the "module-level 11535executable code" until this support is fully implemented and debugged. 11536This 11537should eliminate the NO_RETURN_VALUE exceptions seen during table load on 11538some systems that invoke this support. 11539 11540Fixed a problem within the resource manager code where the transaction 11541flags 11542for a 64-bit address descriptor were handled incorrectly in the type- 11543specific flag byte. 11544 11545Consolidated duplicate code within the address descriptor resource 11546manager 11547code, reducing overall subsystem code size. 11548 11549Fixed a fault when using the AML debugger "disassemble" command to 11550disassemble individual control methods. 11551 11552Removed references to the "release_current" directory within the Unix 11553release package. 11554 11555Code and Data Size: The current and previous core subsystem library sizes 11556are shown below. These are the code and data sizes for the acpica.lib 11557produced by the Microsoft Visual C++ 6.0 compiler. These values do not 11558include any ACPI driver or OSPM code. The debug version of the code 11559includes 11560the debug output trace mechanism and has a much larger code and data 11561size. 11562Note that these values will vary depending on the efficiency of the 11563compiler 11564and the compiler options used during generation. 11565 11566 Previous Release: 11567 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11568 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 11569 Current Release: 11570 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 11571 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 11572 11573 115742) iASL Compiler/Disassembler: 11575 11576Implemented an error check for illegal duplicate values in the interrupt 11577and 11578dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 11579Interrupt(). 11580 11581Implemented error checking for the Irq() and IrqNoFlags() macros to 11582detect 11583too many values in the interrupt list (16 max) and invalid values in the 11584list (range 0 - 15) 11585 11586The maximum length string literal within an ASL file is now restricted to 11587200 characters as per the ACPI specification. 11588 11589Fixed a fault when using the -ln option (generate namespace listing). 11590 11591Implemented an error check to determine if a DescriptorName within a 11592resource descriptor has already been used within the current scope. 11593 11594---------------------------------------- 1159515 August 2005. Summary of changes for version 20050815: 11596 115971) ACPI CA Core Subsystem: 11598 11599Implemented a full bytewise compare to determine if a table load request 11600is 11601attempting to load a duplicate table. The compare is performed if the 11602table 11603signatures and table lengths match. This will allow different tables with 11604the same OEM Table ID and revision to be loaded - probably against the 11605ACPI 11606specification, but discovered in the field nonetheless. 11607 11608Added the changes.txt logfile to each of the zipped release packages. 11609 11610Code and Data Size: Current and previous core subsystem library sizes are 11611shown below. These are the code and data sizes for the acpica.lib 11612produced 11613by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11614any ACPI driver or OSPM code. The debug version of the code includes the 11615debug output trace mechanism and has a much larger code and data size. 11616Note 11617that these values will vary depending on the efficiency of the compiler 11618and 11619the compiler options used during generation. 11620 11621 Previous Release: 11622 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11623 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 11624 Current Release: 11625 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11626 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 11627 11628 116292) iASL Compiler/Disassembler: 11630 11631Fixed a problem where incorrect AML code could be generated for Package 11632objects if optimization is disabled (via the -oa switch). 11633 11634Fixed a problem with where incorrect AML code is generated for variable- 11635length packages when the package length is not specified and the number 11636of 11637initializer values is greater than 255. 11638 11639 11640---------------------------------------- 1164129 July 2005. Summary of changes for version 20050729: 11642 116431) ACPI CA Core Subsystem: 11644 11645Implemented support to ignore an attempt to install/load a particular 11646ACPI 11647table more than once. Apparently there exists BIOS code that repeatedly 11648attempts to load the same SSDT upon certain events. With assistance from 11649Venkatesh Pallipadi. 11650 11651Restructured the main interface to the AML parser in order to correctly 11652handle all exceptional conditions. This will prevent leakage of the 11653OwnerId 11654resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 11655some 11656machines. With assistance from Alexey Starikovskiy. 11657 11658Support for "module level code" has been disabled in this version due to 11659a 11660number of issues that have appeared on various machines. The support can 11661be 11662enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 11663compilation. When the issues are fully resolved, the code will be enabled 11664by 11665default again. 11666 11667Modified the internal functions for debug print support to define the 11668FunctionName parameter as a (const char *) for compatibility with 11669compiler 11670built-in macros such as __FUNCTION__, etc. 11671 11672Linted the entire ACPICA source tree for both 32-bit and 64-bit. 11673 11674Implemented support to display an object count summary for the AML 11675Debugger 11676commands Object and Methods. 11677 11678Code and Data Size: Current and previous core subsystem library sizes are 11679shown below. These are the code and data sizes for the acpica.lib 11680produced 11681by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11682any ACPI driver or OSPM code. The debug version of the code includes the 11683debug output trace mechanism and has a much larger code and data size. 11684Note 11685that these values will vary depending on the efficiency of the compiler 11686and 11687the compiler options used during generation. 11688 11689 Previous Release: 11690 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 11691 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 11692 Current Release: 11693 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11694 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 11695 11696 116972) iASL Compiler/Disassembler: 11698 11699Fixed a regression that appeared in the 20050708 version of the compiler 11700where an error message was inadvertently emitted for invocations of the 11701_OSI 11702reserved control method. 11703 11704---------------------------------------- 1170508 July 2005. Summary of changes for version 20050708: 11706 117071) ACPI CA Core Subsystem: 11708 11709The use of the CPU stack in the debug version of the subsystem has been 11710considerably reduced. Previously, a debug structure was declared in every 11711function that used the debug macros. This structure has been removed in 11712favor of declaring the individual elements as parameters to the debug 11713functions. This reduces the cumulative stack use during nested execution 11714of 11715ACPI function calls at the cost of a small increase in the code size of 11716the 11717debug version of the subsystem. With assistance from Alexey Starikovskiy 11718and 11719Len Brown. 11720 11721Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 11722headers to define a macro that will return the current function name at 11723runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 11724by 11725the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 11726compiler-dependent header, the function name is saved on the CPU stack 11727(one 11728pointer per function.) This mechanism is used because apparently there 11729exists no standard ANSI-C defined macro that that returns the function 11730name. 11731 11732Redesigned and reimplemented the "Owner ID" mechanism used to track 11733namespace objects created/deleted by ACPI tables and control method 11734execution. A bitmap is now used to allocate and free the IDs, thus 11735solving 11736the wraparound problem present in the previous implementation. The size 11737of 11738the namespace node descriptor was reduced by 2 bytes as a result (Alexey 11739Starikovskiy). 11740 11741Removed the UINT32_BIT and UINT16_BIT types that were used for the 11742bitfield 11743flag definitions within the headers for the predefined ACPI tables. These 11744have been replaced by UINT8_BIT in order to increase the code portability 11745of 11746the subsystem. If the use of UINT8 remains a problem, we may be forced to 11747eliminate bitfields entirely because of a lack of portability. 11748 11749Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 11750This 11751is a frequently used function and this improvement increases the 11752performance 11753of the entire subsystem (Alexey Starikovskiy). 11754 11755Fixed several possible memory leaks and the inverse - premature object 11756deletion (Alexey Starikovskiy). 11757 11758Code and Data Size: Current and previous core subsystem library sizes are 11759shown below. These are the code and data sizes for the acpica.lib 11760produced 11761by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11762any ACPI driver or OSPM code. The debug version of the code includes the 11763debug output trace mechanism and has a much larger code and data size. 11764Note 11765that these values will vary depending on the efficiency of the compiler 11766and 11767the compiler options used during generation. 11768 11769 Previous Release: 11770 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 11771 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 11772 Current Release: 11773 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 11774 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 11775 11776---------------------------------------- 1177724 June 2005. Summary of changes for version 20050624: 11778 117791) ACPI CA Core Subsystem: 11780 11781Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 11782the host-defined cache object. This allows the OSL implementation to 11783define 11784and type this object in any manner desired, simplifying the OSL 11785implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 11786Linux, and should be defined in the OS-specific header file for other 11787operating systems as required. 11788 11789Changed the interface to AcpiOsAcquireObject to directly return the 11790requested object as the function return (instead of ACPI_STATUS.) This 11791change was made for performance reasons, since this is the purpose of the 11792interface in the first place. AcpiOsAcquireObject is now similar to the 11793AcpiOsAllocate interface. 11794 11795Implemented a new AML debugger command named Businfo. This command 11796displays 11797information about all devices that have an associate _PRT object. The 11798_ADR, 11799_HID, _UID, and _CID are displayed for these devices. 11800 11801Modified the initialization sequence in AcpiInitializeSubsystem to call 11802the 11803OSL interface AcpiOslInitialize first, before any local initialization. 11804This 11805change was required because the global initialization now calls OSL 11806interfaces. 11807 11808Enhanced the Dump command to display the entire contents of Package 11809objects 11810(including all sub-objects and their values.) 11811 11812Restructured the code base to split some files because of size and/or 11813because the code logically belonged in a separate file. New files are 11814listed 11815below. All makefiles and project files included in the ACPI CA release 11816have 11817been updated. 11818 utilities/utcache.c /* Local cache interfaces */ 11819 utilities/utmutex.c /* Local mutex support */ 11820 utilities/utstate.c /* State object support */ 11821 interpreter/parser/psloop.c /* Main AML parse loop */ 11822 11823Code and Data Size: Current and previous core subsystem library sizes are 11824shown below. These are the code and data sizes for the acpica.lib 11825produced 11826by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11827any ACPI driver or OSPM code. The debug version of the code includes the 11828debug output trace mechanism and has a much larger code and data size. 11829Note 11830that these values will vary depending on the efficiency of the compiler 11831and 11832the compiler options used during generation. 11833 11834 Previous Release: 11835 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 11836 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 11837 Current Release: 11838 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 11839 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 11840 11841 118422) iASL Compiler/Disassembler: 11843 11844Fixed a regression introduced in version 20050513 where the use of a 11845Package 11846object within a Case() statement caused a compile time exception. The 11847original behavior has been restored (a Match() operator is emitted.) 11848 11849---------------------------------------- 1185017 June 2005. Summary of changes for version 20050617: 11851 118521) ACPI CA Core Subsystem: 11853 11854Moved the object cache operations into the OS interface layer (OSL) to 11855allow 11856the host OS to handle these operations if desired (for example, the Linux 11857OSL will invoke the slab allocator). This support is optional; the 11858compile 11859time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 11860cache 11861code in the ACPI CA core. The new OSL interfaces are shown below. See 11862utalloc.c for an example implementation, and acpiosxf.h for the exact 11863interface definitions. With assistance from Alexey Starikovskiy. 11864 AcpiOsCreateCache 11865 AcpiOsDeleteCache 11866 AcpiOsPurgeCache 11867 AcpiOsAcquireObject 11868 AcpiOsReleaseObject 11869 11870Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 11871return 11872and restore a flags parameter. This fits better with many OS lock models. 11873Note: the current execution state (interrupt handler or not) is no longer 11874passed to these interfaces. If necessary, the OSL must determine this 11875state 11876by itself, a simple and fast operation. With assistance from Alexey 11877Starikovskiy. 11878 11879Fixed a problem in the ACPI table handling where a valid XSDT was assumed 11880present if the revision of the RSDP was 2 or greater. According to the 11881ACPI 11882specification, the XSDT is optional in all cases, and the table manager 11883therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 11884Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 11885contain 11886only the RSDT. 11887 11888Fixed an interpreter problem with the Mid() operator in the case of an 11889input 11890string where the resulting output string is of zero length. It now 11891correctly 11892returns a valid, null terminated string object instead of a string object 11893with a null pointer. 11894 11895Fixed a problem with the control method argument handling to allow a 11896store 11897to an Arg object that already contains an object of type Device. The 11898Device 11899object is now correctly overwritten. Previously, an error was returned. 11900 11901 11902Enhanced the debugger Find command to emit object values in addition to 11903the 11904found object pathnames. The output format is the same as the dump 11905namespace 11906command. 11907 11908Enhanced the debugger Set command. It now has the ability to set the 11909value 11910of any Named integer object in the namespace (Previously, only method 11911locals 11912and args could be set.) 11913 11914Code and Data Size: Current and previous core subsystem library sizes are 11915shown below. These are the code and data sizes for the acpica.lib 11916produced 11917by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11918any ACPI driver or OSPM code. The debug version of the code includes the 11919debug output trace mechanism and has a much larger code and data size. 11920Note 11921that these values will vary depending on the efficiency of the compiler 11922and 11923the compiler options used during generation. 11924 11925 Previous Release: 11926 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 11927 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 11928 Current Release: 11929 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 11930 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 11931 11932 119332) iASL Compiler/Disassembler: 11934 11935Fixed a regression in the disassembler where if/else/while constructs 11936were 11937output incorrectly. This problem was introduced in the previous release 11938(20050526). This problem also affected the single-step disassembly in the 11939debugger. 11940 11941Fixed a problem where compiling the reserved _OSI method would randomly 11942(but 11943rarely) produce compile errors. 11944 11945Enhanced the disassembler to emit compilable code in the face of 11946incorrect 11947AML resource descriptors. If the optional ResourceSourceIndex is present, 11948but the ResourceSource is not, do not emit the ResourceSourceIndex in the 11949disassembly. Otherwise, the resulting code cannot be compiled without 11950errors. 11951 11952---------------------------------------- 1195326 May 2005. Summary of changes for version 20050526: 11954 119551) ACPI CA Core Subsystem: 11956 11957Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 11958the module level (not within a control method.) These opcodes are 11959executed 11960exactly once at the time the table is loaded. This type of code was legal 11961up 11962until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 11963in 11964order to provide backwards compatibility with earlier BIOS 11965implementations. 11966This eliminates the "Encountered executable code at module level" warning 11967that was previously generated upon detection of such code. 11968 11969Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 11970inadvertently be generated during the lookup of namespace objects in the 11971second pass parse of ACPI tables and control methods. It appears that 11972this 11973problem could occur during the resolution of forward references to 11974namespace 11975objects. 11976 11977Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 11978corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 11979allows the deadlock detection debug code to be compiled out in the normal 11980case, improving mutex performance (and overall subsystem performance) 11981considerably. 11982 11983Implemented a handful of miscellaneous fixes for possible memory leaks on 11984error conditions and error handling control paths. These fixes were 11985suggested by FreeBSD and the Coverity Prevent source code analysis tool. 11986 11987Added a check for a null RSDT pointer in AcpiGetFirmwareTable 11988(tbxfroot.c) 11989to prevent a fault in this error case. 11990 11991Code and Data Size: Current and previous core subsystem library sizes are 11992shown below. These are the code and data sizes for the acpica.lib 11993produced 11994by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11995any ACPI driver or OSPM code. The debug version of the code includes the 11996debug output trace mechanism and has a much larger code and data size. 11997Note 11998that these values will vary depending on the efficiency of the compiler 11999and 12000the compiler options used during generation. 12001 12002 Previous Release: 12003 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12004 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12005 Current Release: 12006 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 12007 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 12008 12009 120102) iASL Compiler/Disassembler: 12011 12012Implemented support to allow Type 1 and Type 2 ASL operators to appear at 12013the module level (not within a control method.) These operators will be 12014executed once at the time the table is loaded. This type of code was 12015legal 12016up until the release of ACPI 2.0B (2002) and is now supported by the iASL 12017compiler in order to provide backwards compatibility with earlier BIOS 12018ASL 12019code. 12020 12021The ACPI integer width (specified via the table revision ID or the -r 12022override, 32 or 64 bits) is now used internally during compile-time 12023constant 12024folding to ensure that constants are truncated to 32 bits if necessary. 12025Previously, the revision ID value was only emitted in the AML table 12026header. 12027 12028An error message is now generated for the Mutex and Method operators if 12029the 12030SyncLevel parameter is outside the legal range of 0 through 15. 12031 12032Fixed a problem with the Method operator ParameterTypes list handling 12033(ACPI 120343.0). Previously, more than 2 types or 2 arguments generated a syntax 12035error. 12036The actual underlying implementation of method argument typechecking is 12037still under development, however. 12038 12039---------------------------------------- 1204013 May 2005. Summary of changes for version 20050513: 12041 120421) ACPI CA Core Subsystem: 12043 12044Implemented support for PCI Express root bridges -- added support for 12045device 12046PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 12047 12048The interpreter now automatically truncates incoming 64-bit constants to 1204932 12050bits if currently executing out of a 32-bit ACPI table (Revision < 2). 12051This 12052also affects the iASL compiler constant folding. (Note: as per below, the 12053iASL compiler no longer allows 64-bit constants within 32-bit tables.) 12054 12055Fixed a problem where string and buffer objects with "static" pointers 12056(pointers to initialization data within an ACPI table) were not handled 12057consistently. The internal object copy operation now always copies the 12058data 12059to a newly allocated buffer, regardless of whether the source object is 12060static or not. 12061 12062Fixed a problem with the FromBCD operator where an implicit result 12063conversion was improperly performed while storing the result to the 12064target 12065operand. Since this is an "explicit conversion" operator, the implicit 12066conversion should never be performed on the output. 12067 12068Fixed a problem with the CopyObject operator where a copy to an existing 12069named object did not always completely overwrite the existing object 12070stored 12071at name. Specifically, a buffer-to-buffer copy did not delete the 12072existing 12073buffer. 12074 12075Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 12076and 12077structs for consistency. 12078 12079Code and Data Size: Current and previous core subsystem library sizes are 12080shown below. These are the code and data sizes for the acpica.lib 12081produced 12082by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12083any ACPI driver or OSPM code. The debug version of the code includes the 12084debug output trace mechanism and has a much larger code and data size. 12085Note 12086that these values will vary depending on the efficiency of the compiler 12087and 12088the compiler options used during generation. 12089 12090 Previous Release: 12091 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12092 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12093 Current Release: (Same sizes) 12094 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12095 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12096 12097 120982) iASL Compiler/Disassembler: 12099 12100The compiler now emits a warning if an attempt is made to generate a 64- 12101bit 12102integer constant from within a 32-bit ACPI table (Revision < 2). The 12103integer 12104is truncated to 32 bits. 12105 12106Fixed a problem with large package objects: if the static length of the 12107package is greater than 255, the "variable length package" opcode is 12108emitted. Previously, this caused an error. This requires an update to the 12109ACPI spec, since it currently (incorrectly) states that packages larger 12110than 12111255 elements are not allowed. 12112 12113The disassembler now correctly handles variable length packages and 12114packages 12115larger than 255 elements. 12116 12117---------------------------------------- 1211808 April 2005. Summary of changes for version 20050408: 12119 121201) ACPI CA Core Subsystem: 12121 12122Fixed three cases in the interpreter where an "index" argument to an ASL 12123function was still (internally) 32 bits instead of the required 64 bits. 12124This was the Index argument to the Index, Mid, and Match operators. 12125 12126The "strupr" function is now permanently local (AcpiUtStrupr), since this 12127is 12128not a POSIX-defined function and not present in most kernel-level C 12129libraries. All references to the C library strupr function have been 12130removed 12131from the headers. 12132 12133Completed the deployment of static functions/prototypes. All prototypes 12134with 12135the static attribute have been moved from the headers to the owning C 12136file. 12137 12138Implemented an extract option (-e) for the AcpiBin utility (AML binary 12139utility). This option allows the utility to extract individual ACPI 12140tables 12141from the output of AcpiDmp. It provides the same functionality of the 12142acpixtract.pl perl script without the worry of setting the correct perl 12143options. AcpiBin runs on Windows and has not yet been generated/validated 12144in 12145the Linux/Unix environment (but should be soon). 12146 12147Updated and fixed the table dump option for AcpiBin (-d). This option 12148converts a single ACPI table to a hex/ascii file, similar to the output 12149of 12150AcpiDmp. 12151 12152Code and Data Size: Current and previous core subsystem library sizes are 12153shown below. These are the code and data sizes for the acpica.lib 12154produced 12155by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12156any ACPI driver or OSPM code. The debug version of the code includes the 12157debug output trace mechanism and has a much larger code and data size. 12158Note 12159that these values will vary depending on the efficiency of the compiler 12160and 12161the compiler options used during generation. 12162 12163 Previous Release: 12164 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12165 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12166 Current Release: 12167 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12168 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12169 12170 121712) iASL Compiler/Disassembler: 12172 12173Disassembler fix: Added a check to ensure that the table length found in 12174the 12175ACPI table header within the input file is not longer than the actual 12176input 12177file size. This indicates some kind of file or table corruption. 12178 12179---------------------------------------- 1218029 March 2005. Summary of changes for version 20050329: 12181 121821) ACPI CA Core Subsystem: 12183 12184An error is now generated if an attempt is made to create a Buffer Field 12185of 12186length zero (A CreateField with a length operand of zero.) 12187 12188The interpreter now issues a warning whenever executable code at the 12189module 12190level is detected during ACPI table load. This will give some idea of the 12191prevalence of this type of code. 12192 12193Implemented support for references to named objects (other than control 12194methods) within package objects. 12195 12196Enhanced package object output for the debug object. Package objects are 12197now 12198completely dumped, showing all elements. 12199 12200Enhanced miscellaneous object output for the debug object. Any object can 12201now be written to the debug object (for example, a device object can be 12202written, and the type of the object will be displayed.) 12203 12204The "static" qualifier has been added to all local functions across both 12205the 12206core subsystem and the iASL compiler. 12207 12208The number of "long" lines (> 80 chars) within the source has been 12209significantly reduced, by about 1/3. 12210 12211Cleaned up all header files to ensure that all CA/iASL functions are 12212prototyped (even static functions) and the formatting is consistent. 12213 12214Two new header files have been added, acopcode.h and acnames.h. 12215 12216Removed several obsolete functions that were no longer used. 12217 12218Code and Data Size: Current and previous core subsystem library sizes are 12219shown below. These are the code and data sizes for the acpica.lib 12220produced 12221by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12222any ACPI driver or OSPM code. The debug version of the code includes the 12223debug output trace mechanism and has a much larger code and data size. 12224Note 12225that these values will vary depending on the efficiency of the compiler 12226and 12227the compiler options used during generation. 12228 12229 Previous Release: 12230 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12231 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 12232 Current Release: 12233 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12234 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12235 12236 12237 122382) iASL Compiler/Disassembler: 12239 12240Fixed a problem with the resource descriptor generation/support. For the 12241ResourceSourceIndex and the ResourceSource fields, both must be present, 12242or 12243both must be not present - can't have one without the other. 12244 12245The compiler now returns non-zero from the main procedure if any errors 12246have 12247occurred during the compilation. 12248 12249 12250---------------------------------------- 1225109 March 2005. Summary of changes for version 20050309: 12252 122531) ACPI CA Core Subsystem: 12254 12255The string-to-buffer implicit conversion code has been modified again 12256after 12257a change to the ACPI specification. In order to match the behavior of 12258the 12259other major ACPI implementation, the target buffer is no longer truncated 12260if 12261the source string is smaller than an existing target buffer. This change 12262requires an update to the ACPI spec, and should eliminate the recent 12263AE_AML_BUFFER_LIMIT issues. 12264 12265The "implicit return" support was rewritten to a new algorithm that 12266solves 12267the general case. Rather than attempt to determine when a method is about 12268to 12269exit, the result of every ASL operator is saved momentarily until the 12270very 12271next ASL operator is executed. Therefore, no matter how the method exits, 12272there will always be a saved implicit return value. This feature is only 12273enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 12274eliminate 12275AE_AML_NO_RETURN_VALUE errors when enabled. 12276 12277Implemented implicit conversion support for the predicate (operand) of 12278the 12279If, Else, and While operators. String and Buffer arguments are 12280automatically 12281converted to Integers. 12282 12283Changed the string-to-integer conversion behavior to match the new ACPI 12284errata: "If no integer object exists, a new integer is created. The ASCII 12285string is interpreted as a hexadecimal constant. Each string character is 12286interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 12287with the first character as the most significant digit, and ending with 12288the 12289first non-hexadecimal character or end-of-string." This means that the 12290first 12291non-hex character terminates the conversion and this is the code that was 12292changed. 12293 12294Fixed a problem where the ObjectType operator would fail (fault) when 12295used 12296on an Index of a Package which pointed to a null package element. The 12297operator now properly returns zero (Uninitialized) in this case. 12298 12299Fixed a problem where the While operator used excessive memory by not 12300properly popping the result stack during execution. There was no memory 12301leak 12302after execution, however. (Code provided by Valery Podrezov.) 12303 12304Fixed a problem where references to control methods within Package 12305objects 12306caused the method to be invoked, instead of producing a reference object 12307pointing to the method. 12308 12309Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 12310to 12311improve performance and reduce code size. (Code provided by Alexey 12312Starikovskiy.) 12313 12314Code and Data Size: Current and previous core subsystem library sizes are 12315shown below. These are the code and data sizes for the acpica.lib 12316produced 12317by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12318any ACPI driver or OSPM code. The debug version of the code includes the 12319debug output trace mechanism and has a much larger code and data size. 12320Note 12321that these values will vary depending on the efficiency of the compiler 12322and 12323the compiler options used during generation. 12324 12325 Previous Release: 12326 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12327 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 12328 Current Release: 12329 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12330 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 12331 12332 123332) iASL Compiler/Disassembler: 12334 12335Fixed a problem with the Return operator with no arguments. Since the AML 12336grammar for the byte encoding requires an operand for the Return opcode, 12337the 12338compiler now emits a Return(Zero) for this case. An ACPI specification 12339update has been written for this case. 12340 12341For tables other than the DSDT, namepath optimization is automatically 12342disabled. This is because SSDTs can be loaded anywhere in the namespace, 12343the 12344compiler has no knowledge of where, and thus cannot optimize namepaths. 12345 12346Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 12347inadvertently omitted from the ACPI specification, and will require an 12348update to the spec. 12349 12350The source file scan for ASCII characters is now optional (-a). This 12351change 12352was made because some vendors place non-ascii characters within comments. 12353However, the scan is simply a brute-force byte compare to ensure all 12354characters in the file are in the range 0x00 to 0x7F. 12355 12356Fixed a problem with the CondRefOf operator where the compiler was 12357inappropriately checking for the existence of the target. Since the point 12358of 12359the operator is to check for the existence of the target at run-time, the 12360compiler no longer checks for the target existence. 12361 12362Fixed a problem where errors generated from the internal AML interpreter 12363during constant folding were not handled properly, causing a fault. 12364 12365Fixed a problem with overly aggressive range checking for the Stall 12366operator. The valid range (max 255) is now only checked if the operand is 12367of 12368type Integer. All other operand types cannot be statically checked. 12369 12370Fixed a problem where control method references within the RefOf, 12371DeRefOf, 12372and ObjectType operators were not treated properly. They are now treated 12373as 12374actual references, not method invocations. 12375 12376Fixed and enhanced the "list namespace" option (-ln). This option was 12377broken 12378a number of releases ago. 12379 12380Improved error handling for the Field, IndexField, and BankField 12381operators. 12382The compiler now cleanly reports and recovers from errors in the field 12383component (FieldUnit) list. 12384 12385Fixed a disassembler problem where the optional ResourceDescriptor fields 12386TRS and TTP were not always handled correctly. 12387 12388Disassembler - Comments in output now use "//" instead of "/*" 12389 12390---------------------------------------- 1239128 February 2005. Summary of changes for version 20050228: 12392 123931) ACPI CA Core Subsystem: 12394 12395Fixed a problem where the result of an Index() operator (an object 12396reference) must increment the reference count on the target object for 12397the 12398life of the object reference. 12399 12400Implemented AML Interpreter and Debugger support for the new ACPI 3.0 12401Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 12402WordSpace 12403resource descriptors. 12404 12405Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 12406Space Descriptor" string, indicating interpreter support for the 12407descriptors 12408above. 12409 12410Implemented header support for the new ACPI 3.0 FADT flag bits. 12411 12412Implemented header support for the new ACPI 3.0 PCI Express bits for the 12413PM1 12414status/enable registers. 12415 12416Updated header support for the MADT processor local Apic struct and MADT 12417platform interrupt source struct for new ACPI 3.0 fields. 12418 12419Implemented header support for the SRAT and SLIT ACPI tables. 12420 12421Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 12422flag 12423at runtime. 12424 12425Code and Data Size: Current and previous core subsystem library sizes are 12426shown below. These are the code and data sizes for the acpica.lib 12427produced 12428by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12429any ACPI driver or OSPM code. The debug version of the code includes the 12430debug output trace mechanism and has a much larger code and data size. 12431Note 12432that these values will vary depending on the efficiency of the compiler 12433and 12434the compiler options used during generation. 12435 12436 Previous Release: 12437 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 12438 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 12439 Current Release: 12440 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12441 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 12442 12443 124442) iASL Compiler/Disassembler: 12445 12446Fixed a problem with the internal 64-bit String-to-integer conversion 12447with 12448strings less than two characters long. 12449 12450Fixed a problem with constant folding where the result of the Index() 12451operator can not be considered a constant. This means that Index() cannot 12452be 12453a type3 opcode and this will require an update to the ACPI specification. 12454 12455Disassembler: Implemented support for the TTP, MTP, and TRS resource 12456descriptor fields. These fields were inadvertently ignored and not output 12457in 12458the disassembly of the resource descriptor. 12459 12460 12461 ---------------------------------------- 1246211 February 2005. Summary of changes for version 20050211: 12463 124641) ACPI CA Core Subsystem: 12465 12466Implemented ACPI 3.0 support for implicit conversion within the Match() 12467operator. MatchObjects can now be of type integer, buffer, or string 12468instead 12469of just type integer. Package elements are implicitly converted to the 12470type 12471of the MatchObject. This change aligns the behavior of Match() with the 12472behavior of the other logical operators (LLess(), etc.) It also requires 12473an 12474errata change to the ACPI specification as this support was intended for 12475ACPI 3.0, but was inadvertently omitted. 12476 12477Fixed a problem with the internal implicit "to buffer" conversion. 12478Strings 12479that are converted to buffers will cause buffer truncation if the string 12480is 12481smaller than the target buffer. Integers that are converted to buffers 12482will 12483not cause buffer truncation, only zero extension (both as per the ACPI 12484spec.) The problem was introduced when code was added to truncate the 12485buffer, but this should not be performed in all cases, only the string 12486case. 12487 12488Fixed a problem with the Buffer and Package operators where the 12489interpreter 12490would get confused if two such operators were used as operands to an ASL 12491operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 12492stack was not being popped after the execution of these operators, 12493resulting 12494in an AE_NO_RETURN_VALUE exception. 12495 12496Fixed a problem with constructs of the form Store(Index(...),...). The 12497reference object returned from Index was inadvertently resolved to an 12498actual 12499value. This problem was introduced in version 20050114 when the behavior 12500of 12501Store() was modified to restrict the object types that can be used as the 12502source operand (to match the ACPI specification.) 12503 12504Reduced excessive stack use within the AcpiGetObjectInfo procedure. 12505 12506Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 12507 12508Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 12509 12510Code and Data Size: Current and previous core subsystem library sizes are 12511shown below. These are the code and data sizes for the acpica.lib 12512produced 12513by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12514any ACPI driver or OSPM code. The debug version of the code includes the 12515debug output trace mechanism and has a much larger code and data size. 12516Note 12517that these values will vary depending on the efficiency of the compiler 12518and 12519the compiler options used during generation. 12520 12521 Previous Release: 12522 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 12523 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 12524 Current Release: 12525 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 12526 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 12527 12528 125292) iASL Compiler/Disassembler: 12530 12531Fixed a code generation problem in the constant folding optimization code 12532where incorrect code was generated if a constant was reduced to a buffer 12533object (i.e., a reduced type 5 opcode.) 12534 12535Fixed a typechecking problem for the ToBuffer operator. Caused by an 12536incorrect return type in the internal opcode information table. 12537 12538---------------------------------------- 1253925 January 2005. Summary of changes for version 20050125: 12540 125411) ACPI CA Core Subsystem: 12542 12543Fixed a recently introduced problem with the Global Lock where the 12544underlying semaphore was not created. This problem was introduced in 12545version 20050114, and caused an AE_AML_NO_OPERAND exception during an 12546Acquire() operation on _GL. 12547 12548The local object cache is now optional, and is disabled by default. Both 12549AcpiExec and the iASL compiler enable the cache because they run in user 12550mode and this enhances their performance. #define 12551ACPI_ENABLE_OBJECT_CACHE 12552to enable the local cache. 12553 12554Fixed an issue in the internal function AcpiUtEvaluateObject concerning 12555the 12556optional "implicit return" support where an error was returned if no 12557return 12558object was expected, but one was implicitly returned. AE_OK is now 12559returned 12560in this case and the implicitly returned object is deleted. 12561AcpiUtEvaluateObject is only occasionally used, and only to execute 12562reserved 12563methods such as _STA and _INI where the return type is known up front. 12564 12565Fixed a few issues with the internal convert-to-integer code. It now 12566returns 12567an error if an attempt is made to convert a null string, a string of only 12568blanks/tabs, or a zero-length buffer. This affects both implicit 12569conversion 12570and explicit conversion via the ToInteger() operator. 12571 12572The internal debug code in AcpiUtAcquireMutex has been commented out. It 12573is 12574not needed for normal operation and should increase the performance of 12575the 12576entire subsystem. The code remains in case it is needed for debug 12577purposes 12578again. 12579 12580The AcpiExec source and makefile are included in the Unix/Linux package 12581for 12582the first time. 12583 12584Code and Data Size: Current and previous core subsystem library sizes are 12585shown below. These are the code and data sizes for the acpica.lib 12586produced 12587by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12588any ACPI driver or OSPM code. The debug version of the code includes the 12589debug output trace mechanism and has a much larger code and data size. 12590Note 12591that these values will vary depending on the efficiency of the compiler 12592and 12593the compiler options used during generation. 12594 12595 Previous Release: 12596 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 12597 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 12598 Current Release: 12599 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 12600 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 12601 126022) iASL Compiler/Disassembler: 12603 12604Switch/Case support: A warning is now issued if the type of the Switch 12605value 12606cannot be determined at compile time. For example, Switch(Arg0) will 12607generate the warning, and the type is assumed to be an integer. As per 12608the 12609ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 12610the 12611warning. 12612 12613Switch/Case support: Implemented support for buffer and string objects as 12614the switch value. This is an ACPI 3.0 feature, now that LEqual supports 12615buffers and strings. 12616 12617Switch/Case support: The emitted code for the LEqual() comparisons now 12618uses 12619the switch value as the first operand, not the second. The case value is 12620now 12621the second operand, and this allows the case value to be implicitly 12622converted to the type of the switch value, not the other way around. 12623 12624Switch/Case support: Temporary variables are now emitted immediately 12625within 12626the control method, not at the global level. This means that there are 12627now 1262836 temps available per-method, not 36 temps per-module as was the case 12629with 12630the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 12631 12632---------------------------------------- 1263314 January 2005. Summary of changes for version 20050114: 12634 12635Added 2005 copyright to all module headers. This affects every module in 12636the core subsystem, iASL compiler, and the utilities. 12637 126381) ACPI CA Core Subsystem: 12639 12640Fixed an issue with the String-to-Buffer conversion code where the string 12641null terminator was not included in the buffer after conversion, but 12642there 12643is existing ASL that assumes the string null terminator is included. This 12644is 12645the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 12646introduced in the previous version when the code was updated to correctly 12647set the converted buffer size as per the ACPI specification. The ACPI 12648spec 12649is ambiguous and will be updated to specify that the null terminator must 12650be 12651included in the converted buffer. This also affects the ToBuffer() ASL 12652operator. 12653 12654Fixed a problem with the Mid() ASL/AML operator where it did not work 12655correctly on Buffer objects. Newly created sub-buffers were not being 12656marked 12657as initialized. 12658 12659 12660Fixed a problem in AcpiTbFindTable where incorrect string compares were 12661performed on the OemId and OemTableId table header fields. These fields 12662are 12663not null terminated, so strncmp is now used instead of strcmp. 12664 12665Implemented a restriction on the Store() ASL/AML operator to align the 12666behavior with the ACPI specification. Previously, any object could be 12667used 12668as the source operand. Now, the only objects that may be used are 12669Integers, 12670Buffers, Strings, Packages, Object References, and DDB Handles. If 12671necessary, the original behavior can be restored by enabling the 12672EnableInterpreterSlack flag. 12673 12674Enhanced the optional "implicit return" support to allow an implicit 12675return 12676value from methods that are invoked externally via the AcpiEvaluateObject 12677interface. This enables implicit returns from the _STA and _INI methods, 12678for example. 12679 12680Changed the Revision() ASL/AML operator to return the current version of 12681the 12682AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 12683returned 12684the supported ACPI version (This is the function of the _REV method). 12685 12686Updated the _REV predefined method to return the currently supported 12687version 12688of ACPI, now 3. 12689 12690Implemented batch mode option for the AcpiExec utility (-b). 12691 12692Code and Data Size: Current and previous core subsystem library sizes are 12693shown below. These are the code and data sizes for the acpica.lib 12694produced 12695by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12696any ACPI driver or OSPM code. The debug version of the code includes the 12697debug output trace mechanism and has a much larger code and data size. 12698Note 12699that these values will vary depending on the efficiency of the compiler 12700and 12701the compiler options used during generation. 12702 12703 Previous Release: 12704 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12705 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 12706 Current Release: 12707 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 12708 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 12709 12710---------------------------------------- 1271110 December 2004. Summary of changes for version 20041210: 12712 12713ACPI 3.0 support is nearing completion in both the iASL compiler and the 12714ACPI CA core subsystem. 12715 127161) ACPI CA Core Subsystem: 12717 12718Fixed a problem in the ToDecimalString operator where the resulting 12719string 12720length was incorrectly calculated. The length is now calculated exactly, 12721eliminating incorrect AE_STRING_LIMIT exceptions. 12722 12723Fixed a problem in the ToHexString operator to allow a maximum 200 12724character 12725string to be produced. 12726 12727Fixed a problem in the internal string-to-buffer and buffer-to-buffer 12728copy 12729routine where the length of the resulting buffer was not truncated to the 12730new size (if the target buffer already existed). 12731 12732Code and Data Size: Current and previous core subsystem library sizes are 12733shown below. These are the code and data sizes for the acpica.lib 12734produced 12735by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12736any ACPI driver or OSPM code. The debug version of the code includes the 12737debug output trace mechanism and has a much larger code and data size. 12738Note 12739that these values will vary depending on the efficiency of the compiler 12740and 12741the compiler options used during generation. 12742 12743 Previous Release: 12744 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12745 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 12746 Current Release: 12747 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12748 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 12749 12750 127512) iASL Compiler/Disassembler: 12752 12753Implemented the new ACPI 3.0 resource template macros - DWordSpace, 12754ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 12755Includes support in the disassembler. 12756 12757Implemented support for the new (ACPI 3.0) parameter to the Register 12758macro, 12759AccessSize. 12760 12761Fixed a problem where the _HE resource name for the Interrupt macro was 12762referencing bit 0 instead of bit 1. 12763 12764Implemented check for maximum 255 interrupts in the Interrupt macro. 12765 12766Fixed a problem with the predefined resource descriptor names where 12767incorrect AML code was generated if the offset within the resource buffer 12768was 0 or 1. The optimizer shortened the AML code to a single byte opcode 12769but did not update the surrounding package lengths. 12770 12771Changes to the Dma macro: All channels within the channel list must be 12772in 12773the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 12774optional (default is BusMaster). 12775 12776Implemented check for maximum 7 data bytes for the VendorShort macro. 12777 12778The ReadWrite parameter is now optional for the Memory32 and similar 12779macros. 12780 12781---------------------------------------- 1278203 December 2004. Summary of changes for version 20041203: 12783 127841) ACPI CA Core Subsystem: 12785 12786The low-level field insertion/extraction code (exfldio) has been 12787completely 12788rewritten to eliminate unnecessary complexity, bugs, and boundary 12789conditions. 12790 12791Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 12792ToDecimalString 12793operators where the input operand could be inadvertently deleted if no 12794conversion was necessary (e.g., if the input to ToInteger was an Integer 12795object.) 12796 12797Fixed a problem with the ToDecimalString and ToHexString where an 12798incorrect 12799exception code was returned if the resulting string would be > 200 chars. 12800AE_STRING_LIMIT is now returned. 12801 12802Fixed a problem with the Concatenate operator where AE_OK was always 12803returned, even if the operation failed. 12804 12805Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 12806semaphores to be allocated. 12807 12808Code and Data Size: Current and previous core subsystem library sizes are 12809shown below. These are the code and data sizes for the acpica.lib 12810produced 12811by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12812any ACPI driver or OSPM code. The debug version of the code includes the 12813debug output trace mechanism and has a much larger code and data size. 12814Note 12815that these values will vary depending on the efficiency of the compiler 12816and 12817the compiler options used during generation. 12818 12819 Previous Release: 12820 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12821 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12822 Current Release: 12823 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12824 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 12825 12826 128272) iASL Compiler/Disassembler: 12828 12829Fixed typechecking for the ObjectType and SizeOf operators. Problem was 12830recently introduced in 20041119. 12831 12832Fixed a problem with the ToUUID macro where the upper nybble of each 12833buffer 12834byte was inadvertently set to zero. 12835 12836---------------------------------------- 1283719 November 2004. Summary of changes for version 20041119: 12838 128391) ACPI CA Core Subsystem: 12840 12841Fixed a problem in the internal ConvertToInteger routine where new 12842integers 12843were not truncated to 32 bits for 32-bit ACPI tables. This routine 12844converts 12845buffers and strings to integers. 12846 12847Implemented support to store a value to an Index() on a String object. 12848This 12849is an ACPI 2.0 feature that had not yet been implemented. 12850 12851Implemented new behavior for storing objects to individual package 12852elements 12853(via the Index() operator). The previous behavior was to invoke the 12854implicit 12855conversion rules if an object was already present at the index. The new 12856behavior is to simply delete any existing object and directly store the 12857new 12858object. Although the ACPI specification seems unclear on this subject, 12859other 12860ACPI implementations behave in this manner. (This is the root of the 12861AE_BAD_HEX_CONSTANT issue.) 12862 12863Modified the RSDP memory scan mechanism to support the extended checksum 12864for 12865ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 12866RSDP signature is found with a valid checksum. 12867 12868Code and Data Size: Current and previous core subsystem library sizes are 12869shown below. These are the code and data sizes for the acpica.lib 12870produced 12871by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12872any ACPI driver or OSPM code. The debug version of the code includes the 12873debug output trace mechanism and has a much larger code and data size. 12874Note 12875that these values will vary depending on the efficiency of the compiler 12876and 12877the compiler options used during generation. 12878 12879 Previous Release: 12880 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12881 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12882 Current Release: 12883 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12884 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12885 12886 128872) iASL Compiler/Disassembler: 12888 12889Fixed a missing semicolon in the aslcompiler.y file. 12890 12891---------------------------------------- 1289205 November 2004. Summary of changes for version 20041105: 12893 128941) ACPI CA Core Subsystem: 12895 12896Implemented support for FADT revision 2. This was an interim table 12897(between 12898ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 12899 12900Implemented optional support to allow uninitialized LocalX and ArgX 12901variables in a control method. The variables are initialized to an 12902Integer 12903object with a value of zero. This support is enabled by setting the 12904AcpiGbl_EnableInterpreterSlack flag to TRUE. 12905 12906Implemented support for Integer objects for the SizeOf operator. Either 129074 12908or 8 is returned, depending on the current integer size (32-bit or 64- 12909bit, 12910depending on the parent table revision). 12911 12912Fixed a problem in the implementation of the SizeOf and ObjectType 12913operators 12914where the operand was resolved to a value too early, causing incorrect 12915return values for some objects. 12916 12917Fixed some possible memory leaks during exceptional conditions. 12918 12919Code and Data Size: Current and previous core subsystem library sizes are 12920shown below. These are the code and data sizes for the acpica.lib 12921produced 12922by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12923any ACPI driver or OSPM code. The debug version of the code includes the 12924debug output trace mechanism and has a much larger code and data size. 12925Note 12926that these values will vary depending on the efficiency of the compiler 12927and 12928the compiler options used during generation. 12929 12930 Previous Release: 12931 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12932 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 12933 Current Release: 12934 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12935 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12936 12937 129382) iASL Compiler/Disassembler: 12939 12940Implemented support for all ACPI 3.0 reserved names and methods. 12941 12942Implemented all ACPI 3.0 grammar elements in the front-end, including 12943support for semicolons. 12944 12945Implemented the ACPI 3.0 Function() and ToUUID() macros 12946 12947Fixed a problem in the disassembler where a Scope() operator would not be 12948emitted properly if the target of the scope was in another table. 12949 12950---------------------------------------- 1295115 October 2004. Summary of changes for version 20041015: 12952 12953Note: ACPI CA is currently undergoing an in-depth and complete formal 12954evaluation to test/verify the following areas. Other suggestions are 12955welcome. This will result in an increase in the frequency of releases and 12956the number of bug fixes in the next few months. 12957 - Functional tests for all ASL/AML operators 12958 - All implicit/explicit type conversions 12959 - Bit fields and operation regions 12960 - 64-bit math support and 32-bit-only "truncated" math support 12961 - Exceptional conditions, both compiler and interpreter 12962 - Dynamic object deletion and memory leaks 12963 - ACPI 3.0 support when implemented 12964 - External interfaces to the ACPI subsystem 12965 12966 129671) ACPI CA Core Subsystem: 12968 12969Fixed two alignment issues on 64-bit platforms - within debug statements 12970in 12971AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 12972Address 12973field within the non-aligned ACPI generic address structure. 12974 12975Fixed a problem in the Increment and Decrement operators where incorrect 12976operand resolution could result in the inadvertent modification of the 12977original integer when the integer is passed into another method as an 12978argument and the arg is then incremented/decremented. 12979 12980Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 12981bit 12982BCD number were truncated during conversion. 12983 12984Fixed a problem in the ToDecimal operator where the length of the 12985resulting 12986string could be set incorrectly too long if the input operand was a 12987Buffer 12988object. 12989 12990Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 12991(0) 12992within a buffer would prematurely terminate a compare between buffer 12993objects. 12994 12995Added a check for string overflow (>200 characters as per the ACPI 12996specification) during the Concatenate operator with two string operands. 12997 12998Code and Data Size: Current and previous core subsystem library sizes are 12999shown below. These are the code and data sizes for the acpica.lib 13000produced 13001by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13002any ACPI driver or OSPM code. The debug version of the code includes the 13003debug output trace mechanism and has a much larger code and data size. 13004Note 13005that these values will vary depending on the efficiency of the compiler 13006and 13007the compiler options used during generation. 13008 13009 Previous Release: 13010 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13011 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 13012 Current Release: 13013 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13014 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 13015 13016 13017 130182) iASL Compiler/Disassembler: 13019 13020Allow the use of the ObjectType operator on uninitialized Locals and Args 13021(returns 0 as per the ACPI specification). 13022 13023Fixed a problem where the compiler would fault if there was a syntax 13024error 13025in the FieldName of all of the various CreateXXXField operators. 13026 13027Disallow the use of lower case letters within the EISAID macro, as per 13028the 13029ACPI specification. All EISAID strings must be of the form "UUUNNNN" 13030Where 13031U is an uppercase letter and N is a hex digit. 13032 13033 13034---------------------------------------- 1303506 October 2004. Summary of changes for version 20041006: 13036 130371) ACPI CA Core Subsystem: 13038 13039Implemented support for the ACPI 3.0 Timer operator. This ASL function 13040implements a 64-bit timer with 100 nanosecond granularity. 13041 13042Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 13043implement the ACPI 3.0 Timer operator. This allows the host OS to 13044implement 13045the timer with the best clock available. Also, it keeps the core 13046subsystem 13047out of the clock handling business, since the host OS (usually) performs 13048this function. 13049 13050Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 13051functions use a 64-bit address which is part of the packed ACPI Generic 13052Address Structure. Since the structure is non-aligned, the alignment 13053macros 13054are now used to extract the address to a local variable before use. 13055 13056Fixed a problem where the ToInteger operator assumed all input strings 13057were 13058hexadecimal. The operator now handles both decimal strings and hex 13059strings 13060(prefixed with "0x"). 13061 13062Fixed a problem where the string length in the string object created as a 13063result of the internal ConvertToString procedure could be incorrect. This 13064potentially affected all implicit conversions and also the 13065ToDecimalString 13066and ToHexString operators. 13067 13068Fixed two problems in the ToString operator. If the length parameter was 13069zero, an incorrect string object was created and the value of the input 13070length parameter was inadvertently changed from zero to Ones. 13071 13072Fixed a problem where the optional ResourceSource string in the 13073ExtendedIRQ 13074resource macro was ignored. 13075 13076Simplified the interfaces to the internal division functions, reducing 13077code 13078size and complexity. 13079 13080Code and Data Size: Current and previous core subsystem library sizes are 13081shown below. These are the code and data sizes for the acpica.lib 13082produced 13083by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13084any ACPI driver or OSPM code. The debug version of the code includes the 13085debug output trace mechanism and has a much larger code and data size. 13086Note 13087that these values will vary depending on the efficiency of the compiler 13088and 13089the compiler options used during generation. 13090 13091 Previous Release: 13092 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13093 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13094 Current Release: 13095 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13096 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 13097 13098 130992) iASL Compiler/Disassembler: 13100 13101Implemented support for the ACPI 3.0 Timer operator. 13102 13103Fixed a problem where the Default() operator was inadvertently ignored in 13104a 13105Switch/Case block. This was a problem in the translation of the Switch 13106statement to If...Else pairs. 13107 13108Added support to allow a standalone Return operator, with no parentheses 13109(or 13110operands). 13111 13112Fixed a problem with code generation for the ElseIf operator where the 13113translated Else...If parse tree was improperly constructed leading to the 13114loss of some code. 13115 13116---------------------------------------- 1311722 September 2004. Summary of changes for version 20040922: 13118 131191) ACPI CA Core Subsystem: 13120 13121Fixed a problem with the implementation of the LNot() operator where 13122"Ones" 13123was not returned for the TRUE case. Changed the code to return Ones 13124instead 13125of (!Arg) which was usually 1. This change affects iASL constant folding 13126for 13127this operator also. 13128 13129Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 13130not 13131initialized properly -- Now zero the entire buffer in this case where the 13132buffer already exists. 13133 13134Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 13135Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 13136related code considerably. This will require changes/updates to all OS 13137interface layers (OSLs.) 13138 13139Implemented a new external interface, AcpiInstallExceptionHandler, to 13140allow 13141a system exception handler to be installed. This handler is invoked upon 13142any 13143run-time exception that occurs during control method execution. 13144 13145Added support for the DSDT in AcpiTbFindTable. This allows the 13146DataTableRegion() operator to access the local copy of the DSDT. 13147 13148Code and Data Size: Current and previous core subsystem library sizes are 13149shown below. These are the code and data sizes for the acpica.lib 13150produced 13151by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13152any ACPI driver or OSPM code. The debug version of the code includes the 13153debug output trace mechanism and has a much larger code and data size. 13154Note 13155that these values will vary depending on the efficiency of the compiler 13156and 13157the compiler options used during generation. 13158 13159 Previous Release: 13160 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13161 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13162 Current Release: 13163 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13164 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13165 13166 131672) iASL Compiler/Disassembler: 13168 13169Fixed a problem with constant folding and the LNot operator. LNot was 13170returning 1 in the TRUE case, not Ones as per the ACPI specification. 13171This 13172could result in the generation of an incorrect folded/reduced constant. 13173 13174End-Of-File is now allowed within a "//"-style comment. A parse error no 13175longer occurs if such a comment is at the very end of the input ASL 13176source 13177file. 13178 13179Implemented the "-r" option to override the Revision in the table header. 13180The initial use of this option will be to simplify the evaluation of the 13181AML 13182interpreter by allowing a single ASL source module to be compiled for 13183either 1318432-bit or 64-bit integers. 13185 13186 13187---------------------------------------- 1318827 August 2004. Summary of changes for version 20040827: 13189 131901) ACPI CA Core Subsystem: 13191 13192- Implemented support for implicit object conversion in the non-numeric 13193logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 13194and 13195LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 13196the second operand is implicitly converted on the fly to match the type 13197of 13198the first operand. For example: 13199 13200 LEqual (Source1, Source2) 13201 13202Source1 and Source2 must each evaluate to an integer, a string, or a 13203buffer. 13204The data type of Source1 dictates the required type of Source2. Source2 13205is 13206implicitly converted if necessary to match the type of Source1. 13207 13208- Updated and corrected the behavior of the string conversion support. 13209The 13210rules concerning conversion of buffers to strings (according to the ACPI 13211specification) are as follows: 13212 13213ToDecimalString - explicit byte-wise conversion of buffer to string of 13214decimal values (0-255) separated by commas. ToHexString - explicit byte- 13215wise 13216conversion of buffer to string of hex values (0-FF) separated by commas. 13217ToString - explicit byte-wise conversion of buffer to string. Byte-by- 13218byte 13219copy with no transform except NULL terminated. Any other implicit buffer- 13220to- 13221string conversion - byte-wise conversion of buffer to string of hex 13222values 13223(0-FF) separated by spaces. 13224 13225- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 13226 13227- Fixed a problem in AcpiNsGetPathnameLength where the returned length 13228was 13229one byte too short in the case of a node in the root scope. This could 13230cause a fault during debug output. 13231 13232- Code and Data Size: Current and previous core subsystem library sizes 13233are 13234shown below. These are the code and data sizes for the acpica.lib 13235produced 13236by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13237any ACPI driver or OSPM code. The debug version of the code includes the 13238debug output trace mechanism and has a much larger code and data size. 13239Note 13240that these values will vary depending on the efficiency of the compiler 13241and 13242the compiler options used during generation. 13243 13244 Previous Release: 13245 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 13246 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 13247 Current Release: 13248 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13249 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13250 13251 132522) iASL Compiler/Disassembler: 13253 13254- Fixed a Linux generation error. 13255 13256 13257---------------------------------------- 1325816 August 2004. Summary of changes for version 20040816: 13259 132601) ACPI CA Core Subsystem: 13261 13262Designed and implemented support within the AML interpreter for the so- 13263called "implicit return". This support returns the result of the last 13264ASL 13265operation within a control method, in the absence of an explicit Return() 13266operator. A few machines depend on this behavior, even though it is not 13267explicitly supported by the ASL language. It is optional support that 13268can 13269be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 13270 13271Removed support for the PCI_Config address space from the internal low 13272level 13273hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 13274support was not used internally, and would not work correctly anyway 13275because 13276the PCI bus number and segment number were not supported. There are 13277separate interfaces for PCI configuration space access because of the 13278unique 13279interface. 13280 13281Code and Data Size: Current and previous core subsystem library sizes are 13282shown below. These are the code and data sizes for the acpica.lib 13283produced 13284by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13285any ACPI driver or OSPM code. The debug version of the code includes the 13286debug output trace mechanism and has a much larger code and data size. 13287Note 13288that these values will vary depending on the efficiency of the compiler 13289and 13290the compiler options used during generation. 13291 13292 Previous Release: 13293 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13294 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 13295 Current Release: 13296 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 13297 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 13298 13299 133002) iASL Compiler/Disassembler: 13301 13302Fixed a problem where constants in ASL expressions at the root level (not 13303within a control method) could be inadvertently truncated during code 13304generation. This problem was introduced in the 20040715 release. 13305 13306 13307---------------------------------------- 1330815 July 2004. Summary of changes for version 20040715: 13309 133101) ACPI CA Core Subsystem: 13311 13312Restructured the internal HW GPE interfaces to pass/track the current 13313state 13314of interrupts (enabled/disabled) in order to avoid possible deadlock and 13315increase flexibility of the interfaces. 13316 13317Implemented a "lexicographical compare" for String and Buffer objects 13318within 13319the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 13320- 13321as per further clarification to the ACPI specification. Behavior is 13322similar 13323to C library "strcmp". 13324 13325Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 13326external function. In the 32-bit non-debug case, the stack use has been 13327reduced from 168 bytes to 32 bytes. 13328 13329Deployed a new run-time configuration flag, 13330AcpiGbl_EnableInterpreterSlack, 13331whose purpose is to allow the AML interpreter to forgive certain bad AML 13332constructs. Default setting is FALSE. 13333 13334Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 13335IO 13336support code. If enabled, it allows field access to go beyond the end of 13337a 13338region definition if the field is within the region length rounded up to 13339the 13340next access width boundary (a common coding error.) 13341 13342Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 13343ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 13344these 13345symbols are lowercased by the latest version of the AcpiSrc tool. 13346 13347The prototypes for the PCI interfaces in acpiosxf.h have been updated to 13348rename "Register" to simply "Reg" to prevent certain compilers from 13349complaining. 13350 13351Code and Data Size: Current and previous core subsystem library sizes are 13352shown below. These are the code and data sizes for the acpica.lib 13353produced 13354by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13355any ACPI driver or OSPM code. The debug version of the code includes the 13356debug output trace mechanism and has a much larger code and data size. 13357Note 13358that these values will vary depending on the efficiency of the compiler 13359and 13360the compiler options used during generation. 13361 13362 Previous Release: 13363 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13364 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 13365 Current Release: 13366 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13367 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 13368 13369 133702) iASL Compiler/Disassembler: 13371 13372Implemented full support for Package objects within the Case() operator. 13373Note: The Break() operator is currently not supported within Case blocks 13374(TermLists) as there is some question about backward compatibility with 13375ACPI 133761.0 interpreters. 13377 13378 13379Fixed a problem where complex terms were not supported properly within 13380the 13381Switch() operator. 13382 13383Eliminated extraneous warning for compiler-emitted reserved names of the 13384form "_T_x". (Used in Switch/Case operators.) 13385 13386Eliminated optimization messages for "_T_x" objects and small constants 13387within the DefinitionBlock operator. 13388 13389 13390---------------------------------------- 1339115 June 2004. Summary of changes for version 20040615: 13392 133931) ACPI CA Core Subsystem: 13394 13395Implemented support for Buffer and String objects (as per ACPI 2.0) for 13396the 13397following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 13398LLessEqual. 13399 13400All directory names in the entire source package are lower case, as they 13401were in earlier releases. 13402 13403Implemented "Disassemble" command in the AML debugger that will 13404disassemble 13405a single control method. 13406 13407Code and Data Size: Current and previous core subsystem library sizes are 13408shown below. These are the code and data sizes for the acpica.lib 13409produced 13410by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13411any ACPI driver or OSPM code. The debug version of the code includes the 13412debug output trace mechanism and has a much larger code and data size. 13413Note 13414that these values will vary depending on the efficiency of the compiler 13415and 13416the compiler options used during generation. 13417 13418 Previous Release: 13419 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 13420 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 13421 13422 Current Release: 13423 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13424 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 13425 13426 134272) iASL Compiler/Disassembler: 13428 13429Implemented support for Buffer and String objects (as per ACPI 2.0) for 13430the 13431following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 13432LLessEqual. 13433 13434All directory names in the entire source package are lower case, as they 13435were in earlier releases. 13436 13437Fixed a fault when using the -g or -d<nofilename> options if the FADT was 13438not found. 13439 13440Fixed an issue with the Windows version of the compiler where later 13441versions 13442of Windows place the FADT in the registry under the name "FADT" and not 13443"FACP" as earlier versions did. This applies when using the -g or - 13444d<nofilename> options. The compiler now looks for both strings as 13445necessary. 13446 13447Fixed a problem with compiler namepath optimization where a namepath 13448within 13449the Scope() operator could not be optimized if the namepath was a subpath 13450of 13451the current scope path. 13452 13453---------------------------------------- 1345427 May 2004. Summary of changes for version 20040527: 13455 134561) ACPI CA Core Subsystem: 13457 13458Completed a new design and implementation for EBDA (Extended BIOS Data 13459Area) 13460support in the RSDP scan code. The original code improperly scanned for 13461the 13462EBDA by simply scanning from memory location 0 to 0x400. The correct 13463method 13464is to first obtain the EBDA pointer from within the BIOS data area, then 13465scan 1K of memory starting at the EBDA pointer. There appear to be few 13466if 13467any machines that place the RSDP in the EBDA, however. 13468 13469Integrated a fix for a possible fault during evaluation of BufferField 13470arguments. Obsolete code that was causing the problem was removed. 13471 13472Found and fixed a problem in the Field Support Code where data could be 13473corrupted on a bit field read that starts on an aligned boundary but does 13474not end on an aligned boundary. Merged the read/write "datum length" 13475calculation code into a common procedure. 13476 13477Rolled in a couple of changes to the FreeBSD-specific header. 13478 13479 13480Code and Data Size: Current and previous core subsystem library sizes are 13481shown below. These are the code and data sizes for the acpica.lib 13482produced 13483by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13484any ACPI driver or OSPM code. The debug version of the code includes the 13485debug output trace mechanism and has a much larger code and data size. 13486Note 13487that these values will vary depending on the efficiency of the compiler 13488and 13489the compiler options used during generation. 13490 13491 Previous Release: 13492 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13493 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 13494 Current Release: 13495 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 13496 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 13497 13498 134992) iASL Compiler/Disassembler: 13500 13501Fixed a generation warning produced by some overly-verbose compilers for 13502a 1350364-bit constant. 13504 13505---------------------------------------- 1350614 May 2004. Summary of changes for version 20040514: 13507 135081) ACPI CA Core Subsystem: 13509 13510Fixed a problem where hardware GPE enable bits sometimes not set properly 13511during and after GPE method execution. Result of 04/27 changes. 13512 13513Removed extra "clear all GPEs" when sleeping/waking. 13514 13515Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 13516AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 13517to 13518the new AcpiEv* calls as appropriate. 13519 13520ACPI_OS_NAME was removed from the OS-specific headers. The default name 13521is 13522now "Microsoft Windows NT" for maximum compatibility. However this can 13523be 13524changed by modifying the acconfig.h file. 13525 13526Allow a single invocation of AcpiInstallNotifyHandler for a handler that 13527traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 13528 13529Run _INI methods on ThermalZone objects. This is against the ACPI 13530specification, but there is apparently ASL code in the field that has 13531these 13532_INI methods, and apparently "other" AML interpreters execute them. 13533 13534Performed a full 16/32/64 bit lint that resulted in some small changes. 13535 13536Added a sleep simulation command to the AML debugger to test sleep code. 13537 13538Code and Data Size: Current and previous core subsystem library sizes are 13539shown below. These are the code and data sizes for the acpica.lib 13540produced 13541by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13542any ACPI driver or OSPM code. The debug version of the code includes the 13543debug output trace mechanism and has a much larger code and data size. 13544Note 13545that these values will vary depending on the efficiency of the compiler 13546and 13547the compiler options used during generation. 13548 13549 Previous Release: 13550 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13551 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 13552 Current Release: 13553 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13554 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 13555 13556---------------------------------------- 1355727 April 2004. Summary of changes for version 20040427: 13558 135591) ACPI CA Core Subsystem: 13560 13561Completed a major overhaul of the GPE handling within ACPI CA. There are 13562now three types of GPEs: wake-only, runtime-only, and combination 13563wake/run. 13564The only GPEs allowed to be combination wake/run are for button-style 13565devices such as a control-method power button, control-method sleep 13566button, 13567or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 13568not 13569referenced by any _PRW methods are marked for "runtime" and hardware 13570enabled. Any GPE that is referenced by a _PRW method is marked for 13571"wake" 13572(and disabled at runtime). However, at sleep time, only those GPEs that 13573have been specifically enabled for wake via the AcpiEnableGpe interface 13574will 13575actually be hardware enabled. 13576 13577A new external interface has been added, AcpiSetGpeType(), that is meant 13578to 13579be used by device drivers to force a GPE to a particular type. It will 13580be 13581especially useful for the drivers for the button devices mentioned above. 13582 13583Completed restructuring of the ACPI CA initialization sequence so that 13584default operation region handlers are installed before GPEs are 13585initialized 13586and the _PRW methods are executed. This will prevent errors when the 13587_PRW 13588methods attempt to access system memory or I/O space. 13589 13590GPE enable/disable no longer reads the GPE enable register. We now keep 13591the 13592enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 13593thus no longer depend on the hardware to maintain these bits. 13594 13595Always clear the wake status and fixed/GPE status bits before sleep, even 13596for state S5. 13597 13598Improved the AML debugger output for displaying the GPE blocks and their 13599current status. 13600 13601Added new strings for the _OSI method, of the form "Windows 2001 SPx" 13602where 13603x = 0,1,2,3,4. 13604 13605Fixed a problem where the physical address was incorrectly calculated 13606when 13607the Load() operator was used to directly load from an Operation Region 13608(vs. 13609loading from a Field object.) Also added check for minimum table length 13610for 13611this case. 13612 13613Fix for multiple mutex acquisition. Restore original thread SyncLevel on 13614mutex release. 13615 13616Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 13617consistency with the other fields returned. 13618 13619Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 13620structure for each GPE in the system, so the size of this structure is 13621important. 13622 13623CPU stack requirement reduction: Cleaned up the method execution and 13624object 13625evaluation paths so that now a parameter structure is passed, instead of 13626copying the various method parameters over and over again. 13627 13628In evregion.c: Correctly exit and reenter the interpreter region if and 13629only if dispatching an operation region request to a user-installed 13630handler. 13631Do not exit/reenter when dispatching to a default handler (e.g., default 13632system memory or I/O handlers) 13633 13634 13635Notes for updating drivers for the new GPE support. The following 13636changes 13637must be made to ACPI-related device drivers that are attached to one or 13638more 13639GPEs: (This information will be added to the ACPI CA Programmer 13640Reference.) 13641 136421) AcpiInstallGpeHandler no longer automatically enables the GPE, you 13643must 13644explicitly call AcpiEnableGpe. 136452) There is a new interface called AcpiSetGpeType. This should be called 13646before enabling the GPE. Also, this interface will automatically disable 13647the GPE if it is currently enabled. 136483) AcpiEnableGpe no longer supports a GPE type flag. 13649 13650Specific drivers that must be changed: 136511) EC driver: 13652 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 13653AeGpeHandler, NULL); 13654 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 13655 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 13656 136572) Button Drivers (Power, Lid, Sleep): 13658Run _PRW method under parent device 13659If _PRW exists: /* This is a control-method button */ 13660 Extract GPE number and possibly GpeDevice 13661 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 13662 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 13663 13664For all other devices that have _PRWs, we automatically set the GPE type 13665to 13666ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 13667This 13668must be done on a selective basis, usually requiring some kind of user 13669app 13670to allow the user to pick the wake devices. 13671 13672 13673Code and Data Size: Current and previous core subsystem library sizes are 13674shown below. These are the code and data sizes for the acpica.lib 13675produced 13676by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13677any ACPI driver or OSPM code. The debug version of the code includes the 13678debug output trace mechanism and has a much larger code and data size. 13679Note 13680that these values will vary depending on the efficiency of the compiler 13681and 13682the compiler options used during generation. 13683 13684 Previous Release: 13685 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 13686 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 13687 Current Release: 13688 13689 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13690 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 13691 13692 13693 13694---------------------------------------- 1369502 April 2004. Summary of changes for version 20040402: 13696 136971) ACPI CA Core Subsystem: 13698 13699Fixed an interpreter problem where an indirect store through an ArgX 13700parameter was incorrectly applying the "implicit conversion rules" during 13701the store. From the ACPI specification: "If the target is a method local 13702or 13703argument (LocalX or ArgX), no conversion is performed and the result is 13704stored directly to the target". The new behavior is to disable implicit 13705conversion during ALL stores to an ArgX. 13706 13707Changed the behavior of the _PRW method scan to ignore any and all errors 13708returned by a given _PRW. This prevents the scan from aborting from the 13709failure of any single _PRW. 13710 13711Moved the runtime configuration parameters from the global init procedure 13712to 13713static variables in acglobal.h. This will allow the host to override the 13714default values easily. 13715 13716Code and Data Size: Current and previous core subsystem library sizes are 13717shown below. These are the code and data sizes for the acpica.lib 13718produced 13719by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13720any ACPI driver or OSPM code. The debug version of the code includes the 13721debug output trace mechanism and has a much larger code and data size. 13722Note 13723that these values will vary depending on the efficiency of the compiler 13724and 13725the compiler options used during generation. 13726 13727 Previous Release: 13728 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 13729 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 13730 Current Release: 13731 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 13732 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 13733 13734 137352) iASL Compiler/Disassembler: 13736 13737iASL now fully disassembles SSDTs. However, External() statements are 13738not 13739generated automatically for unresolved symbols at this time. This is a 13740planned feature for future implementation. 13741 13742Fixed a scoping problem in the disassembler that occurs when the type of 13743the 13744target of a Scope() operator is overridden. This problem caused an 13745incorrectly nested internal namespace to be constructed. 13746 13747Any warnings or errors that are emitted during disassembly are now 13748commented 13749out automatically so that the resulting file can be recompiled without 13750any 13751hand editing. 13752 13753---------------------------------------- 1375426 March 2004. Summary of changes for version 20040326: 13755 137561) ACPI CA Core Subsystem: 13757 13758Implemented support for "wake" GPEs via interaction between GPEs and the 13759_PRW methods. Every GPE that is pointed to by one or more _PRWs is 13760identified as a WAKE GPE and by default will no longer be enabled at 13761runtime. Previously, we were blindly enabling all GPEs with a 13762corresponding 13763_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 13764We 13765believe this has been the cause of thousands of "spurious" GPEs on some 13766systems. 13767 13768This new GPE behavior is can be reverted to the original behavior (enable 13769ALL GPEs at runtime) via a runtime flag. 13770 13771Fixed a problem where aliased control methods could not access objects 13772properly. The proper scope within the namespace was not initialized 13773(transferred to the target of the aliased method) before executing the 13774target method. 13775 13776Fixed a potential race condition on internal object deletion on the 13777return 13778object in AcpiEvaluateObject. 13779 13780Integrated a fix for resource descriptors where both _MEM and _MTP were 13781being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 13782wide, 0x0F instead of 0x03.) 13783 13784Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 13785preventing 13786a 13787fault in some cases. 13788 13789Updated Notify() values for debug statements in evmisc.c 13790 13791Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 13792 13793Code and Data Size: Current and previous core subsystem library sizes are 13794shown below. These are the code and data sizes for the acpica.lib 13795produced 13796by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13797any ACPI driver or OSPM code. The debug version of the code includes the 13798debug output trace mechanism and has a much larger code and data size. 13799Note 13800that these values will vary depending on the efficiency of the compiler 13801and 13802the compiler options used during generation. 13803 13804 Previous Release: 13805 13806 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 13807 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 13808 Current Release: 13809 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 13810 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 13811 13812---------------------------------------- 1381311 March 2004. Summary of changes for version 20040311: 13814 138151) ACPI CA Core Subsystem: 13816 13817Fixed a problem where errors occurring during the parse phase of control 13818method execution did not abort cleanly. For example, objects created and 13819installed in the namespace were not deleted. This caused all subsequent 13820invocations of the method to return the AE_ALREADY_EXISTS exception. 13821 13822Implemented a mechanism to force a control method to "Serialized" 13823execution 13824if the method attempts to create namespace objects. (The root of the 13825AE_ALREADY_EXISTS problem.) 13826 13827Implemented support for the predefined _OSI "internal" control method. 13828Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 13829and 13830"Windows 2001.1", and can be easily upgraded for new strings as 13831necessary. 13832This feature will allow "other" operating systems to execute the fully 13833tested, "Windows" code path through the ASL code 13834 13835Global Lock Support: Now allows multiple acquires and releases with any 13836internal thread. Removed concept of "owning thread" for this special 13837mutex. 13838 13839Fixed two functions that were inappropriately declaring large objects on 13840the 13841CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 13842during 13843method execution considerably. 13844 13845Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 13846S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 13847 13848Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 13849defined on the machine. 13850 13851Implemented two runtime options: One to force all control method 13852execution 13853to "Serialized" to mimic Windows behavior, another to disable _OSI 13854support 13855if it causes problems on a given machine. 13856 13857Code and Data Size: Current and previous core subsystem library sizes are 13858shown below. These are the code and data sizes for the acpica.lib 13859produced 13860by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13861any ACPI driver or OSPM code. The debug version of the code includes the 13862debug output trace mechanism and has a much larger code and data size. 13863Note 13864that these values will vary depending on the efficiency of the compiler 13865and 13866the compiler options used during generation. 13867 13868 Previous Release: 13869 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 13870 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 13871 Current Release: 13872 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 13873 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 13874 138752) iASL Compiler/Disassembler: 13876 13877Fixed an array size problem for FreeBSD that would cause the compiler to 13878fault. 13879 13880---------------------------------------- 1388120 February 2004. Summary of changes for version 20040220: 13882 13883 138841) ACPI CA Core Subsystem: 13885 13886Implemented execution of _SxD methods for Device objects in the 13887GetObjectInfo interface. 13888 13889Fixed calls to _SST method to pass the correct arguments. 13890 13891Added a call to _SST on wake to restore to "working" state. 13892 13893Check for End-Of-Buffer failure case in the WalkResources interface. 13894 13895Integrated fix for 64-bit alignment issue in acglobal.h by moving two 13896structures to the beginning of the file. 13897 13898After wake, clear GPE status register(s) before enabling GPEs. 13899 13900After wake, clear/enable power button. (Perhaps we should clear/enable 13901all 13902fixed events upon wake.) 13903 13904Fixed a couple of possible memory leaks in the Namespace manager. 13905 13906Integrated latest acnetbsd.h file. 13907 13908---------------------------------------- 1390911 February 2004. Summary of changes for version 20040211: 13910 13911 139121) ACPI CA Core Subsystem: 13913 13914Completed investigation and implementation of the call-by-reference 13915mechanism for control method arguments. 13916 13917Fixed a problem where a store of an object into an indexed package could 13918fail if the store occurs within a different method than the method that 13919created the package. 13920 13921Fixed a problem where the ToDecimal operator could return incorrect 13922results. 13923 13924Fixed a problem where the CopyObject operator could fail on some of the 13925more 13926obscure objects (e.g., Reference objects.) 13927 13928Improved the output of the Debug object to display buffer, package, and 13929index objects. 13930 13931Fixed a problem where constructs of the form "RefOf (ArgX)" did not 13932return 13933the expected result. 13934 13935Added permanent ACPI_REPORT_ERROR macros for all instances of the 13936ACPI_AML_INTERNAL exception. 13937 13938Integrated latest version of acfreebsd.h 13939 13940---------------------------------------- 1394116 January 2004. Summary of changes for version 20040116: 13942 13943The purpose of this release is primarily to update the copyright years in 13944each module, thus causing a huge number of diffs. There are a few small 13945functional changes, however. 13946 139471) ACPI CA Core Subsystem: 13948 13949Improved error messages when there is a problem finding one or more of 13950the 13951required base ACPI tables 13952 13953Reintroduced the definition of APIC_HEADER in actbl.h 13954 13955Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 13956 13957Removed extraneous reference to NewObj in dsmthdat.c 13958 139592) iASL compiler 13960 13961Fixed a problem introduced in December that disabled the correct 13962disassembly 13963of Resource Templates 13964 13965 13966---------------------------------------- 1396703 December 2003. Summary of changes for version 20031203: 13968 139691) ACPI CA Core Subsystem: 13970 13971Changed the initialization of Operation Regions during subsystem 13972init to perform two entire walks of the ACPI namespace; The first 13973to initialize the regions themselves, the second to execute the 13974_REG methods. This fixed some interdependencies across _REG 13975methods found on some machines. 13976 13977Fixed a problem where a Store(Local0, Local1) could simply update 13978the object reference count, and not create a new copy of the 13979object if the Local1 is uninitialized. 13980 13981Implemented support for the _SST reserved method during sleep 13982transitions. 13983 13984Implemented support to clear the SLP_TYP and SLP_EN bits when 13985waking up, this is apparently required by some machines. 13986 13987When sleeping, clear the wake status only if SleepState is not S5. 13988 13989Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 13990pointer arithmetic advanced a string pointer too far. 13991 13992Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 13993could be returned if the requested table has not been loaded. 13994 13995Within the support for IRQ resources, restructured the handling of 13996the active and edge/level bits. 13997 13998Fixed a few problems in AcpiPsxExecute() where memory could be 13999leaked under certain error conditions. 14000 14001Improved error messages for the cases where the ACPI mode could 14002not be entered. 14003 14004Code and Data Size: Current and previous core subsystem library 14005sizes are shown below. These are the code and data sizes for the 14006acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14007these values do not include any ACPI driver or OSPM code. The 14008debug version of the code includes the debug output trace 14009mechanism and has a much larger code and data size. Note that 14010these values will vary depending on the efficiency of the compiler 14011and the compiler options used during generation. 14012 14013 Previous Release (20031029): 14014 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 14015 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 14016 Current Release: 14017 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 14018 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 14019 140202) iASL Compiler/Disassembler: 14021 14022Implemented a fix for the iASL disassembler where a bad index was 14023generated. This was most noticeable on 64-bit platforms 14024 14025 14026---------------------------------------- 1402729 October 2003. Summary of changes for version 20031029: 14028 140291) ACPI CA Core Subsystem: 14030 14031 14032Fixed a problem where a level-triggered GPE with an associated 14033_Lxx control method was incorrectly cleared twice. 14034 14035Fixed a problem with the Field support code where an access can 14036occur beyond the end-of-region if the field is non-aligned but 14037extends to the very end of the parent region (resulted in an 14038AE_AML_REGION_LIMIT exception.) 14039 14040Fixed a problem with ACPI Fixed Events where an RT Clock handler 14041would not get invoked on an RTC event. The RTC event bitmasks for 14042the PM1 registers were not being initialized properly. 14043 14044Implemented support for executing _STA and _INI methods for 14045Processor objects. Although this is currently not part of the 14046ACPI specification, there is existing ASL code that depends on the 14047init-time execution of these methods. 14048 14049Implemented and deployed a GetDescriptorName function to decode 14050the various types of internal descriptors. Guards against null 14051descriptors during debug output also. 14052 14053Implemented and deployed a GetNodeName function to extract the 4- 14054character namespace node name. This function simplifies the debug 14055and error output, as well as guarding against null pointers during 14056output. 14057 14058Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 14059simplify the debug and error output of 64-bit integers. This 14060macro replaces the HIDWORD and LODWORD macros for dumping these 14061integers. 14062 14063Updated the implementation of the Stall() operator to only call 14064AcpiOsStall(), and also return an error if the operand is larger 14065than 255. This preserves the required behavior of not 14066relinquishing the processor, as would happen if AcpiOsSleep() was 14067called for "long stalls". 14068 14069Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 14070initialized are now treated as NOOPs. 14071 14072Cleaned up a handful of warnings during 64-bit generation. 14073 14074Fixed a reported error where and incorrect GPE number was passed 14075to the GPE dispatch handler. This value is only used for error 14076output, however. Used this opportunity to clean up and streamline 14077the GPE dispatch code. 14078 14079Code and Data Size: Current and previous core subsystem library 14080sizes are shown below. These are the code and data sizes for the 14081acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14082these values do not include any ACPI driver or OSPM code. The 14083 14084debug version of the code includes the debug output trace 14085mechanism and has a much larger code and data size. Note that 14086these values will vary depending on the efficiency of the compiler 14087and the compiler options used during generation. 14088 14089 Previous Release (20031002): 14090 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14091 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14092 Current Release: 14093 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 14094 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 14095 14096 140972) iASL Compiler/Disassembler: 14098 14099Updated the iASL compiler to return an error if the operand to the 14100Stall() operator is larger than 255. 14101 14102 14103---------------------------------------- 1410402 October 2003. Summary of changes for version 20031002: 14105 14106 141071) ACPI CA Core Subsystem: 14108 14109Fixed a problem with Index Fields where the index was not 14110incremented for fields that require multiple writes to the 14111index/data registers (Fields that are wider than the data 14112register.) 14113 14114Fixed a problem with all Field objects where a write could go 14115beyond the end-of-field if the field was larger than the access 14116granularity and therefore required multiple writes to complete the 14117request. An extra write beyond the end of the field could happen 14118inadvertently. 14119 14120Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 14121would incorrectly be returned if the width of the Data Register 14122was larger than the specified field access width. 14123 14124Completed fixes for LoadTable() and Unload() and verified their 14125operation. Implemented full support for the "DdbHandle" object 14126throughout the ACPI CA subsystem. 14127 14128Implemented full support for the MADT and ECDT tables in the ACPI 14129CA header files. Even though these tables are not directly 14130consumed by ACPI CA, the header definitions are useful for ACPI 14131device drivers. 14132 14133Integrated resource descriptor fixes posted to the Linux ACPI 14134list. This included checks for minimum descriptor length, and 14135support for trailing NULL strings within descriptors that have 14136optional string elements. 14137 14138Code and Data Size: Current and previous core subsystem library 14139sizes are shown below. These are the code and data sizes for the 14140acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14141these values do not include any ACPI driver or OSPM code. The 14142debug version of the code includes the debug output trace 14143mechanism and has a much larger code and data size. Note that 14144these values will vary depending on the efficiency of the compiler 14145and the compiler options used during generation. 14146 14147 Previous Release (20030918): 14148 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14149 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14150 Current Release: 14151 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14152 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14153 14154 141552) iASL Compiler: 14156 14157Implemented detection of non-ASCII characters within the input 14158source ASL file. This catches attempts to compile binary (AML) 14159files early in the compile, with an informative error message. 14160 14161Fixed a problem where the disassembler would fault if the output 14162filename could not be generated or if the output file could not be 14163opened. 14164 14165---------------------------------------- 1416618 September 2003. Summary of changes for version 20030918: 14167 14168 141691) ACPI CA Core Subsystem: 14170 14171Found and fixed a longstanding problem with the late execution of 14172the various deferred AML opcodes (such as Operation Regions, 14173Buffer Fields, Buffers, and Packages). If the name string 14174specified for the name of the new object placed the object in a 14175scope other than the current scope, the initialization/execution 14176of the opcode failed. The solution to this problem was to 14177implement a mechanism where the late execution of such opcodes 14178does not attempt to lookup/create the name a second time in an 14179incorrect scope. This fixes the "region size computed 14180incorrectly" problem. 14181 14182Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 14183Global Lock AE_BAD_PARAMETER error. 14184 14185Fixed several 64-bit issues with prototypes, casting and data 14186types. 14187 14188Removed duplicate prototype from acdisasm.h 14189 14190Fixed an issue involving EC Operation Region Detach (Shaohua Li) 14191 14192Code and Data Size: Current and previous core subsystem library 14193sizes are shown below. These are the code and data sizes for the 14194acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14195these values do not include any ACPI driver or OSPM code. The 14196debug version of the code includes the debug output trace 14197mechanism and has a much larger code and data size. Note that 14198these values will vary depending on the efficiency of the compiler 14199and the compiler options used during generation. 14200 14201 Previous Release: 14202 14203 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 14204 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 14205 Current Release: 14206 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14207 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14208 14209 142102) Linux: 14211 14212Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 14213correct sleep time in seconds. 14214 14215---------------------------------------- 1421614 July 2003. Summary of changes for version 20030619: 14217 142181) ACPI CA Core Subsystem: 14219 14220Parse SSDTs in order discovered, as opposed to reverse order 14221(Hrvoje Habjanic) 14222 14223Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 14224Klausner, 14225 Nate Lawson) 14226 14227 142282) Linux: 14229 14230Dynamically allocate SDT list (suggested by Andi Kleen) 14231 14232proc function return value cleanups (Andi Kleen) 14233 14234Correctly handle NMI watchdog during long stalls (Andrew Morton) 14235 14236Make it so acpismp=force works (reported by Andrew Morton) 14237 14238 14239---------------------------------------- 1424019 June 2003. Summary of changes for version 20030619: 14241 142421) ACPI CA Core Subsystem: 14243 14244Fix To/FromBCD, eliminating the need for an arch-specific #define. 14245 14246Do not acquire a semaphore in the S5 shutdown path. 14247 14248Fix ex_digits_needed for 0. (Takayoshi Kochi) 14249 14250Fix sleep/stall code reversal. (Andi Kleen) 14251 14252Revert a change having to do with control method calling 14253semantics. 14254 142552) Linux: 14256 14257acpiphp update (Takayoshi Kochi) 14258 14259Export acpi_disabled for sonypi (Stelian Pop) 14260 14261Mention acpismp=force in config help 14262 14263Re-add acpitable.c and acpismp=force. This improves backwards 14264 14265compatibility and also cleans up the code to a significant degree. 14266 14267Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 14268 14269---------------------------------------- 1427022 May 2003. Summary of changes for version 20030522: 14271 142721) ACPI CA Core Subsystem: 14273 14274Found and fixed a reported problem where an AE_NOT_FOUND error 14275occurred occasionally during _BST evaluation. This turned out to 14276be an Owner ID allocation issue where a called method did not get 14277a new ID assigned to it. Eventually, (after 64k calls), the Owner 14278ID UINT16 would wraparound so that the ID would be the same as the 14279caller's and the called method would delete the caller's 14280namespace. 14281 14282Implemented extended error reporting for control methods that are 14283aborted due to a run-time exception. Output includes the exact 14284AML instruction that caused the method abort, a dump of the method 14285locals and arguments at the time of the abort, and a trace of all 14286nested control method calls. 14287 14288Modified the interpreter to allow the creation of buffers of zero 14289length from the AML code. Implemented new code to ensure that no 14290attempt is made to actually allocate a memory buffer (of length 14291zero) - instead, a simple buffer object with a NULL buffer pointer 14292and length zero is created. A warning is no longer issued when 14293the AML attempts to create a zero-length buffer. 14294 14295Implemented a workaround for the "leading asterisk issue" in 14296_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 14297asterisk is automatically removed if present in any HID, UID, or 14298CID strings. The iASL compiler will still flag this asterisk as 14299an error, however. 14300 14301Implemented full support for _CID methods that return a package of 14302multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 14303now additionally returns a device _CID list if present. This 14304required a change to the external interface in order to pass an 14305ACPI_BUFFER object as a parameter since the _CID list is of 14306variable length. 14307 14308Fixed a problem with the new AE_SAME_HANDLER exception where 14309handler initialization code did not know about this exception. 14310 14311Code and Data Size: Current and previous core subsystem library 14312sizes are shown below. These are the code and data sizes for the 14313acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14314these values do not include any ACPI driver or OSPM code. The 14315debug version of the code includes the debug output trace 14316mechanism and has a much larger code and data size. Note that 14317these values will vary depending on the efficiency of the compiler 14318and the compiler options used during generation. 14319 14320 Previous Release (20030509): 14321 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 14322 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 14323 Current Release: 14324 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 14325 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 14326 14327 143282) Linux: 14329 14330Fixed a bug in which we would reinitialize the ACPI interrupt 14331after it was already working, thus disabling all ACPI and the IRQs 14332for any other device sharing the interrupt. (Thanks to Stian 14333Jordet) 14334 14335Toshiba driver update (John Belmonte) 14336 14337Return only 0 or 1 for our interrupt handler status (Andrew 14338Morton) 14339 14340 143413) iASL Compiler: 14342 14343Fixed a reported problem where multiple (nested) ElseIf() 14344statements were not handled correctly by the compiler, resulting 14345in incorrect warnings and incorrect AML code. This was a problem 14346in both the ASL parser and the code generator. 14347 14348 143494) Documentation: 14350 14351Added changes to existing interfaces, new exception codes, and new 14352text concerning reference count object management versus garbage 14353collection. 14354 14355---------------------------------------- 1435609 May 2003. Summary of changes for version 20030509. 14357 14358 143591) ACPI CA Core Subsystem: 14360 14361Changed the subsystem initialization sequence to hold off 14362installation of address space handlers until the hardware has been 14363initialized and the system has entered ACPI mode. This is because 14364the installation of space handlers can cause _REG methods to be 14365run. Previously, the _REG methods could potentially be run before 14366ACPI mode was enabled. 14367 14368Fixed some memory leak issues related to address space handler and 14369notify handler installation. There were some problems with the 14370reference count mechanism caused by the fact that the handler 14371objects are shared across several namespace objects. 14372 14373Fixed a reported problem where reference counts within the 14374namespace were not properly updated when named objects created by 14375method execution were deleted. 14376 14377Fixed a reported problem where multiple SSDTs caused a deletion 14378issue during subsystem termination. Restructured the table data 14379structures to simplify the linked lists and the related code. 14380 14381Fixed a problem where the table ID associated with secondary 14382tables (SSDTs) was not being propagated into the namespace objects 14383created by those tables. This would only present a problem for 14384tables that are unloaded at run-time, however. 14385 14386Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 14387type as the length parameter (instead of UINT32). 14388 14389Solved a long-standing problem where an ALREADY_EXISTS error 14390appears on various systems. This problem could happen when there 14391are multiple PCI_Config operation regions under a single PCI root 14392bus. This doesn't happen very frequently, but there are some 14393systems that do this in the ASL. 14394 14395Fixed a reported problem where the internal DeleteNode function 14396was incorrectly handling the case where a namespace node was the 14397first in the parent's child list, and had additional peers (not 14398the only child, but first in the list of children.) 14399 14400Code and Data Size: Current core subsystem library sizes are shown 14401below. These are the code and data sizes for the acpica.lib 14402produced by the Microsoft Visual C++ 6.0 compiler, and these 14403values do not include any ACPI driver or OSPM code. The debug 14404version of the code includes the debug output trace mechanism and 14405has a much larger code and data size. Note that these values will 14406vary depending on the efficiency of the compiler and the compiler 14407options used during generation. 14408 14409 Previous Release 14410 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 14411 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 14412 Current Release: 14413 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 14414 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 14415 14416 144172) Linux: 14418 14419Allow ":" in OS override string (Ducrot Bruno) 14420 14421Kobject fix (Greg KH) 14422 14423 144243 iASL Compiler/Disassembler: 14425 14426Fixed a problem in the generation of the C source code files (AML 14427is emitted in C source statements for BIOS inclusion) where the 14428Ascii dump that appears within a C comment at the end of each line 14429could cause a compile time error if the AML sequence happens to 14430have an open comment or close comment sequence embedded. 14431 14432 14433---------------------------------------- 1443424 April 2003. Summary of changes for version 20030424. 14435 14436 144371) ACPI CA Core Subsystem: 14438 14439Support for big-endian systems has been implemented. Most of the 14440support has been invisibly added behind big-endian versions of the 14441ACPI_MOVE_* macros. 14442 14443Fixed a problem in AcpiHwDisableGpeBlock() and 14444AcpiHwClearGpeBlock() where an incorrect offset was passed to the 14445low level hardware write routine. The offset parameter was 14446actually eliminated from the low level read/write routines because 14447they had become obsolete. 14448 14449Fixed a problem where a handler object was deleted twice during 14450the removal of a fixed event handler. 14451 14452 144532) Linux: 14454 14455A fix for SMP systems with link devices was contributed by 14456 14457Compaq's Dan Zink. 14458 14459(2.5) Return whether we handled the interrupt in our IRQ handler. 14460(Linux ISRs no longer return void, so we can propagate the handler 14461return value from the ACPI CA core back to the OS.) 14462 14463 14464 144653) Documentation: 14466 14467The ACPI CA Programmer Reference has been updated to reflect new 14468interfaces and changes to existing interfaces. 14469 14470---------------------------------------- 1447128 March 2003. Summary of changes for version 20030328. 14472 144731) ACPI CA Core Subsystem: 14474 14475The GPE Block Device support has been completed. New interfaces 14476are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 14477interfaces (enable, disable, clear, getstatus) have been split 14478into separate interfaces for Fixed Events and General Purpose 14479Events (GPEs) in order to support GPE Block Devices properly. 14480 14481Fixed a problem where the error message "Failed to acquire 14482semaphore" would appear during operations on the embedded 14483controller (EC). 14484 14485Code and Data Size: Current core subsystem library sizes are shown 14486below. These are the code and data sizes for the acpica.lib 14487produced by the Microsoft Visual C++ 6.0 compiler, and these 14488values do not include any ACPI driver or OSPM code. The debug 14489version of the code includes the debug output trace mechanism and 14490has a much larger code and data size. Note that these values will 14491vary depending on the efficiency of the compiler and the compiler 14492options used during generation. 14493 14494 Previous Release 14495 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 14496 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 14497 Current Release: 14498 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 14499 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 14500 14501 14502---------------------------------------- 1450328 February 2003. Summary of changes for version 20030228. 14504 14505 145061) ACPI CA Core Subsystem: 14507 14508The GPE handling and dispatch code has been completely overhauled 14509in preparation for support of GPE Block Devices (ID ACPI0006). 14510This affects internal data structures and code only; there should 14511be no differences visible externally. One new file has been 14512added, evgpeblk.c 14513 14514The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 14515fields that are used to determine the GPE block lengths. The 14516REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 14517structures are ignored. This is per the ACPI specification but it 14518isn't very clear. The full 256 Block 0/1 GPEs are now supported 14519(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 14520 14521In the SCI interrupt handler, removed the read of the PM1_CONTROL 14522register to look at the SCI_EN bit. On some machines, this read 14523causes an SMI event and greatly slows down SCI events. (This may 14524in fact be the cause of slow battery status response on some 14525systems.) 14526 14527Fixed a problem where a store of a NULL string to a package object 14528could cause the premature deletion of the object. This was seen 14529during execution of the battery _BIF method on some systems, 14530resulting in no battery data being returned. 14531 14532Added AcpiWalkResources interface to simplify parsing of resource 14533lists. 14534 14535Code and Data Size: Current core subsystem library sizes are shown 14536below. These are the code and data sizes for the acpica.lib 14537produced by the Microsoft Visual C++ 6.0 compiler, and these 14538values do not include any ACPI driver or OSPM code. The debug 14539version of the code includes the debug output trace mechanism and 14540has a much larger code and data size. Note that these values will 14541vary depending on the efficiency of the compiler and the compiler 14542options used during generation. 14543 14544 Previous Release 14545 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14546 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14547 Current Release: 14548 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 14549 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 14550 14551 145522) Linux 14553 14554S3 fixes (Ole Rohne) 14555 14556Update ACPI PHP driver with to use new acpi_walk_resource API 14557(Bjorn Helgaas) 14558 14559Add S4BIOS support (Pavel Machek) 14560 14561Map in entire table before performing checksum (John Stultz) 14562 14563Expand the mem= cmdline to allow the specification of reserved and 14564ACPI DATA blocks (Pavel Machek) 14565 14566Never use ACPI on VISWS 14567 14568Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 14569 14570Revert a change that allowed P_BLK lengths to be 4 or 5. This is 14571causing us to think that some systems support C2 when they really 14572don't. 14573 14574Do not count processor objects for non-present CPUs (Thanks to 14575Dominik Brodowski) 14576 14577 145783) iASL Compiler: 14579 14580Fixed a problem where ASL include files could not be found and 14581opened. 14582 14583Added support for the _PDC reserved name. 14584 14585 14586---------------------------------------- 1458722 January 2003. Summary of changes for version 20030122. 14588 14589 145901) ACPI CA Core Subsystem: 14591 14592Added a check for constructs of the form: Store (Local0, Local0) 14593where Local0 is not initialized. Apparently, some BIOS 14594programmers believe that this is a NOOP. Since this store doesn't 14595do anything anyway, the new prototype behavior will ignore this 14596error. This is a case where we can relax the strict checking in 14597the interpreter in the name of compatibility. 14598 14599 146002) Linux 14601 14602The AcpiSrc Source Conversion Utility has been released with the 14603Linux package for the first time. This is the utility that is 14604used to convert the ACPI CA base source code to the Linux version. 14605 14606(Both) Handle P_BLK lengths shorter than 6 more gracefully 14607 14608(Both) Move more headers to include/acpi, and delete an unused 14609header. 14610 14611(Both) Move drivers/acpi/include directory to include/acpi 14612 14613(Both) Boot functions don't use cmdline, so don't pass it around 14614 14615(Both) Remove include of unused header (Adrian Bunk) 14616 14617(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 14618the 14619former now also includes the latter, acpiphp.h only needs the one, 14620now. 14621 14622(2.5) Make it possible to select method of bios restoring after S3 14623resume. [=> no more ugly ifdefs] (Pavel Machek) 14624 14625(2.5) Make proc write interfaces work (Pavel Machek) 14626 14627(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 14628 14629(2.5) Break out ACPI Perf code into its own module, under cpufreq 14630(Dominik Brodowski) 14631 14632(2.4) S4BIOS support (Ducrot Bruno) 14633 14634(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 14635Visinoni) 14636 14637 146383) iASL Compiler: 14639 14640Added support to disassemble SSDT and PSDTs. 14641 14642Implemented support to obtain SSDTs from the Windows registry if 14643available. 14644 14645 14646---------------------------------------- 1464709 January 2003. Summary of changes for version 20030109. 14648 146491) ACPI CA Core Subsystem: 14650 14651Changed the behavior of the internal Buffer-to-String conversion 14652function. The current ACPI specification states that the contents 14653of the buffer are "converted to a string of two-character 14654hexadecimal numbers, each separated by a space". Unfortunately, 14655this definition is not backwards compatible with existing ACPI 1.0 14656implementations (although the behavior was not defined in the ACPI 146571.0 specification). The new behavior simply copies data from the 14658buffer to the string until a null character is found or the end of 14659the buffer is reached. The new String object is always null 14660terminated. This problem was seen during the generation of _BIF 14661battery data where incorrect strings were returned for battery 14662type, etc. This will also require an errata to the ACPI 14663specification. 14664 14665Renamed all instances of NATIVE_UINT and NATIVE_INT to 14666ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 14667 14668Copyright in all module headers (both Linux and non-Linux) has be 14669updated to 2003. 14670 14671Code and Data Size: Current core subsystem library sizes are shown 14672below. These are the code and data sizes for the acpica.lib 14673produced by the Microsoft Visual C++ 6.0 compiler, and these 14674values do not include any ACPI driver or OSPM code. The debug 14675version of the code includes the debug output trace mechanism and 14676has a much larger code and data size. Note that these values will 14677vary depending on the efficiency of the compiler and the compiler 14678options used during generation. 14679 14680 Previous Release 14681 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14682 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14683 Current Release: 14684 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14685 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14686 14687 146882) Linux 14689 14690Fixed an oops on module insertion/removal (Matthew Tippett) 14691 14692(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 14693 14694(2.5) Replace pr_debug (Randy Dunlap) 14695 14696(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 14697 14698(Both) Eliminate spawning of thread from timer callback, in favor 14699of schedule_work() 14700 14701(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 14702 14703(Both) Added define for Fixed Function HW region (Matthew Wilcox) 14704 14705(Both) Add missing statics to button.c (Pavel Machek) 14706 14707Several changes have been made to the source code translation 14708utility that generates the Linux Code in order to make the code 14709more "Linux-like": 14710 14711All typedefs on structs and unions have been removed in keeping 14712with the Linux coding style. 14713 14714Removed the non-Linux SourceSafe module revision number from each 14715module header. 14716 14717Completed major overhaul of symbols to be lowercased for linux. 14718Doubled the number of symbols that are lowercased. 14719 14720Fixed a problem where identifiers within procedure headers and 14721within quotes were not fully lower cased (they were left with a 14722starting capital.) 14723 14724Some C macros whose only purpose is to allow the generation of 16- 14725bit code are now completely removed in the Linux code, increasing 14726readability and maintainability. 14727 14728---------------------------------------- 14729 1473012 December 2002. Summary of changes for version 20021212. 14731 14732 147331) ACPI CA Core Subsystem: 14734 14735Fixed a problem where the creation of a zero-length AML Buffer 14736would cause a fault. 14737 14738Fixed a problem where a Buffer object that pointed to a static AML 14739buffer (in an ACPI table) could inadvertently be deleted, causing 14740memory corruption. 14741 14742Fixed a problem where a user buffer (passed in to the external 14743ACPI CA interfaces) could be overwritten if the buffer was too 14744small to complete the operation, causing memory corruption. 14745 14746Fixed a problem in the Buffer-to-String conversion code where a 14747string of length one was always returned, regardless of the size 14748of the input Buffer object. 14749 14750Removed the NATIVE_CHAR data type across the entire source due to 14751lack of need and lack of consistent use. 14752 14753Code and Data Size: Current core subsystem library sizes are shown 14754below. These are the code and data sizes for the acpica.lib 14755produced by the Microsoft Visual C++ 6.0 compiler, and these 14756values do not include any ACPI driver or OSPM code. The debug 14757version of the code includes the debug output trace mechanism and 14758has a much larger code and data size. Note that these values will 14759vary depending on the efficiency of the compiler and the compiler 14760options used during generation. 14761 14762 Previous Release 14763 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 14764 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 14765 Current Release: 14766 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14767 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14768 14769 14770---------------------------------------- 1477105 December 2002. Summary of changes for version 20021205. 14772 147731) ACPI CA Core Subsystem: 14774 14775Fixed a problem where a store to a String or Buffer object could 14776cause corruption of the DSDT if the object type being stored was 14777the same as the target object type and the length of the object 14778being stored was equal to or smaller than the original (existing) 14779target object. This was seen to cause corruption of battery _BIF 14780buffers if the _BIF method modified the buffer on the fly. 14781 14782Fixed a problem where an internal error was generated if a control 14783method invocation was used in an OperationRegion, Buffer, or 14784Package declaration. This was caused by the deferred parsing of 14785the control method and thus the deferred creation of the internal 14786method object. The solution to this problem was to create the 14787internal method object at the moment the method is encountered in 14788the first pass - so that subsequent references to the method will 14789able to obtain the required parameter count and thus properly 14790parse the method invocation. This problem presented itself as an 14791AE_AML_INTERNAL during the pass 1 parse phase during table load. 14792 14793Fixed a problem where the internal String object copy routine did 14794not always allocate sufficient memory for the target String object 14795and caused memory corruption. This problem was seen to cause 14796"Allocation already present in list!" errors as memory allocation 14797became corrupted. 14798 14799Implemented a new function for the evaluation of namespace objects 14800that allows the specification of the allowable return object 14801types. This simplifies a lot of code that checks for a return 14802object of one or more specific objects returned from the 14803evaluation (such as _STA, etc.) This may become and external 14804function if it would be useful to ACPI-related drivers. 14805 14806Completed another round of prefixing #defines with "ACPI_" for 14807clarity. 14808 14809Completed additional code restructuring to allow more modular 14810linking for iASL compiler and AcpiExec. Several files were split 14811creating new files. New files: nsparse.c dsinit.c evgpe.c 14812 14813Implemented an abort mechanism to terminate an executing control 14814method via the AML debugger. This feature is useful for debugging 14815control methods that depend (wait) for specific hardware 14816responses. 14817 14818Code and Data Size: Current core subsystem library sizes are shown 14819below. These are the code and data sizes for the acpica.lib 14820produced by the Microsoft Visual C++ 6.0 compiler, and these 14821values do not include any ACPI driver or OSPM code. The debug 14822version of the code includes the debug output trace mechanism and 14823has a much larger code and data size. Note that these values will 14824vary depending on the efficiency of the compiler and the compiler 14825options used during generation. 14826 14827 Previous Release 14828 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14829 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 14830 Current Release: 14831 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 14832 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 14833 14834 148352) iASL Compiler/Disassembler 14836 14837Fixed a compiler code generation problem for "Interrupt" Resource 14838Descriptors. If specified in the ASL, the optional "Resource 14839Source Index" and "Resource Source" fields were not inserted into 14840the correct location within the AML resource descriptor, creating 14841an invalid descriptor. 14842 14843Fixed a disassembler problem for "Interrupt" resource descriptors. 14844The optional "Resource Source Index" and "Resource Source" fields 14845were ignored. 14846 14847 14848---------------------------------------- 1484922 November 2002. Summary of changes for version 20021122. 14850 14851 148521) ACPI CA Core Subsystem: 14853 14854Fixed a reported problem where an object stored to a Method Local 14855or Arg was not copied to a new object during the store - the 14856object pointer was simply copied to the Local/Arg. This caused 14857all subsequent operations on the Local/Arg to also affect the 14858original source of the store operation. 14859 14860Fixed a problem where a store operation to a Method Local or Arg 14861was not completed properly if the Local/Arg contained a reference 14862(from RefOf) to a named field. The general-purpose store-to- 14863namespace-node code is now used so that this case is handled 14864automatically. 14865 14866Fixed a problem where the internal object copy routine would cause 14867a protection fault if the object being copied was a Package and 14868contained either 1) a NULL package element or 2) a nested sub- 14869package. 14870 14871Fixed a problem with the GPE initialization that resulted from an 14872ambiguity in the ACPI specification. One section of the 14873specification states that both the address and length of the GPE 14874block must be zero if the block is not supported. Another section 14875implies that only the address need be zero if the block is not 14876supported. The code has been changed so that both the address and 14877the length must be non-zero to indicate a valid GPE block (i.e., 14878if either the address or the length is zero, the GPE block is 14879invalid.) 14880 14881Code and Data Size: Current core subsystem library sizes are shown 14882below. These are the code and data sizes for the acpica.lib 14883produced by the Microsoft Visual C++ 6.0 compiler, and these 14884values do not include any ACPI driver or OSPM code. The debug 14885version of the code includes the debug output trace mechanism and 14886has a much larger code and data size. Note that these values will 14887vary depending on the efficiency of the compiler and the compiler 14888options used during generation. 14889 14890 Previous Release 14891 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 14892 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 14893 Current Release: 14894 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14895 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 14896 14897 148982) Linux 14899 14900Cleaned up EC driver. Exported an external EC read/write 14901interface. By going through this, other drivers (most notably 14902sonypi) will be able to serialize access to the EC. 14903 14904 149053) iASL Compiler/Disassembler 14906 14907Implemented support to optionally generate include files for both 14908ASM and C (the -i switch). This simplifies BIOS development by 14909automatically creating include files that contain external 14910declarations for the symbols that are created within the 14911 14912(optionally generated) ASM and C AML source files. 14913 14914 14915---------------------------------------- 1491615 November 2002. Summary of changes for version 20021115. 14917 149181) ACPI CA Core Subsystem: 14919 14920Fixed a memory leak problem where an error during resolution of 14921 14922method arguments during a method invocation from another method 14923failed to cleanup properly by deleting all successfully resolved 14924argument objects. 14925 14926Fixed a problem where the target of the Index() operator was not 14927correctly constructed if the source object was a package. This 14928problem has not been detected because the use of a target operand 14929with Index() is very rare. 14930 14931Fixed a problem with the Index() operator where an attempt was 14932made to delete the operand objects twice. 14933 14934Fixed a problem where an attempt was made to delete an operand 14935twice during execution of the CondRefOf() operator if the target 14936did not exist. 14937 14938Implemented the first of perhaps several internal create object 14939functions that create and initialize a specific object type. This 14940consolidates duplicated code wherever the object is created, thus 14941shrinking the size of the subsystem. 14942 14943Implemented improved debug/error messages for errors that occur 14944during nested method invocations. All executing method pathnames 14945are displayed (with the error) as the call stack is unwound - thus 14946simplifying debug. 14947 14948Fixed a problem introduced in the 10/02 release that caused 14949premature deletion of a buffer object if a buffer was used as an 14950ASL operand where an integer operand is required (Thus causing an 14951implicit object conversion from Buffer to Integer.) The change in 14952the 10/02 release was attempting to fix a memory leak (albeit 14953incorrectly.) 14954 14955Code and Data Size: Current core subsystem library sizes are shown 14956below. These are the code and data sizes for the acpica.lib 14957produced by the Microsoft Visual C++ 6.0 compiler, and these 14958values do not include any ACPI driver or OSPM code. The debug 14959version of the code includes the debug output trace mechanism and 14960has a much larger code and data size. Note that these values will 14961vary depending on the efficiency of the compiler and the compiler 14962options used during generation. 14963 14964 Previous Release 14965 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 14966 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 14967 Current Release: 14968 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 14969 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 14970 14971 149722) Linux 14973 14974Changed the implementation of the ACPI semaphores to use down() 14975instead of down_interruptable(). It is important that the 14976execution of ACPI control methods not be interrupted by signals. 14977Methods must run to completion, or the system may be left in an 14978unknown/unstable state. 14979 14980Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 14981(Shawn Starr) 14982 14983 149843) iASL Compiler/Disassembler 14985 14986 14987Changed the default location of output files. All output files 14988are now placed in the current directory by default instead of in 14989the directory of the source file. This change may affect some 14990existing makefiles, but it brings the behavior of the compiler in 14991line with other similar tools. The location of the output files 14992can be overridden with the -p command line switch. 14993 14994 14995---------------------------------------- 1499611 November 2002. Summary of changes for version 20021111. 14997 14998 149990) ACPI Specification 2.0B is released and is now available at: 15000http://www.acpi.info/index.html 15001 15002 150031) ACPI CA Core Subsystem: 15004 15005Implemented support for the ACPI 2.0 SMBus Operation Regions. 15006This includes the early detection and handoff of the request to 15007the SMBus region handler (avoiding all of the complex field 15008support code), and support for the bidirectional return packet 15009from an SMBus write operation. This paves the way for the 15010development of SMBus drivers in each host operating system. 15011 15012Fixed a problem where the semaphore WAIT_FOREVER constant was 15013defined as 32 bits, but must be 16 bits according to the ACPI 15014specification. This had the side effect of causing ASL 15015Mutex/Event timeouts even though the ASL code requested a wait 15016forever. Changed all internal references to the ACPI timeout 15017parameter to 16 bits to prevent future problems. Changed the name 15018of WAIT_FOREVER to ACPI_WAIT_FOREVER. 15019 15020Code and Data Size: Current core subsystem library sizes are shown 15021below. These are the code and data sizes for the acpica.lib 15022produced by the Microsoft Visual C++ 6.0 compiler, and these 15023values do not include any ACPI driver or OSPM code. The debug 15024version of the code includes the debug output trace mechanism and 15025has a much larger code and data size. Note that these values will 15026vary depending on the efficiency of the compiler and the compiler 15027options used during generation. 15028 15029 Previous Release 15030 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15031 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 15032 Current Release: 15033 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 15034 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 15035 15036 150372) Linux 15038 15039Module loading/unloading fixes (John Cagle) 15040 15041 150423) iASL Compiler/Disassembler 15043 15044Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 15045 15046Implemented support for the disassembly of all SMBus protocol 15047keywords (SMBQuick, SMBWord, etc.) 15048 15049---------------------------------------- 1505001 November 2002. Summary of changes for version 20021101. 15051 15052 150531) ACPI CA Core Subsystem: 15054 15055Fixed a problem where platforms that have a GPE1 block but no GPE0 15056block were not handled correctly. This resulted in a "GPE 15057overlap" error message. GPE0 is no longer required. 15058 15059Removed code added in the previous release that inserted nodes 15060into the namespace in alphabetical order. This caused some side- 15061effects on various machines. The root cause of the problem is 15062still under investigation since in theory, the internal ordering 15063of the namespace nodes should not matter. 15064 15065 15066Enhanced error reporting for the case where a named object is not 15067found during control method execution. The full ACPI namepath 15068(name reference) of the object that was not found is displayed in 15069this case. 15070 15071Note: as a result of the overhaul of the namespace object types in 15072the previous release, the namespace nodes for the predefined 15073scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 15074instead of ACPI_TYPE_ANY. This simplifies the namespace 15075management code but may affect code that walks the namespace tree 15076looking for specific object types. 15077 15078Code and Data Size: Current core subsystem library sizes are shown 15079below. These are the code and data sizes for the acpica.lib 15080produced by the Microsoft Visual C++ 6.0 compiler, and these 15081values do not include any ACPI driver or OSPM code. The debug 15082version of the code includes the debug output trace mechanism and 15083has a much larger code and data size. Note that these values will 15084vary depending on the efficiency of the compiler and the compiler 15085options used during generation. 15086 15087 Previous Release 15088 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15089 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15090 Current Release: 15091 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15092 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 15093 15094 150952) Linux 15096 15097Fixed a problem introduced in the previous release where the 15098Processor and Thermal objects were not recognized and installed in 15099/proc. This was related to the scope type change described above. 15100 15101 151023) iASL Compiler/Disassembler 15103 15104Implemented the -g option to get all of the required ACPI tables 15105from the registry and save them to files (Windows version of the 15106compiler only.) The required tables are the FADT, FACS, and DSDT. 15107 15108Added ACPI table checksum validation during table disassembly in 15109order to catch corrupted tables. 15110 15111 15112---------------------------------------- 1511322 October 2002. Summary of changes for version 20021022. 15114 151151) ACPI CA Core Subsystem: 15116 15117Implemented a restriction on the Scope operator that the target 15118must already exist in the namespace at the time the operator is 15119encountered (during table load or method execution). In other 15120words, forward references are not allowed and Scope() cannot 15121create a new object. This changes the previous behavior where the 15122interpreter would create the name if not found. This new behavior 15123correctly enables the search-to-root algorithm during namespace 15124lookup of the target name. Because of this upsearch, this fixes 15125the known Compaq _SB_.OKEC problem and makes both the AML 15126interpreter and iASL compiler compatible with other ACPI 15127implementations. 15128 15129Completed a major overhaul of the internal ACPI object types for 15130the ACPI Namespace and the associated operand objects. Many of 15131these types had become obsolete with the introduction of the two- 15132pass namespace load. This cleanup simplifies the code and makes 15133the entire namespace load mechanism much clearer and easier to 15134understand. 15135 15136Improved debug output for tracking scope opening/closing to help 15137diagnose scoping issues. The old scope name as well as the new 15138scope name are displayed. Also improved error messages for 15139problems with ASL Mutex objects and error messages for GPE 15140problems. 15141 15142Cleaned up the namespace dump code, removed obsolete code. 15143 15144All string output (for all namespace/object dumps) now uses the 15145common ACPI string output procedure which handles escapes properly 15146and does not emit non-printable characters. 15147 15148Fixed some issues with constants in the 64-bit version of the 15149local C library (utclib.c) 15150 15151 151522) Linux 15153 15154EC Driver: No longer attempts to acquire the Global Lock at 15155interrupt level. 15156 15157 151583) iASL Compiler/Disassembler 15159 15160Implemented ACPI 2.0B grammar change that disallows all Type 1 and 151612 opcodes outside of a control method. This means that the 15162"executable" operators (versus the "namespace" operators) cannot 15163be used at the table level; they can only be used within a control 15164method. 15165 15166Implemented the restriction on the Scope() operator where the 15167target must already exist in the namespace at the time the 15168operator is encountered (during ASL compilation). In other words, 15169forward references are not allowed and Scope() cannot create a new 15170object. This makes the iASL compiler compatible with other ACPI 15171implementations and makes the Scope() implementation adhere to the 15172ACPI specification. 15173 15174Fixed a problem where namepath optimization for the Alias operator 15175was optimizing the wrong path (of the two namepaths.) This caused 15176a "Missing alias link" error message. 15177 15178Fixed a problem where an "unknown reserved name" warning could be 15179incorrectly generated for names like "_SB" when the trailing 15180underscore is not used in the original ASL. 15181 15182Fixed a problem where the reserved name check did not handle 15183NamePaths with multiple NameSegs correctly. The first nameseg of 15184the NamePath was examined instead of the last NameSeg. 15185 15186 15187---------------------------------------- 15188 1518902 October 2002. Summary of changes for this release. 15190 15191 151921) ACPI CA Core Subsystem version 20021002: 15193 15194Fixed a problem where a store/copy of a string to an existing 15195string did not always set the string length properly in the String 15196object. 15197 15198Fixed a reported problem with the ToString operator where the 15199behavior was identical to the ToHexString operator instead of just 15200simply converting a raw buffer to a string data type. 15201 15202Fixed a problem where CopyObject and the other "explicit" 15203conversion operators were not updating the internal namespace node 15204type as part of the store operation. 15205 15206Fixed a memory leak during implicit source operand conversion 15207where the original object was not deleted if it was converted to a 15208new object of a different type. 15209 15210Enhanced error messages for all problems associated with namespace 15211lookups. Common procedure generates and prints the lookup name as 15212well as the formatted status. 15213 15214Completed implementation of a new design for the Alias support 15215within the namespace. The existing design did not handle the case 15216where a new object was assigned to one of the two names due to the 15217use of an explicit conversion operator, resulting in the two names 15218pointing to two different objects. The new design simply points 15219the Alias name to the original name node - not to the object. 15220This results in a level of indirection that must be handled in the 15221name resolution mechanism. 15222 15223Code and Data Size: Current core subsystem library sizes are shown 15224below. These are the code and data sizes for the acpica.lib 15225produced by the Microsoft Visual C++ 6.0 compiler, and these 15226values do not include any ACPI driver or OSPM code. The debug 15227version of the code includes the debug output trace mechanism and 15228has a larger code and data size. Note that these values will vary 15229depending on the efficiency of the compiler and the compiler 15230options used during generation. 15231 15232 Previous Release 15233 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15234 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 15235 Current Release: 15236 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15237 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15238 15239 152402) Linux 15241 15242Initialize thermal driver's timer before it is used. (Knut 15243Neumann) 15244 15245Allow handling negative celsius values. (Kochi Takayoshi) 15246 15247Fix thermal management and make trip points. R/W (Pavel Machek) 15248 15249Fix /proc/acpi/sleep. (P. Christeas) 15250 15251IA64 fixes. (David Mosberger) 15252 15253Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 15254 15255Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 15256Brodowski) 15257 15258 152593) iASL Compiler/Disassembler 15260 15261Clarified some warning/error messages. 15262 15263 15264---------------------------------------- 1526518 September 2002. Summary of changes for this release. 15266 15267 152681) ACPI CA Core Subsystem version 20020918: 15269 15270Fixed a reported problem with reference chaining (via the Index() 15271and RefOf() operators) in the ObjectType() and SizeOf() operators. 15272The definition of these operators includes the dereferencing of 15273all chained references to return information on the base object. 15274 15275Fixed a problem with stores to indexed package elements - the 15276existing code would not complete the store if an "implicit 15277conversion" was not performed. In other words, if the existing 15278object (package element) was to be replaced completely, the code 15279didn't handle this case. 15280 15281Relaxed typechecking on the ASL "Scope" operator to allow the 15282target name to refer to an object of type Integer, String, or 15283Buffer, in addition to the scoping object types (Device, 15284predefined Scopes, Processor, PowerResource, and ThermalZone.) 15285This allows existing AML code that has workarounds for a bug in 15286Windows to function properly. A warning is issued, however. This 15287affects both the AML interpreter and the iASL compiler. Below is 15288an example of this type of ASL code: 15289 15290 Name(DEB,0x00) 15291 Scope(DEB) 15292 { 15293 15294Fixed some reported problems with 64-bit integer support in the 15295local implementation of C library functions (clib.c) 15296 15297 152982) Linux 15299 15300Use ACPI fix map region instead of IOAPIC region, since it is 15301undefined in non-SMP. 15302 15303Ensure that the SCI has the proper polarity and trigger, even on 15304systems that do not have an interrupt override entry in the MADT. 15305 153062.5 big driver reorganization (Pat Mochel) 15307 15308Use early table mapping code from acpitable.c (Andi Kleen) 15309 15310New blacklist entries (Andi Kleen) 15311 15312Blacklist improvements. Split blacklist code out into a separate 15313file. Move checking the blacklist to very early. Previously, we 15314would use ACPI tables, and then halfway through init, check the 15315blacklist -- too late. Now, it's early enough to completely fall- 15316back to non-ACPI. 15317 15318 153193) iASL Compiler/Disassembler version 20020918: 15320 15321Fixed a problem where the typechecking code didn't know that an 15322alias could point to a method. In other words, aliases were not 15323being dereferenced during typechecking. 15324 15325 15326---------------------------------------- 1532729 August 2002. Summary of changes for this release. 15328 153291) ACPI CA Core Subsystem Version 20020829: 15330 15331If the target of a Scope() operator already exists, it must be an 15332object type that actually opens a scope -- such as a Device, 15333Method, Scope, etc. This is a fatal runtime error. Similar error 15334check has been added to the iASL compiler also. 15335 15336Tightened up the namespace load to disallow multiple names in the 15337same scope. This previously was allowed if both objects were of 15338the same type. (i.e., a lookup was the same as entering a new 15339name). 15340 15341 153422) Linux 15343 15344Ensure that the ACPI interrupt has the proper trigger and 15345polarity. 15346 15347local_irq_disable is extraneous. (Matthew Wilcox) 15348 15349Make "acpi=off" actually do what it says, and not use the ACPI 15350interpreter *or* the tables. 15351 15352Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 15353Takayoshi) 15354 15355 153563) iASL Compiler/Disassembler Version 20020829: 15357 15358Implemented namepath optimization for name declarations. For 15359example, a declaration like "Method (\_SB_.ABCD)" would get 15360optimized to "Method (ABCD)" if the declaration is within the 15361\_SB_ scope. This optimization is in addition to the named 15362reference path optimization first released in the previous 15363version. This would seem to complete all possible optimizations 15364for namepaths within the ASL/AML. 15365 15366If the target of a Scope() operator already exists, it must be an 15367object type that actually opens a scope -- such as a Device, 15368Method, Scope, etc. 15369 15370Implemented a check and warning for unreachable code in the same 15371block below a Return() statement. 15372 15373Fixed a problem where the listing file was not generated if the 15374compiler aborted if the maximum error count was exceeded (200). 15375 15376Fixed a problem where the typechecking of method return values was 15377broken. This includes the check for a return value when the 15378method is invoked as a TermArg (a return value is expected.) 15379 15380Fixed a reported problem where EOF conditions during a quoted 15381string or comment caused a fault. 15382 15383 15384---------------------------------------- 1538515 August 2002. Summary of changes for this release. 15386 153871) ACPI CA Core Subsystem Version 20020815: 15388 15389Fixed a reported problem where a Store to a method argument that 15390contains a reference did not perform the indirect store correctly. 15391This problem was created during the conversion to the new 15392reference object model - the indirect store to a method argument 15393code was not updated to reflect the new model. 15394 15395Reworked the ACPI mode change code to better conform to ACPI 2.0, 15396handle corner cases, and improve code legibility (Kochi Takayoshi) 15397 15398Fixed a problem with the pathname parsing for the carat (^) 15399prefix. The heavy use of the carat operator by the new namepath 15400optimization in the iASL compiler uncovered a problem with the AML 15401interpreter handling of this prefix. In the case where one or 15402more carats precede a single nameseg, the nameseg was treated as 15403standalone and the search rule (to root) was inadvertently 15404applied. This could cause both the iASL compiler and the 15405interpreter to find the wrong object or to miss the error that 15406should occur if the object does not exist at that exact pathname. 15407 15408Found and fixed the problem where the HP Pavilion DSDT would not 15409load. This was a relatively minor tweak to the table loading code 15410(a problem caused by the unexpected encounter with a method 15411invocation not within a control method), but it does not solve the 15412overall issue of the execution of AML code at the table level. 15413This investigation is still ongoing. 15414 15415Code and Data Size: Current core subsystem library sizes are shown 15416below. These are the code and data sizes for the acpica.lib 15417produced by the Microsoft Visual C++ 6.0 compiler, and these 15418values do not include any ACPI driver or OSPM code. The debug 15419version of the code includes the debug output trace mechanism and 15420has a larger code and data size. Note that these values will vary 15421depending on the efficiency of the compiler and the compiler 15422options used during generation. 15423 15424 Previous Release 15425 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 15426 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 15427 Current Release: 15428 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15429 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 15430 15431 154322) Linux 15433 15434Remove redundant slab.h include (Brad Hards) 15435 15436Fix several bugs in thermal.c (Herbert Nachtnebel) 15437 15438Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 15439 15440Change acpi_system_suspend to use updated irq functions (Pavel 15441Machek) 15442 15443Export acpi_get_firmware_table (Matthew Wilcox) 15444 15445Use proper root proc entry for ACPI (Kochi Takayoshi) 15446 15447Fix early-boot table parsing (Bjorn Helgaas) 15448 15449 154503) iASL Compiler/Disassembler 15451 15452Reworked the compiler options to make them more consistent and to 15453use two-letter options where appropriate. We were running out of 15454sensible letters. This may break some makefiles, so check the 15455current options list by invoking the compiler with no parameters. 15456 15457Completed the design and implementation of the ASL namepath 15458optimization option for the compiler. This option optimizes all 15459references to named objects to the shortest possible path. The 15460first attempt tries to utilize a single nameseg (4 characters) and 15461the "search-to-root" algorithm used by the interpreter. If that 15462cannot be used (because either the name is not in the search path 15463or there is a conflict with another object with the same name), 15464the pathname is optimized using the carat prefix (usually a 15465shorter string than specifying the entire path from the root.) 15466 15467Implemented support to obtain the DSDT from the Windows registry 15468(when the disassembly option is specified with no input file). 15469Added this code as the implementation for AcpiOsTableOverride in 15470the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 15471utility) to scan memory for the DSDT to the AcpiOsTableOverride 15472function in the DOS OSL to make the disassembler truly OS 15473independent. 15474 15475Implemented a new option to disassemble and compile in one step. 15476When used without an input filename, this option will grab the 15477DSDT from the local machine, disassemble it, and compile it in one 15478step. 15479 15480Added a warning message for invalid escapes (a backslash followed 15481by any character other than the allowable escapes). This catches 15482the quoted string error "\_SB_" (which should be "\\_SB_" ). 15483 15484Also, there are numerous instances in the ACPI specification where 15485this error occurs. 15486 15487Added a compiler option to disable all optimizations. This is 15488basically the "compatibility mode" because by using this option, 15489the AML code will come out exactly the same as other ASL 15490compilers. 15491 15492Added error messages for incorrectly ordered dependent resource 15493functions. This includes: missing EndDependentFn macro at end of 15494dependent resource list, nested dependent function macros (both 15495start and end), and missing StartDependentFn macro. These are 15496common errors that should be caught at compile time. 15497 15498Implemented _OSI support for the disassembler and compiler. _OSI 15499must be included in the namespace for proper disassembly (because 15500the disassembler must know the number of arguments.) 15501 15502Added an "optimization" message type that is optional (off by 15503default). This message is used for all optimizations - including 15504constant folding, integer optimization, and namepath optimization. 15505 15506---------------------------------------- 1550725 July 2002. Summary of changes for this release. 15508 15509 155101) ACPI CA Core Subsystem Version 20020725: 15511 15512The AML Disassembler has been enhanced to produce compilable ASL 15513code and has been integrated into the iASL compiler (see below) as 15514well as the single-step disassembly for the AML debugger and the 15515disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 15516resource templates and macros are fully supported. The 15517disassembler has been tested on over 30 different AML files, 15518producing identical AML when the resulting disassembled ASL file 15519is recompiled with the same ASL compiler. 15520 15521Modified the Resource Manager to allow zero interrupts and zero 15522dma channels during the GetCurrentResources call. This was 15523causing problems on some platforms. 15524 15525Added the AcpiOsRedirectOutput interface to the OSL to simplify 15526output redirection for the AcpiOsPrintf and AcpiOsVprintf 15527interfaces. 15528 15529Code and Data Size: Current core subsystem library sizes are shown 15530below. These are the code and data sizes for the acpica.lib 15531produced by the Microsoft Visual C++ 6.0 compiler, and these 15532values do not include any ACPI driver or OSPM code. The debug 15533version of the code includes the debug output trace mechanism and 15534has a larger code and data size. Note that these values will vary 15535depending on the efficiency of the compiler and the compiler 15536options used during generation. 15537 15538 Previous Release 15539 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 15540 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 15541 Current Release: 15542 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 15543 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 15544 15545 155462) Linux 15547 15548Fixed a panic in the EC driver (Dominik Brodowski) 15549 15550Implemented checksum of the R/XSDT itself during Linux table scan 15551(Richard Schaal) 15552 15553 155543) iASL compiler 15555 15556The AML disassembler is integrated into the compiler. The "-d" 15557option invokes the disassembler to completely disassemble an 15558input AML file, producing as output a text ASL file with the 15559extension ".dsl" (to avoid name collisions with existing .asl 15560source files.) A future enhancement will allow the disassembler 15561to obtain the BIOS DSDT from the registry under Windows. 15562 15563Fixed a problem with the VendorShort and VendorLong resource 15564descriptors where an invalid AML sequence was created. 15565 15566Implemented a fix for BufferData term in the ASL parser. It was 15567inadvertently defined twice, allowing invalid syntax to pass and 15568causing reduction conflicts. 15569 15570Fixed a problem where the Ones opcode could get converted to a 15571value of zero if "Ones" was used where a byte, word or dword value 15572was expected. The 64-bit value is now truncated to the correct 15573size with the correct value. 15574 15575 15576 15577---------------------------------------- 1557802 July 2002. Summary of changes for this release. 15579 15580 155811) ACPI CA Core Subsystem Version 20020702: 15582 15583The Table Manager code has been restructured to add several new 15584features. Tables that are not required by the core subsystem 15585(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 15586validated in any way and are returned from AcpiGetFirmwareTable if 15587requested. The AcpiOsTableOverride interface is now called for 15588each table that is loaded by the subsystem in order to allow the 15589host to override any table it chooses. Previously, only the DSDT 15590could be overridden. Added one new files, tbrsdt.c and 15591tbgetall.c. 15592 15593Fixed a problem with the conversion of internal package objects to 15594external objects (when a package is returned from a control 15595method.) The return buffer length was set to zero instead of the 15596proper length of the package object. 15597 15598Fixed a reported problem with the use of the RefOf and DeRefOf 15599operators when passing reference arguments to control methods. A 15600new type of Reference object is used internally for references 15601produced by the RefOf operator. 15602 15603Added additional error messages in the Resource Manager to explain 15604AE_BAD_DATA errors when they occur during resource parsing. 15605 15606Split the AcpiEnableSubsystem into two primitives to enable a 15607finer granularity initialization sequence. These two calls should 15608be called in this order: AcpiEnableSubsystem (flags), 15609AcpiInitializeObjects (flags). The flags parameter remains the 15610same. 15611 15612 156132) Linux 15614 15615Updated the ACPI utilities module to understand the new style of 15616fully resolved package objects that are now returned from the core 15617subsystem. This eliminates errors of the form: 15618 15619 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 15620 acpi_utils-0430 [145] acpi_evaluate_reference: 15621 Invalid element in package (not a device reference) 15622 15623The method evaluation utility uses the new buffer allocation 15624scheme instead of calling AcpiEvaluate Object twice. 15625 15626Added support for ECDT. This allows the use of the Embedded 15627 15628Controller before the namespace has been fully initialized, which 15629is necessary for ACPI 2.0 support, and for some laptops to 15630initialize properly. (Laptops using ECDT are still rare, so only 15631limited testing was performed of the added functionality.) 15632 15633Fixed memory leaks in the EC driver. 15634 15635Eliminated a brittle code structure in acpi_bus_init(). 15636 15637Eliminated the acpi_evaluate() helper function in utils.c. It is 15638no longer needed since acpi_evaluate_object can optionally 15639allocate memory for the return object. 15640 15641Implemented fix for keyboard hang when getting battery readings on 15642some systems (Stephen White) 15643 15644PCI IRQ routing update (Dominik Brodowski) 15645 15646Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 15647support 15648 15649---------------------------------------- 1565011 June 2002. Summary of changes for this release. 15651 15652 156531) ACPI CA Core Subsystem Version 20020611: 15654 15655Fixed a reported problem where constants such as Zero and One 15656appearing within _PRT packages were not handled correctly within 15657the resource manager code. Originally reported against the ASL 15658compiler because the code generator now optimizes integers to 15659their minimal AML representation (i.e. AML constants if possible.) 15660The _PRT code now handles all AML constant opcodes correctly 15661(Zero, One, Ones, Revision). 15662 15663Fixed a problem with the Concatenate operator in the AML 15664interpreter where a buffer result object was incorrectly marked as 15665not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 15666 15667All package sub-objects are now fully resolved before they are 15668returned from the external ACPI interfaces. This means that name 15669strings are resolved to object handles, and constant operators 15670(Zero, One, Ones, Revision) are resolved to Integers. 15671 15672Implemented immediate resolution of the AML Constant opcodes 15673(Zero, One, Ones, Revision) to Integer objects upon detection 15674within the AML stream. This has simplified and reduced the 15675generated code size of the subsystem by eliminating about 10 15676switch statements for these constants (which previously were 15677contained in Reference objects.) The complicating issues are that 15678the Zero opcode is used as a "placeholder" for unspecified 15679optional target operands and stores to constants are defined to be 15680no-ops. 15681 15682Code and Data Size: Current core subsystem library sizes are shown 15683below. These are the code and data sizes for the acpica.lib 15684produced by the Microsoft Visual C++ 6.0 compiler, and these 15685values do not include any ACPI driver or OSPM code. The debug 15686version of the code includes the debug output trace mechanism and 15687has a larger code and data size. Note that these values will vary 15688depending on the efficiency of the compiler and the compiler 15689options used during generation. 15690 15691 Previous Release 15692 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 15693 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 15694 Current Release: 15695 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 15696 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 15697 15698 156992) Linux 15700 15701 15702Added preliminary support for obtaining _TRA data for PCI root 15703bridges (Bjorn Helgaas). 15704 15705 157063) iASL Compiler Version X2046: 15707 15708Fixed a problem where the "_DDN" reserved name was defined to be a 15709control method with one argument. There are no arguments, and 15710_DDN does not have to be a control method. 15711 15712Fixed a problem with the Linux version of the compiler where the 15713source lines printed with error messages were the wrong lines. 15714This turned out to be the "LF versus CR/LF" difference between 15715Windows and Unix. This appears to be the longstanding issue 15716concerning listing output and error messages. 15717 15718Fixed a problem with the Linux version of compiler where opcode 15719names within error messages were wrong. This was caused by a 15720slight difference in the output of the Flex tool on Linux versus 15721Windows. 15722 15723Fixed a problem with the Linux compiler where the hex output files 15724contained some garbage data caused by an internal buffer overrun. 15725 15726 15727---------------------------------------- 1572817 May 2002. Summary of changes for this release. 15729 15730 157311) ACPI CA Core Subsystem Version 20020517: 15732 15733Implemented a workaround to an BIOS bug discovered on the HP 15734OmniBook where the FADT revision number and the table size are 15735inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 15736behavior is to fallback to using only the ACPI 1.0 fields of the 15737FADT if the table is too small to be a ACPI 2.0 table as claimed 15738by the revision number. Although this is a BIOS bug, this is a 15739case where the workaround is simple enough and with no side 15740effects, so it seemed prudent to add it. A warning message is 15741issued, however. 15742 15743Implemented minimum size checks for the fixed-length ACPI tables - 15744- the FADT and FACS, as well as consistency checks between the 15745revision number and the table size. 15746 15747Fixed a reported problem in the table override support where the 15748new table pointer was incorrectly treated as a physical address 15749instead of a logical address. 15750 15751Eliminated the use of the AE_AML_ERROR exception and replaced it 15752with more descriptive codes. 15753 15754Fixed a problem where an exception would occur if an ASL Field was 15755defined with no named Field Units underneath it (used by some 15756index fields). 15757 15758Code and Data Size: Current core subsystem library sizes are shown 15759below. These are the code and data sizes for the acpica.lib 15760produced by the Microsoft Visual C++ 6.0 compiler, and these 15761values do not include any ACPI driver or OSPM code. The debug 15762version of the code includes the debug output trace mechanism and 15763has a larger code and data size. Note that these values will vary 15764depending on the efficiency of the compiler and the compiler 15765options used during generation. 15766 15767 Previous Release 15768 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 15769 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 15770 Current Release: 15771 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 15772 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 15773 15774 15775 157762) Linux 15777 15778Much work done on ACPI init (MADT and PCI IRQ routing support). 15779(Paul D. and Dominik Brodowski) 15780 15781Fix PCI IRQ-related panic on boot (Sam Revitch) 15782 15783Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 15784 15785Fix "MHz" typo (Dominik Brodowski) 15786 15787Fix RTC year 2000 issue (Dominik Brodowski) 15788 15789Preclude multiple button proc entries (Eric Brunet) 15790 15791Moved arch-specific code out of include/platform/aclinux.h 15792 157933) iASL Compiler Version X2044: 15794 15795Implemented error checking for the string used in the EISAID macro 15796(Usually used in the definition of the _HID object.) The code now 15797strictly enforces the PnP format - exactly 7 characters, 3 15798uppercase letters and 4 hex digits. 15799 15800If a raw string is used in the definition of the _HID object 15801(instead of the EISAID macro), the string must contain all 15802alphanumeric characters (e.g., "*PNP0011" is not allowed because 15803of the asterisk.) 15804 15805Implemented checking for invalid use of ACPI reserved names for 15806most of the name creation operators (Name, Device, Event, Mutex, 15807OperationRegion, PowerResource, Processor, and ThermalZone.) 15808Previously, this check was only performed for control methods. 15809 15810Implemented an additional check on the Name operator to emit an 15811error if a reserved name that must be implemented in ASL as a 15812control method is used. We know that a reserved name must be a 15813method if it is defined with input arguments. 15814 15815The warning emitted when a namespace object reference is not found 15816during the cross reference phase has been changed into an error. 15817The "External" directive should be used for names defined in other 15818modules. 15819 15820 158214) Tools and Utilities 15822 15823The 16-bit tools (adump16 and aexec16) have been regenerated and 15824tested. 15825 15826Fixed a problem with the output of both acpidump and adump16 where 15827the indentation of closing parentheses and brackets was not 15828 15829aligned properly with the parent block. 15830 15831 15832---------------------------------------- 1583303 May 2002. Summary of changes for this release. 15834 15835 158361) ACPI CA Core Subsystem Version 20020503: 15837 15838Added support a new OSL interface that allows the host operating 15839 15840system software to override the DSDT found in the firmware - 15841AcpiOsTableOverride. With this interface, the OSL can examine the 15842version of the firmware DSDT and replace it with a different one 15843if desired. 15844 15845Added new external interfaces for accessing ACPI registers from 15846device drivers and other system software - AcpiGetRegister and 15847AcpiSetRegister. This was simply an externalization of the 15848existing AcpiHwBitRegister interfaces. 15849 15850Fixed a regression introduced in the previous build where the 15851ASL/AML CreateField operator always returned an error, 15852"destination must be a NS Node". 15853 15854Extended the maximum time (before failure) to successfully enable 15855ACPI mode to 3 seconds. 15856 15857Code and Data Size: Current core subsystem library sizes are shown 15858below. These are the code and data sizes for the acpica.lib 15859produced by the Microsoft Visual C++ 6.0 compiler, and these 15860values do not include any ACPI driver or OSPM code. The debug 15861version of the code includes the debug output trace mechanism and 15862has a larger code and data size. Note that these values will vary 15863depending on the efficiency of the compiler and the compiler 15864options used during generation. 15865 15866 Previous Release 15867 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 15868 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 15869 Current Release: 15870 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 15871 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 15872 15873 158742) Linux 15875 15876Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 15877free. While 3 out of 4 of our in-house systems work fine, the last 15878one still hangs when testing the LAPIC timer. 15879 15880Renamed many files in 2.5 kernel release to omit "acpi_" from the 15881name. 15882 15883Added warning on boot for Presario 711FR. 15884 15885Sleep improvements (Pavel Machek) 15886 15887ACPI can now be built without CONFIG_PCI enabled. 15888 15889IA64: Fixed memory map functions (JI Lee) 15890 15891 158923) iASL Compiler Version X2043: 15893 15894Added support to allow the compiler to be integrated into the MS 15895VC++ development environment for one-button compilation of single 15896files or entire projects -- with error-to-source-line mapping. 15897 15898Implemented support for compile-time constant folding for the 15899Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 15900specification. This allows the ASL writer to use expressions 15901instead of Integer/Buffer/String constants in terms that must 15902evaluate to constants at compile time and will also simplify the 15903emitted AML in any such sub-expressions that can be folded 15904(evaluated at compile-time.) This increases the size of the 15905compiler significantly because a portion of the ACPI CA AML 15906interpreter is included within the compiler in order to pre- 15907evaluate constant expressions. 15908 15909 15910Fixed a problem with the "Unicode" ASL macro that caused the 15911compiler to fault. (This macro is used in conjunction with the 15912_STR reserved name.) 15913 15914Implemented an AML opcode optimization to use the Zero, One, and 15915Ones opcodes where possible to further reduce the size of integer 15916constants and thus reduce the overall size of the generated AML 15917code. 15918 15919Implemented error checking for new reserved terms for ACPI version 159202.0A. 15921 15922Implemented the -qr option to display the current list of ACPI 15923reserved names known to the compiler. 15924 15925Implemented the -qc option to display the current list of ASL 15926operators that are allowed within constant expressions and can 15927therefore be folded at compile time if the operands are constants. 15928 15929 159304) Documentation 15931 15932Updated the Programmer's Reference for new interfaces, data types, 15933and memory allocation model options. 15934 15935Updated the iASL Compiler User Reference to apply new format and 15936add information about new features and options. 15937 15938---------------------------------------- 1593919 April 2002. Summary of changes for this release. 15940 159411) ACPI CA Core Subsystem Version 20020419: 15942 15943The source code base for the Core Subsystem has been completely 15944cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 15945versions. The Lint option files used are included in the 15946/acpi/generate/lint directory. 15947 15948Implemented enhanced status/error checking across the entire 15949Hardware manager subsystem. Any hardware errors (reported from 15950the OSL) are now bubbled up and will abort a running control 15951method. 15952 15953 15954Fixed a problem where the per-ACPI-table integer width (32 or 64) 15955was stored only with control method nodes, causing a fault when 15956non-control method code was executed during table loading. The 15957solution implemented uses a global variable to indicate table 15958width across the entire ACPI subsystem. Therefore, ACPI CA does 15959not support mixed integer widths across different ACPI tables 15960(DSDT, SSDT). 15961 15962Fixed a problem where NULL extended fields (X fields) in an ACPI 159632.0 ACPI FADT caused the table load to fail. Although the 15964existing ACPI specification is a bit fuzzy on this topic, the new 15965behavior is to fall back on a ACPI 1.0 field if the corresponding 15966ACPI 2.0 X field is zero (even though the table revision indicates 15967a full ACPI 2.0 table.) The ACPI specification will be updated to 15968clarify this issue. 15969 15970Fixed a problem with the SystemMemory operation region handler 15971where memory was always accessed byte-wise even if the AML- 15972specified access width was larger than a byte. This caused 15973problems on systems with memory-mapped I/O. Memory is now 15974accessed with the width specified. On systems that do not support 15975non-aligned transfers, a check is made to guarantee proper address 15976alignment before proceeding in order to avoid an AML-caused 15977alignment fault within the kernel. 15978 15979 15980Fixed a problem with the ExtendedIrq resource where only one byte 15981of the 4-byte Irq field was extracted. 15982 15983Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 15984function was out of date and required a rewrite. 15985 15986Code and Data Size: Current core subsystem library sizes are shown 15987below. These are the code and data sizes for the acpica.lib 15988produced by the Microsoft Visual C++ 6.0 compiler, and these 15989values do not include any ACPI driver or OSPM code. The debug 15990version of the code includes the debug output trace mechanism and 15991has a larger code and data size. Note that these values will vary 15992depending on the efficiency of the compiler and the compiler 15993options used during generation. 15994 15995 Previous Release 15996 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 15997 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 15998 Current Release: 15999 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 16000 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 16001 16002 160032) Linux 16004 16005PCI IRQ routing fixes (Dominik Brodowski) 16006 16007 160083) iASL Compiler Version X2042: 16009 16010Implemented an additional compile-time error check for a field 16011unit whose size + minimum access width would cause a run-time 16012access beyond the end-of-region. Previously, only the field size 16013itself was checked. 16014 16015The Core subsystem and iASL compiler now share a common parse 16016object in preparation for compile-time evaluation of the type 160173/4/5 ASL operators. 16018 16019 16020---------------------------------------- 16021Summary of changes for this release: 03_29_02 16022 160231) ACPI CA Core Subsystem Version 20020329: 16024 16025Implemented support for late evaluation of TermArg operands to 16026Buffer and Package objects. This allows complex expressions to be 16027used in the declarations of these object types. 16028 16029Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 160301.0, if the field was larger than 32 bits, it was returned as a 16031buffer - otherwise it was returned as an integer. In ACPI 2.0, 16032the field is returned as a buffer only if the field is larger than 1603364 bits. The TableRevision is now considered when making this 16034conversion to avoid incompatibility with existing ASL code. 16035 16036Implemented logical addressing for AcpiOsGetRootPointer. This 16037allows an RSDP with either a logical or physical address. With 16038this support, the host OS can now override all ACPI tables with 16039one logical RSDP. Includes implementation of "typed" pointer 16040support to allow a common data type for both physical and logical 16041pointers internally. This required a change to the 16042AcpiOsGetRootPointer interface. 16043 16044Implemented the use of ACPI 2.0 Generic Address Structures for all 16045GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 16046mapped I/O for these ACPI features. 16047 16048Initialization now ignores not only non-required tables (All 16049tables other than the FADT, FACS, DSDT, and SSDTs), but also does 16050not validate the table headers of unrecognized tables. 16051 16052Fixed a problem where a notify handler could only be 16053installed/removed on an object of type Device. All "notify" 16054 16055objects are now supported -- Devices, Processor, Power, and 16056Thermal. 16057 16058Removed most verbosity from the ACPI_DB_INFO debug level. Only 16059critical information is returned when this debug level is enabled. 16060 16061Code and Data Size: Current core subsystem library sizes are shown 16062below. These are the code and data sizes for the acpica.lib 16063produced by the Microsoft Visual C++ 6.0 compiler, and these 16064values do not include any ACPI driver or OSPM code. The debug 16065version of the code includes the debug output trace mechanism and 16066has a larger code and data size. Note that these values will vary 16067depending on the efficiency of the compiler and the compiler 16068options used during generation. 16069 16070 Previous Release 16071 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 16072 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 16073 Current Release: 16074 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 16075 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 16076 16077 160782) Linux: 16079 16080The processor driver (acpi_processor.c) now fully supports ACPI 160812.0-based processor performance control (e.g. Intel(R) 16082SpeedStep(TM) technology) Note that older laptops that only have 16083the Intel "applet" interface are not supported through this. The 16084'limit' and 'performance' interface (/proc) are fully functional. 16085[Note that basic policy for controlling performance state 16086transitions will be included in the next version of ospmd.] The 16087idle handler was modified to more aggressively use C2, and PIIX4 16088errata handling underwent a complete overhaul (big thanks to 16089Dominik Brodowski). 16090 16091Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 16092based devices in the ACPI namespace are now dynamically bound 16093(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 16094This allows, among other things, ACPI to resolve bus numbers for 16095subordinate PCI bridges. 16096 16097Enhanced PCI IRQ routing to get the proper bus number for _PRT 16098entries defined underneath PCI bridges. 16099 16100Added IBM 600E to bad bios list due to invalid _ADR value for 16101PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 16102 16103In the process of adding full MADT support (e.g. IOAPIC) for IA32 16104(acpi.c, mpparse.c) -- stay tuned. 16105 16106Added back visual differentiation between fixed-feature and 16107control-method buttons in dmesg. Buttons are also subtyped (e.g. 16108button/power/PWRF) to simplify button identification. 16109 16110We no longer use -Wno-unused when compiling debug. Please ignore 16111any "_THIS_MODULE defined but not used" messages. 16112 16113Can now shut down the system using "magic sysrq" key. 16114 16115 161163) iASL Compiler version 2041: 16117 16118Fixed a problem where conversion errors for hex/octal/decimal 16119constants were not reported. 16120 16121Implemented a fix for the General Register template Address field. 16122This field was 8 bits when it should be 64. 16123 16124Fixed a problem where errors/warnings were no longer being emitted 16125within the listing output file. 16126 16127Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 16128exactly 4 characters, alphanumeric only. 16129 16130 16131 16132 16133---------------------------------------- 16134Summary of changes for this release: 03_08_02 16135 16136 161371) ACPI CA Core Subsystem Version 20020308: 16138 16139Fixed a problem with AML Fields where the use of the "AccessAny" 16140keyword could cause an interpreter error due to attempting to read 16141or write beyond the end of the parent Operation Region. 16142 16143Fixed a problem in the SystemMemory Operation Region handler where 16144an attempt was made to map memory beyond the end of the region. 16145This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 16146errors on some Linux systems. 16147 16148Fixed a problem where the interpreter/namespace "search to root" 16149algorithm was not functioning for some object types. Relaxed the 16150internal restriction on the search to allow upsearches for all 16151external object types as well as most internal types. 16152 16153 161542) Linux: 16155 16156We now use safe_halt() macro versus individual calls to sti | hlt. 16157 16158Writing to the processor limit interface should now work. "echo 1" 16159will increase the limit, 2 will decrease, and 0 will reset to the 16160 16161default. 16162 16163 161643) ASL compiler: 16165 16166Fixed segfault on Linux version. 16167 16168 16169---------------------------------------- 16170Summary of changes for this release: 02_25_02 16171 161721) ACPI CA Core Subsystem: 16173 16174 16175Fixed a problem where the GPE bit masks were not initialized 16176properly, causing erratic GPE behavior. 16177 16178Implemented limited support for multiple calling conventions. The 16179code can be generated with either the VPL (variable parameter 16180list, or "C") convention, or the FPL (fixed parameter list, or 16181"Pascal") convention. The core subsystem is about 3.4% smaller 16182when generated with FPL. 16183 16184 161852) Linux 16186 16187Re-add some /proc/acpi/event functionality that was lost during 16188the rewrite 16189 16190Resolved issue with /proc events for fixed-feature buttons showing 16191up as the system device. 16192 16193Fixed checks on C2/C3 latencies to be inclusive of maximum values. 16194 16195Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 16196 16197Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 16198 16199Fixed limit interface & usage to fix bugs with passive cooling 16200hysterisis. 16201 16202Restructured PRT support. 16203 16204 16205---------------------------------------- 16206Summary of changes for this label: 02_14_02 16207 16208 162091) ACPI CA Core Subsystem: 16210 16211Implemented support in AcpiLoadTable to allow loading of FACS and 16212FADT tables. 16213 16214Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 16215been removed. All 64-bit platforms should be migrated to the ACPI 162162.0 tables. The actbl71.h header has been removed from the source 16217tree. 16218 16219All C macros defined within the subsystem have been prefixed with 16220"ACPI_" to avoid collision with other system include files. 16221 16222Removed the return value for the two AcpiOsPrint interfaces, since 16223it is never used and causes lint warnings for ignoring the return 16224value. 16225 16226Added error checking to all internal mutex acquire and release 16227calls. Although a failure from one of these interfaces is 16228probably a fatal system error, these checks will cause the 16229immediate abort of the currently executing method or interface. 16230 16231Fixed a problem where the AcpiSetCurrentResources interface could 16232fault. This was a side effect of the deployment of the new memory 16233allocation model. 16234 16235Fixed a couple of problems with the Global Lock support introduced 16236in the last major build. The "common" (1.0/2.0) internal FACS was 16237being overwritten with the FACS signature and clobbering the 16238Global Lock pointer. Also, the actual firmware FACS was being 16239unmapped after construction of the "common" FACS, preventing 16240access to the actual Global Lock field within it. The "common" 16241internal FACS is no longer installed as an actual ACPI table; it 16242is used simply as a global. 16243 16244Code and Data Size: Current core subsystem library sizes are shown 16245below. These are the code and data sizes for the acpica.lib 16246produced by the Microsoft Visual C++ 6.0 compiler, and these 16247values do not include any ACPI driver or OSPM code. The debug 16248version of the code includes the debug output trace mechanism and 16249has a larger code and data size. Note that these values will vary 16250depending on the efficiency of the compiler and the compiler 16251options used during generation. 16252 16253 Previous Release (02_07_01) 16254 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 16255 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 16256 Current Release: 16257 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 16258 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 16259 16260 162612) Linux 16262 16263Updated Linux-specific code for core macro and OSL interface 16264changes described above. 16265 16266Improved /proc/acpi/event. It now can be opened only once and has 16267proper poll functionality. 16268 16269Fixed and restructured power management (acpi_bus). 16270 16271Only create /proc "view by type" when devices of that class exist. 16272 16273Fixed "charging/discharging" bug (and others) in acpi_battery. 16274 16275Improved thermal zone code. 16276 16277 162783) ASL Compiler, version X2039: 16279 16280 16281Implemented the new compiler restriction on ASL String hex/octal 16282escapes to non-null, ASCII values. An error results if an invalid 16283value is used. (This will require an ACPI 2.0 specification 16284change.) 16285 16286AML object labels that are output to the optional C and ASM source 16287are now prefixed with both the ACPI table signature and table ID 16288to help guarantee uniqueness within a large BIOS project. 16289 16290 16291---------------------------------------- 16292Summary of changes for this label: 02_01_02 16293 162941) ACPI CA Core Subsystem: 16295 16296ACPI 2.0 support is complete in the entire Core Subsystem and the 16297ASL compiler. All new ACPI 2.0 operators are implemented and all 16298other changes for ACPI 2.0 support are complete. With 16299simultaneous code and data optimizations throughout the subsystem, 16300ACPI 2.0 support has been implemented with almost no additional 16301cost in terms of code and data size. 16302 16303Implemented a new mechanism for allocation of return buffers. If 16304the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 16305be allocated on behalf of the caller. Consolidated all return 16306buffer validation and allocation to a common procedure. Return 16307buffers will be allocated via the primary OSL allocation interface 16308since it appears that a separate pool is not needed by most users. 16309If a separate pool is required for these buffers, the caller can 16310still use the original mechanism and pre-allocate the buffer(s). 16311 16312Implemented support for string operands within the DerefOf 16313operator. 16314 16315Restructured the Hardware and Event managers to be table driven, 16316simplifying the source code and reducing the amount of generated 16317code. 16318 16319Split the common read/write low-level ACPI register bitfield 16320procedure into a separate read and write, simplifying the code 16321considerably. 16322 16323Obsoleted the AcpiOsCallocate OSL interface. This interface was 16324used only a handful of times and didn't have enough critical mass 16325for a separate interface. Replaced with a common calloc procedure 16326in the core. 16327 16328Fixed a reported problem with the GPE number mapping mechanism 16329that allows GPE1 numbers to be non-contiguous with GPE0. 16330Reorganized the GPE information and shrunk a large array that was 16331originally large enough to hold info for all possible GPEs (256) 16332to simply large enough to hold all GPEs up to the largest GPE 16333number on the machine. 16334 16335Fixed a reported problem with resource structure alignment on 64- 16336bit platforms. 16337 16338Changed the AcpiEnableEvent and AcpiDisableEvent external 16339interfaces to not require any flags for the common case of 16340enabling/disabling a GPE. 16341 16342Implemented support to allow a "Notify" on a Processor object. 16343 16344Most TBDs in comments within the source code have been resolved 16345and eliminated. 16346 16347 16348Fixed a problem in the interpreter where a standalone parent 16349prefix (^) was not handled correctly in the interpreter and 16350debugger. 16351 16352Removed obsolete and unnecessary GPE save/restore code. 16353 16354Implemented Field support in the ASL Load operator. This allows a 16355table to be loaded from a named field, in addition to loading a 16356table directly from an Operation Region. 16357 16358Implemented timeout and handle support in the external Global Lock 16359interfaces. 16360 16361Fixed a problem in the AcpiDump utility where pathnames were no 16362longer being generated correctly during the dump of named objects. 16363 16364Modified the AML debugger to give a full display of if/while 16365predicates instead of just one AML opcode at a time. (The 16366predicate can have several nested ASL statements.) The old method 16367was confusing during single stepping. 16368 16369Code and Data Size: Current core subsystem library sizes are shown 16370below. These are the code and data sizes for the acpica.lib 16371produced by the Microsoft Visual C++ 6.0 compiler, and these 16372values do not include any ACPI driver or OSPM code. The debug 16373version of the code includes the debug output trace mechanism and 16374has a larger code and data size. Note that these values will vary 16375depending on the efficiency of the compiler and the compiler 16376options used during generation. 16377 16378 Previous Release (12_18_01) 16379 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 16380 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 16381 Current Release: 16382 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 16383 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 16384 163852) Linux 16386 16387 Implemented fix for PIIX reverse throttling errata (Processor 16388driver) 16389 16390Added new Limit interface (Processor and Thermal drivers) 16391 16392New thermal policy (Thermal driver) 16393 16394Many updates to /proc 16395 16396Battery "low" event support (Battery driver) 16397 16398Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 16399 16400IA32 - IA64 initialization unification, no longer experimental 16401 16402Menuconfig options redesigned 16403 164043) ASL Compiler, version X2037: 16405 16406Implemented several new output features to simplify integration of 16407AML code into firmware: 1) Output the AML in C source code with 16408labels for each named ASL object. The original ASL source code 16409is interleaved as C comments. 2) Output the AML in ASM source code 16410with labels and interleaved ASL source. 3) Output the AML in 16411raw hex table form, in either C or ASM. 16412 16413Implemented support for optional string parameters to the 16414LoadTable operator. 16415 16416Completed support for embedded escape sequences within string 16417literals. The compiler now supports all single character escapes 16418as well as the Octal and Hex escapes. Note: the insertion of a 16419null byte into a string literal (via the hex/octal escape) causes 16420the string to be immediately terminated. A warning is issued. 16421 16422Fixed a problem where incorrect AML was generated for the case 16423where an ASL namepath consists of a single parent prefix ( 16424 16425) with no trailing name segments. 16426 16427The compiler has been successfully generated with a 64-bit C 16428compiler. 16429 16430 16431 16432 16433---------------------------------------- 16434Summary of changes for this label: 12_18_01 16435 164361) Linux 16437 16438Enhanced blacklist with reason and severity fields. Any table's 16439signature may now be used to identify a blacklisted system. 16440 16441Call _PIC control method to inform the firmware which interrupt 16442model the OS is using. Turn on any disabled link devices. 16443 16444Cleaned up busmgr /proc error handling (Andreas Dilger) 16445 16446 2) ACPI CA Core Subsystem: 16447 16448Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 16449while loop) 16450 16451Completed implementation of the ACPI 2.0 "Continue", 16452"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 16453operators. All new ACPI 2.0 operators are now implemented in both 16454the ASL compiler and the AML interpreter. The only remaining ACPI 164552.0 task is support for the String data type in the DerefOf 16456operator. Fixed a problem with AcquireMutex where the status code 16457was lost if the caller had to actually wait for the mutex. 16458 16459Increased the maximum ASL Field size from 64K bits to 4G bits. 16460 16461Completed implementation of the external Global Lock interfaces -- 16462AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 16463Handler parameters were added. 16464 16465Completed another pass at removing warnings and issues when 16466compiling with 64-bit compilers. The code now compiles cleanly 16467with the Intel 64-bit C/C++ compiler. Most notably, the pointer 16468add and subtract (diff) macros have changed considerably. 16469 16470 16471Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1647264-bit platforms, 32-bits on all others. This type is used 16473wherever memory allocation and/or the C sizeof() operator is used, 16474and affects the OSL memory allocation interfaces AcpiOsAllocate 16475and AcpiOsCallocate. 16476 16477Implemented sticky user breakpoints in the AML debugger. 16478 16479Code and Data Size: Current core subsystem library sizes are shown 16480below. These are the code and data sizes for the acpica.lib 16481produced by the Microsoft Visual C++ 6.0 compiler, and these 16482values do not include any ACPI driver or OSPM code. The debug 16483version of the code includes the debug output trace mechanism and 16484has a larger code and data size. Note that these values will vary 16485depending on the efficiency of the compiler and the compiler 16486options used during generation. 16487 16488 Previous Release (12_05_01) 16489 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 16490 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 16491 Current Release: 16492 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 16493 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 16494 16495 3) ASL Compiler, version X2034: 16496 16497Now checks for (and generates an error if detected) the use of a 16498Break or Continue statement without an enclosing While statement. 16499 16500 16501Successfully generated the compiler with the Intel 64-bit C 16502compiler. 16503 16504 ---------------------------------------- 16505Summary of changes for this label: 12_05_01 16506 16507 1) ACPI CA Core Subsystem: 16508 16509The ACPI 2.0 CopyObject operator is fully implemented. This 16510operator creates a new copy of an object (and is also used to 16511bypass the "implicit conversion" mechanism of the Store operator.) 16512 16513The ACPI 2.0 semantics for the SizeOf operator are fully 16514implemented. The change is that performing a SizeOf on a 16515reference object causes an automatic dereference of the object to 16516tha actual value before the size is evaluated. This behavior was 16517undefined in ACPI 1.0. 16518 16519The ACPI 2.0 semantics for the Extended IRQ resource descriptor 16520have been implemented. The interrupt polarity and mode are now 16521independently set. 16522 16523Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 16524appearing in Package objects were not properly converted to 16525integers when the internal Package was converted to an external 16526object (via the AcpiEvaluateObject interface.) 16527 16528Fixed a problem with the namespace object deletion mechanism for 16529objects created by control methods. There were two parts to this 16530problem: 1) Objects created during the initialization phase method 16531parse were not being deleted, and 2) The object owner ID mechanism 16532to track objects was broken. 16533 16534Fixed a problem where the use of the ASL Scope operator within a 16535control method would result in an invalid opcode exception. 16536 16537Fixed a problem introduced in the previous label where the buffer 16538length required for the _PRT structure was not being returned 16539correctly. 16540 16541Code and Data Size: Current core subsystem library sizes are shown 16542below. These are the code and data sizes for the acpica.lib 16543produced by the Microsoft Visual C++ 6.0 compiler, and these 16544values do not include any ACPI driver or OSPM code. The debug 16545version of the code includes the debug output trace mechanism and 16546has a larger code and data size. Note that these values will vary 16547depending on the efficiency of the compiler and the compiler 16548options used during generation. 16549 16550 Previous Release (11_20_01) 16551 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 16552 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 16553 16554 Current Release: 16555 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 16556 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 16557 16558 2) Linux: 16559 16560Updated all files to apply cleanly against 2.4.16. 16561 16562Added basic PCI Interrupt Routing Table (PRT) support for IA32 16563(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 16564version supports both static and dyanmic PRT entries, but dynamic 16565entries are treated as if they were static (not yet 16566reconfigurable). Architecture- specific code to use this data is 16567absent on IA32 but should be available shortly. 16568 16569Changed the initialization sequence to start the ACPI interpreter 16570(acpi_init) prior to initialization of the PCI driver (pci_init) 16571in init/main.c. This ordering is required to support PRT and 16572facilitate other (future) enhancement. A side effect is that the 16573ACPI bus driver and certain device drivers can no longer be loaded 16574as modules. 16575 16576Modified the 'make menuconfig' options to allow PCI Interrupt 16577Routing support to be included without the ACPI Bus and other 16578device drivers. 16579 16580 3) ASL Compiler, version X2033: 16581 16582Fixed some issues with the use of the new CopyObject and 16583DataTableRegion operators. Both are fully functional. 16584 16585 ---------------------------------------- 16586Summary of changes for this label: 11_20_01 16587 16588 20 November 2001. Summary of changes for this release. 16589 16590 1) ACPI CA Core Subsystem: 16591 16592Updated Index support to match ACPI 2.0 semantics. Storing a 16593Integer, String, or Buffer to an Index of a Buffer will store only 16594the least-significant byte of the source to the Indexed buffer 16595byte. Multiple writes are not performed. 16596 16597Fixed a problem where the access type used in an AccessAs ASL 16598operator was not recorded correctly into the field object. 16599 16600Fixed a problem where ASL Event objects were created in a 16601signalled state. Events are now created in an unsignalled state. 16602 16603The internal object cache is now purged after table loading and 16604initialization to reduce the use of dynamic kernel memory -- on 16605the assumption that object use is greatest during the parse phase 16606of the entire table (versus the run-time use of individual control 16607methods.) 16608 16609ACPI 2.0 variable-length packages are now fully operational. 16610 16611Code and Data Size: Code and Data optimizations have permitted new 16612feature development with an actual reduction in the library size. 16613Current core subsystem library sizes are shown below. These are 16614the code and data sizes for the acpica.lib produced by the 16615Microsoft Visual C++ 6.0 compiler, and these values do not include 16616any ACPI driver or OSPM code. The debug version of the code 16617includes the debug output trace mechanism and has a larger code 16618and data size. Note that these values will vary depending on the 16619efficiency of the compiler and the compiler options used during 16620generation. 16621 16622 Previous Release (11_09_01): 16623 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 16624 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 16625 16626 Current Release: 16627 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 16628 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 16629 16630 2) Linux: 16631 16632Enhanced the ACPI boot-time initialization code to allow the use 16633of Local APIC tables for processor enumeration on IA-32, and to 16634pave the way for a fully MPS-free boot (on SMP systems) in the 16635near future. This functionality replaces 16636arch/i386/kernel/acpitables.c, which was introduced in an earlier 166372.4.15-preX release. To enable this feature you must add 16638"acpi_boot=on" to the kernel command line -- see the help entry 16639for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 16640the works... 16641 16642Restructured the configuration options to allow boot-time table 16643parsing support without inclusion of the ACPI Interpreter (and 16644other) code. 16645 16646NOTE: This release does not include fixes for the reported events, 16647power-down, and thermal passive cooling issues (coming soon). 16648 16649 3) ASL Compiler: 16650 16651Added additional typechecking for Fields within restricted access 16652Operation Regions. All fields within EC and CMOS regions must be 16653declared with ByteAcc. All fields withing SMBus regions must be 16654declared with the BufferAcc access type. 16655 16656Fixed a problem where the listing file output of control methods 16657no longer interleaved the actual AML code with the ASL source 16658code. 16659 16660 16661 16662 16663---------------------------------------- 16664Summary of changes for this label: 11_09_01 16665 166661) ACPI CA Core Subsystem: 16667 16668Implemented ACPI 2.0-defined support for writes to fields with a 16669Buffer, String, or Integer source operand that is smaller than the 16670target field. In these cases, the source operand is zero-extended 16671to fill the target field. 16672 16673Fixed a problem where a Field starting bit offset (within the 16674parent operation region) was calculated incorrectly if the 16675 16676alignment of the field differed from the access width. This 16677affected CreateWordField, CreateDwordField, CreateQwordField, and 16678possibly other fields that use the "AccessAny" keyword. 16679 16680Fixed a problem introduced in the 11_02_01 release where indirect 16681stores through method arguments did not operate correctly. 16682 166832) Linux: 16684 16685Implemented boot-time ACPI table parsing support 16686(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 16687facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 16688legacy BIOS interfaces (e.g. MPS) for the configuration of system 16689processors, memory, and interrupts during setup_arch(). Note that 16690this patch does not include the required architecture-specific 16691changes required to apply this information -- subsequent patches 16692will be posted for both IA32 and IA64 to achieve this. 16693 16694Added low-level sleep support for IA32 platforms, courtesy of Pat 16695Mochel. This allows IA32 systems to transition to/from various 16696sleeping states (e.g. S1, S3), although the lack of a centralized 16697driver model and power-manageable drivers will prevent its 16698(successful) use on most systems. 16699 16700Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 16701submenu, unified IA32 and IA64 options, added new "Boot using ACPI 16702tables" option, etc. 16703 16704Increased the default timeout for the EC driver from 1ms to 10ms 16705(1000 cycles of 10us) to try to address AE_TIME errors during EC 16706transactions. 16707 16708 ---------------------------------------- 16709Summary of changes for this label: 11_02_01 16710 167111) ACPI CA Core Subsystem: 16712 16713ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 16714(QWordAcc keyword). All ACPI 2.0 64-bit support is now 16715implemented. 16716 16717OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 16718changes to support ACPI 2.0 Qword field access. Read/Write 16719PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 16720accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 16721the value parameter for the address space handler interface is now 16722an ACPI_INTEGER. OSL implementations of these interfaces must now 16723handle the case where the Width parameter is 64. 16724 16725Index Fields: Fixed a problem where unaligned bit assembly and 16726disassembly for IndexFields was not supported correctly. 16727 16728Index and Bank Fields: Nested Index and Bank Fields are now 16729supported. During field access, a check is performed to ensure 16730that the value written to an Index or Bank register is not out of 16731the range of the register. The Index (or Bank) register is 16732written before each access to the field data. Future support will 16733include allowing individual IndexFields to be wider than the 16734DataRegister width. 16735 16736Fields: Fixed a problem where the AML interpreter was incorrectly 16737attempting to write beyond the end of a Field/OpRegion. This was 16738a boundary case that occurred when a DWORD field was written to a 16739BYTE access OpRegion, forcing multiple writes and causing the 16740interpreter to write one datum too many. 16741 16742Fields: Fixed a problem with Field/OpRegion access where the 16743starting bit address of a field was incorrectly calculated if the 16744current access type was wider than a byte (WordAcc, DwordAcc, or 16745QwordAcc). 16746 16747Fields: Fixed a problem where forward references to individual 16748FieldUnits (individual Field names within a Field definition) were 16749not resolved during the AML table load. 16750 16751Fields: Fixed a problem where forward references from a Field 16752definition to the parent Operation Region definition were not 16753resolved during the AML table load. 16754 16755Fields: Duplicate FieldUnit names within a scope are now detected 16756during AML table load. 16757 16758Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 16759returned an incorrect name for the root node. 16760 16761Code and Data Size: Code and Data optimizations have permitted new 16762feature development with an actual reduction in the library size. 16763Current core subsystem library sizes are shown below. These are 16764the code and data sizes for the acpica.lib produced by the 16765Microsoft Visual C++ 6.0 compiler, and these values do not include 16766any ACPI driver or OSPM code. The debug version of the code 16767includes the debug output trace mechanism and has a larger code 16768and data size. Note that these values will vary depending on the 16769efficiency of the compiler and the compiler options used during 16770generation. 16771 16772 Previous Release (10_18_01): 16773 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 16774 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 16775 16776 Current Release: 16777 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 16778 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 16779 16780 2) Linux: 16781 16782Improved /proc processor output (Pavel Machek) Re-added 16783MODULE_LICENSE("GPL") to all modules. 16784 16785 3) ASL Compiler version X2030: 16786 16787Duplicate FieldUnit names within a scope are now detected and 16788flagged as errors. 16789 16790 4) Documentation: 16791 16792Programmer Reference updated to reflect OSL and address space 16793handler interface changes described above. 16794 16795---------------------------------------- 16796Summary of changes for this label: 10_18_01 16797 16798ACPI CA Core Subsystem: 16799 16800Fixed a problem with the internal object reference count mechanism 16801that occasionally caused premature object deletion. This resolves 16802all of the outstanding problem reports where an object is deleted 16803in the middle of an interpreter evaluation. Although this problem 16804only showed up in rather obscure cases, the solution to the 16805problem involved an adjustment of all reference counts involving 16806objects attached to namespace nodes. 16807 16808Fixed a problem with Field support in the interpreter where 16809writing to an aligned field whose length is an exact multiple (2 16810or greater) of the field access granularity would cause an attempt 16811to write beyond the end of the field. 16812 16813The top level AML opcode execution functions within the 16814interpreter have been renamed with a more meaningful and 16815consistent naming convention. The modules exmonad.c and 16816exdyadic.c were eliminated. New modules are exoparg1.c, 16817exoparg2.c, exoparg3.c, and exoparg6.c. 16818 16819Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 16820 16821Fixed a problem where the AML debugger was causing some internal 16822objects to not be deleted during subsystem termination. 16823 16824Fixed a problem with the external AcpiEvaluateObject interface 16825where the subsystem would fault if the named object to be 16826evaluated refered to a constant such as Zero, Ones, etc. 16827 16828Fixed a problem with IndexFields and BankFields where the 16829subsystem would fault if the index, data, or bank registers were 16830not defined in the same scope as the field itself. 16831 16832Added printf format string checking for compilers that support 16833this feature. Corrected more than 50 instances of issues with 16834format specifiers within invocations of ACPI_DEBUG_PRINT 16835throughout the core subsystem code. 16836 16837The ASL "Revision" operator now returns the ACPI support level 16838implemented in the core - the value "2" since the ACPI 2.0 support 16839is more than 50% implemented. 16840 16841Enhanced the output of the AML debugger "dump namespace" command 16842to output in a more human-readable form. 16843 16844Current core subsystem library code sizes are shown below. These 16845 16846are the code and data sizes for the acpica.lib produced by the 16847Microsoft Visual C++ 6.0 compiler, and these values do not include 16848any ACPI driver or OSPM code. The debug version of the code 16849includes the full debug trace mechanism -- leading to a much 16850 16851larger code and data size. Note that these values will vary 16852depending on the efficiency of the compiler and the compiler 16853options used during generation. 16854 16855 Previous Label (09_20_01): 16856 Non-Debug Version: 65K Code, 5K Data, 70K Total 16857 Debug Version: 138K Code, 58K Data, 196K Total 16858 16859 This Label: 16860 16861 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 16862 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 16863 16864Linux: 16865 16866Implemented a "Bad BIOS Blacklist" to track machines that have 16867known ASL/AML problems. 16868 16869Enhanced the /proc interface for the thermal zone driver and added 16870support for _HOT (the critical suspend trip point). The 'info' 16871file now includes threshold/policy information, and allows setting 16872of _SCP (cooling preference) and _TZP (polling frequency) values 16873to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 16874frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 16875preference to the passive/quiet mode (if supported by the ASL). 16876 16877Implemented a workaround for a gcc bug that resuted in an OOPs 16878when loading the control method battery driver. 16879 16880 ---------------------------------------- 16881Summary of changes for this label: 09_20_01 16882 16883 ACPI CA Core Subsystem: 16884 16885The AcpiEnableEvent and AcpiDisableEvent interfaces have been 16886modified to allow individual GPE levels to be flagged as wake- 16887enabled (i.e., these GPEs are to remain enabled when the platform 16888sleeps.) 16889 16890The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 16891support wake-enabled GPEs. This means that upon entering the 16892sleep state, all GPEs that are not wake-enabled are disabled. 16893When leaving the sleep state, these GPEs are reenabled. 16894 16895A local double-precision divide/modulo module has been added to 16896enhance portability to OS kernels where a 64-bit math library is 16897not available. The new module is "utmath.c". 16898 16899Several optimizations have been made to reduce the use of CPU 16900stack. Originally over 2K, the maximum stack usage is now below 169012K at 1860 bytes (1.82k) 16902 16903Fixed a problem with the AcpiGetFirmwareTable interface where the 16904root table pointer was not mapped into a logical address properly. 16905 16906Fixed a problem where a NULL pointer was being dereferenced in the 16907interpreter code for the ASL Notify operator. 16908 16909Fixed a problem where the use of the ASL Revision operator 16910returned an error. This operator now returns the current version 16911of the ACPI CA core subsystem. 16912 16913Fixed a problem where objects passed as control method parameters 16914to AcpiEvaluateObject were always deleted at method termination. 16915However, these objects may end up being stored into the namespace 16916by the called method. The object reference count mechanism was 16917applied to these objects instead of a force delete. 16918 16919Fixed a problem where static strings or buffers (contained in the 16920AML code) that are declared as package elements within the ASL 16921code could cause a fault because the interpreter would attempt to 16922delete them. These objects are now marked with the "static 16923object" flag to prevent any attempt to delete them. 16924 16925Implemented an interpreter optimization to use operands directly 16926from the state object instead of extracting the operands to local 16927variables. This reduces stack use and code size, and improves 16928performance. 16929 16930The module exxface.c was eliminated as it was an unnecessary extra 16931layer of code. 16932 16933Current core subsystem library code sizes are shown below. These 16934are the code and data sizes for the acpica.lib produced by the 16935Microsoft Visual C++ 6.0 compiler, and these values do not include 16936any ACPI driver or OSPM code. The debug version of the code 16937includes the full debug trace mechanism -- leading to a much 16938larger code and data size. Note that these values will vary 16939depending on the efficiency of the compiler and the compiler 16940options used during generation. 16941 16942 Non-Debug Version: 65K Code, 5K Data, 70K Total 16943(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 16944Total (Previously 195K) 16945 16946Linux: 16947 16948Support for ACPI 2.0 64-bit integers has been added. All ACPI 16949Integer objects are now 64 bits wide 16950 16951All Acpi data types and structures are now in lower case. Only 16952Acpi macros are upper case for differentiation. 16953 16954 Documentation: 16955 16956Changes to the external interfaces as described above. 16957 16958 ---------------------------------------- 16959Summary of changes for this label: 08_31_01 16960 16961 ACPI CA Core Subsystem: 16962 16963A bug with interpreter implementation of the ASL Divide operator 16964was found and fixed. The implicit function return value (not the 16965explicit store operands) was returning the remainder instead of 16966the quotient. This was a longstanding bug and it fixes several 16967known outstanding issues on various platforms. 16968 16969The ACPI_DEBUG_PRINT and function trace entry/exit macros have 16970been further optimized for size. There are 700 invocations of the 16971DEBUG_PRINT macro alone, so each optimization reduces the size of 16972the debug version of the subsystem significantly. 16973 16974A stack trace mechanism has been implemented. The maximum stack 16975usage is about 2K on 32-bit platforms. The debugger command "stat 16976stack" will display the current maximum stack usage. 16977 16978All public symbols and global variables within the subsystem are 16979now prefixed with the string "Acpi". This keeps all of the 16980symbols grouped together in a kernel map, and avoids conflicts 16981with other kernel subsystems. 16982 16983Most of the internal fixed lookup tables have been moved into the 16984code segment via the const operator. 16985 16986Several enhancements have been made to the interpreter to both 16987reduce the code size and improve performance. 16988 16989Current core subsystem library code sizes are shown below. These 16990are the code and data sizes for the acpica.lib produced by the 16991Microsoft Visual C++ 6.0 compiler, and these values do not include 16992any ACPI driver or OSPM code. The debug version of the code 16993includes the full debug trace mechanism which contains over 700 16994invocations of the DEBUG_PRINT macro, 500 function entry macro 16995invocations, and over 900 function exit macro invocations -- 16996leading to a much larger code and data size. Note that these 16997values will vary depending on the efficiency of the compiler and 16998the compiler options used during generation. 16999 17000 Non-Debug Version: 64K Code, 5K Data, 69K Total 17001Debug Version: 137K Code, 58K Data, 195K Total 17002 17003 Linux: 17004 17005Implemented wbinvd() macro, pending a kernel-wide definition. 17006 17007Fixed /proc/acpi/event to handle poll() and short reads. 17008 17009 ASL Compiler, version X2026: 17010 17011Fixed a problem introduced in the previous label where the AML 17012 17013code emitted for package objects produced packages with zero 17014length. 17015 17016 ---------------------------------------- 17017Summary of changes for this label: 08_16_01 17018 17019ACPI CA Core Subsystem: 17020 17021The following ACPI 2.0 ASL operators have been implemented in the 17022AML interpreter (These are already supported by the Intel ASL 17023compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 17024ToBuffer. Support for 64-bit AML constants is implemented in the 17025AML parser, debugger, and disassembler. 17026 17027The internal memory tracking mechanism (leak detection code) has 17028been upgraded to reduce the memory overhead (a separate tracking 17029block is no longer allocated for each memory allocation), and now 17030supports all of the internal object caches. 17031 17032The data structures and code for the internal object caches have 17033been coelesced and optimized so that there is a single cache and 17034memory list data structure and a single group of functions that 17035implement generic cache management. This has reduced the code 17036size in both the debug and release versions of the subsystem. 17037 17038The DEBUG_PRINT macro(s) have been optimized for size and replaced 17039by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 17040different, because it generates a single call to an internal 17041function. This results in a savings of about 90 bytes per 17042invocation, resulting in an overall code and data savings of about 1704316% in the debug version of the subsystem. 17044 17045 Linux: 17046 17047Fixed C3 disk corruption problems and re-enabled C3 on supporting 17048machines. 17049 17050Integrated low-level sleep code by Patrick Mochel. 17051 17052Further tweaked source code Linuxization. 17053 17054Other minor fixes. 17055 17056 ASL Compiler: 17057 17058Support for ACPI 2.0 variable length packages is fixed/completed. 17059 17060Fixed a problem where the optional length parameter for the ACPI 170612.0 ToString operator. 17062 17063Fixed multiple extraneous error messages when a syntax error is 17064detected within the declaration line of a control method. 17065 17066 ---------------------------------------- 17067Summary of changes for this label: 07_17_01 17068 17069ACPI CA Core Subsystem: 17070 17071Added a new interface named AcpiGetFirmwareTable to obtain any 17072ACPI table via the ACPI signature. The interface can be called at 17073any time during kernel initialization, even before the kernel 17074virtual memory manager is initialized and paging is enabled. This 17075allows kernel subsystems to obtain ACPI tables very early, even 17076before the ACPI CA subsystem is initialized. 17077 17078Fixed a problem where Fields defined with the AnyAcc attribute 17079could be resolved to the incorrect address under the following 17080conditions: 1) the field width is larger than 8 bits and 2) the 17081parent operation region is not defined on a DWORD boundary. 17082 17083Fixed a problem where the interpreter is not being locked during 17084namespace initialization (during execution of the _INI control 17085methods), causing an error when an attempt is made to release it 17086later. 17087 17088ACPI 2.0 support in the AML Interpreter has begun and will be 17089ongoing throughout the rest of this year. In this label, The Mod 17090operator is implemented. 17091 17092Added a new data type to contain full PCI addresses named 17093ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 17094and Function values. 17095 17096 Linux: 17097 17098Enhanced the Linux version of the source code to change most 17099capitalized ACPI type names to lowercase. For example, all 17100instances of ACPI_STATUS are changed to acpi_status. This will 17101result in a large diff, but the change is strictly cosmetic and 17102aligns the CA code closer to the Linux coding standard. 17103 17104OSL Interfaces: 17105 17106The interfaces to the PCI configuration space have been changed to 17107add the PCI Segment number and to split the single 32-bit combined 17108DeviceFunction field into two 16-bit fields. This was 17109accomplished by moving the four values that define an address in 17110PCI configuration space (segment, bus, device, and function) to 17111the new ACPI_PCI_ID structure. 17112 17113The changes to the PCI configuration space interfaces led to a 17114reexamination of the complete set of address space access 17115interfaces for PCI, I/O, and Memory. The previously existing 18 17116interfaces have proven difficult to maintain (any small change 17117must be propagated across at least 6 interfaces) and do not easily 17118allow for future expansion to 64 bits if necessary. Also, on some 17119systems, it would not be appropriate to demultiplex the access 17120width (8, 16, 32,or 64) before calling the OSL if the 17121corresponding native OS interfaces contain a similar access width 17122parameter. For these reasons, the 18 address space interfaces 17123have been replaced by these 6 new ones: 17124 17125AcpiOsReadPciConfiguration 17126AcpiOsWritePciConfiguration 17127AcpiOsReadMemory 17128AcpiOsWriteMemory 17129AcpiOsReadPort 17130AcpiOsWritePort 17131 17132Added a new interface named AcpiOsGetRootPointer to allow the OSL 17133to perform the platform and/or OS-specific actions necessary to 17134obtain the ACPI RSDP table pointer. On IA-32 platforms, this 17135interface will simply call down to the CA core to perform the low- 17136memory search for the table. On IA-64, the RSDP is obtained from 17137EFI. Migrating this interface to the OSL allows the CA core to 17138 17139remain OS and platform independent. 17140 17141Added a new interface named AcpiOsSignal to provide a generic 17142"function code and pointer" interface for various miscellaneous 17143signals and notifications that must be made to the host OS. The 17144first such signals are intended to support the ASL Fatal and 17145Breakpoint operators. In the latter case, the AcpiOsBreakpoint 17146interface has been obsoleted. 17147 17148The definition of the AcpiFormatException interface has been 17149changed to simplify its use. The caller no longer must supply a 17150buffer to the call; A pointer to a const string is now returned 17151directly. This allows the call to be easily used in printf 17152statements, etc. since the caller does not have to manage a local 17153buffer. 17154 17155 17156 ASL Compiler, Version X2025: 17157 17158The ACPI 2.0 Switch/Case/Default operators have been implemented 17159and are fully functional. They will work with all ACPI 1.0 17160interpreters, since the operators are simply translated to If/Else 17161pairs. 17162 17163The ACPI 2.0 ElseIf operator is implemented and will also work 17164with 1.0 interpreters, for the same reason. 17165 17166Implemented support for ACPI 2.0 variable-length packages. These 17167packages have a separate opcode, and their size is determined by 17168the interpreter at run-time. 17169 17170Documentation The ACPI CA Programmer Reference has been updated to 17171reflect the new interfaces and changes to existing interfaces. 17172 17173 ------------------------------------------ 17174Summary of changes for this label: 06_15_01 17175 17176 ACPI CA Core Subsystem: 17177 17178Fixed a problem where a DWORD-accessed field within a Buffer 17179object would get its byte address inadvertently rounded down to 17180the nearest DWORD. Buffers are always Byte-accessible. 17181 17182 ASL Compiler, version X2024: 17183 17184Fixed a problem where the Switch() operator would either fault or 17185hang the compiler. Note however, that the AML code for this ACPI 171862.0 operator is not yet implemented. 17187 17188Compiler uses the new AcpiOsGetTimer interface to obtain compile 17189timings. 17190 17191Implementation of the CreateField operator automatically converts 17192a reference to a named field within a resource descriptor from a 17193byte offset to a bit offset if required. 17194 17195Added some missing named fields from the resource descriptor 17196support. These are the names that are automatically created by the 17197compiler to reference fields within a descriptor. They are only 17198valid at compile time and are not passed through to the AML 17199interpreter. 17200 17201Resource descriptor named fields are now typed as Integers and 17202subject to compile-time typechecking when used in expressions. 17203 17204 ------------------------------------------ 17205Summary of changes for this label: 05_18_01 17206 17207 ACPI CA Core Subsystem: 17208 17209Fixed a couple of problems in the Field support code where bits 17210from adjacent fields could be returned along with the proper field 17211bits. Restructured the field support code to improve performance, 17212readability and maintainability. 17213 17214New DEBUG_PRINTP macro automatically inserts the procedure name 17215into the output, saving hundreds of copies of procedure name 17216strings within the source, shrinking the memory footprint of the 17217debug version of the core subsystem. 17218 17219 Source Code Structure: 17220 17221The source code directory tree was restructured to reflect the 17222current organization of the component architecture. Some files 17223and directories have been moved and/or renamed. 17224 17225 Linux: 17226 17227Fixed leaking kacpidpc processes. 17228 17229Fixed queueing event data even when /proc/acpi/event is not 17230opened. 17231 17232 ASL Compiler, version X2020: 17233 17234Memory allocation performance enhancement - over 24X compile time 17235improvement on large ASL files. Parse nodes and namestring 17236buffers are now allocated from a large internal compiler buffer. 17237 17238The temporary .SRC file is deleted unless the "-s" option is 17239specified 17240 17241The "-d" debug output option now sends all output to the .DBG file 17242instead of the console. 17243 17244"External" second parameter is now optional 17245 17246"ElseIf" syntax now properly allows the predicate 17247 17248Last operand to "Load" now recognized as a Target operand 17249 17250Debug object can now be used anywhere as a normal object. 17251 17252ResourceTemplate now returns an object of type BUFFER 17253 17254EISAID now returns an object of type INTEGER 17255 17256"Index" now works with a STRING operand 17257 17258"LoadTable" now accepts optional parameters 17259 17260"ToString" length parameter is now optional 17261 17262"Interrupt (ResourceType," parse error fixed. 17263 17264"Register" with a user-defined region space parse error fixed 17265 17266Escaped backslash at the end of a string ("\\") scan/parse error 17267fixed 17268 17269"Revision" is now an object of type INTEGER. 17270 17271 17272 17273------------------------------------------ 17274Summary of changes for this label: 05_02_01 17275 17276Linux: 17277 17278/proc/acpi/event now blocks properly. 17279 17280Removed /proc/sys/acpi. You can still dump your DSDT from 17281/proc/acpi/dsdt. 17282 17283 ACPI CA Core Subsystem: 17284 17285Fixed a problem introduced in the previous label where some of the 17286"small" resource descriptor types were not recognized. 17287 17288Improved error messages for the case where an ASL Field is outside 17289the range of the parent operation region. 17290 17291 ASL Compiler, version X2018: 17292 17293 17294Added error detection for ASL Fields that extend beyond the length 17295of the parent operation region (only if the length of the region 17296is known at compile time.) This includes fields that have a 17297minimum access width that is smaller than the parent region, and 17298individual field units that are partially or entirely beyond the 17299extent of the parent. 17300 17301 17302 17303------------------------------------------ 17304Summary of changes for this label: 04_27_01 17305 17306 ACPI CA Core Subsystem: 17307 17308Fixed a problem where the namespace mutex could be released at the 17309wrong time during execution of AcpiRemoveAddressSpaceHandler. 17310 17311Added optional thread ID output for debug traces, to simplify 17312debugging of multiple threads. Added context switch notification 17313when the debug code realizes that a different thread is now 17314executing ACPI code. 17315 17316Some additional external data types have been prefixed with the 17317string "ACPI_" for consistency. This may effect existing code. 17318The data types affected are the external callback typedefs - e.g., 17319 17320WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 17321 17322 Linux: 17323 17324Fixed an issue with the OSL semaphore implementation where a 17325thread was waking up with an error from receiving a SIGCHLD 17326signal. 17327 17328Linux version of ACPI CA now uses the system C library for string 17329manipulation routines instead of a local implementation. 17330 17331Cleaned up comments and removed TBDs. 17332 17333 ASL Compiler, version X2017: 17334 17335Enhanced error detection and reporting for all file I/O 17336operations. 17337 17338 Documentation: 17339 17340Programmer Reference updated to version 1.06. 17341 17342 17343 17344------------------------------------------ 17345Summary of changes for this label: 04_13_01 17346 17347 ACPI CA Core Subsystem: 17348 17349Restructured support for BufferFields and RegionFields. 17350BankFields support is now fully operational. All known 32-bit 17351limitations on field sizes have been removed. Both BufferFields 17352and (Operation) RegionFields are now supported by the same field 17353management code. 17354 17355Resource support now supports QWORD address and IO resources. The 1735616/32/64 bit address structures and the Extended IRQ structure 17357have been changed to properly handle Source Resource strings. 17358 17359A ThreadId of -1 is now used to indicate a "mutex not acquired" 17360condition internally and must never be returned by AcpiOsThreadId. 17361This reserved value was changed from 0 since Unix systems allow a 17362thread ID of 0. 17363 17364Linux: 17365 17366Driver code reorganized to enhance portability 17367 17368Added a kernel configuration option to control ACPI_DEBUG 17369 17370Fixed the EC driver to honor _GLK. 17371 17372ASL Compiler, version X2016: 17373 17374Fixed support for the "FixedHw" keyword. Previously, the FixedHw 17375address space was set to 0, not 0x7f as it should be. 17376 17377 ------------------------------------------ 17378Summary of changes for this label: 03_13_01 17379 17380 ACPI CA Core Subsystem: 17381 17382During ACPI initialization, the _SB_._INI method is now run if 17383present. 17384 17385Notify handler fix - notifies are deferred until the parent method 17386completes execution. This fixes the "mutex already acquired" 17387issue seen occasionally. 17388 17389Part of the "implicit conversion" rules in ACPI 2.0 have been 17390found to cause compatibility problems with existing ASL/AML. The 17391convert "result-to-target-type" implementation has been removed 17392for stores to method Args and Locals. Source operand conversion 17393is still fully implemented. Possible changes to ACPI 2.0 17394specification pending. 17395 17396Fix to AcpiRsCalculatePciRoutingTableLength to return correct 17397length. 17398 17399Fix for compiler warnings for 64-bit compiles. 17400 17401 Linux: 17402 17403/proc output aligned for easier parsing. 17404 17405Release-version compile problem fixed. 17406 17407New kernel configuration options documented in Configure.help. 17408 17409IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 17410context" message. 17411 17412 OSPM: 17413 17414Power resource driver integrated with bus manager. 17415 17416Fixed kernel fault during active cooling for thermal zones. 17417 17418Source Code: 17419 17420The source code tree has been restructured. 17421 17422 17423 17424------------------------------------------ 17425Summary of changes for this label: 03_02_01 17426 17427 Linux OS Services Layer (OSL): 17428 17429Major revision of all Linux-specific code. 17430 17431Modularized all ACPI-specific drivers. 17432 17433Added new thermal zone and power resource drivers. 17434 17435Revamped /proc interface (new functionality is under /proc/acpi). 17436 17437New kernel configuration options. 17438 17439 Linux known issues: 17440 17441New kernel configuration options not documented in Configure.help 17442yet. 17443 17444 17445Module dependencies not currently implemented. If used, they 17446should be loaded in this order: busmgr, power, ec, system, 17447processor, battery, ac_adapter, button, thermal. 17448 17449Modules will not load if CONFIG_MODVERSION is set. 17450 17451IBM 600E - entering S5 may reboot instead of shutting down. 17452 17453IBM 600E - Sleep button may generate "Invalid <NULL> context" 17454message. 17455 17456Some systems may fail with "execution mutex already acquired" 17457message. 17458 17459 ACPI CA Core Subsystem: 17460 17461Added a new OSL Interface, AcpiOsGetThreadId. This was required 17462for the deadlock detection code. Defined to return a non-zero, 32- 17463bit thread ID for the currently executing thread. May be a non- 17464zero constant integer on single-thread systems. 17465 17466Implemented deadlock detection for internal subsystem mutexes. We 17467may add conditional compilation for this code (debug only) later. 17468 17469ASL/AML Mutex object semantics are now fully supported. This 17470includes multiple acquires/releases by owner and support for the 17471 17472Mutex SyncLevel parameter. 17473 17474A new "Force Release" mechanism automatically frees all ASL 17475Mutexes that have been acquired but not released when a thread 17476exits the interpreter. This forces conformance to the ACPI spec 17477("All mutexes must be released when an invocation exits") and 17478prevents deadlocked ASL threads. This mechanism can be expanded 17479(later) to monitor other resource acquisitions if OEM ASL code 17480continues to misbehave (which it will). 17481 17482Several new ACPI exception codes have been added for the Mutex 17483support. 17484 17485Recursive method calls are now allowed and supported (the ACPI 17486spec does in fact allow recursive method calls.) The number of 17487recursive calls is subject to the restrictions imposed by the 17488SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 17489parameter. 17490 17491Implemented support for the SyncLevel parameter for control 17492methods (ACPI 2.0 feature) 17493 17494Fixed a deadlock problem when multiple threads attempted to use 17495the interpreter. 17496 17497Fixed a problem where the string length of a String package 17498element was not always set in a package returned from 17499AcpiEvaluateObject. 17500 17501Fixed a problem where the length of a String package element was 17502not always included in the length of the overall package returned 17503from AcpiEvaluateObject. 17504 17505Added external interfaces (Acpi*) to the ACPI debug memory 17506manager. This manager keeps a list of all outstanding 17507allocations, and can therefore detect memory leaks and attempts to 17508free memory blocks more than once. Useful for code such as the 17509power manager, etc. May not be appropriate for device drivers. 17510Performance with the debug code enabled is slow. 17511 17512The ACPI Global Lock is now an optional hardware element. 17513 17514 ASL Compiler Version X2015: 17515 17516Integrated changes to allow the compiler to be generated on 17517multiple platforms. 17518 17519Linux makefile added to generate the compiler on Linux 17520 17521 Source Code: 17522 17523All platform-specific headers have been moved to their own 17524subdirectory, Include/Platform. 17525 17526New source file added, Interpreter/ammutex.c 17527 17528New header file, Include/acstruct.h 17529 17530 Documentation: 17531 17532The programmer reference has been updated for the following new 17533interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 17534 17535 ------------------------------------------ 17536Summary of changes for this label: 02_08_01 17537 17538Core ACPI CA Subsystem: Fixed a problem where an error was 17539incorrectly returned if the return resource buffer was larger than 17540the actual data (in the resource interfaces). 17541 17542References to named objects within packages are resolved to the 17543 17544full pathname string before packages are returned directly (via 17545the AcpiEvaluateObject interface) or indirectly via the resource 17546interfaces. 17547 17548Linux OS Services Layer (OSL): 17549 17550Improved /proc battery interface. 17551 17552 17553Added C-state debugging output and other miscellaneous fixes. 17554 17555ASL Compiler Version X2014: 17556 17557All defined method arguments can now be used as local variables, 17558including the ones that are not actually passed in as parameters. 17559The compiler tracks initialization of the arguments and issues an 17560exception if they are used without prior assignment (just like 17561locals). 17562 17563The -o option now specifies a filename prefix that is used for all 17564output files, including the AML output file. Otherwise, the 17565default behavior is as follows: 1) the AML goes to the file 17566specified in the DSDT. 2) all other output files use the input 17567source filename as the base. 17568 17569 ------------------------------------------ 17570Summary of changes for this label: 01_25_01 17571 17572Core ACPI CA Subsystem: Restructured the implementation of object 17573store support within the interpreter. This includes support for 17574the Store operator as well as any ASL operators that include a 17575target operand. 17576 17577Partially implemented support for Implicit Result-to-Target 17578conversion. This is when a result object is converted on the fly 17579to the type of an existing target object. Completion of this 17580support is pending further analysis of the ACPI specification 17581concerning this matter. 17582 17583CPU-specific code has been removed from the subsystem (hardware 17584directory). 17585 17586New Power Management Timer functions added 17587 17588Linux OS Services Layer (OSL): Moved system state transition code 17589to the core, fixed it, and modified Linux OSL accordingly. 17590 17591Fixed C2 and C3 latency calculations. 17592 17593 17594We no longer use the compilation date for the version message on 17595initialization, but retrieve the version from AcpiGetSystemInfo(). 17596 17597Incorporated for fix Sony VAIO machines. 17598 17599Documentation: The Programmer Reference has been updated and 17600reformatted. 17601 17602 17603ASL Compiler: Version X2013: Fixed a problem where the line 17604numbering and error reporting could get out of sync in the 17605presence of multiple include files. 17606 17607 ------------------------------------------ 17608Summary of changes for this label: 01_15_01 17609 17610Core ACPI CA Subsystem: 17611 17612Implemented support for type conversions in the execution of the 17613ASL Concatenate operator (The second operand is converted to 17614match the type of the first operand before concatenation.) 17615 17616Support for implicit source operand conversion is partially 17617implemented. The ASL source operand types Integer, Buffer, and 17618String are freely interchangeable for most ASL operators and are 17619converted by the interpreter on the fly as required. Implicit 17620Target operand conversion (where the result is converted to the 17621target type before storing) is not yet implemented. 17622 17623Support for 32-bit and 64-bit BCD integers is implemented. 17624 17625Problem fixed where a field read on an aligned field could cause a 17626read past the end of the field. 17627 17628New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 17629does not return a value, but the caller expects one. (The ASL 17630compiler flags this as a warning.) 17631 17632ASL Compiler: 17633 17634Version X2011: 176351. Static typechecking of all operands is implemented. This 17636prevents the use of invalid objects (such as using a Package where 17637an Integer is required) at compile time instead of at interpreter 17638run-time. 176392. The ASL source line is printed with ALL errors and warnings. 176403. Bug fix for source EOF without final linefeed. 176414. Debug option is split into a parse trace and a namespace trace. 176425. Namespace output option (-n) includes initial values for 17643integers and strings. 176446. Parse-only option added for quick syntax checking. 176457. Compiler checks for duplicate ACPI name declarations 17646 17647Version X2012: 176481. Relaxed typechecking to allow interchangeability between 17649strings, integers, and buffers. These types are now converted by 17650the interpreter at runtime. 176512. Compiler reports time taken by each internal subsystem in the 17652debug output file. 17653 17654 17655 ------------------------------------------ 17656Summary of changes for this label: 12_14_00 17657 17658ASL Compiler: 17659 17660This is the first official release of the compiler. Since the 17661compiler requires elements of the Core Subsystem, this label 17662synchronizes everything. 17663 17664------------------------------------------ 17665Summary of changes for this label: 12_08_00 17666 17667 17668Fixed a problem where named references within the ASL definition 17669of both OperationRegions and CreateXXXFields did not work 17670properly. The symptom was an AE_AML_OPERAND_TYPE during 17671initialization of the region/field. This is similar (but not 17672related internally) to the problem that was fixed in the last 17673label. 17674 17675Implemented both 32-bit and 64-bit support for the BCD ASL 17676functions ToBCD and FromBCD. 17677 17678Updated all legal headers to include "2000" in the copyright 17679years. 17680 17681 ------------------------------------------ 17682Summary of changes for this label: 12_01_00 17683 17684Fixed a problem where method invocations within the ASL definition 17685of both OperationRegions and CreateXXXFields did not work 17686properly. The symptom was an AE_AML_OPERAND_TYPE during 17687initialization of the region/field: 17688 17689 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 17690[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 17691(0x3005) 17692 17693Fixed a problem where operators with more than one nested 17694subexpression would fail. The symptoms were varied, by mostly 17695AE_AML_OPERAND_TYPE errors. This was actually a rather serious 17696problem that has gone unnoticed until now. 17697 17698 Subtract (Add (1,2), Multiply (3,4)) 17699 17700Fixed a problem where AcpiGetHandle didn't quite get fixed in the 17701previous build (The prefix part of a relative path was handled 17702incorrectly). 17703 17704Fixed a problem where Operation Region initialization failed if 17705the operation region name was a "namepath" instead of a simple 17706"nameseg". Symptom was an AE_NO_OPERAND error. 17707 17708Fixed a problem where an assignment to a local variable via the 17709indirect RefOf mechanism only worked for the first such 17710assignment. Subsequent assignments were ignored. 17711 17712 ------------------------------------------ 17713Summary of changes for this label: 11_15_00 17714 17715ACPI 2.0 table support with backwards support for ACPI 1.0 and the 177160.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 17717the AML interpreter does NOT have support for the new 2.0 ASL 17718grammar terms at this time. 17719 17720All ACPI hardware access is via the GAS structures in the ACPI 2.0 17721FADT. 17722 17723All physical memory addresses across all platforms are now 64 bits 17724wide. Logical address width remains dependent on the platform 17725(i.e., "void *"). 17726 17727AcpiOsMapMemory interface changed to a 64-bit physical address. 17728 17729The AML interpreter integer size is now 64 bits, as per the ACPI 177302.0 specification. 17731 17732For backwards compatibility with ACPI 1.0, ACPI tables with a 17733revision number less than 2 use 32-bit integers only. 17734 17735Fixed a problem where the evaluation of OpRegion operands did not 17736always resolve them to numbers properly. 17737 17738------------------------------------------ 17739Summary of changes for this label: 10_20_00 17740 17741Fix for CBN_._STA issue. This fix will allow correct access to 17742CBN_ OpRegions when the _STA returns 0x8. 17743 17744Support to convert ACPI constants (Ones, Zeros, One) to actual 17745values before a package object is returned 17746 17747Fix for method call as predicate to if/while construct causing 17748incorrect if/while behavior 17749 17750Fix for Else block package lengths sometimes calculated wrong (if 17751block > 63 bytes) 17752 17753Fix for Processor object length field, was always zero 17754 17755Table load abort if FACP sanity check fails 17756 17757Fix for problem with Scope(name) if name already exists 17758 17759Warning emitted if a named object referenced cannot be found 17760(resolved) during method execution. 17761 17762 17763 17764 17765 17766------------------------------------------ 17767Summary of changes for this label: 9_29_00 17768 17769New table initialization interfaces: AcpiInitializeSubsystem no 17770longer has any parameters AcpiFindRootPointer - Find the RSDP (if 17771necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 17772>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 17773AcpiLoadTables 17774 17775Note: These interface changes require changes to all existing OSDs 17776 17777The PCI_Config default address space handler is always installed 17778at the root namespace object. 17779 17780------------------------------------------- 17781Summary of changes for this label: 09_15_00 17782 17783The new initialization architecture is implemented. New 17784interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 17785AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 17786 17787(Namespace is automatically loaded when a table is loaded) 17788 17789The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1779052 bytes to 32 bytes. There is usually one of these for every 17791namespace object, so the memory savings is significant. 17792 17793Implemented just-in-time evaluation of the CreateField operators. 17794 17795Bug fixes for IA-64 support have been integrated. 17796 17797Additional code review comments have been implemented 17798 17799The so-called "third pass parse" has been replaced by a final walk 17800through the namespace to initialize all operation regions (address 17801spaces) and fields that have not yet been initialized during the 17802execution of the various _INI and REG methods. 17803 17804New file - namespace/nsinit.c 17805 17806------------------------------------------- 17807Summary of changes for this label: 09_01_00 17808 17809Namespace manager data structures have been reworked to change the 17810primary object from a table to a single object. This has 17811resulted in dynamic memory savings of 3X within the namespace and 178122X overall in the ACPI CA subsystem. 17813 17814Fixed problem where the call to AcpiEvFindPciRootBuses was 17815inadvertently left commented out. 17816 17817Reduced the warning count when generating the source with the GCC 17818compiler. 17819 17820Revision numbers added to each module header showing the 17821SourceSafe version of the file. Please refer to this version 17822number when giving us feedback or comments on individual modules. 17823 17824The main object types within the subsystem have been renamed to 17825clarify their purpose: 17826 17827ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 17828ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 17829ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 17830 17831NOTE: no changes to the initialization sequence are included in 17832this label. 17833 17834------------------------------------------- 17835Summary of changes for this label: 08_23_00 17836 17837Fixed problem where TerminateControlMethod was being called 17838multiple times per method 17839 17840Fixed debugger problem where single stepping caused a semaphore to 17841be oversignalled 17842 17843Improved performance through additional parse object caching - 17844added ACPI_EXTENDED_OP type 17845 17846------------------------------------------- 17847Summary of changes for this label: 08_10_00 17848 17849Parser/Interpreter integration: Eliminated the creation of 17850complete parse trees for ACPI tables and control methods. 17851Instead, parse subtrees are created and then deleted as soon as 17852they are processed (Either entered into the namespace or executed 17853by the interpreter). This reduces the use of dynamic kernel 17854memory significantly. (about 10X) 17855 17856Exception codes broken into classes and renumbered. Be sure to 17857recompile all code that includes acexcep.h. Hopefully we won't 17858have to renumber the codes again now that they are split into 17859classes (environment, programmer, AML code, ACPI table, and 17860internal). 17861 17862Fixed some additional alignment issues in the Resource Manager 17863subcomponent 17864 17865Implemented semaphore tracking in the AcpiExec utility, and fixed 17866several places where mutexes/semaphores were being unlocked 17867without a corresponding lock operation. There are no known 17868semaphore or mutex "leaks" at this time. 17869 17870Fixed the case where an ASL Return operator is used to return an 17871unnamed package. 17872 17873------------------------------------------- 17874Summary of changes for this label: 07_28_00 17875 17876Fixed a problem with the way addresses were calculated in 17877AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 17878manifested itself when a Field was created with WordAccess or 17879DwordAccess, but the field unit defined within the Field was less 17880 17881than a Word or Dword. 17882 17883Fixed a problem in AmlDumpOperands() module's loop to pull 17884operands off of the operand stack to display information. The 17885problem manifested itself as a TLB error on 64-bit systems when 17886accessing an operand stack with two or more operands. 17887 17888Fixed a problem with the PCI configuration space handlers where 17889context was getting confused between accesses. This required a 17890change to the generic address space handler and address space 17891setup definitions. Handlers now get both a global handler context 17892(this is the one passed in by the user when executing 17893AcpiInstallAddressSpaceHandler() and a specific region context 17894that is unique to each region (For example, the _ADR, _SEG and 17895_BBN values associated with a specific region). The generic 17896function definitions have changed to the following: 17897 17898typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 17899UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 17900*HandlerContext, // This used to be void *Context void 17901*RegionContext); // This is an additional parameter 17902 17903typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 17904RegionHandle, UINT32 Function, void *HandlerContext, void 17905**RegionContext); // This used to be **ReturnContext 17906 17907------------------------------------------- 17908Summary of changes for this label: 07_21_00 17909 17910Major file consolidation and rename. All files within the 17911interpreter have been renamed as well as most header files. This 17912was done to prevent collisions with existing files in the host 17913OSs -- filenames such as "config.h" and "global.h" seem to be 17914quite common. The VC project files have been updated. All 17915makefiles will require modification. 17916 17917The parser/interpreter integration continues in Phase 5 with the 17918implementation of a complete 2-pass parse (the AML is parsed 17919twice) for each table; This avoids the construction of a huge 17920parse tree and therefore reduces the amount of dynamic memory 17921required by the subsystem. Greater use of the parse object cache 17922means that performance is unaffected. 17923 17924Many comments from the two code reviews have been rolled in. 17925 17926The 64-bit alignment support is complete. 17927 17928------------------------------------------- 17929Summary of changes for this label: 06_30_00 17930 17931With a nod and a tip of the hat to the technology of yesteryear, 17932we've added support in the source code for 80 column output 17933devices. The code is now mostly constrained to 80 columns or 17934less to support environments and editors that 1) cannot display 17935or print more than 80 characters on a single line, and 2) cannot 17936disable line wrapping. 17937 17938A major restructuring of the namespace data structure has been 17939completed. The result is 1) cleaner and more 17940understandable/maintainable code, and 2) a significant reduction 17941in the dynamic memory requirement for each named ACPI object 17942(almost half). 17943 17944------------------------------------------- 17945Summary of changes for this label: 06_23_00 17946 17947Linux support has been added. In order to obtain approval to get 17948the ACPI CA subsystem into the Linux kernel, we've had to make 17949quite a few changes to the base subsystem that will affect all 17950users (all the changes are generic and OS- independent). The 17951effects of these global changes have been somewhat far reaching. 17952Files have been merged and/or renamed and interfaces have been 17953renamed. The major changes are described below. 17954 17955Osd* interfaces renamed to AcpiOs* to eliminate namespace 17956pollution/confusion within our target kernels. All OSD 17957interfaces must be modified to match the new naming convention. 17958 17959Files merged across the subsystem. A number of the smaller source 17960and header files have been merged to reduce the file count and 17961increase the density of the existing files. There are too many 17962to list here. In general, makefiles that call out individual 17963files will require rebuilding. 17964 17965Interpreter files renamed. All interpreter files now have the 17966prefix am* instead of ie* and is*. 17967 17968Header files renamed: The acapi.h file is now acpixf.h. The 17969acpiosd.h file is now acpiosxf.h. We are removing references to 17970the acronym "API" since it is somewhat windowsy. The new name is 17971"external interface" or xface or xf in the filenames.j 17972 17973 17974All manifest constants have been forced to upper case (some were 17975mixed case.) Also, the string "ACPI_" has been prepended to many 17976(not all) of the constants, typedefs, and structs. 17977 17978The globals "DebugLevel" and "DebugLayer" have been renamed 17979"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 17980 17981All other globals within the subsystem are now prefixed with 17982"AcpiGbl_" Internal procedures within the subsystem are now 17983prefixed with "Acpi" (with only a few exceptions). The original 17984two-letter abbreviation for the subcomponent remains after "Acpi" 17985- for example, CmCallocate became AcpiCmCallocate. 17986 17987Added a source code translation/conversion utility. Used to 17988generate the Linux source code, it can be modified to generate 17989other types of source as well. Can also be used to cleanup 17990existing source by removing extraneous spaces and blank lines. 17991Found in tools/acpisrc/* 17992 17993OsdUnMapMemory was renamed to OsdUnmapMemory and then 17994AcpiOsUnmapMemory. (UnMap became Unmap). 17995 17996A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 17997When set to one, this indicates that the caller wants to use the 17998 17999semaphore as a mutex, not a counting semaphore. ACPI CA uses 18000both types. However, implementers of this call may want to use 18001different OS primitives depending on the type of semaphore 18002requested. For example, some operating systems provide separate 18003 18004"mutex" and "semaphore" interfaces - where the mutex interface is 18005much faster because it doesn't have all the overhead of a full 18006semaphore implementation. 18007 18008Fixed a deadlock problem where a method that accesses the PCI 18009address space can block forever if it is the first access to the 18010space. 18011 18012------------------------------------------- 18013Summary of changes for this label: 06_02_00 18014 18015Support for environments that cannot handle unaligned data 18016accesses (e.g. firmware and OS environments devoid of alignment 18017handler technology namely SAL/EFI and the IA-64 Linux kernel) has 18018been added (via configurable macros) in these three areas: - 18019Transfer of data from the raw AML byte stream is done via byte 18020moves instead of word/dword/qword moves. - External objects are 18021aligned within the user buffer, including package elements (sub- 18022objects). - Conversion of name strings to UINT32 Acpi Names is now 18023done byte-wise. 18024 18025The Store operator was modified to mimic Microsoft's 18026implementation when storing to a Buffer Field. 18027 18028Added a check of the BM_STS bit before entering C3. 18029 18030The methods subdirectory has been obsoleted and removed. A new 18031file, cmeval.c subsumes the functionality. 18032 18033A 16-bit (DOS) version of AcpiExec has been developed. The 18034makefile is under the acpiexec directory. 18035