1---------------------------------------- 227 September 2018. Summary of changes for version 20180927: 3 4 51) ACPICA kernel-resident subsystem: 6 7Updated the GPE support to clear the status of all ACPI events when 8entering any/all sleep states in order to avoid premature wakeups. In 9theory, this may cause some wakeup events to be missed, but the 10likelihood of this is small. This change restores the original behavior 11of the ACPICA code in order to fix a regression seen from the previous 12"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 13This regression could cause some systems to incorrectly wake immediately. 14 15Updated the execution of the _REG methods during initialization and 16namespace loading to bring the behavior into closer conformance to the 17ACPI specification and other ACPI implementations: 18 19From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 20 "Control methods must assume all operation regions are inaccessible 21until the _REG(RegionSpace, 1) method is executed" 22 23 "The exceptions to this rule are: 241. OSPM must guarantee that the following operation regions are always 25accessible: 26 SystemIO operation regions. 27 SystemMemory operation regions when accessing memory returned by the 28System Address Map reporting interfaces." 29 30Since the state of both the SystemIO and SystemMemory address spaces are 31defined by the specification to never change, this ACPICA change ensures 32that now _REG is never called on them. This solves some problems seen in 33the field and provides compatibility with other ACPI implementations. An 34update to the upcoming new version of the ACPI specification will help 35clarify this behavior. 36 37Updated the implementation of support for the Generic Serial Bus. For the 38"bidirectional" protocols, the internal implementation now automatically 39creates a return data buffer of the maximum size (255). This handles the 40worst-case for data that is returned from the serial bus handler, and 41fixes some problems seen in the field. This new buffer is directly 42returned to the ASL. As such, there is no true "bidirectional" buffer, 43which matches the ACPI specification. This is the reason for the "double 44store" seen in the example ASL code in the specification, shown below: 45 46Word Process Call (AttribProcessCall): 47 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 48 Field(TOP1, BufferAcc, NoLock, Preserve) 49 { 50 FLD1, 8, // Virtual register at command value 1. 51 } 52 53 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 54 // as BUFF 55 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 56 57 Store(0x5416, DATA) // Save 0x5416 into the data buffer 58 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 59transaction 60 // This is the "double store". The write to 61 // FLD1 returns a new buffer, which is stored 62 // back into BUFF with the second Store. 63 64 652) iASL Compiler/Disassembler and Tools: 66 67iASL: Implemented detection of extraneous/redundant uses of the Offset() 68operator within a Field Unit list. A remark is now issued for these. For 69example, the first two of the Offset() operators below are extraneous. 70Because both the compiler and the interpreter track the offsets 71automatically, these Offsets simply refer to the current offset and are 72unnecessary. Note, when optimization is enabled, the iASL compiler will 73in fact remove the redundant Offset operators and will not emit any AML 74code for them. 75 76 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 77 Field (OPR1) 78 { 79 Offset (0), // Never needed 80 FLD1, 32, 81 Offset (4), // Redundant, offset is already 4 (bytes) 82 FLD2, 8, 83 Offset (64), // OK use of Offset. 84 FLD3, 16, 85 } 86dsdt.asl 14: Offset (0), 87Remark 2158 - ^ Unnecessary/redundant use of Offset 88operator 89 90dsdt.asl 16: Offset (4), 91Remark 2158 - ^ Unnecessary/redundant use of Offset 92operator 93 94---------------------------------------- 9510 August 2018. Summary of changes for version 20180810: 96 97 981) ACPICA kernel-resident subsystem: 99 100Initial ACPI table loading: Attempt to continue loading ACPI tables 101regardless of malformed AML. Since migrating table initialization to the 102new module-level code support, the AML interpreter rejected tables upon 103any ACPI error encountered during table load. This is a problem because 104non-serious ACPI errors during table load do not necessarily mean that 105the entire definition block (DSDT or SSDT) is invalid. This change 106improves the table loading by ignoring some types of errors that can be 107generated by incorrect AML. This can range from object type errors, scope 108errors, and index errors. 109 110Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 111during suspend/resume. The status of ACPI events is no longer cleared 112when entering the ACPI S5 system state (power off) which caused some 113systems to power up immediately after turning off power in certain 114situations. This was a functional regression. It was fixed by clearing 115the status of all ACPI events again when entering S5 (for system-wide 116suspend or hibernation the clearing of the status of all events is not 117desirable, as it might cause the kernel to miss wakeup events sometimes). 118Rafael Wysocki. 119 120 1212) iASL Compiler/Disassembler and Tools: 122 123AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 124elements listed in the initialization file were previously initialized 125after the table load and before executing module-level code blocks. 126Recent changes in the module-level code support means that the table load 127becomes a large control method execution. If fields are used within 128module-level code and we are executing with the -fi option, the 129initialization values were used to initialize the namespace object(s) 130only after the table was finished loading. This change Provides an early 131initialization of objects specified in the initialization file so that 132field unit values are populated during the table load (not after the 133load). 134 135AcpiExec: Fixed a small memory leak regression that could result in 136warnings during exit of the utility. These warnings were similar to 137these: 138 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 139 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 140 141---------------------------------------- 14229 June 2018. Summary of changes for version 20180629: 143 144 1451) iASL Compiler/Disassembler and Tools: 146 147iASL: Fixed a regression related to the use of the ASL External 148statement. Error checking for the use of the External() statement has 149been relaxed. Previously, a restriction on the use of External meant that 150the referenced named object was required to be defined in a different 151table (an SSDT). Thus it would be an error to declare an object as an 152external and then define the same named object in the same table. For 153example: 154 DefinitionBlock (...) 155 { 156 External (DEV1) 157 Device (DEV1){...} // This was an error 158 } 159However, this behavior has caused regressions in some existing ASL code, 160because there is code that depends on named objects and externals (with 161the same name) being declared in the same table. This change will allow 162the ASL code above to compile without errors or warnings. 163 164iASL: Implemented ASL language extensions for four operators to make some 165of their arguments optional instead of required: 166 1) Field (RegionName, AccessType, LockRule, UpdateRule) 167 2) BankField (RegionName, BankName, BankValue, 168 AccessType, LockRule, UpdateRule) 169 3) IndexField (IndexName, DataName, 170 AccessType, LockRule, UpdateRule) 171For the Field operators above, the AccessType, LockRule, and UpdateRule 172are now optional arguments. The default values are: 173 AccessType: AnyAcc 174 LockRule: NoLock 175 UpdateRule: Preserve 176 4) Mutex (MutexName, SyncLevel) 177For this operator, the SyncLevel argument is now optional. This argument 178is rarely used in any meaningful way by ASL code, and thus it makes sense 179to make it optional. The default value is: 180 SyncLevel: 0 181 182iASL: Attempted use of the ASL Unload() operator now results in the 183following warning: 184 "Unload is not supported by all operating systems" 185This is in fact very true, and the Unload operator may be completely 186deprecated in the near future. 187 188AcpiExec: Fixed a regression for the -fi option (Namespace initialization 189file. Recent changes in the ACPICA module-level code support altered the 190table load/initialization sequence . This means that the table load has 191become a large method execution of the table itself. If Operation Region 192Fields are used within any module-level code and the -fi option was 193specified, the initialization values were populated only after the table 194had completely finished loading (and thus the module-level code had 195already been executed). This change moves the initialization of objects 196listed in the initialization file to before the table is executed as a 197method. Field unit values are now initialized before the table execution 198is performed. 199 200---------------------------------------- 20131 May 2018. Summary of changes for version 20180531: 202 203 2041) ACPICA kernel-resident Subsystem: 205 206Implemented additional support to help ensure that a DSDT or SSDT is 207fully loaded even if errors are incurred during the load. The majority of 208the problems that are seen is the failure of individual AML operators 209that occur during execution of any module-level code (MLC) existing in 210the table. This support adds a mechanism to abort the current ASL 211statement (AML opcode), emit an error message, and to simply move on to 212the next opcode -- instead of aborting the entire table load. This is 213different than the execution of a control method where the entire method 214is aborted upon any error. The goal is to perform a very "best effort" to 215load the ACPI tables. The most common MLC errors that have been seen in 216the field are direct references to unresolved ASL/AML symbols (referenced 217directly without the use of the CondRefOf operator to validate the 218symbol). This new ACPICA behavior is now compatible with other ACPI 219implementations. 220 221Interpreter: The Unload AML operator is no longer supported for the 222reasons below. An AE_NOT_IMPLEMENTED exception is returned. 2231) A correct implementation on at least some hosts may not be possible. 2242) Other ACPI implementations do not correctly/fully support it. 2253) It requires host device driver support which is not known to exist. 226 (To properly support namespace unload out from underneath.) 2274) This AML operator has never been seen in the field. 228 229Parser: Added a debug option to dump AML parse sub-trees as they are 230being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 231ACPI_DB_PARSE_TREES. 232 233Debugger: Reduced the verbosity for errors incurred during table load and 234module-level code execution. 235 236Completed an investigation into adding a namespace node "owner list" 237instead of the current "owner ID" associated with namespace nodes. This 238list would link together all nodes that are owned by an individual 239control method. The purpose would be to enhance control method execution 240by speeding up cleanup during method exit (all namespace nodes created by 241a method are deleted upon method termination.) Currently, the entire 242namespace must be searched for matching owner IDs if (and only if) the 243method creates named objects outside of the local scope. However, by far 244the most common case is that methods create objects locally, not outside 245the method scope. There is already an ACPICA optimization in place that 246only searches the entire namespace in the rare case of a method creating 247objects elsewhere in the namespace. Therefore, it is felt that the 248overhead of adding an additional pointer to each namespace node to 249implement the owner list makes this feature unnecessary. 250 251 2522) iASL Compiler/Disassembler and Tools: 253 254iASL, Disassembler, and Template generator: Implemented support for 255Revision D of the IORT table. Adds a new subtable that is used to specify 256SMMUv3 PMCGs. rmurphy-arm. 257 258Disassembler: Restored correct table header validation for the "special" 259ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 260table header and must be special-cased. This was a regression that has 261been present for apparently a long time. 262 263AcpiExec: Reduced verbosity of the local exception handler implemented 264within acpiexec. This handler is invoked by ACPICA upon any exceptions 265generated during control method execution. A new option was added: -vh 266restores the original verbosity level if desired. 267 268AcpiExec: Changed the default base from decimal to hex for the -x option 269(set debug level). This simplifies the use of this option and matches the 270behavior of the corresponding iASL -x option. 271 272AcpiExec: Restored a force-exit on multiple control-c (sigint) 273interrupts. This allows program termination even if other issues cause 274the control-c to fail. 275 276ASL test suite (ASLTS): Added tests for the recently implemented package 277element resolution mechanism that allows forward references to named 278objects from individual package elements (this mechanism provides 279compatibility with other ACPI implementations.) 280 281 282---------------------------------------- 2838 May 2018. Summary of changes for version 20180508: 284 285 2861) ACPICA kernel-resident subsystem: 287 288Completed the new (recently deployed) package resolution mechanism for 289the Load and LoadTable ASL/AML operators. This fixes a regression that 290was introduced in version 20180209 that could result in an 291AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 292(SSDT) that contains package objects. 293 294 2952) iASL Compiler/Disassembler and Tools: 296 297AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 2981 MB. This change allows for table offsets within the acpidump file to be 299up to 8 characters. These changes are backwards compatible with existing 300acpidump files. 301 302 303---------------------------------------- 30427 April 2018. Summary of changes for version 20180427: 305 306 3071) ACPICA kernel-resident subsystem: 308 309Debugger: Added support for Package objects in the "Test Objects" 310command. This command walks the entire namespace and evaluates all named 311data objects (Integers, Strings, Buffers, and now Packages). 312 313Improved error messages for the namespace root node. Originally, the root 314was referred to by the confusing string "\___". This has been replaced by 315"Namespace Root" for clarification. 316 317Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 318Ian King <colin.king@canonical.com>. 319 320 3212) iASL Compiler/Disassembler and Tools: 322 323iASL: Implemented support to detect and flag illegal forward references. 324For compatibility with other ACPI implementations, these references are 325now illegal at the root level of the DSDT or SSDTs. Forward references 326have always been illegal within control methods. This change should not 327affect existing ASL/AML code because of the fact that these references 328have always been illegal in the other ACPI implementation. 329 330iASL: Added error messages for the case where a table OEM ID and OEM 331TABLE ID strings are longer than the ACPI-defined length. Previously, 332these strings were simply silently truncated. 333 334iASL: Enhanced the -tc option (which creates an AML hex file in C, 335suitable for import into a firmware project): 336 1) Create a unique name for the table, to simplify use of multiple 337SSDTs. 338 2) Add a protection #ifdef in the file, similar to a .h header file. 339With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 340evan.lloyd@arm.com 341 342AcpiExec: Added a new option, -df, to disable the local fault handler. 343This is useful during debugging, where it may be desired to drop into a 344debugger on a fault. 345 346---------------------------------------- 34713 March 2018. Summary of changes for version 20180313: 348 349 3501) ACPICA kernel-resident subsystem: 351 352Implemented various improvements to the GPE support: 353 3541) Dispatch all active GPEs at initialization time so that no GPEs are 355lost. 3562) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 357before devices are enumerated. 3583) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 359IRQs are not lost. 3604) Add parallel GPE handling to eliminate the possibility of dispatching 361the same GPE twice. 3625) Dispatch any pending GPEs after enabling for the first time. 363 364AcpiGetObjectInfo - removed support for the _STA method. This was causing 365problems on some platforms. 366 367Added a new _OSI string, "Windows 2017.2". 368 369Cleaned up and simplified the module-level code support. These changes 370are in preparation for the eventual removal of the legacy MLC support 371(deferred execution), replaced by the new MLC architecture which executes 372the MLC as a table is loaded (DSDT/SSDTs). 373 374Changed a compile-time option to a runtime option. Changes the option to 375ignore ACPI table load-time package resolution errors into a runtime 376option. Used only for platforms that generate many AE_NOT_FOUND errors 377during boot. AcpiGbl_IgnorePackageResolutionErrors. 378 379Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 380ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 381compilation errors from unused variables (seen with some compilers). 382 383 3842) iASL Compiler/Disassembler and Tools: 385 386ASLTS: parallelized execution in order to achieve an (approximately) 2X 387performance increase. 388 389ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 390error reporting. 391 392---------------------------------------- 39309 February 2018. Summary of changes for version 20180209: 394 395 3961) ACPICA kernel-resident subsystem: 397 398Completed the final integration of the recent changes to Package Object 399handling and the module-level AML code support. This allows forward 400references from individual package elements when the package object is 401declared from within module-level code blocks. Provides compatibility 402with other ACPI implementations. 403 404The new architecture for the AML module-level code has been completed and 405is now the default for the ACPICA code. This new architecture executes 406the module-level code in-line as the ACPI table is loaded/parsed instead 407of the previous architecture which deferred this code until after the 408table was fully loaded. This solves some ASL code ordering issues and 409provides compatibility with other ACPI implementations. At this time, 410there is an option to fallback to the earlier architecture, but this 411support is deprecated and is planned to be completely removed later this 412year. 413 414Added a compile-time option to ignore AE_NOT_FOUND exceptions during 415resolution of named reference elements within Package objects. Although 416this is potentially a serious problem, it can generate a lot of 417noise/errors on platforms whose firmware carries around a bunch of unused 418Package objects. To disable these errors, define 419ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 420errors are always reported for ACPICA applications such as AcpiExec. 421 422Fixed a regression related to the explicit type-conversion AML operators 423(ToXXXX). The regression was introduced early in 2017 but was not seen 424until recently because these operators are not fully supported by other 425ACPI implementations and are thus rarely used by firmware developers. The 426operators are defined by the ACPI specification to not implement the 427"implicit result object conversion". The regression incorrectly 428introduced this object conversion for the following explicit conversion 429operators: 430 ToInteger 431 ToString 432 ToBuffer 433 ToDecimalString 434 ToHexString 435 ToBCD 436 FromBCD 437 438 4392) iASL Compiler/Disassembler and Tools: 440 441iASL: Fixed a problem with the compiler constant folding feature as 442related to the ToXXXX explicit conversion operators. These operators do 443not support the "implicit result object conversion" by definition. Thus, 444ASL expressions that use these operators cannot be folded to a simple 445Store operator because Store implements the implicit conversion. This 446change uses the CopyObject operator for the ToXXXX operator folding 447instead. CopyObject is defined to not implement implicit result 448conversions and is thus appropriate for folding the ToXXXX operators. 449 450iASL: Changed the severity of an error condition to a simple warning for 451the case where a symbol is declared both locally and as an external 452symbol. This accommodates existing ASL code. 453 454AcpiExec: The -ep option to enable the new architecture for module-level 455code has been removed. It is replaced by the -dp option which instead has 456the opposite effect: it disables the new architecture (the default) and 457enables the legacy architecture. When the legacy code is removed in the 458future, the -dp option will be removed also. 459 460---------------------------------------- 46105 January 2018. Summary of changes for version 20180105: 462 463 4641) ACPICA kernel-resident subsystem: 465 466Updated all copyrights to 2018. This affects all source code modules. 467 468Fixed a possible build error caused by an unresolved reference to the 469AcpiUtSafeStrncpy function. 470 471Removed NULL pointer arithmetic in the various pointer manipulation 472macros. All "(void *) NULL" constructs are converted to "(void *) 0". 473This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 474 475Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 476Mittal. 477 478 4792) iASL Compiler/Disassembler and Tools: 480 481ASLTS: Updated all copyrights to 2018. 482 483Tools: Updated all signon copyrights to 2018. 484 485AcpiXtract: Fixed a regression related to ACPI table signatures where the 486signature was truncated to 3 characters (instead of 4). 487 488AcpiExec: Restore the original terminal mode after the use of the -v and 489-vd options. 490 491ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 492 493---------------------------------------- 49414 December 2017. Summary of changes for version 20171214: 495 496 4971) ACPICA kernel-resident subsystem: 498 499Fixed a regression in the external (public) AcpiEvaluateObjectTyped 500interface where the optional "pathname" argument had inadvertently become 501a required argument returning an error if omitted (NULL pointer 502argument). 503 504Fixed two possible memory leaks related to the recently developed "late 505resolution" of reference objects within ASL Package Object definitions. 506 507Added two recently defined _OSI strings: "Windows 2016" and "Windows 5082017". Mario Limonciello. 509 510Implemented and deployed a safer version of the C library function 511strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 512creation of unterminated strings as a possible result of a standard 513strncpy. 514 515Cleaned up and restructured the global variable file (acglobal.h). There 516are many changes, but no functional changes. 517 518 5192) iASL Compiler/Disassembler and Tools: 520 521iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 522optional OemData field at the end of the table was incorrectly required 523for proper compilation. It is now correctly an optional field. 524 525ASLTS: The entire suite was converted from standard ASL to the ASL+ 526language, using the ASL-to-ASL+ converter which is integrated into the 527iASL compiler. A binary compare of all output files has verified the 528correctness of the conversion. 529 530iASL: Fixed the source code build for platforms where "char" is unsigned. 531This affected the iASL lexer only. Jung-uk Kim. 532 533---------------------------------------- 53410 November 2017. Summary of changes for version 20171110: 535 536 5371) ACPICA kernel-resident subsystem: 538 539This release implements full support for ACPI 6.2A: 540 NFIT - Added a new subtable, "Platform Capabilities Structure" 541No other changes to ACPICA were required, since ACPI 6.2A is primarily an 542errata release of the specification. 543 544Other ACPI table changes: 545 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 546 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 547Linton 548 549Utilities: Modified the string/integer conversion functions to use 550internal 64-bit divide support instead of a native divide. On 32-bit 551platforms, a 64-bit divide typically requires a library function which 552may not be present in the build (kernel or otherwise). 553 554Implemented a targeted error message for timeouts returned from the 555Embedded Controller device driver. This is seen frequently enough to 556special-case an AE_TIME returned from an EC operation region access: 557 "Timeout from EC hardware or EC device driver" 558 559Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 560runtime error messages have the identical prefix. 561 562 5632) iASL Compiler/Disassembler and Tools: 564 565AcpiXtract: Fixed a problem with table header detection within the 566acpidump file. Processing a table could be ended early if a 0x40 (@) 567appears in the original binary table, resulting in the @ symbol appearing 568in the decoded ASCII field at the end of the acpidump text line. The 569symbol caused acpixtract to incorrectly think it had reached the end of 570the current table and the beginning of a new table. 571 572AcpiXtract: Added an option (-f) to ignore some errors during table 573extraction. This initial implementation ignores non-ASCII and non- 574printable characters found in the acpidump text file. 575 576TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 577for ASLTS. This feature is used to track memory allocations from 578different memory caches within the ACPICA code. At the end of an ASLTS 579run, these memory statistics are recorded and stored in a log file. 580 581Debugger (user-space version): Implemented a simple "Background" command. 582Creates a new thread to execute a control method in the background, while 583control returns to the debugger prompt to allow additional commands. 584 Syntax: Background <Namepath> [Arguments] 585 586---------------------------------------- 58729 September 2017. Summary of changes for version 20170929: 588 589 5901) ACPICA kernel-resident subsystem: 591 592Redesigned and implemented an improved ASL While() loop timeout 593mechanism. This mechanism is used to prevent infinite loops in the kernel 594AML interpreter caused by either non-responsive hardware or incorrect AML 595code. The new implementation uses AcpiOsGetTimer instead of a simple 596maximum loop count, and is thus more accurate and constant across 597different machines. The default timeout is currently 30 seconds, but this 598may be adjusted later. 599 600Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 601better reflect the new implementation of the loop timeout mechanism. 602 603Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 604and to fix an off-by-one error. Jung-uk Kim. 605 606Fixed an EFI build problem by updating the makefiles to for a new file 607that was added, utstrsuppt.c 608 609 6102) iASL Compiler/Disassembler and Tools: 611 612Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 613includes support in the table disassembler, compiler, and template 614generator. 615 616iASL: Added an exception for an illegal type of recursive method 617invocation. If a method creates named objects, the first recursive call 618will fail at runtime. This change adds an error detection at compile time 619to catch the problem up front. Note: Marking such a method as 620"serialized" will not help with this problem, because the same thread can 621acquire the method mutex more than once. Example compiler and runtime 622output: 623 624 Method (MTH1) 625 { 626 Name (INT1, 1) 627 MTH1 () 628 } 629 630 dsdt.asl 22: MTH1 () 631 Error 6152 - ^ Illegal recursive call to method 632 that creates named objects (MTH1) 633 634Previous runtime exception: 635 ACPI Error: [INT1] Namespace lookup failure, 636 AE_ALREADY_EXISTS (20170831/dswload2-465) 637 638iASL: Updated support for External() opcodes to improve namespace 639management and error detection. These changes are related to issues seen 640with multiple-segment namespace pathnames within External declarations, 641such as below: 642 643 External(\_SB.PCI0.GFX0, DeviceObj) 644 External(\_SB.PCI0.GFX0.ALSI) 645 646iASL: Implemented support for multi-line error/warning messages. This 647enables more detailed and helpful error messages as below, from the 648initial deployment for the duplicate names error: 649 650 DSDT.iiii 1692: Device(PEG2) { 651 Error 6074 - ^ Name already exists in scope 652(PEG2) 653 654 Original name creation/declaration below: 655 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 656 657AcpiXtract: Added additional flexibility to support differing input hex 658dump formats. Specifically, hex dumps that contain partial disassembly 659and/or comments within the ACPI table data definition. There exist some 660dump utilities seen in the field that create this type of hex dump (such 661as Simics). For example: 662 663 DSDT @ 0xdfffd0c0 (10999 bytes) 664 Signature DSDT 665 Length 10999 666 Revision 1 667 Checksum 0xf3 (Ok) 668 OEM_ID BXPC 669 OEM_table_id BXDSDT 670 OEM_revision 1 671 Creator_id 1280593481 672 Creator_revision 537399345 673 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 674 ... 675 2af0: 5f 4c 30 46 00 a4 01 676 677Test suite: Miscellaneous changes/fixes: 678 More cleanup and simplification of makefiles 679 Continue compilation of test cases after a compile failure 680 Do not perform binary compare unless both files actually exist 681 682iASL: Performed some code/module restructuring. Moved all memory 683allocation functions to new modules. Two new files, aslallocate.c and 684aslcache.c 685 686---------------------------------------- 68731 August 2017. Summary of changes for version 20170831: 688 689 6901) ACPICA kernel-resident subsystem: 691 692Implemented internal support for full 64-bit addresses that appear in all 693Generic Address Structure (GAS) structures. Previously, only the lower 32 694bits were used. Affects the use of GAS structures in the FADT and other 695tables, as well as the GAS structures passed to the AcpiRead and 696AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 697 698Added header support for the PDTT ACPI table (Processor Debug Trigger 699Table). Full support in the iASL Data Table Compiler and disassembler is 700forthcoming. 701 702 7032) iASL Compiler/Disassembler and Tools: 704 705iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 706Properties Topology Table) where a flag bit was specified in the wrong 707bit position ("Line Size Valid", bit 6). 708 709iASL: Implemented support for Octal integer constants as defined by the 710ASL language grammar, per the ACPI specification. Any integer constant 711that starts with a zero is an octal constant. For example, 712 Store (037777, Local0) /* Octal constant */ 713 Store (0x3FFF, Local0) /* Hex equivalent */ 714 Store (16383, Local0) /* Decimal equivalent */ 715 716iASL: Improved overflow detection for 64-bit string conversions during 717compilation of integer constants. "Overflow" in this case means a string 718that represents an integer that is too large to fit into a 64-bit value. 719Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 720the low-order 32 bits with a warning, as previously implemented. Several 721new exceptions are defined that indicate a 64-bit overflow, as well as 722the base (radix) that was used during the attempted conversion. Examples: 723 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 724 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 725 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 726 727iASL: Added a warning for the case where a ResourceTemplate is declared 728with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 729this case, the resulting template is created with a single END_TAG 730descriptor, which is essentially useless. 731 732iASL: Expanded the -vw option (ignore specific warnings/remarks) to 733include compilation error codes as well. 734 735---------------------------------------- 73628 July 2017. Summary of changes for version 20170728: 737 738 7391) ACPICA kernel-resident subsystem: 740 741Fixed a regression seen with small resource descriptors that could cause 742an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 743 744AML interpreter: Implemented a new feature that allows forward references 745from individual named references within package objects that are 746contained within blocks of "module-level code". This provides 747compatibility with other ACPI implementations and supports existing 748firmware that depends on this feature. Example: 749 750 Name (ABCD, 1) 751 If (ABCD) /* An If() at module-level */ 752 { 753 Name (PKG1, Package() 754 { 755 INT1 /* Forward reference to object INT1 756*/ 757 }) 758 Name (INT1, 0x1234) 759 } 760 761AML Interpreter: Fixed a problem with the Alias() operator where aliases 762to some ASL objects were not handled properly. Objects affected are: 763Mutex, Event, and OperationRegion. 764 765AML Debugger: Enhanced to properly handle AML Alias objects. These 766objects have one level of indirection which was not fully supported by 767the debugger. 768 769Table Manager: Added support to detect and ignore duplicate SSDTs within 770the XSDT/RSDT. This error in the XSDT has been seen in the field. 771 772EFI and EDK2 support: 773 Enabled /WX flag for MSVC builds 774 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 775 Added local support for 64-bit multiply and shift operations 776 Added support to compile acpidump.efi on Windows 777 Added OSL function stubs for interfaces not used under EFI 778 779Added additional support for the _DMA predefined name. _DMA returns a 780buffer containing a resource template. This change add support within the 781resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 782resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 783 784 7852) iASL Compiler/Disassembler and Tools: 786 787iASL: Fixed a problem where the internal input line buffer(s) could 788overflow if there are very long lines in the input ASL source code file. 789Implemented buffer management that automatically increases the size of 790the buffers as necessary. 791 792iASL: Added an option (-vx) to "expect" particular remarks, warnings and 793errors. If the specified exception is not raised during compilation, the 794compiler emits an error. This is intended to support the ASL test suite, 795but may be useful in other contexts. 796 797iASL: Implemented a new predefined macro, __METHOD__, which returns a 798string containing the name of the current control method that is being 799compiled. 800 801iASL: Implemented debugger and table compiler support for the SDEI ACPI 802table (Software Delegated Exception Interface). James Morse 803<james.morse@arm.com> 804 805Unix/Linux makefiles: Added an option to disable compile optimizations. 806The disable occurs when the NOOPT flag is set to TRUE. 807theracermaster@gmail.com 808 809Acpidump: Added support for multiple DSDT and FACS tables. This can occur 810when there are different tables for 32-bit versus 64-bit. 811 812Enhanced error reporting for the ASL test suite (ASLTS) by removing 813unnecessary/verbose text, and emit the actual line number where an error 814has occurred. These changes are intended to improve the usefulness of the 815test suite. 816 817---------------------------------------- 81829 June 2017. Summary of changes for version 20170629: 819 820 8211) ACPICA kernel-resident subsystem: 822 823Tables: Implemented a deferred ACPI table verification. This is useful 824for operating systems where the tables cannot be verified in the early 825initialization stage due to early memory mapping limitations on some 826architectures. Lv Zheng. 827 828Tables: Removed the signature validation for dynamically loaded tables. 829Provides compatibility with other ACPI implementations. Previously, only 830SSDT tables were allowed, as per the ACPI specification. Now, any table 831signature can be used via the Load() operator. Lv Zheng. 832 833Tables: Fixed several mutex issues that could cause errors during table 834acquisition. Lv Zheng. 835 836Tables: Fixed a problem where an ACPI warning could be generated if a 837null pointer was passed to the AcpiPutTable interface. Lv Zheng. 838 839Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 840AcpiPutTable interfaces. This applies to the "late stage" table loading 841when the use of AcpiPutTable is no longer required (since the system 842memory manager is fully running and available). Lv Zheng. 843 844Fixed/Reverted a regression during processing of resource descriptors 845that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 846exception in this case. 847 848Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 849I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 850 851Interpreter: Fixed a possible fault if an Alias operator with an invalid 852or duplicate target is encountered during Alias creation in 853AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 854 855Added an option to use designated initializers for function pointers. 856Kees Cook <keescook@google.com> 857 858 8592) iASL Compiler/Disassembler and Tools: 860 861iASL: Allow compilation of External declarations with target pathnames 862that refer to existing named objects within the table. Erik Schmauss. 863 864iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 865FieldUnit name also is declared via External in the same table. Erik 866Schmauss. 867 868iASL: Allow existing scope names within pathnames used in External 869statements. For example: 870 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 871 Device (ABCD) 872 873iASL: IORT ACPI table: Implemented changes required to decode the new 874Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 875compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 876 877Disassembler: Don't abort disassembly on errors from External() 878statements. Erik Schmauss. 879 880Disassembler: fixed a possible fault when one of the Create*Field 881operators references a Resource Template. ACPICA Bugzilla 1396. 882 883iASL: In the source code, resolved some naming inconsistences across the 884parsing support. Fixes confusion between "Parse Op" and "Parse Node". 885Adds a new file, aslparseop.c 886 887---------------------------------------- 88831 May 2017. Summary of changes for version 20170531: 889 890 8910) ACPI 6.2 support: 892 893The ACPI specification version 6.2 has been released and is available at 894http://uefi.org/specifications 895 896This version of ACPICA fully supports the ACPI 6.2 specification. Changes 897are summarized below. 898 899New ACPI tables (Table Compiler/Disassembler/Templates): 900 HMAT (Heterogeneous Memory Attributes Table) 901 WSMT (Windows SMM Security Mitigation Table) 902 PPTT (Processor Properties Topology Table) 903 904New subtables for existing ACPI tables: 905 HEST (New subtable, Arch-deferred machine check) 906 SRAT (New subtable, Arch-specific affinity structure) 907 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 908 909Simple updates for existing ACPI tables: 910 BGRT (two new flag bits) 911 HEST (New bit defined for several subtables, GHES_ASSIST) 912 913New Resource Descriptors and Resource macros (Compiler/Disassembler): 914 PinConfig() 915 PinFunction() 916 PinGroup() 917 PinGroupConfig() 918 PinGroupFunction() 919 New type for hardware error notification (section 18.3.2.9) 920 921New predefined names/methods (Compiler/Interpreter): 922 _HMA (Heterogeneous Memory Attributes) 923 _LSI (Label Storage Information) 924 _LSR (Label Storage Read) 925 _LSW (Label Storage Write) 926 927ASL grammar/macro changes (Compiler): 928 For() ASL macro, implemented with the AML while operator 929 Extensions to Concatenate operator 930 Support for multiple definition blocks in same ASL file 931 Clarification for Buffer operator 932 Allow executable AML code underneath all scopes (Devices, etc.) 933 Clarification/change for the _OSI return value 934 ASL grammar update for reference operators 935 Allow a zero-length string for AML filename in DefinitionBlock 936 937Miscellaneous: 938 New device object notification value 939 Remove a notify value (0x0C) for graceful shutdown 940 New UUIDs for processor/cache properties and 941 physical package property 942 New _HID, ACPI0014 (Wireless Power Calibration Device) 943 944 9451) ACPICA kernel-resident subsystem: 946 947Added support to disable ACPI events on hardware-reduced platforms. 948Eliminates error messages of the form "Could not enable fixed event". Lv 949Zheng 950 951Fixed a problem using Device/Thermal objects with the ObjectType and 952DerefOf ASL operators. This support had not been fully/properly 953implemented. 954 955Fixed a problem where if a Buffer object containing a resource template 956was longer than the actual resource template, an error was generated -- 957even though the AML is legal. This case has been seen in the field. 958 959Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 960The values for DUAL_PIC and MULTIPLE_APIC were reversed. 961 962Added header file changes for the TPM2 ACPI table. Update to new version 963of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 964 965Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 966These interfaces are intended to be used only in conjunction with the 967predefined _DLM method (Device Lock Method). "This object appears in a 968device scope when AML access to the device must be synchronized with the 969OS environment". 970 971Example Code and Data Size: These are the sizes for the OS-independent 972acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 973debug version of the code includes the debug output trace mechanism and 974has a much larger code and data size. 975 976 Current Release: 977 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 978 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 979 Previous Release: 980 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 981 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 982 983 9842) iASL Compiler/Disassembler and Tools: 985 986iASL: Fixed a problem where an External() declaration could not refer to 987a Field Unit. Erik Schmauss. 988 989Disassembler: Improved support for the Switch/Case operators. This 990feature will disassemble AML code back to the original Switch operators 991when possible, instead of an If..Else sequence. David Box 992 993iASL and disassembler: Improved the handling of multiple extraneous 994parentheses for both ASL input and disassembled ASL output. 995 996Improved the behavior of the iASL compiler and disassembler to detect 997improper use of external declarations 998 999Disassembler: Now aborts immediately upon detection of an unknown AML 1000opcode. The AML parser has no real way to recover from this, and can 1001result in the creation of an ill-formed parse tree that causes errors 1002later during the disassembly. 1003 1004All tools: Fixed a problem where the Unix application OSL did not handle 1005control-c correctly. For example, a control-c could incorrectly wake the 1006debugger. 1007 1008AcpiExec: Improved the Control-C handling and added a handler for 1009segmentation faults (SIGSEGV). Supports both Windows and Unix-like 1010environments. 1011 1012Reduced the verbosity of the generic unix makefiles. Previously, each 1013compilation displayed the full set of compiler options. This has been 1014eliminated as the options are easily inspected within the makefiles. Each 1015compilation now results in a single line of output. 1016 1017---------------------------------------- 101803 March 2017. Summary of changes for version 20170303: 1019 1020 10210) ACPICA licensing: 1022 1023The licensing information at the start of each source code module has 1024been updated. In addition to the Intel license, the dual GPLv2/BSD 1025license has been added for completeness. Now, a single version of the 1026source code should be suitable for all ACPICA customers. This is the 1027major change for this release since it affects all source code modules. 1028 1029 10301) ACPICA kernel-resident subsystem: 1031 1032Fixed two issues with the common asltypes.h header that could cause 1033problems in some environments: (Kim Jung-uk) 1034 Removed typedef for YY_BUFFER_STATE ? 1035 Fixes an error with earlier versions of Flex. 1036 Removed use of FILE typedef (which is only defined in stdio.h) 1037 1038 10392) iASL Compiler/Disassembler and Tools: 1040 1041Disassembler: fixed a regression introduced in 20170224. A fix for a 1042memory leak related to resource descriptor tags (names) could fault when 1043the disassembler was generated with 64-bit compilers. 1044 1045The ASLTS test suite has been updated to implement a new testing 1046architecture. During generation of the suite from ASL source, both the 1047ASL and ASL+ compilers are now validated, as well as the disassembler 1048itself (Erik Schmauss). The architecture executes as follows: 1049 1050 For every ASL source module: 1051 Compile (legacy ASL compilation) 1052 Disassemble the resulting AML to ASL+ source code 1053 Compile the new ASL+ module 1054 Perform a binary compare on the legacy AML and the new ASL+ AML 1055 The ASLTS suite then executes normally using the AML binaries. 1056 1057---------------------------------------- 105824 February 2017. Summary of changes for version 20170224: 1059 1060 10611) ACPICA kernel-resident subsystem: 1062 1063Interpreter: Fixed two issues with the control method return value auto- 1064repair feature, where an attempt to double-delete an internal object 1065could result in an ACPICA warning (for _CID repair and others). No fault 1066occurs, however, because the attempted deletion (actually a release to an 1067internal cache) is detected and ignored via object poisoning. 1068 1069Debugger: Fixed an AML interpreter mutex issue during the single stepping 1070of control methods. If certain debugger commands are executed during 1071stepping, a mutex aquire/release error could occur. Lv Zheng. 1072 1073Fixed some issues generating ACPICA with the Intel C compiler by 1074restoring the original behavior and compiler-specific include file in 1075acenv.h. Lv Zheng. 1076 1077Example Code and Data Size: These are the sizes for the OS-independent 1078acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1079debug version of the code includes the debug output trace mechanism and 1080has a much larger code and data size. 1081 1082 Current Release: 1083 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 1084 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 1085 Previous Release: 1086 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1087 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1088 1089 10902) iASL Compiler/Disassembler and Tools: 1091 1092iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 1093tool has been designed, implemented, and included in this release. The 1094key feature of this utility is that the original comments within the 1095input ASL file are preserved during the conversion process, and included 1096within the converted ASL+ file -- thus creating a transparent conversion 1097of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 1098 1099 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 1100converted code 1101 1102iASL/Disassembler: Improved the detection and correct disassembly of 1103Switch/Case operators. This feature detects sequences of if/elseif/else 1104operators that originated from ASL Switch/Case/Default operators and 1105emits the original operators. David Box. 1106 1107iASL: Improved the IORT ACPI table support in the following areas. Lv 1108Zheng: 1109 Clear MappingOffset if the MappingCount is zero. 1110 Fix the disassembly of the SMMU GSU interrupt offset. 1111 Update the template file for the IORT table. 1112 1113Disassembler: Enhanced the detection and disassembly of resource 1114template/descriptor within a Buffer object. An EndTag descriptor is now 1115required to have a zero second byte, since all known ASL compilers emit 1116this. This helps eliminate incorrect decisions when a buffer is 1117disassembled (false positives on resource templates). 1118 1119---------------------------------------- 112019 January 2017. Summary of changes for version 20170119: 1121 1122 11231) General ACPICA software: 1124 1125Entire source code base: Added the 2017 copyright to all source code 1126legal/licensing module headers and utility/tool signons. This includes 1127the standard Linux dual-license header. This affects virtually every file 1128in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 1129the ACPICA test suite. 1130 1131 11322) iASL Compiler/Disassembler and Tools: 1133 1134iASL: Removed/fixed an inadvertent remark when a method argument 1135containing a reference is used as a target operand within the method (and 1136never used as a simple argument), as in the example below. Jeffrey Hugo. 1137 1138 dsdt.asl 1507: Store(0x1, Arg0) 1139 Remark 2146 - ^ Method Argument is never used (Arg0) 1140 1141All tools: Removed the bit width of the compiler that generated the tool 1142from the common signon for all user space tools. This proved to be 1143confusing and unnecessary. This includes similar removal of HARDWARE_NAME 1144from the generic makefiles (Thomas Petazzoni). Example below. 1145 1146 Old: 1147 ASL+ Optimizing Compiler version 20170119-32 1148 ASL+ Optimizing Compiler version 20170119-64 1149 1150 New: 1151 ASL+ Optimizing Compiler version 20170119 1152 1153---------------------------------------- 115422 December 2016. Summary of changes for version 20161222: 1155 1156 11571) ACPICA kernel-resident subsystem: 1158 1159AML Debugger: Implemented a new mechanism to simplify and enhance 1160debugger integration into all environments, including kernel debuggers 1161and user-space utilities, as well as remote debug services. This 1162mechanism essentially consists of new OSL interfaces to support debugger 1163initialization/termination, as well as wait/notify interfaces to perform 1164the debugger handshake with the host. Lv Zheng. 1165 1166 New OSL interfaces: 1167 AcpiOsInitializeDebugger (void) 1168 AcpiOsTerminateDebugger (void) 1169 AcpiOsWaitCommandReady (void) 1170 AcpiOsNotifyCommandComplete (void) 1171 1172 New OS services layer: 1173 osgendbg.c -- Example implementation, and used for AcpiExec 1174 1175Update for Generic Address Space (GAS) support: Although the AccessWidth 1176and/or BitOffset fields of the GAS are not often used, this change now 1177fully supports these fields. This affects the internal support for FADT 1178registers, registers in other ACPI data tables, and the AcpiRead and 1179AcpiWrite public interfaces. Lv Zheng. 1180 1181Sleep support: In order to simplify integration of ACPI sleep for the 1182various host operating systems, a new OSL interface has been introduced. 1183AcpiOsEnterSleep allows the host to perform any required operations 1184before the final write to the sleep control register(s) is performed by 1185ACPICA. Lv Zheng. 1186 1187 New OSL interface: 1188 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 1189 1190 Called from these internal interfaces: 1191 AcpiHwLegacySleep 1192 AcpiHwExtendedSleep 1193 1194EFI support: Added a very small EFI/ACPICA example application. Provides 1195a simple demo for EFI integration, as well as assisting with resolution 1196of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 1197 1198 source/tools/efihello/efihello.c 1199 1200Local C library: Implemented several new functions to enhance ACPICA 1201portability, for environments where these clib functions are not 1202available (such as EFI). Lv Zheng: 1203 putchar 1204 getchar 1205 strpbrk 1206 strtok 1207 memmove 1208 1209Fixed a regression where occasionally a valid resource descriptor was 1210incorrectly detected as invalid at runtime, and a 1211AE_AML_NO_RESOURCE_END_TAG was returned. 1212 1213Fixed a problem with the recently implemented support that enables 1214control method invocations as Target operands to many ASL operators. 1215Warnings of this form: "Needed type [Reference], found [Processor]" were 1216seen at runtime for some method invocations. 1217 1218Example Code and Data Size: These are the sizes for the OS-independent 1219acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1220debug version of the code includes the debug output trace mechanism and 1221has a much larger code and data size. 1222 1223 Current Release: 1224 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 1225 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 1226 Previous Release: 1227 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1228 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1229 1230 12312) iASL Compiler/Disassembler and Tools: 1232 1233Disassembler: Enhanced output by adding the capability to detect and 1234disassemble ASL Switch/Case statements back to the original ASL source 1235code instead of if/else blocks. David Box. 1236 1237AcpiHelp: Split a large file into separate files based upon 1238functionality/purpose. New files are: 1239 ahaml.c 1240 ahasl.c 1241 1242---------------------------------------- 124317 November 2016. Summary of changes for version 20161117: 1244 1245 12461) ACPICA kernel-resident subsystem: 1247 1248Table Manager: Fixed a regression introduced in 20160729, "FADT support 1249cleanup". This was an attempt to remove all references in the source to 1250the FADT version 2, which never was a legal version number. It was 1251skipped because it was an early version of 64-bit support that was 1252eventually abandoned for the current 64-bit support. 1253 1254Interpreter: Fixed a problem where runtime implicit conversion was 1255incorrectly disabled for the ASL operators below. This brings the 1256behavior into compliance with the ACPI specification: 1257 FromBCD 1258 ToBCD 1259 ToDecimalString 1260 ToHexString 1261 ToInteger 1262 ToBuffer 1263 1264Table Manager: Added a new public interface, AcpiPutTable, used to 1265release and free an ACPI table returned by AcpiGetTable and related 1266interfaces. Lv Zheng. 1267 1268Example Code and Data Size: These are the sizes for the OS-independent 1269acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1270debug version of the code includes the debug output trace mechanism and 1271has a much larger code and data size. 1272 1273 Current Release: 1274 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1275 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1276 Previous Release: 1277 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1278 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1279 1280 12812) iASL Compiler/Disassembler and Tools: 1282 1283Disassembler: Fixed a regression for disassembly of Resource Template. 1284Detection of templates in the AML stream missed some types of templates. 1285 1286iASL: Fixed a problem where an Access Size error was returned for the PCC 1287address space when the AccessSize of the GAS register is greater than a 1288DWORD. Hoan Tran. 1289 1290iASL: Implemented several grammar changes for the operators below. These 1291changes are slated for the next version of the ACPI specification: 1292 RefOf - Disallow method invocation as an operand 1293 CondRefOf - Disallow method invocation as an operand 1294 DerefOf - Disallow operands that use the result from operators 1295that 1296 do not return a reference (Changed TermArg to 1297SuperName). 1298 1299iASL: Control method invocations are now allowed for Target operands, as 1300per the ACPI specification. Removed error for using a control method 1301invocation as a Target operand. 1302 1303Disassembler: Improved detection of Resource Templates, Unicode, and 1304Strings within Buffer objects. These subtypes do not contain a specific 1305opcode to indicate the originating ASL code, and they must be detected by 1306other means within the disassembler. 1307 1308iASL: Implemented an optimization improvement for 32-bit ACPI tables 1309(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 1310only after 64-bit to 32-bit truncation. A truncation warning message is 1311still emitted, however. 1312 1313AcpiXtract: Implemented handling for both types of line terminators (LF 1314or CR/LF) so that it can accept AcpiDump output files from any system. 1315Peter Wu. 1316 1317AcpiBin: Added two new options for comparing AML files: 1318 -a: compare and display ALL mismatches 1319 -o: start compare at this offset into the second file 1320 1321---------------------------------------- 132230 September 2016. Summary of changes for version 20160930: 1323 1324 13251) ACPICA kernel-resident subsystem: 1326 1327Fixed a regression in the internal AcpiTbFindTable function where a non 1328AE_OK exception could inadvertently be returned even if the function did 1329not fail. This problem affects the following operators: 1330 DataTableRegion 1331 LoadTable 1332 1333Fixed a regression in the LoadTable operator where a load to any 1334namespace location other than the root no longer worked properly. 1335 1336Increased the maximum loop count value that will result in the 1337AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 1338prevent infinite loops within the AML interpreter and thus the host OS 1339kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 13401,048,575). 1341 1342Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 1343acpixf.h file. This allows hosts to easily configure the maximum loop 1344count at runtime. 1345 1346Removed an illegal character in the strtoul64.c file. This character 1347caused errors with some C compilers. 1348 1349Example Code and Data Size: These are the sizes for the OS-independent 1350acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1351debug version of the code includes the debug output trace mechanism and 1352has a much larger code and data size. 1353 1354 Current Release: 1355 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1356 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1357 Previous Release: 1358 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 1359 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 1360 1361 13622) iASL Compiler/Disassembler and Tools: 1363 1364Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 1365the simpler ASL ElseIf keyword. During the conversion, a trailing If 1366block could be lost and missing from the disassembled output. 1367 1368iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 1369the missing rule caused a parse error when using the Index operator as an 1370operand to ObjectType. This construct now compiles properly. Example: 1371 ObjectType(PKG1[4]). 1372 1373iASL: Correctly handle unresolved symbols in the hardware map file (-lm 1374option). Previously, unresolved symbols could cause a protection fault. 1375Such symbols are now marked as unresolved in the map file. 1376 1377iASL: Implemented support to allow control method invocations as an 1378operand to the ASL DeRefOf operator. Example: 1379 DeRefOf(MTH1(Local0)) 1380 1381Disassembler: Improved support for the ToPLD ASL macro. Detection of a 1382possible _PLD buffer now includes examination of both the normal buffer 1383length (16 or 20) as well as the surrounding AML package length. 1384 1385Disassembler: Fixed a problem with the decoding of complex expressions 1386within the Divide operator for ASL+. For the case where both the quotient 1387and remainder targets are specified, the entire statement cannot be 1388disassembled. Previously, the output incorrectly contained a mix of ASL- 1389and ASL+ operators. This mixed statement causes a syntax error when 1390compiled. Example: 1391 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 1392disassembled to: 1393 Divide (INT1 + 6, 128, RSLT, QUOT) 1394 1395iASL/Tools: Added support to process AML and non-AML ACPI tables 1396consistently. For the disassembler and AcpiExec, allow all types of ACPI 1397tables (AML and data tables). For the iASL -e option, allow only AML 1398tables (DSDT/SSDT). 1399 1400---------------------------------------- 140131 August 2016. Summary of changes for version 20160831: 1402 1403 14041) ACPICA kernel-resident subsystem: 1405 1406Improve support for the so-called "module-level code", which is defined 1407to be math, logical and control AML opcodes that appear outside of any 1408control method. This change improves the support by adding more opcodes 1409that can be executed in the manner. Some other issues have been solved, 1410and the ASL grammar changes to support such code under all scope 1411operators (Device, etc.) are complete. Lv Zheng. 1412 1413UEFI support: these OSL functions have been implemented. This is an 1414additional step toward supporting the AcpiExec utility natively (with 1415full hardware access) under UEFI. Marcelo Ferreira. 1416 AcpiOsReadPciConfiguration 1417 AcpiOsWritePciConfiguration 1418 1419Fixed a possible mutex error during control method auto-serialization. Lv 1420Zheng. 1421 1422Updated support for the Generic Address Structure by fully implementing 1423all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 1424Zheng. 1425 1426Updated the return value for the internal _OSI method. Instead of 14270xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 1428for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 1429implementations, and will be reflected and clarified in the next version 1430of the ACPI specification. 1431 1432Implemented two new table events that can be passed to an ACPICA table 1433handler. These events are used to indicate a table installation or 1434uninstallation. These events are used in addition to existed table load 1435and unload events. Lv Zheng. 1436 1437Implemented a cleanup for all internal string-to-integer conversions. 1438Consolidate multiple versions of this functionality and limit possible 1439bases to either 10 or 16 to simplify the code. Adds a new file, 1440utstrtoul64. 1441 1442Cleanup the inclusion order of the various compiler-specific headers. 1443This simplifies build configuration management. The compiler-specific 1444headers are now split out from the host-specific headers. Lv Zheng. 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: 140.1K Code, 58.1K Data, 198.1K Total 1453 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 1454 1455 14562) iASL Compiler/Disassembler and Tools: 1457 1458iASL/AcpiExec: Added a command line option to display the build date/time 1459of the tool (-vd). This can be useful to verify that the correct version 1460of the tools are being used. 1461 1462AML Debugger: Implemented a new subcommand ("execute predef") to execute 1463all predefined control methods and names within the current namespace. 1464This can be useful for debugging problems with ACPI tables and the ACPI 1465namespace. 1466 1467---------------------------------------- 146829 July 2016. Summary of changes for version 20160729: 1469 1470 14711) ACPICA kernel-resident subsystem: 1472 1473Implemented basic UEFI support for the various ACPICA tools. This 1474includes: 14751) An OSL to implement the various AcpiOs* interfaces on UEFI. 14762) Support to obtain the ACPI tables on UEFI. 14773) Local implementation of required C library functions not available on 1478UEFI. 14794) A front-end (main) function for the tools for UEFI-related 1480initialization. 1481 1482The initial deployment of this support is the AcpiDump utility executing 1483as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 1484Current environments supported are Linux/Unix. MSVC generation is not 1485supported at this time. See the generate/efi/README file for build 1486instructions. Lv Zheng. 1487 1488Future plans include porting the AcpiExec utility to execute natively on 1489the platform with I/O and memory access. This will allow viewing/dump of 1490the platform namespace and native execution of ACPI control methods that 1491access the actual hardware. To fully implement this support, the OSL 1492functions below must be implemented with UEFI interfaces. Any community 1493help in the implementation of these functions would be appreciated: 1494 AcpiOsReadPort 1495 AcpiOsWritePort 1496 AcpiOsReadMemory 1497 AcpiOsWriteMemory 1498 AcpiOsReadPciConfiguration 1499 AcpiOsWritePciConfiguration 1500 1501Restructured and standardized the C library configuration for ACPICA, 1502resulting in the various configuration options below. This includes a 1503global restructuring of the compiler-dependent and platform-dependent 1504include files. These changes may affect the existing platform-dependent 1505configuration files on some hosts. Lv Zheng. 1506 1507The current C library configuration options appear below. For any issues, 1508it may be helpful to examine the existing compiler-dependent and 1509platform-dependent files as examples. Lv Zheng. 1510 15111) Linux kernel: 1512 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 1513library. 1514 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 15152) Unix/Windows/BSD applications: 1516 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 1517library. 1518 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 15193) UEFI applications: 1520 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 1521library. 1522 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 15234) UEFI applications (EDK2/StdLib): 1524 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 1525 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 1526 1527 1528AML interpreter: "module-level code" support. Allows for execution of so- 1529called "executable" AML code (math/logical operations, etc.) outside of 1530control methods not just at the module level (top level) but also within 1531any scope declared outside of a control method - Scope{}, Device{}, 1532Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 1533 1534Simplified the configuration of the "maximum AML loops" global option by 1535adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 1536modified at runtime. 1537 1538 1539Example Code and Data Size: These are the sizes for the OS-independent 1540acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1541debug version of the code includes the debug output trace mechanism and 1542has a much larger code and data size. 1543 1544 Current Release: 1545 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 1546 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 1547 1548 15492) iASL Compiler/Disassembler and Tools: 1550 1551iASL: Add full support for the RASF ACPI table (RAS Features Table). 1552Includes disassembler, data table compiler, and header support. 1553 1554iASL Expand "module-level code" support. Allows for 1555compilation/disassembly of so-called "executable" AML code (math/logical 1556operations, etc.) outside of control methods not just at the module level 1557(top level) but also within any scope declared outside of a control 1558method - Scope{}, Device{}, Processor{}, PowerResource{}, and 1559ThermalZone{}. 1560 1561AcpiDump: Added support for dumping all SSDTs on newer versions of 1562Windows. These tables are now easily available -- SSDTs are not available 1563through the registry on older versions. 1564 1565---------------------------------------- 156627 May 2016. Summary of changes for version 20160527: 1567 1568 15691) ACPICA kernel-resident subsystem: 1570 1571Temporarily reverted the new arbitrary bit length/alignment support in 1572AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 1573a number of regressions with the new code that need to be fully resolved 1574and tested before this support can be finally integrated into ACPICA. 1575Apologies for any inconveniences these issues may have caused. 1576 1577The ACPI message macros are not configurable (ACPI_MSG_ERROR, 1578ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 1579and ACPI_MSG_BIOS_WARNING). Lv Zheng. 1580 1581Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 1582option. Adds a new return macro, return_STR. Junk-uk Kim. 1583 1584Example Code and Data Size: These are the sizes for the OS-independent 1585acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1586debug version of the code includes the debug output trace mechanism and 1587has a much larger code and data size. 1588 1589 Current Release: 1590 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 1591 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1592 Previous Release: 1593 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1594 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 1595 1596---------------------------------------- 159722 April 2016. Summary of changes for version 20160422: 1598 15991) ACPICA kernel-resident subsystem: 1600 1601Fixed a regression in the GAS (generic address structure) arbitrary bit 1602support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 1603and incorrect return values. Lv Zheng. ACPICA BZ 1270. 1604 1605ACPI 6.0: Added support for new/renamed resource macros. One new argument 1606was added to each of these macros, and the original name has been 1607deprecated. The AML disassembler will always disassemble to the new 1608names. Support for the new macros was added to iASL, disassembler, 1609resource manager, and the acpihelp utility. ACPICA BZ 1274. 1610 1611 I2cSerialBus -> I2cSerialBusV2 1612 SpiSerialBus -> SpiSerialBusV2 1613 UartSerialBus -> UartSerialBusV2 1614 1615ACPI 6.0: Added support for a new integer field that was appended to the 1616package object returned by the _BIX method. This adds iASL compile-time 1617and AML runtime error checking. ACPICA BZ 1273. 1618 1619ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 1620Subspace Type2" (Headers, Disassembler, and data table compiler). 1621 1622Example Code and Data Size: These are the sizes for the OS-independent 1623acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1624debug version of the code includes the debug output trace mechanism and 1625has a much larger code and data size. 1626 1627 Current Release: 1628 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1629 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1630 Previous Release: 1631 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 1632 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 1633 1634 16352) iASL Compiler/Disassembler and Tools: 1636 1637iASL: Implemented an ASL grammar extension to allow/enable executable 1638"module-level code" to be created and executed under the various 1639operators that create new scopes. This type of AML code is already 1640supported in all known AML interpreters, and the grammar change will 1641appear in the next version of the ACPI specification. Simplifies the 1642conditional runtime creation of named objects under these object types: 1643 1644 Device 1645 PowerResource 1646 Processor 1647 Scope 1648 ThermalZone 1649 1650iASL: Implemented a new ASL extension, a "For" loop macro to add greater 1651ease-of-use to the ASL language. The syntax is similar to the 1652corresponding C operator, and is implemented with the existing AML While 1653opcode -- thus requiring no changes to existing AML interpreters. 1654 1655 For (Initialize, Predicate, Update) {TermList} 1656 1657Grammar: 1658 ForTerm := 1659 For ( 1660 Initializer // Nothing | TermArg => ComputationalData 1661 Predicate // Nothing | TermArg => ComputationalData 1662 Update // Nothing | TermArg => ComputationalData 1663 ) {TermList} 1664 1665 1666iASL: The _HID/_ADR detection and validation has been enhanced to search 1667under conditionals in order to allow these objects to be conditionally 1668created at runtime. 1669 1670iASL: Fixed several issues with the constant folding feature. The 1671improvement allows better detection and resolution of statements that can 1672be folded at compile time. ACPICA BZ 1266. 1673 1674iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 1675conversion to the ASL ElseIf operator where incorrect ASL code could be 1676generated. 1677 1678iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 1679sometimes an extra (and extraneous) set of parentheses were emitted for 1680some combinations of operators. Although this did not cause any problems 1681with recompilation of the disassembled code, it made the code more 1682difficult to read. David Box. ACPICA BZ 1231. 1683 1684iASL: Changed to ignore the unreferenced detection for predefined names 1685of resource descriptor elements, when the resource descriptor is 1686created/defined within a control method. 1687 1688iASL: Disassembler: Fix a possible fault with externally declared Buffer 1689objects. 1690 1691---------------------------------------- 169218 March 2016. Summary of changes for version 20160318: 1693 16941) ACPICA kernel-resident subsystem: 1695 1696Added support for arbitrary bit lengths and bit offsets for registers 1697defined by the Generic Address Structure. Previously, only aligned bit 1698lengths of 8/16/32/64 were supported. This was sufficient for many years, 1699but recently some machines have been seen that require arbitrary bit- 1700level support. ACPICA BZ 1240. Lv Zheng. 1701 1702Fixed an issue where the \_SB._INI method sometimes must be evaluated 1703before any _REG methods are evaluated. Lv Zheng. 1704 1705Implemented several changes related to ACPI table support 1706(Headers/Disassembler/TableCompiler): 1707NFIT: For ACPI 6.1, updated to add some additional new fields and 1708constants. 1709FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 17106). 1711DMAR: Added new constants per the 10/2014 DMAR spec. 1712IORT: Added new subtable per the 10/2015 IORT spec. 1713HEST: For ACPI 6.1, added new constants and new subtable. 1714DBG2: Added new constants per the 12/2015 DBG2 spec. 1715FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 1716ACPICA BZ 1249. 1717ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 1718 1719Updated header support for the DMAR table to match the current version of 1720the related spec. 1721 1722Added extensions to the ASL Concatenate operator to allow any ACPI object 1723to be passed as an operand. Any object other than Integer/String/Buffer 1724simply returns a string containing the object type. This extends the 1725usefulness of the Printf macros. Previously, Concatenate would abort the 1726control method if a non-data object was encountered. 1727 1728ACPICA source code: Deployed the C "const" keyword across the source code 1729where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 1730 1731Example Code and Data Size: These are the sizes for the OS-independent 1732acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1733debug version of the code includes the debug output trace mechanism and 1734has a much larger code and data size. 1735 1736 Current Release: 1737 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 1738 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 1739 Previous Release: 1740 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 1741 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 1742 1743 17442) iASL Compiler/Disassembler and Tools: 1745 1746iASL/Disassembler: Improved the heuristic used to determine the number of 1747arguments for an externally defined control method (a method in another 1748table). Although this is an improvement, there is no deterministic way to 1749"guess" the number of method arguments. Only the ACPI 6.0 External opcode 1750will completely solve this problem as it is deployed (automatically) in 1751newer BIOS code. 1752 1753iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 1754statements that could cause errors when the disassembled file is 1755compiled. ACPICA BZ 1243. David Box. 1756 1757iASL: Fixed a regression caused by the merger of the two versions of the 1758local strtoul64. Because of a dependency on a global variable, strtoul64 1759could return an error for integers greater than a 32-bit value. ACPICA BZ 17601260. 1761 1762iASL: Fixed a regression where a fault could occur for an ASL Return 1763statement if it invokes a control method that is not resolved. ACPICA BZ 17641264. 1765 1766AcpiXtract: Improved input file validation: detection of binary files and 1767non-acpidump text files. 1768 1769---------------------------------------- 177012 February 2016. Summary of changes for version 20160212: 1771 17721) ACPICA kernel-resident subsystem: 1773 1774Implemented full support for the ACPI 6.1 specification (released in 1775January). This version of the specification is available at: 1776http://www.uefi.org/specifications 1777 1778Only a relatively small number of changes were required in ACPICA to 1779support ACPI 6.1, in these areas: 1780- New predefined names 1781- New _HID values 1782- A new subtable for HEST 1783- A few other header changes for new values 1784 1785Ensure \_SB_._INI is executed before any _REG methods are executed. There 1786appears to be existing BIOS code that relies on this behavior. Lv Zheng. 1787 1788Reverted a change made in version 20151218 which enabled method 1789invocations to be targets of various ASL operators (SuperName and Target 1790grammar elements). While the new behavior is supported by the ACPI 1791specification, other AML interpreters do not support this behavior and 1792never will. The ACPI specification will be updated for ACPI 6.2 to remove 1793this support. Therefore, the change was reverted to the original ACPICA 1794behavior. 1795 1796ACPICA now supports the GCC 6 compiler. 1797 1798Current Release: (Note: build changes increased sizes) 1799 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 1800 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 1801Previous Release: 1802 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 1803 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 1804 1805 18062) iASL Compiler/Disassembler and Tools: 1807 1808Completed full support for the ACPI 6.0 External() AML opcode. The 1809compiler emits an external AML opcode for each ASL External statement. 1810This opcode is used by the disassembler to assist with the disassembly of 1811external control methods by specifying the required number of arguments 1812for the method. AML interpreters do not use this opcode. To ensure that 1813interpreters do not even see the opcode, a block of one or more external 1814opcodes is surrounded by an "If(0)" construct. As this feature becomes 1815commonly deployed in BIOS code, the ability of disassemblers to correctly 1816disassemble AML code will be greatly improved. David Box. 1817 1818iASL: Implemented support for an optional cross-reference output file. 1819The -lx option will create a the cross-reference file with the suffix 1820"xrf". Three different types of cross-reference are created in this file: 1821- List of object references made from within each control method 1822- Invocation (caller) list for each user-defined control method 1823- List of references to each non-method object in the namespace 1824 1825iASL: Method invocations as ASL Target operands are now disallowed and 1826flagged as errors in preparation for ACPI 6.2 (see the description of the 1827problem above). 1828 1829---------------------------------------- 18308 January 2016. Summary of changes for version 20160108: 1831 18321) ACPICA kernel-resident subsystem: 1833 1834Updated all ACPICA copyrights and signons to 2016: Added the 2016 1835copyright to all source code module headers and utility/tool signons. 1836This includes the standard Linux dual-license header. This affects 1837virtually every file in the ACPICA core subsystem, iASL compiler, all 1838ACPICA utilities, and the ACPICA test suite. 1839 1840Fixed a regression introduced in version 20151218 concerning the 1841execution of so-called module-level ASL/AML code. Namespace objects 1842created under a module-level If() construct were not properly/fully 1843entered into the namespace and could cause an interpreter fault when 1844accessed. 1845 1846Example Code and Data Size: These are the sizes for the OS-independent 1847acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1848debug version of the code includes the debug output trace mechanism and 1849has a much larger code and data size. 1850 1851Current Release: 1852 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 1853 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 1854 Previous Release: 1855 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 1856 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 1857 1858 18592) iASL Compiler/Disassembler and Tools: 1860 1861Fixed a problem with the compilation of the GpioIo and GpioInt resource 1862descriptors. The _PIN field name was incorrectly defined to be an array 1863of 32-bit values, but the _PIN values are in fact 16 bits each. This 1864would cause incorrect bit width warnings when using Word (16-bit) fields 1865to access the descriptors. 1866 1867 1868---------------------------------------- 186918 December 2015. Summary of changes for version 20151218: 1870 18711) ACPICA kernel-resident subsystem: 1872 1873Implemented per-AML-table execution of "module-level code" as individual 1874ACPI tables are loaded into the namespace during ACPICA initialization. 1875In other words, any module-level code within an AML table is executed 1876immediately after the table is loaded, instead of batched and executed 1877after all of the tables have been loaded. This provides compatibility 1878with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 1879David Box. 1880 1881To fully support the feature above, the default operation region handlers 1882for the SystemMemory, SystemIO, and PCI_Config address spaces are now 1883installed before any ACPI tables are loaded. This enables module-level 1884code to access these address spaces during the table load and module- 1885level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 1886Box. 1887 1888Implemented several changes to the internal _REG support in conjunction 1889with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 1890utilities for the changes above. Although these tools were changed, host 1891operating systems that simply use the default handlers for SystemMemory, 1892SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 1893 1894For example, in the code below, DEV1 is conditionally added to the 1895namespace by the DSDT via module-level code that accesses an operation 1896region. The SSDT references DEV1 via the Scope operator. DEV1 must be 1897created immediately after the DSDT is loaded in order for the SSDT to 1898successfully reference DEV1. Previously, this code would cause an 1899AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 1900fully supported by ACPICA. 1901 1902 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 1903 { 1904 OperationRegion (OPR1, SystemMemory, 0x400, 32) 1905 Field (OPR1, AnyAcc, NoLock, Preserve) 1906 { 1907 FLD1, 1 1908 } 1909 If (FLD1) 1910 { 1911 Device (\DEV1) 1912 { 1913 } 1914 } 1915 } 1916 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 1917 { 1918 External (\DEV1, DeviceObj) 1919 Scope (\DEV1) 1920 { 1921 } 1922 } 1923 1924Fixed an AML interpreter problem where control method invocations were 1925not handled correctly when the invocation was itself a SuperName argument 1926to another ASL operator. In these cases, the method was not invoked. 1927ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 1928argument: 1929 Store 1930 Acquire, Wait 1931 CondRefOf, RefOf 1932 Decrement, Increment 1933 Load, Unload 1934 Notify 1935 Signal, Release, Reset 1936 SizeOf 1937 1938Implemented automatic String-to-ObjectReference conversion support for 1939packages returned by predefined names (such as _DEP). A common BIOS error 1940is to add double quotes around an ObjectReference namepath, which turns 1941the reference into an unexpected string object. This support detects the 1942problem and corrects it before the package is returned to the caller that 1943invoked the method. Lv Zheng. 1944 1945Implemented extensions to the Concatenate operator. Concatenate now 1946accepts any type of object, it is not restricted to simply 1947Integer/String/Buffer. For objects other than these 3 basic data types, 1948the argument is treated as a string containing the name of the object 1949type. This expands the utility of Concatenate and the Printf/Fprintf 1950macros. ACPICA BZ 1222. 1951 1952Cleaned up the output of the ASL Debug object. The timer() value is now 1953optional and no longer emitted by default. Also, the basic data types of 1954Integer/String/Buffer are simply emitted as their values, without a data 1955type string -- since the data type is obvious from the output. ACPICA BZ 19561221. 1957 1958Example Code and Data Size: These are the sizes for the OS-independent 1959acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1960debug version of the code includes the debug output trace mechanism and 1961has a much larger code and data size. 1962 1963 Current Release: 1964 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 1965 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 1966 Previous Release: 1967 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 1968 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 1969 1970 19712) iASL Compiler/Disassembler and Tools: 1972 1973iASL: Fixed some issues with the ASL Include() operator. This operator 1974was incorrectly defined in the iASL parser rules, causing a new scope to 1975be opened for the code within the include file. This could lead to 1976several issues, including allowing ASL code that is technically illegal 1977and not supported by AML interpreters. Note, this does not affect the 1978related #include preprocessor operator. ACPICA BZ 1212. 1979 1980iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 1981operator is essentially an ASL macro since there is no AML opcode 1982associated with it. The code emitted by the iASL compiler for ElseIf is 1983an Else opcode followed immediately by an If opcode. The disassembler 1984will now emit an ElseIf if it finds an Else immediately followed by an 1985If. This simplifies the decoded ASL, especially for deeply nested 1986If..Else and large Switch constructs. Thus, the disassembled code more 1987closely follows the original source ASL. ACPICA BZ 1211. Example: 1988 1989 Old disassembly: 1990 Else 1991 { 1992 If (Arg0 == 0x02) 1993 { 1994 Local0 = 0x05 1995 } 1996 } 1997 1998 New disassembly: 1999 ElseIf (Arg0 == 0x02) 2000 { 2001 Local0 = 0x05 2002 } 2003 2004AcpiExec: Added support for the new module level code behavior and the 2005early region installation. This required a small change to the 2006initialization, since AcpiExec must install its own operation region 2007handlers. 2008 2009AcpiExec: Added support to make the debug object timer optional. Default 2010is timer disabled. This cleans up the debug object output -- the timer 2011data is rarely used. 2012 2013AcpiExec: Multiple ACPI tables are now loaded in the order that they 2014appear on the command line. This can be important when there are 2015interdependencies/references between the tables. 2016 2017iASL/Templates. Add support to generate template files with multiple 2018SSDTs within a single output file. Also added ommand line support to 2019specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 20201223, 1225. 2021 2022 2023---------------------------------------- 202424 November 2015. Summary of changes for version 20151124: 2025 20261) ACPICA kernel-resident subsystem: 2027 2028Fixed a possible regression for a previous update to FADT handling. The 2029FADT no longer has a fixed table ID, causing some issues with code that 2030was hardwired to a specific ID. Lv Zheng. 2031 2032Fixed a problem where the method auto-serialization could interfere with 2033the current SyncLevel. This change makes the auto-serialization support 2034transparent to the SyncLevel support and management. 2035 2036Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 2037interface is intended for early access to the namespace during the 2038initial namespace device discovery walk. The _SUB method has been seen to 2039access operation regions in some cases, causing errors because the 2040operation regions are not fully initialized. 2041 2042AML Debugger: Fixed some issues with the terminate/quit/exit commands 2043that can cause faults. Lv Zheng. 2044 2045AML Debugger: Add thread ID support so that single-step mode only applies 2046to the AML Debugger thread. This prevents runtime errors within some 2047kernels. Lv Zheng. 2048 2049Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 2050methods that are invoked by this interface are optional, removed warnings 2051emitted for the case where one or more of these methods do not exist. 2052ACPICA BZ 1208, original change by Prarit Bhargava. 2053 2054Made a major pass through the entire ACPICA source code base to 2055standardize formatting that has diverged a bit over time. There are no 2056functional changes, but this will of course cause quite a few code 2057differences from the previous ACPICA release. 2058 2059Example Code and Data Size: These are the sizes for the OS-independent 2060acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2061debug version of the code includes the debug output trace mechanism and 2062has a much larger code and data size. 2063 2064 Current Release: 2065 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 2066 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 2067 Previous Release: 2068 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2069 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 2070 2071 20722) iASL Compiler/Disassembler and Tools: 2073 2074iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 2075definition blocks within a single ASL file and the resulting AML file. 2076Support for this type of file was also added to the various tools that 2077use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 2078example code below shows two definition blocks within the same file: 2079 2080 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 20810x12345678) 2082 { 2083 } 2084 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 2085 { 2086 } 2087 2088iASL: Enhanced typechecking for the Name() operator. All expressions for 2089the value of the named object must be reduced/folded to a single constant 2090at compile time, as per the ACPI specification (the AML definition of 2091Name()). 2092 2093iASL: Fixed some code indentation issues for the -ic and -ia options (C 2094and assembly headers). Now all emitted code correctly begins in column 1. 2095 2096iASL: Added an error message for an attempt to open a Scope() on an 2097object defined in an SSDT. The DSDT is always loaded into the namespace 2098first, so any attempt to open a Scope on an SSDT object will fail at 2099runtime. 2100 2101 2102---------------------------------------- 210330 September 2015. Summary of changes for version 20150930: 2104 21051) ACPICA kernel-resident subsystem: 2106 2107Debugger: Implemented several changes and bug fixes to assist support for 2108the in-kernel version of the AML debugger. Lv Zheng. 2109- Fix the "predefined" command for in-kernel debugger. 2110- Do not enter debug command loop for the help and version commands. 2111- Disallow "execute" command during execution/single-step of a method. 2112 2113Interpreter: Updated runtime typechecking for all operators that have 2114target operands. The operand is resolved and validated that it is legal. 2115For example, the target cannot be a non-data object such as a Device, 2116Mutex, ThermalZone, etc., as per the ACPI specification. 2117 2118Debugger: Fixed the double-mutex user I/O handshake to work when local 2119deadlock detection is enabled. 2120 2121Debugger: limited display of method locals and arguments (LocalX and 2122ArgX) to only those that have actually been initialized. This prevents 2123lines of extraneous output. 2124 2125Updated the definition of the NFIT table to correct the bit polarity of 2126one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 2127 2128Example Code and Data Size: These are the sizes for the OS-independent 2129acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2130debug version of the code includes the debug output trace mechanism and 2131has a much larger code and data size. 2132 2133 Current Release: 2134 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2135 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 2136 Previous Release: 2137 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2138 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2139 2140 21412) iASL Compiler/Disassembler and Tools: 2142 2143iASL: Improved the compile-time typechecking for operands of many of the 2144ASL operators: 2145 2146-- Added an option to disable compiler operand/operator typechecking (- 2147ot). 2148 2149-- For the following operators, the TermArg operands are now validated 2150when possible to be Integer data objects: BankField, OperationRegion, 2151DataTableRegion, Buffer, and Package. 2152 2153-- Store (Source, Target): Both the source and target operands are 2154resolved and checked that the operands are both legal. For example, 2155neither operand can be a non-data object such as a Device, Mutex, 2156ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 2157operator can be used to store an object to any type of target object. 2158 2159-- Store (Source, Target): If the source is a Package object, the target 2160must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 2161is a Package, the source must also be a Package. 2162 2163-- Store (Source, Target): A warning is issued if the source and target 2164resolve to the identical named object. 2165 2166-- Store (Source, <method invocation>): An error is generated for the 2167target method invocation, as this construct is not supported by the AML 2168interpreter. 2169 2170-- For all ASL math and logic operators, the target operand must be a 2171data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 2172includes the function return value also. 2173 2174-- External declarations are also included in the typechecking where 2175possible. External objects defined using the UnknownObj keyword cannot be 2176typechecked, however. 2177 2178iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 2179operator: 2180- Legacy code: Index(PKG1, 3) 2181- New ASL+ code: PKG1[3] 2182This completes the ACPI 6.0 ASL+ support as it was the only operator not 2183supported. 2184 2185iASL: Fixed the file suffix for the preprocessor output file (.i). Two 2186spaces were inadvertently appended to the filename, causing file access 2187and deletion problems on some systems. 2188 2189ASL Test Suite (ASLTS): Updated the master makefile to generate all 2190possible compiler output files when building the test suite -- thus 2191exercising these features of the compiler. These files are automatically 2192deleted when the test suite exits. 2193 2194 2195---------------------------------------- 219618 August 2015. Summary of changes for version 20150818: 2197 21981) ACPICA kernel-resident subsystem: 2199 2200Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 2201Zheng. ACPICA BZ 1186. 2202 2203Completed development to ensure that the ACPICA Disassembler and Debugger 2204are fully standalone components of ACPICA. Removed cross-component 2205dependences. Lv Zheng. 2206 2207The max-number-of-AML-loops is now runtime configurable (previously was 2208compile-time only). This is essentially a loop timeout to force-abort 2209infinite AML loops. ACPCIA BZ 1192. 2210 2211Debugger: Cleanup output to dump ACPI names and namepaths without any 2212trailing underscores. Lv Zheng. ACPICA BZ 1135. 2213 2214Removed unnecessary conditional compilations across the Debugger and 2215Disassembler components where entire modules could be left uncompiled. 2216 2217The aapits test is deprecated and has been removed from the ACPICA git 2218tree. The test has never been completed and has not been maintained, thus 2219becoming rather useless. ACPICA BZ 1015, 794. 2220 2221A batch of small changes to close bugzilla and other reports: 2222- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 2223- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 2224- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 2225- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 2226Moore. 2227- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 2228ACPICA BZ 1184. 2229- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 2230operators. 2231- Debugger: Split debugger initialization/termination interfaces. Lv 2232Zheng. 2233- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 2234identification. 2235- AcpiExec: Add debug message during _REG method phase during table 2236load/init. 2237- AcpiNames: Fix a regression where some output was missing and no longer 2238emitted. 2239- Debugger: General cleanup and simplification. Lv Zheng. 2240- Disassembler: Cleanup use of several global option variables. Lv Zheng. 2241 2242Example Code and Data Size: These are the sizes for the OS-independent 2243acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2244debug version of the code includes the debug output trace mechanism and 2245has a much larger code and data size. 2246 2247 Current Release: 2248 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2249 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2250 Previous Release: 2251 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2252 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2253 2254 22552) iASL Compiler/Disassembler and Tools: 2256 2257AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 2258were not handled properly and caused load errors. Now, properly invoke 2259and use the ACPICA auto-reallocate mechanism for ACPI table data 2260structures. ACPICA BZ 1188 2261 2262AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 2263BZ 1190. 2264 2265AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 2266AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 2267executed during initialization. ACPICA BZ 1187, 1189. 2268 2269iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 2270that corresponds to each disassembled ASL statement, to simplify 2271debugging. ACPICA BZ 1191. 2272 2273Debugger: Add option to the "objects" command to display a summary of the 2274current namespace objects (Object type and count). This is displayed if 2275the command is entered with no arguments. 2276 2277AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 2278 2279 2280---------------------------------------- 228117 July 2015. Summary of changes for version 20150717: 2282 22831) ACPICA kernel-resident subsystem: 2284 2285Improved the partitioning between the Debugger and Disassembler 2286components. This allows the Debugger to be used standalone within kernel 2287code without the Disassembler (which is used for single stepping also). 2288This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 2289 2290Debugger: Implemented a new command to trace the execution of control 2291methods (Trace). This is especially useful for the in-kernel version of 2292the debugger when file I/O may not be available for method trace output. 2293See the ACPICA reference for more information. Lv Zheng. 2294 2295Moved all C library prototypes (used for the local versions of these 2296functions when requested) to a new header, acclib.h 2297Cleaned up the use of non-ANSI C library functions. These functions are 2298implemented locally in ACPICA. Moved all such functions to a common 2299source file, utnonansi.c 2300 2301Debugger: Fixed a problem with the "!!" command (get last command 2302executed) where the debugger could enter an infinite loop and eventually 2303crash. 2304 2305Removed the use of local macros that were used for some of the standard C 2306library functions to automatically cast input parameters. This mostly 2307affected the is* functions where the input parameter is defined to be an 2308int. This required a few modifications to the main ACPICA source code to 2309provide casting for these functions and eliminate possible compiler 2310warnings for these parameters. 2311 2312Across the source code, added additional status/error checking to resolve 2313issues discovered by static source code analysis tools such as Coverity. 2314 2315Example Code and Data Size: These are the sizes for the OS-independent 2316acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2317debug version of the code includes the debug output trace mechanism and 2318has a much larger code and data size. 2319 2320 Current Release: 2321 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2322 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2323 Previous Release: 2324 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 2325 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 2326 2327 23282) iASL Compiler/Disassembler and Tools: 2329 2330iASL: Fixed a regression where the device map file feature no longer 2331worked properly when used in conjunction with the disassembler. It only 2332worked properly with the compiler itself. 2333 2334iASL: Implemented a new warning for method LocalX variables that are set 2335but never used (similar to a C compiler such as gcc). This also applies 2336to ArgX variables that are not defined by the parent method, and are 2337instead (legally) used as local variables. 2338 2339iASL/Preprocessor: Finished the pass-through of line numbers from the 2340preprocessor to the compiler. This ensures that compiler errors/warnings 2341have the correct original line numbers and filenames, regardless of any 2342#include files. 2343 2344iASL/Preprocessor: Fixed a couple of issues with comment handling and the 2345pass-through of comments to the preprocessor output file (which becomes 2346the compiler input file). Also fixed a problem with // comments that 2347appear after a math expression. 2348 2349iASL: Added support for the TCPA server table to the table compiler and 2350template generator. (The client table was already previously supported) 2351 2352iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 2353identify the iASL compiler. 2354 2355Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 2356multiple times. The new names are ACPI_SIGN_NEGATIVE and 2357ACPI_SIGN_POSITIVE. 2358 2359AcpiHelp: Update to expand help messages for the iASL preprocessor 2360directives. 2361 2362 2363---------------------------------------- 236419 June 2015. Summary of changes for version 20150619: 2365 2366Two regressions in version 20150616 have been addressed: 2367 2368Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 2369etc.) This update changes ACPICA to only use the standard headers for 2370functions, or the prototypes for the local versions of the C library 2371functions. Across the source code, this required some additional casts 2372for some Clib invocations for portability. Moved all local prototypes to 2373a new file, acclib.h 2374 2375Fixes several problems with recent changes to the handling of the FACS 2376table that could cause some systems not to boot. 2377 2378 2379---------------------------------------- 238016 June 2015. Summary of changes for version 20150616: 2381 2382 23831) ACPICA kernel-resident subsystem: 2384 2385Across the entire ACPICA source code base, the various macros for the C 2386library functions (such as ACPI_STRLEN, etc.) have been removed and 2387replaced by the standard C library names (strlen, etc.) The original 2388purpose for these macros is no longer applicable. This simplification 2389reduces the number of macros used in the ACPICA source code 2390significantly, improving readability and maintainability. 2391 2392Implemented support for a new ACPI table, the OSDT. This table, the 2393"override" SDT, can be loaded directly by the host OS at boot time. It 2394enables the replacement of existing namespace objects that were installed 2395via the DSDT and/or SSDTs. The primary purpose for this is to replace 2396buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 2397for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 2398Moore. 2399 2400Added support for systems with (improperly) two FACS tables -- a "32-bit" 2401table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 2402X field). This change will support both automatically. There continues to 2403be systems found with this issue. This support requires a change to the 2404AcpiSetFirmwareWakingVector interface. Also, a public global variable has 2405been added to allow the host to select which FACS is desired 2406(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 2407details Lv Zheng. 2408 2409Added a new feature to allow for systems that do not contain an FACS. 2410Although this is already supported on hardware-reduced platforms, the 2411feature has been extended for all platforms. The reasoning is that we do 2412not want to abort the entire ACPICA initialization just because the 2413system is seriously buggy and has no FACS. 2414 2415Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 2416not correctly transcribed from the ACPI specification in ACPICA version 241720150515. 2418 2419Implemented support for the _CLS object in the AcpiGetObjectInfo external 2420interface. 2421 2422Updated the definitions of the TCPA and TPM2 ACPI tables to the more 2423recent TCG ACPI Specification, December 14, 2014. Table disassembler and 2424compiler also updated. Note: The TCPA "server" table is not supported by 2425the disassembler/table-compiler at this time. 2426 2427ACPI 6.0: Added definitions for the new GIC version field in the MADT. 2428 2429Example Code and Data Size: These are the sizes for the OS-independent 2430acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2431debug version of the code includes the debug output trace mechanism and 2432has a much larger code and data size. 2433 2434 Current Release: 2435 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 2436 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 2437 Previous Release: 2438 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 2439 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 2440 2441 24422) iASL Compiler/Disassembler and Tools: 2443 2444Disassembler: Fixed a problem with the new symbolic operator disassembler 2445where incorrect ASL code could be emitted in some cases for the "non- 2446commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 2447ShiftRight. The actual problem cases seem to be rather unusual in common 2448ASL code, however. David Box. 2449 2450Modified the linux version of acpidump to obtain ACPI tables from not 2451just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 2452Zheng. 2453 2454iASL: Fixed a problem where the user preprocessor output file (.i) 2455contained extra data that was not expected. The compiler was using this 2456file as a temporary file and passed through #line directives in order to 2457keep compiler error messages in sync with the input file and line number 2458across multiple include files. The (.i) is no longer a temporary file as 2459the compiler uses a new, different file for the original purpose. 2460 2461iASL: Fixed a problem where comments within the original ASL source code 2462file were not passed through to the preprocessor output file, nor any 2463listing files. 2464 2465iASL: Fixed some issues for the handling of the "#include" preprocessor 2466directive and the similar (but not the same) "Include" ASL operator. 2467 2468iASL: Add support for the new OSDT in both the disassembler and compiler. 2469 2470iASL: Fixed a problem with the constant folding support where a Buffer 2471object could be incorrectly generated (incorrectly formed) during a 2472conversion to a Store() operator. 2473 2474AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 2475description text for the _REV predefined name. _REV now permanently 2476returns 2, as per the ACPI 6.0 specification. 2477 2478Debugger: Enhanced the output of the Debug ASL object for references 2479produced by the Index operator. For Buffers and strings, only output the 2480actual byte pointed to by the index. For packages, only print the single 2481package element decoded by the index. Previously, the entire 2482buffer/string/package was emitted. 2483 2484iASL/Table-compiler: Fixed a regression where the "generic" data types 2485were no longer recognized, causing errors. 2486 2487 2488---------------------------------------- 248915 May 2015. Summary of changes for version 20150515: 2490 2491This release implements most of ACPI 6.0 as described below. 2492 24931) ACPICA kernel-resident subsystem: 2494 2495Implemented runtime argument checking and return value checking for all 2496new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 2497_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 2498 2499Example Code and Data Size: These are the sizes for the OS-independent 2500acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2501debug version of the code includes the debug output trace mechanism and 2502has a much larger code and data size. 2503 2504 Current Release: 2505 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 2506 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 2507 Previous Release: 2508 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 2509 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 2510 2511 25122) iASL Compiler/Disassembler and Tools: 2513 2514iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 2515names (argument count validation and return value typechecking.) 2516 2517iASL disassembler and table compiler: implemented support for all new 2518ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 2519 2520iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 2521tables: FADT, MADT. 2522 2523iASL preprocessor: Added a new directive to enable inclusion of binary 2524blobs into ASL code. The new directive is #includebuffer. It takes a 2525binary file as input and emits a named ascii buffer object into the ASL 2526code. 2527 2528AcpiHelp: Added support for all new ACPI 6.0 predefined names. 2529 2530AcpiHelp: Added a new option, -d, to display all iASL preprocessor 2531directives. 2532 2533AcpiHelp: Added a new option, -t, to display all known/supported ACPI 2534tables. 2535 2536 2537---------------------------------------- 253810 April 2015. Summary of changes for version 20150410: 2539 2540Reverted a change introduced in version 20150408 that caused 2541a regression in the disassembler where incorrect operator 2542symbols could be emitted. 2543 2544 2545---------------------------------------- 254608 April 2015. Summary of changes for version 20150408: 2547 2548 25491) ACPICA kernel-resident subsystem: 2550 2551Permanently set the return value for the _REV predefined name. It now 2552returns 2 (was 5). This matches other ACPI implementations. _REV will be 2553deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 2554for ACPI 2.0 and later. It should never be used to differentiate or 2555identify operating systems. 2556 2557Added the "Windows 2015" string to the _OSI support. ACPICA will now 2558return TRUE to a query with this string. 2559 2560Fixed several issues with the local version of the printf function. 2561 2562Added the C99 compiler option (-std=c99) to the Unix makefiles. 2563 2564 Current Release: 2565 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 2566 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 2567 Previous Release: 2568 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2569 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2570 2571 25722) iASL Compiler/Disassembler and Tools: 2573 2574iASL: Implemented an enhancement to the constant folding feature to 2575transform the parse tree to a simple Store operation whenever possible: 2576 Add (2, 3, X) ==> is converted to: Store (5, X) 2577 X = 2 + 3 ==> is converted to: Store (5, X) 2578 2579Updated support for the SLIC table (Software Licensing Description Table) 2580in both the Data Table compiler and the disassembler. The SLIC table 2581support now conforms to "Microsoft Software Licensing Tables (SLIC and 2582MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 2583following the ACPI header is now defined to be "Proprietary Data", and as 2584such, can only be entered or displayed as a hex data block. 2585 2586Implemented full support for the MSDM table as described in the document 2587above. Note: The format of MSDM is similar to SLIC. Any MSDM data 2588following the ACPI header is defined to be "Proprietary Data", and can 2589only be entered or displayed as a hex data block. 2590 2591Implemented the -Pn option for the iASL Table Compiler (was only 2592implemented for the ASL compiler). This option disables the iASL 2593preprocessor. 2594 2595Disassembler: For disassembly of Data Tables, added a comment field 2596around the Ascii equivalent data that is emitted as part of the "Raw 2597Table Data" block. This prevents the iASL Preprocessor from possible 2598confusion if/when the table is compiled. 2599 2600Disassembler: Added an option (-df) to force the disassembler to assume 2601that the table being disassembled contains valid AML. This feature is 2602useful for disassembling AML files that contain ACPI signatures other 2603than DSDT or SSDT (such as OEMx or other signatures). 2604 2605Changes for the EFI version of the tools: 26061) Fixed a build error/issue 26072) Fixed a cast warning 2608 2609iASL: Fixed a path issue with the __FILE__ operator by making the 2610directory prefix optional within the internal SplitInputFilename 2611function. 2612 2613Debugger: Removed some unused global variables. 2614 2615Tests: Updated the makefile for proper generation of the AAPITS suite. 2616 2617 2618---------------------------------------- 261904 February 2015. Summary of changes for version 20150204: 2620 2621ACPICA kernel-resident subsystem: 2622 2623Updated all ACPICA copyrights and signons to 2014. Added the 2014 2624copyright to all module headers and signons, including the standard Linux 2625header. This affects virtually every file in the ACPICA core subsystem, 2626iASL compiler, all ACPICA utilities, and the test suites. 2627 2628Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 2629A raw gpe handling mechanism was created to allow better handling of GPE 2630storms that aren't easily managed by the normal handler. The raw handler 2631allows disabling/renabling of the the GPE so that interrupt storms can be 2632avoided in cases where events cannot be timely serviced. In this 2633scenario, handlers should use the AcpiSetGpe() API to disable/enable the 2634GPE. This API will leave the reference counts undisturbed, thereby 2635preventing unintentional clearing of the GPE when the intent in only to 2636temporarily disable it. Raw handlers allow enabling and disabling of a 2637GPE by removing GPE register locking. As such, raw handlers much provide 2638their own locks while using GPE API's to protect access to GPE data 2639structures. 2640Lv Zheng 2641 2642Events: Always modify GPE registers under the GPE lock. 2643Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 2644values. Reported as bug by joe.liu@apple.com. 2645 2646Unix makefiles: Separate option to disable optimizations and 2647_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 2648NOOPT disable option and creates a separate flag (NOFORTIFY) for this 2649purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 2650errors when building ACPICA. This allows disabling the option without 2651also having to disable optimazations. 2652David Box 2653 2654 Current Release: 2655 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2656 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 2657 2658-- 2659-------------------------------------- 266007 November 2014. Summary of changes for version 20141107: 2661 2662This release is available at https://acpica.org/downloads 2663 2664This release introduces and implements language extensions to ASL that 2665provide support for symbolic ("C-style") operators and expressions. These 2666language extensions are known collectively as ASL+. 2667 2668 26691) iASL Compiler/Disassembler and Tools: 2670 2671Disassembler: Fixed a problem with disassembly of the UartSerialBus 2672macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 2673Box. 2674 2675Disassembler: Fixed the Unicode macro support to add escape sequences. 2676All non-printable ASCII values are emitted as escape sequences, as well 2677as the standard escapes for quote and backslash. Ensures that the 2678disassembled macro can be correctly recompiled. 2679 2680iASL: Added Printf/Fprintf macros for formatted output. These macros are 2681translated to existing AML Concatenate and Store operations. Printf 2682writes to the ASL Debug object. Fprintf allows the specification of an 2683ASL name as the target. Only a single format specifier is required, %o, 2684since the AML interpreter dynamically converts objects to the required 2685type. David E. Box. 2686 2687 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 2688 (Concatenate (Concatenate (Concatenate ("", Arg0), 2689 ": Unexpected value for "), Arg1), ", "), Arg2), 2690 " at line "), Arg3), Debug) 2691 2692 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 2693 Arg0, Arg1, Arg2, Arg3) 2694 2695 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 2696 ("", Arg1), ": "), Arg0), " Successful"), STR1) 2697 2698 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 2699 2700iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 2701ASL parse tree before the AML code is generated. This allows blocks of 2702ASL code to be removed in order to help locate and identify problem 2703devices and/or code. David E. Box. 2704 2705AcpiExec: Added support (-fi) for an optional namespace object 2706initialization file. This file specifies initial values for namespace 2707objects as necessary for debugging and testing different ASL code paths 2708that may be taken as a result of BIOS options. 2709 2710 27112) Overview of symbolic operator support for ASL (ASL+) 2712------------------------------------------------------- 2713 2714As an extension to the ASL language, iASL implements support for symbolic 2715(C-style) operators for math and logical expressions. This can greatly 2716simplify ASL code as well as improve both readability and 2717maintainability. These language extensions can exist concurrently with 2718all legacy ASL code and expressions. 2719 2720The symbolic extensions are 100% compatible with existing AML 2721interpreters, since no new AML opcodes are created. To implement the 2722extensions, the iASL compiler transforms the symbolic expressions into 2723the legacy ASL/AML equivalents at compile time. 2724 2725Full symbolic expressions are supported, along with the standard C 2726precedence and associativity rules. 2727 2728Full disassembler support for the symbolic expressions is provided, and 2729creates an automatic migration path for existing ASL code to ASL+ code 2730via the disassembly process. By default, the disassembler now emits ASL+ 2731code with symbolic expressions. An option (-dl) is provided to force the 2732disassembler to emit legacy ASL code if desired. 2733 2734Below is the complete list of the currently supported symbolic operators 2735with examples. See the iASL User Guide for additional information. 2736 2737 2738ASL+ Syntax Legacy ASL Equivalent 2739----------- --------------------- 2740 2741 // Math operators 2742 2743Z = X + Y Add (X, Y, Z) 2744Z = X - Y Subtract (X, Y, Z) 2745Z = X * Y Multiply (X, Y, Z) 2746Z = X / Y Divide (X, Y, , Z) 2747Z = X % Y Mod (X, Y, Z) 2748Z = X << Y ShiftLeft (X, Y, Z) 2749Z = X >> Y ShiftRight (X, Y, Z) 2750Z = X & Y And (X, Y, Z) 2751Z = X | Y Or (X, Y, Z) 2752Z = X ^ Y Xor (X, Y, Z) 2753Z = ~X Not (X, Z) 2754X++ Increment (X) 2755X-- Decrement (X) 2756 2757 // Logical operators 2758 2759(X == Y) LEqual (X, Y) 2760(X != Y) LNotEqual (X, Y) 2761(X < Y) LLess (X, Y) 2762(X > Y) LGreater (X, Y) 2763(X <= Y) LLessEqual (X, Y) 2764(X >= Y) LGreaterEqual (X, Y) 2765(X && Y) LAnd (X, Y) 2766(X || Y) LOr (X, Y) 2767(!X) LNot (X) 2768 2769 // Assignment and compound assignment operations 2770 2771X = Y Store (Y, X) 2772X += Y Add (X, Y, X) 2773X -= Y Subtract (X, Y, X) 2774X *= Y Multiply (X, Y, X) 2775X /= Y Divide (X, Y, , X) 2776X %= Y Mod (X, Y, X) 2777X <<= Y ShiftLeft (X, Y, X) 2778X >>= Y ShiftRight (X, Y, X) 2779X &= Y And (X, Y, X) 2780X |= Y Or (X, Y, X) 2781X ^= Y Xor (X, Y, X) 2782 2783 27843) ASL+ Examples: 2785----------------- 2786 2787Legacy ASL: 2788 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 2789 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 27900x03FB), 2791 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 2792 { 2793 And (MEMB, 0xFFFFFFF0, SRMB) 2794 Store (MEMB, Local2) 2795 Store (PDBM, Local1) 2796 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 2797 Store (SRMB, MEMB) 2798 Or (PDBM, 0x02, PDBM) 2799 } 2800 2801ASL+ version: 2802 If (((R510 & 0x03FB) == 0x02E0) || 2803 ((R520 & 0x03FB) == 0x02E0) || 2804 ((R530 & 0x03FB) == 0x02E0) || 2805 ((R540 & 0x03FB) == 0x02E0)) 2806 { 2807 SRMB = (MEMB & 0xFFFFFFF0) 2808 Local2 = MEMB 2809 Local1 = PDBM 2810 PDBM &= 0xFFFFFFFFFFFFFFF9 2811 MEMB = SRMB 2812 PDBM |= 0x02 2813 } 2814 2815Legacy ASL: 2816 Store (0x1234, Local1) 2817 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 2818 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 2819 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 2820 Store (Index (PKG1, 0x03), Local6) 2821 Store (Add (Local3, Local2), Debug) 2822 Add (Local1, 0x0F, Local2) 2823 Add (Local1, Multiply (Local2, Local3), Local2) 2824 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 2825 2826ASL+ version: 2827 Local1 = 0x1234 2828 Local3 = (((Local1 + TEST) + 0x20) * Local2) 2829 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 2830 Local3 = (Local1 + (TEST + (0x20 * Local2))) 2831 Local6 = Index (PKG1, 0x03) 2832 Debug = (Local3 + Local2) 2833 Local2 = (Local1 + 0x0F) 2834 Local2 = (Local1 + (Local2 * Local3)) 2835 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 2836 2837 2838---------------------------------------- 283926 September 2014. Summary of changes for version 20140926: 2840 28411) ACPICA kernel-resident subsystem: 2842 2843Updated the GPIO operation region handler interface (GeneralPurposeIo). 2844In order to support GPIO Connection objects with multiple pins, along 2845with the related Field objects, the following changes to the interface 2846have been made: The Address is now defined to be the offset in bits of 2847the field unit from the previous invocation of a Connection. It can be 2848viewed as a "Pin Number Index" into the connection resource descriptor. 2849The BitWidth is the exact bit width of the field. It is usually one bit, 2850but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 2851additional information and examples. 2852 2853GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 2854corresponding _Lxx/_Exx methods are disabled (they may have been enabled 2855by the firmware), so that they cannot fire until they are enabled via 2856AcpiUpdateAllGpes. Rafael J. Wysocki. 2857 2858Added a new return flag for the Event/GPE status interfaces -- 2859AcpiGetEventStatus and AcpiGetGpeStatus. The new 2860ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 2861GPE currently has a handler associated with it, and can thus actually 2862affect the system. Lv Zheng. 2863 2864Example Code and Data Size: These are the sizes for the OS-independent 2865acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2866debug version of the code includes the debug output trace mechanism and 2867has a much larger code and data size. 2868 2869 Current Release: 2870 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 2871 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 2872 Previous Release: 2873 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2874 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2875 28762) iASL Compiler/Disassembler and Tools: 2877 2878iASL: Fixed a memory allocation/free regression introduced in 20140828 2879that could cause the compiler to crash. This was introduced inadvertently 2880during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 28811113. 2882 2883iASL: Removed two error messages that have been found to create false 2884positives, until they can be fixed and fully validated (ACPICA BZ 1112): 28851) Illegal forward reference within a method 28862) Illegal reference across two methods 2887 2888iASL: Implemented a new option (-lm) to create a hardware mapping file 2889that summarizes all GPIO, I2C, SPI, and UART connections. This option 2890works for both the compiler and disassembler. See the iASL compiler user 2891guide for additional information and examples (section 6.4.6). 2892 2893AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 2894version 2. This corrects the AE_BAD_HEADER exception seen on systems with 2895a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 2896 2897AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 2898unless STDIN is actually a terminal. Assists with batch-mode processing. 2899ACPICA BZ 1114. 2900 2901Disassembler/AcpiHelp: Added another large group of recognized _HID 2902values. 2903 2904 2905---------------------------------------- 290628 August 2014. Summary of changes for version 20140828: 2907 29081) ACPICA kernel-resident subsystem: 2909 2910Fixed a problem related to the internal use of the Timer() operator where 2911a 64-bit divide could cause an attempted link to a double-precision math 2912library. This divide is not actually necessary, so the code was 2913restructured to eliminate it. Lv Zheng. 2914 2915ACPI 5.1: Added support for the runtime validation of the _DSD package 2916(similar to the iASL support). 2917 2918ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 2919SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 2920 2921Example Code and Data Size: These are the sizes for the OS-independent 2922acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2923debug version of the code includes the debug output trace mechanism and 2924has a much larger code and data size. 2925 2926 Current Release: 2927 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2928 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2929 Previous Release: 2930 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 2931 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 2932 29332) iASL Compiler/Disassembler and Tools: 2934 2935AcpiExec: Fixed a problem on unix systems where the original terminal 2936state was not always properly restored upon exit. Seen when using the -v 2937option. ACPICA BZ 1104. 2938 2939iASL: Fixed a problem with the validation of the ranges/length within the 2940Memory24 resource descriptor. There was a boundary condition when the 2941range was equal to the (length -1) caused by the fact that these values 2942are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 2943 2944Disassembler: Fixed a problem with the GpioInt descriptor interrupt 2945polarity 2946flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 2947is 2948now supported properly. 2949 2950ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 2951in the disassembler, data table compiler, and table template generator. 2952 2953iASL: Added a requirement for Device() objects that one of either a _HID 2954or _ADR must exist within the scope of a Device, as per the ACPI 2955specification. Remove a similar requirement that was incorrectly in place 2956for the _DSD object. 2957 2958iASL: Added error detection for illegal named references within control 2959methods that would cause runtime failures. Now trapped as errors are: 1) 2960References to objects within a non-parent control method. 2) Forward 2961references (within a method) -- for control methods, AML interpreters use 2962a one-pass parse of control methods. ACPICA BZ 1008. 2963 2964iASL: Added error checking for dependencies related to the _PSx power 2965methods. ACPICA BZ 1029. 29661) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 2967_PS3. 29682) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 2969scope. 2970 2971iASL and table compiler: Cleanup miscellaneous memory leaks by fully 2972deploying the existing object and string caches and adding new caches for 2973the table compiler. 2974 2975iASL: Split the huge parser source file into multiple subfiles to improve 2976manageability. Generation now requires the M4 macro preprocessor, which 2977is part of the Bison distribution on both unix and windows platforms. 2978 2979AcpiSrc: Fixed and removed all extraneous warnings generated during 2980entire ACPICA source code scan and/or conversion. 2981 2982 2983---------------------------------------- 2984 298524 July 2014. Summary of changes for version 20140724: 2986 2987The ACPI 5.1 specification has been released and is available at: 2988http://uefi.org/specs/access 2989 2990 29910) ACPI 5.1 support in ACPICA: 2992 2993ACPI 5.1 is fully supported in ACPICA as of this release. 2994 2995New predefined names. Support includes iASL and runtime ACPICA 2996validation. 2997 _CCA (Cache Coherency Attribute). 2998 _DSD (Device-Specific Data). David Box. 2999 3000Modifications to existing ACPI tables. Support includes headers, iASL 3001Data Table compiler, disassembler, and the template generator. 3002 FADT - New fields and flags. Graeme Gregory. 3003 GTDT - One new subtable and new fields. Tomasz Nowicki. 3004 MADT - Two new subtables. Tomasz Nowicki. 3005 PCCT - One new subtable. 3006 3007Miscellaneous. 3008 New notification type for System Resource Affinity change events. 3009 3010 30111) ACPICA kernel-resident subsystem: 3012 3013Fixed a regression introduced in 20140627 where a fault can happen during 3014the deletion of Alias AML namespace objects. The problem affected both 3015the core ACPICA and the ACPICA tools including iASL and AcpiExec. 3016 3017Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 3018simple mechanism to enable wake GPEs that have no associated handler or 3019control method. Rafael Wysocki. 3020 3021Updated the AcpiEnableGpe interface to disallow the enable if there is no 3022handler or control method associated with the particular GPE. This will 3023help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 3024 3025Updated GPE handling and dispatch by disabling the GPE before clearing 3026the status bit for edge-triggered GPEs. Lv Zheng. 3027 3028Added Timer() support to the AML Debug object. The current timer value is 3029now displayed with each invocation of (Store to) the debug object to 3030enable simple generation of execution times for AML code (method 3031execution for example.) ACPICA BZ 1093. 3032 3033Example Code and Data Size: These are the sizes for the OS-independent 3034acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3035debug version of the code includes the debug output trace mechanism and 3036has a much larger code and data size. 3037 3038 Current Release: 3039 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 3040 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 3041 Previous Release: 3042 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 3043 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 3044 3045 30462) iASL Compiler/Disassembler and Tools: 3047 3048Fixed an issue with the recently added local printf implementation, 3049concerning width/precision specifiers that could cause incorrect output. 3050Lv Zheng. ACPICA BZ 1094. 3051 3052Disassembler: Added support to detect buffers that contain UUIDs and 3053disassemble them to an invocation of the ToUUID operator. Also emit 3054commented descriptions of known ACPI-related UUIDs. 3055 3056AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 3057-u. Adds three new files. 3058 3059iASL: Update table compiler and disassembler for DMAR table changes that 3060were introduced in September 2013. With assistance by David Woodhouse. 3061 3062---------------------------------------- 306327 June 2014. Summary of changes for version 20140627: 3064 30651) ACPICA kernel-resident subsystem: 3066 3067Formatted Output: Implemented local versions of standard formatted output 3068utilities such as printf, etc. Over time, it has been discovered that 3069there are in fact many portability issues with printf, and the addition 3070of this feature will fix/prevent these issues once and for all. Some 3071known issues are summarized below: 3072 30731) Output of 64-bit values is not portable. For example, UINT64 is %ull 3074for the Linux kernel and is %uI64 for some MSVC versions. 30752) Invoking printf consistently in a manner that is portable across both 307632-bit and 64-bit platforms is difficult at best in many situations. 30773) The output format for pointers varies from system to system (leading 3078zeros especially), and leads to inconsistent output from ACPICA across 3079platforms. 30804) Certain platform-specific printf formats may conflict with ACPICA use. 30815) If there is no local C library available, ACPICA now has local support 3082for printf. 3083 3084-- To address these printf issues in a complete manner, ACPICA now 3085directly implements a small subset of printf format specifiers, only 3086those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 3087 3088Implemented support for ACPICA generation within the EFI environment. 3089Initially, the AcpiDump utility is supported in the UEFI shell 3090environment. Lv Zheng. 3091 3092Added a new external interface, AcpiLogError, to improve ACPICA 3093portability. This allows the host to redirect error messages from the 3094ACPICA utilities. Lv Zheng. 3095 3096Added and deployed new OSL file I/O interfaces to improve ACPICA 3097portability: 3098 AcpiOsOpenFile 3099 AcpiOsCloseFile 3100 AcpiOsReadFile 3101 AcpiOsWriteFile 3102 AcpiOsGetFileOffset 3103 AcpiOsSetFileOffset 3104There are C library implementations of these functions in the new file 3105service_layers/oslibcfs.c -- however, the functions can be implemented by 3106the local host in any way necessary. Lv Zheng. 3107 3108Implemented a mechanism to disable/enable ACPI table checksum validation 3109at runtime. This can be useful when loading tables very early during OS 3110initialization when it may not be possible to map the entire table in 3111order to compute the checksum. Lv Zheng. 3112 3113Fixed a buffer allocation issue for the Generic Serial Bus support. 3114Originally, a fixed buffer length was used. This change allows for 3115variable-length buffers based upon the protocol indicated by the field 3116access attributes. Reported by Lan Tianyu. Lv Zheng. 3117 3118Fixed a problem where an object detached from a namespace node was not 3119properly terminated/cleared and could cause a circular list problem if 3120reattached. ACPICA BZ 1063. David Box. 3121 3122Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 3123 3124Fixed a possible memory leak in an error return path within the function 3125AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 3126 3127Example Code and Data Size: These are the sizes for the OS-independent 3128acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3129debug version of the code includes the debug output trace mechanism and 3130has a much larger code and data size. 3131 3132 Current Release: 3133 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 3134 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 3135 Previous Release: 3136 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3137 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3138 3139 31402) iASL Compiler/Disassembler and Tools: 3141 3142Disassembler: Add dump of ASCII equivalent text within a comment at the 3143end of each line of the output for the Buffer() ASL operator. 3144 3145AcpiDump: Miscellaneous changes: 3146 Fixed repetitive table dump in -n mode. 3147 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 3148the ACPI 2.0 GUID fails. 3149 3150iASL: Fixed a problem where the compiler could fault if incorrectly given 3151an acpidump output file as input. ACPICA BZ 1088. David Box. 3152 3153AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 3154they are invoked without any arguments. 3155 3156Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 31571086. Colin Ian King. 3158 3159Disassembler: Cleaned up a block of code that extracts a parent Op 3160object. Added a comment that explains that the parent is guaranteed to be 3161valid in this case. ACPICA BZ 1069. 3162 3163 3164---------------------------------------- 316524 April 2014. Summary of changes for version 20140424: 3166 31671) ACPICA kernel-resident subsystem: 3168 3169Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 3170Some of these tables are known to contain a trailing NULL entry. Lv 3171Zheng. 3172 3173Removed an extraneous error message for the case where there are a large 3174number of system GPEs (> 124). This was the "32-bit FADT register is too 3175long to convert to GAS struct" message, which is irrelevant for GPEs 3176since the GPEx_BLK_LEN fields of the FADT are always used instead of the 3177(limited capacity) GAS bit length. Also, several changes to ensure proper 3178support for GPE numbers > 255, where some "GPE number" fields were 8-bits 3179internally. 3180 3181Implemented and deployed additional configuration support for the public 3182ACPICA external interfaces. Entire classes of interfaces can now be 3183easily modified or configured out, replaced by stubbed inline functions 3184by default. Lv Zheng. 3185 3186Moved all public ACPICA runtime configuration globals to the public 3187ACPICA external interface file for convenience. Also, removed some 3188obsolete/unused globals. See the file acpixf.h. Lv Zheng. 3189 3190Documentation: Added a new section to the ACPICA reference describing the 3191maximum number of GPEs that can be supported by the FADT-defined GPEs in 3192block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 3193reference. 3194 3195Example Code and Data Size: These are the sizes for the OS-independent 3196acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3197debug version of the code includes the debug output trace mechanism and 3198has a much larger code and data size. 3199 3200 Current Release: 3201 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3202 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3203 Previous Release: 3204 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3205 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3206 3207 32082) iASL Compiler/Disassembler and Tools: 3209 3210iASL and disassembler: Add full support for the LPIT table (Low Power 3211Idle Table). Includes support in the disassembler, data table compiler, 3212and template generator. 3213 3214AcpiDump utility: 32151) Add option to force the use of the RSDT (over the XSDT). 32162) Improve validation of the RSDP signature (use 8 chars instead of 4). 3217 3218iASL: Add check for predefined packages that are too large. For 3219predefined names that contain subpackages, check if each subpackage is 3220too large. (Check for too small already exists.) 3221 3222Debugger: Updated the GPE command (which simulates a GPE by executing the 3223GPE code paths in ACPICA). The GPE device is now optional, and defaults 3224to the GPE 0/1 FADT-defined blocks. 3225 3226Unix application OSL: Update line-editing support. Add additional error 3227checking and take care not to reset terminal attributes on exit if they 3228were never set. This should help guarantee that the terminal is always 3229left in the previous state on program exit. 3230 3231 3232---------------------------------------- 323325 March 2014. Summary of changes for version 20140325: 3234 32351) ACPICA kernel-resident subsystem: 3236 3237Updated the auto-serialize feature for control methods. This feature 3238automatically serializes all methods that create named objects in order 3239to prevent runtime errors. The update adds support to ignore the 3240currently executing AML SyncLevel when invoking such a method, in order 3241to prevent disruption of any existing SyncLevel priorities that may exist 3242in the AML code. Although the use of SyncLevels is relatively rare, this 3243change fixes a regression where an AE_AML_MUTEX_ORDER exception can 3244appear on some machines starting with the 20140214 release. 3245 3246Added a new external interface to allow the host to install ACPI tables 3247very early, before the namespace is even created. AcpiInstallTable gives 3248the host additional flexibility for ACPI table management. Tables can be 3249installed directly by the host as if they had originally appeared in the 3250XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 3251(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 3252with additional internal restructuring and cleanup. See the ACPICA 3253Reference for interface details. Lv Zheng. 3254 3255Added validation of the checksum for all incoming dynamically loaded 3256tables (via external interfaces or via AML Load/LoadTable operators). Lv 3257Zheng. 3258 3259Updated the use of the AcpiOsWaitEventsComplete interface during Notify 3260and GPE handler removal. Restructured calls to eliminate possible race 3261conditions. Lv Zheng. 3262 3263Added a warning for the use/execution of the ASL/AML Unload (table) 3264operator. This will help detect and identify machines that use this 3265operator if and when it is ever used. This operator has never been seen 3266in the field and the usage model and possible side-effects of the drastic 3267runtime action of a full table removal are unknown. 3268 3269Reverted the use of #pragma push/pop which was introduced in the 20140214 3270release. It appears that push and pop are not implemented by enough 3271compilers to make the use of this feature feasible for ACPICA at this 3272time. However, these operators may be deployed in a future ACPICA 3273release. 3274 3275Added the missing EXPORT_SYMBOL macros for the install and remove SCI 3276handler interfaces. 3277 3278Source code generation: 32791) Disabled the use of the "strchr" macro for the gcc-specific 3280generation. For some versions of gcc, this macro can periodically expose 3281a compiler bug which in turn causes compile-time error(s). 32822) Added support for PPC64 compilation. Colin Ian King. 3283 3284Example Code and Data Size: These are the sizes for the OS-independent 3285acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3286debug version of the code includes the debug output trace mechanism and 3287has a much larger code and data size. 3288 3289 Current Release: 3290 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3291 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3292 Previous Release: 3293 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3294 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3295 3296 32972) iASL Compiler/Disassembler and Tools: 3298 3299Disassembler: Added several new features to improve the readability of 3300the resulting ASL code. Extra information is emitted within comment 3301fields in the ASL code: 33021) Known _HID/_CID values are decoded to descriptive text. 33032) Standard values for the Notify() operator are decoded to descriptive 3304text. 33053) Target operands are expanded to full pathnames (in a comment) when 3306possible. 3307 3308Disassembler: Miscellaneous updates for extern() handling: 33091) Abort compiler if file specified by -fe option does not exist. 33102) Silence unnecessary warnings about argument count mismatches. 33113) Update warning messages concerning unresolved method externals. 33124) Emit "UnknownObj" keyword for externals whose type cannot be 3313determined. 3314 3315AcpiHelp utility: 33161) Added the -a option to display both the ASL syntax and the AML 3317encoding for an input ASL operator. This effectively displays all known 3318information about an ASL operator with one AcpiHelp invocation. 33192) Added substring match support (similar to a wildcard) for the -i 3320(_HID/PNP IDs) option. 3321 3322iASL/Disassembler: Since this tool does not yet support execution on big- 3323endian machines, added detection of endianness and an error message if 3324execution is attempted on big-endian. Support for big-endian within iASL 3325is a feature that is on the ACPICA to-be-done list. 3326 3327AcpiBin utility: 33281) Remove option to extract binary files from an acpidump; this function 3329is made obsolete by the AcpiXtract utility. 33302) General cleanup of open files and allocated buffers. 3331 3332 3333---------------------------------------- 333414 February 2014. Summary of changes for version 20140214: 3335 33361) ACPICA kernel-resident subsystem: 3337 3338Implemented a new mechanism to proactively prevent problems with ill- 3339behaved reentrant control methods that create named ACPI objects. This 3340behavior is illegal as per the ACPI specification, but is nonetheless 3341frequently seen in the field. Previously, this could lead to an 3342AE_ALREADY_EXISTS exception if the method was actually entered by more 3343than one thread. This new mechanism detects such methods at table load 3344time and marks them "serialized" to prevent reentrancy. A new global 3345option, AcpiGbl_AutoSerializeMethods, has been added to disable this 3346feature if desired. This mechanism and global option obsoletes and 3347supersedes the previous AcpiGbl_SerializeAllMethods option. 3348 3349Added the "Windows 2013" string to the _OSI support. ACPICA will now 3350respond TRUE to _OSI queries with this string. It is the stated policy of 3351ACPICA to add new strings to the _OSI support as soon as possible after 3352they are defined. See the full ACPICA _OSI policy which has been added to 3353the utilities/utosi.c file. 3354 3355Hardened/updated the _PRT return value auto-repair code: 33561) Do not abort the repair on a single subpackage failure, continue to 3357check all subpackages. 33582) Add check for the minimum subpackage length (4). 33593) Properly handle extraneous NULL package elements. 3360 3361Added support to avoid the possibility of infinite loops when traversing 3362object linked lists. Never allow an infinite loop, even in the face of 3363corrupted object lists. 3364 3365ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 3366pack(pop) directives to ensure that the ACPICA headers are independent of 3367compiler settings or other host headers. 3368 3369Example Code and Data Size: These are the sizes for the OS-independent 3370acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3371debug version of the code includes the debug output trace mechanism and 3372has a much larger code and data size. 3373 3374 Current Release: 3375 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3376 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3377 Previous Release: 3378 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 3379 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 3380 3381 33822) iASL Compiler/Disassembler and Tools: 3383 3384iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 3385first reserved field was incorrectly forced to have a value of zero. This 3386change correctly forces the field to have a value of one. ACPICA BZ 1081. 3387 3388Debugger: Added missing support for the "Extra" and "Data" subobjects 3389when displaying object data. 3390 3391Debugger: Added support to display entire object linked lists when 3392displaying object data. 3393 3394iASL: Removed the obsolete -g option to obtain ACPI tables from the 3395Windows registry. This feature has been superseded by the acpidump 3396utility. 3397 3398 3399---------------------------------------- 340014 January 2014. Summary of changes for version 20140114: 3401 34021) ACPICA kernel-resident subsystem: 3403 3404Updated all ACPICA copyrights and signons to 2014. Added the 2014 3405copyright to all module headers and signons, including the standard Linux 3406header. This affects virtually every file in the ACPICA core subsystem, 3407iASL compiler, all ACPICA utilities, and the test suites. 3408 3409Improved parameter validation for AcpiInstallGpeBlock. Added the 3410following checks: 34111) The incoming device handle refers to type ACPI_TYPE_DEVICE. 34122) There is not already a GPE block attached to the device. 3413Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 3414device. 3415 3416Correctly support "references" in the ACPI_OBJECT. This change fixes the 3417support to allow references (namespace nodes) to be passed as arguments 3418to control methods via the evaluate object interface. This is probably 3419most useful for testing purposes, however. 3420 3421Improved support for 32/64 bit physical addresses in printf()-like 3422output. This change improves the support for physical addresses in printf 3423debug statements and other output on both 32-bit and 64-bit hosts. It 3424consistently outputs the appropriate number of bytes for each host. The 3425%p specifier is unsatisfactory since it does not emit uniform output on 3426all hosts/clib implementations (on some, leading zeros are not supported, 3427leading to difficult-to-read output). 3428 3429Example Code and Data Size: These are the sizes for the OS-independent 3430acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3431debug version of the code includes the debug output trace mechanism and 3432has a much larger code and data size. 3433 3434 Current Release: 3435 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 3436 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 3437 Previous 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 3441 34422) iASL Compiler/Disassembler and Tools: 3443 3444iASL: Fix a possible fault when using the Connection() operator. Fixes a 3445problem if the parent Field definition for the Connection operator refers 3446to an operation region that does not exist. ACPICA BZ 1064. 3447 3448AcpiExec: Load of local test tables is now optional. The utility has the 3449capability to load some various tables to test features of ACPICA. 3450However, there are enough of them that the output of the utility became 3451confusing. With this change, only the required local tables are displayed 3452(RSDP, XSDT, etc.) along with the actual tables loaded via the command 3453line specification. This makes the default output simler and easier to 3454understand. The -el command line option restores the original behavior 3455for testing purposes. 3456 3457AcpiExec: Added support for overlapping operation regions. This change 3458expands the simulation of operation regions by supporting regions that 3459overlap within the given address space. Supports SystemMemory and 3460SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 3461 3462AcpiExec: Added region handler support for PCI_Config and EC spaces. This 3463allows AcpiExec to simulate these address spaces, similar to the current 3464support for SystemMemory and SystemIO. 3465 3466Debugger: Added new command to read/write/compare all namespace objects. 3467The command "test objects" will exercise the entire namespace by writing 3468new values to each data object, and ensuring that the write was 3469successful. The original value is then restored and verified. 3470 3471Debugger: Added the "test predefined" command. This change makes this 3472test public and puts it under the new "test" command. The test executes 3473each and every predefined name within the current namespace. 3474 3475 3476---------------------------------------- 347718 December 2013. Summary of changes for version 20131218: 3478 3479Global note: The ACPI 5.0A specification was released this month. There 3480are no changes needed for ACPICA since this release of ACPI is an 3481errata/clarification release. The specification is available at 3482acpi.info. 3483 3484 34851) ACPICA kernel-resident subsystem: 3486 3487Added validation of the XSDT root table if it is present. Some older 3488platforms contain an XSDT that is ill-formed or otherwise invalid (such 3489as containing some or all entries that are NULL pointers). This change 3490adds a new function to validate the XSDT before actually using it. If the 3491XSDT is found to be invalid, ACPICA will now automatically fall back to 3492using the RSDT instead. Original implementation by Zhao Yakui. Ported to 3493ACPICA and enhanced by Lv Zheng and Bob Moore. 3494 3495Added a runtime option to ignore the XSDT and force the use of the RSDT. 3496This change adds a runtime option that will force ACPICA to use the RSDT 3497instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 3498requires that an XSDT be used instead of the RSDT, the XSDT has been 3499found to be corrupt or ill-formed on some machines. Lv Zheng. 3500 3501Added a runtime option to favor 32-bit FADT register addresses over the 350264-bit addresses. This change adds an option to favor 32-bit FADT 3503addresses when there is a conflict between the 32-bit and 64-bit versions 3504of the same register. The default behavior is to use the 64-bit version 3505in accordance with the ACPI specification. This can now be overridden via 3506the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 3507 3508During the change above, the internal "Convert FADT" and "Verify FADT" 3509functions have been merged to simplify the code, making it easier to 3510understand and maintain. ACPICA BZ 933. 3511 3512Improve exception reporting and handling for GPE block installation. 3513Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 3514status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 3515 3516Added helper macros to extract bus/segment numbers from the HEST table. 3517This change adds two macros to extract the encoded bus and segment 3518numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 3519Betty Dall <betty.dall@hp.com> 3520 3521Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 3522by ACPICA. It is not a public macro, so it should have no effect on 3523existing OSV code. Lv Zheng. 3524 3525Example Code and Data Size: These are the sizes for the OS-independent 3526acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3527debug version of the code includes the debug output trace mechanism and 3528has a much larger code and data size. 3529 3530 Current Release: 3531 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 3532 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 3533 Previous Release: 3534 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 3535 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 3536 3537 35382) iASL Compiler/Disassembler and Tools: 3539 3540Disassembler: Improved pathname support for emitted External() 3541statements. This change adds full pathname support for external names 3542that have been resolved internally by the inclusion of additional ACPI 3543tables (via the iASL -e option). Without this change, the disassembler 3544can emit multiple externals for the same object, or it become confused 3545when the Scope() operator is used on an external object. Overall, greatly 3546improves the ability to actually recompile the emitted ASL code when 3547objects a referenced across multiple ACPI tables. Reported by Michael 3548Tsirkin (mst@redhat.com). 3549 3550Tests/ASLTS: Updated functional control suite to execute with no errors. 3551David Box. Fixed several errors related to the testing of the interpreter 3552slack mode. Lv Zheng. 3553 3554iASL: Added support to detect names that are declared within a control 3555method, but are unused (these are temporary names that are only valid 3556during the time the method is executing). A remark is issued for these 3557cases. ACPICA BZ 1022. 3558 3559iASL: Added full support for the DBG2 table. Adds full disassembler, 3560table compiler, and template generator support for the DBG2 table (Debug 3561Port 2 table). 3562 3563iASL: Added full support for the PCCT table, update the table definition. 3564Updates the PCCT table definition in the actbl3.h header and adds table 3565compiler and template generator support. 3566 3567iASL: Added an option to emit only error messages (no warnings/remarks). 3568The -ve option will enable only error messages, warnings and remarks are 3569suppressed. This can simplify debugging when only the errors are 3570important, such as when an ACPI table is disassembled and there are many 3571warnings and remarks -- but only the actual errors are of real interest. 3572 3573Example ACPICA code (source/tools/examples): Updated the example code so 3574that it builds to an actual working program, not just example code. Added 3575ACPI tables and execution of an example control method in the DSDT. Added 3576makefile support for Unix generation. 3577 3578 3579---------------------------------------- 358015 November 2013. Summary of changes for version 20131115: 3581 3582This release is available at https://acpica.org/downloads 3583 3584 35851) ACPICA kernel-resident subsystem: 3586 3587Resource Manager: Fixed loop termination for the "get AML length" 3588function. The loop previously had an error termination on a NULL resource 3589pointer, which can never happen since the loop simply increments a valid 3590resource pointer. This fix changes the loop to terminate with an error on 3591an invalid end-of-buffer condition. The problem can be seen as an 3592infinite loop by callers to AcpiSetCurrentResources with an invalid or 3593corrupted resource descriptor, or a resource descriptor that is missing 3594an END_TAG descriptor. Reported by Dan Carpenter 3595<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 3596 3597Table unload and ACPICA termination: Delete all attached data objects 3598during namespace node deletion. This fix updates namespace node deletion 3599to delete the entire list of attached objects (attached via 3600AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 36011024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 3602 3603ACPICA termination: Added support to delete all objects attached to the 3604root namespace node. This fix deletes any and all objects that have been 3605attached to the root node via AcpiAttachData. Previously, none of these 3606objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 3607 3608Debug output: Do not emit the function nesting level for the in-kernel 3609build. The nesting level is really only useful during a single-thread 3610execution. Therefore, only enable this output for the AcpiExec utility. 3611Also, only emit the thread ID when executing under AcpiExec (Context 3612switches are still always detected and a message is emitted). ACPICA BZ 3613972. 3614 3615Example Code and Data Size: These are the sizes for the OS-independent 3616acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3617debug version of the code includes the debug output trace mechanism and 3618has a much larger code and data size. 3619 3620 Current Release: 3621 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 3622 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 3623 Previous Release: 3624 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 3625 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 3626 3627 36282) iASL Compiler/Disassembler and Tools: 3629 3630AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 3631correct portable POSIX header for terminal control functions. 3632 3633Disassembler: Fixed control method invocation issues related to the use 3634of the CondRefOf() operator. The problem is seen in the disassembly where 3635control method invocations may not be disassembled properly if the 3636control method name has been used previously as an argument to CondRefOf. 3637The solution is to not attempt to emit an external declaration for the 3638CondRefOf target (it is not necessary in the first place). This prevents 3639disassembler object type confusion. ACPICA BZ 988. 3640 3641Unix Makefiles: Added an option to disable compiler optimizations and the 3642_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 3643with optimizations (reportedly, gcc 4.4 for example). This change adds a 3644command line option for make (NOOPT) that disables all compiler 3645optimizations and the _FORTIFY_SOURCE compiler flag. The default 3646optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 36471034. Lv Zheng, Bob Moore. 3648 3649Tests/ASLTS: Added options to specify individual test cases and modes. 3650This allows testers running aslts.sh to optionally specify individual 3651test modes and test cases. Also added an option to disable the forced 3652generation of the ACPICA tools from source if desired. Lv Zheng. 3653 3654---------------------------------------- 365527 September 2013. Summary of changes for version 20130927: 3656 3657This release is available at https://acpica.org/downloads 3658 3659 36601) ACPICA kernel-resident subsystem: 3661 3662Fixed a problem with store operations to reference objects. This change 3663fixes a problem where a Store operation to an ArgX object that contained 3664a 3665reference to a field object did not complete the automatic dereference 3666and 3667then write to the actual field object. Instead, the object type of the 3668field object was inadvertently changed to match the type of the source 3669operand. The new behavior will actually write to the field object (buffer 3670field or field unit), thus matching the correct ACPI-defined behavior. 3671 3672Implemented support to allow the host to redefine individual OSL 3673prototypes. This change enables the host to redefine OSL prototypes found 3674in the acpiosxf.h file. This allows the host to implement OSL interfaces 3675with a macro or inlined function. Further, it allows the host to add any 3676additional required modifiers such as __iomem, __init, __exit, etc., as 3677necessary on a per-interface basis. Enables maximum flexibility for the 3678OSL interfaces. Lv Zheng. 3679 3680Hardcoded the access width for the FADT-defined reset register. The ACPI 3681specification requires the reset register width to be 8 bits. ACPICA now 3682hardcodes the width to 8 and ignores the FADT width value. This provides 3683compatibility with other ACPI implementations that have allowed BIOS code 3684with bad register width values to go unnoticed. Matthew Garett, Bob 3685Moore, 3686Lv Zheng. 3687 3688Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 3689used 3690in the OSL header (acpiosxf). The change modifies the position of this 3691macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 3692build issues if the OSL defines the implementation of the interface to be 3693an inline stub function. Lv Zheng. 3694 3695Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 3696initialization interfaces. This change adds a new macro for the main init 3697and terminate external interfaces in order to support hosts that require 3698additional or different processing for these functions. Changed from 3699ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 3700Zheng, Bob Moore. 3701 3702Cleaned up the memory allocation macros for configurability. In the 3703common 3704case, the ACPI_ALLOCATE and related macros now resolve directly to their 3705respective AcpiOs* OSL interfaces. Two options: 37061) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 3707default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 37082) For AcpiExec (and for debugging), the macros can optionally be 3709resolved 3710to the local ACPICA interfaces that track each allocation (local tracking 3711is used to immediately detect memory leaks). 3712Lv Zheng. 3713 3714Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 3715to predefine this macro to either TRUE or FALSE during the system build. 3716 3717Replaced __FUNCTION_ with __func__ in the gcc-specific header. 3718 3719Example Code and Data Size: These are the sizes for the OS-independent 3720acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3721debug version of the code includes the debug output trace mechanism and 3722has a much larger code and data size. 3723 3724 Current Release: 3725 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 3726 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 3727 Previous Release: 3728 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 3729 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3730 3731 37322) iASL Compiler/Disassembler and Tools: 3733 3734iASL: Implemented wildcard support for the -e option. This simplifies use 3735when there are many SSDTs that must be included to resolve external 3736method 3737declarations. ACPICA BZ 1041. Example: 3738 iasl -e ssdt*.dat -d dsdt.dat 3739 3740AcpiExec: Add history/line-editing for Unix/Linux systems. This change 3741adds a portable module that implements full history and limited line 3742editing for Unix and Linux systems. It does not use readline() due to 3743portability issues. Instead it uses the POSIX termio interface to put the 3744terminal in raw input mode so that the various special keys can be 3745trapped 3746(such as up/down-arrow for history support and left/right-arrow for line 3747editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 3748 3749AcpiXtract: Add support to handle (ignore) "empty" lines containing only 3750one or more spaces. This provides compatible with early or different 3751versions of the AcpiDump utility. ACPICA BZ 1044. 3752 3753AcpiDump: Do not ignore tables that contain only an ACPI table header. 3754Apparently, some BIOSs create SSDTs that contain an ACPI table header but 3755no other data. This change adds support to dump these tables. Any tables 3756shorter than the length of an ACPI table header remain in error (an error 3757message is emitted). Reported by Yi Li. 3758 3759Debugger: Echo actual command along with the "unknown command" message. 3760 3761---------------------------------------- 376223 August 2013. Summary of changes for version 20130823: 3763 37641) ACPICA kernel-resident subsystem: 3765 3766Implemented support for host-installed System Control Interrupt (SCI) 3767handlers. Certain ACPI functionality requires the host to handle raw 3768SCIs. For example, the "SCI Doorbell" that is defined for memory power 3769state support requires the host device driver to handle SCIs to examine 3770if the doorbell has been activated. Multiple SCI handlers can be 3771installed to allow for future expansion. New external interfaces are 3772AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 3773details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 3774 3775Operation region support: Never locally free the handler "context" 3776pointer. This change removes some dangerous code that attempts to free 3777the handler context pointer in some (rare) circumstances. The owner of 3778the handler owns this pointer and the ACPICA code should never touch it. 3779Although not seen to be an issue in any kernel, it did show up as a 3780problem (fault) under AcpiExec. Also, set the internal storage field for 3781the context pointer to zero when the region is deactivated, simply for 3782sanity. David Box. ACPICA BZ 1039. 3783 3784AcpiRead: On error, do not modify the return value target location. If an 3785error happens in the middle of a split 32/32 64-bit I/O operation, do not 3786modify the target of the return value pointer. Makes the code consistent 3787with the rest of ACPICA. Bjorn Helgaas. 3788 3789Example Code and Data Size: These are the sizes for the OS-independent 3790acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3791debug version of the code includes the debug output trace mechanism and 3792has a much larger code and data size. 3793 3794 Current Release: 3795 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 3796 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3797 Previous Release: 3798 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 3799 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 3800 3801 38022) iASL Compiler/Disassembler and Tools: 3803 3804AcpiDump: Implemented several new features and fixed some problems: 38051) Added support to dump the RSDP, RSDT, and XSDT tables. 38062) Added support for multiple table instances (SSDT, UEFI). 38073) Added option to dump "customized" (overridden) tables (-c). 38084) Fixed a problem where some table filenames were improperly 3809constructed. 38105) Improved some error messages, removed some unnecessary messages. 3811 3812iASL: Implemented additional support for disassembly of ACPI tables that 3813contain invocations of external control methods. The -fe<file> option 3814allows the import of a file that specifies the external methods along 3815with the required number of arguments for each -- allowing for the 3816correct disassembly of the table. This is a workaround for a limitation 3817of AML code where the disassembler often cannot determine the number of 3818arguments required for an external control method and generates incorrect 3819ASL code. See the iASL reference for details. ACPICA BZ 1030. 3820 3821Debugger: Implemented a new command (paths) that displays the full 3822pathnames (namepaths) and object types of all objects in the namespace. 3823This is an alternative to the namespace command. 3824 3825Debugger: Implemented a new command (sci) that invokes the SCI dispatch 3826mechanism and any installed handlers. 3827 3828iASL: Fixed a possible segfault for "too many parent prefixes" condition. 3829This can occur if there are too many parent prefixes in a namepath (for 3830example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 3831 3832Application OSLs: Set the return value for the PCI read functions. These 3833functions simply return AE_OK, but should set the return value to zero 3834also. This change implements this. ACPICA BZ 1038. 3835 3836Debugger: Prevent possible command line buffer overflow. Increase the 3837size of a couple of the debugger line buffers, and ensure that overflow 3838cannot happen. ACPICA BZ 1037. 3839 3840iASL: Changed to abort immediately on serious errors during the parsing 3841phase. Due to the nature of ASL, there is no point in attempting to 3842compile these types of errors, and they typically end up causing a 3843cascade of hundreds of errors which obscure the original problem. 3844 3845---------------------------------------- 384625 July 2013. Summary of changes for version 20130725: 3847 38481) ACPICA kernel-resident subsystem: 3849 3850Fixed a problem with the DerefOf operator where references to FieldUnits 3851and BufferFields incorrectly returned the parent object, not the actual 3852value of the object. After this change, a dereference of a FieldUnit 3853reference results in a read operation on the field to get the value, and 3854likewise, the appropriate BufferField value is extracted from the target 3855buffer. 3856 3857Fixed a problem where the _WAK method could cause a fault under these 3858circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 3859method returned no value. The problem is rarely seen because most kernels 3860run ACPICA in slack mode. 3861 3862For the DerefOf operator, a fatal error now results if an attempt is made 3863to dereference a reference (created by the Index operator) to a NULL 3864package element. Provides compatibility with other ACPI implementations, 3865and this behavior will be added to a future version of the ACPI 3866specification. 3867 3868The ACPI Power Management Timer (defined in the FADT) is now optional. 3869This provides compatibility with other ACPI implementations and will 3870appear in the next version of the ACPI specification. If there is no PM 3871Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 3872zero in the FADT indicates no PM timer. 3873 3874Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 3875allows the host to globally enable/disable all vendor strings, all 3876feature strings, or both. Intended to be primarily used for debugging 3877purposes only. Lv Zheng. 3878 3879Expose the collected _OSI data to the host via a global variable. This 3880data tracks the highest level vendor ID that has been invoked by the BIOS 3881so that the host (and potentially ACPICA itself) can change behaviors 3882based upon the age of the BIOS. 3883 3884Example Code and Data Size: These are the sizes for the OS-independent 3885acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3886debug version of the code includes the debug output trace mechanism and 3887has a much larger code and data size. 3888 3889 Current Release: 3890 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 3891 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3892 Previous Release: 3893 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 3894 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 3895 3896 38972) iASL Compiler/Disassembler and Tools: 3898 3899iASL: Created the following enhancements for the -so option (create 3900offset table): 39011)Add offsets for the last nameseg in each namepath for every supported 3902object type 39032)Add support for Processor, Device, Thermal Zone, and Scope objects 39043)Add the actual AML opcode for the parent object of every supported 3905object type 39064)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 3907 3908Disassembler: Emit all unresolved external symbols in a single block. 3909These are external references to control methods that could not be 3910resolved, and thus, the disassembler had to make a guess at the number of 3911arguments to parse. 3912 3913iASL: The argument to the -T option (create table template) is now 3914optional. If not specified, the default table is a DSDT, typically the 3915most common case. 3916 3917---------------------------------------- 391826 June 2013. Summary of changes for version 20130626: 3919 39201) ACPICA kernel-resident subsystem: 3921 3922Fixed an issue with runtime repair of the _CST object. Null or invalid 3923elements were not always removed properly. Lv Zheng. 3924 3925Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 3926FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 3927the maximum number of GPEs is 1016. Use of multiple GPE block devices 3928makes the system-wide number of GPEs essentially unlimited. 3929 3930Example Code and Data Size: These are the sizes for the OS-independent 3931acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3932debug version of the code includes the debug output trace mechanism and 3933has a much larger code and data size. 3934 3935 Current Release: 3936 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 3937 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 3938 Previous Release: 3939 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 3940 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 3941 3942 39432) iASL Compiler/Disassembler and Tools: 3944 3945Portable AcpiDump: Implemented full support for the Linux and FreeBSD 3946hosts. Now supports Linux, FreeBSD, and Windows. 3947 3948Disassembler: Added some missing types for the HEST and EINJ tables: "Set 3949Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 3950 3951iASL/Preprocessor: Implemented full support for nested 3952#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 3953 3954Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 3955max. The original purpose of this constraint was to limit the amount of 3956debug output. However, the string function in question (UtPrintString) is 3957now used for the disassembler also, where 256 bytes is insufficient. 3958Reported by RehabMan@GitHub. 3959 3960iASL/DataTables: Fixed some problems and issues with compilation of DMAR 3961tables. ACPICA BZ 999. Lv Zheng. 3962 3963iASL: Fixed a couple of error exit issues that could result in a "Could 3964not delete <file>" message during ASL compilation. 3965 3966AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 3967the actual signatures for these tables are "FACP" and "APIC", 3968respectively. 3969 3970AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 3971tables are allowed to have multiple instances. 3972 3973---------------------------------------- 397417 May 2013. Summary of changes for version 20130517: 3975 39761) ACPICA kernel-resident subsystem: 3977 3978Fixed a regression introduced in version 20130328 for _INI methods. This 3979change fixes a problem introduced in 20130328 where _INI methods are no 3980longer executed properly because of a memory block that was not 3981initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 3982<tomasz.nowicki@linaro.org>. 3983 3984Fixed a possible problem with the new extended sleep registers in the 3985ACPI 39865.0 FADT. Do not use these registers (even if populated) unless the HW- 3987reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 39881020. Lv Zheng. 3989 3990Implemented return value repair code for _CST predefined objects: Sort 3991the 3992list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 3993 3994Implemented a debug-only option to disable loading of SSDTs from the 3995RSDT/XSDT during ACPICA initialization. This can be useful for debugging 3996ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 3997acglobal.h - ACPICA BZ 1005. Lv Zheng. 3998 3999Fixed some issues in the ACPICA initialization and termination code: 4000Tomasz Nowicki <tomasz.nowicki@linaro.org> 40011) Clear events initialized flag upon event component termination. ACPICA 4002BZ 1013. 40032) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 40043) Delete global lock pending lock during termination. ACPICA BZ 1012. 40054) Clear debug buffer global on termination to prevent possible multiple 4006delete. ACPICA BZ 1010. 4007 4008Standardized all switch() blocks across the entire source base. After 4009many 4010years, different formatting for switch() had crept in. This change makes 4011the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 4012 4013Split some files to enhance ACPICA modularity and configurability: 40141) Split buffer dump routines into utilities/utbuffer.c 40152) Split internal error message routines into utilities/uterror.c 40163) Split table print utilities into tables/tbprint.c 40174) Split iASL command-line option processing into asloptions.c 4018 4019Makefile enhancements: 40201) Support for all new files above. 40212) Abort make on errors from any subcomponent. Chao Guan. 40223) Add build support for Apple Mac OS X. Liang Qi. 4023 4024Example Code and Data Size: These are the sizes for the OS-independent 4025acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4026debug version of the code includes the debug output trace mechanism and 4027has a much larger code and data size. 4028 4029 Current Release: 4030 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 4031 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 4032 Previous Release: 4033 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 4034 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 4035 4036 40372) iASL Compiler/Disassembler and Tools: 4038 4039New utility: Implemented an easily portable version of the acpidump 4040utility to extract ACPI tables from the system (or a file) in an ASCII 4041hex 4042dump format. The top-level code implements the various command line 4043options, file I/O, and table dump routines. To port to a new host, only 4044three functions need to be implemented to get tables -- since this 4045functionality is OS-dependent. See the tools/acpidump/apmain.c module and 4046the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 40471) The Windows version obtains the ACPI tables from the Registry. 40482) The Linux version is under development. 40493) Other hosts - If an OS-dependent module is submitted, it will be 4050distributed with ACPICA. 4051 4052iASL: Fixed a regression for -D preprocessor option (define symbol). A 4053restructuring/change to the initialization sequence caused this option to 4054no longer work properly. 4055 4056iASL: Implemented a mechanism to disable specific warnings and remarks. 4057Adds a new command line option, "-vw <messageid> as well as "#pragma 4058disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 4059 4060iASL: Fix for too-strict package object validation. The package object 4061validation for return values from the predefined names is a bit too 4062strict, it does not allow names references within the package (which will 4063be resolved at runtime.) These types of references cannot be validated at 4064compile time. This change ignores named references within package objects 4065for names that return or define static packages. 4066 4067Debugger: Fixed the 80-character command line limitation for the History 4068command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 4069 4070iASL: Added control method and package support for the -so option 4071(generates AML offset table for BIOS support.) 4072 4073iASL: issue a remark if a non-serialized method creates named objects. If 4074a thread blocks within the method for any reason, and another thread 4075enters the method, the method will fail because an attempt will be made 4076to 4077create the same (named) object twice. In this case, issue a remark that 4078the method should be marked serialized. NOTE: may become a warning later. 4079ACPICA BZ 909. 4080 4081---------------------------------------- 408218 April 2013. Summary of changes for version 20130418: 4083 40841) ACPICA kernel-resident subsystem: 4085 4086Fixed a possible buffer overrun during some rare but specific field unit 4087read operations. This overrun can only happen if the DSDT version is 1 -- 4088meaning that all AML integers are 32 bits -- and the field length is 4089between 33 and 55 bits long. During the read, an internal buffer object 4090is 4091created for the field unit because the field is larger than an integer 4092(32 4093bits). However, in this case, the buffer will be incorrectly written 4094beyond the end because the buffer length is less than the internal 4095minimum 4096of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 4097long, but a full 8 bytes will be written. 4098 4099Updated the Embedded Controller "orphan" _REG method support. This refers 4100to _REG methods under the EC device that have no corresponding operation 4101region. This is allowed by the ACPI specification. This update removes a 4102dependency on the existence an ECDT table. It will execute an orphan _REG 4103method as long as the operation region handler for the EC is installed at 4104the EC device node and not the namespace root. Rui Zhang (original 4105update), Bob Moore (update/integrate). 4106 4107Implemented run-time argument typechecking for all predefined ACPI names 4108(_STA, _BIF, etc.) This change performs object typechecking on all 4109incoming arguments for all predefined names executed via 4110AcpiEvaluateObject. This ensures that ACPI-related device drivers are 4111passing correct object types as well as the correct number of arguments 4112(therefore identifying any issues immediately). Also, the ASL/namespace 4113definition of the predefined name is checked against the ACPI 4114specification for the proper argument count. Adds one new file, 4115nsarguments.c 4116 4117Changed an exception code for the ASL UnLoad() operator. Changed the 4118exception code for the case where the input DdbHandle is invalid, from 4119AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 4120 4121Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 4122global makefile. The use of this flag causes compiler errors on earlier 4123versions of GCC, so it has been removed for compatibility. 4124 4125Miscellaneous cleanup: 41261) Removed some unused/obsolete macros 41272) Fixed a possible memory leak in the _OSI support 41283) Removed an unused variable in the predefined name support 41294) Windows OSL: remove obsolete reference to a memory list field 4130 4131Example Code and Data Size: These are the sizes for the OS-independent 4132acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4133debug version of the code includes the debug output trace mechanism and 4134has a much larger code and data size. 4135 4136 Current Release: 4137 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4138 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4139 Previous Release: 4140 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 4141 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 4142 4143 41442) iASL Compiler/Disassembler and Tools: 4145 4146AcpiExec: Added installation of a handler for the SystemCMOS address 4147space. This prevents control method abort if a method accesses this 4148space. 4149 4150AcpiExec: Added support for multiple EC devices, and now install EC 4151operation region handler(s) at the actual EC device instead of the 4152namespace root. This reflects the typical behavior of host operating 4153systems. 4154 4155AcpiExec: Updated to ensure that all operation region handlers are 4156installed before the _REG methods are executed. This prevents a _REG 4157method from aborting if it accesses an address space has no handler. 4158AcpiExec installs a handler for every possible address space. 4159 4160Debugger: Enhanced the "handlers" command to display non-root handlers. 4161This change enhances the handlers command to display handlers associated 4162with individual devices throughout the namespace, in addition to the 4163currently supported display of handlers associated with the root 4164namespace 4165node. 4166 4167ASL Test Suite: Several test suite errors have been identified and 4168resolved, reducing the total error count during execution. Chao Guan. 4169 4170---------------------------------------- 417128 March 2013. Summary of changes for version 20130328: 4172 41731) ACPICA kernel-resident subsystem: 4174 4175Fixed several possible race conditions with the internal object reference 4176counting mechanism. Some of the external ACPICA interfaces update object 4177reference counts without holding the interpreter or namespace lock. This 4178change adds a spinlock to protect reference count updates on the internal 4179ACPICA objects. Reported by and with assistance from Andriy Gapon 4180(avg@FreeBSD.org). 4181 4182FADT support: Removed an extraneous warning for very large GPE register 4183sets. This change removes a size mismatch warning if the legacy length 4184field for a GPE register set is larger than the 64-bit GAS structure can 4185accommodate. GPE register sets can be larger than the 255-bit width 4186limitation of the GAS structure. Linn Crosetto (linn@hp.com). 4187 4188_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 4189return from this interface. Handles a possible timeout case if 4190ACPI_WAIT_FOREVER is modified by the host to be a value less than 4191"forever". Jung-uk Kim. 4192 4193Predefined name support: Add allowed/required argument type information 4194to 4195the master predefined info table. This change adds the infrastructure to 4196enable typechecking on incoming arguments for all predefined 4197methods/objects. It does not actually contain the code that will fully 4198utilize this information, this is still under development. Also condenses 4199some duplicate code for the predefined names into a new module, 4200utilities/utpredef.c 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: 95.0K Code, 25.9K Data, 120.9K Total 4209 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4210 Current Release: 4211 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4212 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4213 4214 42152) iASL Compiler/Disassembler and Tools: 4216 4217iASL: Implemented a new option to simplify the development of ACPI- 4218related 4219BIOS code. Adds support for a new "offset table" output file. The -so 4220option will create a C table containing the AML table offsets of various 4221named objects in the namespace so that BIOS code can modify them easily 4222at 4223boot time. This can simplify BIOS runtime code by eliminating expensive 4224searches for "magic values", enhancing boot times and adding greater 4225reliability. With assistance from Lee Hamel. 4226 4227iASL: Allow additional predefined names to return zero-length packages. 4228Now, all predefined names that are defined by the ACPI specification to 4229return a "variable-length package of packages" are allowed to return a 4230zero length top-level package. This allows the BIOS to tell the host that 4231the requested feature is not supported, and supports existing BIOS/ASL 4232code and practices. 4233 4234iASL: Changed the "result not used" warning to an error. This is the case 4235where an ASL operator is effectively a NOOP because the result of the 4236operation is not stored anywhere. For example: 4237 Add (4, Local0) 4238There is no target (missing 3rd argument), nor is the function return 4239value used. This is potentially a very serious problem -- since the code 4240was probably intended to do something, but for whatever reason, the value 4241was not stored. Therefore, this issue has been upgraded from a warning to 4242an error. 4243 4244AcpiHelp: Added allowable/required argument types to the predefined names 4245info display. This feature utilizes the recent update to the predefined 4246names table (above). 4247 4248---------------------------------------- 424914 February 2013. Summary of changes for version 20130214: 4250 42511) ACPICA Kernel-resident Subsystem: 4252 4253Fixed a possible regression on some hosts: Reinstated the safe return 4254macros (return_ACPI_STATUS, etc.) that ensure that the argument is 4255evaluated only once. Although these macros are not needed for the ACPICA 4256code itself, they are often used by ACPI-related host device drivers 4257where 4258the safe feature may be necessary. 4259 4260Fixed several issues related to the ACPI 5.0 reduced hardware support 4261(SOC): Now ensure that if the platform declares itself as hardware- 4262reduced 4263via the FADT, the following functions become NOOPs (and always return 4264AE_OK) because ACPI is always enabled by definition on these machines: 4265 AcpiEnable 4266 AcpiDisable 4267 AcpiHwGetMode 4268 AcpiHwSetMode 4269 4270Dynamic Object Repair: Implemented additional runtime repairs for 4271predefined name return values. Both of these repairs can simplify code in 4272the related device drivers that invoke these methods: 42731) For the _STR and _MLS names, automatically repair/convert an ASCII 4274string to a Unicode buffer. 42752) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 4276a 4277lone end tag descriptor in the following cases: A Return(0) was executed, 4278a null buffer was returned, or no object at all was returned (non-slack 4279mode only). Adds a new file, nsconvert.c 4280ACPICA BZ 998. Bob Moore, Lv Zheng. 4281 4282Resource Manager: Added additional code to prevent possible infinite 4283loops 4284while traversing corrupted or ill-formed resource template buffers. Check 4285for zero-length resource descriptors in all code that loops through 4286resource templates (the length field is used to index through the 4287template). This change also hardens the external AcpiWalkResources and 4288AcpiWalkResourceBuffer interfaces. 4289 4290Local Cache Manager: Enhanced the main data structure to eliminate an 4291unnecessary mechanism to access the next object in the list. Actually 4292provides a small performance enhancement for hosts that use the local 4293ACPICA cache manager. Jung-uk Kim. 4294 4295Example Code and Data Size: These are the sizes for the OS-independent 4296acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4297debug version of the code includes the debug output trace mechanism and 4298has a much larger code and data size. 4299 4300 Previous Release: 4301 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4302 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4303 Current Release: 4304 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4305 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4306 4307 43082) iASL Compiler/Disassembler and Tools: 4309 4310iASL/Disassembler: Fixed several issues with the definition of the ACPI 43115.0 RASF table (RAS Feature Table). This change incorporates late changes 4312that were made to the ACPI 5.0 specification. 4313 4314iASL/Disassembler: Added full support for the following new ACPI tables: 4315 1) The MTMR table (MID Timer Table) 4316 2) The VRTC table (Virtual Real Time Clock Table). 4317Includes header file, disassembler, table compiler, and template support 4318for both tables. 4319 4320iASL: Implemented compile-time validation of package objects returned by 4321predefined names. This new feature validates static package objects 4322returned by the various predefined names defined to return packages. Both 4323object types and package lengths are validated, for both parent packages 4324and sub-packages, if any. The code is similar in structure and behavior 4325to 4326the runtime repair mechanism within the AML interpreter and uses the 4327existing predefined name information table. Adds a new file, aslprepkg.c. 4328ACPICA BZ 938. 4329 4330iASL: Implemented auto-detection of binary ACPI tables for disassembly. 4331This feature detects a binary file with a valid ACPI table header and 4332invokes the disassembler automatically. Eliminates the need to 4333specifically invoke the disassembler with the -d option. ACPICA BZ 862. 4334 4335iASL/Disassembler: Added several warnings for the case where there are 4336unresolved control methods during the disassembly. This can potentially 4337cause errors when the output file is compiled, because the disassembler 4338assumes zero method arguments in these cases (it cannot determine the 4339actual number of arguments without resolution/definition of the method). 4340 4341Debugger: Added support to display all resources with a single command. 4342Invocation of the resources command with no arguments will now display 4343all 4344resources within the current namespace. 4345 4346AcpiHelp: Added descriptive text for each ACPICA exception code displayed 4347via the -e option. 4348 4349---------------------------------------- 435017 January 2013. Summary of changes for version 20130117: 4351 43521) ACPICA Kernel-resident Subsystem: 4353 4354Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 4355return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 4356objects to return a package containing one integer, most BIOS code 4357returns 4358two integers and the previous code reflects that. However, we also need 4359to 4360support BIOS code that actually implements to the ACPI spec, and this 4361change reflects this. 4362 4363Fixed two issues with the ACPI_DEBUG_PRINT macros: 43641) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 4365C compilers that require this support. 43662) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 4367ACPI_DEBUG is already used by many of the various hosts. 4368 4369Updated all ACPICA copyrights and signons to 2013. Added the 2013 4370copyright to all module headers and signons, including the standard Linux 4371header. This affects virtually every file in the ACPICA core subsystem, 4372iASL compiler, all ACPICA utilities, and the test suites. 4373 4374Example Code and Data Size: These are the sizes for the OS-independent 4375acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4376debug version of the code includes the debug output trace mechanism and 4377has a much larger code and data size. 4378 4379 Previous Release: 4380 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 4381 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 4382 Current Release: 4383 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4384 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4385 4386 43872) iASL Compiler/Disassembler and Tools: 4388 4389Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 4390prevent a possible fault on some hosts. Some C libraries modify the arg 4391pointer parameter to vfprintf making it difficult to call it twice in the 4392AcpiOsVprintf function. Use a local buffer to workaround this issue. This 4393does not affect the Windows OSL since the Win C library does not modify 4394the arg pointer. Chao Guan, Bob Moore. 4395 4396iASL: Fixed a possible infinite loop when the maximum error count is 4397reached. If an output file other than the .AML file is specified (such as 4398a listing file), and the maximum number of errors is reached, do not 4399attempt to flush data to the output file(s) as the compiler is aborting. 4400This can cause an infinite loop as the max error count code essentially 4401keeps calling itself. 4402 4403iASL/Disassembler: Added an option (-in) to ignore NOOP 4404opcodes/operators. 4405Implemented for both the compiler and the disassembler. Often, the NOOP 4406opcode is used as padding for packages that are changed dynamically by 4407the 4408BIOS. When disassembled and recompiled, these NOOPs will cause syntax 4409errors. This option causes the disassembler to ignore all NOOP opcodes 4410(0xA3), and it also causes the compiler to ignore all ASL source code 4411NOOP 4412statements as well. 4413 4414Debugger: Enhanced the Sleep command to execute all sleep states. This 4415change allows Sleep to be invoked with no arguments and causes the 4416debugger to execute all of the sleep states, 0-5, automatically. 4417 4418---------------------------------------- 441920 December 2012. Summary of changes for version 20121220: 4420 44211) ACPICA Kernel-resident Subsystem: 4422 4423Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 4424alternate entry point for AcpiWalkResources and improves the usability of 4425the resource manager by accepting as input a buffer containing the output 4426of either a _CRS, _PRS, or _AEI method. The key functionality is that the 4427input buffer is not deleted by this interface so that it can be used by 4428the host later. See the ACPICA reference for details. 4429 4430Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 4431(DSDT version < 2). The constant will be truncated and this warning 4432reflects that behavior. 4433 4434Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 4435ExtendedInterrupt, and GpioInt descriptors. This change adds support to 4436both get and set the new wake bit in these descriptors, separately from 4437the existing share bit. Reported by Aaron Lu. 4438 4439Interpreter: Fix Store() when an implicit conversion is not possible. For 4440example, in the cases such as a store of a string to an existing package 4441object, implement the store as a CopyObject(). This is a small departure 4442from the ACPI specification which states that the control method should 4443be 4444aborted in this case. However, the ASLTS suite depends on this behavior. 4445 4446Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 4447macros: check if debug output is currently enabled as soon as possible to 4448minimize performance impact if debug is in fact not enabled. 4449 4450Source code restructuring: Cleanup to improve modularity. The following 4451new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 4452psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 4453Associated makefiles and project files have been updated. 4454 4455Changed an exception code for LoadTable operator. For the case where one 4456of the input strings is too long, change the returned exception code from 4457AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 4458 4459Fixed a possible memory leak in dispatcher error path. On error, delete 4460the mutex object created during method mutex creation. Reported by 4461tim.gardner@canonical.com. 4462 4463Example Code and Data Size: These are the sizes for the OS-independent 4464acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4465debug version of the code includes the debug output trace mechanism and 4466has a much larger code and data size. 4467 4468 Previous Release: 4469 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 4470 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4471 Current Release: 4472 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 4473 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 4474 4475 44762) iASL Compiler/Disassembler and Tools: 4477 4478iASL: Disallow a method call as argument to the ObjectType ASL operator. 4479This change tracks an errata to the ACPI 5.0 document. The AML grammar 4480will not allow the interpreter to differentiate between a method and a 4481method invocation when these are used as an argument to the ObjectType 4482operator. The ACPI specification change is to disallow a method 4483invocation 4484(UserTerm) for the ObjectType operator. 4485 4486Finish support for the TPM2 and CSRT tables in the headers, table 4487compiler, and disassembler. 4488 4489Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 4490always expires immediately if the semaphore is not available. The 4491original 4492code was using a relative-time timeout, but sem_timedwait requires the 4493use 4494of an absolute time. 4495 4496iASL: Added a remark if the Timer() operator is used within a 32-bit 4497table. This operator returns a 64-bit time value that will be truncated 4498within a 32-bit table. 4499 4500iASL Source code restructuring: Cleanup to improve modularity. The 4501following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 4502aslmethod.c, and aslfileio.c. Associated makefiles and project files have 4503been updated. 4504 4505 4506---------------------------------------- 450714 November 2012. Summary of changes for version 20121114: 4508 45091) ACPICA Kernel-resident Subsystem: 4510 4511Implemented a performance enhancement for ACPI/AML Package objects. This 4512change greatly increases the performance of Package objects within the 4513interpreter. It changes the processing of reference counts for packages 4514by 4515optimizing for the most common case where the package sub-objects are 4516either Integers, Strings, or Buffers. Increases the overall performance 4517of 4518the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 45192X.) 4520Chao Guan. ACPICA BZ 943. 4521 4522Implemented and deployed common macros to extract flag bits from resource 4523descriptors. Improves readability and maintainability of the code. Fixes 4524a 4525problem with the UART serial bus descriptor for the number of data bits 4526flags (was incorrectly 2 bits, should be 3). 4527 4528Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 4529of the macros and changed the SETx macros to the style of (destination, 4530source). Also added ACPI_CASTx companion macros. Lv Zheng. 4531 4532Example Code and Data Size: These are the sizes for the OS-independent 4533acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4534debug version of the code includes the debug output trace mechanism and 4535has a much larger code and data size. 4536 4537 Previous Release: 4538 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 4539 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4540 Current Release: 4541 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 4542 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4543 4544 45452) iASL Compiler/Disassembler and Tools: 4546 4547Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 4548adds the ShareAndWake and ExclusiveAndWake flags which were added to the 4549Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 4550 4551Disassembler: Fixed a problem with external declaration generation. Fixes 4552a problem where an incorrect pathname could be generated for an external 4553declaration if the original reference to the object includes leading 4554carats (^). ACPICA BZ 984. 4555 4556Debugger: Completed a major update for the Disassemble<method> command. 4557This command was out-of-date and did not properly disassemble control 4558methods that had any reasonable complexity. This fix brings the command 4559up 4560to the same level as the rest of the disassembler. Adds one new file, 4561dmdeferred.c, which is existing code that is now common with the main 4562disassembler and the debugger disassemble command. ACPICA MZ 978. 4563 4564iASL: Moved the parser entry prototype to avoid a duplicate declaration. 4565Newer versions of Bison emit this prototype, so moved the prototype out 4566of 4567the iASL header to where it is actually used in order to avoid a 4568duplicate 4569declaration. 4570 4571iASL/Tools: Standardized use of the stream I/O functions: 4572 1) Ensure check for I/O error after every fopen/fread/fwrite 4573 2) Ensure proper order of size/count arguments for fread/fwrite 4574 3) Use test of (Actual != Requested) after all fwrite, and most fread 4575 4) Standardize I/O error messages 4576Improves reliability and maintainability of the code. Bob Moore, Lv 4577Zheng. 4578ACPICA BZ 981. 4579 4580Disassembler: Prevent duplicate External() statements. During generation 4581of external statements, detect similar pathnames that are actually 4582duplicates such as these: 4583 External (\ABCD) 4584 External (ABCD) 4585Remove all leading '\' characters from pathnames during the external 4586statement generation so that duplicates will be detected and tossed. 4587ACPICA BZ 985. 4588 4589Tools: Replace low-level I/O with stream I/O functions. Replace 4590open/read/write/close with the stream I/O equivalents 4591fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 4592Moore. 4593 4594AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 4595name header so that AcpiXtract recognizes the output file/table. 4596 4597iASL: Remove obsolete -2 option flag. Originally intended to force the 4598compiler/disassembler into an ACPI 2.0 mode, this was never implemented 4599and the entire concept is now obsolete. 4600 4601---------------------------------------- 460218 October 2012. Summary of changes for version 20121018: 4603 4604 46051) ACPICA Kernel-resident Subsystem: 4606 4607Updated support for the ACPI 5.0 MPST table. Fixes some problems 4608introduced by late changes to the table as it was added to the ACPI 5.0 4609specification. Includes header, disassembler, and data table compiler 4610support as well as a new version of the MPST template. 4611 4612AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 46135.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 4614methods: _HID, _CID, and _UID. 4615 4616Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 4617ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 4618name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 4619names for their various drivers. Affects the AcpiGetObjectInfo external 4620interface, and other internal interfaces as well. 4621 4622Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 4623This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 4624on machines that support non-aligned transfers. Optimizes for this case 4625rather than using a strncpy. With assistance from Zheng Lv. 4626 4627Resource Manager: Small fix for buffer size calculation. Fixed a one byte 4628error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 4629 4630Added a new debug print message for AML mutex objects that are force- 4631released. At control method termination, any currently acquired mutex 4632objects are force-released. Adds a new debug-only message for each one 4633that is released. 4634 4635Audited/updated all ACPICA return macros and the function debug depth 4636counter: 1) Ensure that all functions that use the various TRACE macros 4637also use the appropriate ACPICA return macros. 2) Ensure that all normal 4638return statements surround the return expression (value) with parens to 4639ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 4640Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 4641 4642Global source code changes/maintenance: All extra lines at the start and 4643end of each source file have been removed for consistency. Also, within 4644comments, all new sentences start with a single space instead of a double 4645space, again for consistency across the code base. 4646 4647Example Code and Data Size: These are the sizes for the OS-independent 4648acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4649debug version of the code includes the debug output trace mechanism and 4650has a much larger code and data size. 4651 4652 Previous Release: 4653 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 4654 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 4655 Current Release: 4656 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 4657 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4658 4659 46602) iASL Compiler/Disassembler and Tools: 4661 4662AcpiExec: Improved the algorithm used for memory leak/corruption 4663detection. Added some intelligence to the code that maintains the global 4664list of allocated memory. The list is now ordered by allocated memory 4665address, significantly improving performance. When running AcpiExec on 4666the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 4667on the platform and/or the environment. Note, this performance 4668enhancement affects the AcpiExec utility only, not the kernel-resident 4669ACPICA code. 4670 4671Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 4672the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 4673incorrect table offset reported for invalid opcodes. Report the original 467432-bit value for bad ACPI_NAMEs (as well as the repaired name.) 4675 4676Disassembler: Enhanced the -vt option to emit the binary table data in 4677hex format to assist with debugging. 4678 4679Fixed a potential filename buffer overflow in osunixdir.c. Increased the 4680size of file structure. Colin Ian King. 4681 4682---------------------------------------- 468313 September 2012. Summary of changes for version 20120913: 4684 4685 46861) ACPICA Kernel-resident Subsystem: 4687 4688ACPI 5.0: Added two new notify types for the Hardware Error Notification 4689Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 4690and 4691MCE(6). 4692 4693Table Manager: Merged/removed duplicate code in the root table resize 4694functions. One function is external, the other is internal. Lv Zheng, 4695ACPICA 4696BZ 846. 4697 4698Makefiles: Completely removed the obsolete "Linux" makefiles under 4699acpica/generate/linux. These makefiles are obsolete and have been 4700replaced 4701by 4702the generic unix makefiles under acpica/generate/unix. 4703 4704Makefiles: Ensure that binary files always copied properly. Minor rule 4705change 4706to ensure that the final binary output files are always copied up to the 4707appropriate binary directory (bin32 or bin64.) 4708 4709Example Code and Data Size: These are the sizes for the OS-independent 4710acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4711debug 4712version of the code includes the debug output trace mechanism and has a 4713much 4714larger code and data size. 4715 4716 Previous Release: 4717 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 4718 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 4719 Current Release: 4720 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 4721 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 4722 4723 47242) iASL Compiler/Disassembler and Tools: 4725 4726Disassembler: Fixed a possible fault during the disassembly of resource 4727descriptors when a second parse is required because of the invocation of 4728external control methods within the table. With assistance from 4729adq@lidskialf.net. ACPICA BZ 976. 4730 4731iASL: Fixed a namepath optimization problem. An error can occur if the 4732parse 4733node that contains the namepath to be optimized does not have a parent 4734node 4735that is a named object. This change fixes the problem. 4736 4737iASL: Fixed a regression where the AML file is not deleted on errors. The 4738AML 4739output file should be deleted if there are any errors during the 4740compiler. 4741The 4742only exception is if the -f (force output) option is used. ACPICA BZ 974. 4743 4744iASL: Added a feature to automatically increase internal line buffer 4745sizes. 4746Via realloc(), automatically increase the internal line buffer sizes as 4747necessary to support very long source code lines. The current version of 4748the 4749preprocessor requires a buffer long enough to contain full source code 4750lines. 4751This change increases the line buffer(s) if the input lines go beyond the 4752current buffer size. This eliminates errors that occurred when a source 4753code 4754line was longer than the buffer. 4755 4756iASL: Fixed a problem with constant folding in method declarations. The 4757SyncLevel term is a ByteConstExpr, and incorrect code would be generated 4758if a 4759Type3 opcode was used. 4760 4761Debugger: Improved command help support. For incorrect argument count, 4762display 4763full help for the command. For help command itself, allow an argument to 4764specify a command. 4765 4766Test Suites: Several bug fixes for the ASLTS suite reduces the number of 4767errors during execution of the suite. Guan Chao. 4768 4769---------------------------------------- 477016 August 2012. Summary of changes for version 20120816: 4771 4772 47731) ACPICA Kernel-resident Subsystem: 4774 4775Removed all use of the deprecated _GTS and _BFS predefined methods. The 4776_GTS 4777(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 4778deprecated and will probably be removed from the ACPI specification. 4779Windows 4780does not invoke them, and reportedly never will. The final nail in the 4781coffin 4782is that the ACPI specification states that these methods must be run with 4783interrupts off, which is not going to happen in a kernel interpreter. 4784Note: 4785Linux has removed all use of the methods also. It was discovered that 4786invoking these functions caused failures on some machines, probably 4787because 4788they were never tested since Windows does not call them. Affects two 4789external 4790interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 4791ACPICA BZ 969. 4792 4793Implemented support for complex bit-packed buffers returned from the _PLD 4794(Physical Location of Device) predefined method. Adds a new external 4795interface, AcpiDecodePldBuffer that parses the buffer into a more usable 4796C 4797structure. Note: C Bitfields cannot be used for this type of predefined 4798structure since the memory layout of individual bitfields is not defined 4799by 4800the C language. In addition, there are endian concerns where a compiler 4801will 4802change the bitfield ordering based on the machine type. The new ACPICA 4803interface eliminates these issues, and should be called after _PLD is 4804executed. ACPICA BZ 954. 4805 4806Implemented a change to allow a scope change to root (via "Scope (\)") 4807during 4808execution of module-level ASL code (code that is executed at table load 4809time.) Lin Ming. 4810 4811Added the Windows8/Server2012 string for the _OSI method. This change 4812adds 4813a 4814new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 48152012. 4816 4817Added header support for the new ACPI tables DBG2 (Debug Port Table Type 48182) 4819and CSRT (Core System Resource Table). 4820 4821Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 4822names. This simplifies access to the buffers returned by these predefined 4823names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 4824 4825GPE support: Removed an extraneous parameter from the various low-level 4826internal GPE functions. Tang Feng. 4827 4828Removed the linux makefiles from the unix packages. The generate/linux 4829makefiles are obsolete and have been removed from the unix tarball 4830release 4831packages. The replacement makefiles are under generate/unix, and there is 4832a 4833top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 4834 4835Updates for Unix makefiles: 48361) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 48372) Update linker flags (move to end of command line) for AcpiExec 4838utility. 4839Guan Chao. 4840 4841Split ACPICA initialization functions to new file, utxfinit.c. Split from 4842utxface.c to improve modularity and reduce file size. 4843 4844Example Code and Data Size: These are the sizes for the OS-independent 4845acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4846debug version of the code includes the debug output trace mechanism and 4847has a 4848much larger code and data size. 4849 4850 Previous Release: 4851 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 4852 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 4853 Current Release: 4854 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 4855 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 4856 4857 48582) iASL Compiler/Disassembler and Tools: 4859 4860iASL: Fixed a problem with constant folding for fixed-length constant 4861expressions. The constant-folding code was not being invoked for constant 4862expressions that allow the use of type 3/4/5 opcodes to generate 4863constants 4864for expressions such as ByteConstExpr, WordConstExpr, etc. This could 4865result 4866in the generation of invalid AML bytecode. ACPICA BZ 970. 4867 4868iASL: Fixed a generation issue on newer versions of Bison. Newer versions 4869apparently automatically emit some of the necessary externals. This 4870change 4871handles these versions in order to eliminate generation warnings. 4872 4873Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 4874 4875Disassembler: Add support to decode _PLD buffers. The decoded buffer 4876appears 4877within comments in the output file. 4878 4879Debugger: Fixed a regression with the "Threads" command where 4880AE_BAD_PARAMETER was always returned. 4881 4882---------------------------------------- 488311 July 2012. Summary of changes for version 20120711: 4884 48851) ACPICA Kernel-resident Subsystem: 4886 4887Fixed a possible fault in the return package object repair code. Fixes a 4888problem that can occur when a lone package object is wrapped with an 4889outer 4890package object in order to force conformance to the ACPI specification. 4891Can 4892affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 4893_DLM, 4894_CSD, _PSD, _TSD. 4895 4896Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 4897PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 4898ARB_DIS bit must be implemented in the host-dependent C3 processor power 4899state 4900support. Note, ARB_DIS is obsolete and only applies to older chipsets, 4901both 4902Intel and other vendors. (for Intel: ICH4-M and earlier) 4903 4904This change removes the code to disable/enable bus master arbitration 4905during 4906suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 4907causes 4908resume problems on some machines. The change has been in use for over 4909seven 4910years within Linux. 4911 4912Implemented two new external interfaces to support host-directed dynamic 4913ACPI 4914table load and unload. They are intended to simplify the host 4915implementation 4916of hot-plug support: 4917 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 4918 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 4919table. 4920See the ACPICA reference for additional details. Adds one new file, 4921components/tables/tbxfload.c 4922 4923Implemented and deployed two new interfaces for errors and warnings that 4924are 4925known to be caused by BIOS/firmware issues: 4926 AcpiBiosError: Prints "ACPI Firmware Error" message. 4927 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 4928Deployed these new interfaces in the ACPICA Table Manager code for ACPI 4929table 4930and FADT errors. Additional deployment to be completed as appropriate in 4931the 4932future. The associated conditional macros are ACPI_BIOS_ERROR and 4933ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 4934ACPICA 4935BZ 4936843. 4937 4938Implicit notify support: ensure that no memory allocation occurs within a 4939critical region. This fix moves a memory allocation outside of the time 4940that a 4941spinlock is held. Fixes issues on systems that do not allow this 4942behavior. 4943Jung-uk Kim. 4944 4945Split exception code utilities and tables into a new file, 4946utilities/utexcep.c 4947 4948Example Code and Data Size: These are the sizes for the OS-independent 4949acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4950debug 4951version of the code includes the debug output trace mechanism and has a 4952much 4953larger code and data size. 4954 4955 Previous Release: 4956 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 4957 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 4958 Current Release: 4959 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 4960 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 4961 4962 49632) iASL Compiler/Disassembler and Tools: 4964 4965iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 4966of 49670. Jung-uk Kim. 4968 4969Debugger: Enhanced the "tables" command to emit additional information 4970about 4971the current set of ACPI tables, including the owner ID and flags decode. 4972 4973Debugger: Reimplemented the "unload" command to use the new 4974AcpiUnloadParentTable external interface. This command was disable 4975previously 4976due to need for an unload interface. 4977 4978AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 4979option 4980will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 4981 4982---------------------------------------- 498320 June 2012. Summary of changes for version 20120620: 4984 4985 49861) ACPICA Kernel-resident Subsystem: 4987 4988Implemented support to expand the "implicit notify" feature to allow 4989multiple 4990devices to be notified by a single GPE. This feature automatically 4991generates a 4992runtime device notification in the absence of a BIOS-provided GPE control 4993method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 4994notify is 4995provided by ACPICA for Windows compatibility, and is a workaround for 4996BIOS 4997AML 4998code errors. See the description of the AcpiSetupGpeForWake interface in 4999the 5000APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 5001 5002Changed some comments and internal function names to simplify and ensure 5003correctness of the Linux code translation. No functional changes. 5004 5005Example Code and Data Size: These are the sizes for the OS-independent 5006acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5007debug 5008version of the code includes the debug output trace mechanism and has a 5009much 5010larger code and data size. 5011 5012 Previous Release: 5013 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 5014 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 5015 Current Release: 5016 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 5017 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 5018 5019 50202) iASL Compiler/Disassembler and Tools: 5021 5022Disassembler: Added support to emit short, commented descriptions for the 5023ACPI 5024predefined names in order to improve the readability of the disassembled 5025output. ACPICA BZ 959. Changes include: 5026 1) Emit descriptions for all standard predefined names (_INI, _STA, 5027_PRW, 5028etc.) 5029 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 5030 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 5031etc.) 5032 5033AcpiSrc: Fixed several long-standing Linux code translation issues. 5034Argument 5035descriptions in function headers are now translated properly to lower 5036case 5037and 5038underscores. ACPICA BZ 961. Also fixes translation problems such as 5039these: 5040(old -> new) 5041 i_aSL -> iASL 5042 00-7_f -> 00-7F 5043 16_k -> 16K 5044 local_fADT -> local_FADT 5045 execute_oSI -> execute_OSI 5046 5047iASL: Fixed a problem where null bytes were inadvertently emitted into 5048some 5049listing files. 5050 5051iASL: Added the existing debug options to the standard help screen. There 5052are 5053no longer two different help screens. ACPICA BZ 957. 5054 5055AcpiHelp: Fixed some typos in the various predefined name descriptions. 5056Also 5057expand some of the descriptions where appropriate. 5058 5059iASL: Fixed the -ot option (display compile times/statistics). Was not 5060working 5061properly for standard output; only worked for the debug file case. 5062 5063---------------------------------------- 506418 May 2012. Summary of changes for version 20120518: 5065 5066 50671) ACPICA Core Subsystem: 5068 5069Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 5070defined 5071to block until asynchronous events such as notifies and GPEs have 5072completed. 5073Within ACPICA, it is only called before a notify or GPE handler is 5074removed/uninstalled. It also may be useful for the host OS within related 5075drivers such as the Embedded Controller driver. See the ACPICA reference 5076for 5077additional information. ACPICA BZ 868. 5078 5079ACPI Tables: Added a new error message for a possible overflow failure 5080during 5081the conversion of FADT 32-bit legacy register addresses to internal 5082common 508364- 5084bit GAS structure representation. The GAS has a one-byte "bit length" 5085field, 5086thus limiting the register length to 255 bits. ACPICA BZ 953. 5087 5088Example Code and Data Size: These are the sizes for the OS-independent 5089acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5090debug 5091version of the code includes the debug output trace mechanism and has a 5092much 5093larger code and data size. 5094 5095 Previous Release: 5096 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5097 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 5098 Current Release: 5099 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 5100 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 5101 5102 51032) iASL Compiler/Disassembler and Tools: 5104 5105iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 5106macro. 5107This keyword was added late in the ACPI 5.0 release cycle and was not 5108implemented until now. 5109 5110Disassembler: Added support for Operation Region externals. Adds missing 5111support for operation regions that are defined in another table, and 5112referenced locally via a Field or BankField ASL operator. Now generates 5113the 5114correct External statement. 5115 5116Disassembler: Several additional fixes for the External() statement 5117generation 5118related to some ASL operators. Also, order the External() statements 5119alphabetically in the disassembler output. Fixes the External() 5120generation 5121for 5122the Create* field, Alias, and Scope operators: 5123 1) Create* buffer field operators - fix type mismatch warning on 5124disassembly 5125 2) Alias - implement missing External support 5126 3) Scope - fix to make sure all necessary externals are emitted. 5127 5128iASL: Improved pathname support. For include files, merge the prefix 5129pathname 5130with the file pathname and eliminate unnecessary components. Convert 5131backslashes in all pathnames to forward slashes, for readability. Include 5132file 5133pathname changes affect both #include and Include() type operators. 5134 5135iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 5136end 5137of a valid line by inserting a newline and then returning the EOF during 5138the 5139next call to GetNextLine. Prevents the line from being ignored due to EOF 5140condition. 5141 5142iASL: Implemented some changes to enhance the IDE support (-vi option.) 5143Error 5144and Warning messages are now correctly recognized for both the source 5145code 5146browser and the global error and warning counts. 5147 5148---------------------------------------- 514920 April 2012. Summary of changes for version 20120420: 5150 5151 51521) ACPICA Core Subsystem: 5153 5154Implemented support for multiple notify handlers. This change adds 5155support 5156to 5157allow multiple system and device notify handlers on Device, Thermal Zone, 5158and 5159Processor objects. This can simplify the host OS notification 5160implementation. 5161Also re-worked and restructured the entire notify support code to 5162simplify 5163handler installation, handler removal, notify event queuing, and notify 5164dispatch to handler(s). Note: there can still only be two global notify 5165handlers - one for system notifies and one for device notifies. There are 5166no 5167changes to the existing handler install/remove interfaces. Lin Ming, Bob 5168Moore, Rafael Wysocki. 5169 5170Fixed a regression in the package repair code where the object reference 5171count was calculated incorrectly. Regression was introduced in the commit 5172"Support to add Package wrappers". 5173 5174Fixed a couple possible memory leaks in the AML parser, in the error 5175recovery 5176path. Jesper Juhl, Lin Ming. 5177 5178Example Code and Data Size: These are the sizes for the OS-independent 5179acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5180debug version of the code includes the debug output trace mechanism and 5181has a 5182much larger code and data size. 5183 5184 Previous Release: 5185 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5186 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5187 Current Release: 5188 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5189 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 5190 5191 51922) iASL Compiler/Disassembler and Tools: 5193 5194iASL: Fixed a problem with the resource descriptor support where the 5195length 5196of the StartDependentFn and StartDependentFnNoPrio descriptors were not 5197included in cumulative descriptor offset, resulting in incorrect values 5198for 5199resource tags within resource descriptors appearing after a 5200StartDependent* 5201descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 5202 5203iASL and Preprocessor: Implemented full support for the #line directive 5204to 5205correctly track original source file line numbers through the .i 5206preprocessor 5207output file - for error and warning messages. 5208 5209iASL: Expand the allowable byte constants for address space IDs. 5210Previously, 5211the allowable range was 0x80-0xFF (user-defined spaces), now the range is 52120x0A-0xFF to allow for custom and new IDs without changing the compiler. 5213 5214iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 5215 5216iASL: Add option to completely disable the preprocessor (-Pn). 5217 5218iASL: Now emit all error/warning messages to standard error (stderr) by 5219default (instead of the previous stdout). 5220 5221ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 5222Update 5223for resource descriptor offset fix above. Update/cleanup error output 5224routines. Enable and send iASL errors/warnings to an error logfile 5225(error.txt). Send all other iASL output to a logfile (compiler.txt). 5226Fixed 5227several extraneous "unrecognized operator" messages. 5228 5229---------------------------------------- 523020 March 2012. Summary of changes for version 20120320: 5231 5232 52331) ACPICA Core Subsystem: 5234 5235Enhanced the sleep/wake interfaces to optionally execute the _GTS method 5236(Going To Sleep) and the _BFS method (Back From Sleep). Windows 5237apparently 5238does not execute these methods, and therefore these methods are often 5239untested. It has been seen on some systems where the execution of these 5240methods causes errors and also prevents the machine from entering S5. It 5241is 5242therefore suggested that host operating systems do not execute these 5243methods 5244by default. In the future, perhaps these methods can be optionally 5245executed 5246based on the age of the system and/or what is the newest version of 5247Windows 5248that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 5249and 5250AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 5251Ming. 5252 5253Fixed a problem where the length of the local/common FADT was set too 5254early. 5255The local FADT table length cannot be set to the common length until the 5256original length has been examined. There is code that checks the table 5257length 5258and sets various fields appropriately. This can affect older machines 5259with 5260early FADT versions. For example, this can cause inadvertent writes to 5261the 5262CST_CNT register. Julian Anastasov. 5263 5264Fixed a mapping issue related to a physical table override. Use the 5265deferred 5266mapping mechanism for tables loaded via the physical override OSL 5267interface. 5268This allows for early mapping before the virtual memory manager is 5269available. 5270Thomas Renninger, Bob Moore. 5271 5272Enhanced the automatic return-object repair code: Repair a common problem 5273with 5274predefined methods that are defined to return a variable-length Package 5275of 5276sub-objects. If there is only one sub-object, some BIOS ASL code 5277mistakenly 5278simply returns the single object instead of a Package with one sub- 5279object. 5280This new support will repair this error by wrapping a Package object 5281around 5282the original object, creating the correct and expected Package with one 5283sub- 5284object. Names that can be repaired in this manner include: _ALR, _CSD, 5285_HPX, 5286_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 5287939. 5288 5289Changed the exception code returned for invalid ACPI paths passed as 5290parameters to external interfaces such as AcpiEvaluateObject. Was 5291AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 5292 5293Example Code and Data Size: These are the sizes for the OS-independent 5294acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5295debug 5296version of the code includes the debug output trace mechanism and has a 5297much 5298larger code and data size. 5299 5300 Previous Release: 5301 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 5302 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5303 Current Release: 5304 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5305 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5306 5307 53082) iASL Compiler/Disassembler and Tools: 5309 5310iASL: Added the infrastructure and initial implementation of a integrated 5311C- 5312like preprocessor. This will simplify BIOS development process by 5313eliminating 5314the need for a separate preprocessing step during builds. On Windows, it 5315also 5316eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 5317features including full #define() macro support are still under 5318development. 5319These preprocessor directives are supported: 5320 #define 5321 #elif 5322 #else 5323 #endif 5324 #error 5325 #if 5326 #ifdef 5327 #ifndef 5328 #include 5329 #pragma message 5330 #undef 5331 #warning 5332In addition, these new command line options are supported: 5333 -D <symbol> Define symbol for preprocessor use 5334 -li Create preprocessed output file (*.i) 5335 -P Preprocess only and create preprocessor output file (*.i) 5336 5337Table Compiler: Fixed a problem where the equals operator within an 5338expression 5339did not work properly. 5340 5341Updated iASL to use the current versions of Bison/Flex. Updated the 5342Windows 5343project file to invoke these tools from the standard location. ACPICA BZ 5344904. 5345Versions supported: 5346 Flex for Windows: V2.5.4 5347 Bison for Windows: V2.4.1 5348 5349---------------------------------------- 535015 February 2012. Summary of changes for version 20120215: 5351 5352 53531) ACPICA Core Subsystem: 5354 5355There have been some major changes to the sleep/wake support code, as 5356described below (a - e). 5357 5358a) The AcpiLeaveSleepState has been split into two interfaces, similar to 5359AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 5360AcpiLeaveSleepStatePrep. This allows the host to perform actions between 5361the 5362time the _BFS method is called and the _WAK method is called. NOTE: all 5363hosts 5364must update their wake/resume code or else sleep/wake will not work 5365properly. 5366Rafael Wysocki. 5367 5368b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 5369_WAK 5370method. Some machines require that the GPEs are enabled before the _WAK 5371method 5372is executed. Thomas Renninger. 5373 5374c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 5375bit. 5376Some BIOS code assumes that WAK_STS will be cleared on resume and use it 5377to 5378determine whether the system is rebooting or resuming. Matthew Garrett. 5379 5380d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 5381Sleep) to 5382match the ACPI specification requirement. Rafael Wysocki. 5383 5384e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 5385registers within the V5 FADT. This support adds two new files: 5386hardware/hwesleep.c implements the support for the new registers. Moved 5387all 5388sleep/wake external interfaces to hardware/hwxfsleep.c. 5389 5390 5391Added a new OSL interface for ACPI table overrides, 5392AcpiOsPhysicalTableOverride. This interface allows the host to override a 5393table via a physical address, instead of the logical address required by 5394AcpiOsTableOverride. This simplifies the host implementation. Initial 5395implementation by Thomas Renninger. The ACPICA implementation creates a 5396single 5397shared function for table overrides that attempts both a logical and a 5398physical override. 5399 5400Expanded the OSL memory read/write interfaces to 64-bit data 5401(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 5402transfer support for GAS register structures passed to AcpiRead and 5403AcpiWrite. 5404 5405Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 5406custom 5407build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 5408model. 5409See the ACPICA reference for details. ACPICA BZ 942. This option removes 5410about 541110% of the code and 5% of the static data, and the following hardware 5412ACPI 5413features become unavailable: 5414 PM Event and Control registers 5415 SCI interrupt (and handler) 5416 Fixed Events 5417 General Purpose Events (GPEs) 5418 Global Lock 5419 ACPI PM timer 5420 FACS table (Waking vectors and Global Lock) 5421 5422Updated the unix tarball directory structure to match the ACPICA git 5423source 5424tree. This ensures that the generic unix makefiles work properly (in 5425generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 5426867. 5427 5428Updated the return value of the _REV predefined method to integer value 5 5429to 5430reflect ACPI 5.0 support. 5431 5432Moved the external ACPI PM timer interface prototypes to the public 5433acpixf.h 5434file where they belong. 5435 5436Example Code and Data Size: These are the sizes for the OS-independent 5437acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5438debug 5439version of the code includes the debug output trace mechanism and has a 5440much 5441larger code and data size. 5442 5443 Previous Release: 5444 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 5445 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 5446 Current Release: 5447 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 5448 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5449 5450 54512) iASL Compiler/Disassembler and Tools: 5452 5453Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 5454descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 5455incorrectly displayed. 5456 5457AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 5458specification. 5459 5460---------------------------------------- 546111 January 2012. Summary of changes for version 20120111: 5462 5463 54641) ACPICA Core Subsystem: 5465 5466Implemented a new mechanism to allow host device drivers to check for 5467address 5468range conflicts with ACPI Operation Regions. Both SystemMemory and 5469SystemIO 5470address spaces are supported. A new external interface, 5471AcpiCheckAddressRange, 5472allows drivers to check an address range against the ACPI namespace. See 5473the 5474ACPICA reference for additional details. Adds one new file, 5475utilities/utaddress.c. Lin Ming, Bob Moore. 5476 5477Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 5478Control 5479and 5480Status registers, update the ACPI 5.0 flags, and update internal data 5481structures to handle an FADT larger than 256 bytes. The size of the ACPI 54825.0 5483FADT is 268 bytes. 5484 5485Updated all ACPICA copyrights and signons to 2012. Added the 2012 5486copyright to 5487all module headers and signons, including the standard Linux header. This 5488affects virtually every file in the ACPICA core subsystem, iASL compiler, 5489and 5490all ACPICA utilities. 5491 5492Example Code and Data Size: These are the sizes for the OS-independent 5493acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5494debug 5495version of the code includes the debug output trace mechanism and has a 5496much 5497larger code and data size. 5498 5499 Previous Release: 5500 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 5501 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 5502 Current Release: 5503 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 5504 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 5505 5506 55072) iASL Compiler/Disassembler and Tools: 5508 5509Disassembler: fixed a problem with the automatic resource tag generation 5510support. Fixes a problem where the resource tags are inadvertently not 5511constructed if the table being disassembled contains external references 5512to 5513control methods. Moved the actual construction of the tags to after the 5514final 5515namespace is constructed (after 2nd parse is invoked due to external 5516control 5517method references.) ACPICA BZ 941. 5518 5519Table Compiler: Make all "generic" operators caseless. These are the 5520operators 5521like UINT8, String, etc. Making these caseless improves ease-of-use. 5522ACPICA BZ 5523934. 5524 5525---------------------------------------- 552623 November 2011. Summary of changes for version 20111123: 5527 55280) ACPI 5.0 Support: 5529 5530This release contains full support for the ACPI 5.0 specification, as 5531summarized below. 5532 5533Reduced Hardware Support: 5534------------------------- 5535 5536This support allows for ACPI systems without the usual ACPI hardware. 5537This 5538support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 5539will 5540not attempt to initialize or use any of the usual ACPI hardware. Note, 5541when 5542this flag is set, all of the following ACPI hardware is assumed to be not 5543present and is not initialized or accessed: 5544 5545 General Purpose Events (GPEs) 5546 Fixed Events (PM1a/PM1b and PM Control) 5547 Power Management Timer and Console Buttons (power/sleep) 5548 Real-time Clock Alarm 5549 Global Lock 5550 System Control Interrupt (SCI) 5551 The FACS is assumed to be non-existent 5552 5553ACPI Tables: 5554------------ 5555 5556All new tables and updates to existing tables are fully supported in the 5557ACPICA headers (for use by device drivers), the disassembler, and the 5558iASL 5559Data Table Compiler. ACPI 5.0 defines these new tables: 5560 5561 BGRT /* Boot Graphics Resource Table */ 5562 DRTM /* Dynamic Root of Trust for Measurement table */ 5563 FPDT /* Firmware Performance Data Table */ 5564 GTDT /* Generic Timer Description Table */ 5565 MPST /* Memory Power State Table */ 5566 PCCT /* Platform Communications Channel Table */ 5567 PMTT /* Platform Memory Topology Table */ 5568 RASF /* RAS Feature table */ 5569 5570Operation Regions/SpaceIDs: 5571--------------------------- 5572 5573All new operation regions are fully supported by the iASL compiler, the 5574disassembler, and the ACPICA runtime code (for dispatch to region 5575handlers.) 5576The new operation region Space IDs are: 5577 5578 GeneralPurposeIo 5579 GenericSerialBus 5580 5581Resource Descriptors: 5582--------------------- 5583 5584All new ASL resource descriptors are fully supported by the iASL 5585compiler, 5586the 5587ASL/AML disassembler, and the ACPICA runtime Resource Manager code 5588(including 5589all new predefined resource tags). New descriptors are: 5590 5591 FixedDma 5592 GpioIo 5593 GpioInt 5594 I2cSerialBus 5595 SpiSerialBus 5596 UartSerialBus 5597 5598ASL/AML Operators, New and Modified: 5599------------------------------------ 5600 5601One new operator is added, the Connection operator, which is used to 5602associate 5603a GeneralPurposeIo or GenericSerialBus resource descriptor with 5604individual 5605field objects within an operation region. Several new protocols are 5606associated 5607with the AccessAs operator. All are fully supported by the iASL compiler, 5608disassembler, and runtime ACPICA AML interpreter: 5609 5610 Connection // Declare Field Connection 5611attributes 5612 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 5613 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 5614Protocol 5615 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 5616 RawDataBuffer // Data type for Vendor Data 5617fields 5618 5619Predefined ASL/AML Objects: 5620--------------------------- 5621 5622All new predefined objects/control-methods are supported by the iASL 5623compiler 5624and the ACPICA runtime validation/repair (arguments and return values.) 5625New 5626predefined names include the following: 5627 5628Standard Predefined Names (Objects or Control Methods): 5629 _AEI, _CLS, _CPC, _CWS, _DEP, 5630 _DLM, _EVT, _GCP, _CRT, _GWS, 5631 _HRV, _PRE, _PSE, _SRT, _SUB. 5632 5633Resource Tags (Names used to access individual fields within resource 5634descriptors): 5635 _DBT, _DPL, _DRS, _END, _FLC, 5636 _IOR, _LIN, _MOD, _PAR, _PHA, 5637 _PIN, _PPI, _POL, _RXL, _SLV, 5638 _SPE, _STB, _TXL, _VEN. 5639 5640ACPICA External Interfaces: 5641--------------------------- 5642 5643Several new interfaces have been defined for use by ACPI-related device 5644drivers and other host OS services: 5645 5646AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 5647to 5648acquire and release AML mutexes that are defined in the DSDT/SSDT tables 5649provided by the BIOS. They are intended to be used in conjunction with 5650the 5651ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 5652mutual exclusion with the AML code/interpreter. 5653 5654AcpiGetEventResources: Returns the (formatted) resource descriptors as 5655defined 5656by the ACPI 5.0 _AEI object (ACPI Event Information). This object 5657provides 5658resource descriptors associated with hardware-reduced platform events, 5659similar 5660to the AcpiGetCurrentResources interface. 5661 5662Operation Region Handlers: For General Purpose IO and Generic Serial Bus 5663operation regions, information about the Connection() object and any 5664optional 5665length information is passed to the region handler within the Context 5666parameter. 5667 5668AcpiBufferToResource: This interface converts a raw AML buffer containing 5669a 5670resource template or resource descriptor to the ACPI_RESOURCE internal 5671format 5672suitable for use by device drivers. Can be used by an operation region 5673handler 5674to convert the Connection() buffer object into a ACPI_RESOURCE. 5675 5676Miscellaneous/Tools/TestSuites: 5677------------------------------- 5678 5679Support for extended _HID names (Four alpha characters instead of three). 5680Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 5681Support for ACPI 5.0 features in the ASLTS test suite. 5682Fully updated documentation (ACPICA and iASL reference documents.) 5683 5684ACPI Table Definition Language: 5685------------------------------- 5686 5687Support for this language was implemented and released as a subsystem of 5688the 5689iASL compiler in 2010. (See the iASL compiler User Guide.) 5690 5691 5692Non-ACPI 5.0 changes for this release: 5693-------------------------------------- 5694 56951) ACPICA Core Subsystem: 5696 5697Fix a problem with operation region declarations where a failure can 5698occur 5699if 5700the region name and an argument that evaluates to an object (such as the 5701region address) are in different namespace scopes. Lin Ming, ACPICA BZ 5702937. 5703 5704Do not abort an ACPI table load if an invalid space ID is found within. 5705This 5706will be caught later if the offending method is executed. ACPICA BZ 925. 5707 5708Fixed an issue with the FFixedHW space ID where the ID was not always 5709recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 5710 5711Fixed a problem with the 32-bit generation of the unix-specific OSL 5712(osunixxf.c). Lin Ming, ACPICA BZ 936. 5713 5714Several changes made to enable generation with the GCC 4.6 compiler. 5715ACPICA BZ 5716935. 5717 5718New error messages: Unsupported I/O requests (not 8/16/32 bit), and 5719Index/Bank 5720field registers out-of-range. 5721 57222) iASL Compiler/Disassembler and Tools: 5723 5724iASL: Implemented the __PATH__ operator, which returns the full pathname 5725of 5726the current source file. 5727 5728AcpiHelp: Automatically display expanded keyword information for all ASL 5729operators. 5730 5731Debugger: Add "Template" command to disassemble/dump resource template 5732buffers. 5733 5734Added a new master script to generate and execute the ASLTS test suite. 5735Automatically handles 32- and 64-bit generation. See tests/aslts.sh 5736 5737iASL: Fix problem with listing generation during processing of the 5738Switch() 5739operator where AML listing was disabled until the entire Switch block was 5740completed. 5741 5742iASL: Improve support for semicolon statement terminators. Fix "invalid 5743character" message for some cases when the semicolon is used. Semicolons 5744are 5745now allowed after every <Term> grammar element. ACPICA BZ 927. 5746 5747iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 5748923. 5749 5750Disassembler: Fix problem with disassembly of the DataTableRegion 5751operator 5752where an inadvertent "Unhandled deferred opcode" message could be 5753generated. 5754 57553) Example Code and Data Size 5756 5757These are the sizes for the OS-independent acpica.lib produced by the 5758Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 5759includes the debug output trace mechanism and has a much larger code and 5760data 5761size. 5762 5763 Previous Release: 5764 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5765 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5766 Current Release: 5767 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 5768 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 5769 5770---------------------------------------- 577122 September 2011. Summary of changes for version 20110922: 5772 57730) ACPI 5.0 News: 5774 5775Support for ACPI 5.0 in ACPICA has been underway for several months and 5776will 5777be released at the same time that ACPI 5.0 is officially released. 5778 5779The ACPI 5.0 specification is on track for release in the next few 5780months. 5781 57821) ACPICA Core Subsystem: 5783 5784Fixed a problem where the maximum sleep time for the Sleep() operator was 5785intended to be limited to two seconds, but was inadvertently limited to 578620 5787seconds instead. 5788 5789Linux and Unix makefiles: Added header file dependencies to ensure 5790correct 5791generation of ACPICA core code and utilities. Also simplified the 5792makefiles 5793considerably through the use of the vpath variable to specify search 5794paths. 5795ACPICA BZ 924. 5796 57972) iASL Compiler/Disassembler and Tools: 5798 5799iASL: Implemented support to check the access length for all fields 5800created to 5801access named Resource Descriptor fields. For example, if a resource field 5802is 5803defined to be two bits, a warning is issued if a CreateXxxxField() is 5804used 5805with an incorrect bit length. This is implemented for all current 5806resource 5807descriptor names. ACPICA BZ 930. 5808 5809Disassembler: Fixed a byte ordering problem with the output of 24-bit and 581056- 5811bit integers. 5812 5813iASL: Fixed a couple of issues associated with variable-length package 5814objects. 1) properly handle constants like One, Ones, Zero -- do not make 5815a 5816VAR_PACKAGE when these are used as a package length. 2) Allow the 5817VAR_PACKAGE 5818opcode (in addition to PACKAGE) when validating object types for 5819predefined 5820names. 5821 5822iASL: Emit statistics for all output files (instead of just the ASL input 5823and 5824AML output). Includes listings, hex files, etc. 5825 5826iASL: Added -G option to the table compiler to allow the compilation of 5827custom 5828ACPI tables. The only part of a table that is required is the standard 582936- 5830byte 5831ACPI header. 5832 5833AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 5834headers), 5835which also adds correct 64-bit support. Also, now all output filenames 5836are 5837completely lower case. 5838 5839AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 5840loading table files. A warning is issued for any such tables. The only 5841exception is an FADT. This also fixes a possible fault when attempting to 5842load 5843non-AML tables. ACPICA BZ 932. 5844 5845AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 5846a 5847missing table terminator could cause a fault when using the -p option. 5848 5849AcpiSrc: Fixed a possible divide-by-zero fault when generating file 5850statistics. 5851 58523) Example Code and Data Size 5853 5854These are the sizes for the OS-independent acpica.lib produced by the 5855Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 5856includes the debug output trace mechanism and has a much larger code and 5857data 5858size. 5859 5860 Previous Release (VC 9.0): 5861 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5862 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5863 Current Release (VC 9.0): 5864 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5865 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5866 5867 5868---------------------------------------- 586923 June 2011. Summary of changes for version 20110623: 5870 58711) ACPI CA Core Subsystem: 5872 5873Updated the predefined name repair mechanism to not attempt repair of a 5874_TSS 5875return object if a _PSS object is present. We can only sort the _TSS 5876return 5877package if there is no _PSS within the same scope. This is because if 5878_PSS 5879is 5880present, the ACPI specification dictates that the _TSS Power Dissipation 5881field 5882is to be ignored, and therefore some BIOSs leave garbage values in the 5883_TSS 5884Power field(s). In this case, it is best to just return the _TSS package 5885as- 5886is. Reported by, and fixed with assistance from Fenghua Yu. 5887 5888Added an option to globally disable the control method return value 5889validation 5890and repair. This runtime option can be used to disable return value 5891repair 5892if 5893this is causing a problem on a particular machine. Also added an option 5894to 5895AcpiExec (-dr) to set this disable flag. 5896 5897All makefiles and project files: Major changes to improve generation of 5898ACPICA 5899tools. ACPICA BZ 912: 5900 Reduce default optimization levels to improve compatibility 5901 For Linux, add strict-aliasing=0 for gcc 4 5902 Cleanup and simplify use of command line defines 5903 Cleanup multithread library support 5904 Improve usage messages 5905 5906Linux-specific header: update handling of THREAD_ID and pthread. For the 590732- 5908bit case, improve casting to eliminate possible warnings, especially with 5909the 5910acpica tools. 5911 5912Example Code and Data Size: These are the sizes for the OS-independent 5913acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5914debug 5915version of the code includes the debug output trace mechanism and has a 5916much 5917larger code and data size. 5918 5919 Previous Release (VC 9.0): 5920 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 5921 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5922 Current Release (VC 9.0): 5923 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5924 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5925 59262) iASL Compiler/Disassembler and Tools: 5927 5928With this release, a new utility named "acpihelp" has been added to the 5929ACPICA 5930package. This utility summarizes the ACPI specification chapters for the 5931ASL 5932and AML languages. It generates under Linux/Unix as well as Windows, and 5933provides the following functionality: 5934 Find/display ASL operator(s) -- with description and syntax. 5935 Find/display ASL keyword(s) -- with exact spelling and descriptions. 5936 Find/display ACPI predefined name(s) -- with description, number 5937 of arguments, and the return value data type. 5938 Find/display AML opcode name(s) -- with opcode, arguments, and 5939grammar. 5940 Decode/display AML opcode -- with opcode name, arguments, and 5941grammar. 5942 5943Service Layers: Make multi-thread support configurable. Conditionally 5944compile 5945the multi-thread support so that threading libraries will not be linked 5946if 5947not 5948necessary. The only tool that requires multi-thread support is AcpiExec. 5949 5950iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 5951of 5952Bison appear to want the interface to yyerror to be a const char * (or at 5953least this is a problem when generating iASL on some systems.) ACPICA BZ 5954923 5955Pierre Lejeune. 5956 5957Tools: Fix for systems where O_BINARY is not defined. Only used for 5958Windows 5959versions of the tools. 5960 5961---------------------------------------- 596227 May 2011. Summary of changes for version 20110527: 5963 59641) ACPI CA Core Subsystem: 5965 5966ASL Load() operator: Reinstate most restrictions on the incoming ACPI 5967table 5968signature. Now, only allow SSDT, OEMx, and a null signature. History: 5969 1) Originally, we checked the table signature for "SSDT" or "PSDT". 5970 (PSDT is now obsolete.) 5971 2) We added support for OEMx tables, signature "OEM" plus a fourth 5972 "don't care" character. 5973 3) Valid tables were encountered with a null signature, so we just 5974 gave up on validating the signature, (05/2008). 5975 4) We encountered non-AML tables such as the MADT, which caused 5976 interpreter errors and kernel faults. So now, we once again allow 5977 only SSDT, OEMx, and now, also a null signature. (05/2011). 5978 5979Added the missing _TDL predefined name to the global name list in order 5980to 5981enable validation. Affects both the core ACPICA code and the iASL 5982compiler. 5983 5984Example Code and Data Size: These are the sizes for the OS-independent 5985acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5986debug 5987version of the code includes the debug output trace mechanism and has a 5988much 5989larger code and data size. 5990 5991 Previous Release (VC 9.0): 5992 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 5993 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 5994 Current Release (VC 9.0): 5995 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 5996 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5997 59982) iASL Compiler/Disassembler and Tools: 5999 6000Debugger/AcpiExec: Implemented support for "complex" method arguments on 6001the 6002debugger command line. This adds support beyond simple integers -- 6003including 6004Strings, Buffers, and Packages. Includes support for nested packages. 6005Increased the default command line buffer size to accommodate these 6006arguments. 6007See the ACPICA reference for details and syntax. ACPICA BZ 917. 6008 6009Debugger/AcpiExec: Implemented support for "default" method arguments for 6010the 6011Execute/Debug command. Now, the debugger will always invoke a control 6012method 6013with the required number of arguments -- even if the command line 6014specifies 6015none or insufficient arguments. It uses default integer values for any 6016missing 6017arguments. Also fixes a bug where only six method arguments maximum were 6018supported instead of the required seven. 6019 6020Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 6021and 6022also return status in order to prevent buffer overruns. See the ACPICA 6023reference for details and syntax. ACPICA BZ 921 6024 6025iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 6026makefiles to simplify support for the two different but similar parser 6027generators, bison and yacc. 6028 6029Updated the generic unix makefile for gcc 4. The default gcc version is 6030now 6031expected to be 4 or greater, since options specific to gcc 4 are used. 6032 6033---------------------------------------- 603413 April 2011. Summary of changes for version 20110413: 6035 60361) ACPI CA Core Subsystem: 6037 6038Implemented support to execute a so-called "orphan" _REG method under the 6039EC 6040device. This change will force the execution of a _REG method underneath 6041the 6042EC 6043device even if there is no corresponding operation region of type 6044EmbeddedControl. Fixes a problem seen on some machines and apparently is 6045compatible with Windows behavior. ACPICA BZ 875. 6046 6047Added more predefined methods that are eligible for automatic NULL 6048package 6049element removal. This change adds another group of predefined names to 6050the 6051list 6052of names that can be repaired by having NULL package elements dynamically 6053removed. This group are those methods that return a single variable- 6054length 6055package containing simple data types such as integers, buffers, strings. 6056This 6057includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 6058_PSL, 6059_Sx, 6060and _TZD. ACPICA BZ 914. 6061 6062Split and segregated all internal global lock functions to a new file, 6063evglock.c. 6064 6065Updated internal address SpaceID for DataTable regions. Moved this 6066internal 6067space 6068id in preparation for ACPI 5.0 changes that will include some new space 6069IDs. 6070This 6071change should not affect user/host code. 6072 6073Example Code and Data Size: These are the sizes for the OS-independent 6074acpica.lib 6075produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 6076version of 6077the code includes the debug output trace mechanism and has a much larger 6078code 6079and 6080data size. 6081 6082 Previous Release (VC 9.0): 6083 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 6084 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 6085 Current Release (VC 9.0): 6086 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 6087 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 6088 60892) iASL Compiler/Disassembler and Tools: 6090 6091iASL/DTC: Major update for new grammar features. Allow generic data types 6092in 6093custom ACPI tables. Field names are now optional. Any line can be split 6094to 6095multiple lines using the continuation char (\). Large buffers now use 6096line- 6097continuation character(s) and no colon on the continuation lines. See the 6098grammar 6099update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 6100Moore. 6101 6102iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 6103statements. 6104Since the parser stuffs a "zero" as the return value for these statements 6105(due 6106to 6107the underlying AML grammar), they were seen as "return with value" by the 6108iASL 6109semantic checking. They are now seen correctly as "null" return 6110statements. 6111 6112iASL: Check if a_REG declaration has a corresponding Operation Region. 6113Adds a 6114check for each _REG to ensure that there is in fact a corresponding 6115operation 6116region declaration in the same scope. If not, the _REG method is not very 6117useful 6118since it probably won't be executed. ACPICA BZ 915. 6119 6120iASL/DTC: Finish support for expression evaluation. Added a new 6121expression 6122parser 6123that implements c-style operator precedence and parenthesization. ACPICA 6124bugzilla 6125908. 6126 6127Disassembler/DTC: Remove support for () and <> style comments in data 6128tables. 6129Now 6130that DTC has full expression support, we don't want to have comment 6131strings 6132that 6133start with a parentheses or a less-than symbol. Now, only the standard /* 6134and 6135// 6136comments are supported, as well as the bracket [] comments. 6137 6138AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 6139"unusual" 6140headers in the acpidump file. Update the header validation to support 6141these 6142tables. Problem introduced in previous AcpiXtract version in the change 6143to 6144support "wrong checksum" error messages emitted by acpidump utility. 6145 6146iASL: Add a * option to generate all template files (as a synonym for 6147ALL) 6148as 6149in 6150"iasl -T *" or "iasl -T ALL". 6151 6152iASL/DTC: Do not abort compiler on fatal errors. We do not want to 6153completely 6154abort the compiler on "fatal" errors, simply should abort the current 6155compile. 6156This allows multiple compiles with a single (possibly wildcard) compiler 6157invocation. 6158 6159---------------------------------------- 616016 March 2011. Summary of changes for version 20110316: 6161 61621) ACPI CA Core Subsystem: 6163 6164Fixed a problem caused by a _PRW method appearing at the namespace root 6165scope 6166during the setup of wake GPEs. A fault could occur if a _PRW directly 6167under 6168the 6169root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 6170 6171Implemented support for "spurious" Global Lock interrupts. On some 6172systems, a 6173global lock interrupt can occur without the pending flag being set. Upon 6174a 6175GL 6176interrupt, we now ensure that a thread is actually waiting for the lock 6177before 6178signaling GL availability. Rafael Wysocki, Bob Moore. 6179 6180Example Code and Data Size: These are the sizes for the OS-independent 6181acpica.lib 6182produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 6183version of 6184the code includes the debug output trace mechanism and has a much larger 6185code 6186and 6187data size. 6188 6189 Previous Release (VC 9.0): 6190 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6191 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6192 Current Release (VC 9.0): 6193 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 6194 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 6195 61962) iASL Compiler/Disassembler and Tools: 6197 6198Implemented full support for the "SLIC" ACPI table. Includes support in 6199the 6200header files, disassembler, table compiler, and template generator. Bob 6201Moore, 6202Lin Ming. 6203 6204AcpiXtract: Correctly handle embedded comments and messages from 6205AcpiDump. 6206Apparently some or all versions of acpidump will occasionally emit a 6207comment 6208like 6209"Wrong checksum", etc., into the dump file. This was causing problems for 6210AcpiXtract. ACPICA BZ 905. 6211 6212iASL: Fix the Linux makefile by removing an inadvertent double file 6213inclusion. 6214ACPICA BZ 913. 6215 6216AcpiExec: Update installation of operation region handlers. Install one 6217handler 6218for a user-defined address space. This is used by the ASL test suite 6219(ASLTS). 6220 6221---------------------------------------- 622211 February 2011. Summary of changes for version 20110211: 6223 62241) ACPI CA Core Subsystem: 6225 6226Added a mechanism to defer _REG methods for some early-installed 6227handlers. 6228Most user handlers should be installed before call to 6229AcpiEnableSubsystem. 6230However, Event handlers and region handlers should be installed after 6231AcpiInitializeObjects. Override handlers for the "default" regions should 6232be 6233installed early, however. This change executes all _REG methods for the 6234default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 6235chicken/egg issues between them. ACPICA BZ 848. 6236 6237Implemented an optimization for GPE detection. This optimization will 6238simply 6239ignore GPE registers that contain no enabled GPEs -- there is no need to 6240read the register since this information is available internally. This 6241becomes more important on machines with a large GPE space. ACPICA 6242bugzilla 6243884. Lin Ming. Suggestion from Joe Liu. 6244 6245Removed all use of the highly unreliable FADT revision field. The 6246revision 6247number in the FADT has been found to be completely unreliable and cannot 6248be 6249trusted. Only the actual table length can be used to infer the version. 6250This 6251change updates the ACPICA core and the disassembler so that both no 6252longer 6253even look at the FADT version and instead depend solely upon the FADT 6254length. 6255 6256Fix an unresolved name issue for the no-debug and no-error-message source 6257generation cases. The _AcpiModuleName was left undefined in these cases, 6258but 6259it is actually needed as a parameter to some interfaces. Define 6260_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 6261 6262Split several large files (makefiles and project files updated) 6263 utglobal.c -> utdecode.c 6264 dbcomds.c -> dbmethod.c dbnames.c 6265 dsopcode.c -> dsargs.c dscontrol.c 6266 dsload.c -> dsload2.c 6267 aslanalyze.c -> aslbtypes.c aslwalks.c 6268 6269Example Code and Data Size: These are the sizes for the OS-independent 6270acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6271debug version of the code includes the debug output trace mechanism and 6272has 6273a much larger code and data size. 6274 6275 Previous Release (VC 9.0): 6276 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6277 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6278 Current Release (VC 9.0): 6279 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6280 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6281 62822) iASL Compiler/Disassembler and Tools: 6283 6284iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 6285These are useful C-style macros with the standard definitions. ACPICA 6286bugzilla 898. 6287 6288iASL/DTC: Added support for integer expressions and labels. Support for 6289full 6290expressions for all integer fields in all ACPI tables. Support for labels 6291in 6292"generic" portions of tables such as UEFI. See the iASL reference manual. 6293 6294Debugger: Added a command to display the status of global handlers. The 6295"handlers" command will display op region, fixed event, and miscellaneous 6296global handlers. installation status -- and for op regions, whether 6297default 6298or user-installed handler will be used. 6299 6300iASL: Warn if reserved method incorrectly returns a value. Many 6301predefined 6302names are defined such that they do not return a value. If implemented as 6303a 6304method, issue a warning if such a name explicitly returns a value. ACPICA 6305Bugzilla 855. 6306 6307iASL: Added detection of GPE method name conflicts. Detects a conflict 6308where 6309there are two GPE methods of the form _Lxy and _Exy in the same scope. 6310(For 6311example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 6312 6313iASL/DTC: Fixed a couple input scanner issues with comments and line 6314numbers. Comment remover could get confused and miss a comment ending. 6315Fixed 6316a problem with line counter maintenance. 6317 6318iASL/DTC: Reduced the severity of some errors from fatal to error. There 6319is 6320no need to abort on simple errors within a field definition. 6321 6322Debugger: Simplified the output of the help command. All help output now 6323in 6324a single screen, instead of help subcommands. ACPICA Bugzilla 897. 6325 6326---------------------------------------- 632712 January 2011. Summary of changes for version 20110112: 6328 63291) ACPI CA Core Subsystem: 6330 6331Fixed a race condition between method execution and namespace walks that 6332can 6333possibly cause a fault. The problem was apparently introduced in version 633420100528 as a result of a performance optimization that reduces the 6335number 6336of 6337namespace walks upon method exit by using the delete_namespace_subtree 6338function instead of the delete_namespace_by_owner function used 6339previously. 6340Bug is a missing namespace lock in the delete_namespace_subtree function. 6341dana.myers@oracle.com 6342 6343Fixed several issues and a possible fault with the automatic "serialized" 6344method support. History: This support changes a method to "serialized" on 6345the 6346fly if the method generates an AE_ALREADY_EXISTS error, indicating the 6347possibility that it cannot handle reentrancy. This fix repairs a couple 6348of 6349issues seen in the field, especially on machines with many cores: 6350 6351 1) Delete method children only upon the exit of the last thread, 6352 so as to not delete objects out from under other running threads 6353 (and possibly causing a fault.) 6354 2) Set the "serialized" bit for the method only upon the exit of the 6355 Last thread, so as to not cause deadlock when running threads 6356 attempt to exit. 6357 3) Cleanup the use of the AML "MethodFlags" and internal method flags 6358 so that there is no longer any confusion between the two. 6359 6360 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 6361 6362Debugger: Now lock the namespace for duration of a namespace dump. 6363Prevents 6364issues if the namespace is changing dynamically underneath the debugger. 6365Especially affects temporary namespace nodes, since the debugger displays 6366these also. 6367 6368Updated the ordering of include files. The ACPICA headers should appear 6369before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 6370set 6371any necessary compiler-specific defines, etc. Affects the ACPI-related 6372tools 6373and utilities. 6374 6375Updated all ACPICA copyrights and signons to 2011. Added the 2011 6376copyright 6377to all module headers and signons, including the Linux header. This 6378affects 6379virtually every file in the ACPICA core subsystem, iASL compiler, and all 6380utilities. 6381 6382Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 6383project files for VC++ 6.0 are now obsolete. New project files can be 6384found 6385under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 6386details. 6387 6388Example Code and Data Size: These are the sizes for the OS-independent 6389acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6390debug version of the code includes the debug output trace mechanism and 6391has a 6392much larger code and data size. 6393 6394 Previous Release (VC 6.0): 6395 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 6396 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 6397 Current Release (VC 9.0): 6398 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6399 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6400 64012) iASL Compiler/Disassembler and Tools: 6402 6403iASL: Added generic data types to the Data Table compiler. Add "generic" 6404data 6405types such as UINT32, String, Unicode, etc., to simplify the generation 6406of 6407platform-defined tables such as UEFI. Lin Ming. 6408 6409iASL: Added listing support for the Data Table Compiler. Adds listing 6410support 6411(-l) to display actual binary output for each line of input code. 6412 6413---------------------------------------- 641409 December 2010. Summary of changes for version 20101209: 6415 64161) ACPI CA Core Subsystem: 6417 6418Completed the major overhaul of the GPE support code that was begun in 6419July 64202010. Major features include: removal of _PRW execution in ACPICA (host 6421executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 6422changes to existing interfaces, simplification of GPE handler operation, 6423and 6424a handful of new interfaces: 6425 6426 AcpiUpdateAllGpes 6427 AcpiFinishGpe 6428 AcpiSetupGpeForWake 6429 AcpiSetGpeWakeMask 6430 One new file, evxfgpe.c to consolidate all external GPE interfaces. 6431 6432See the ACPICA Programmer Reference for full details and programming 6433information. See the new section 4.4 "General Purpose Event (GPE) 6434Support" 6435for a full overview, and section 8.7 "ACPI General Purpose Event 6436Management" 6437for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 6438Ming, 6439Bob Moore, Rafael Wysocki. 6440 6441Implemented a new GPE feature for Windows compatibility, the "Implicit 6442Wake 6443GPE Notify". This feature will automatically issue a Notify(2) on a 6444device 6445when a Wake GPE is received if there is no corresponding GPE method or 6446handler. ACPICA BZ 870. 6447 6448Fixed a problem with the Scope() operator during table parse and load 6449phase. 6450During load phase (table load or method execution), the scope operator 6451should 6452not enter the target into the namespace. Instead, it should open a new 6453scope 6454at the target location. Linux BZ 19462, ACPICA BZ 882. 6455 6456Example Code and Data Size: These are the sizes for the OS-independent 6457acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6458debug version of the code includes the debug output trace mechanism and 6459has a 6460much larger code and data size. 6461 6462 Previous Release: 6463 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 6464 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 6465 Current Release: 6466 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6467 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6468 64692) iASL Compiler/Disassembler and Tools: 6470 6471iASL: Relax the alphanumeric restriction on _CID strings. These strings 6472are 6473"bus-specific" per the ACPI specification, and therefore any characters 6474are 6475acceptable. The only checks that can be performed are for a null string 6476and 6477perhaps for a leading asterisk. ACPICA BZ 886. 6478 6479iASL: Fixed a problem where a syntax error that caused a premature EOF 6480condition on the source file emitted a very confusing error message. The 6481premature EOF is now detected correctly. ACPICA BZ 891. 6482 6483Disassembler: Decode the AccessSize within a Generic Address Structure 6484(byte 6485access, word access, etc.) Note, this field does not allow arbitrary bit 6486access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 6487 6488New: AcpiNames utility - Example namespace dump utility. Shows an example 6489of 6490ACPICA configuration for a minimal namespace dump utility. Uses table and 6491namespace managers, but no AML interpreter. Does not add any 6492functionality 6493over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 6494partition and configure ACPICA. ACPICA BZ 883. 6495 6496AML Debugger: Increased the debugger buffer size for method return 6497objects. 6498Was 4K, increased to 16K. Also enhanced error messages for debugger 6499method 6500execution, including the buffer overflow case. 6501 6502---------------------------------------- 650313 October 2010. Summary of changes for version 20101013: 6504 65051) ACPI CA Core Subsystem: 6506 6507Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 6508now 6509clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 6510HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 6511 6512Changed the type of the predefined namespace object _TZ from ThermalZone 6513to 6514Device. This was found to be confusing to the host software that 6515processes 6516the various thermal zones, since _TZ is not really a ThermalZone. 6517However, 6518a 6519Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 6520Zhang. 6521 6522Added Windows Vista SP2 to the list of supported _OSI strings. The actual 6523string is "Windows 2006 SP2". 6524 6525Eliminated duplicate code in AcpiUtExecute* functions. Now that the 6526nsrepair 6527code automatically repairs _HID-related strings, this type of code is no 6528longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 6529878. 6530 6531Example Code and Data Size: These are the sizes for the OS-independent 6532acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6533debug version of the code includes the debug output trace mechanism and 6534has a 6535much larger code and data size. 6536 6537 Previous Release: 6538 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6539 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6540 Current Release: 6541 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6542 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6543 65442) iASL Compiler/Disassembler and Tools: 6545 6546iASL: Implemented additional compile-time validation for _HID strings. 6547The 6548non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 6549length 6550of 6551the string must be exactly seven or eight characters. For both _HID and 6552_CID 6553strings, all characters must be alphanumeric. ACPICA BZ 874. 6554 6555iASL: Allow certain "null" resource descriptors. Some BIOS code creates 6556descriptors that are mostly or all zeros, with the expectation that they 6557will 6558be filled in at runtime. iASL now allows this as long as there is a 6559"resource 6560tag" (name) associated with the descriptor, which gives the ASL a handle 6561needed to modify the descriptor. ACPICA BZ 873. 6562 6563Added single-thread support to the generic Unix application OSL. 6564Primarily 6565for iASL support, this change removes the use of semaphores in the 6566single- 6567threaded ACPICA tools/applications - increasing performance. The 6568_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 6569option. ACPICA BZ 879. 6570 6571AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 6572support 6573for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 6574 6575iASL: Moved all compiler messages to a new file, aslmessages.h. 6576 6577---------------------------------------- 657815 September 2010. Summary of changes for version 20100915: 6579 65801) ACPI CA Core Subsystem: 6581 6582Removed the AcpiOsDerivePciId OSL interface. The various host 6583implementations 6584of this function were not OS-dependent and are now obsolete and can be 6585removed from all host OSLs. This function has been replaced by 6586AcpiHwDerivePciId, which is now part of the ACPICA core code. 6587AcpiHwDerivePciId has been implemented without recursion. Adds one new 6588module, hwpci.c. ACPICA BZ 857. 6589 6590Implemented a dynamic repair for _HID and _CID strings. The following 6591problems are now repaired at runtime: 1) Remove a leading asterisk in the 6592string, and 2) the entire string is uppercased. Both repairs are in 6593accordance with the ACPI specification and will simplify host driver 6594code. 6595ACPICA BZ 871. 6596 6597The ACPI_THREAD_ID type is no longer configurable, internally it is now 6598always UINT64. This simplifies the ACPICA code, especially any printf 6599output. 6600UINT64 is the only common data type for all thread_id types across all 6601operating systems. It is now up to the host OSL to cast the native 6602thread_id 6603type to UINT64 before returning the value to ACPICA (via 6604AcpiOsGetThreadId). 6605Lin Ming, Bob Moore. 6606 6607Added the ACPI_INLINE type to enhance the ACPICA configuration. The 6608"inline" 6609keyword is not standard across compilers, and this type allows inline to 6610be 6611configured on a per-compiler basis. Lin Ming. 6612 6613Made the system global AcpiGbl_SystemAwakeAndRunning publically 6614available. 6615Added an extern for this boolean in acpixf.h. Some hosts utilize this 6616value 6617during suspend/restore operations. ACPICA BZ 869. 6618 6619All code that implements error/warning messages with the "ACPI:" prefix 6620has 6621been moved to a new module, utxferror.c. 6622 6623The UINT64_OVERLAY was moved to utmath.c, which is the only module where 6624it 6625is used. ACPICA BZ 829. Lin Ming, Bob Moore. 6626 6627Example Code and Data Size: These are the sizes for the OS-independent 6628acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6629debug version of the code includes the debug output trace mechanism and 6630has a 6631much larger code and data size. 6632 6633 Previous Release: 6634 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 6635 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 6636 Current Release: 6637 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6638 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6639 66402) iASL Compiler/Disassembler and Tools: 6641 6642iASL/Disassembler: Write ACPI errors to stderr instead of the output 6643file. 6644This keeps the output files free of random error messages that may 6645originate 6646from within the namespace/interpreter code. Used this opportunity to 6647merge 6648all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 6649866. Lin Ming, Bob Moore. 6650 6651Tools: update some printfs for ansi warnings on size_t. Handle width 6652change 6653of size_t on 32-bit versus 64-bit generations. Lin Ming. 6654 6655---------------------------------------- 665606 August 2010. Summary of changes for version 20100806: 6657 66581) ACPI CA Core Subsystem: 6659 6660Designed and implemented a new host interface to the _OSI support code. 6661This 6662will allow the host to dynamically add or remove multiple _OSI strings, 6663as 6664well as install an optional handler that is called for each _OSI 6665invocation. 6666Also added a new AML debugger command, 'osi' to display and modify the 6667global 6668_OSI string table, and test support in the AcpiExec utility. See the 6669ACPICA 6670reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 6671New Functions: 6672 AcpiInstallInterface - Add an _OSI string. 6673 AcpiRemoveInterface - Delete an _OSI string. 6674 AcpiInstallInterfaceHandler - Install optional _OSI handler. 6675Obsolete Functions: 6676 AcpiOsValidateInterface - no longer used. 6677New Files: 6678 source/components/utilities/utosi.c 6679 6680Re-introduced the support to enable multi-byte transfers for Embedded 6681Controller (EC) operation regions. A reported problem was found to be a 6682bug 6683in the host OS, not in the multi-byte support. Previously, the maximum 6684data 6685size passed to the EC operation region handler was a single byte. There 6686are 6687often EC Fields larger than one byte that need to be transferred, and it 6688is 6689useful for the EC driver to lock these as a single transaction. This 6690change 6691enables single transfers larger than 8 bits. This effectively changes the 6692access to the EC space from ByteAcc to AnyAcc, and will probably require 6693changes to the host OS Embedded Controller driver to enable 16/32/64/256- 6694bit 6695transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 6696 6697Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 6698prototype in acpiosxf.h had the output value pointer as a (void *). 6699It should be a (UINT64 *). This may affect some host OSL code. 6700 6701Fixed a couple problems with the recently modified Linux makefiles for 6702iASL 6703and AcpiExec. These new makefiles place the generated object files in the 6704local directory so that there can be no collisions between the files that 6705are 6706shared between them that are compiled with different options. 6707 6708Example Code and Data Size: These are the sizes for the OS-independent 6709acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6710debug version of the code includes the debug output trace mechanism and 6711has a 6712much larger code and data size. 6713 6714 Previous Release: 6715 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6716 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 6717 Current Release: 6718 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 6719 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 6720 67212) iASL Compiler/Disassembler and Tools: 6722 6723iASL/Disassembler: Added a new option (-da, "disassemble all") to load 6724the 6725namespace from and disassemble an entire group of AML files. Useful for 6726loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 6727and 6728disassembling with one simple command. ACPICA BZ 865. Lin Ming. 6729 6730iASL: Allow multiple invocations of -e option. This change allows 6731multiple 6732uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 6733834. 6734Lin Ming. 6735 6736---------------------------------------- 673702 July 2010. Summary of changes for version 20100702: 6738 67391) ACPI CA Core Subsystem: 6740 6741Implemented several updates to the recently added GPE reference count 6742support. The model for "wake" GPEs is changing to give the host OS 6743complete 6744control of these GPEs. Eventually, the ACPICA core will not execute any 6745_PRW 6746methods, since the host already must execute them. Also, additional 6747changes 6748were made to help ensure that the reference counts are kept in proper 6749synchronization with reality. Rafael J. Wysocki. 6750 67511) Ensure that GPEs are not enabled twice during initialization. 67522) Ensure that GPE enable masks stay in sync with the reference count. 67533) Do not inadvertently enable GPEs when writing GPE registers. 67544) Remove the internal wake reference counter and add new AcpiGpeWakeup 6755interface. This interface will set or clear individual GPEs for wakeup. 67565) Remove GpeType argument from AcpiEnable and AcpiDisable. These 6757interfaces 6758are now used for "runtime" GPEs only. 6759 6760Changed the behavior of the GPE install/remove handler interfaces. The 6761GPE 6762is 6763no longer disabled during this process, as it was found to cause problems 6764on 6765some machines. Rafael J. Wysocki. 6766 6767Reverted a change introduced in version 20100528 to enable Embedded 6768Controller multi-byte transfers. This change was found to cause problems 6769with 6770Index Fields and possibly Bank Fields. It will be reintroduced when these 6771problems have been resolved. 6772 6773Fixed a problem with references to Alias objects within Package Objects. 6774A 6775reference to an Alias within the definition of a Package was not always 6776resolved properly. Aliases to objects like Processors, Thermal zones, 6777etc. 6778were resolved to the actual object instead of a reference to the object 6779as 6780it 6781should be. Package objects are only allowed to contain integer, string, 6782buffer, package, and reference objects. Redhat bugzilla 608648. 6783 6784Example Code and Data Size: These are the sizes for the OS-independent 6785acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6786debug version of the code includes the debug output trace mechanism and 6787has a 6788much larger code and data size. 6789 6790 Previous Release: 6791 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6792 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 6793 Current Release: 6794 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6795 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 6796 67972) iASL Compiler/Disassembler and Tools: 6798 6799iASL: Implemented a new compiler subsystem to allow definition and 6800compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 6801These 6802are called "ACPI Data Tables", and the new compiler is the "Data Table 6803Compiler". This compiler is intended to simplify the existing error-prone 6804process of creating these tables for the BIOS, as well as allowing the 6805disassembly, modification, recompilation, and override of existing ACPI 6806data 6807tables. See the iASL User Guide for detailed information. 6808 6809iASL: Implemented a new Template Generator option in support of the new 6810Data 6811Table Compiler. This option will create examples of all known ACPI tables 6812that can be used as the basis for table development. See the iASL 6813documentation and the -T option. 6814 6815Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 6816Descriptor Table). 6817 6818Updated the Linux makefiles for iASL and AcpiExec to place the generated 6819object files in the local directory so that there can be no collisions 6820between the shared files between them that are generated with different 6821options. 6822 6823Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 6824Use 6825the #define __APPLE__ to enable this support. 6826 6827---------------------------------------- 682828 May 2010. Summary of changes for version 20100528: 6829 6830Note: The ACPI 4.0a specification was released on April 5, 2010 and is 6831available at www.acpi.info. This is primarily an errata release. 6832 68331) ACPI CA Core Subsystem: 6834 6835Undefined ACPI tables: We are looking for the definitions for the 6836following 6837ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 6838 6839Implemented support to enable multi-byte transfers for Embedded 6840Controller 6841(EC) operation regions. Previously, the maximum data size passed to the 6842EC 6843operation region handler was a single byte. There are often EC Fields 6844larger 6845than one byte that need to be transferred, and it is useful for the EC 6846driver 6847to lock these as a single transaction. This change enables single 6848transfers 6849larger than 8 bits. This effectively changes the access to the EC space 6850from 6851ByteAcc to AnyAcc, and will probably require changes to the host OS 6852Embedded 6853Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 6854bit 6855transfers. Alexey Starikovskiy, Lin Ming 6856 6857Implemented a performance enhancement for namespace search and access. 6858This 6859change enhances the performance of namespace searches and walks by adding 6860a 6861backpointer to the parent in each namespace node. On large namespaces, 6862this 6863change can improve overall ACPI performance by up to 9X. Adding a pointer 6864to 6865each namespace node increases the overall size of the internal namespace 6866by 6867about 5%, since each namespace entry usually consists of both a namespace 6868node and an ACPI operand object. However, this is the first growth of the 6869namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 6870 6871Implemented a performance optimization that reduces the number of 6872namespace 6873walks. On control method exit, only walk the namespace if the method is 6874known 6875to have created namespace objects outside of its local scope. Previously, 6876the 6877entire namespace was traversed on each control method exit. This change 6878can 6879improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 6880Moore. 6881 6882Added support to truncate I/O addresses to 16 bits for Windows 6883compatibility. 6884Some ASL code has been seen in the field that inadvertently has bits set 6885above bit 15. This feature is optional and is enabled if the BIOS 6886requests 6887any Windows OSI strings. It can also be enabled by the host OS. Matthew 6888Garrett, Bob Moore. 6889 6890Added support to limit the maximum time for the ASL Sleep() operator. To 6891prevent accidental deep sleeps, limit the maximum time that Sleep() will 6892actually sleep. Configurable, the default maximum is two seconds. ACPICA 6893bugzilla 854. 6894 6895Added run-time validation support for the _WDG and_WED Microsoft 6896predefined 6897methods. These objects are defined by "Windows Instrumentation", and are 6898not 6899part of the ACPI spec. ACPICA BZ 860. 6900 6901Expanded all statistic counters used during namespace and device 6902initialization from 16 to 32 bits in order to support very large 6903namespaces. 6904 6905Replaced all instances of %d in printf format specifiers with %u since 6906nearly 6907all integers in ACPICA are unsigned. 6908 6909Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 6910returned 6911as AE_NO_HANDLER. 6912 6913Example Code and Data Size: These are the sizes for the OS-independent 6914acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6915debug version of the code includes the debug output trace mechanism and 6916has a 6917much larger code and data size. 6918 6919 Previous Release: 6920 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 6921 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 6922 Current Release: 6923 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6924 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 6925 69262) iASL Compiler/Disassembler and Tools: 6927 6928iASL: Added compiler support for the _WDG and_WED Microsoft predefined 6929methods. These objects are defined by "Windows Instrumentation", and are 6930not 6931part of the ACPI spec. ACPICA BZ 860. 6932 6933AcpiExec: added option to disable the memory tracking mechanism. The -dt 6934option will disable the tracking mechanism, which improves performance 6935considerably. 6936 6937AcpiExec: Restructured the command line options into -d (disable) and -e 6938(enable) options. 6939 6940---------------------------------------- 694128 April 2010. Summary of changes for version 20100428: 6942 69431) ACPI CA Core Subsystem: 6944 6945Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 6946including FADT-based and GPE Block Devices, execute any _PRW methods in 6947the 6948new table, and process any _Lxx/_Exx GPE methods in the new table. Any 6949runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 6950immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 6951Devices. Provides compatibility with other ACPI implementations. Two new 6952files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 6953Moore. 6954 6955Fixed a regression introduced in version 20100331 within the table 6956manager 6957where initial table loading could fail. This was introduced in the fix 6958for 6959AcpiReallocateRootTable. Also, renamed some of fields in the table 6960manager 6961data structures to clarify their meaning and use. 6962 6963Fixed a possible allocation overrun during internal object copy in 6964AcpiUtCopySimpleObject. The original code did not correctly handle the 6965case 6966where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 6967847. 6968 6969Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 6970possible access beyond end-of-allocation. Also, now fully validate 6971descriptor 6972(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 6973 6974Example Code and Data Size: These are the sizes for the OS-independent 6975acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6976debug version of the code includes the debug output trace mechanism and 6977has a 6978much larger code and data size. 6979 6980 Previous Release: 6981 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 6982 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 6983 Current Release: 6984 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 6985 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 6986 69872) iASL Compiler/Disassembler and Tools: 6988 6989iASL: Implemented Min/Max/Len/Gran validation for address resource 6990descriptors. This change implements validation for the address fields 6991that 6992are common to all address-type resource descriptors. These checks are 6993implemented: Checks for valid Min/Max, length within the Min/Max window, 6994valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 6995per 6996table 6-40 in the ACPI 4.0a specification. Also split the large 6997aslrestype1.c 6998and aslrestype2.c files into five new files. ACPICA BZ 840. 6999 7000iASL: Added support for the _Wxx predefined names. This support was 7001missing 7002and these names were not recognized by the compiler as valid predefined 7003names. ACPICA BZ 851. 7004 7005iASL: Added an error for all predefined names that are defined to return 7006no 7007value and thus must be implemented as Control Methods. These include all 7008of 7009the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 7010names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 7011 7012iASL: Implemented the -ts option to emit hex AML data in ASL format, as 7013an 7014ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 7015be 7016dynamically loaded via the Load() operator. Also cleaned up output for 7017the 7018- 7019ta and -tc options. ACPICA BZ 853. 7020 7021Tests: Added a new file with examples of extended iASL error checking. 7022Demonstrates the advanced error checking ability of the iASL compiler. 7023Available at tests/misc/badcode.asl. 7024 7025---------------------------------------- 702631 March 2010. Summary of changes for version 20100331: 7027 70281) ACPI CA Core Subsystem: 7029 7030Completed a major update for the GPE support in order to improve support 7031for 7032shared GPEs and to simplify both host OS and ACPICA code. Added a 7033reference 7034count mechanism to support shared GPEs that require multiple device 7035drivers. 7036Several external interfaces have changed. One external interface has been 7037removed. One new external interface was added. Most of the GPE external 7038interfaces now use the GPE spinlock instead of the events mutex (and the 7039Flags parameter for many GPE interfaces has been removed.) See the 7040updated 7041ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 7042Rafael 7043Wysocki. ACPICA BZ 831. 7044 7045Changed: 7046 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 7047Removed: 7048 AcpiSetGpeType 7049New: 7050 AcpiSetGpe 7051 7052Implemented write support for DataTable operation regions. These regions 7053are 7054defined via the DataTableRegion() operator. Previously, only read support 7055was 7056implemented. The ACPI specification allows DataTableRegions to be 7057read/write, 7058however. 7059 7060Implemented a new subsystem option to force a copy of the DSDT to local 7061memory. Optionally copy the entire DSDT to local memory (instead of 7062simply 7063mapping it.) There are some (albeit very rare) BIOSs that corrupt or 7064replace 7065the original DSDT, creating the need for this option. Default is FALSE, 7066do 7067not copy the DSDT. 7068 7069Implemented detection of a corrupted or replaced DSDT. This change adds 7070support to detect a DSDT that has been corrupted and/or replaced from 7071outside 7072the OS (by firmware). This is typically catastrophic for the system, but 7073has 7074been seen on some machines. Once this problem has been detected, the DSDT 7075copy option can be enabled via system configuration. Lin Ming, Bob Moore. 7076 7077Fixed two problems with AcpiReallocateRootTable during the root table 7078copy. 7079When copying the root table to the new allocation, the length used was 7080incorrect. The new size was used instead of the current table size, 7081meaning 7082too much data was copied. Also, the count of available slots for ACPI 7083tables 7084was not set correctly. Alexey Starikovskiy, Bob Moore. 7085 7086Example Code and Data Size: These are the sizes for the OS-independent 7087acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7088debug version of the code includes the debug output trace mechanism and 7089has a 7090much larger code and data size. 7091 7092 Previous Release: 7093 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 7094 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 7095 Current Release: 7096 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 7097 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 7098 70992) iASL Compiler/Disassembler and Tools: 7100 7101iASL: Implement limited typechecking for values returned from predefined 7102control methods. The type of any returned static (unnamed) object is now 7103validated. For example, Return(1). ACPICA BZ 786. 7104 7105iASL: Fixed a predefined name object verification regression. Fixes a 7106problem 7107introduced in version 20100304. An error is incorrectly generated if a 7108predefined name is declared as a static named object with a value defined 7109using the keywords "Zero", "One", or "Ones". Lin Ming. 7110 7111iASL: Added Windows 7 support for the -g option (get local ACPI tables) 7112by 7113reducing the requested registry access rights. ACPICA BZ 842. 7114 7115Disassembler: fixed a possible fault when generating External() 7116statements. 7117Introduced in commit ae7d6fd: Properly handle externals with parent- 7118prefix 7119(carat). Fixes a string length allocation calculation. Lin Ming. 7120 7121---------------------------------------- 712204 March 2010. Summary of changes for version 20100304: 7123 71241) ACPI CA Core Subsystem: 7125 7126Fixed a possible problem with the AML Mutex handling function 7127AcpiExReleaseMutex where the function could fault under the very rare 7128condition when the interpreter has blocked, the interpreter lock is 7129released, 7130the interpreter is then reentered via the same thread, and attempts to 7131acquire an AML mutex that was previously acquired. FreeBSD report 140979. 7132Lin 7133Ming. 7134 7135Implemented additional configuration support for the AML "Debug Object". 7136Output from the debug object can now be enabled via a global variable, 7137AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 7138debugging. 7139This debug output is now available in the release version of ACPICA 7140instead 7141of just the debug version. Also, the entire debug output module can now 7142be 7143configured out of the ACPICA build if desired. One new file added, 7144executer/exdebug.c. Lin Ming, Bob Moore. 7145 7146Added header support for the ACPI MCHI table (Management Controller Host 7147Interface Table). This table was added in ACPI 4.0, but the defining 7148document 7149has only recently become available. 7150 7151Standardized output of integer values for ACPICA warnings/errors. Always 7152use 71530x prefix for hex output, always use %u for unsigned integer decimal 7154output. 7155Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 7156400 7157invocations.) These invocations were converted from the original 7158ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 7159 7160Example Code and Data Size: These are the sizes for the OS-independent 7161acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7162debug version of the code includes the debug output trace mechanism and 7163has a 7164much larger code and data size. 7165 7166 Previous Release: 7167 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7168 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7169 Current Release: 7170 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 7171 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 7172 71732) iASL Compiler/Disassembler and Tools: 7174 7175iASL: Implemented typechecking support for static (non-control method) 7176predefined named objects that are declared with the Name() operator. For 7177example, the type of this object is now validated to be of type Integer: 7178Name(_BBN, 1). This change migrates the compiler to using the core 7179predefined 7180name table instead of maintaining a local version. Added a new file, 7181aslpredef.c. ACPICA BZ 832. 7182 7183Disassembler: Added support for the ACPI 4.0 MCHI table. 7184 7185---------------------------------------- 718621 January 2010. Summary of changes for version 20100121: 7187 71881) ACPI CA Core Subsystem: 7189 7190Added the 2010 copyright to all module headers and signons. This affects 7191virtually every file in the ACPICA core subsystem, the iASL compiler, the 7192tools/utilities, and the test suites. 7193 7194Implemented a change to the AcpiGetDevices interface to eliminate 7195unnecessary 7196invocations of the _STA method. In the case where a specific _HID is 7197requested, do not run _STA until a _HID match is found. This eliminates 7198potentially dozens of _STA calls during a search for a particular 7199device/HID, 7200which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 7201 7202Implemented an additional repair for predefined method return values. 7203Attempt 7204to repair unexpected NULL elements within returned Package objects. 7205Create 7206an 7207Integer of value zero, a NULL String, or a zero-length Buffer as 7208appropriate. 7209ACPICA BZ 818. Lin Ming, Bob Moore. 7210 7211Removed the obsolete ACPI_INTEGER data type. This type was introduced as 7212the 7213code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 7214(with 721564-bit AML integers). It is now obsolete and this change removes it from 7216the 7217ACPICA code base, replaced by UINT64. The original typedef has been 7218retained 7219for now for compatibility with existing device driver code. ACPICA BZ 7220824. 7221 7222Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 7223in 7224the parse tree object. 7225 7226Added additional warning options for the gcc-4 generation. Updated the 7227source 7228accordingly. This includes some code restructuring to eliminate 7229unreachable 7230code, elimination of some gotos, elimination of unused return values, 7231some 7232additional casting, and removal of redundant declarations. 7233 7234Example Code and Data Size: These are the sizes for the OS-independent 7235acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7236debug version of the code includes the debug output trace mechanism and 7237has a 7238much larger code and data size. 7239 7240 Previous Release: 7241 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7242 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7243 Current Release: 7244 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7245 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7246 72472) iASL Compiler/Disassembler and Tools: 7248 7249No functional changes for this release. 7250 7251---------------------------------------- 725214 December 2009. Summary of changes for version 20091214: 7253 72541) ACPI CA Core Subsystem: 7255 7256Enhanced automatic data type conversions for predefined name repairs. 7257This 7258change expands the automatic repairs/conversions for predefined name 7259return 7260values to make Integers, Strings, and Buffers fully interchangeable. 7261Also, 7262a 7263Buffer can be converted to a Package of Integers if necessary. The 7264nsrepair.c 7265module was completely restructured. Lin Ming, Bob Moore. 7266 7267Implemented automatic removal of null package elements during predefined 7268name 7269repairs. This change will automatically remove embedded and trailing NULL 7270package elements from returned package objects that are defined to 7271contain 7272a 7273variable number of sub-packages. The driver is then presented with a 7274package 7275with no null elements to deal with. ACPICA BZ 819. 7276 7277Implemented a repair for the predefined _FDE and _GTM names. The expected 7278return value for both names is a Buffer of 5 DWORDs. This repair fixes 7279two 7280possible problems (both seen in the field), where a package of integers 7281is 7282returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 7283Kim. 7284 7285Implemented additional module-level code support. This change will 7286properly 7287execute module-level code that is not at the root of the namespace (under 7288a 7289Device object, etc.). Now executes the code within the current scope 7290instead 7291of the root. ACPICA BZ 762. Lin Ming. 7292 7293Fixed possible mutex acquisition errors when running _REG methods. Fixes 7294a 7295problem where mutex errors can occur when running a _REG method that is 7296in 7297the same scope as a method-defined operation region or an operation 7298region 7299under a module-level IF block. This type of code is rare, so the problem 7300has 7301not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 7302 7303Fixed a possible memory leak during module-level code execution. An 7304object 7305could be leaked for each block of executed module-level code if the 7306interpreter slack mode is enabled This change deletes any implicitly 7307returned 7308object from the module-level code block. Lin Ming. 7309 7310Removed messages for successful predefined repair(s). The repair 7311mechanism 7312was considered too wordy. Now, messages are only unconditionally emitted 7313if 7314the return object cannot be repaired. Existing messages for successful 7315repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 7316827. 7317 7318Example Code and Data Size: These are the sizes for the OS-independent 7319acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7320debug version of the code includes the debug output trace mechanism and 7321has a 7322much larger code and data size. 7323 7324 Previous Release: 7325 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 7326 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 7327 Current Release: 7328 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7329 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7330 73312) iASL Compiler/Disassembler and Tools: 7332 7333iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 7334files 7335were no longer automatically removed at the termination of the compile. 7336 7337acpiexec: Implemented the -f option to specify default region fill value. 7338This option specifies the value used to initialize buffers that simulate 7339operation regions. Default value is zero. Useful for debugging problems 7340that 7341depend on a specific initial value for a region or field. 7342 7343---------------------------------------- 734412 November 2009. Summary of changes for version 20091112: 7345 73461) ACPI CA Core Subsystem: 7347 7348Implemented a post-order callback to AcpiWalkNamespace. The existing 7349interface only has a pre-order callback. This change adds an additional 7350parameter for a post-order callback which will be more useful for bus 7351scans. 7352ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 7353 7354Modified the behavior of the operation region memory mapping cache for 7355SystemMemory. Ensure that the memory mappings created for operation 7356regions 7357do not cross 4K page boundaries. Crossing a page boundary while mapping 7358regions can cause kernel warnings on some hosts if the pages have 7359different 7360attributes. Such regions are probably BIOS bugs, and this is the 7361workaround. 7362Linux BZ 14445. Lin Ming. 7363 7364Implemented an automatic repair for predefined methods that must return 7365sorted lists. This change will repair (by sorting) packages returned by 7366_ALR, 7367_PSS, and _TSS. Drivers can now assume that the packages are correctly 7368sorted 7369and do not contain NULL package elements. Adds one new file, 7370namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 7371 7372Fixed a possible fault during predefined name validation if a return 7373Package 7374object contains NULL elements. Also adds a warning if a NULL element is 7375followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 7376may 7377include repair or removal of all such NULL elements where possible. 7378 7379Implemented additional module-level executable AML code support. This 7380change 7381will execute module-level code that is not at the root of the namespace 7382(under a Device object, etc.) at table load time. Module-level executable 7383AML 7384code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 7385 7386Implemented a new internal function to create Integer objects. This 7387function 7388simplifies miscellaneous object creation code. ACPICA BZ 823. 7389 7390Reduced the severity of predefined repair messages, Warning to Info. 7391Since 7392the object was successfully repaired, a warning is too severe. Reduced to 7393an 7394info message for now. These messages may eventually be changed to debug- 7395only. 7396ACPICA BZ 812. 7397 7398Example Code and Data Size: These are the sizes for the OS-independent 7399acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7400debug version of the code includes the debug output trace mechanism and 7401has a 7402much larger code and data size. 7403 7404 Previous Release: 7405 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 7406 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 7407 Current Release: 7408 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 7409 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 7410 74112) iASL Compiler/Disassembler and Tools: 7412 7413iASL: Implemented Switch() with While(1) so that Break works correctly. 7414This 7415change correctly implements the Switch operator with a surrounding 7416While(1) 7417so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 7418 7419iASL: Added a message if a package initializer list is shorter than 7420package 7421length. Adds a new remark for a Package() declaration if an initializer 7422list 7423exists, but is shorter than the declared length of the package. Although 7424technically legal, this is probably a coding error and it is seen in the 7425field. ACPICA BZ 815. Lin Ming, Bob Moore. 7426 7427iASL: Fixed a problem where the compiler could fault after the maximum 7428number 7429of errors was reached (200). 7430 7431acpixtract: Fixed a possible warning for pointer cast if the compiler 7432warning 7433level set very high. 7434 7435---------------------------------------- 743613 October 2009. Summary of changes for version 20091013: 7437 74381) ACPI CA Core Subsystem: 7439 7440Fixed a problem where an Operation Region _REG method could be executed 7441more 7442than once. If a custom address space handler is installed by the host 7443before 7444the "initialize operation regions" phase of the ACPICA initialization, 7445any 7446_REG methods for that address space could be executed twice. This change 7447fixes the problem. ACPICA BZ 427. Lin Ming. 7448 7449Fixed a possible memory leak for the Scope() ASL operator. When the exact 7450invocation of "Scope(\)" is executed (change scope to root), one internal 7451operand object was leaked. Lin Ming. 7452 7453Implemented a run-time repair for the _MAT predefined method. If the _MAT 7454return value is defined as a Field object in the AML, and the field 7455size is less than or equal to the default width of an integer (32 or 745664),_MAT 7457can incorrectly return an Integer instead of a Buffer. ACPICA now 7458automatically repairs this problem. ACPICA BZ 810. 7459 7460Implemented a run-time repair for the _BIF and _BIX predefined methods. 7461The 7462"OEM Information" field is often incorrectly returned as an Integer with 7463value zero if the field is not supported by the platform. This is due to 7464an 7465ambiguity in the ACPI specification. The field should always be a string. 7466ACPICA now automatically repairs this problem by returning a NULL string 7467within the returned Package. ACPICA BZ 807. 7468 7469Example Code and Data Size: These are the sizes for the OS-independent 7470acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7471debug version of the code includes the debug output trace mechanism and 7472has a 7473much larger code and data size. 7474 7475 Previous Release: 7476 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 7477 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 7478 Current Release: 7479 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 7480 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 7481 74822) iASL Compiler/Disassembler and Tools: 7483 7484Disassembler: Fixed a problem where references to external symbols that 7485contained one or more parent-prefixes (carats) were not handled 7486correctly, 7487possibly causing a fault. ACPICA BZ 806. Lin Ming. 7488 7489Disassembler: Restructured the code so that all functions that handle 7490external symbols are in a single module. One new file is added, 7491common/dmextern.c. 7492 7493AML Debugger: Added a max count argument for the Batch command (which 7494executes multiple predefined methods within the namespace.) 7495 7496iASL: Updated the compiler documentation (User Reference.) Available at 7497http://www.acpica.org/documentation/. ACPICA BZ 750. 7498 7499AcpiXtract: Updated for Lint and other formatting changes. Close all open 7500files. 7501 7502---------------------------------------- 750303 September 2009. Summary of changes for version 20090903: 7504 75051) ACPI CA Core Subsystem: 7506 7507For Windows Vista compatibility, added the automatic execution of an _INI 7508method located at the namespace root (\_INI). This method is executed at 7509table load time. This support is in addition to the automatic execution 7510of 7511\_SB._INI. Lin Ming. 7512 7513Fixed a possible memory leak in the interpreter for AML package objects 7514if 7515the package initializer list is longer than the defined size of the 7516package. 7517This apparently can only happen if the BIOS changes the package size on 7518the 7519fly (seen in a _PSS object), as ASL compilers do not allow this. The 7520interpreter will truncate the package to the defined size (and issue an 7521error 7522message), but previously could leave the extra objects undeleted if they 7523were 7524pre-created during the argument processing (such is the case if the 7525package 7526consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 7527 7528Fixed a problem seen when a Buffer or String is stored to itself via ASL. 7529This has been reported in the field. Previously, ACPICA would zero out 7530the 7531buffer/string. Now, the operation is treated as a noop. Provides Windows 7532compatibility. ACPICA BZ 803. Lin Ming. 7533 7534Removed an extraneous error message for ASL constructs of the form 7535Store(LocalX,LocalX) when LocalX is uninitialized. These curious 7536statements 7537are seen in many BIOSs and are once again treated as NOOPs and no error 7538is 7539emitted when they are encountered. ACPICA BZ 785. 7540 7541Fixed an extraneous warning message if a _DSM reserved method returns a 7542Package object. _DSM can return any type of object, so validation on the 7543return type cannot be performed. ACPICA BZ 802. 7544 7545Example Code and Data Size: These are the sizes for the OS-independent 7546acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7547debug version of the code includes the debug output trace mechanism and 7548has a 7549much larger code and data size. 7550 7551 Previous Release: 7552 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 7553 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 7554 Current Release: 7555 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 7556 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 7557 75582) iASL Compiler/Disassembler and Tools: 7559 7560iASL: Fixed a problem with the use of the Alias operator and Resource 7561Templates. The correct alias is now constructed and no error is emitted. 7562ACPICA BZ 738. 7563 7564iASL: Implemented the -I option to specify additional search directories 7565for 7566include files. Allows multiple additional search paths for include files. 7567Directories are searched in the order specified on the command line 7568(after 7569the local directory is searched.) ACPICA BZ 800. 7570 7571iASL: Fixed a problem where the full pathname for include files was not 7572emitted for warnings/errors. This caused the IDE support to not work 7573properly. ACPICA BZ 765. 7574 7575iASL: Implemented the -@ option to specify a Windows-style response file 7576containing additional command line options. ACPICA BZ 801. 7577 7578AcpiExec: Added support to load multiple AML files simultaneously (such 7579as 7580a 7581DSDT and multiple SSDTs). Also added support for wildcards within the AML 7582pathname. These features allow all machine tables to be easily loaded and 7583debugged together. ACPICA BZ 804. 7584 7585Disassembler: Added missing support for disassembly of HEST table Error 7586Bank 7587subtables. 7588 7589---------------------------------------- 759030 July 2009. Summary of changes for version 20090730: 7591 7592The ACPI 4.0 implementation for ACPICA is complete with this release. 7593 75941) ACPI CA Core Subsystem: 7595 7596ACPI 4.0: Added header file support for all new and changed ACPI tables. 7597Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 7598new 7599for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 7600BERT, 7601EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 7602There 7603have been some ACPI 4.0 changes to other existing tables. Split the large 7604actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 7605 7606ACPI 4.0: Implemented predefined name validation for all new names. There 7607are 760831 new names in ACPI 4.0. The predefined validation module was split into 7609two 7610files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 7611 7612Implemented support for so-called "module-level executable code". This is 7613executable AML code that exists outside of any control method and is 7614intended 7615to be executed at table load time. Although illegal since ACPI 2.0, this 7616type 7617of code still exists and is apparently still being created. Blocks of 7618this 7619code are now detected and executed as intended. Currently, the code 7620blocks 7621must exist under either an If, Else, or While construct; these are the 7622typical cases seen in the field. ACPICA BZ 762. Lin Ming. 7623 7624Implemented an automatic dynamic repair for predefined names that return 7625nested Package objects. This applies to predefined names that are defined 7626to 7627return a variable-length Package of sub-packages. If the number of sub- 7628packages is one, BIOS code is occasionally seen that creates a simple 7629single 7630package with no sub-packages. This code attempts to fix the problem by 7631wrapping a new package object around the existing package. These methods 7632can 7633be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 7634BZ 7635790. 7636 7637Fixed a regression introduced in 20090625 for the AcpiGetDevices 7638interface. 7639The _HID/_CID matching was broken and no longer matched IDs correctly. 7640ACPICA 7641BZ 793. 7642 7643Fixed a problem with AcpiReset where the reset would silently fail if the 7644register was one of the protected I/O ports. AcpiReset now bypasses the 7645port 7646validation mechanism. This may eventually be driven into the 7647AcpiRead/Write 7648interfaces. 7649 7650Fixed a regression related to the recent update of the AcpiRead/Write 7651interfaces. A sleep/suspend could fail if the optional PM2 Control 7652register 7653does not exist during an attempt to write the Bus Master Arbitration bit. 7654(However, some hosts already delete the code that writes this bit, and 7655the 7656code may in fact be obsolete at this date.) ACPICA BZ 799. 7657 7658Fixed a problem where AcpiTerminate could fault if inadvertently called 7659twice 7660in succession. ACPICA BZ 795. 7661 7662Example Code and Data Size: These are the sizes for the OS-independent 7663acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7664debug version of the code includes the debug output trace mechanism and 7665has a 7666much larger code and data size. 7667 7668 Previous Release: 7669 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 7670 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 7671 Current Release: 7672 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 7673 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 7674 76752) iASL Compiler/Disassembler and Tools: 7676 7677ACPI 4.0: Implemented disassembler support for all new ACPI tables and 7678changes to existing tables. ACPICA BZ 775. 7679 7680---------------------------------------- 768125 June 2009. Summary of changes for version 20090625: 7682 7683The ACPI 4.0 Specification was released on June 16 and is available at 7684www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 7685continue for the next few releases. 7686 76871) ACPI CA Core Subsystem: 7688 7689ACPI 4.0: Implemented interpreter support for the IPMI operation region 7690address space. Includes support for bi-directional data buffers and an 7691IPMI 7692address space handler (to be installed by an IPMI device driver.) ACPICA 7693BZ 7694773. Lin Ming. 7695 7696ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 7697Includes 7698support in both the header files and the disassembler. 7699 7700Completed a major update for the AcpiGetObjectInfo external interface. 7701Changes include: 7702 - Support for variable, unlimited length HID, UID, and CID strings. 7703 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 7704etc.) 7705 - Call the _SxW power methods on behalf of a device object. 7706 - Determine if a device is a PCI root bridge. 7707 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 7708These changes will require an update to all callers of this interface. 7709See 7710the updated ACPICA Programmer Reference for details. One new source file 7711has 7712been added - utilities/utids.c. ACPICA BZ 368, 780. 7713 7714Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 7715transfers. The Value parameter has been extended from 32 bits to 64 bits 7716in 7717order to support new ACPI 4.0 tables. These changes will require an 7718update 7719to 7720all callers of these interfaces. See the ACPICA Programmer Reference for 7721details. ACPICA BZ 768. 7722 7723Fixed several problems with AcpiAttachData. The handler was not invoked 7724when 7725the host node was deleted. The data sub-object was not automatically 7726deleted 7727when the host node was deleted. The interface to the handler had an 7728unused 7729parameter, this was removed. ACPICA BZ 778. 7730 7731Enhanced the function that dumps ACPI table headers. All non-printable 7732characters in the string fields are now replaced with '?' (Signature, 7733OemId, 7734OemTableId, and CompilerId.) ACPI tables with non-printable characters in 7735these fields are occasionally seen in the field. ACPICA BZ 788. 7736 7737Fixed a problem with predefined method repair code where the code that 7738attempts to repair/convert an object of incorrect type is only executed 7739on 7740the first time the predefined method is called. The mechanism that 7741disables 7742warnings on subsequent calls was interfering with the repair mechanism. 7743ACPICA BZ 781. 7744 7745Fixed a possible memory leak in the predefined validation/repair code 7746when 7747a 7748buffer is automatically converted to an expected string object. 7749 7750Removed obsolete 16-bit files from the distribution and from the current 7751git 7752tree head. ACPICA BZ 776. 7753 7754Example Code and Data Size: These are the sizes for the OS-independent 7755acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7756debug version of the code includes the debug output trace mechanism and 7757has a 7758much larger code and data size. 7759 7760 Previous Release: 7761 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 7762 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 7763 Current Release: 7764 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 7765 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 7766 77672) iASL Compiler/Disassembler and Tools: 7768 7769ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 7770operation region keyword. ACPICA BZ 771, 772. Lin Ming. 7771 7772ACPI 4.0: iASL - implemented compile-time validation support for all new 7773predefined names and control methods (31 total). ACPICA BZ 769. 7774 7775---------------------------------------- 777621 May 2009. Summary of changes for version 20090521: 7777 77781) ACPI CA Core Subsystem: 7779 7780Disabled the preservation of the SCI enable bit in the PM1 control 7781register. 7782The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 7783to 7784be 7785a "preserved" bit - "OSPM always preserves this bit position", section 77864.7.3.2.1. However, some machines fail if this bit is in fact preserved 7787because the bit needs to be explicitly set by the OS as a workaround. No 7788machines fail if the bit is not preserved. Therefore, ACPICA no longer 7789attempts to preserve this bit. 7790 7791Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 7792incorrectly formed _PRT package could cause a fault. Added validation to 7793ensure that each package element is actually a sub-package. 7794 7795Implemented a new interface to install or override a single control 7796method, 7797AcpiInstallMethod. This interface is useful when debugging in order to 7798repair 7799an existing method or to install a missing method without having to 7800override 7801the entire ACPI table. See the ACPICA Programmer Reference for use and 7802examples. Lin Ming, Bob Moore. 7803 7804Fixed several reference count issues with the DdbHandle object that is 7805created from a Load or LoadTable operator. Prevent premature deletion of 7806the 7807object. Also, mark the object as invalid once the table has been 7808unloaded. 7809This is needed because the handle itself may not be deleted after the 7810table 7811unload, depending on whether it has been stored in a named object by the 7812caller. Lin Ming. 7813 7814Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 7815mutexes of the same sync level are acquired but then not released in 7816strict 7817opposite order, the internally maintained Current Sync Level becomes 7818confused 7819and can cause subsequent execution errors. ACPICA BZ 471. 7820 7821Changed the allowable release order for ASL mutex objects. The ACPI 4.0 7822specification has been changed to make the SyncLevel for mutex objects 7823more 7824useful. When releasing a mutex, the SyncLevel of the mutex must now be 7825the 7826same as the current sync level. This makes more sense than the previous 7827rule 7828(SyncLevel less than or equal). This change updates the code to match the 7829specification. 7830 7831Fixed a problem with the local version of the AcpiOsPurgeCache function. 7832The 7833(local) cache must be locked during all cache object deletions. Andrew 7834Baumann. 7835 7836Updated the Load operator to use operation region interfaces. This 7837replaces 7838direct memory mapping with region access calls. Now, all region accesses 7839go 7840through the installed region handler as they should. 7841 7842Simplified and optimized the NsGetNextNode function. Reduced parameter 7843count 7844and reduced code for this frequently used function. 7845 7846Example Code and Data Size: These are the sizes for the OS-independent 7847acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7848debug version of the code includes the debug output trace mechanism and 7849has a 7850much larger code and data size. 7851 7852 Previous Release: 7853 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 7854 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 7855 Current Release: 7856 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 7857 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 7858 78592) iASL Compiler/Disassembler and Tools: 7860 7861Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 7862problems 7863with sub-table disassembly and handling invalid sub-tables. Attempt 7864recovery 7865after an invalid sub-table ID. 7866 7867---------------------------------------- 786822 April 2009. Summary of changes for version 20090422: 7869 78701) ACPI CA Core Subsystem: 7871 7872Fixed a compatibility issue with the recently released I/O port 7873protection 7874mechanism. For windows compatibility, 1) On a port protection violation, 7875simply ignore the request and do not return an exception (allow the 7876control 7877method to continue execution.) 2) If only part of the request overlaps a 7878protected port, read/write the individual ports that are not protected. 7879Linux 7880BZ 13036. Lin Ming 7881 7882Enhanced the execution of the ASL/AML BreakPoint operator so that it 7883actually 7884breaks into the AML debugger if the debugger is present. This matches the 7885ACPI-defined behavior. 7886 7887Fixed several possible warnings related to the use of the configurable 7888ACPI_THREAD_ID. This type can now be configured as either an integer or a 7889pointer with no warnings. Also fixes several warnings in printf-like 7890statements for the 64-bit build when the type is configured as a pointer. 7891ACPICA BZ 766, 767. 7892 7893Fixed a number of possible warnings when compiling with gcc 4+ (depending 7894on 7895warning options.) Examples include printf formats, aliasing, unused 7896globals, 7897missing prototypes, missing switch default statements, use of non-ANSI 7898library functions, use of non-ANSI constructs. See generate/unix/Makefile 7899for 7900a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 7901 7902Example Code and Data Size: These are the sizes for the OS-independent 7903acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7904debug version of the code includes the debug output trace mechanism and 7905has a 7906much larger code and data size. 7907 7908 Previous Release: 7909 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 7910 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 7911 Current Release: 7912 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 7913 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 7914 79152) iASL Compiler/Disassembler and Tools: 7916 7917iASL: Fixed a generation warning from Bison 2.3 and fixed several 7918warnings 7919on 7920the 64-bit build. 7921 7922iASL: Fixed a problem where the Unix/Linux versions of the compiler could 7923not 7924correctly digest Windows/DOS formatted files (with CR/LF). 7925 7926iASL: Added a new option for "quiet mode" (-va) that produces only the 7927compilation summary, not individual errors and warnings. Useful for large 7928batch compilations. 7929 7930AcpiExec: Implemented a new option (-z) to enable a forced 7931semaphore/mutex 7932timeout that can be used to detect hang conditions during execution of 7933AML 7934code (includes both internal semaphores and AML-defined mutexes and 7935events.) 7936 7937Added new makefiles for the generation of acpica in a generic unix-like 7938environment. These makefiles are intended to generate the acpica tools 7939and 7940utilities from the original acpica git source tree structure. 7941 7942Test Suites: Updated and cleaned up the documentation files. Updated the 7943copyrights to 2009, affecting all source files. Use the new version of 7944iASL 7945with quiet mode. Increased the number of available semaphores in the 7946Windows 7947OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 7948added 7949an alternate implementation of the semaphore timeout to allow aslts to 7950execute fully on Cygwin. 7951 7952---------------------------------------- 795320 March 2009. Summary of changes for version 20090320: 7954 79551) ACPI CA Core Subsystem: 7956 7957Fixed a possible race condition between AcpiWalkNamespace and dynamic 7958table 7959unloads. Added a reader/writer locking mechanism to allow multiple 7960concurrent 7961namespace walks (readers), but block a dynamic table unload until it can 7962gain 7963exclusive write access to the namespace. This fixes a problem where a 7964table 7965unload could (possibly catastrophically) delete the portion of the 7966namespace 7967that is currently being examined by a walk. Adds a new file, utlock.c, 7968that 7969implements the reader/writer lock mechanism. ACPICA BZ 749. 7970 7971Fixed a regression introduced in version 20090220 where a change to the 7972FADT 7973handling could cause the ACPICA subsystem to access non-existent I/O 7974ports. 7975 7976Modified the handling of FADT register and table (FACS/DSDT) addresses. 7977The 7978FADT can contain both 32-bit and 64-bit versions of these addresses. 7979Previously, the 64-bit versions were favored, meaning that if both 32 and 798064 7981versions were valid, but not equal, the 64-bit version was used. This was 7982found to cause some machines to fail. Now, in this case, the 32-bit 7983version 7984is used instead. This now matches the Windows behavior. 7985 7986Implemented a new mechanism to protect certain I/O ports. Provides 7987Microsoft 7988compatibility and protects the standard PC I/O ports from access via AML 7989code. Adds a new file, hwvalid.c 7990 7991Fixed a possible extraneous warning message from the FADT support. The 7992message warns of a 32/64 length mismatch between the legacy and GAS 7993definitions for a register. 7994 7995Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 7996is 7997made obsolete by the port protection mechanism above. It was previously 7998used 7999to validate the entire address range of an operation region, which could 8000be 8001incorrect if the range included illegal ports, but fields within the 8002operation region did not actually access those ports. Validation is now 8003performed on a per-field basis instead of the entire region. 8004 8005Modified the handling of the PM1 Status Register ignored bit (bit 11.) 8006Ignored bits must be "preserved" according to the ACPI spec. Usually, 8007this 8008means a read/modify/write when writing to the register. However, for 8009status 8010registers, writing a one means clear the event. Writing a zero means 8011preserve 8012the event (do not clear.) This behavior is clarified in the ACPI 4.0 8013spec, 8014and the ACPICA code now simply always writes a zero to the ignored bit. 8015 8016Modified the handling of ignored bits for the PM1 A/B Control Registers. 8017As 8018per the ACPI specification, for the control registers, preserve 8019(read/modify/write) all bits that are defined as either reserved or 8020ignored. 8021 8022Updated the handling of write-only bits in the PM1 A/B Control Registers. 8023When reading the register, zero the write-only bits as per the ACPI spec. 8024ACPICA BZ 443. Lin Ming. 8025 8026Removed "Linux" from the list of supported _OSI strings. Linux no longer 8027wants to reply true to this request. The Windows strings are the only 8028paths 8029through the AML that are tested and known to work properly. 8030 8031 Previous Release: 8032 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 8033 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 8034 Current Release: 8035 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 8036 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 8037 80382) iASL Compiler/Disassembler and Tools: 8039 8040Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 8041and 8042aetables.c 8043 8044---------------------------------------- 804520 February 2009. Summary of changes for version 20090220: 8046 80471) ACPI CA Core Subsystem: 8048 8049Optimized the ACPI register locking. Removed locking for reads from the 8050ACPI 8051bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 8052is 8053not required when reading the single-bit registers. The 8054AcpiGetRegisterUnlocked function is no longer needed and has been 8055removed. 8056This will improve performance for reads on these registers. ACPICA BZ 8057760. 8058 8059Fixed the parameter validation for AcpiRead/Write. Now return 8060AE_BAD_PARAMETER if the input register pointer is null, and 8061AE_BAD_ADDRESS 8062if 8063the register has an address of zero. Previously, these cases simply 8064returned 8065AE_OK. For optional registers such as PM1B status/enable/control, the 8066caller 8067should check for a valid register address before calling. ACPICA BZ 748. 8068 8069Renamed the external ACPI bit register access functions. Renamed 8070AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 8071functions. The new names are AcpiReadBitRegister and 8072AcpiWriteBitRegister. 8073Also, restructured the code for these functions by simplifying the code 8074path 8075and condensing duplicate code to reduce code size. 8076 8077Added new functions to transparently handle the possibly split PM1 A/B 8078registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 8079functions 8080now handle the split registers for PM1 Status, Enable, and Control. 8081ACPICA 8082BZ 8083746. 8084 8085Added a function to handle the PM1 control registers, 8086AcpiHwWritePm1Control. 8087This function writes both of the PM1 control registers (A/B). These 8088registers 8089are different than the PM1 A/B status and enable registers in that 8090different 8091values can be written to the A/B registers. Most notably, the SLP_TYP 8092bits 8093can be different, as per the values returned from the _Sx predefined 8094methods. 8095 8096Removed an extra register write within AcpiHwClearAcpiStatus. This 8097function 8098was writing an optional PM1B status register twice. The existing call to 8099the 8100low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 8101A/B 8102register. ACPICA BZ 751. 8103 8104Split out the PM1 Status registers from the FADT. Added new globals for 8105these 8106registers (A/B), similar to the way the PM1 Enable registers are handled. 8107Instead of overloading the FADT Event Register blocks. This makes the 8108code 8109clearer and less prone to error. 8110 8111Fixed the warning message for when the platform contains too many ACPI 8112tables 8113for the default size of the global root table data structure. The 8114calculation 8115for the truncation value was incorrect. 8116 8117Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 8118obsolete macro, since it is now a simple reference to ->common.type. 8119There 8120were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 8121 8122Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 8123TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 8124simply SLEEP_TYPE. ACPICA BZ 754. 8125 8126Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 8127function is only needed on 64-bit host operating systems and is thus not 8128included for 32-bit hosts. 8129 8130Debug output: print the input and result for invocations of the _OSI 8131reserved 8132control method via the ACPI_LV_INFO debug level. Also, reduced some of 8133the 8134verbosity of this debug level. Len Brown. 8135 8136Example Code and Data Size: These are the sizes for the OS-independent 8137acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8138debug version of the code includes the debug output trace mechanism and 8139has a 8140much larger code and data size. 8141 8142 Previous Release: 8143 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8144 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8145 Current Release: 8146 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 8147 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 8148 81492) iASL Compiler/Disassembler and Tools: 8150 8151Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 8152various legal performance profiles. 8153 8154---------------------------------------- 815523 January 2009. Summary of changes for version 20090123: 8156 81571) ACPI CA Core Subsystem: 8158 8159Added the 2009 copyright to all module headers and signons. This affects 8160virtually every file in the ACPICA core subsystem, the iASL compiler, and 8161the tools/utilities. 8162 8163Implemented a change to allow the host to override any ACPI table, 8164including 8165dynamically loaded tables. Previously, only the DSDT could be replaced by 8166the 8167host. With this change, the AcpiOsTableOverride interface is called for 8168each 8169table found in the RSDT/XSDT during ACPICA initialization, and also 8170whenever 8171a table is dynamically loaded via the AML Load operator. 8172 8173Updated FADT flag definitions, especially the Boot Architecture flags. 8174 8175Debugger: For the Find command, automatically pad the input ACPI name 8176with 8177underscores if the name is shorter than 4 characters. This enables a 8178match 8179with the actual namespace entry which is itself padded with underscores. 8180 8181Example Code and Data Size: These are the sizes for the OS-independent 8182acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8183debug version of the code includes the debug output trace mechanism and 8184has a 8185much larger code and data size. 8186 8187 Previous Release: 8188 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8189 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8190 Current Release: 8191 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8192 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8193 81942) iASL Compiler/Disassembler and Tools: 8195 8196Fix build error under Bison-2.4. 8197 8198Dissasembler: Enhanced FADT support. Added decoding of the Boot 8199Architecture 8200flags. Now decode all flags, regardless of the FADT version. Flag output 8201includes the FADT version which first defined each flag. 8202 8203The iASL -g option now dumps the RSDT to a file (in addition to the FADT 8204and 8205DSDT). Windows only. 8206 8207---------------------------------------- 820804 December 2008. Summary of changes for version 20081204: 8209 82101) ACPI CA Core Subsystem: 8211 8212The ACPICA Programmer Reference has been completely updated and revamped 8213for 8214this release. This includes updates to the external interfaces, OSL 8215interfaces, the overview sections, and the debugger reference. 8216 8217Several new ACPICA interfaces have been implemented and documented in the 8218programmer reference: 8219AcpiReset - Writes the reset value to the FADT-defined reset register. 8220AcpiDisableAllGpes - Disable all available GPEs. 8221AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 8222AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 8223AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 8224AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 8225AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 8226 8227Most of the public ACPI hardware-related interfaces have been moved to a 8228new 8229file, components/hardware/hwxface.c 8230 8231Enhanced the FADT parsing and low-level ACPI register access: The ACPI 8232register lengths within the FADT are now used, and the low level ACPI 8233register access no longer hardcodes the ACPI register lengths. Given that 8234there may be some risk in actually trusting the FADT register lengths, a 8235run- 8236time option was added to fall back to the default hardcoded lengths if 8237the 8238FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 8239option is set to true for now, and a warning is issued if a suspicious 8240FADT 8241register length is overridden with the default value. 8242 8243Fixed a reference count issue in NsRepairObject. This problem was 8244introduced 8245in version 20081031 as part of a fix to repair Buffer objects within 8246Packages. Lin Ming. 8247 8248Added semaphore support to the Linux/Unix application OS-services layer 8249(OSL). ACPICA BZ 448. Lin Ming. 8250 8251Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 8252will 8253be implemented in the OSL, or will binary semaphores be used instead. 8254 8255Example Code and Data Size: These are the sizes for the OS-independent 8256acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8257debug version of the code includes the debug output trace mechanism and 8258has a 8259much larger code and data size. 8260 8261 Previous Release: 8262 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 8263 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 8264 Current Release: 8265 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8266 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8267 82682) iASL Compiler/Disassembler and Tools: 8269 8270iASL: Completed the '-e' option to include additional ACPI tables in 8271order 8272to 8273aid with disassembly and External statement generation. ACPICA BZ 742. 8274Lin 8275Ming. 8276 8277iASL: Removed the "named object in while loop" error. The compiler cannot 8278determine how many times a loop will execute. ACPICA BZ 730. 8279 8280Disassembler: Implemented support for FADT revision 2 (MS extension). 8281ACPICA 8282BZ 743. 8283 8284Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 8285MCFG). 8286 8287---------------------------------------- 828831 October 2008. Summary of changes for version 20081031: 8289 82901) ACPI CA Core Subsystem: 8291 8292Restructured the ACPICA header files into public/private. acpi.h now 8293includes 8294only the "public" acpica headers. All other acpica headers are "private" 8295and 8296should not be included by acpica users. One new file, accommon.h is used 8297to 8298include the commonly used private headers for acpica code generation. 8299Future 8300plans include moving all private headers to a new subdirectory. 8301 8302Implemented an automatic Buffer->String return value conversion for 8303predefined ACPI methods. For these methods (such as _BIF), added 8304automatic 8305conversion for return objects that are required to be a String, but a 8306Buffer 8307was found instead. This can happen when reading string battery data from 8308an 8309operation region, because it used to be difficult to convert the data 8310from 8311buffer to string from within the ASL. Ensures that the host OS is 8312provided 8313with a valid null-terminated string. Linux BZ 11822. 8314 8315Updated the FACS waking vector interfaces. Split 8316AcpiSetFirmwareWakingVector 8317into two: one for the 32-bit vector, another for the 64-bit vector. This 8318is 8319required because the host OS must setup the wake much differently for 8320each 8321vector (real vs. protected mode, etc.) and the interface itself should 8322not 8323be 8324deciding which vector to use. Also, eliminated the 8325GetFirmwareWakingVector 8326interface, as it served no purpose (only the firmware reads the vector, 8327OS 8328only writes the vector.) ACPICA BZ 731. 8329 8330Implemented a mechanism to escape infinite AML While() loops. Added a 8331loop 8332counter to force exit from AML While loops if the count becomes too 8333large. 8334This can occur in poorly written AML when the hardware does not respond 8335within a while loop and the loop does not implement a timeout. The 8336maximum 8337loop count is configurable. A new exception code is returned when a loop 8338is 8339broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 8340 8341Optimized the execution of AML While loops. Previously, a control state 8342object was allocated and freed for each execution of the loop. The 8343optimization is to simply reuse the control state for each iteration. 8344This 8345speeds up the raw loop execution time by about 5%. 8346 8347Enhanced the implicit return mechanism. For Windows compatibility, return 8348an 8349implicit integer of value zero for methods that contain no executable 8350code. 8351Such methods are seen in the field as stubs (presumably), and can cause 8352drivers to fail if they expect a return value. Lin Ming. 8353 8354Allow multiple backslashes as root prefixes in namepaths. In a fully 8355qualified namepath, allow multiple backslash prefixes. This can happen 8356(and 8357is seen in the field) because of the use of a double-backslash in strings 8358(since backslash is the escape character) causing confusion. ACPICA BZ 8359739 8360Lin Ming. 8361 8362Emit a warning if two different FACS or DSDT tables are discovered in the 8363FADT. Checks if there are two valid but different addresses for the FACS 8364and 8365DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 8366 8367Consolidated the method argument count validation code. Merged the code 8368that 8369validates control method argument counts into the predefined validation 8370module. Eliminates possible multiple warnings for incorrect argument 8371counts. 8372 8373Implemented ACPICA example code. Includes code for ACPICA initialization, 8374handler installation, and calling a control method. Available at 8375source/tools/examples. 8376 8377Added a global pointer for FACS table to simplify internal FACS access. 8378Use 8379the global pointer instead of using AcpiGetTableByIndex for each FACS 8380access. 8381This simplifies the code for the Global Lock and the Firmware Waking 8382Vector(s). 8383 8384Example Code and Data Size: These are the sizes for the OS-independent 8385acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8386debug version of the code includes the debug output trace mechanism and 8387has a 8388much larger code and data size. 8389 8390 Previous Release: 8391 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 8392 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 8393 Current Release: 8394 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 8395 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 8396 83972) iASL Compiler/Disassembler and Tools: 8398 8399iASL: Improved disassembly of external method calls. Added the -e option 8400to 8401allow the inclusion of additional ACPI tables to help with the 8402disassembly 8403of 8404method invocations and the generation of external declarations during the 8405disassembly. Certain external method invocations cannot be disassembled 8406properly without the actual declaration of the method. Use the -e option 8407to 8408include the table where the external method(s) are actually declared. 8409Most 8410useful for disassembling SSDTs that make method calls back to the master 8411DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 8412-d 8413-e dsdt.aml ssdt1.aml 8414 8415iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 8416problem where the use of an alias within a namepath would result in a not 8417found error or cause the compiler to fault. Also now allows forward 8418references from the Alias operator itself. ACPICA BZ 738. 8419 8420---------------------------------------- 842126 September 2008. Summary of changes for version 20080926: 8422 84231) ACPI CA Core Subsystem: 8424 8425Designed and implemented a mechanism to validate predefined ACPI methods 8426and 8427objects. This code validates the predefined ACPI objects (objects whose 8428names 8429start with underscore) that appear in the namespace, at the time they are 8430evaluated. The argument count and the type of the returned object are 8431validated against the ACPI specification. The purpose of this validation 8432is 8433to detect problems with the BIOS-implemented predefined ACPI objects 8434before 8435the results are returned to the ACPI-related drivers. Future enhancements 8436may 8437include actual repair of incorrect return objects where possible. Two new 8438files are nspredef.c and acpredef.h. 8439 8440Fixed a fault in the AML parser if a memory allocation fails during the 8441Op 8442completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 8443 8444Fixed an issue with implicit return compatibility. This change improves 8445the 8446implicit return mechanism to be more compatible with the MS interpreter. 8447Lin 8448Ming, ACPICA BZ 349. 8449 8450Implemented support for zero-length buffer-to-string conversions. Allow 8451zero 8452length strings during interpreter buffer-to-string conversions. For 8453example, 8454during the ToDecimalString and ToHexString operators, as well as implicit 8455conversions. Fiodor Suietov, ACPICA BZ 585. 8456 8457Fixed two possible memory leaks in the error exit paths of 8458AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 8459are 8460similar in that they use a stack of state objects in order to eliminate 8461recursion. The stack must be fully unwound and deallocated if an error 8462occurs. Lin Ming. ACPICA BZ 383. 8463 8464Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 8465global 8466ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 8467Moore ACPICA BZ 442. 8468 8469Removed the obsolete version number in module headers. Removed the 8470"$Revision" number that appeared in each module header. This version 8471number 8472was useful under SourceSafe and CVS, but has no meaning under git. It is 8473not 8474only incorrect, it could also be misleading. 8475 8476Example Code and Data Size: These are the sizes for the OS-independent 8477acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8478debug version of the code includes the debug output trace mechanism and 8479has a 8480much larger code and data size. 8481 8482 Previous Release: 8483 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8484 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 8485 Current Release: 8486 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 8487 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 8488 8489---------------------------------------- 849029 August 2008. Summary of changes for version 20080829: 8491 84921) ACPI CA Core Subsystem: 8493 8494Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 8495Reference. Changes include the elimination of cheating on the Object 8496field 8497for the DdbHandle subtype, addition of a reference class field to 8498differentiate the various reference types (instead of an AML opcode), and 8499the 8500cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 8501 8502Reduce an error to a warning for an incorrect method argument count. 8503Previously aborted with an error if too few arguments were passed to a 8504control method via the external ACPICA interface. Now issue a warning 8505instead 8506and continue. Handles the case where the method inadvertently declares 8507too 8508many arguments, but does not actually use the extra ones. Applies mainly 8509to 8510the predefined methods. Lin Ming. Linux BZ 11032. 8511 8512Disallow the evaluation of named object types with no intrinsic value. 8513Return 8514AE_TYPE for objects that have no value and therefore evaluation is 8515undefined: 8516Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 8517of 8518these types were allowed, but an exception would be generated at some 8519point 8520during the evaluation. Now, the error is generated up front. 8521 8522Fixed a possible memory leak in the AcpiNsGetExternalPathname function 8523(nsnames.c). Fixes a leak in the error exit path. 8524 8525Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 8526debug 8527levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 8528ACPI_EXCEPTION 8529interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 8530ACPI_LV_EVENTS. 8531 8532Removed obsolete and/or unused exception codes from the acexcep.h header. 8533There is the possibility that certain device drivers may be affected if 8534they 8535use any of these exceptions. 8536 8537The ACPICA documentation has been added to the public git source tree, 8538under 8539acpica/documents. Included are the ACPICA programmer reference, the iASL 8540compiler reference, and the changes.txt release logfile. 8541 8542Example Code and Data Size: These are the sizes for the OS-independent 8543acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8544debug version of the code includes the debug output trace mechanism and 8545has a 8546much larger code and data size. 8547 8548 Previous Release: 8549 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8550 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 8551 Current Release: 8552 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8553 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 8554 85552) iASL Compiler/Disassembler and Tools: 8556 8557Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 8558defines _SCP with 3 arguments. Previous versions defined it with only 1 8559argument. iASL now allows both definitions. 8560 8561iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 8562zero- 8563length subtables when disassembling ACPI tables. Also fixed a couple of 8564errors where a full 16-bit table type field was not extracted from the 8565input 8566properly. 8567 8568acpisrc: Improve comment counting mechanism for generating source code 8569statistics. Count first and last lines of multi-line comments as 8570whitespace, 8571not comment lines. Handle Linux legal header in addition to standard 8572acpica 8573header. 8574 8575---------------------------------------- 8576 857729 July 2008. Summary of changes for version 20080729: 8578 85791) ACPI CA Core Subsystem: 8580 8581Fix a possible deadlock in the GPE dispatch. Remove call to 8582AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 8583attempt 8584to acquire the GPE lock but can deadlock since the GPE lock is already 8585held 8586at dispatch time. This code was introduced in version 20060831 as a 8587response 8588to Linux BZ 6881 and has since been removed from Linux. 8589 8590Add a function to dereference returned reference objects. Examines the 8591return 8592object from a call to AcpiEvaluateObject. Any Index or RefOf references 8593are 8594automatically dereferenced in an attempt to return something useful 8595(these 8596reference types cannot be converted into an external ACPI_OBJECT.) 8597Provides 8598MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 8599 8600x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 8601subtables for the MADT and one new subtable for the SRAT. Includes 8602disassembler and AcpiSrc support. Data from the Intel 64 Architecture 8603x2APIC 8604Specification, June 2008. 8605 8606Additional error checking for pathname utilities. Add error check after 8607all 8608calls to AcpiNsGetPathnameLength. Add status return from 8609AcpiNsBuildExternalPath and check after all calls. Add parameter 8610validation 8611to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 8612 8613Return status from the global init function AcpiUtGlobalInitialize. This 8614is 8615used by both the kernel subsystem and the utilities such as iASL 8616compiler. 8617The function could possibly fail when the caches are initialized. Yang 8618Yi. 8619 8620Add a function to decode reference object types to strings. Created for 8621improved error messages. 8622 8623Improve object conversion error messages. Better error messages during 8624object 8625conversion from internal to the external ACPI_OBJECT. Used for external 8626calls 8627to AcpiEvaluateObject. 8628 8629Example Code and Data Size: These are the sizes for the OS-independent 8630acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8631debug version of the code includes the debug output trace mechanism and 8632has a 8633much larger code and data size. 8634 8635 Previous Release: 8636 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 8637 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 8638 Current Release: 8639 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8640 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 8641 86422) iASL Compiler/Disassembler and Tools: 8643 8644Debugger: fix a possible hang when evaluating non-methods. Fixes a 8645problem 8646introduced in version 20080701. If the object being evaluated (via 8647execute 8648command) is not a method, the debugger can hang while trying to obtain 8649non- 8650existent parameters. 8651 8652iASL: relax error for using reserved "_T_x" identifiers. These names can 8653appear in a disassembled ASL file if they were emitted by the original 8654compiler. Instead of issuing an error or warning and forcing the user to 8655manually change these names, issue a remark instead. 8656 8657iASL: error if named object created in while loop. Emit an error if any 8658named 8659object is created within a While loop. If allowed, this code will 8660generate 8661a 8662run-time error on the second iteration of the loop when an attempt is 8663made 8664to 8665create the same named object twice. ACPICA bugzilla 730. 8666 8667iASL: Support absolute pathnames for include files. Add support for 8668absolute 8669pathnames within the Include operator. previously, only relative 8670pathnames 8671were supported. 8672 8673iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 8674Descriptor. 8675The ACPI spec requires one interrupt minimum. BZ 423 8676 8677iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 8678Handles the case for the Interrupt Resource Descriptor where 8679the ResourceSource argument is omitted but ResourceSourceIndex 8680is present. Now leave room for the Index. BZ 426 8681 8682iASL: Prevent error message if CondRefOf target does not exist. Fixes 8683cases 8684where an error message is emitted if the target does not exist. BZ 516 8685 8686iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 8687(get ACPI tables on Windows). This was apparently broken in version 868820070919. 8689 8690AcpiXtract: Handle EOF while extracting data. Correctly handle the case 8691where 8692the EOF happens immediately after the last table in the input file. Print 8693completion message. Previously, no message was displayed in this case. 8694 8695---------------------------------------- 869601 July 2008. Summary of changes for version 20080701: 8697 86980) Git source tree / acpica.org 8699 8700Fixed a problem where a git-clone from http would not transfer the entire 8701source tree. 8702 87031) ACPI CA Core Subsystem: 8704 8705Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 8706enable bit. Now performs a read-change-write of the enable register 8707instead 8708of simply writing out the cached enable mask. This will prevent 8709inadvertent 8710enabling of GPEs if a rogue GPE is received during initialization (before 8711GPE 8712handlers are installed.) 8713 8714Implemented a copy for dynamically loaded tables. Previously, dynamically 8715loaded tables were simply mapped - but on some machines this memory is 8716corrupted after suspend. Now copy the table to a local buffer. For the 8717OpRegion case, added checksum verify. Use the table length from the table 8718header, not the region length. For the Buffer case, use the table length 8719also. Dennis Noordsij, Bob Moore. BZ 10734 8720 8721Fixed a problem where the same ACPI table could not be dynamically loaded 8722and 8723unloaded more than once. Without this change, a table cannot be loaded 8724again 8725once it has been loaded/unloaded one time. The current mechanism does not 8726unregister a table upon an unload. During a load, if the same table is 8727found, 8728this no longer returns an exception. BZ 722 8729 8730Fixed a problem where the wrong descriptor length was calculated for the 8731EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 8732EndTag 8733are calculated as 12 bytes long, but the actual length in the internal 8734descriptor is 16 because of the round-up to 8 on the 64-bit build. 8735Reported 8736by Linn Crosetto. BZ 728 8737 8738Fixed a possible memory leak in the Unload operator. The DdbHandle 8739returned 8740by Load() did not have its reference count decremented during unload, 8741leading 8742to a memory leak. Lin Ming. BZ 727 8743 8744Fixed a possible memory leak when deleting thermal/processor objects. Any 8745associated notify handlers (and objects) were not being deleted. Fiodor 8746Suietov. BZ 506 8747 8748Fixed the ordering of the ASCII names in the global mutex table to match 8749the 8750actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 8751only. 8752Vegard Nossum. BZ 726 8753 8754Enhanced the AcpiGetObjectInfo interface to return the number of required 8755arguments if the object is a control method. Added this call to the 8756debugger 8757so the proper number of default arguments are passed to a method. This 8758prevents a warning when executing methods from AcpiExec. 8759 8760Added a check for an invalid handle in AcpiGetObjectInfo. Return 8761AE_BAD_PARAMETER if input handle is invalid. BZ 474 8762 8763Fixed an extraneous warning from exconfig.c on the 64-bit build. 8764 8765Example Code and Data Size: These are the sizes for the OS-independent 8766acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8767debug version of the code includes the debug output trace mechanism and 8768has a 8769much larger code and data size. 8770 8771 Previous Release: 8772 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 8773 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 8774 Current Release: 8775 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 8776 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 8777 87782) iASL Compiler/Disassembler and Tools: 8779 8780iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 8781resource descriptor names. 8782 8783iASL: Detect invalid ASCII characters in input (windows version). Removed 8784the 8785"-CF" flag from the flex compile, enables correct detection of non-ASCII 8786characters in the input. BZ 441 8787 8788iASL: Eliminate warning when result of LoadTable is not used. Eliminate 8789the 8790"result of operation not used" warning when the DDB handle returned from 8791LoadTable is not used. The warning is not needed. BZ 590 8792 8793AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 8794method 8795to 8796pass address of table to the AML. Added option to disable OpRegion 8797simulation 8798to allow creation of an OpRegion with a real address that was passed to 8799_CFG. 8800All of this allows testing of the Load and Unload operators from 8801AcpiExec. 8802 8803Debugger: update tables command for unloaded tables. Handle unloaded 8804tables 8805and use the standard table header output routine. 8806 8807---------------------------------------- 880809 June 2008. Summary of changes for version 20080609: 8809 88101) ACPI CA Core Subsystem: 8811 8812Implemented a workaround for reversed _PRT entries. A significant number 8813of 8814BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 8815change dynamically detects and repairs this problem. Provides 8816compatibility 8817with MS ACPI. BZ 6859 8818 8819Simplified the internal ACPI hardware interfaces to eliminate the locking 8820flag parameter from Register Read/Write. Added a new external interface, 8821AcpiGetRegisterUnlocked. 8822 8823Fixed a problem where the invocation of a GPE control method could hang. 8824This 8825was a regression introduced in 20080514. The new method argument count 8826validation mechanism can enter an infinite loop when a GPE method is 8827dispatched. Problem fixed by removing the obsolete code that passed GPE 8828block 8829information to the notify handler via the control method parameter 8830pointer. 8831 8832Fixed a problem where the _SST execution status was incorrectly returned 8833to 8834the caller of AcpiEnterSleepStatePrep. This was a regression introduced 8835in 883620080514. _SST is optional and a NOT_FOUND exception should never be 8837returned. BZ 716 8838 8839Fixed a problem where a deleted object could be accessed from within the 8840AML 8841parser. This was a regression introduced in version 20080123 as a fix for 8842the 8843Unload operator. Lin Ming. BZ 10669 8844 8845Cleaned up the debug operand dump mechanism. Eliminated unnecessary 8846operands 8847and eliminated the use of a negative index in a loop. Operands are now 8848displayed in the correct order, not backwards. This also fixes a 8849regression 8850introduced in 20080514 on 64-bit systems where the elimination of 8851ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 8852715 8853 8854Fixed a possible memory leak in EvPciConfigRegionSetup where the error 8855exit 8856path did not delete a locally allocated structure. 8857 8858Updated definitions for the DMAR and SRAT tables to synchronize with the 8859current specifications. Includes disassembler support. 8860 8861Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 8862loop termination value was used. Loop terminated on iteration early, 8863missing 8864one mutex. Linn Crosetto 8865 8866Example Code and Data Size: These are the sizes for the OS-independent 8867acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8868debug version of the code includes the debug output trace mechanism and 8869has a 8870much larger code and data size. 8871 8872 Previous Release: 8873 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 8874 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 8875 Current Release: 8876 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 8877 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 8878 88792) iASL Compiler/Disassembler and Tools: 8880 8881Disassembler: Implemented support for EisaId() within _CID objects. Now 8882disassemble integer _CID objects back to EisaId invocations, including 8883multiple integers within _CID packages. Includes single-step support for 8884debugger also. 8885 8886Disassembler: Added support for DMAR and SRAT table definition changes. 8887 8888---------------------------------------- 888914 May 2008. Summary of changes for version 20080514: 8890 88911) ACPI CA Core Subsystem: 8892 8893Fixed a problem where GPEs were enabled too early during the ACPICA 8894initialization. This could lead to "handler not installed" errors on some 8895machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 8896This 8897ensures that all operation regions and devices throughout the namespace 8898have 8899been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 8900 8901Implemented a change to the enter sleep code. Moved execution of the _GTS 8902method to just before setting sleep enable bit. The execution was moved 8903from 8904AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 8905immediately before the SLP_EN bit is set, as per the ACPI specification. 8906Luming Yu, BZ 1653. 8907 8908Implemented a fix to disable unknown GPEs (2nd version). Now always 8909disable 8910the GPE, even if ACPICA thinks that that it is already disabled. It is 8911possible that the AML or some other code has enabled the GPE unbeknownst 8912to 8913the ACPICA code. 8914 8915Fixed a problem with the Field operator where zero-length fields would 8916return 8917an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 8918ASL 8919field declarations in Field(), BankField(), and IndexField(). BZ 10606. 8920 8921Implemented a fix for the Load operator, now load the table at the 8922namespace 8923root. This reverts a change introduced in version 20071019. The table is 8924now 8925loaded at the namespace root even though this goes against the ACPI 8926specification. This provides compatibility with other ACPI 8927implementations. 8928The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 8929Ming. 8930 8931Fixed a problem where ACPICA would not Load() tables with unusual 8932signatures. 8933Now ignore ACPI table signature for Load() operator. Only "SSDT" is 8934acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 8935Therefore, signature validation is worthless. Apparently MS ACPI accepts 8936such 8937signatures, ACPICA must be compatible. BZ 10454. 8938 8939Fixed a possible negative array index in AcpiUtValidateException. Added 8940NULL 8941fields to the exception string arrays to eliminate a -1 subtraction on 8942the 8943SubStatus field. 8944 8945Updated the debug tracking macros to reduce overall code and data size. 8946Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 8947instead of pointers to static strings. Jan Beulich and Bob Moore. 8948 8949Implemented argument count checking in control method invocation via 8950AcpiEvaluateObject. Now emit an error if too few arguments, warning if 8951too 8952many. This applies only to extern programmatic control method execution, 8953not 8954method-to-method calls within the AML. Lin Ming. 8955 8956Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 8957no 8958longer needed, especially with the removal of 16-bit support. It was 8959replaced 8960mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 8961bit 8962on 896332/64-bit platforms is required. 8964 8965Added the C const qualifier for appropriate string constants -- mostly 8966MODULE_NAME and printf format strings. Jan Beulich. 8967 8968Example Code and Data Size: These are the sizes for the OS-independent 8969acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8970debug version of the code includes the debug output trace mechanism and 8971has a 8972much larger code and data size. 8973 8974 Previous Release: 8975 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 8976 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 8977 Current Release: 8978 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 8979 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 8980 89812) iASL Compiler/Disassembler and Tools: 8982 8983Implemented ACPI table revision ID validation in the disassembler. Zero 8984is 8985always invalid. For DSDTs, the ID controls the interpreter integer width. 89861 8987means 32-bit and this is unusual. 2 or greater is 64-bit. 8988 8989---------------------------------------- 899021 March 2008. Summary of changes for version 20080321: 8991 89921) ACPI CA Core Subsystem: 8993 8994Implemented an additional change to the GPE support in order to suppress 8995spurious or stray GPEs. The AcpiEvDisableGpe function will now 8996permanently 8997disable incoming GPEs that are neither enabled nor disabled -- meaning 8998that 8999the GPE is unknown to the system. This should prevent future interrupt 9000floods 9001from that GPE. BZ 6217 (Zhang Rui) 9002 9003Fixed a problem where NULL package elements were not returned to the 9004AcpiEvaluateObject interface correctly. The element was simply ignored 9005instead of returning a NULL ACPI_OBJECT package element, potentially 9006causing 9007a buffer overflow and/or confusing the caller who expected a fixed number 9008of 9009elements. BZ 10132 (Lin Ming, Bob Moore) 9010 9011Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 9012Dword, 9013Qword), Field, BankField, and IndexField operators when invoked from 9014inside 9015an executing control method. In this case, these operators created 9016namespace 9017nodes that were incorrectly left marked as permanent nodes instead of 9018temporary nodes. This could cause a problem if there is race condition 9019between an exiting control method and a running namespace walk. (Reported 9020by 9021Linn Crosetto) 9022 9023Fixed a problem where the CreateField and CreateXXXField operators would 9024incorrectly allow duplicate names (the name of the field) with no 9025exception 9026generated. 9027 9028Implemented several changes for Notify handling. Added support for new 9029Notify 9030values (ACPI 2.0+) and improved the Notify debug output. Notify on 9031PowerResource objects is no longer allowed, as per the ACPI 9032specification. 9033(Bob Moore, Zhang Rui) 9034 9035All Reference Objects returned via the AcpiEvaluateObject interface are 9036now 9037marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 9038for 9039NULL objects - either NULL package elements or unresolved named 9040references. 9041 9042Fixed a problem where an extraneous debug message was produced for 9043package 9044objects (when debugging enabled). The message "Package List length larger 9045than NumElements count" is now produced in the correct case, and is now 9046an 9047error message rather than a debug message. Added a debug message for the 9048opposite case, where NumElements is larger than the Package List (the 9049package 9050will be padded out with NULL elements as per the ACPI spec.) 9051 9052Implemented several improvements for the output of the ASL "Debug" object 9053to 9054clarify and keep all data for a given object on one output line. 9055 9056Fixed two size calculation issues with the variable-length Start 9057Dependent 9058resource descriptor. 9059 9060Example Code and Data Size: These are the sizes for the OS-independent 9061acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9062debug version of the code includes the debug output trace mechanism and 9063has 9064a much larger code and data size. 9065 9066 Previous Release: 9067 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 9068 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 9069 Current Release: 9070 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 9071 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 9072 90732) iASL Compiler/Disassembler and Tools: 9074 9075Fixed a problem with the use of the Switch operator where execution of 9076the 9077containing method by multiple concurrent threads could cause an 9078AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 9079actual Switch opcode, it must be simulated with local named temporary 9080variables and if/else pairs. The solution chosen was to mark any method 9081that 9082uses Switch as Serialized, thus preventing multiple thread entries. BZ 9083469. 9084 9085---------------------------------------- 908613 February 2008. Summary of changes for version 20080213: 9087 90881) ACPI CA Core Subsystem: 9089 9090Implemented another MS compatibility design change for GPE/Notify 9091handling. 9092GPEs are now cleared/enabled asynchronously to allow all pending notifies 9093to 9094complete first. It is expected that the OSL will queue the enable request 9095behind all pending notify requests (may require changes to the local host 9096OSL 9097in AcpiOsExecute). Alexey Starikovskiy. 9098 9099Fixed a problem where buffer and package objects passed as arguments to a 9100control method via the external AcpiEvaluateObject interface could cause 9101an 9102AE_AML_INTERNAL exception depending on the order and type of operators 9103executed by the target control method. 9104 9105Fixed a problem where resource descriptor size optimization could cause a 9106problem when a _CRS resource template is passed to a _SRS method. The 9107_SRS 9108resource template must use the same descriptors (with the same size) as 9109returned from _CRS. This change affects the following resource 9110descriptors: 9111IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 91129487) 9113 9114Fixed a problem where a CopyObject to RegionField, BankField, and 9115IndexField 9116objects did not perform an implicit conversion as it should. These types 9117must 9118retain their initial type permanently as per the ACPI specification. 9119However, 9120a CopyObject to all other object types should not perform an implicit 9121conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 9122 9123Fixed a problem with the AcpiGetDevices interface where the mechanism to 9124match device CIDs did not examine the entire list of available CIDs, but 9125instead aborted on the first non-matching CID. Andrew Patterson. 9126 9127Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 9128was 9129inadvertently changed to return a 16-bit value instead of a 32-bit value, 9130truncating the upper dword of a 64-bit value. This macro is only used to 9131display debug output, so no incorrect calculations were made. Also, 9132reimplemented the macro so that a 64-bit shift is not performed by 9133inefficient compilers. 9134 9135Added missing va_end statements that should correspond with each va_start 9136statement. 9137 9138Example Code and Data Size: These are the sizes for the OS-independent 9139acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9140debug version of the code includes the debug output trace mechanism and 9141has 9142a much larger code and data size. 9143 9144 Previous Release: 9145 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9146 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9147 Current Release: 9148 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 9149 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 9150 91512) iASL Compiler/Disassembler and Tools: 9152 9153Implemented full disassembler support for the following new ACPI tables: 9154BERT, EINJ, and ERST. Implemented partial disassembler support for the 9155complicated HEST table. These tables support the Windows Hardware Error 9156Architecture (WHEA). 9157 9158---------------------------------------- 915923 January 2008. Summary of changes for version 20080123: 9160 91611) ACPI CA Core Subsystem: 9162 9163Added the 2008 copyright to all module headers and signons. This affects 9164virtually every file in the ACPICA core subsystem, the iASL compiler, and 9165the tools/utilities. 9166 9167Fixed a problem with the SizeOf operator when used with Package and 9168Buffer 9169objects. These objects have deferred execution for some arguments, and 9170the 9171execution is now completed before the SizeOf is executed. This problem 9172caused 9173unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 9174BZ 91759558 9176 9177Implemented an enhancement to the interpreter "slack mode". In the 9178absence 9179of 9180an explicit return or an implicitly returned object from the last 9181executed 9182opcode, a control method will now implicitly return an integer of value 0 9183for 9184Microsoft compatibility. (Lin Ming) BZ 392 9185 9186Fixed a problem with the Load operator where an exception was not 9187returned 9188in 9189the case where the table is already loaded. (Lin Ming) BZ 463 9190 9191Implemented support for the use of DDBHandles as an Indexed Reference, as 9192per 9193the ACPI spec. (Lin Ming) BZ 486 9194 9195Implemented support for UserTerm (Method invocation) for the Unload 9196operator 9197as per the ACPI spec. (Lin Ming) BZ 580 9198 9199Fixed a problem with the LoadTable operator where the OemId and 9200OemTableId 9201input strings could cause unexpected failures if they were shorter than 9202the 9203maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 9204 9205Implemented support for UserTerm (Method invocation) for the Unload 9206operator 9207as per the ACPI spec. (Lin Ming) BZ 580 9208 9209Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 9210HEST, 9211IBFT, UEFI, WDAT. Disassembler support is forthcoming. 9212 9213Example Code and Data Size: These are the sizes for the OS-independent 9214acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9215debug version of the code includes the debug output trace mechanism and 9216has 9217a much larger code and data size. 9218 9219 Previous Release: 9220 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9221 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9222 Current Release: 9223 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9224 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9225 92262) iASL Compiler/Disassembler and Tools: 9227 9228Implemented support in the disassembler for checksum validation on 9229incoming 9230binary DSDTs and SSDTs. If incorrect, a message is displayed within the 9231table 9232header dump at the start of the disassembly. 9233 9234Implemented additional debugging information in the namespace listing 9235file 9236created during compilation. In addition to the namespace hierarchy, the 9237full 9238pathname to each namespace object is displayed. 9239 9240Fixed a problem with the disassembler where invalid ACPI tables could 9241cause 9242faults or infinite loops. 9243 9244Fixed an unexpected parse error when using the optional "parameter types" 9245list in a control method declaration. (Lin Ming) BZ 397 9246 9247Fixed a problem where two External declarations with the same name did 9248not 9249cause an error (Lin Ming) BZ 509 9250 9251Implemented support for full TermArgs (adding Argx, Localx and method 9252invocation) for the ParameterData parameter to the LoadTable operator. 9253(Lin 9254Ming) BZ 583,587 9255 9256---------------------------------------- 925719 December 2007. Summary of changes for version 20071219: 9258 92591) ACPI CA Core Subsystem: 9260 9261Implemented full support for deferred execution for the TermArg string 9262arguments for DataTableRegion. This enables forward references and full 9263operand resolution for the three string arguments. Similar to 9264OperationRegion 9265deferred argument execution.) Lin Ming. BZ 430 9266 9267Implemented full argument resolution support for the BankValue argument 9268to 9269BankField. Previously, only constants were supported, now any TermArg may 9270be 9271used. Lin Ming BZ 387, 393 9272 9273Fixed a problem with AcpiGetDevices where the search of a branch of the 9274device tree could be terminated prematurely. In accordance with the ACPI 9275specification, the search down the current branch is terminated if a 9276device 9277is both not present and not functional (instead of just not present.) 9278Yakui 9279Zhao. 9280 9281Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 9282if 9283the underlying AML code changed the GPE enable registers. Now, any 9284unknown 9285incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 9286disabled 9287instead of simply ignored. Rui Zhang. 9288 9289Fixed a problem with Index Fields where the Index register was 9290incorrectly 9291limited to a maximum of 32 bits. Now any size may be used. 9292 9293Fixed a couple memory leaks associated with "implicit return" objects 9294when 9295the AML Interpreter slack mode is enabled. Lin Ming BZ 349 9296 9297Example Code and Data Size: These are the sizes for the OS-independent 9298acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9299debug version of the code includes the debug output trace mechanism and 9300has 9301a much larger code and data size. 9302 9303 Previous Release: 9304 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 9305 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9306 Current Release: 9307 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9308 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9309 9310---------------------------------------- 931114 November 2007. Summary of changes for version 20071114: 9312 93131) ACPI CA Core Subsystem: 9314 9315Implemented event counters for each of the Fixed Events, the ACPI SCI 9316(interrupt) itself, and control methods executed. Named 9317AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 9318These 9319should be useful for debugging and statistics. 9320 9321Implemented a new external interface, AcpiGetStatistics, to retrieve the 9322contents of the various event counters. Returns the current values for 9323AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 9324AcpiMethodCount. The interface can be expanded in the future if new 9325counters 9326are added. Device drivers should use this interface rather than access 9327the 9328counters directly. 9329 9330Fixed a problem with the FromBCD and ToBCD operators. With some 9331compilers, 9332the ShortDivide function worked incorrectly, causing problems with the 9333BCD 9334functions with large input values. A truncation from 64-bit to 32-bit 9335inadvertently occurred. Internal BZ 435. Lin Ming 9336 9337Fixed a problem with Index references passed as method arguments. 9338References 9339passed as arguments to control methods were dereferenced immediately 9340(before 9341control was passed to the called method). The references are now 9342correctly 9343passed directly to the called method. BZ 5389. Lin Ming 9344 9345Fixed a problem with CopyObject used in conjunction with the Index 9346operator. 9347The reference was incorrectly dereferenced before the copy. The reference 9348is 9349now correctly copied. BZ 5391. Lin Ming 9350 9351Fixed a problem with Control Method references within Package objects. 9352These 9353references are now correctly generated. This completes the package 9354construction overhaul that began in version 20071019. 9355 9356Example Code and Data Size: These are the sizes for the OS-independent 9357acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9358debug version of the code includes the debug output trace mechanism and 9359has 9360a much larger code and data size. 9361 9362 Previous Release: 9363 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 9364 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 9365 Current Release: 9366 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 9367 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9368 9369 93702) iASL Compiler/Disassembler and Tools: 9371 9372The AcpiExec utility now installs handlers for all of the predefined 9373Operation Region types. New types supported are: PCI_Config, CMOS, and 9374PCIBARTarget. 9375 9376Fixed a problem with the 64-bit version of AcpiExec where the extended 9377(64- 9378bit) address fields for the DSDT and FACS within the FADT were not being 9379used, causing truncation of the upper 32-bits of these addresses. Lin 9380Ming 9381and Bob Moore 9382 9383---------------------------------------- 938419 October 2007. Summary of changes for version 20071019: 9385 93861) ACPI CA Core Subsystem: 9387 9388Fixed a problem with the Alias operator when the target of the alias is a 9389named ASL operator that opens a new scope -- Scope, Device, 9390PowerResource, 9391Processor, and ThermalZone. In these cases, any children of the original 9392operator could not be accessed via the alias, potentially causing 9393unexpected 9394AE_NOT_FOUND exceptions. (BZ 9067) 9395 9396Fixed a problem with the Package operator where all named references were 9397created as object references and left otherwise unresolved. According to 9398the 9399ACPI specification, a Package can only contain Data Objects or references 9400to 9401control methods. The implication is that named references to Data Objects 9402(Integer, Buffer, String, Package, BufferField, Field) should be resolved 9403immediately upon package creation. This is the approach taken with this 9404change. References to all other named objects (Methods, Devices, Scopes, 9405etc.) are all now properly created as reference objects. (BZ 5328) 9406 9407Reverted a change to Notify handling that was introduced in version 940820070508. This version changed the Notify handling from asynchronous to 9409fully synchronous (Device driver Notify handling with respect to the 9410Notify 9411ASL operator). It was found that this change caused more problems than it 9412solved and was removed by most users. 9413 9414Fixed a problem with the Increment and Decrement operators where the type 9415of 9416the target object could be unexpectedly and incorrectly changed. (BZ 353) 9417Lin Ming. 9418 9419Fixed a problem with the Load and LoadTable operators where the table 9420location within the namespace was ignored. Instead, the table was always 9421loaded into the root or current scope. Lin Ming. 9422 9423Fixed a problem with the Load operator when loading a table from a buffer 9424object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 9425 9426Fixed a problem with the Debug object where a store of a DdbHandle 9427reference 9428object to the Debug object could cause a fault. 9429 9430Added a table checksum verification for the Load operator, in the case 9431where 9432the load is from a buffer. (BZ 578). 9433 9434Implemented additional parameter validation for the LoadTable operator. 9435The 9436length of the input strings SignatureString, OemIdString, and OemTableId 9437are 9438now checked for maximum lengths. (BZ 582) Lin Ming. 9439 9440Example Code and Data Size: These are the sizes for the OS-independent 9441acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9442debug version of the code includes the debug output trace mechanism and 9443has 9444a much larger code and data size. 9445 9446 Previous Release: 9447 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 9448 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 9449 Current Release: 9450 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 9451 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 9452 9453 94542) iASL Compiler/Disassembler: 9455 9456Fixed a problem where if a single file was specified and the file did not 9457exist, no error message was emitted. (Introduced with wildcard support in 9458version 20070917.) 9459 9460---------------------------------------- 946119 September 2007. Summary of changes for version 20070919: 9462 94631) ACPI CA Core Subsystem: 9464 9465Designed and implemented new external interfaces to install and remove 9466handlers for ACPI table-related events. Current events that are defined 9467are 9468LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 9469they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 9470AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 9471 9472Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 9473(acpi_serialized option on Linux) could cause some systems to hang during 9474initialization. (Bob Moore) BZ 8171 9475 9476Fixed a problem where objects of certain types (Device, ThermalZone, 9477Processor, PowerResource) can be not found if they are declared and 9478referenced from within the same control method (Lin Ming) BZ 341 9479 9480Example Code and Data Size: These are the sizes for the OS-independent 9481acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9482debug version of the code includes the debug output trace mechanism and 9483has 9484a much larger code and data size. 9485 9486 Previous Release: 9487 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 9488 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 9489 Current Release: 9490 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 9491 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 9492 9493 94942) iASL Compiler/Disassembler: 9495 9496Implemented support to allow multiple files to be compiled/disassembled 9497in 9498a 9499single invocation. This includes command line wildcard support for both 9500the 9501Windows and Unix versions of the compiler. This feature simplifies the 9502disassembly and compilation of multiple ACPI tables in a single 9503directory. 9504 9505---------------------------------------- 950608 May 2007. Summary of changes for version 20070508: 9507 95081) ACPI CA Core Subsystem: 9509 9510Implemented a Microsoft compatibility design change for the handling of 9511the 9512Notify AML operator. Previously, notify handlers were dispatched and 9513executed completely asynchronously in a deferred thread. The new design 9514still executes the notify handlers in a different thread, but the 9515original 9516thread that executed the Notify() now waits at a synchronization point 9517for 9518the notify handler to complete. Some machines depend on a synchronous 9519Notify 9520operator in order to operate correctly. 9521 9522Implemented support to allow Package objects to be passed as method 9523arguments to the external AcpiEvaluateObject interface. Previously, this 9524would return the AE_NOT_IMPLEMENTED exception. This feature had not been 9525implemented since there were no reserved control methods that required it 9526until recently. 9527 9528Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 9529that 9530contained invalid non-zero values in reserved fields could cause later 9531failures because these fields have meaning in later revisions of the 9532FADT. 9533For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 9534fields 9535are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 9536 9537Fixed a problem where the Global Lock handle was not properly updated if 9538a 9539thread that acquired the Global Lock via executing AML code then 9540attempted 9541to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 9542Joe 9543Liu. 9544 9545Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 9546could be corrupted if the interrupt being removed was at the head of the 9547list. Reported by Linn Crosetto. 9548 9549Example Code and Data Size: These are the sizes for the OS-independent 9550acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9551debug version of the code includes the debug output trace mechanism and 9552has 9553a much larger code and data size. 9554 9555 Previous Release: 9556 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9557 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 9558 Current Release: 9559 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 9560 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 9561 9562---------------------------------------- 956320 March 2007. Summary of changes for version 20070320: 9564 95651) ACPI CA Core Subsystem: 9566 9567Implemented a change to the order of interpretation and evaluation of AML 9568operand objects within the AML interpreter. The interpreter now evaluates 9569operands in the order that they appear in the AML stream (and the 9570corresponding ASL code), instead of in the reverse order (after the 9571entire 9572operand list has been parsed). The previous behavior caused several 9573subtle 9574incompatibilities with the Microsoft AML interpreter as well as being 9575somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 9576 9577Implemented a change to the ACPI Global Lock support. All interfaces to 9578the 9579global lock now allow the same thread to acquire the lock multiple times. 9580This affects the AcpiAcquireGlobalLock external interface to the global 9581lock 9582as well as the internal use of the global lock to support AML fields -- a 9583control method that is holding the global lock can now simultaneously 9584access 9585AML fields that require global lock protection. Previously, in both 9586cases, 9587this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 9588to 9589AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 9590Controller. There is no change to the behavior of the AML Acquire 9591operator, 9592as this can already be used to acquire a mutex multiple times by the same 9593thread. BZ 8066. With assistance from Alexey Starikovskiy. 9594 9595Fixed a problem where invalid objects could be referenced in the AML 9596Interpreter after error conditions. During operand evaluation, ensure 9597that 9598the internal "Return Object" field is cleared on error and only valid 9599pointers are stored there. Caused occasional access to deleted objects 9600that 9601resulted in "large reference count" warning messages. Valery Podrezov. 9602 9603Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 9604on 9605deeply nested control method invocations. BZ 7873, local BZ 487. Valery 9606Podrezov. 9607 9608Fixed an internal problem with the handling of result objects on the 9609interpreter result stack. BZ 7872. Valery Podrezov. 9610 9611Removed obsolete code that handled the case where AML_NAME_OP is the 9612target 9613of a reference (Reference.Opcode). This code was no longer necessary. BZ 96147874. Valery Podrezov. 9615 9616Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 9617was 9618a 9619remnant from the previously discontinued 16-bit support. 9620 9621Example Code and Data Size: These are the sizes for the OS-independent 9622acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9623debug version of the code includes the debug output trace mechanism and 9624has 9625a much larger code and data size. 9626 9627 Previous Release: 9628 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9629 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9630 Current Release: 9631 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9632 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 9633 9634---------------------------------------- 963526 January 2007. Summary of changes for version 20070126: 9636 96371) ACPI CA Core Subsystem: 9638 9639Added the 2007 copyright to all module headers and signons. This affects 9640virtually every file in the ACPICA core subsystem, the iASL compiler, and 9641the utilities. 9642 9643Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 9644during a table load. A bad pointer was passed in the case where the DSDT 9645is 9646overridden, causing a fault in this case. 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.0K Code, 17.1K Data, 95.1K Total 9656 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9657 Current Release: 9658 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9659 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9660 9661---------------------------------------- 966215 December 2006. Summary of changes for version 20061215: 9663 96641) ACPI CA Core Subsystem: 9665 9666Support for 16-bit ACPICA has been completely removed since it is no 9667longer 9668necessary and it clutters the code. All 16-bit macros, types, and 9669conditional compiles have been removed, cleaning up and simplifying the 9670code 9671across the entire subsystem. DOS support is no longer needed since the 9672bootable Linux firmware kit is now available. 9673 9674The handler for the Global Lock is now removed during AcpiTerminate to 9675enable a clean subsystem restart, via the implementation of the 9676AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 9677HP) 9678 9679Implemented enhancements to the multithreading support within the 9680debugger 9681to enable improved multithreading debugging and evaluation of the 9682subsystem. 9683(Valery Podrezov) 9684 9685Debugger: Enhanced the Statistics/Memory command to emit the total 9686(maximum) 9687memory used during the execution, as well as the maximum memory consumed 9688by 9689each of the various object types. (Valery Podrezov) 9690 9691Example Code and Data Size: These are the sizes for the OS-independent 9692acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9693debug version of the code includes the debug output trace mechanism and 9694has 9695a much larger code and data size. 9696 9697 Previous Release: 9698 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 9699 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 9700 Current Release: 9701 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9702 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9703 9704 97052) iASL Compiler/Disassembler and Tools: 9706 9707AcpiExec: Implemented a new option (-m) to display full memory use 9708statistics upon subsystem/program termination. (Valery Podrezov) 9709 9710---------------------------------------- 971109 November 2006. Summary of changes for version 20061109: 9712 97131) ACPI CA Core Subsystem: 9714 9715Optimized the Load ASL operator in the case where the source operand is 9716an 9717operation region. Simply map the operation region memory, instead of 9718performing a bytewise read. (Region must be of type SystemMemory, see 9719below.) 9720 9721Fixed the Load ASL operator for the case where the source operand is a 9722region field. A buffer object is also allowed as the source operand. BZ 9723480 9724 9725Fixed a problem where the Load ASL operator allowed the source operand to 9726be 9727an operation region of any type. It is now restricted to regions of type 9728SystemMemory, as per the ACPI specification. BZ 481 9729 9730Additional cleanup and optimizations for the new Table Manager code. 9731 9732AcpiEnable will now fail if all of the required ACPI tables are not 9733loaded 9734(FADT, FACS, DSDT). BZ 477 9735 9736Added #pragma pack(8/4) to acobject.h to ensure that the structures in 9737this 9738header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 9739manually optimized to be aligned and will not work if it is byte-packed. 9740 9741Example Code and Data Size: These are the sizes for the OS-independent 9742acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9743debug version of the code includes the debug output trace mechanism and 9744has 9745a much larger code and data size. 9746 9747 Previous Release: 9748 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 9749 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 9750 Current Release: 9751 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 9752 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 9753 9754 97552) iASL Compiler/Disassembler and Tools: 9756 9757Fixed a problem where the presence of the _OSI predefined control method 9758within complex expressions could cause an internal compiler error. 9759 9760AcpiExec: Implemented full region support for multiple address spaces. 9761SpaceId is now part of the REGION object. BZ 429 9762 9763---------------------------------------- 976411 October 2006. Summary of changes for version 20061011: 9765 97661) ACPI CA Core Subsystem: 9767 9768Completed an AML interpreter performance enhancement for control method 9769execution. Previously a 2-pass parse/execution, control methods are now 9770completely parsed and executed in a single pass. This improves overall 9771interpreter performance by ~25%, reduces code size, and reduces CPU stack 9772use. (Valery Podrezov + interpreter changes in version 20051202 that 9773eliminated namespace loading during the pass one parse.) 9774 9775Implemented _CID support for PCI Root Bridge detection. If the _HID does 9776not 9777match the predefined PCI Root Bridge IDs, the _CID list (if present) is 9778now 9779obtained and also checked for an ID match. 9780 9781Implemented additional support for the PCI _ADR execution: upsearch until 9782a 9783device scope is found before executing _ADR. This allows PCI_Config 9784operation regions to be declared locally within control methods 9785underneath 9786PCI device objects. 9787 9788Fixed a problem with a possible race condition between threads executing 9789AcpiWalkNamespace and the AML interpreter. This condition was removed by 9790modifying AcpiWalkNamespace to (by default) ignore all temporary 9791namespace 9792entries created during any concurrent control method execution. An 9793additional namespace race condition is known to exist between 9794AcpiWalkNamespace and the Load/Unload ASL operators and is still under 9795investigation. 9796 9797Restructured the AML ParseLoop function, breaking it into several 9798subfunctions in order to reduce CPU stack use and improve 9799maintainability. 9800(Mikhail Kouzmich) 9801 9802AcpiGetHandle: Fix for parameter validation to detect invalid 9803combinations 9804of prefix handle and pathname. BZ 478 9805 9806Example Code and Data Size: These are the sizes for the OS-independent 9807acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9808debug version of the code includes the debug output trace mechanism and 9809has 9810a much larger code and data size. 9811 9812 Previous Release: 9813 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9814 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 9815 Current Release: 9816 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 9817 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 9818 98192) iASL Compiler/Disassembler and Tools: 9820 9821Ported the -g option (get local ACPI tables) to the new ACPICA Table 9822Manager 9823to restore original behavior. 9824 9825---------------------------------------- 982627 September 2006. Summary of changes for version 20060927: 9827 98281) ACPI CA Core Subsystem: 9829 9830Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 9831These functions now use a spinlock for mutual exclusion and the interrupt 9832level indication flag is not needed. 9833 9834Fixed a problem with the Global Lock where the lock could appear to be 9835obtained before it is actually obtained. The global lock semaphore was 9836inadvertently created with one unit instead of zero units. (BZ 464) 9837Fiodor 9838Suietov. 9839 9840Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 9841during 9842a read from a buffer or region field. (BZ 458) Fiodor Suietov. 9843 9844Example Code and Data Size: These are the sizes for the OS-independent 9845acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9846debug version of the code includes the debug output trace mechanism and 9847has 9848a much larger code and data size. 9849 9850 Previous Release: 9851 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9852 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 9853 Current Release: 9854 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9855 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 9856 9857 98582) iASL Compiler/Disassembler and Tools: 9859 9860Fixed a compilation problem with the pre-defined Resource Descriptor 9861field 9862names where an "object does not exist" error could be incorrectly 9863generated 9864if the parent ResourceTemplate pathname places the template within a 9865different namespace scope than the current scope. (BZ 7212) 9866 9867Fixed a problem where the compiler could hang after syntax errors 9868detected 9869in an ElseIf construct. (BZ 453) 9870 9871Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 9872operator. An incorrect output filename was produced when this parameter 9873was 9874a null string (""). Now, the original input filename is used as the AML 9875output filename, with an ".aml" extension. 9876 9877Implemented a generic batch command mode for the AcpiExec utility 9878(execute 9879any AML debugger command) (Valery Podrezov). 9880 9881---------------------------------------- 988212 September 2006. Summary of changes for version 20060912: 9883 98841) ACPI CA Core Subsystem: 9885 9886Enhanced the implementation of the "serialized mode" of the interpreter 9887(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 9888specified, instead of creating a serialization semaphore per control 9889method, 9890the interpreter lock is simply no longer released before a blocking 9891operation during control method execution. This effectively makes the AML 9892Interpreter single-threaded. The overhead of a semaphore per-method is 9893eliminated. 9894 9895Fixed a regression where an error was no longer emitted if a control 9896method 9897attempts to create 2 objects of the same name. This once again returns 9898AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 9899that 9900will dynamically serialize the control method to possible prevent future 9901errors. (BZ 440) 9902 9903Integrated a fix for a problem with PCI Express HID detection in the PCI 9904Config Space setup procedure. (BZ 7145) 9905 9906Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 9907AcpiHwInitialize function - the FADT registers are now validated when the 9908table is loaded. 9909 9910Added two new warnings during FADT verification - 1) if the FADT is 9911larger 9912than the largest known FADT version, and 2) if there is a mismatch 9913between 9914a 991532-bit block address and the 64-bit X counterpart (when both are non- 9916zero.) 9917 9918Example Code and Data Size: These are the sizes for the OS-independent 9919acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9920debug version of the code includes the debug output trace mechanism and 9921has 9922a much larger code and data size. 9923 9924 Previous Release: 9925 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 9926 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 9927 Current Release: 9928 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9929 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 9930 9931 99322) iASL Compiler/Disassembler and Tools: 9933 9934Fixed a problem with the implementation of the Switch() operator where 9935the 9936temporary variable was declared too close to the actual Switch, instead 9937of 9938at method level. This could cause a problem if the Switch() operator is 9939within a while loop, causing an error on the second iteration. (BZ 460) 9940 9941Disassembler - fix for error emitted for unknown type for target of scope 9942operator. Now, ignore it and continue. 9943 9944Disassembly of an FADT now verifies the input FADT and reports any errors 9945found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 9946 9947Disassembly of raw data buffers with byte initialization data now 9948prefixes 9949each output line with the current buffer offset. 9950 9951Disassembly of ASF! table now includes all variable-length data fields at 9952the end of some of the subtables. 9953 9954The disassembler now emits a comment if a buffer appears to be a 9955ResourceTemplate, but cannot be disassembled as such because the EndTag 9956does 9957not appear at the very end of the buffer. 9958 9959AcpiExec - Added the "-t" command line option to enable the serialized 9960mode 9961of the AML interpreter. 9962 9963---------------------------------------- 996431 August 2006. Summary of changes for version 20060831: 9965 99661) ACPI CA Core Subsystem: 9967 9968Miscellaneous fixes for the Table Manager: 9969- Correctly initialize internal common FADT for all 64-bit "X" fields 9970- Fixed a couple table mapping issues during table load 9971- Fixed a couple alignment issues for IA64 9972- Initialize input array to zero in AcpiInitializeTables 9973- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 9974AcpiGetTableByIndex 9975 9976Change for GPE support: when a "wake" GPE is received, all wake GPEs are 9977now 9978immediately disabled to prevent the waking GPE from firing again and to 9979prevent other wake GPEs from interrupting the wake process. 9980 9981Added the AcpiGpeCount global that tracks the number of processed GPEs, 9982to 9983be used for debugging systems with a large number of ACPI interrupts. 9984 9985Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 9986both the ACPICA headers and the disassembler. 9987 9988Example Code and Data Size: These are the sizes for the OS-independent 9989acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9990debug version of the code includes the debug output trace mechanism and 9991has 9992a much larger code and data size. 9993 9994 Previous Release: 9995 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 9996 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 9997 Current Release: 9998 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 9999 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 10000 10001 100022) iASL Compiler/Disassembler and Tools: 10003 10004Disassembler support for the DMAR ACPI table. 10005 10006---------------------------------------- 1000723 August 2006. Summary of changes for version 20060823: 10008 100091) ACPI CA Core Subsystem: 10010 10011The Table Manager component has been completely redesigned and 10012reimplemented. The new design is much simpler, and reduces the overall 10013code 10014and data size of the kernel-resident ACPICA by approximately 5%. Also, it 10015is 10016now possible to obtain the ACPI tables very early during kernel 10017initialization, even before dynamic memory management is initialized. 10018(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 10019 10020Obsolete ACPICA interfaces: 10021 10022- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 10023init 10024time). 10025- AcpiLoadTable: Not needed. 10026- AcpiUnloadTable: Not needed. 10027 10028New ACPICA interfaces: 10029 10030- AcpiInitializeTables: Must be called before the table manager can be 10031used. 10032- AcpiReallocateRootTable: Used to transfer the root table to dynamically 10033allocated memory after it becomes available. 10034- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 10035tables 10036in the RSDT/XSDT. 10037 10038Other ACPICA changes: 10039 10040- AcpiGetTableHeader returns the actual mapped table header, not a copy. 10041Use 10042AcpiOsUnmapMemory to free this mapping. 10043- AcpiGetTable returns the actual mapped table. The mapping is managed 10044internally and must not be deleted by the caller. Use of this interface 10045causes no additional dynamic memory allocation. 10046- AcpiFindRootPointer: Support for physical addressing has been 10047eliminated, 10048it appeared to be unused. 10049- The interface to AcpiOsMapMemory has changed to be consistent with the 10050other allocation interfaces. 10051- The interface to AcpiOsGetRootPointer has changed to eliminate 10052unnecessary 10053parameters. 10054- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 1005564- 10056bit platforms. Was previously 64 bits on all platforms. 10057- The interface to the ACPI Global Lock acquire/release macros have 10058changed 10059slightly since ACPICA no longer keeps a local copy of the FACS with a 10060constructed pointer to the actual global lock. 10061 10062Porting to the new table manager: 10063 10064- AcpiInitializeTables: Must be called once, and can be called anytime 10065during the OS initialization process. It allows the host to specify an 10066area 10067of memory to be used to store the internal version of the RSDT/XSDT (root 10068table). This allows the host to access ACPI tables before memory 10069management 10070is initialized and running. 10071- AcpiReallocateRootTable: Can be called after memory management is 10072running 10073to copy the root table to a dynamically allocated array, freeing up the 10074scratch memory specified in the call to AcpiInitializeTables. 10075- AcpiSubsystemInitialize: This existing interface is independent of the 10076Table Manager, and does not have to be called before the Table Manager 10077can 10078be used, it only must be called before the rest of ACPICA can be used. 10079- ACPI Tables: Some changes have been made to the names and structure of 10080the 10081actbl.h and actbl1.h header files and may require changes to existing 10082code. 10083For example, bitfields have been completely removed because of their lack 10084of 10085portability across C compilers. 10086- Update interfaces to the Global Lock acquire/release macros if local 10087versions are used. (see acwin.h) 10088 10089Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 10090 10091New files: tbfind.c 10092 10093Example Code and Data Size: These are the sizes for the OS-independent 10094acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10095debug version of the code includes the debug output trace mechanism and 10096has 10097a much larger code and data size. 10098 10099 Previous Release: 10100 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10101 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10102 Current Release: 10103 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 10104 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 10105 10106 101072) iASL Compiler/Disassembler and Tools: 10108 10109No changes for this release. 10110 10111---------------------------------------- 1011221 July 2006. Summary of changes for version 20060721: 10113 101141) ACPI CA Core Subsystem: 10115 10116The full source code for the ASL test suite used to validate the iASL 10117compiler and the ACPICA core subsystem is being released with the ACPICA 10118source for the first time. The source is contained in a separate package 10119and 10120consists of over 1100 files that exercise all ASL/AML operators. The 10121package 10122should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 10123Fiodor 10124Suietov) 10125 10126Completed a new design and implementation for support of the ACPI Global 10127Lock. On the OS side, the global lock is now treated as a standard AML 10128mutex. Previously, multiple OS threads could "acquire" the global lock 10129simultaneously. However, this could cause the BIOS to be starved out of 10130the 10131lock - especially in cases such as the Embedded Controller driver where 10132there is a tight coupling between the OS and the BIOS. 10133 10134Implemented an optimization for the ACPI Global Lock interrupt mechanism. 10135The Global Lock interrupt handler no longer queues the execution of a 10136separate thread to signal the global lock semaphore. Instead, the 10137semaphore 10138is signaled directly from the interrupt handler. 10139 10140Implemented support within the AML interpreter for package objects that 10141contain a larger AML length (package list length) than the package 10142element 10143count. In this case, the length of the package is truncated to match the 10144package element count. Some BIOS code apparently modifies the package 10145length 10146on the fly, and this change supports this behavior. Provides 10147compatibility 10148with the MS AML interpreter. (With assistance from Fiodor Suietov) 10149 10150Implemented a temporary fix for the BankValue parameter of a Bank Field 10151to 10152support all constant values, now including the Zero and One opcodes. 10153Evaluation of this parameter must eventually be converted to a full 10154TermArg 10155evaluation. A not-implemented error is now returned (temporarily) for 10156non- 10157constant values for this parameter. 10158 10159Fixed problem reports (Fiodor Suietov) integrated: 10160- Fix for premature object deletion after CopyObject on Operation Region 10161(BZ 10162350) 10163 10164Example Code and Data Size: These are the sizes for the OS-independent 10165acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10166debug version of the code includes the debug output trace mechanism and 10167has 10168a much larger code and data size. 10169 10170 Previous Release: 10171 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 10172 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 10173 Current Release: 10174 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10175 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10176 10177 101782) iASL Compiler/Disassembler and Tools: 10179 10180No changes for this release. 10181 10182---------------------------------------- 1018307 July 2006. Summary of changes for version 20060707: 10184 101851) ACPI CA Core Subsystem: 10186 10187Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 10188that do not allow the initialization of address pointers within packed 10189structures - even though the hardware itself may support misaligned 10190transfers. Some of the debug data structures are packed by default to 10191minimize size. 10192 10193Added an error message for the case where AcpiOsGetThreadId() returns 10194zero. 10195A non-zero value is required by the core ACPICA code to ensure the proper 10196operation of AML mutexes and recursive control methods. 10197 10198The DSDT is now the only ACPI table that determines whether the AML 10199interpreter is in 32-bit or 64-bit mode. Not really a functional change, 10200but 10201the hooks for per-table 32/64 switching have been removed from the code. 10202A 10203clarification to the ACPI specification is forthcoming in ACPI 3.0B. 10204 10205Fixed a possible leak of an OwnerID in the error path of 10206AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 10207deletion to a single place in AcpiTbUninstallTable to correct possible 10208leaks 10209when using the AcpiTbDeleteTablesByType interface (with assistance from 10210Lance Ortiz.) 10211 10212Fixed a problem with Serialized control methods where the semaphore 10213associated with the method could be over-signaled after multiple method 10214invocations. 10215 10216Fixed two issues with the locking of the internal namespace data 10217structure. 10218Both the Unload() operator and AcpiUnloadTable interface now lock the 10219namespace during the namespace deletion associated with the table unload 10220(with assistance from Linn Crosetto.) 10221 10222Fixed problem reports (Valery Podrezov) integrated: 10223- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 10224 10225Fixed problem reports (Fiodor Suietov) integrated: 10226- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 10227- On Address Space handler deletion, needless deactivation call (BZ 374) 10228- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 10229375) 10230- Possible memory leak, Notify sub-objects of Processor, Power, 10231ThermalZone 10232(BZ 376) 10233- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 10234- Minimum Length of RSDT should be validated (BZ 379) 10235- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 10236Handler (BZ (380) 10237- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 10238loaded 10239(BZ 381) 10240 10241Example Code and Data Size: These are the sizes for the OS-independent 10242acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10243debug version of the code includes the debug output trace mechanism and 10244has 10245a much larger code and data size. 10246 10247 Previous Release: 10248 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10249 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10250 Current Release: 10251 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10252 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10253 10254 102552) iASL Compiler/Disassembler and Tools: 10256 10257Fixed problem reports: 10258Compiler segfault when ASL contains a long (>1024) String declaration (BZ 10259436) 10260 10261---------------------------------------- 1026223 June 2006. Summary of changes for version 20060623: 10263 102641) ACPI CA Core Subsystem: 10265 10266Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 10267allows the type to be customized to the host OS for improved efficiency 10268(since a spinlock is usually a very small object.) 10269 10270Implemented support for "ignored" bits in the ACPI registers. According 10271to 10272the ACPI specification, these bits should be preserved when writing the 10273registers via a read/modify/write cycle. There are 3 bits preserved in 10274this 10275manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 10276 10277Implemented the initial deployment of new OSL mutex interfaces. Since 10278some 10279host operating systems have separate mutex and semaphore objects, this 10280feature was requested. The base code now uses mutexes (and the new mutex 10281interfaces) wherever a binary semaphore was used previously. However, for 10282the current release, the mutex interfaces are defined as macros to map 10283them 10284to the existing semaphore interfaces. Therefore, no OSL changes are 10285required 10286at this time. (See acpiosxf.h) 10287 10288Fixed several problems with the support for the control method SyncLevel 10289parameter. The SyncLevel now works according to the ACPI specification 10290and 10291in concert with the Mutex SyncLevel parameter, since the current 10292SyncLevel 10293is a property of the executing thread. Mutual exclusion for control 10294methods 10295is now implemented with a mutex instead of a semaphore. 10296 10297Fixed three instances of the use of the C shift operator in the bitfield 10298support code (exfldio.c) to avoid the use of a shift value larger than 10299the 10300target data width. The behavior of C compilers is undefined in this case 10301and 10302can cause unpredictable results, and therefore the case must be detected 10303and 10304avoided. (Fiodor Suietov) 10305 10306Added an info message whenever an SSDT or OEM table is loaded dynamically 10307via the Load() or LoadTable() ASL operators. This should improve 10308debugging 10309capability since it will show exactly what tables have been loaded 10310(beyond 10311the tables present in the RSDT/XSDT.) 10312 10313Example Code and Data Size: These are the sizes for the OS-independent 10314acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10315debug version of the code includes the debug output trace mechanism and 10316has 10317a much larger code and data size. 10318 10319 Previous Release: 10320 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10321 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10322 Current Release: 10323 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10324 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10325 10326 103272) iASL Compiler/Disassembler and Tools: 10328 10329No changes for this release. 10330 10331---------------------------------------- 1033208 June 2006. Summary of changes for version 20060608: 10333 103341) ACPI CA Core Subsystem: 10335 10336Converted the locking mutex used for the ACPI hardware to a spinlock. 10337This 10338change should eliminate all problems caused by attempting to acquire a 10339semaphore at interrupt level, and it means that all ACPICA external 10340interfaces that directly access the ACPI hardware can be safely called 10341from 10342interrupt level. OSL code that implements the semaphore interfaces should 10343be 10344able to eliminate any workarounds for being called at interrupt level. 10345 10346Fixed a regression introduced in 20060526 where the ACPI device 10347initialization could be prematurely aborted with an AE_NOT_FOUND if a 10348device 10349did not have an optional _INI method. 10350 10351Fixed an IndexField issue where a write to the Data Register should be 10352limited in size to the AccessSize (width) of the IndexField itself. (BZ 10353433, 10354Fiodor Suietov) 10355 10356Fixed problem reports (Valery Podrezov) integrated: 10357- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 10358 10359Fixed problem reports (Fiodor Suietov) integrated: 10360- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 10361 10362Removed four global mutexes that were obsolete and were no longer being 10363used. 10364 10365Example Code and Data Size: These are the sizes for the OS-independent 10366acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10367debug version of the code includes the debug output trace mechanism and 10368has 10369a much larger code and data size. 10370 10371 Previous Release: 10372 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 10373 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 10374 Current Release: 10375 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10376 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10377 10378 103792) iASL Compiler/Disassembler and Tools: 10380 10381Fixed a fault when using -g option (get tables from registry) on Windows 10382machines. 10383 10384Fixed problem reports integrated: 10385- Generate error if CreateField NumBits parameter is zero. (BZ 405) 10386- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 10387Suietov) 10388- Global table revision override (-r) is ignored (BZ 413) 10389 10390---------------------------------------- 1039126 May 2006. Summary of changes for version 20060526: 10392 103931) ACPI CA Core Subsystem: 10394 10395Restructured, flattened, and simplified the internal interfaces for 10396namespace object evaluation - resulting in smaller code, less CPU stack 10397use, 10398and fewer interfaces. (With assistance from Mikhail Kouzmich) 10399 10400Fixed a problem with the CopyObject operator where the first parameter 10401was 10402not typed correctly for the parser, interpreter, compiler, and 10403disassembler. 10404Caused various errors and unexpected behavior. 10405 10406Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 10407produced incorrect results with some C compilers. Since the behavior of C 10408compilers when the shift value is larger than the datatype width is 10409apparently not well defined, the interpreter now detects this condition 10410and 10411simply returns zero as expected in all such cases. (BZ 395) 10412 10413Fixed problem reports (Valery Podrezov) integrated: 10414- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 10415- Allow interpreter to handle nested method declarations (BZ 5361) 10416 10417Fixed problem reports (Fiodor Suietov) integrated: 10418- AcpiTerminate doesn't free debug memory allocation list objects (BZ 10419355) 10420- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 10421356) 10422- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 10423- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 10424- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 10425- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 10426- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 10427- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 10428- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 10429365) 10430- Status of the Global Initialization Handler call not used (BZ 366) 10431- Incorrect object parameter to Global Initialization Handler (BZ 367) 10432 10433Example Code and Data Size: These are the sizes for the OS-independent 10434acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10435debug version of the code includes the debug output trace mechanism and 10436has 10437a much larger code and data size. 10438 10439 Previous Release: 10440 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 10441 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 10442 Current Release: 10443 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 10444 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 10445 10446 104472) iASL Compiler/Disassembler and Tools: 10448 10449Modified the parser to allow the names IO, DMA, and IRQ to be used as 10450namespace identifiers with no collision with existing resource descriptor 10451macro names. This provides compatibility with other ASL compilers and is 10452most useful for disassembly/recompilation of existing tables without 10453parse 10454errors. (With assistance from Thomas Renninger) 10455 10456Disassembler: fixed an incorrect disassembly problem with the 10457DataTableRegion and CopyObject operators. Fixed a possible fault during 10458disassembly of some Alias operators. 10459 10460---------------------------------------- 1046112 May 2006. Summary of changes for version 20060512: 10462 104631) ACPI CA Core Subsystem: 10464 10465Replaced the AcpiOsQueueForExecution interface with a new interface named 10466AcpiOsExecute. The major difference is that the new interface does not 10467have 10468a Priority parameter, this appeared to be useless and has been replaced 10469by 10470a 10471Type parameter. The Type tells the host what type of execution is being 10472requested, such as global lock handler, notify handler, GPE handler, etc. 10473This allows the host to queue and execute the request as appropriate for 10474the 10475request type, possibly using different work queues and different 10476priorities 10477for the various request types. This enables fixes for multithreading 10478deadlock problems such as BZ #5534, and will require changes to all 10479existing 10480OS interface layers. (Alexey Starikovskiy and Bob Moore) 10481 10482Fixed a possible memory leak associated with the support for the so- 10483called 10484"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 10485Suietov) 10486 10487Fixed a problem with the Load() operator where a table load from an 10488operation region could overwrite an internal table buffer by up to 7 10489bytes 10490and cause alignment faults on IPF systems. (With assistance from Luming 10491Yu) 10492 10493Example Code and Data Size: These are the sizes for the OS-independent 10494acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10495debug version of the code includes the debug output trace mechanism and 10496has 10497a much larger code and data size. 10498 10499 Previous Release: 10500 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 10501 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 10502 Current Release: 10503 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 10504 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 10505 10506 10507 105082) iASL Compiler/Disassembler and Tools: 10509 10510Disassembler: Implemented support to cross reference the internal 10511namespace 10512and automatically generate ASL External() statements for symbols not 10513defined 10514within the current table being disassembled. This will simplify the 10515disassembly and recompilation of interdependent tables such as SSDTs 10516since 10517these statements will no longer have to be added manually. 10518 10519Disassembler: Implemented experimental support to automatically detect 10520invocations of external control methods and generate appropriate 10521External() 10522statements. This is problematic because the AML cannot be correctly 10523parsed 10524until the number of arguments for each control method is known. 10525Currently, 10526standalone method invocations and invocations as the source operand of a 10527Store() statement are supported. 10528 10529Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 10530LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 10531LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 10532more readable and likely closer to the original ASL source. 10533 10534---------------------------------------- 1053521 April 2006. Summary of changes for version 20060421: 10536 105371) ACPI CA Core Subsystem: 10538 10539Removed a device initialization optimization introduced in 20051216 where 10540the _STA method was not run unless an _INI was also present for the same 10541device. This optimization could cause problems because it could allow 10542_INI 10543methods to be run within a not-present device subtree. (If a not-present 10544device had no _INI, _STA would not be run, the not-present status would 10545not 10546be discovered, and the children of the device would be incorrectly 10547traversed.) 10548 10549Implemented a new _STA optimization where namespace subtrees that do not 10550contain _INI are identified and ignored during device initialization. 10551Selectively running _STA can significantly improve boot time on large 10552machines (with assistance from Len Brown.) 10553 10554Implemented support for the device initialization case where the returned 10555_STA flags indicate a device not-present but functioning. In this case, 10556_INI 10557is not run, but the device children are examined for presence, as per the 10558ACPI specification. 10559 10560Implemented an additional change to the IndexField support in order to 10561conform to MS behavior. The value written to the Index Register is not 10562simply a byte offset, it is a byte offset in units of the access width of 10563the parent Index Field. (Fiodor Suietov) 10564 10565Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 10566interface is called during the creation of all AML operation regions, and 10567allows the host OS to exert control over what addresses it will allow the 10568AML code to access. Operation Regions whose addresses are disallowed will 10569cause a runtime exception when they are actually accessed (will not 10570affect 10571or abort table loading.) See oswinxf or osunixxf for an example 10572implementation. 10573 10574Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 10575interface allows the host OS to match the various "optional" 10576interface/behavior strings for the _OSI predefined control method as 10577appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 10578for an example implementation. 10579 10580Restructured and corrected various problems in the exception handling 10581code 10582paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 10583(with assistance from Takayoshi Kochi.) 10584 10585Modified the Linux source converter to ignore quoted string literals 10586while 10587converting identifiers from mixed to lower case. This will correct 10588problems 10589with the disassembler and other areas where such strings must not be 10590modified. 10591 10592The ACPI_FUNCTION_* macros no longer require quotes around the function 10593name. This allows the Linux source converter to convert the names, now 10594that 10595the converter ignores quoted strings. 10596 10597Example Code and Data Size: These are the sizes for the OS-independent 10598acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10599debug version of the code includes the debug output trace mechanism and 10600has 10601a much larger code and data size. 10602 10603 Previous Release: 10604 10605 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 10606 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 10607 Current Release: 10608 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 10609 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 10610 10611 106122) iASL Compiler/Disassembler and Tools: 10613 10614Implemented 3 new warnings for iASL, and implemented multiple warning 10615levels 10616(w2 flag). 10617 106181) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 10619not 10620WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 10621check for the possible timeout, a warning is issued. 10622 106232) Useless operators: If an ASL operator does not specify an optional 10624target 10625operand and it also does not use the function return value from the 10626operator, a warning is issued since the operator effectively does 10627nothing. 10628 106293) Unreferenced objects: If a namespace object is created, but never 10630referenced, a warning is issued. This is a warning level 2 since there 10631are 10632cases where this is ok, such as when a secondary table is loaded that 10633uses 10634the unreferenced objects. Even so, care is taken to only flag objects 10635that 10636don't look like they will ever be used. For example, the reserved methods 10637(starting with an underscore) are usually not referenced because it is 10638expected that the OS will invoke them. 10639 10640---------------------------------------- 1064131 March 2006. Summary of changes for version 20060331: 10642 106431) ACPI CA Core Subsystem: 10644 10645Implemented header file support for the following additional ACPI tables: 10646ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 10647support, 10648all current and known ACPI tables are now defined in the ACPICA headers 10649and 10650are available for use by device drivers and other software. 10651 10652Implemented support to allow tables that contain ACPI names with invalid 10653characters to be loaded. Previously, this would cause the table load to 10654fail, but since there are several known cases of such tables on existing 10655machines, this change was made to enable ACPI support for them. Also, 10656this 10657matches the behavior of the Microsoft ACPI implementation. 10658 10659Fixed a couple regressions introduced during the memory optimization in 10660the 1066120060317 release. The namespace node definition required additional 10662reorganization and an internal datatype that had been changed to 8-bit 10663was 10664restored to 32-bit. (Valery Podrezov) 10665 10666Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 10667could be passed through to AcpiOsReleaseObject which is unexpected. Such 10668null pointers are now trapped and ignored, matching the behavior of the 10669previous implementation before the deployment of AcpiOsReleaseObject. 10670(Valery Podrezov, Fiodor Suietov) 10671 10672Fixed a memory mapping leak during the deletion of a SystemMemory 10673operation 10674region where a cached memory mapping was not deleted. This became a 10675noticeable problem for operation regions that are defined within 10676frequently 10677used control methods. (Dana Meyers) 10678 10679Reorganized the ACPI table header files into two main files: one for the 10680ACPI tables consumed by the ACPICA core, and another for the 10681miscellaneous 10682ACPI tables that are consumed by the drivers and other software. The 10683various 10684FADT definitions were merged into one common section and three different 10685tables (ACPI 1.0, 1.0+, and 2.0) 10686 10687Example Code and Data Size: These are the sizes for the OS-independent 10688acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10689debug version of the code includes the debug output trace mechanism and 10690has 10691a much larger code and data size. 10692 10693 Previous Release: 10694 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 10695 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 10696 Current Release: 10697 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 10698 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 10699 10700 107012) iASL Compiler/Disassembler and Tools: 10702 10703Disassembler: Implemented support to decode and format all non-AML ACPI 10704tables (tables other than DSDTs and SSDTs.) This includes the new tables 10705added to the ACPICA headers, therefore all current and known ACPI tables 10706are 10707supported. 10708 10709Disassembler: The change to allow ACPI names with invalid characters also 10710enables the disassembly of such tables. Invalid characters within names 10711are 10712changed to '*' to make the name printable; the iASL compiler will still 10713generate an error for such names, however, since this is an invalid ACPI 10714character. 10715 10716Implemented an option for AcpiXtract (-a) to extract all tables found in 10717the 10718input file. The default invocation extracts only the DSDTs and SSDTs. 10719 10720Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 10721makefile for the AcpiXtract utility. 10722 10723---------------------------------------- 1072417 March 2006. Summary of changes for version 20060317: 10725 107261) ACPI CA Core Subsystem: 10727 10728Implemented the use of a cache object for all internal namespace nodes. 10729Since there are about 1000 static nodes in a typical system, this will 10730decrease memory use for cache implementations that minimize per- 10731allocation 10732overhead (such as a slab allocator.) 10733 10734Removed the reference count mechanism for internal namespace nodes, since 10735it 10736was deemed unnecessary. This reduces the size of each namespace node by 10737about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 10738case, 10739and 32 bytes for the 64-bit case. 10740 10741Optimized several internal data structures to reduce object size on 64- 10742bit 10743platforms by packing data within the 64-bit alignment. This includes the 10744frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 10745instances corresponding to the namespace objects. 10746 10747Added two new strings for the predefined _OSI method: "Windows 2001.1 10748SP1" 10749and "Windows 2006". 10750 10751Split the allocation tracking mechanism out to a separate file, from 10752utalloc.c to uttrack.c. This mechanism appears to be only useful for 10753application-level code. Kernels may wish to not include uttrack.c in 10754distributions. 10755 10756Removed all remnants of the obsolete ACPI_REPORT_* macros and the 10757associated 10758code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 10759macros.) 10760 10761Code and Data Size: These are the sizes for the acpica.lib produced by 10762the 10763Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10764ACPI 10765driver or OSPM code. The debug version of the code includes the debug 10766output 10767trace mechanism and has a much larger code and data size. Note that these 10768values will vary depending on the efficiency of the compiler and the 10769compiler options used during generation. 10770 10771 Previous Release: 10772 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10773 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 10774 Current Release: 10775 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 10776 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 10777 10778 107792) iASL Compiler/Disassembler and Tools: 10780 10781Implemented an ANSI C version of the acpixtract utility. This version 10782will 10783automatically extract the DSDT and all SSDTs from the input acpidump text 10784file and dump the binary output to separate files. It can also display a 10785summary of the input file including the headers for each table found and 10786will extract any single ACPI table, with any signature. (See 10787source/tools/acpixtract) 10788 10789---------------------------------------- 1079010 March 2006. Summary of changes for version 20060310: 10791 107921) ACPI CA Core Subsystem: 10793 10794Tagged all external interfaces to the subsystem with the new 10795ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 10796assist 10797kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 10798macro. The default definition is NULL. 10799 10800Added the ACPI_THREAD_ID type for the return value from 10801AcpiOsGetThreadId. 10802This allows the host to define this as necessary to simplify kernel 10803integration. The default definition is ACPI_NATIVE_UINT. 10804 10805Fixed two interpreter problems related to error processing, the deletion 10806of 10807objects, and placing invalid pointers onto the internal operator result 10808stack. BZ 6028, 6151 (Valery Podrezov) 10809 10810Increased the reference count threshold where a warning is emitted for 10811large 10812reference counts in order to eliminate unnecessary warnings on systems 10813with 10814large namespaces (especially 64-bit.) Increased the value from 0x400 to 108150x800. 10816 10817Due to universal disagreement as to the meaning of the 'c' in the 10818calloc() 10819function, the ACPI_MEM_CALLOCATE macro has been renamed to 10820ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 10821ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 10822ACPI_FREE. 10823 10824Code and Data Size: These are the sizes for the acpica.lib produced by 10825the 10826Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10827ACPI 10828driver or OSPM code. The debug version of the code includes the debug 10829output 10830trace mechanism and has a much larger code and data size. Note that these 10831values will vary depending on the efficiency of the compiler and the 10832compiler options used during generation. 10833 10834 Previous Release: 10835 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 10836 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 10837 Current Release: 10838 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10839 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 10840 10841 108422) iASL Compiler/Disassembler: 10843 10844Disassembler: implemented support for symbolic resource descriptor 10845references. If a CreateXxxxField operator references a fixed offset 10846within 10847a 10848resource descriptor, a name is assigned to the descriptor and the offset 10849is 10850translated to the appropriate resource tag and pathname. The addition of 10851this support brings the disassembled code very close to the original ASL 10852source code and helps eliminate run-time errors when the disassembled 10853code 10854is modified (and recompiled) in such a way as to invalidate the original 10855fixed offsets. 10856 10857Implemented support for a Descriptor Name as the last parameter to the 10858ASL 10859Register() macro. This parameter was inadvertently left out of the ACPI 10860specification, and will be added for ACPI 3.0b. 10861 10862Fixed a problem where the use of the "_OSI" string (versus the full path 10863"\_OSI") caused an internal compiler error. ("No back ptr to op") 10864 10865Fixed a problem with the error message that occurs when an invalid string 10866is 10867used for a _HID object (such as one with an embedded asterisk: 10868"*PNP010A".) 10869The correct message is now displayed. 10870 10871---------------------------------------- 1087217 February 2006. Summary of changes for version 20060217: 10873 108741) ACPI CA Core Subsystem: 10875 10876Implemented a change to the IndexField support to match the behavior of 10877the 10878Microsoft AML interpreter. The value written to the Index register is now 10879a 10880byte offset, no longer an index based upon the width of the Data 10881register. 10882This should fix IndexField problems seen on some machines where the Data 10883register is not exactly one byte wide. The ACPI specification will be 10884clarified on this point. 10885 10886Fixed a problem where several resource descriptor types could overrun the 10887internal descriptor buffer due to size miscalculation: VendorShort, 10888VendorLong, and Interrupt. This was noticed on IA64 machines, but could 10889affect all platforms. 10890 10891Fixed a problem where individual resource descriptors were misaligned 10892within 10893the internal buffer, causing alignment faults on IA64 platforms. 10894 10895Code and Data Size: These are the sizes for the acpica.lib produced by 10896the 10897Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10898ACPI 10899driver or OSPM code. The debug version of the code includes the debug 10900output 10901trace mechanism and has a much larger code and data size. Note that these 10902values will vary depending on the efficiency of the compiler and the 10903compiler options used during generation. 10904 10905 Previous Release: 10906 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10907 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 10908 Current Release: 10909 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 10910 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 10911 10912 109132) iASL Compiler/Disassembler: 10914 10915Implemented support for new reserved names: _WDG and _WED are Microsoft 10916extensions for Windows Instrumentation Management, _TDL is a new ACPI- 10917defined method (Throttling Depth Limit.) 10918 10919Fixed a problem where a zero-length VendorShort or VendorLong resource 10920descriptor was incorrectly emitted as a descriptor of length one. 10921 10922---------------------------------------- 1092310 February 2006. Summary of changes for version 20060210: 10924 109251) ACPI CA Core Subsystem: 10926 10927Removed a couple of extraneous ACPI_ERROR messages that appeared during 10928normal execution. These became apparent after the conversion from 10929ACPI_DEBUG_PRINT. 10930 10931Fixed a problem where the CreateField operator could hang if the BitIndex 10932or 10933NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 10934 10935Fixed a problem where a DeRefOf operation on a buffer object incorrectly 10936failed with an exception. This also fixes a couple of related RefOf and 10937DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 10938 10939Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 10940of 10941AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 10942BZ 109435480) 10944 10945Implemented a memory cleanup at the end of the execution of each 10946iteration 10947of an AML While() loop, preventing the accumulation of outstanding 10948objects. 10949(Valery Podrezov, BZ 5427) 10950 10951Eliminated a chunk of duplicate code in the object resolution code. 10952(Valery 10953Podrezov, BZ 5336) 10954 10955Fixed several warnings during the 64-bit code generation. 10956 10957The AcpiSrc source code conversion tool now inserts one line of 10958whitespace 10959after an if() statement that is followed immediately by a comment, 10960improving 10961readability of the Linux code. 10962 10963Code and Data Size: The current and previous library sizes for the core 10964subsystem are shown below. These are the code and data sizes for the 10965acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10966These 10967values do not include any ACPI driver or OSPM code. The debug version of 10968the 10969code includes the debug output trace mechanism and has a much larger code 10970and data size. Note that these values will vary depending on the 10971efficiency 10972of the compiler and the compiler options used during generation. 10973 10974 Previous Release: 10975 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 10976 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 10977 Current Release: 10978 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10979 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 10980 10981 109822) iASL Compiler/Disassembler: 10983 10984Fixed a problem with the disassembly of a BankField operator with a 10985complex 10986expression for the BankValue parameter. 10987 10988---------------------------------------- 1098927 January 2006. Summary of changes for version 20060127: 10990 109911) ACPI CA Core Subsystem: 10992 10993Implemented support in the Resource Manager to allow unresolved 10994namestring 10995references within resource package objects for the _PRT method. This 10996support 10997is in addition to the previously implemented unresolved reference support 10998within the AML parser. If the interpreter slack mode is enabled, these 10999unresolved references will be passed through to the caller as a NULL 11000package 11001entry. 11002 11003Implemented and deployed new macros and functions for error and warning 11004messages across the subsystem. These macros are simpler and generate less 11005code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 11006ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 11007macros remain defined to allow ACPI drivers time to migrate to the new 11008macros. 11009 11010Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 11011the 11012Acquire/Release Lock OSL interfaces. 11013 11014Fixed a problem where Alias ASL operators are sometimes not correctly 11015resolved, in both the interpreter and the iASL compiler. 11016 11017Fixed several problems with the implementation of the 11018ConcatenateResTemplate 11019ASL operator. As per the ACPI specification, zero length buffers are now 11020treated as a single EndTag. One-length buffers always cause a fatal 11021exception. Non-zero length buffers that do not end with a full 2-byte 11022EndTag 11023cause a fatal exception. 11024 11025Fixed a possible structure overwrite in the AcpiGetObjectInfo external 11026interface. (With assistance from Thomas Renninger) 11027 11028Code and Data Size: The current and previous library sizes for the core 11029subsystem are shown below. These are the code and data sizes for the 11030acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11031These 11032values do not include any ACPI driver or OSPM code. The debug version of 11033the 11034code includes the debug output trace mechanism and has a much larger code 11035and data size. Note that these values will vary depending on the 11036efficiency 11037of the compiler and the compiler options used during generation. 11038 11039 Previous Release: 11040 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 11041 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 11042 Current Release: 11043 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 11044 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 11045 11046 110472) iASL Compiler/Disassembler: 11048 11049Fixed an internal error that was generated for any forward references to 11050ASL 11051Alias objects. 11052 11053---------------------------------------- 1105413 January 2006. Summary of changes for version 20060113: 11055 110561) ACPI CA Core Subsystem: 11057 11058Added 2006 copyright to all module headers and signons. This affects 11059virtually every file in the ACPICA core subsystem, iASL compiler, and the 11060utilities. 11061 11062Enhanced the ACPICA error reporting in order to simplify user migration 11063to 11064the non-debug version of ACPICA. Replaced all instances of the 11065ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 11066debug 11067levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 11068respectively. This preserves all error and warning messages in the non- 11069debug 11070version of the ACPICA code (this has been referred to as the "debug lite" 11071option.) Over 200 cases were converted to create a total of over 380 11072error/warning messages across the ACPICA code. This increases the code 11073and 11074data size of the default non-debug version of the code somewhat (about 1107513K), 11076but all error/warning reporting may be disabled if desired (and code 11077eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 11078configuration option. The size of the debug version of ACPICA remains 11079about 11080the same. 11081 11082Fixed a memory leak within the AML Debugger "Set" command. One object was 11083not properly deleted for every successful invocation of the command. 11084 11085Code and Data Size: The current and previous library sizes for the core 11086subsystem are shown below. These are the code and data sizes for the 11087acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11088These 11089values do not include any ACPI driver or OSPM code. The debug version of 11090the 11091code includes the debug output trace mechanism and has a much larger code 11092and data size. Note that these values will vary depending on the 11093efficiency 11094of the compiler and the compiler options used during generation. 11095 11096 Previous Release: 11097 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 11098 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 11099 Current Release: 11100 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 11101 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 11102 11103 111042) iASL Compiler/Disassembler: 11105 11106The compiler now officially supports the ACPI 3.0a specification that was 11107released on December 30, 2005. (Specification is available at 11108www.acpi.info) 11109 11110---------------------------------------- 1111116 December 2005. Summary of changes for version 20051216: 11112 111131) ACPI CA Core Subsystem: 11114 11115Implemented optional support to allow unresolved names within ASL Package 11116objects. A null object is inserted in the package when a named reference 11117cannot be located in the current namespace. Enabled via the interpreter 11118slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 11119machines 11120that contain such code. 11121 11122Implemented an optimization to the initialization sequence that can 11123improve 11124boot time. During ACPI device initialization, the _STA method is now run 11125if 11126and only if the _INI method exists. The _STA method is used to determine 11127if 11128the device is present; An _INI can only be run if _STA returns present, 11129but 11130it is a waste of time to run the _STA method if the _INI does not exist. 11131(Prototype and assistance from Dong Wei) 11132 11133Implemented use of the C99 uintptr_t for the pointer casting macros if it 11134is 11135available in the current compiler. Otherwise, the default (void *) cast 11136is 11137used as before. 11138 11139Fixed some possible memory leaks found within the execution path of the 11140Break, Continue, If, and CreateField operators. (Valery Podrezov) 11141 11142Fixed a problem introduced in the 20051202 release where an exception is 11143generated during method execution if a control method attempts to declare 11144another method. 11145 11146Moved resource descriptor string constants that are used by both the AML 11147disassembler and AML debugger to the common utilities directory so that 11148these components are independent. 11149 11150Implemented support in the AcpiExec utility (-e switch) to globally 11151ignore 11152exceptions during control method execution (method is not aborted.) 11153 11154Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 11155generation. 11156 11157Code and Data Size: The current and previous library sizes for the core 11158subsystem are shown below. These are the code and data sizes for the 11159acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11160These 11161values do not include any ACPI driver or OSPM code. The debug version of 11162the 11163code includes the debug output trace mechanism and has a much larger code 11164and data size. Note that these values will vary depending on the 11165efficiency 11166of the compiler and the compiler options used during generation. 11167 11168 Previous Release: 11169 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11170 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 11171 Current Release: 11172 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 11173 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 11174 11175 111762) iASL Compiler/Disassembler: 11177 11178Fixed a problem where a CPU stack overflow fault could occur if a 11179recursive 11180method call was made from within a Return statement. 11181 11182---------------------------------------- 1118302 December 2005. Summary of changes for version 20051202: 11184 111851) ACPI CA Core Subsystem: 11186 11187Modified the parsing of control methods to no longer create namespace 11188objects during the first pass of the parse. Objects are now created only 11189during the execute phase, at the moment the namespace creation operator 11190is 11191encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 11192This 11193should eliminate ALREADY_EXISTS exceptions seen on some machines where 11194reentrant control methods are protected by an AML mutex. The mutex will 11195now 11196correctly block multiple threads from attempting to create the same 11197object 11198more than once. 11199 11200Increased the number of available Owner Ids for namespace object tracking 11201from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 11202on 11203some machines with a large number of ACPI tables (either static or 11204dynamic). 11205 11206Fixed a problem with the AcpiExec utility where a fault could occur when 11207the 11208-b switch (batch mode) is used. 11209 11210Enhanced the namespace dump routine to output the owner ID for each 11211namespace object. 11212 11213Code and Data Size: The current and previous library sizes for the core 11214subsystem are shown below. These are the code and data sizes for the 11215acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11216These 11217values do not include any ACPI driver or OSPM code. The debug version of 11218the 11219code includes the debug output trace mechanism and has a much larger code 11220and data size. Note that these values will vary depending on the 11221efficiency 11222of the compiler and the compiler options used during generation. 11223 11224 Previous Release: 11225 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11226 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11227 Current Release: 11228 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11229 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 11230 11231 112322) iASL Compiler/Disassembler: 11233 11234Fixed a parse error during compilation of certain Switch/Case constructs. 11235To 11236simplify the parse, the grammar now allows for multiple Default 11237statements 11238and this error is now detected and flagged during the analysis phase. 11239 11240Disassembler: The disassembly now includes the contents of the original 11241table header within a comment at the start of the file. This includes the 11242name and version of the original ASL compiler. 11243 11244---------------------------------------- 1124517 November 2005. Summary of changes for version 20051117: 11246 112471) ACPI CA Core Subsystem: 11248 11249Fixed a problem in the AML parser where the method thread count could be 11250decremented below zero if any errors occurred during the method parse 11251phase. 11252This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 11253machines. 11254This also fixed a related regression with the mechanism that detects and 11255corrects methods that cannot properly handle reentrancy (related to the 11256deployment of the new OwnerId mechanism.) 11257 11258Eliminated the pre-parsing of control methods (to detect errors) during 11259table load. Related to the problem above, this was causing unwind issues 11260if 11261any errors occurred during the parse, and it seemed to be overkill. A 11262table 11263load should not be aborted if there are problems with any single control 11264method, thus rendering this feature rather pointless. 11265 11266Fixed a problem with the new table-driven resource manager where an 11267internal 11268buffer overflow could occur for small resource templates. 11269 11270Implemented a new external interface, AcpiGetVendorResource. This 11271interface 11272will find and return a vendor-defined resource descriptor within a _CRS 11273or 11274_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 11275Helgaas. 11276 11277Removed the length limit (200) on string objects as per the upcoming ACPI 112783.0A specification. This affects the following areas of the interpreter: 112791) 11280any implicit conversion of a Buffer to a String, 2) a String object 11281result 11282of the ASL Concatentate operator, 3) the String object result of the ASL 11283ToString operator. 11284 11285Fixed a problem in the Windows OS interface layer (OSL) where a 11286WAIT_FOREVER 11287on a semaphore object would incorrectly timeout. This allows the 11288multithreading features of the AcpiExec utility to work properly under 11289Windows. 11290 11291Updated the Linux makefiles for the iASL compiler and AcpiExec to include 11292the recently added file named "utresrc.c". 11293 11294Code and Data Size: The current and previous library sizes for the core 11295subsystem are shown below. These are the code and data sizes for the 11296acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11297These 11298values do not include any ACPI driver or OSPM code. The debug version of 11299the 11300code includes the debug output trace mechanism and has a much larger code 11301and data size. Note that these values will vary depending on the 11302efficiency 11303of the compiler and the compiler options used during generation. 11304 11305 Previous Release: 11306 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11307 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11308 Current Release: 11309 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11310 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11311 11312 113132) iASL Compiler/Disassembler: 11314 11315Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 11316specification. For the iASL compiler, this means that string literals 11317within 11318the source ASL can be of any length. 11319 11320Enhanced the listing output to dump the AML code for resource descriptors 11321immediately after the ASL code for each descriptor, instead of in a block 11322at 11323the end of the entire resource template. 11324 11325Enhanced the compiler debug output to dump the entire original parse tree 11326constructed during the parse phase, before any transforms are applied to 11327the 11328tree. The transformed tree is dumped also. 11329 11330---------------------------------------- 1133102 November 2005. Summary of changes for version 20051102: 11332 113331) ACPI CA Core Subsystem: 11334 11335Modified the subsystem initialization sequence to improve GPE support. 11336The 11337GPE initialization has been split into two parts in order to defer 11338execution 11339of the _PRW methods (Power Resources for Wake) until after the hardware 11340is 11341fully initialized and the SCI handler is installed. This allows the _PRW 11342methods to access fields protected by the Global Lock. This will fix 11343systems 11344where a NO_GLOBAL_LOCK exception has been seen during initialization. 11345 11346Converted the ACPI internal object disassemble and display code within 11347the 11348AML debugger to fully table-driven operation, reducing code size and 11349increasing maintainability. 11350 11351Fixed a regression with the ConcatenateResTemplate() ASL operator 11352introduced 11353in the 20051021 release. 11354 11355Implemented support for "local" internal ACPI object types within the 11356debugger "Object" command and the AcpiWalkNamespace external interfaces. 11357These local types include RegionFields, BankFields, IndexFields, Alias, 11358and 11359reference objects. 11360 11361Moved common AML resource handling code into a new file, "utresrc.c". 11362This 11363code is shared by both the Resource Manager and the AML Debugger. 11364 11365Code and Data Size: The current and previous library sizes for the core 11366subsystem are shown below. These are the code and data sizes for the 11367acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11368These 11369values do not include any ACPI driver or OSPM code. The debug version of 11370the 11371code includes the debug output trace mechanism and has a much larger code 11372and data size. Note that these values will vary depending on the 11373efficiency 11374of the compiler and the compiler options used during generation. 11375 11376 Previous Release: 11377 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 11378 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 11379 Current Release: 11380 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11381 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11382 11383 113842) iASL Compiler/Disassembler: 11385 11386Fixed a problem with very large initializer lists (more than 4000 11387elements) 11388for both Buffer and Package objects where the parse stack could overflow. 11389 11390Enhanced the pre-compile source code scan for non-ASCII characters to 11391ignore 11392characters within comment fields. The scan is now always performed and is 11393no 11394longer optional, detecting invalid characters within a source file 11395immediately rather than during the parse phase or later. 11396 11397Enhanced the ASL grammar definition to force early reductions on all 11398list- 11399style grammar elements so that the overall parse stack usage is greatly 11400reduced. This should improve performance and reduce the possibility of 11401parse 11402stack overflow. 11403 11404Eliminated all reduce/reduce conflicts in the iASL parser generation. 11405Also, 11406with the addition of a %expected statement, the compiler generates from 11407source with no warnings. 11408 11409Fixed a possible segment fault in the disassembler if the input filename 11410does not contain a "dot" extension (Thomas Renninger). 11411 11412---------------------------------------- 1141321 October 2005. Summary of changes for version 20051021: 11414 114151) ACPI CA Core Subsystem: 11416 11417Implemented support for the EM64T and other x86-64 processors. This 11418essentially entails recognizing that these processors support non-aligned 11419memory transfers. Previously, all 64-bit processors were assumed to lack 11420hardware support for non-aligned transfers. 11421 11422Completed conversion of the Resource Manager to nearly full table-driven 11423operation. Specifically, the resource conversion code (convert AML to 11424internal format and the reverse) and the debug code to dump internal 11425resource descriptors are fully table-driven, reducing code and data size 11426and 11427improving maintainability. 11428 11429The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 11430word 11431on 64-bit processors instead of a fixed 32-bit word. (With assistance 11432from 11433Alexey Starikovskiy) 11434 11435Implemented support within the resource conversion code for the Type- 11436Specific byte within the various ACPI 3.0 *WordSpace macros. 11437 11438Fixed some issues within the resource conversion code for the type- 11439specific 11440flags for both Memory and I/O address resource descriptors. For Memory, 11441implemented support for the MTP and TTP flags. For I/O, split the TRS and 11442TTP flags into two separate fields. 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.1K Code, 12.1K Data, 89.2K Total 11457 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 11458 Current Release: 11459 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 11460 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 11461 11462 11463 114642) iASL Compiler/Disassembler: 11465 11466Relaxed a compiler restriction that disallowed a ResourceIndex byte if 11467the 11468corresponding ResourceSource string was not also present in a resource 11469descriptor declaration. This restriction caused problems with existing 11470AML/ASL code that includes the Index byte without the string. When such 11471AML 11472was disassembled, it could not be compiled without modification. Further, 11473the modified code created a resource template with a different size than 11474the 11475original, breaking code that used fixed offsets into the resource 11476template 11477buffer. 11478 11479Removed a recent feature of the disassembler to ignore a lone 11480ResourceIndex 11481byte. This byte is now emitted if present so that the exact AML can be 11482reproduced when the disassembled code is recompiled. 11483 11484Improved comments and text alignment for the resource descriptor code 11485emitted by the disassembler. 11486 11487Implemented disassembler support for the ACPI 3.0 AccessSize field within 11488a 11489Register() resource descriptor. 11490 11491---------------------------------------- 1149230 September 2005. Summary of changes for version 20050930: 11493 114941) ACPI CA Core Subsystem: 11495 11496Completed a major overhaul of the Resource Manager code - specifically, 11497optimizations in the area of the AML/internal resource conversion code. 11498The 11499code has been optimized to simplify and eliminate duplicated code, CPU 11500stack 11501use has been decreased by optimizing function parameters and local 11502variables, and naming conventions across the manager have been 11503standardized 11504for clarity and ease of maintenance (this includes function, parameter, 11505variable, and struct/typedef names.) The update may force changes in some 11506driver code, depending on how resources are handled by the host OS. 11507 11508All Resource Manager dispatch and information tables have been moved to a 11509single location for clarity and ease of maintenance. One new file was 11510created, named "rsinfo.c". 11511 11512The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 11513guarantee that the argument is not evaluated twice, making them less 11514prone 11515to macro side-effects. However, since there exists the possibility of 11516additional stack use if a particular compiler cannot optimize them (such 11517as 11518in the debug generation case), the original macros are optionally 11519available. 11520Note that some invocations of the return_VALUE macro may now cause size 11521mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 11522to 11523eliminate these. (From Randy Dunlap) 11524 11525Implemented a new mechanism to enable debug tracing for individual 11526control 11527methods. A new external interface, AcpiDebugTrace, is provided to enable 11528this mechanism. The intent is to allow the host OS to easily enable and 11529disable tracing for problematic control methods. This interface can be 11530easily exposed to a user or debugger interface if desired. See the file 11531psxface.c for details. 11532 11533AcpiUtCallocate will now return a valid pointer if a length of zero is 11534specified - a length of one is used and a warning is issued. This matches 11535the behavior of AcpiUtAllocate. 11536 11537Code and Data Size: The current and previous library sizes for the core 11538subsystem are shown below. These are the code and data sizes for the 11539acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11540These 11541values do not include any ACPI driver or OSPM code. The debug version of 11542the 11543code includes the debug output trace mechanism and has a much larger code 11544and data size. Note that these values will vary depending on the 11545efficiency 11546of the compiler and the compiler options used during generation. 11547 11548 Previous Release: 11549 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 11550 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 11551 Current Release: 11552 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 11553 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 11554 11555 115562) iASL Compiler/Disassembler: 11557 11558A remark is issued if the effective compile-time length of a package or 11559buffer is zero. Previously, this was a warning. 11560 11561---------------------------------------- 1156216 September 2005. Summary of changes for version 20050916: 11563 115641) ACPI CA Core Subsystem: 11565 11566Fixed a problem within the Resource Manager where support for the Generic 11567Register descriptor was not fully implemented. This descriptor is now 11568fully 11569recognized, parsed, disassembled, and displayed. 11570 11571Completely restructured the Resource Manager code to utilize table-driven 11572dispatch and lookup, eliminating many of the large switch() statements. 11573This 11574reduces overall subsystem code size and code complexity. Affects the 11575resource parsing and construction, disassembly, and debug dump output. 11576 11577Cleaned up and restructured the debug dump output for all resource 11578descriptors. Improved readability of the output and reduced code size. 11579 11580Fixed a problem where changes to internal data structures caused the 11581optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 11582 11583Code and Data Size: The current and previous library sizes for the core 11584subsystem are shown below. These are the code and data sizes for the 11585acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11586These 11587values do not include any ACPI driver or OSPM code. The debug version of 11588the 11589code includes the debug output trace mechanism and has a much larger code 11590and data size. Note that these values will vary depending on the 11591efficiency 11592of the compiler and the compiler options used during generation. 11593 11594 Previous Release: 11595 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 11596 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 11597 Current Release: 11598 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 11599 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 11600 11601 116022) iASL Compiler/Disassembler: 11603 11604Updated the disassembler to automatically insert an EndDependentFn() 11605macro 11606into the ASL stream if this macro is missing in the original AML code, 11607simplifying compilation of the resulting ASL module. 11608 11609Fixed a problem in the disassembler where a disassembled ResourceSource 11610string (within a large resource descriptor) was not surrounded by quotes 11611and 11612not followed by a comma, causing errors when the resulting ASL module was 11613compiled. Also, escape sequences within a ResourceSource string are now 11614handled correctly (especially "\\") 11615 11616---------------------------------------- 1161702 September 2005. Summary of changes for version 20050902: 11618 116191) ACPI CA Core Subsystem: 11620 11621Fixed a problem with the internal Owner ID allocation and deallocation 11622mechanisms for control method execution and recursive method invocation. 11623This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 11624messages seen on some systems. Recursive method invocation depth is 11625currently limited to 255. (Alexey Starikovskiy) 11626 11627Completely eliminated all vestiges of support for the "module-level 11628executable code" until this support is fully implemented and debugged. 11629This 11630should eliminate the NO_RETURN_VALUE exceptions seen during table load on 11631some systems that invoke this support. 11632 11633Fixed a problem within the resource manager code where the transaction 11634flags 11635for a 64-bit address descriptor were handled incorrectly in the type- 11636specific flag byte. 11637 11638Consolidated duplicate code within the address descriptor resource 11639manager 11640code, reducing overall subsystem code size. 11641 11642Fixed a fault when using the AML debugger "disassemble" command to 11643disassemble individual control methods. 11644 11645Removed references to the "release_current" directory within the Unix 11646release package. 11647 11648Code and Data Size: The current and previous core subsystem library sizes 11649are shown below. These are the code and data sizes for the acpica.lib 11650produced by the Microsoft Visual C++ 6.0 compiler. These values do not 11651include any ACPI driver or OSPM code. The debug version of the code 11652includes 11653the debug output trace mechanism and has a much larger code and data 11654size. 11655Note that these values will vary depending on the efficiency of the 11656compiler 11657and the compiler options used during generation. 11658 11659 Previous Release: 11660 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11661 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 11662 Current Release: 11663 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 11664 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 11665 11666 116672) iASL Compiler/Disassembler: 11668 11669Implemented an error check for illegal duplicate values in the interrupt 11670and 11671dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 11672Interrupt(). 11673 11674Implemented error checking for the Irq() and IrqNoFlags() macros to 11675detect 11676too many values in the interrupt list (16 max) and invalid values in the 11677list (range 0 - 15) 11678 11679The maximum length string literal within an ASL file is now restricted to 11680200 characters as per the ACPI specification. 11681 11682Fixed a fault when using the -ln option (generate namespace listing). 11683 11684Implemented an error check to determine if a DescriptorName within a 11685resource descriptor has already been used within the current scope. 11686 11687---------------------------------------- 1168815 August 2005. Summary of changes for version 20050815: 11689 116901) ACPI CA Core Subsystem: 11691 11692Implemented a full bytewise compare to determine if a table load request 11693is 11694attempting to load a duplicate table. The compare is performed if the 11695table 11696signatures and table lengths match. This will allow different tables with 11697the same OEM Table ID and revision to be loaded - probably against the 11698ACPI 11699specification, but discovered in the field nonetheless. 11700 11701Added the changes.txt logfile to each of the zipped release packages. 11702 11703Code and Data Size: Current and previous core subsystem library sizes are 11704shown below. These are the code and data sizes for the acpica.lib 11705produced 11706by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11707any ACPI driver or OSPM code. The debug version of the code includes the 11708debug output trace mechanism and has a much larger code and data size. 11709Note 11710that these values will vary depending on the efficiency of the compiler 11711and 11712the compiler options used during generation. 11713 11714 Previous Release: 11715 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11716 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 11717 Current Release: 11718 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11719 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 11720 11721 117222) iASL Compiler/Disassembler: 11723 11724Fixed a problem where incorrect AML code could be generated for Package 11725objects if optimization is disabled (via the -oa switch). 11726 11727Fixed a problem with where incorrect AML code is generated for variable- 11728length packages when the package length is not specified and the number 11729of 11730initializer values is greater than 255. 11731 11732 11733---------------------------------------- 1173429 July 2005. Summary of changes for version 20050729: 11735 117361) ACPI CA Core Subsystem: 11737 11738Implemented support to ignore an attempt to install/load a particular 11739ACPI 11740table more than once. Apparently there exists BIOS code that repeatedly 11741attempts to load the same SSDT upon certain events. With assistance from 11742Venkatesh Pallipadi. 11743 11744Restructured the main interface to the AML parser in order to correctly 11745handle all exceptional conditions. This will prevent leakage of the 11746OwnerId 11747resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 11748some 11749machines. With assistance from Alexey Starikovskiy. 11750 11751Support for "module level code" has been disabled in this version due to 11752a 11753number of issues that have appeared on various machines. The support can 11754be 11755enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 11756compilation. When the issues are fully resolved, the code will be enabled 11757by 11758default again. 11759 11760Modified the internal functions for debug print support to define the 11761FunctionName parameter as a (const char *) for compatibility with 11762compiler 11763built-in macros such as __FUNCTION__, etc. 11764 11765Linted the entire ACPICA source tree for both 32-bit and 64-bit. 11766 11767Implemented support to display an object count summary for the AML 11768Debugger 11769commands Object and Methods. 11770 11771Code and Data Size: Current and previous core subsystem library sizes are 11772shown below. These are the code and data sizes for the acpica.lib 11773produced 11774by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11775any ACPI driver or OSPM code. The debug version of the code includes the 11776debug output trace mechanism and has a much larger code and data size. 11777Note 11778that these values will vary depending on the efficiency of the compiler 11779and 11780the compiler options used during generation. 11781 11782 Previous Release: 11783 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 11784 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 11785 Current Release: 11786 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11787 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 11788 11789 117902) iASL Compiler/Disassembler: 11791 11792Fixed a regression that appeared in the 20050708 version of the compiler 11793where an error message was inadvertently emitted for invocations of the 11794_OSI 11795reserved control method. 11796 11797---------------------------------------- 1179808 July 2005. Summary of changes for version 20050708: 11799 118001) ACPI CA Core Subsystem: 11801 11802The use of the CPU stack in the debug version of the subsystem has been 11803considerably reduced. Previously, a debug structure was declared in every 11804function that used the debug macros. This structure has been removed in 11805favor of declaring the individual elements as parameters to the debug 11806functions. This reduces the cumulative stack use during nested execution 11807of 11808ACPI function calls at the cost of a small increase in the code size of 11809the 11810debug version of the subsystem. With assistance from Alexey Starikovskiy 11811and 11812Len Brown. 11813 11814Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 11815headers to define a macro that will return the current function name at 11816runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 11817by 11818the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 11819compiler-dependent header, the function name is saved on the CPU stack 11820(one 11821pointer per function.) This mechanism is used because apparently there 11822exists no standard ANSI-C defined macro that that returns the function 11823name. 11824 11825Redesigned and reimplemented the "Owner ID" mechanism used to track 11826namespace objects created/deleted by ACPI tables and control method 11827execution. A bitmap is now used to allocate and free the IDs, thus 11828solving 11829the wraparound problem present in the previous implementation. The size 11830of 11831the namespace node descriptor was reduced by 2 bytes as a result (Alexey 11832Starikovskiy). 11833 11834Removed the UINT32_BIT and UINT16_BIT types that were used for the 11835bitfield 11836flag definitions within the headers for the predefined ACPI tables. These 11837have been replaced by UINT8_BIT in order to increase the code portability 11838of 11839the subsystem. If the use of UINT8 remains a problem, we may be forced to 11840eliminate bitfields entirely because of a lack of portability. 11841 11842Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 11843This 11844is a frequently used function and this improvement increases the 11845performance 11846of the entire subsystem (Alexey Starikovskiy). 11847 11848Fixed several possible memory leaks and the inverse - premature object 11849deletion (Alexey Starikovskiy). 11850 11851Code and Data Size: Current and previous core subsystem library sizes are 11852shown below. These are the code and data sizes for the acpica.lib 11853produced 11854by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11855any ACPI driver or OSPM code. The debug version of the code includes the 11856debug output trace mechanism and has a much larger code and data size. 11857Note 11858that these values will vary depending on the efficiency of the compiler 11859and 11860the compiler options used during generation. 11861 11862 Previous Release: 11863 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 11864 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 11865 Current Release: 11866 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 11867 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 11868 11869---------------------------------------- 1187024 June 2005. Summary of changes for version 20050624: 11871 118721) ACPI CA Core Subsystem: 11873 11874Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 11875the host-defined cache object. This allows the OSL implementation to 11876define 11877and type this object in any manner desired, simplifying the OSL 11878implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 11879Linux, and should be defined in the OS-specific header file for other 11880operating systems as required. 11881 11882Changed the interface to AcpiOsAcquireObject to directly return the 11883requested object as the function return (instead of ACPI_STATUS.) This 11884change was made for performance reasons, since this is the purpose of the 11885interface in the first place. AcpiOsAcquireObject is now similar to the 11886AcpiOsAllocate interface. 11887 11888Implemented a new AML debugger command named Businfo. This command 11889displays 11890information about all devices that have an associate _PRT object. The 11891_ADR, 11892_HID, _UID, and _CID are displayed for these devices. 11893 11894Modified the initialization sequence in AcpiInitializeSubsystem to call 11895the 11896OSL interface AcpiOslInitialize first, before any local initialization. 11897This 11898change was required because the global initialization now calls OSL 11899interfaces. 11900 11901Enhanced the Dump command to display the entire contents of Package 11902objects 11903(including all sub-objects and their values.) 11904 11905Restructured the code base to split some files because of size and/or 11906because the code logically belonged in a separate file. New files are 11907listed 11908below. All makefiles and project files included in the ACPI CA release 11909have 11910been updated. 11911 utilities/utcache.c /* Local cache interfaces */ 11912 utilities/utmutex.c /* Local mutex support */ 11913 utilities/utstate.c /* State object support */ 11914 interpreter/parser/psloop.c /* Main AML parse loop */ 11915 11916Code and Data Size: Current and previous core subsystem library sizes are 11917shown below. These are the code and data sizes for the acpica.lib 11918produced 11919by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11920any ACPI driver or OSPM code. The debug version of the code includes the 11921debug output trace mechanism and has a much larger code and data size. 11922Note 11923that these values will vary depending on the efficiency of the compiler 11924and 11925the compiler options used during generation. 11926 11927 Previous Release: 11928 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 11929 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 11930 Current Release: 11931 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 11932 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 11933 11934 119352) iASL Compiler/Disassembler: 11936 11937Fixed a regression introduced in version 20050513 where the use of a 11938Package 11939object within a Case() statement caused a compile time exception. The 11940original behavior has been restored (a Match() operator is emitted.) 11941 11942---------------------------------------- 1194317 June 2005. Summary of changes for version 20050617: 11944 119451) ACPI CA Core Subsystem: 11946 11947Moved the object cache operations into the OS interface layer (OSL) to 11948allow 11949the host OS to handle these operations if desired (for example, the Linux 11950OSL will invoke the slab allocator). This support is optional; the 11951compile 11952time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 11953cache 11954code in the ACPI CA core. The new OSL interfaces are shown below. See 11955utalloc.c for an example implementation, and acpiosxf.h for the exact 11956interface definitions. With assistance from Alexey Starikovskiy. 11957 AcpiOsCreateCache 11958 AcpiOsDeleteCache 11959 AcpiOsPurgeCache 11960 AcpiOsAcquireObject 11961 AcpiOsReleaseObject 11962 11963Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 11964return 11965and restore a flags parameter. This fits better with many OS lock models. 11966Note: the current execution state (interrupt handler or not) is no longer 11967passed to these interfaces. If necessary, the OSL must determine this 11968state 11969by itself, a simple and fast operation. With assistance from Alexey 11970Starikovskiy. 11971 11972Fixed a problem in the ACPI table handling where a valid XSDT was assumed 11973present if the revision of the RSDP was 2 or greater. According to the 11974ACPI 11975specification, the XSDT is optional in all cases, and the table manager 11976therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 11977Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 11978contain 11979only the RSDT. 11980 11981Fixed an interpreter problem with the Mid() operator in the case of an 11982input 11983string where the resulting output string is of zero length. It now 11984correctly 11985returns a valid, null terminated string object instead of a string object 11986with a null pointer. 11987 11988Fixed a problem with the control method argument handling to allow a 11989store 11990to an Arg object that already contains an object of type Device. The 11991Device 11992object is now correctly overwritten. Previously, an error was returned. 11993 11994 11995Enhanced the debugger Find command to emit object values in addition to 11996the 11997found object pathnames. The output format is the same as the dump 11998namespace 11999command. 12000 12001Enhanced the debugger Set command. It now has the ability to set the 12002value 12003of any Named integer object in the namespace (Previously, only method 12004locals 12005and args could be set.) 12006 12007Code and Data Size: Current and previous core subsystem library sizes are 12008shown below. These are the code and data sizes for the acpica.lib 12009produced 12010by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12011any ACPI driver or OSPM code. The debug version of the code includes the 12012debug output trace mechanism and has a much larger code and data size. 12013Note 12014that these values will vary depending on the efficiency of the compiler 12015and 12016the compiler options used during generation. 12017 12018 Previous Release: 12019 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 12020 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 12021 Current Release: 12022 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 12023 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 12024 12025 120262) iASL Compiler/Disassembler: 12027 12028Fixed a regression in the disassembler where if/else/while constructs 12029were 12030output incorrectly. This problem was introduced in the previous release 12031(20050526). This problem also affected the single-step disassembly in the 12032debugger. 12033 12034Fixed a problem where compiling the reserved _OSI method would randomly 12035(but 12036rarely) produce compile errors. 12037 12038Enhanced the disassembler to emit compilable code in the face of 12039incorrect 12040AML resource descriptors. If the optional ResourceSourceIndex is present, 12041but the ResourceSource is not, do not emit the ResourceSourceIndex in the 12042disassembly. Otherwise, the resulting code cannot be compiled without 12043errors. 12044 12045---------------------------------------- 1204626 May 2005. Summary of changes for version 20050526: 12047 120481) ACPI CA Core Subsystem: 12049 12050Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 12051the module level (not within a control method.) These opcodes are 12052executed 12053exactly once at the time the table is loaded. This type of code was legal 12054up 12055until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 12056in 12057order to provide backwards compatibility with earlier BIOS 12058implementations. 12059This eliminates the "Encountered executable code at module level" warning 12060that was previously generated upon detection of such code. 12061 12062Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 12063inadvertently be generated during the lookup of namespace objects in the 12064second pass parse of ACPI tables and control methods. It appears that 12065this 12066problem could occur during the resolution of forward references to 12067namespace 12068objects. 12069 12070Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 12071corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 12072allows the deadlock detection debug code to be compiled out in the normal 12073case, improving mutex performance (and overall subsystem performance) 12074considerably. 12075 12076Implemented a handful of miscellaneous fixes for possible memory leaks on 12077error conditions and error handling control paths. These fixes were 12078suggested by FreeBSD and the Coverity Prevent source code analysis tool. 12079 12080Added a check for a null RSDT pointer in AcpiGetFirmwareTable 12081(tbxfroot.c) 12082to prevent a fault in this error case. 12083 12084Code and Data Size: Current and previous core subsystem library sizes are 12085shown below. These are the code and data sizes for the acpica.lib 12086produced 12087by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12088any ACPI driver or OSPM code. The debug version of the code includes the 12089debug output trace mechanism and has a much larger code and data size. 12090Note 12091that these values will vary depending on the efficiency of the compiler 12092and 12093the compiler options used during generation. 12094 12095 Previous Release: 12096 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12097 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12098 Current Release: 12099 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 12100 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 12101 12102 121032) iASL Compiler/Disassembler: 12104 12105Implemented support to allow Type 1 and Type 2 ASL operators to appear at 12106the module level (not within a control method.) These operators will be 12107executed once at the time the table is loaded. This type of code was 12108legal 12109up until the release of ACPI 2.0B (2002) and is now supported by the iASL 12110compiler in order to provide backwards compatibility with earlier BIOS 12111ASL 12112code. 12113 12114The ACPI integer width (specified via the table revision ID or the -r 12115override, 32 or 64 bits) is now used internally during compile-time 12116constant 12117folding to ensure that constants are truncated to 32 bits if necessary. 12118Previously, the revision ID value was only emitted in the AML table 12119header. 12120 12121An error message is now generated for the Mutex and Method operators if 12122the 12123SyncLevel parameter is outside the legal range of 0 through 15. 12124 12125Fixed a problem with the Method operator ParameterTypes list handling 12126(ACPI 121273.0). Previously, more than 2 types or 2 arguments generated a syntax 12128error. 12129The actual underlying implementation of method argument typechecking is 12130still under development, however. 12131 12132---------------------------------------- 1213313 May 2005. Summary of changes for version 20050513: 12134 121351) ACPI CA Core Subsystem: 12136 12137Implemented support for PCI Express root bridges -- added support for 12138device 12139PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 12140 12141The interpreter now automatically truncates incoming 64-bit constants to 1214232 12143bits if currently executing out of a 32-bit ACPI table (Revision < 2). 12144This 12145also affects the iASL compiler constant folding. (Note: as per below, the 12146iASL compiler no longer allows 64-bit constants within 32-bit tables.) 12147 12148Fixed a problem where string and buffer objects with "static" pointers 12149(pointers to initialization data within an ACPI table) were not handled 12150consistently. The internal object copy operation now always copies the 12151data 12152to a newly allocated buffer, regardless of whether the source object is 12153static or not. 12154 12155Fixed a problem with the FromBCD operator where an implicit result 12156conversion was improperly performed while storing the result to the 12157target 12158operand. Since this is an "explicit conversion" operator, the implicit 12159conversion should never be performed on the output. 12160 12161Fixed a problem with the CopyObject operator where a copy to an existing 12162named object did not always completely overwrite the existing object 12163stored 12164at name. Specifically, a buffer-to-buffer copy did not delete the 12165existing 12166buffer. 12167 12168Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 12169and 12170structs for consistency. 12171 12172Code and Data Size: Current and previous core subsystem library sizes are 12173shown below. These are the code and data sizes for the acpica.lib 12174produced 12175by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12176any ACPI driver or OSPM code. The debug version of the code includes the 12177debug output trace mechanism and has a much larger code and data size. 12178Note 12179that these values will vary depending on the efficiency of the compiler 12180and 12181the compiler options used during generation. 12182 12183 Previous Release: 12184 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12185 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12186 Current Release: (Same sizes) 12187 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12188 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12189 12190 121912) iASL Compiler/Disassembler: 12192 12193The compiler now emits a warning if an attempt is made to generate a 64- 12194bit 12195integer constant from within a 32-bit ACPI table (Revision < 2). The 12196integer 12197is truncated to 32 bits. 12198 12199Fixed a problem with large package objects: if the static length of the 12200package is greater than 255, the "variable length package" opcode is 12201emitted. Previously, this caused an error. This requires an update to the 12202ACPI spec, since it currently (incorrectly) states that packages larger 12203than 12204255 elements are not allowed. 12205 12206The disassembler now correctly handles variable length packages and 12207packages 12208larger than 255 elements. 12209 12210---------------------------------------- 1221108 April 2005. Summary of changes for version 20050408: 12212 122131) ACPI CA Core Subsystem: 12214 12215Fixed three cases in the interpreter where an "index" argument to an ASL 12216function was still (internally) 32 bits instead of the required 64 bits. 12217This was the Index argument to the Index, Mid, and Match operators. 12218 12219The "strupr" function is now permanently local (AcpiUtStrupr), since this 12220is 12221not a POSIX-defined function and not present in most kernel-level C 12222libraries. All references to the C library strupr function have been 12223removed 12224from the headers. 12225 12226Completed the deployment of static functions/prototypes. All prototypes 12227with 12228the static attribute have been moved from the headers to the owning C 12229file. 12230 12231Implemented an extract option (-e) for the AcpiBin utility (AML binary 12232utility). This option allows the utility to extract individual ACPI 12233tables 12234from the output of AcpiDmp. It provides the same functionality of the 12235acpixtract.pl perl script without the worry of setting the correct perl 12236options. AcpiBin runs on Windows and has not yet been generated/validated 12237in 12238the Linux/Unix environment (but should be soon). 12239 12240Updated and fixed the table dump option for AcpiBin (-d). This option 12241converts a single ACPI table to a hex/ascii file, similar to the output 12242of 12243AcpiDmp. 12244 12245Code and Data Size: Current and previous core subsystem library sizes are 12246shown below. These are the code and data sizes for the acpica.lib 12247produced 12248by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12249any ACPI driver or OSPM code. The debug version of the code includes the 12250debug output trace mechanism and has a much larger code and data size. 12251Note 12252that these values will vary depending on the efficiency of the compiler 12253and 12254the compiler options used during generation. 12255 12256 Previous Release: 12257 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12258 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12259 Current Release: 12260 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12261 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12262 12263 122642) iASL Compiler/Disassembler: 12265 12266Disassembler fix: Added a check to ensure that the table length found in 12267the 12268ACPI table header within the input file is not longer than the actual 12269input 12270file size. This indicates some kind of file or table corruption. 12271 12272---------------------------------------- 1227329 March 2005. Summary of changes for version 20050329: 12274 122751) ACPI CA Core Subsystem: 12276 12277An error is now generated if an attempt is made to create a Buffer Field 12278of 12279length zero (A CreateField with a length operand of zero.) 12280 12281The interpreter now issues a warning whenever executable code at the 12282module 12283level is detected during ACPI table load. This will give some idea of the 12284prevalence of this type of code. 12285 12286Implemented support for references to named objects (other than control 12287methods) within package objects. 12288 12289Enhanced package object output for the debug object. Package objects are 12290now 12291completely dumped, showing all elements. 12292 12293Enhanced miscellaneous object output for the debug object. Any object can 12294now be written to the debug object (for example, a device object can be 12295written, and the type of the object will be displayed.) 12296 12297The "static" qualifier has been added to all local functions across both 12298the 12299core subsystem and the iASL compiler. 12300 12301The number of "long" lines (> 80 chars) within the source has been 12302significantly reduced, by about 1/3. 12303 12304Cleaned up all header files to ensure that all CA/iASL functions are 12305prototyped (even static functions) and the formatting is consistent. 12306 12307Two new header files have been added, acopcode.h and acnames.h. 12308 12309Removed several obsolete functions that were no longer used. 12310 12311Code and Data Size: Current and previous core subsystem library sizes are 12312shown below. These are the code and data sizes for the acpica.lib 12313produced 12314by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12315any ACPI driver or OSPM code. The debug version of the code includes the 12316debug output trace mechanism and has a much larger code and data size. 12317Note 12318that these values will vary depending on the efficiency of the compiler 12319and 12320the compiler options used during generation. 12321 12322 Previous Release: 12323 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12324 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 12325 Current Release: 12326 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12327 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12328 12329 12330 123312) iASL Compiler/Disassembler: 12332 12333Fixed a problem with the resource descriptor generation/support. For the 12334ResourceSourceIndex and the ResourceSource fields, both must be present, 12335or 12336both must be not present - can't have one without the other. 12337 12338The compiler now returns non-zero from the main procedure if any errors 12339have 12340occurred during the compilation. 12341 12342 12343---------------------------------------- 1234409 March 2005. Summary of changes for version 20050309: 12345 123461) ACPI CA Core Subsystem: 12347 12348The string-to-buffer implicit conversion code has been modified again 12349after 12350a change to the ACPI specification. In order to match the behavior of 12351the 12352other major ACPI implementation, the target buffer is no longer truncated 12353if 12354the source string is smaller than an existing target buffer. This change 12355requires an update to the ACPI spec, and should eliminate the recent 12356AE_AML_BUFFER_LIMIT issues. 12357 12358The "implicit return" support was rewritten to a new algorithm that 12359solves 12360the general case. Rather than attempt to determine when a method is about 12361to 12362exit, the result of every ASL operator is saved momentarily until the 12363very 12364next ASL operator is executed. Therefore, no matter how the method exits, 12365there will always be a saved implicit return value. This feature is only 12366enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 12367eliminate 12368AE_AML_NO_RETURN_VALUE errors when enabled. 12369 12370Implemented implicit conversion support for the predicate (operand) of 12371the 12372If, Else, and While operators. String and Buffer arguments are 12373automatically 12374converted to Integers. 12375 12376Changed the string-to-integer conversion behavior to match the new ACPI 12377errata: "If no integer object exists, a new integer is created. The ASCII 12378string is interpreted as a hexadecimal constant. Each string character is 12379interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 12380with the first character as the most significant digit, and ending with 12381the 12382first non-hexadecimal character or end-of-string." This means that the 12383first 12384non-hex character terminates the conversion and this is the code that was 12385changed. 12386 12387Fixed a problem where the ObjectType operator would fail (fault) when 12388used 12389on an Index of a Package which pointed to a null package element. The 12390operator now properly returns zero (Uninitialized) in this case. 12391 12392Fixed a problem where the While operator used excessive memory by not 12393properly popping the result stack during execution. There was no memory 12394leak 12395after execution, however. (Code provided by Valery Podrezov.) 12396 12397Fixed a problem where references to control methods within Package 12398objects 12399caused the method to be invoked, instead of producing a reference object 12400pointing to the method. 12401 12402Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 12403to 12404improve performance and reduce code size. (Code provided by Alexey 12405Starikovskiy.) 12406 12407Code and Data Size: Current and previous core subsystem library sizes are 12408shown below. These are the code and data sizes for the acpica.lib 12409produced 12410by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12411any ACPI driver or OSPM code. The debug version of the code includes the 12412debug output trace mechanism and has a much larger code and data size. 12413Note 12414that these values will vary depending on the efficiency of the compiler 12415and 12416the compiler options used during generation. 12417 12418 Previous Release: 12419 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12420 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 12421 Current Release: 12422 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12423 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 12424 12425 124262) iASL Compiler/Disassembler: 12427 12428Fixed a problem with the Return operator with no arguments. Since the AML 12429grammar for the byte encoding requires an operand for the Return opcode, 12430the 12431compiler now emits a Return(Zero) for this case. An ACPI specification 12432update has been written for this case. 12433 12434For tables other than the DSDT, namepath optimization is automatically 12435disabled. This is because SSDTs can be loaded anywhere in the namespace, 12436the 12437compiler has no knowledge of where, and thus cannot optimize namepaths. 12438 12439Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 12440inadvertently omitted from the ACPI specification, and will require an 12441update to the spec. 12442 12443The source file scan for ASCII characters is now optional (-a). This 12444change 12445was made because some vendors place non-ascii characters within comments. 12446However, the scan is simply a brute-force byte compare to ensure all 12447characters in the file are in the range 0x00 to 0x7F. 12448 12449Fixed a problem with the CondRefOf operator where the compiler was 12450inappropriately checking for the existence of the target. Since the point 12451of 12452the operator is to check for the existence of the target at run-time, the 12453compiler no longer checks for the target existence. 12454 12455Fixed a problem where errors generated from the internal AML interpreter 12456during constant folding were not handled properly, causing a fault. 12457 12458Fixed a problem with overly aggressive range checking for the Stall 12459operator. The valid range (max 255) is now only checked if the operand is 12460of 12461type Integer. All other operand types cannot be statically checked. 12462 12463Fixed a problem where control method references within the RefOf, 12464DeRefOf, 12465and ObjectType operators were not treated properly. They are now treated 12466as 12467actual references, not method invocations. 12468 12469Fixed and enhanced the "list namespace" option (-ln). This option was 12470broken 12471a number of releases ago. 12472 12473Improved error handling for the Field, IndexField, and BankField 12474operators. 12475The compiler now cleanly reports and recovers from errors in the field 12476component (FieldUnit) list. 12477 12478Fixed a disassembler problem where the optional ResourceDescriptor fields 12479TRS and TTP were not always handled correctly. 12480 12481Disassembler - Comments in output now use "//" instead of "/*" 12482 12483---------------------------------------- 1248428 February 2005. Summary of changes for version 20050228: 12485 124861) ACPI CA Core Subsystem: 12487 12488Fixed a problem where the result of an Index() operator (an object 12489reference) must increment the reference count on the target object for 12490the 12491life of the object reference. 12492 12493Implemented AML Interpreter and Debugger support for the new ACPI 3.0 12494Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 12495WordSpace 12496resource descriptors. 12497 12498Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 12499Space Descriptor" string, indicating interpreter support for the 12500descriptors 12501above. 12502 12503Implemented header support for the new ACPI 3.0 FADT flag bits. 12504 12505Implemented header support for the new ACPI 3.0 PCI Express bits for the 12506PM1 12507status/enable registers. 12508 12509Updated header support for the MADT processor local Apic struct and MADT 12510platform interrupt source struct for new ACPI 3.0 fields. 12511 12512Implemented header support for the SRAT and SLIT ACPI tables. 12513 12514Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 12515flag 12516at runtime. 12517 12518Code and Data Size: Current and previous core subsystem library sizes are 12519shown below. These are the code and data sizes for the acpica.lib 12520produced 12521by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12522any ACPI driver or OSPM code. The debug version of the code includes the 12523debug output trace mechanism and has a much larger code and data size. 12524Note 12525that these values will vary depending on the efficiency of the compiler 12526and 12527the compiler options used during generation. 12528 12529 Previous Release: 12530 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 12531 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 12532 Current Release: 12533 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12534 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 12535 12536 125372) iASL Compiler/Disassembler: 12538 12539Fixed a problem with the internal 64-bit String-to-integer conversion 12540with 12541strings less than two characters long. 12542 12543Fixed a problem with constant folding where the result of the Index() 12544operator can not be considered a constant. This means that Index() cannot 12545be 12546a type3 opcode and this will require an update to the ACPI specification. 12547 12548Disassembler: Implemented support for the TTP, MTP, and TRS resource 12549descriptor fields. These fields were inadvertently ignored and not output 12550in 12551the disassembly of the resource descriptor. 12552 12553 12554 ---------------------------------------- 1255511 February 2005. Summary of changes for version 20050211: 12556 125571) ACPI CA Core Subsystem: 12558 12559Implemented ACPI 3.0 support for implicit conversion within the Match() 12560operator. MatchObjects can now be of type integer, buffer, or string 12561instead 12562of just type integer. Package elements are implicitly converted to the 12563type 12564of the MatchObject. This change aligns the behavior of Match() with the 12565behavior of the other logical operators (LLess(), etc.) It also requires 12566an 12567errata change to the ACPI specification as this support was intended for 12568ACPI 3.0, but was inadvertently omitted. 12569 12570Fixed a problem with the internal implicit "to buffer" conversion. 12571Strings 12572that are converted to buffers will cause buffer truncation if the string 12573is 12574smaller than the target buffer. Integers that are converted to buffers 12575will 12576not cause buffer truncation, only zero extension (both as per the ACPI 12577spec.) The problem was introduced when code was added to truncate the 12578buffer, but this should not be performed in all cases, only the string 12579case. 12580 12581Fixed a problem with the Buffer and Package operators where the 12582interpreter 12583would get confused if two such operators were used as operands to an ASL 12584operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 12585stack was not being popped after the execution of these operators, 12586resulting 12587in an AE_NO_RETURN_VALUE exception. 12588 12589Fixed a problem with constructs of the form Store(Index(...),...). The 12590reference object returned from Index was inadvertently resolved to an 12591actual 12592value. This problem was introduced in version 20050114 when the behavior 12593of 12594Store() was modified to restrict the object types that can be used as the 12595source operand (to match the ACPI specification.) 12596 12597Reduced excessive stack use within the AcpiGetObjectInfo procedure. 12598 12599Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 12600 12601Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 12602 12603Code and Data Size: Current and previous core subsystem library sizes are 12604shown below. These are the code and data sizes for the acpica.lib 12605produced 12606by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12607any ACPI driver or OSPM code. The debug version of the code includes the 12608debug output trace mechanism and has a much larger code and data size. 12609Note 12610that these values will vary depending on the efficiency of the compiler 12611and 12612the compiler options used during generation. 12613 12614 Previous Release: 12615 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 12616 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 12617 Current Release: 12618 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 12619 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 12620 12621 126222) iASL Compiler/Disassembler: 12623 12624Fixed a code generation problem in the constant folding optimization code 12625where incorrect code was generated if a constant was reduced to a buffer 12626object (i.e., a reduced type 5 opcode.) 12627 12628Fixed a typechecking problem for the ToBuffer operator. Caused by an 12629incorrect return type in the internal opcode information table. 12630 12631---------------------------------------- 1263225 January 2005. Summary of changes for version 20050125: 12633 126341) ACPI CA Core Subsystem: 12635 12636Fixed a recently introduced problem with the Global Lock where the 12637underlying semaphore was not created. This problem was introduced in 12638version 20050114, and caused an AE_AML_NO_OPERAND exception during an 12639Acquire() operation on _GL. 12640 12641The local object cache is now optional, and is disabled by default. Both 12642AcpiExec and the iASL compiler enable the cache because they run in user 12643mode and this enhances their performance. #define 12644ACPI_ENABLE_OBJECT_CACHE 12645to enable the local cache. 12646 12647Fixed an issue in the internal function AcpiUtEvaluateObject concerning 12648the 12649optional "implicit return" support where an error was returned if no 12650return 12651object was expected, but one was implicitly returned. AE_OK is now 12652returned 12653in this case and the implicitly returned object is deleted. 12654AcpiUtEvaluateObject is only occasionally used, and only to execute 12655reserved 12656methods such as _STA and _INI where the return type is known up front. 12657 12658Fixed a few issues with the internal convert-to-integer code. It now 12659returns 12660an error if an attempt is made to convert a null string, a string of only 12661blanks/tabs, or a zero-length buffer. This affects both implicit 12662conversion 12663and explicit conversion via the ToInteger() operator. 12664 12665The internal debug code in AcpiUtAcquireMutex has been commented out. It 12666is 12667not needed for normal operation and should increase the performance of 12668the 12669entire subsystem. The code remains in case it is needed for debug 12670purposes 12671again. 12672 12673The AcpiExec source and makefile are included in the Unix/Linux package 12674for 12675the first time. 12676 12677Code and Data Size: Current and previous core subsystem library sizes are 12678shown below. These are the code and data sizes for the acpica.lib 12679produced 12680by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12681any ACPI driver or OSPM code. The debug version of the code includes the 12682debug output trace mechanism and has a much larger code and data size. 12683Note 12684that these values will vary depending on the efficiency of the compiler 12685and 12686the compiler options used during generation. 12687 12688 Previous Release: 12689 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 12690 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 12691 Current Release: 12692 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 12693 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 12694 126952) iASL Compiler/Disassembler: 12696 12697Switch/Case support: A warning is now issued if the type of the Switch 12698value 12699cannot be determined at compile time. For example, Switch(Arg0) will 12700generate the warning, and the type is assumed to be an integer. As per 12701the 12702ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 12703the 12704warning. 12705 12706Switch/Case support: Implemented support for buffer and string objects as 12707the switch value. This is an ACPI 3.0 feature, now that LEqual supports 12708buffers and strings. 12709 12710Switch/Case support: The emitted code for the LEqual() comparisons now 12711uses 12712the switch value as the first operand, not the second. The case value is 12713now 12714the second operand, and this allows the case value to be implicitly 12715converted to the type of the switch value, not the other way around. 12716 12717Switch/Case support: Temporary variables are now emitted immediately 12718within 12719the control method, not at the global level. This means that there are 12720now 1272136 temps available per-method, not 36 temps per-module as was the case 12722with 12723the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 12724 12725---------------------------------------- 1272614 January 2005. Summary of changes for version 20050114: 12727 12728Added 2005 copyright to all module headers. This affects every module in 12729the core subsystem, iASL compiler, and the utilities. 12730 127311) ACPI CA Core Subsystem: 12732 12733Fixed an issue with the String-to-Buffer conversion code where the string 12734null terminator was not included in the buffer after conversion, but 12735there 12736is existing ASL that assumes the string null terminator is included. This 12737is 12738the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 12739introduced in the previous version when the code was updated to correctly 12740set the converted buffer size as per the ACPI specification. The ACPI 12741spec 12742is ambiguous and will be updated to specify that the null terminator must 12743be 12744included in the converted buffer. This also affects the ToBuffer() ASL 12745operator. 12746 12747Fixed a problem with the Mid() ASL/AML operator where it did not work 12748correctly on Buffer objects. Newly created sub-buffers were not being 12749marked 12750as initialized. 12751 12752 12753Fixed a problem in AcpiTbFindTable where incorrect string compares were 12754performed on the OemId and OemTableId table header fields. These fields 12755are 12756not null terminated, so strncmp is now used instead of strcmp. 12757 12758Implemented a restriction on the Store() ASL/AML operator to align the 12759behavior with the ACPI specification. Previously, any object could be 12760used 12761as the source operand. Now, the only objects that may be used are 12762Integers, 12763Buffers, Strings, Packages, Object References, and DDB Handles. If 12764necessary, the original behavior can be restored by enabling the 12765EnableInterpreterSlack flag. 12766 12767Enhanced the optional "implicit return" support to allow an implicit 12768return 12769value from methods that are invoked externally via the AcpiEvaluateObject 12770interface. This enables implicit returns from the _STA and _INI methods, 12771for example. 12772 12773Changed the Revision() ASL/AML operator to return the current version of 12774the 12775AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 12776returned 12777the supported ACPI version (This is the function of the _REV method). 12778 12779Updated the _REV predefined method to return the currently supported 12780version 12781of ACPI, now 3. 12782 12783Implemented batch mode option for the AcpiExec utility (-b). 12784 12785Code and Data Size: Current and previous core subsystem library sizes are 12786shown below. These are the code and data sizes for the acpica.lib 12787produced 12788by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12789any ACPI driver or OSPM code. The debug version of the code includes the 12790debug output trace mechanism and has a much larger code and data size. 12791Note 12792that these values will vary depending on the efficiency of the compiler 12793and 12794the compiler options used during generation. 12795 12796 Previous Release: 12797 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12798 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 12799 Current Release: 12800 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 12801 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 12802 12803---------------------------------------- 1280410 December 2004. Summary of changes for version 20041210: 12805 12806ACPI 3.0 support is nearing completion in both the iASL compiler and the 12807ACPI CA core subsystem. 12808 128091) ACPI CA Core Subsystem: 12810 12811Fixed a problem in the ToDecimalString operator where the resulting 12812string 12813length was incorrectly calculated. The length is now calculated exactly, 12814eliminating incorrect AE_STRING_LIMIT exceptions. 12815 12816Fixed a problem in the ToHexString operator to allow a maximum 200 12817character 12818string to be produced. 12819 12820Fixed a problem in the internal string-to-buffer and buffer-to-buffer 12821copy 12822routine where the length of the resulting buffer was not truncated to the 12823new size (if the target buffer already existed). 12824 12825Code and Data Size: Current and previous core subsystem library sizes are 12826shown below. These are the code and data sizes for the acpica.lib 12827produced 12828by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12829any ACPI driver or OSPM code. The debug version of the code includes the 12830debug output trace mechanism and has a much larger code and data size. 12831Note 12832that these values will vary depending on the efficiency of the compiler 12833and 12834the compiler options used during generation. 12835 12836 Previous Release: 12837 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12838 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 12839 Current Release: 12840 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12841 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 12842 12843 128442) iASL Compiler/Disassembler: 12845 12846Implemented the new ACPI 3.0 resource template macros - DWordSpace, 12847ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 12848Includes support in the disassembler. 12849 12850Implemented support for the new (ACPI 3.0) parameter to the Register 12851macro, 12852AccessSize. 12853 12854Fixed a problem where the _HE resource name for the Interrupt macro was 12855referencing bit 0 instead of bit 1. 12856 12857Implemented check for maximum 255 interrupts in the Interrupt macro. 12858 12859Fixed a problem with the predefined resource descriptor names where 12860incorrect AML code was generated if the offset within the resource buffer 12861was 0 or 1. The optimizer shortened the AML code to a single byte opcode 12862but did not update the surrounding package lengths. 12863 12864Changes to the Dma macro: All channels within the channel list must be 12865in 12866the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 12867optional (default is BusMaster). 12868 12869Implemented check for maximum 7 data bytes for the VendorShort macro. 12870 12871The ReadWrite parameter is now optional for the Memory32 and similar 12872macros. 12873 12874---------------------------------------- 1287503 December 2004. Summary of changes for version 20041203: 12876 128771) ACPI CA Core Subsystem: 12878 12879The low-level field insertion/extraction code (exfldio) has been 12880completely 12881rewritten to eliminate unnecessary complexity, bugs, and boundary 12882conditions. 12883 12884Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 12885ToDecimalString 12886operators where the input operand could be inadvertently deleted if no 12887conversion was necessary (e.g., if the input to ToInteger was an Integer 12888object.) 12889 12890Fixed a problem with the ToDecimalString and ToHexString where an 12891incorrect 12892exception code was returned if the resulting string would be > 200 chars. 12893AE_STRING_LIMIT is now returned. 12894 12895Fixed a problem with the Concatenate operator where AE_OK was always 12896returned, even if the operation failed. 12897 12898Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 12899semaphores to be allocated. 12900 12901Code and Data Size: Current and previous core subsystem library sizes are 12902shown below. These are the code and data sizes for the acpica.lib 12903produced 12904by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12905any ACPI driver or OSPM code. The debug version of the code includes the 12906debug output trace mechanism and has a much larger code and data size. 12907Note 12908that these values will vary depending on the efficiency of the compiler 12909and 12910the compiler options used during generation. 12911 12912 Previous Release: 12913 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12914 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12915 Current Release: 12916 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12917 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 12918 12919 129202) iASL Compiler/Disassembler: 12921 12922Fixed typechecking for the ObjectType and SizeOf operators. Problem was 12923recently introduced in 20041119. 12924 12925Fixed a problem with the ToUUID macro where the upper nybble of each 12926buffer 12927byte was inadvertently set to zero. 12928 12929---------------------------------------- 1293019 November 2004. Summary of changes for version 20041119: 12931 129321) ACPI CA Core Subsystem: 12933 12934Fixed a problem in the internal ConvertToInteger routine where new 12935integers 12936were not truncated to 32 bits for 32-bit ACPI tables. This routine 12937converts 12938buffers and strings to integers. 12939 12940Implemented support to store a value to an Index() on a String object. 12941This 12942is an ACPI 2.0 feature that had not yet been implemented. 12943 12944Implemented new behavior for storing objects to individual package 12945elements 12946(via the Index() operator). The previous behavior was to invoke the 12947implicit 12948conversion rules if an object was already present at the index. The new 12949behavior is to simply delete any existing object and directly store the 12950new 12951object. Although the ACPI specification seems unclear on this subject, 12952other 12953ACPI implementations behave in this manner. (This is the root of the 12954AE_BAD_HEX_CONSTANT issue.) 12955 12956Modified the RSDP memory scan mechanism to support the extended checksum 12957for 12958ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 12959RSDP signature is found with a valid checksum. 12960 12961Code and Data Size: Current and previous core subsystem library sizes are 12962shown below. These are the code and data sizes for the acpica.lib 12963produced 12964by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12965any ACPI driver or OSPM code. The debug version of the code includes the 12966debug output trace mechanism and has a much larger code and data size. 12967Note 12968that these values will vary depending on the efficiency of the compiler 12969and 12970the compiler options used during generation. 12971 12972 Previous Release: 12973 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12974 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12975 Current Release: 12976 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12977 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12978 12979 129802) iASL Compiler/Disassembler: 12981 12982Fixed a missing semicolon in the aslcompiler.y file. 12983 12984---------------------------------------- 1298505 November 2004. Summary of changes for version 20041105: 12986 129871) ACPI CA Core Subsystem: 12988 12989Implemented support for FADT revision 2. This was an interim table 12990(between 12991ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 12992 12993Implemented optional support to allow uninitialized LocalX and ArgX 12994variables in a control method. The variables are initialized to an 12995Integer 12996object with a value of zero. This support is enabled by setting the 12997AcpiGbl_EnableInterpreterSlack flag to TRUE. 12998 12999Implemented support for Integer objects for the SizeOf operator. Either 130004 13001or 8 is returned, depending on the current integer size (32-bit or 64- 13002bit, 13003depending on the parent table revision). 13004 13005Fixed a problem in the implementation of the SizeOf and ObjectType 13006operators 13007where the operand was resolved to a value too early, causing incorrect 13008return values for some objects. 13009 13010Fixed some possible memory leaks during exceptional conditions. 13011 13012Code and Data Size: Current and previous core subsystem library sizes are 13013shown below. These are the code and data sizes for the acpica.lib 13014produced 13015by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13016any ACPI driver or OSPM code. The debug version of the code includes the 13017debug output trace mechanism and has a much larger code and data size. 13018Note 13019that these values will vary depending on the efficiency of the compiler 13020and 13021the compiler options used during generation. 13022 13023 Previous Release: 13024 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13025 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 13026 Current Release: 13027 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13028 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13029 13030 130312) iASL Compiler/Disassembler: 13032 13033Implemented support for all ACPI 3.0 reserved names and methods. 13034 13035Implemented all ACPI 3.0 grammar elements in the front-end, including 13036support for semicolons. 13037 13038Implemented the ACPI 3.0 Function() and ToUUID() macros 13039 13040Fixed a problem in the disassembler where a Scope() operator would not be 13041emitted properly if the target of the scope was in another table. 13042 13043---------------------------------------- 1304415 October 2004. Summary of changes for version 20041015: 13045 13046Note: ACPI CA is currently undergoing an in-depth and complete formal 13047evaluation to test/verify the following areas. Other suggestions are 13048welcome. This will result in an increase in the frequency of releases and 13049the number of bug fixes in the next few months. 13050 - Functional tests for all ASL/AML operators 13051 - All implicit/explicit type conversions 13052 - Bit fields and operation regions 13053 - 64-bit math support and 32-bit-only "truncated" math support 13054 - Exceptional conditions, both compiler and interpreter 13055 - Dynamic object deletion and memory leaks 13056 - ACPI 3.0 support when implemented 13057 - External interfaces to the ACPI subsystem 13058 13059 130601) ACPI CA Core Subsystem: 13061 13062Fixed two alignment issues on 64-bit platforms - within debug statements 13063in 13064AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 13065Address 13066field within the non-aligned ACPI generic address structure. 13067 13068Fixed a problem in the Increment and Decrement operators where incorrect 13069operand resolution could result in the inadvertent modification of the 13070original integer when the integer is passed into another method as an 13071argument and the arg is then incremented/decremented. 13072 13073Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 13074bit 13075BCD number were truncated during conversion. 13076 13077Fixed a problem in the ToDecimal operator where the length of the 13078resulting 13079string could be set incorrectly too long if the input operand was a 13080Buffer 13081object. 13082 13083Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 13084(0) 13085within a buffer would prematurely terminate a compare between buffer 13086objects. 13087 13088Added a check for string overflow (>200 characters as per the ACPI 13089specification) during the Concatenate operator with two string operands. 13090 13091Code and Data Size: Current and previous core subsystem library sizes are 13092shown below. These are the code and data sizes for the acpica.lib 13093produced 13094by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13095any ACPI driver or OSPM code. The debug version of the code includes the 13096debug output trace mechanism and has a much larger code and data size. 13097Note 13098that these values will vary depending on the efficiency of the compiler 13099and 13100the compiler options used during generation. 13101 13102 Previous Release: 13103 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13104 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 13105 Current Release: 13106 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13107 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 13108 13109 13110 131112) iASL Compiler/Disassembler: 13112 13113Allow the use of the ObjectType operator on uninitialized Locals and Args 13114(returns 0 as per the ACPI specification). 13115 13116Fixed a problem where the compiler would fault if there was a syntax 13117error 13118in the FieldName of all of the various CreateXXXField operators. 13119 13120Disallow the use of lower case letters within the EISAID macro, as per 13121the 13122ACPI specification. All EISAID strings must be of the form "UUUNNNN" 13123Where 13124U is an uppercase letter and N is a hex digit. 13125 13126 13127---------------------------------------- 1312806 October 2004. Summary of changes for version 20041006: 13129 131301) ACPI CA Core Subsystem: 13131 13132Implemented support for the ACPI 3.0 Timer operator. This ASL function 13133implements a 64-bit timer with 100 nanosecond granularity. 13134 13135Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 13136implement the ACPI 3.0 Timer operator. This allows the host OS to 13137implement 13138the timer with the best clock available. Also, it keeps the core 13139subsystem 13140out of the clock handling business, since the host OS (usually) performs 13141this function. 13142 13143Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 13144functions use a 64-bit address which is part of the packed ACPI Generic 13145Address Structure. Since the structure is non-aligned, the alignment 13146macros 13147are now used to extract the address to a local variable before use. 13148 13149Fixed a problem where the ToInteger operator assumed all input strings 13150were 13151hexadecimal. The operator now handles both decimal strings and hex 13152strings 13153(prefixed with "0x"). 13154 13155Fixed a problem where the string length in the string object created as a 13156result of the internal ConvertToString procedure could be incorrect. This 13157potentially affected all implicit conversions and also the 13158ToDecimalString 13159and ToHexString operators. 13160 13161Fixed two problems in the ToString operator. If the length parameter was 13162zero, an incorrect string object was created and the value of the input 13163length parameter was inadvertently changed from zero to Ones. 13164 13165Fixed a problem where the optional ResourceSource string in the 13166ExtendedIRQ 13167resource macro was ignored. 13168 13169Simplified the interfaces to the internal division functions, reducing 13170code 13171size and complexity. 13172 13173Code and Data Size: Current and previous core subsystem library sizes are 13174shown below. These are the code and data sizes for the acpica.lib 13175produced 13176by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13177any ACPI driver or OSPM code. The debug version of the code includes the 13178debug output trace mechanism and has a much larger code and data size. 13179Note 13180that these values will vary depending on the efficiency of the compiler 13181and 13182the compiler options used during generation. 13183 13184 Previous Release: 13185 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13186 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13187 Current Release: 13188 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13189 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 13190 13191 131922) iASL Compiler/Disassembler: 13193 13194Implemented support for the ACPI 3.0 Timer operator. 13195 13196Fixed a problem where the Default() operator was inadvertently ignored in 13197a 13198Switch/Case block. This was a problem in the translation of the Switch 13199statement to If...Else pairs. 13200 13201Added support to allow a standalone Return operator, with no parentheses 13202(or 13203operands). 13204 13205Fixed a problem with code generation for the ElseIf operator where the 13206translated Else...If parse tree was improperly constructed leading to the 13207loss of some code. 13208 13209---------------------------------------- 1321022 September 2004. Summary of changes for version 20040922: 13211 132121) ACPI CA Core Subsystem: 13213 13214Fixed a problem with the implementation of the LNot() operator where 13215"Ones" 13216was not returned for the TRUE case. Changed the code to return Ones 13217instead 13218of (!Arg) which was usually 1. This change affects iASL constant folding 13219for 13220this operator also. 13221 13222Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 13223not 13224initialized properly -- Now zero the entire buffer in this case where the 13225buffer already exists. 13226 13227Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 13228Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 13229related code considerably. This will require changes/updates to all OS 13230interface layers (OSLs.) 13231 13232Implemented a new external interface, AcpiInstallExceptionHandler, to 13233allow 13234a system exception handler to be installed. This handler is invoked upon 13235any 13236run-time exception that occurs during control method execution. 13237 13238Added support for the DSDT in AcpiTbFindTable. This allows the 13239DataTableRegion() operator to access the local copy of the DSDT. 13240 13241Code and Data Size: Current and previous core subsystem library sizes are 13242shown below. These are the code and data sizes for the acpica.lib 13243produced 13244by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13245any ACPI driver or OSPM code. The debug version of the code includes the 13246debug output trace mechanism and has a much larger code and data size. 13247Note 13248that these values will vary depending on the efficiency of the compiler 13249and 13250the compiler options used during generation. 13251 13252 Previous Release: 13253 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13254 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13255 Current Release: 13256 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13257 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13258 13259 132602) iASL Compiler/Disassembler: 13261 13262Fixed a problem with constant folding and the LNot operator. LNot was 13263returning 1 in the TRUE case, not Ones as per the ACPI specification. 13264This 13265could result in the generation of an incorrect folded/reduced constant. 13266 13267End-Of-File is now allowed within a "//"-style comment. A parse error no 13268longer occurs if such a comment is at the very end of the input ASL 13269source 13270file. 13271 13272Implemented the "-r" option to override the Revision in the table header. 13273The initial use of this option will be to simplify the evaluation of the 13274AML 13275interpreter by allowing a single ASL source module to be compiled for 13276either 1327732-bit or 64-bit integers. 13278 13279 13280---------------------------------------- 1328127 August 2004. Summary of changes for version 20040827: 13282 132831) ACPI CA Core Subsystem: 13284 13285- Implemented support for implicit object conversion in the non-numeric 13286logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 13287and 13288LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 13289the second operand is implicitly converted on the fly to match the type 13290of 13291the first operand. For example: 13292 13293 LEqual (Source1, Source2) 13294 13295Source1 and Source2 must each evaluate to an integer, a string, or a 13296buffer. 13297The data type of Source1 dictates the required type of Source2. Source2 13298is 13299implicitly converted if necessary to match the type of Source1. 13300 13301- Updated and corrected the behavior of the string conversion support. 13302The 13303rules concerning conversion of buffers to strings (according to the ACPI 13304specification) are as follows: 13305 13306ToDecimalString - explicit byte-wise conversion of buffer to string of 13307decimal values (0-255) separated by commas. ToHexString - explicit byte- 13308wise 13309conversion of buffer to string of hex values (0-FF) separated by commas. 13310ToString - explicit byte-wise conversion of buffer to string. Byte-by- 13311byte 13312copy with no transform except NULL terminated. Any other implicit buffer- 13313to- 13314string conversion - byte-wise conversion of buffer to string of hex 13315values 13316(0-FF) separated by spaces. 13317 13318- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 13319 13320- Fixed a problem in AcpiNsGetPathnameLength where the returned length 13321was 13322one byte too short in the case of a node in the root scope. This could 13323cause a fault during debug output. 13324 13325- Code and Data Size: Current and previous core subsystem library sizes 13326are 13327shown below. These are the code and data sizes for the acpica.lib 13328produced 13329by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13330any ACPI driver or OSPM code. The debug version of the code includes the 13331debug output trace mechanism and has a much larger code and data size. 13332Note 13333that these values will vary depending on the efficiency of the compiler 13334and 13335the compiler options used during generation. 13336 13337 Previous Release: 13338 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 13339 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 13340 Current Release: 13341 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13342 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13343 13344 133452) iASL Compiler/Disassembler: 13346 13347- Fixed a Linux generation error. 13348 13349 13350---------------------------------------- 1335116 August 2004. Summary of changes for version 20040816: 13352 133531) ACPI CA Core Subsystem: 13354 13355Designed and implemented support within the AML interpreter for the so- 13356called "implicit return". This support returns the result of the last 13357ASL 13358operation within a control method, in the absence of an explicit Return() 13359operator. A few machines depend on this behavior, even though it is not 13360explicitly supported by the ASL language. It is optional support that 13361can 13362be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 13363 13364Removed support for the PCI_Config address space from the internal low 13365level 13366hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 13367support was not used internally, and would not work correctly anyway 13368because 13369the PCI bus number and segment number were not supported. There are 13370separate interfaces for PCI configuration space access because of the 13371unique 13372interface. 13373 13374Code and Data Size: Current and previous core subsystem library sizes are 13375shown below. These are the code and data sizes for the acpica.lib 13376produced 13377by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13378any ACPI driver or OSPM code. The debug version of the code includes the 13379debug output trace mechanism and has a much larger code and data size. 13380Note 13381that these values will vary depending on the efficiency of the compiler 13382and 13383the compiler options used during generation. 13384 13385 Previous Release: 13386 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13387 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 13388 Current Release: 13389 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 13390 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 13391 13392 133932) iASL Compiler/Disassembler: 13394 13395Fixed a problem where constants in ASL expressions at the root level (not 13396within a control method) could be inadvertently truncated during code 13397generation. This problem was introduced in the 20040715 release. 13398 13399 13400---------------------------------------- 1340115 July 2004. Summary of changes for version 20040715: 13402 134031) ACPI CA Core Subsystem: 13404 13405Restructured the internal HW GPE interfaces to pass/track the current 13406state 13407of interrupts (enabled/disabled) in order to avoid possible deadlock and 13408increase flexibility of the interfaces. 13409 13410Implemented a "lexicographical compare" for String and Buffer objects 13411within 13412the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 13413- 13414as per further clarification to the ACPI specification. Behavior is 13415similar 13416to C library "strcmp". 13417 13418Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 13419external function. In the 32-bit non-debug case, the stack use has been 13420reduced from 168 bytes to 32 bytes. 13421 13422Deployed a new run-time configuration flag, 13423AcpiGbl_EnableInterpreterSlack, 13424whose purpose is to allow the AML interpreter to forgive certain bad AML 13425constructs. Default setting is FALSE. 13426 13427Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 13428IO 13429support code. If enabled, it allows field access to go beyond the end of 13430a 13431region definition if the field is within the region length rounded up to 13432the 13433next access width boundary (a common coding error.) 13434 13435Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 13436ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 13437these 13438symbols are lowercased by the latest version of the AcpiSrc tool. 13439 13440The prototypes for the PCI interfaces in acpiosxf.h have been updated to 13441rename "Register" to simply "Reg" to prevent certain compilers from 13442complaining. 13443 13444Code and Data Size: Current and previous core subsystem library sizes are 13445shown below. These are the code and data sizes for the acpica.lib 13446produced 13447by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13448any ACPI driver or OSPM code. The debug version of the code includes the 13449debug output trace mechanism and has a much larger code and data size. 13450Note 13451that these values will vary depending on the efficiency of the compiler 13452and 13453the compiler options used during generation. 13454 13455 Previous Release: 13456 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13457 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 13458 Current Release: 13459 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13460 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 13461 13462 134632) iASL Compiler/Disassembler: 13464 13465Implemented full support for Package objects within the Case() operator. 13466Note: The Break() operator is currently not supported within Case blocks 13467(TermLists) as there is some question about backward compatibility with 13468ACPI 134691.0 interpreters. 13470 13471 13472Fixed a problem where complex terms were not supported properly within 13473the 13474Switch() operator. 13475 13476Eliminated extraneous warning for compiler-emitted reserved names of the 13477form "_T_x". (Used in Switch/Case operators.) 13478 13479Eliminated optimization messages for "_T_x" objects and small constants 13480within the DefinitionBlock operator. 13481 13482 13483---------------------------------------- 1348415 June 2004. Summary of changes for version 20040615: 13485 134861) ACPI CA Core Subsystem: 13487 13488Implemented support for Buffer and String objects (as per ACPI 2.0) for 13489the 13490following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 13491LLessEqual. 13492 13493All directory names in the entire source package are lower case, as they 13494were in earlier releases. 13495 13496Implemented "Disassemble" command in the AML debugger that will 13497disassemble 13498a single control method. 13499 13500Code and Data Size: Current and previous core subsystem library sizes are 13501shown below. These are the code and data sizes for the acpica.lib 13502produced 13503by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13504any ACPI driver or OSPM code. The debug version of the code includes the 13505debug output trace mechanism and has a much larger code and data size. 13506Note 13507that these values will vary depending on the efficiency of the compiler 13508and 13509the compiler options used during generation. 13510 13511 Previous Release: 13512 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 13513 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 13514 13515 Current Release: 13516 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13517 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 13518 13519 135202) iASL Compiler/Disassembler: 13521 13522Implemented support for Buffer and String objects (as per ACPI 2.0) for 13523the 13524following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 13525LLessEqual. 13526 13527All directory names in the entire source package are lower case, as they 13528were in earlier releases. 13529 13530Fixed a fault when using the -g or -d<nofilename> options if the FADT was 13531not found. 13532 13533Fixed an issue with the Windows version of the compiler where later 13534versions 13535of Windows place the FADT in the registry under the name "FADT" and not 13536"FACP" as earlier versions did. This applies when using the -g or - 13537d<nofilename> options. The compiler now looks for both strings as 13538necessary. 13539 13540Fixed a problem with compiler namepath optimization where a namepath 13541within 13542the Scope() operator could not be optimized if the namepath was a subpath 13543of 13544the current scope path. 13545 13546---------------------------------------- 1354727 May 2004. Summary of changes for version 20040527: 13548 135491) ACPI CA Core Subsystem: 13550 13551Completed a new design and implementation for EBDA (Extended BIOS Data 13552Area) 13553support in the RSDP scan code. The original code improperly scanned for 13554the 13555EBDA by simply scanning from memory location 0 to 0x400. The correct 13556method 13557is to first obtain the EBDA pointer from within the BIOS data area, then 13558scan 1K of memory starting at the EBDA pointer. There appear to be few 13559if 13560any machines that place the RSDP in the EBDA, however. 13561 13562Integrated a fix for a possible fault during evaluation of BufferField 13563arguments. Obsolete code that was causing the problem was removed. 13564 13565Found and fixed a problem in the Field Support Code where data could be 13566corrupted on a bit field read that starts on an aligned boundary but does 13567not end on an aligned boundary. Merged the read/write "datum length" 13568calculation code into a common procedure. 13569 13570Rolled in a couple of changes to the FreeBSD-specific header. 13571 13572 13573Code and Data Size: Current and previous core subsystem library sizes are 13574shown below. These are the code and data sizes for the acpica.lib 13575produced 13576by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13577any ACPI driver or OSPM code. The debug version of the code includes the 13578debug output trace mechanism and has a much larger code and data size. 13579Note 13580that these values will vary depending on the efficiency of the compiler 13581and 13582the compiler options used during generation. 13583 13584 Previous Release: 13585 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13586 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 13587 Current Release: 13588 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 13589 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 13590 13591 135922) iASL Compiler/Disassembler: 13593 13594Fixed a generation warning produced by some overly-verbose compilers for 13595a 1359664-bit constant. 13597 13598---------------------------------------- 1359914 May 2004. Summary of changes for version 20040514: 13600 136011) ACPI CA Core Subsystem: 13602 13603Fixed a problem where hardware GPE enable bits sometimes not set properly 13604during and after GPE method execution. Result of 04/27 changes. 13605 13606Removed extra "clear all GPEs" when sleeping/waking. 13607 13608Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 13609AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 13610to 13611the new AcpiEv* calls as appropriate. 13612 13613ACPI_OS_NAME was removed from the OS-specific headers. The default name 13614is 13615now "Microsoft Windows NT" for maximum compatibility. However this can 13616be 13617changed by modifying the acconfig.h file. 13618 13619Allow a single invocation of AcpiInstallNotifyHandler for a handler that 13620traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 13621 13622Run _INI methods on ThermalZone objects. This is against the ACPI 13623specification, but there is apparently ASL code in the field that has 13624these 13625_INI methods, and apparently "other" AML interpreters execute them. 13626 13627Performed a full 16/32/64 bit lint that resulted in some small changes. 13628 13629Added a sleep simulation command to the AML debugger to test sleep code. 13630 13631Code and Data Size: Current and previous core subsystem library sizes are 13632shown below. These are the code and data sizes for the acpica.lib 13633produced 13634by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13635any ACPI driver or OSPM code. The debug version of the code includes the 13636debug output trace mechanism and has a much larger code and data size. 13637Note 13638that these values will vary depending on the efficiency of the compiler 13639and 13640the compiler options used during generation. 13641 13642 Previous Release: 13643 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13644 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 13645 Current Release: 13646 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13647 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 13648 13649---------------------------------------- 1365027 April 2004. Summary of changes for version 20040427: 13651 136521) ACPI CA Core Subsystem: 13653 13654Completed a major overhaul of the GPE handling within ACPI CA. There are 13655now three types of GPEs: wake-only, runtime-only, and combination 13656wake/run. 13657The only GPEs allowed to be combination wake/run are for button-style 13658devices such as a control-method power button, control-method sleep 13659button, 13660or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 13661not 13662referenced by any _PRW methods are marked for "runtime" and hardware 13663enabled. Any GPE that is referenced by a _PRW method is marked for 13664"wake" 13665(and disabled at runtime). However, at sleep time, only those GPEs that 13666have been specifically enabled for wake via the AcpiEnableGpe interface 13667will 13668actually be hardware enabled. 13669 13670A new external interface has been added, AcpiSetGpeType(), that is meant 13671to 13672be used by device drivers to force a GPE to a particular type. It will 13673be 13674especially useful for the drivers for the button devices mentioned above. 13675 13676Completed restructuring of the ACPI CA initialization sequence so that 13677default operation region handlers are installed before GPEs are 13678initialized 13679and the _PRW methods are executed. This will prevent errors when the 13680_PRW 13681methods attempt to access system memory or I/O space. 13682 13683GPE enable/disable no longer reads the GPE enable register. We now keep 13684the 13685enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 13686thus no longer depend on the hardware to maintain these bits. 13687 13688Always clear the wake status and fixed/GPE status bits before sleep, even 13689for state S5. 13690 13691Improved the AML debugger output for displaying the GPE blocks and their 13692current status. 13693 13694Added new strings for the _OSI method, of the form "Windows 2001 SPx" 13695where 13696x = 0,1,2,3,4. 13697 13698Fixed a problem where the physical address was incorrectly calculated 13699when 13700the Load() operator was used to directly load from an Operation Region 13701(vs. 13702loading from a Field object.) Also added check for minimum table length 13703for 13704this case. 13705 13706Fix for multiple mutex acquisition. Restore original thread SyncLevel on 13707mutex release. 13708 13709Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 13710consistency with the other fields returned. 13711 13712Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 13713structure for each GPE in the system, so the size of this structure is 13714important. 13715 13716CPU stack requirement reduction: Cleaned up the method execution and 13717object 13718evaluation paths so that now a parameter structure is passed, instead of 13719copying the various method parameters over and over again. 13720 13721In evregion.c: Correctly exit and reenter the interpreter region if and 13722only if dispatching an operation region request to a user-installed 13723handler. 13724Do not exit/reenter when dispatching to a default handler (e.g., default 13725system memory or I/O handlers) 13726 13727 13728Notes for updating drivers for the new GPE support. The following 13729changes 13730must be made to ACPI-related device drivers that are attached to one or 13731more 13732GPEs: (This information will be added to the ACPI CA Programmer 13733Reference.) 13734 137351) AcpiInstallGpeHandler no longer automatically enables the GPE, you 13736must 13737explicitly call AcpiEnableGpe. 137382) There is a new interface called AcpiSetGpeType. This should be called 13739before enabling the GPE. Also, this interface will automatically disable 13740the GPE if it is currently enabled. 137413) AcpiEnableGpe no longer supports a GPE type flag. 13742 13743Specific drivers that must be changed: 137441) EC driver: 13745 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 13746AeGpeHandler, NULL); 13747 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 13748 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 13749 137502) Button Drivers (Power, Lid, Sleep): 13751Run _PRW method under parent device 13752If _PRW exists: /* This is a control-method button */ 13753 Extract GPE number and possibly GpeDevice 13754 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 13755 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 13756 13757For all other devices that have _PRWs, we automatically set the GPE type 13758to 13759ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 13760This 13761must be done on a selective basis, usually requiring some kind of user 13762app 13763to allow the user to pick the wake devices. 13764 13765 13766Code and Data Size: Current and previous core subsystem library sizes are 13767shown below. These are the code and data sizes for the acpica.lib 13768produced 13769by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13770any ACPI driver or OSPM code. The debug version of the code includes the 13771debug output trace mechanism and has a much larger code and data size. 13772Note 13773that these values will vary depending on the efficiency of the compiler 13774and 13775the compiler options used during generation. 13776 13777 Previous Release: 13778 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 13779 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 13780 Current Release: 13781 13782 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13783 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 13784 13785 13786 13787---------------------------------------- 1378802 April 2004. Summary of changes for version 20040402: 13789 137901) ACPI CA Core Subsystem: 13791 13792Fixed an interpreter problem where an indirect store through an ArgX 13793parameter was incorrectly applying the "implicit conversion rules" during 13794the store. From the ACPI specification: "If the target is a method local 13795or 13796argument (LocalX or ArgX), no conversion is performed and the result is 13797stored directly to the target". The new behavior is to disable implicit 13798conversion during ALL stores to an ArgX. 13799 13800Changed the behavior of the _PRW method scan to ignore any and all errors 13801returned by a given _PRW. This prevents the scan from aborting from the 13802failure of any single _PRW. 13803 13804Moved the runtime configuration parameters from the global init procedure 13805to 13806static variables in acglobal.h. This will allow the host to override the 13807default values easily. 13808 13809Code and Data Size: Current and previous core subsystem library sizes are 13810shown below. These are the code and data sizes for the acpica.lib 13811produced 13812by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13813any ACPI driver or OSPM code. The debug version of the code includes the 13814debug output trace mechanism and has a much larger code and data size. 13815Note 13816that these values will vary depending on the efficiency of the compiler 13817and 13818the compiler options used during generation. 13819 13820 Previous Release: 13821 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 13822 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 13823 Current Release: 13824 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 13825 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 13826 13827 138282) iASL Compiler/Disassembler: 13829 13830iASL now fully disassembles SSDTs. However, External() statements are 13831not 13832generated automatically for unresolved symbols at this time. This is a 13833planned feature for future implementation. 13834 13835Fixed a scoping problem in the disassembler that occurs when the type of 13836the 13837target of a Scope() operator is overridden. This problem caused an 13838incorrectly nested internal namespace to be constructed. 13839 13840Any warnings or errors that are emitted during disassembly are now 13841commented 13842out automatically so that the resulting file can be recompiled without 13843any 13844hand editing. 13845 13846---------------------------------------- 1384726 March 2004. Summary of changes for version 20040326: 13848 138491) ACPI CA Core Subsystem: 13850 13851Implemented support for "wake" GPEs via interaction between GPEs and the 13852_PRW methods. Every GPE that is pointed to by one or more _PRWs is 13853identified as a WAKE GPE and by default will no longer be enabled at 13854runtime. Previously, we were blindly enabling all GPEs with a 13855corresponding 13856_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 13857We 13858believe this has been the cause of thousands of "spurious" GPEs on some 13859systems. 13860 13861This new GPE behavior is can be reverted to the original behavior (enable 13862ALL GPEs at runtime) via a runtime flag. 13863 13864Fixed a problem where aliased control methods could not access objects 13865properly. The proper scope within the namespace was not initialized 13866(transferred to the target of the aliased method) before executing the 13867target method. 13868 13869Fixed a potential race condition on internal object deletion on the 13870return 13871object in AcpiEvaluateObject. 13872 13873Integrated a fix for resource descriptors where both _MEM and _MTP were 13874being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 13875wide, 0x0F instead of 0x03.) 13876 13877Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 13878preventing 13879a 13880fault in some cases. 13881 13882Updated Notify() values for debug statements in evmisc.c 13883 13884Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 13885 13886Code and Data Size: Current and previous core subsystem library sizes are 13887shown below. These are the code and data sizes for the acpica.lib 13888produced 13889by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13890any ACPI driver or OSPM code. The debug version of the code includes the 13891debug output trace mechanism and has a much larger code and data size. 13892Note 13893that these values will vary depending on the efficiency of the compiler 13894and 13895the compiler options used during generation. 13896 13897 Previous Release: 13898 13899 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 13900 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 13901 Current Release: 13902 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 13903 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 13904 13905---------------------------------------- 1390611 March 2004. Summary of changes for version 20040311: 13907 139081) ACPI CA Core Subsystem: 13909 13910Fixed a problem where errors occurring during the parse phase of control 13911method execution did not abort cleanly. For example, objects created and 13912installed in the namespace were not deleted. This caused all subsequent 13913invocations of the method to return the AE_ALREADY_EXISTS exception. 13914 13915Implemented a mechanism to force a control method to "Serialized" 13916execution 13917if the method attempts to create namespace objects. (The root of the 13918AE_ALREADY_EXISTS problem.) 13919 13920Implemented support for the predefined _OSI "internal" control method. 13921Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 13922and 13923"Windows 2001.1", and can be easily upgraded for new strings as 13924necessary. 13925This feature will allow "other" operating systems to execute the fully 13926tested, "Windows" code path through the ASL code 13927 13928Global Lock Support: Now allows multiple acquires and releases with any 13929internal thread. Removed concept of "owning thread" for this special 13930mutex. 13931 13932Fixed two functions that were inappropriately declaring large objects on 13933the 13934CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 13935during 13936method execution considerably. 13937 13938Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 13939S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 13940 13941Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 13942defined on the machine. 13943 13944Implemented two runtime options: One to force all control method 13945execution 13946to "Serialized" to mimic Windows behavior, another to disable _OSI 13947support 13948if it causes problems on a given machine. 13949 13950Code and Data Size: Current and previous core subsystem library sizes are 13951shown below. These are the code and data sizes for the acpica.lib 13952produced 13953by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13954any ACPI driver or OSPM code. The debug version of the code includes the 13955debug output trace mechanism and has a much larger code and data size. 13956Note 13957that these values will vary depending on the efficiency of the compiler 13958and 13959the compiler options used during generation. 13960 13961 Previous Release: 13962 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 13963 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 13964 Current Release: 13965 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 13966 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 13967 139682) iASL Compiler/Disassembler: 13969 13970Fixed an array size problem for FreeBSD that would cause the compiler to 13971fault. 13972 13973---------------------------------------- 1397420 February 2004. Summary of changes for version 20040220: 13975 13976 139771) ACPI CA Core Subsystem: 13978 13979Implemented execution of _SxD methods for Device objects in the 13980GetObjectInfo interface. 13981 13982Fixed calls to _SST method to pass the correct arguments. 13983 13984Added a call to _SST on wake to restore to "working" state. 13985 13986Check for End-Of-Buffer failure case in the WalkResources interface. 13987 13988Integrated fix for 64-bit alignment issue in acglobal.h by moving two 13989structures to the beginning of the file. 13990 13991After wake, clear GPE status register(s) before enabling GPEs. 13992 13993After wake, clear/enable power button. (Perhaps we should clear/enable 13994all 13995fixed events upon wake.) 13996 13997Fixed a couple of possible memory leaks in the Namespace manager. 13998 13999Integrated latest acnetbsd.h file. 14000 14001---------------------------------------- 1400211 February 2004. Summary of changes for version 20040211: 14003 14004 140051) ACPI CA Core Subsystem: 14006 14007Completed investigation and implementation of the call-by-reference 14008mechanism for control method arguments. 14009 14010Fixed a problem where a store of an object into an indexed package could 14011fail if the store occurs within a different method than the method that 14012created the package. 14013 14014Fixed a problem where the ToDecimal operator could return incorrect 14015results. 14016 14017Fixed a problem where the CopyObject operator could fail on some of the 14018more 14019obscure objects (e.g., Reference objects.) 14020 14021Improved the output of the Debug object to display buffer, package, and 14022index objects. 14023 14024Fixed a problem where constructs of the form "RefOf (ArgX)" did not 14025return 14026the expected result. 14027 14028Added permanent ACPI_REPORT_ERROR macros for all instances of the 14029ACPI_AML_INTERNAL exception. 14030 14031Integrated latest version of acfreebsd.h 14032 14033---------------------------------------- 1403416 January 2004. Summary of changes for version 20040116: 14035 14036The purpose of this release is primarily to update the copyright years in 14037each module, thus causing a huge number of diffs. There are a few small 14038functional changes, however. 14039 140401) ACPI CA Core Subsystem: 14041 14042Improved error messages when there is a problem finding one or more of 14043the 14044required base ACPI tables 14045 14046Reintroduced the definition of APIC_HEADER in actbl.h 14047 14048Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 14049 14050Removed extraneous reference to NewObj in dsmthdat.c 14051 140522) iASL compiler 14053 14054Fixed a problem introduced in December that disabled the correct 14055disassembly 14056of Resource Templates 14057 14058 14059---------------------------------------- 1406003 December 2003. Summary of changes for version 20031203: 14061 140621) ACPI CA Core Subsystem: 14063 14064Changed the initialization of Operation Regions during subsystem 14065init to perform two entire walks of the ACPI namespace; The first 14066to initialize the regions themselves, the second to execute the 14067_REG methods. This fixed some interdependencies across _REG 14068methods found on some machines. 14069 14070Fixed a problem where a Store(Local0, Local1) could simply update 14071the object reference count, and not create a new copy of the 14072object if the Local1 is uninitialized. 14073 14074Implemented support for the _SST reserved method during sleep 14075transitions. 14076 14077Implemented support to clear the SLP_TYP and SLP_EN bits when 14078waking up, this is apparently required by some machines. 14079 14080When sleeping, clear the wake status only if SleepState is not S5. 14081 14082Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 14083pointer arithmetic advanced a string pointer too far. 14084 14085Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 14086could be returned if the requested table has not been loaded. 14087 14088Within the support for IRQ resources, restructured the handling of 14089the active and edge/level bits. 14090 14091Fixed a few problems in AcpiPsxExecute() where memory could be 14092leaked under certain error conditions. 14093 14094Improved error messages for the cases where the ACPI mode could 14095not be entered. 14096 14097Code and Data Size: Current and previous core subsystem library 14098sizes are shown below. These are the code and data sizes for the 14099acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14100these values do not include any ACPI driver or OSPM code. The 14101debug version of the code includes the debug output trace 14102mechanism and has a much larger code and data size. Note that 14103these values will vary depending on the efficiency of the compiler 14104and the compiler options used during generation. 14105 14106 Previous Release (20031029): 14107 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 14108 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 14109 Current Release: 14110 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 14111 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 14112 141132) iASL Compiler/Disassembler: 14114 14115Implemented a fix for the iASL disassembler where a bad index was 14116generated. This was most noticeable on 64-bit platforms 14117 14118 14119---------------------------------------- 1412029 October 2003. Summary of changes for version 20031029: 14121 141221) ACPI CA Core Subsystem: 14123 14124 14125Fixed a problem where a level-triggered GPE with an associated 14126_Lxx control method was incorrectly cleared twice. 14127 14128Fixed a problem with the Field support code where an access can 14129occur beyond the end-of-region if the field is non-aligned but 14130extends to the very end of the parent region (resulted in an 14131AE_AML_REGION_LIMIT exception.) 14132 14133Fixed a problem with ACPI Fixed Events where an RT Clock handler 14134would not get invoked on an RTC event. The RTC event bitmasks for 14135the PM1 registers were not being initialized properly. 14136 14137Implemented support for executing _STA and _INI methods for 14138Processor objects. Although this is currently not part of the 14139ACPI specification, there is existing ASL code that depends on the 14140init-time execution of these methods. 14141 14142Implemented and deployed a GetDescriptorName function to decode 14143the various types of internal descriptors. Guards against null 14144descriptors during debug output also. 14145 14146Implemented and deployed a GetNodeName function to extract the 4- 14147character namespace node name. This function simplifies the debug 14148and error output, as well as guarding against null pointers during 14149output. 14150 14151Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 14152simplify the debug and error output of 64-bit integers. This 14153macro replaces the HIDWORD and LODWORD macros for dumping these 14154integers. 14155 14156Updated the implementation of the Stall() operator to only call 14157AcpiOsStall(), and also return an error if the operand is larger 14158than 255. This preserves the required behavior of not 14159relinquishing the processor, as would happen if AcpiOsSleep() was 14160called for "long stalls". 14161 14162Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 14163initialized are now treated as NOOPs. 14164 14165Cleaned up a handful of warnings during 64-bit generation. 14166 14167Fixed a reported error where and incorrect GPE number was passed 14168to the GPE dispatch handler. This value is only used for error 14169output, however. Used this opportunity to clean up and streamline 14170the GPE dispatch code. 14171 14172Code and Data Size: Current and previous core subsystem library 14173sizes are shown below. These are the code and data sizes for the 14174acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14175these values do not include any ACPI driver or OSPM code. The 14176 14177debug version of the code includes the debug output trace 14178mechanism and has a much larger code and data size. Note that 14179these values will vary depending on the efficiency of the compiler 14180and the compiler options used during generation. 14181 14182 Previous Release (20031002): 14183 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14184 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14185 Current Release: 14186 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 14187 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 14188 14189 141902) iASL Compiler/Disassembler: 14191 14192Updated the iASL compiler to return an error if the operand to the 14193Stall() operator is larger than 255. 14194 14195 14196---------------------------------------- 1419702 October 2003. Summary of changes for version 20031002: 14198 14199 142001) ACPI CA Core Subsystem: 14201 14202Fixed a problem with Index Fields where the index was not 14203incremented for fields that require multiple writes to the 14204index/data registers (Fields that are wider than the data 14205register.) 14206 14207Fixed a problem with all Field objects where a write could go 14208beyond the end-of-field if the field was larger than the access 14209granularity and therefore required multiple writes to complete the 14210request. An extra write beyond the end of the field could happen 14211inadvertently. 14212 14213Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 14214would incorrectly be returned if the width of the Data Register 14215was larger than the specified field access width. 14216 14217Completed fixes for LoadTable() and Unload() and verified their 14218operation. Implemented full support for the "DdbHandle" object 14219throughout the ACPI CA subsystem. 14220 14221Implemented full support for the MADT and ECDT tables in the ACPI 14222CA header files. Even though these tables are not directly 14223consumed by ACPI CA, the header definitions are useful for ACPI 14224device drivers. 14225 14226Integrated resource descriptor fixes posted to the Linux ACPI 14227list. This included checks for minimum descriptor length, and 14228support for trailing NULL strings within descriptors that have 14229optional string elements. 14230 14231Code and Data Size: Current and previous core subsystem library 14232sizes are shown below. These are the code and data sizes for the 14233acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14234these values do not include any ACPI driver or OSPM code. The 14235debug version of the code includes the debug output trace 14236mechanism and has a much larger code and data size. Note that 14237these values will vary depending on the efficiency of the compiler 14238and the compiler options used during generation. 14239 14240 Previous Release (20030918): 14241 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14242 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14243 Current Release: 14244 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14245 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14246 14247 142482) iASL Compiler: 14249 14250Implemented detection of non-ASCII characters within the input 14251source ASL file. This catches attempts to compile binary (AML) 14252files early in the compile, with an informative error message. 14253 14254Fixed a problem where the disassembler would fault if the output 14255filename could not be generated or if the output file could not be 14256opened. 14257 14258---------------------------------------- 1425918 September 2003. Summary of changes for version 20030918: 14260 14261 142621) ACPI CA Core Subsystem: 14263 14264Found and fixed a longstanding problem with the late execution of 14265the various deferred AML opcodes (such as Operation Regions, 14266Buffer Fields, Buffers, and Packages). If the name string 14267specified for the name of the new object placed the object in a 14268scope other than the current scope, the initialization/execution 14269of the opcode failed. The solution to this problem was to 14270implement a mechanism where the late execution of such opcodes 14271does not attempt to lookup/create the name a second time in an 14272incorrect scope. This fixes the "region size computed 14273incorrectly" problem. 14274 14275Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 14276Global Lock AE_BAD_PARAMETER error. 14277 14278Fixed several 64-bit issues with prototypes, casting and data 14279types. 14280 14281Removed duplicate prototype from acdisasm.h 14282 14283Fixed an issue involving EC Operation Region Detach (Shaohua Li) 14284 14285Code and Data Size: Current and previous core subsystem library 14286sizes are shown below. These are the code and data sizes for the 14287acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14288these values do not include any ACPI driver or OSPM code. The 14289debug version of the code includes the debug output trace 14290mechanism and has a much larger code and data size. Note that 14291these values will vary depending on the efficiency of the compiler 14292and the compiler options used during generation. 14293 14294 Previous Release: 14295 14296 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 14297 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 14298 Current Release: 14299 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14300 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14301 14302 143032) Linux: 14304 14305Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 14306correct sleep time in seconds. 14307 14308---------------------------------------- 1430914 July 2003. Summary of changes for version 20030619: 14310 143111) ACPI CA Core Subsystem: 14312 14313Parse SSDTs in order discovered, as opposed to reverse order 14314(Hrvoje Habjanic) 14315 14316Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 14317Klausner, 14318 Nate Lawson) 14319 14320 143212) Linux: 14322 14323Dynamically allocate SDT list (suggested by Andi Kleen) 14324 14325proc function return value cleanups (Andi Kleen) 14326 14327Correctly handle NMI watchdog during long stalls (Andrew Morton) 14328 14329Make it so acpismp=force works (reported by Andrew Morton) 14330 14331 14332---------------------------------------- 1433319 June 2003. Summary of changes for version 20030619: 14334 143351) ACPI CA Core Subsystem: 14336 14337Fix To/FromBCD, eliminating the need for an arch-specific #define. 14338 14339Do not acquire a semaphore in the S5 shutdown path. 14340 14341Fix ex_digits_needed for 0. (Takayoshi Kochi) 14342 14343Fix sleep/stall code reversal. (Andi Kleen) 14344 14345Revert a change having to do with control method calling 14346semantics. 14347 143482) Linux: 14349 14350acpiphp update (Takayoshi Kochi) 14351 14352Export acpi_disabled for sonypi (Stelian Pop) 14353 14354Mention acpismp=force in config help 14355 14356Re-add acpitable.c and acpismp=force. This improves backwards 14357 14358compatibility and also cleans up the code to a significant degree. 14359 14360Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 14361 14362---------------------------------------- 1436322 May 2003. Summary of changes for version 20030522: 14364 143651) ACPI CA Core Subsystem: 14366 14367Found and fixed a reported problem where an AE_NOT_FOUND error 14368occurred occasionally during _BST evaluation. This turned out to 14369be an Owner ID allocation issue where a called method did not get 14370a new ID assigned to it. Eventually, (after 64k calls), the Owner 14371ID UINT16 would wraparound so that the ID would be the same as the 14372caller's and the called method would delete the caller's 14373namespace. 14374 14375Implemented extended error reporting for control methods that are 14376aborted due to a run-time exception. Output includes the exact 14377AML instruction that caused the method abort, a dump of the method 14378locals and arguments at the time of the abort, and a trace of all 14379nested control method calls. 14380 14381Modified the interpreter to allow the creation of buffers of zero 14382length from the AML code. Implemented new code to ensure that no 14383attempt is made to actually allocate a memory buffer (of length 14384zero) - instead, a simple buffer object with a NULL buffer pointer 14385and length zero is created. A warning is no longer issued when 14386the AML attempts to create a zero-length buffer. 14387 14388Implemented a workaround for the "leading asterisk issue" in 14389_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 14390asterisk is automatically removed if present in any HID, UID, or 14391CID strings. The iASL compiler will still flag this asterisk as 14392an error, however. 14393 14394Implemented full support for _CID methods that return a package of 14395multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 14396now additionally returns a device _CID list if present. This 14397required a change to the external interface in order to pass an 14398ACPI_BUFFER object as a parameter since the _CID list is of 14399variable length. 14400 14401Fixed a problem with the new AE_SAME_HANDLER exception where 14402handler initialization code did not know about this exception. 14403 14404Code and Data Size: Current and previous core subsystem library 14405sizes are shown below. These are the code and data sizes for the 14406acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14407these values do not include any ACPI driver or OSPM code. The 14408debug version of the code includes the debug output trace 14409mechanism and has a much larger code and data size. Note that 14410these values will vary depending on the efficiency of the compiler 14411and the compiler options used during generation. 14412 14413 Previous Release (20030509): 14414 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 14415 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 14416 Current Release: 14417 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 14418 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 14419 14420 144212) Linux: 14422 14423Fixed a bug in which we would reinitialize the ACPI interrupt 14424after it was already working, thus disabling all ACPI and the IRQs 14425for any other device sharing the interrupt. (Thanks to Stian 14426Jordet) 14427 14428Toshiba driver update (John Belmonte) 14429 14430Return only 0 or 1 for our interrupt handler status (Andrew 14431Morton) 14432 14433 144343) iASL Compiler: 14435 14436Fixed a reported problem where multiple (nested) ElseIf() 14437statements were not handled correctly by the compiler, resulting 14438in incorrect warnings and incorrect AML code. This was a problem 14439in both the ASL parser and the code generator. 14440 14441 144424) Documentation: 14443 14444Added changes to existing interfaces, new exception codes, and new 14445text concerning reference count object management versus garbage 14446collection. 14447 14448---------------------------------------- 1444909 May 2003. Summary of changes for version 20030509. 14450 14451 144521) ACPI CA Core Subsystem: 14453 14454Changed the subsystem initialization sequence to hold off 14455installation of address space handlers until the hardware has been 14456initialized and the system has entered ACPI mode. This is because 14457the installation of space handlers can cause _REG methods to be 14458run. Previously, the _REG methods could potentially be run before 14459ACPI mode was enabled. 14460 14461Fixed some memory leak issues related to address space handler and 14462notify handler installation. There were some problems with the 14463reference count mechanism caused by the fact that the handler 14464objects are shared across several namespace objects. 14465 14466Fixed a reported problem where reference counts within the 14467namespace were not properly updated when named objects created by 14468method execution were deleted. 14469 14470Fixed a reported problem where multiple SSDTs caused a deletion 14471issue during subsystem termination. Restructured the table data 14472structures to simplify the linked lists and the related code. 14473 14474Fixed a problem where the table ID associated with secondary 14475tables (SSDTs) was not being propagated into the namespace objects 14476created by those tables. This would only present a problem for 14477tables that are unloaded at run-time, however. 14478 14479Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 14480type as the length parameter (instead of UINT32). 14481 14482Solved a long-standing problem where an ALREADY_EXISTS error 14483appears on various systems. This problem could happen when there 14484are multiple PCI_Config operation regions under a single PCI root 14485bus. This doesn't happen very frequently, but there are some 14486systems that do this in the ASL. 14487 14488Fixed a reported problem where the internal DeleteNode function 14489was incorrectly handling the case where a namespace node was the 14490first in the parent's child list, and had additional peers (not 14491the only child, but first in the list of children.) 14492 14493Code and Data Size: Current core subsystem library sizes are shown 14494below. These are the code and data sizes for the acpica.lib 14495produced by the Microsoft Visual C++ 6.0 compiler, and these 14496values do not include any ACPI driver or OSPM code. The debug 14497version of the code includes the debug output trace mechanism and 14498has a much larger code and data size. Note that these values will 14499vary depending on the efficiency of the compiler and the compiler 14500options used during generation. 14501 14502 Previous Release 14503 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 14504 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 14505 Current Release: 14506 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 14507 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 14508 14509 145102) Linux: 14511 14512Allow ":" in OS override string (Ducrot Bruno) 14513 14514Kobject fix (Greg KH) 14515 14516 145173 iASL Compiler/Disassembler: 14518 14519Fixed a problem in the generation of the C source code files (AML 14520is emitted in C source statements for BIOS inclusion) where the 14521Ascii dump that appears within a C comment at the end of each line 14522could cause a compile time error if the AML sequence happens to 14523have an open comment or close comment sequence embedded. 14524 14525 14526---------------------------------------- 1452724 April 2003. Summary of changes for version 20030424. 14528 14529 145301) ACPI CA Core Subsystem: 14531 14532Support for big-endian systems has been implemented. Most of the 14533support has been invisibly added behind big-endian versions of the 14534ACPI_MOVE_* macros. 14535 14536Fixed a problem in AcpiHwDisableGpeBlock() and 14537AcpiHwClearGpeBlock() where an incorrect offset was passed to the 14538low level hardware write routine. The offset parameter was 14539actually eliminated from the low level read/write routines because 14540they had become obsolete. 14541 14542Fixed a problem where a handler object was deleted twice during 14543the removal of a fixed event handler. 14544 14545 145462) Linux: 14547 14548A fix for SMP systems with link devices was contributed by 14549 14550Compaq's Dan Zink. 14551 14552(2.5) Return whether we handled the interrupt in our IRQ handler. 14553(Linux ISRs no longer return void, so we can propagate the handler 14554return value from the ACPI CA core back to the OS.) 14555 14556 14557 145583) Documentation: 14559 14560The ACPI CA Programmer Reference has been updated to reflect new 14561interfaces and changes to existing interfaces. 14562 14563---------------------------------------- 1456428 March 2003. Summary of changes for version 20030328. 14565 145661) ACPI CA Core Subsystem: 14567 14568The GPE Block Device support has been completed. New interfaces 14569are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 14570interfaces (enable, disable, clear, getstatus) have been split 14571into separate interfaces for Fixed Events and General Purpose 14572Events (GPEs) in order to support GPE Block Devices properly. 14573 14574Fixed a problem where the error message "Failed to acquire 14575semaphore" would appear during operations on the embedded 14576controller (EC). 14577 14578Code and Data Size: Current core subsystem library sizes are shown 14579below. These are the code and data sizes for the acpica.lib 14580produced by the Microsoft Visual C++ 6.0 compiler, and these 14581values do not include any ACPI driver or OSPM code. The debug 14582version of the code includes the debug output trace mechanism and 14583has a much larger code and data size. Note that these values will 14584vary depending on the efficiency of the compiler and the compiler 14585options used during generation. 14586 14587 Previous Release 14588 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 14589 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 14590 Current Release: 14591 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 14592 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 14593 14594 14595---------------------------------------- 1459628 February 2003. Summary of changes for version 20030228. 14597 14598 145991) ACPI CA Core Subsystem: 14600 14601The GPE handling and dispatch code has been completely overhauled 14602in preparation for support of GPE Block Devices (ID ACPI0006). 14603This affects internal data structures and code only; there should 14604be no differences visible externally. One new file has been 14605added, evgpeblk.c 14606 14607The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 14608fields that are used to determine the GPE block lengths. The 14609REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 14610structures are ignored. This is per the ACPI specification but it 14611isn't very clear. The full 256 Block 0/1 GPEs are now supported 14612(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 14613 14614In the SCI interrupt handler, removed the read of the PM1_CONTROL 14615register to look at the SCI_EN bit. On some machines, this read 14616causes an SMI event and greatly slows down SCI events. (This may 14617in fact be the cause of slow battery status response on some 14618systems.) 14619 14620Fixed a problem where a store of a NULL string to a package object 14621could cause the premature deletion of the object. This was seen 14622during execution of the battery _BIF method on some systems, 14623resulting in no battery data being returned. 14624 14625Added AcpiWalkResources interface to simplify parsing of resource 14626lists. 14627 14628Code and Data Size: Current core subsystem library sizes are shown 14629below. These are the code and data sizes for the acpica.lib 14630produced by the Microsoft Visual C++ 6.0 compiler, and these 14631values do not include any ACPI driver or OSPM code. The debug 14632version of the code includes the debug output trace mechanism and 14633has a much larger code and data size. Note that these values will 14634vary depending on the efficiency of the compiler and the compiler 14635options used during generation. 14636 14637 Previous Release 14638 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14639 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14640 Current Release: 14641 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 14642 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 14643 14644 146452) Linux 14646 14647S3 fixes (Ole Rohne) 14648 14649Update ACPI PHP driver with to use new acpi_walk_resource API 14650(Bjorn Helgaas) 14651 14652Add S4BIOS support (Pavel Machek) 14653 14654Map in entire table before performing checksum (John Stultz) 14655 14656Expand the mem= cmdline to allow the specification of reserved and 14657ACPI DATA blocks (Pavel Machek) 14658 14659Never use ACPI on VISWS 14660 14661Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 14662 14663Revert a change that allowed P_BLK lengths to be 4 or 5. This is 14664causing us to think that some systems support C2 when they really 14665don't. 14666 14667Do not count processor objects for non-present CPUs (Thanks to 14668Dominik Brodowski) 14669 14670 146713) iASL Compiler: 14672 14673Fixed a problem where ASL include files could not be found and 14674opened. 14675 14676Added support for the _PDC reserved name. 14677 14678 14679---------------------------------------- 1468022 January 2003. Summary of changes for version 20030122. 14681 14682 146831) ACPI CA Core Subsystem: 14684 14685Added a check for constructs of the form: Store (Local0, Local0) 14686where Local0 is not initialized. Apparently, some BIOS 14687programmers believe that this is a NOOP. Since this store doesn't 14688do anything anyway, the new prototype behavior will ignore this 14689error. This is a case where we can relax the strict checking in 14690the interpreter in the name of compatibility. 14691 14692 146932) Linux 14694 14695The AcpiSrc Source Conversion Utility has been released with the 14696Linux package for the first time. This is the utility that is 14697used to convert the ACPI CA base source code to the Linux version. 14698 14699(Both) Handle P_BLK lengths shorter than 6 more gracefully 14700 14701(Both) Move more headers to include/acpi, and delete an unused 14702header. 14703 14704(Both) Move drivers/acpi/include directory to include/acpi 14705 14706(Both) Boot functions don't use cmdline, so don't pass it around 14707 14708(Both) Remove include of unused header (Adrian Bunk) 14709 14710(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 14711the 14712former now also includes the latter, acpiphp.h only needs the one, 14713now. 14714 14715(2.5) Make it possible to select method of bios restoring after S3 14716resume. [=> no more ugly ifdefs] (Pavel Machek) 14717 14718(2.5) Make proc write interfaces work (Pavel Machek) 14719 14720(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 14721 14722(2.5) Break out ACPI Perf code into its own module, under cpufreq 14723(Dominik Brodowski) 14724 14725(2.4) S4BIOS support (Ducrot Bruno) 14726 14727(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 14728Visinoni) 14729 14730 147313) iASL Compiler: 14732 14733Added support to disassemble SSDT and PSDTs. 14734 14735Implemented support to obtain SSDTs from the Windows registry if 14736available. 14737 14738 14739---------------------------------------- 1474009 January 2003. Summary of changes for version 20030109. 14741 147421) ACPI CA Core Subsystem: 14743 14744Changed the behavior of the internal Buffer-to-String conversion 14745function. The current ACPI specification states that the contents 14746of the buffer are "converted to a string of two-character 14747hexadecimal numbers, each separated by a space". Unfortunately, 14748this definition is not backwards compatible with existing ACPI 1.0 14749implementations (although the behavior was not defined in the ACPI 147501.0 specification). The new behavior simply copies data from the 14751buffer to the string until a null character is found or the end of 14752the buffer is reached. The new String object is always null 14753terminated. This problem was seen during the generation of _BIF 14754battery data where incorrect strings were returned for battery 14755type, etc. This will also require an errata to the ACPI 14756specification. 14757 14758Renamed all instances of NATIVE_UINT and NATIVE_INT to 14759ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 14760 14761Copyright in all module headers (both Linux and non-Linux) has be 14762updated to 2003. 14763 14764Code and Data Size: Current core subsystem library sizes are shown 14765below. These are the code and data sizes for the acpica.lib 14766produced by the Microsoft Visual C++ 6.0 compiler, and these 14767values do not include any ACPI driver or OSPM code. The debug 14768version of the code includes the debug output trace mechanism and 14769has a much larger code and data size. Note that these values will 14770vary depending on the efficiency of the compiler and the compiler 14771options used during generation. 14772 14773 Previous Release 14774 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14775 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14776 Current Release: 14777 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14778 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14779 14780 147812) Linux 14782 14783Fixed an oops on module insertion/removal (Matthew Tippett) 14784 14785(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 14786 14787(2.5) Replace pr_debug (Randy Dunlap) 14788 14789(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 14790 14791(Both) Eliminate spawning of thread from timer callback, in favor 14792of schedule_work() 14793 14794(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 14795 14796(Both) Added define for Fixed Function HW region (Matthew Wilcox) 14797 14798(Both) Add missing statics to button.c (Pavel Machek) 14799 14800Several changes have been made to the source code translation 14801utility that generates the Linux Code in order to make the code 14802more "Linux-like": 14803 14804All typedefs on structs and unions have been removed in keeping 14805with the Linux coding style. 14806 14807Removed the non-Linux SourceSafe module revision number from each 14808module header. 14809 14810Completed major overhaul of symbols to be lowercased for linux. 14811Doubled the number of symbols that are lowercased. 14812 14813Fixed a problem where identifiers within procedure headers and 14814within quotes were not fully lower cased (they were left with a 14815starting capital.) 14816 14817Some C macros whose only purpose is to allow the generation of 16- 14818bit code are now completely removed in the Linux code, increasing 14819readability and maintainability. 14820 14821---------------------------------------- 14822 1482312 December 2002. Summary of changes for version 20021212. 14824 14825 148261) ACPI CA Core Subsystem: 14827 14828Fixed a problem where the creation of a zero-length AML Buffer 14829would cause a fault. 14830 14831Fixed a problem where a Buffer object that pointed to a static AML 14832buffer (in an ACPI table) could inadvertently be deleted, causing 14833memory corruption. 14834 14835Fixed a problem where a user buffer (passed in to the external 14836ACPI CA interfaces) could be overwritten if the buffer was too 14837small to complete the operation, causing memory corruption. 14838 14839Fixed a problem in the Buffer-to-String conversion code where a 14840string of length one was always returned, regardless of the size 14841of the input Buffer object. 14842 14843Removed the NATIVE_CHAR data type across the entire source due to 14844lack of need and lack of consistent use. 14845 14846Code and Data Size: Current core subsystem library sizes are shown 14847below. These are the code and data sizes for the acpica.lib 14848produced by the Microsoft Visual C++ 6.0 compiler, and these 14849values do not include any ACPI driver or OSPM code. The debug 14850version of the code includes the debug output trace mechanism and 14851has a much larger code and data size. Note that these values will 14852vary depending on the efficiency of the compiler and the compiler 14853options used during generation. 14854 14855 Previous Release 14856 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 14857 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 14858 Current Release: 14859 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14860 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14861 14862 14863---------------------------------------- 1486405 December 2002. Summary of changes for version 20021205. 14865 148661) ACPI CA Core Subsystem: 14867 14868Fixed a problem where a store to a String or Buffer object could 14869cause corruption of the DSDT if the object type being stored was 14870the same as the target object type and the length of the object 14871being stored was equal to or smaller than the original (existing) 14872target object. This was seen to cause corruption of battery _BIF 14873buffers if the _BIF method modified the buffer on the fly. 14874 14875Fixed a problem where an internal error was generated if a control 14876method invocation was used in an OperationRegion, Buffer, or 14877Package declaration. This was caused by the deferred parsing of 14878the control method and thus the deferred creation of the internal 14879method object. The solution to this problem was to create the 14880internal method object at the moment the method is encountered in 14881the first pass - so that subsequent references to the method will 14882able to obtain the required parameter count and thus properly 14883parse the method invocation. This problem presented itself as an 14884AE_AML_INTERNAL during the pass 1 parse phase during table load. 14885 14886Fixed a problem where the internal String object copy routine did 14887not always allocate sufficient memory for the target String object 14888and caused memory corruption. This problem was seen to cause 14889"Allocation already present in list!" errors as memory allocation 14890became corrupted. 14891 14892Implemented a new function for the evaluation of namespace objects 14893that allows the specification of the allowable return object 14894types. This simplifies a lot of code that checks for a return 14895object of one or more specific objects returned from the 14896evaluation (such as _STA, etc.) This may become and external 14897function if it would be useful to ACPI-related drivers. 14898 14899Completed another round of prefixing #defines with "ACPI_" for 14900clarity. 14901 14902Completed additional code restructuring to allow more modular 14903linking for iASL compiler and AcpiExec. Several files were split 14904creating new files. New files: nsparse.c dsinit.c evgpe.c 14905 14906Implemented an abort mechanism to terminate an executing control 14907method via the AML debugger. This feature is useful for debugging 14908control methods that depend (wait) for specific hardware 14909responses. 14910 14911Code and Data Size: Current core subsystem library sizes are shown 14912below. These are the code and data sizes for the acpica.lib 14913produced by the Microsoft Visual C++ 6.0 compiler, and these 14914values do not include any ACPI driver or OSPM code. The debug 14915version of the code includes the debug output trace mechanism and 14916has a much larger code and data size. Note that these values will 14917vary depending on the efficiency of the compiler and the compiler 14918options used during generation. 14919 14920 Previous Release 14921 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14922 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 14923 Current Release: 14924 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 14925 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 14926 14927 149282) iASL Compiler/Disassembler 14929 14930Fixed a compiler code generation problem for "Interrupt" Resource 14931Descriptors. If specified in the ASL, the optional "Resource 14932Source Index" and "Resource Source" fields were not inserted into 14933the correct location within the AML resource descriptor, creating 14934an invalid descriptor. 14935 14936Fixed a disassembler problem for "Interrupt" resource descriptors. 14937The optional "Resource Source Index" and "Resource Source" fields 14938were ignored. 14939 14940 14941---------------------------------------- 1494222 November 2002. Summary of changes for version 20021122. 14943 14944 149451) ACPI CA Core Subsystem: 14946 14947Fixed a reported problem where an object stored to a Method Local 14948or Arg was not copied to a new object during the store - the 14949object pointer was simply copied to the Local/Arg. This caused 14950all subsequent operations on the Local/Arg to also affect the 14951original source of the store operation. 14952 14953Fixed a problem where a store operation to a Method Local or Arg 14954was not completed properly if the Local/Arg contained a reference 14955(from RefOf) to a named field. The general-purpose store-to- 14956namespace-node code is now used so that this case is handled 14957automatically. 14958 14959Fixed a problem where the internal object copy routine would cause 14960a protection fault if the object being copied was a Package and 14961contained either 1) a NULL package element or 2) a nested sub- 14962package. 14963 14964Fixed a problem with the GPE initialization that resulted from an 14965ambiguity in the ACPI specification. One section of the 14966specification states that both the address and length of the GPE 14967block must be zero if the block is not supported. Another section 14968implies that only the address need be zero if the block is not 14969supported. The code has been changed so that both the address and 14970the length must be non-zero to indicate a valid GPE block (i.e., 14971if either the address or the length is zero, the GPE block is 14972invalid.) 14973 14974Code and Data Size: Current core subsystem library sizes are shown 14975below. These are the code and data sizes for the acpica.lib 14976produced by the Microsoft Visual C++ 6.0 compiler, and these 14977values do not include any ACPI driver or OSPM code. The debug 14978version of the code includes the debug output trace mechanism and 14979has a much larger code and data size. Note that these values will 14980vary depending on the efficiency of the compiler and the compiler 14981options used during generation. 14982 14983 Previous Release 14984 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 14985 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 14986 Current Release: 14987 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14988 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 14989 14990 149912) Linux 14992 14993Cleaned up EC driver. Exported an external EC read/write 14994interface. By going through this, other drivers (most notably 14995sonypi) will be able to serialize access to the EC. 14996 14997 149983) iASL Compiler/Disassembler 14999 15000Implemented support to optionally generate include files for both 15001ASM and C (the -i switch). This simplifies BIOS development by 15002automatically creating include files that contain external 15003declarations for the symbols that are created within the 15004 15005(optionally generated) ASM and C AML source files. 15006 15007 15008---------------------------------------- 1500915 November 2002. Summary of changes for version 20021115. 15010 150111) ACPI CA Core Subsystem: 15012 15013Fixed a memory leak problem where an error during resolution of 15014 15015method arguments during a method invocation from another method 15016failed to cleanup properly by deleting all successfully resolved 15017argument objects. 15018 15019Fixed a problem where the target of the Index() operator was not 15020correctly constructed if the source object was a package. This 15021problem has not been detected because the use of a target operand 15022with Index() is very rare. 15023 15024Fixed a problem with the Index() operator where an attempt was 15025made to delete the operand objects twice. 15026 15027Fixed a problem where an attempt was made to delete an operand 15028twice during execution of the CondRefOf() operator if the target 15029did not exist. 15030 15031Implemented the first of perhaps several internal create object 15032functions that create and initialize a specific object type. This 15033consolidates duplicated code wherever the object is created, thus 15034shrinking the size of the subsystem. 15035 15036Implemented improved debug/error messages for errors that occur 15037during nested method invocations. All executing method pathnames 15038are displayed (with the error) as the call stack is unwound - thus 15039simplifying debug. 15040 15041Fixed a problem introduced in the 10/02 release that caused 15042premature deletion of a buffer object if a buffer was used as an 15043ASL operand where an integer operand is required (Thus causing an 15044implicit object conversion from Buffer to Integer.) The change in 15045the 10/02 release was attempting to fix a memory leak (albeit 15046incorrectly.) 15047 15048Code and Data Size: Current core subsystem library sizes are shown 15049below. These are the code and data sizes for the acpica.lib 15050produced by the Microsoft Visual C++ 6.0 compiler, and these 15051values do not include any ACPI driver or OSPM code. The debug 15052version of the code includes the debug output trace mechanism and 15053has a much larger code and data size. Note that these values will 15054vary depending on the efficiency of the compiler and the compiler 15055options used during generation. 15056 15057 Previous Release 15058 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 15059 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 15060 Current Release: 15061 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 15062 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 15063 15064 150652) Linux 15066 15067Changed the implementation of the ACPI semaphores to use down() 15068instead of down_interruptable(). It is important that the 15069execution of ACPI control methods not be interrupted by signals. 15070Methods must run to completion, or the system may be left in an 15071unknown/unstable state. 15072 15073Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 15074(Shawn Starr) 15075 15076 150773) iASL Compiler/Disassembler 15078 15079 15080Changed the default location of output files. All output files 15081are now placed in the current directory by default instead of in 15082the directory of the source file. This change may affect some 15083existing makefiles, but it brings the behavior of the compiler in 15084line with other similar tools. The location of the output files 15085can be overridden with the -p command line switch. 15086 15087 15088---------------------------------------- 1508911 November 2002. Summary of changes for version 20021111. 15090 15091 150920) ACPI Specification 2.0B is released and is now available at: 15093http://www.acpi.info/index.html 15094 15095 150961) ACPI CA Core Subsystem: 15097 15098Implemented support for the ACPI 2.0 SMBus Operation Regions. 15099This includes the early detection and handoff of the request to 15100the SMBus region handler (avoiding all of the complex field 15101support code), and support for the bidirectional return packet 15102from an SMBus write operation. This paves the way for the 15103development of SMBus drivers in each host operating system. 15104 15105Fixed a problem where the semaphore WAIT_FOREVER constant was 15106defined as 32 bits, but must be 16 bits according to the ACPI 15107specification. This had the side effect of causing ASL 15108Mutex/Event timeouts even though the ASL code requested a wait 15109forever. Changed all internal references to the ACPI timeout 15110parameter to 16 bits to prevent future problems. Changed the name 15111of WAIT_FOREVER to ACPI_WAIT_FOREVER. 15112 15113Code and Data Size: Current core subsystem library sizes are shown 15114below. These are the code and data sizes for the acpica.lib 15115produced by the Microsoft Visual C++ 6.0 compiler, and these 15116values do not include any ACPI driver or OSPM code. The debug 15117version of the code includes the debug output trace mechanism and 15118has a much larger code and data size. Note that these values will 15119vary depending on the efficiency of the compiler and the compiler 15120options used during generation. 15121 15122 Previous Release 15123 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15124 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 15125 Current Release: 15126 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 15127 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 15128 15129 151302) Linux 15131 15132Module loading/unloading fixes (John Cagle) 15133 15134 151353) iASL Compiler/Disassembler 15136 15137Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 15138 15139Implemented support for the disassembly of all SMBus protocol 15140keywords (SMBQuick, SMBWord, etc.) 15141 15142---------------------------------------- 1514301 November 2002. Summary of changes for version 20021101. 15144 15145 151461) ACPI CA Core Subsystem: 15147 15148Fixed a problem where platforms that have a GPE1 block but no GPE0 15149block were not handled correctly. This resulted in a "GPE 15150overlap" error message. GPE0 is no longer required. 15151 15152Removed code added in the previous release that inserted nodes 15153into the namespace in alphabetical order. This caused some side- 15154effects on various machines. The root cause of the problem is 15155still under investigation since in theory, the internal ordering 15156of the namespace nodes should not matter. 15157 15158 15159Enhanced error reporting for the case where a named object is not 15160found during control method execution. The full ACPI namepath 15161(name reference) of the object that was not found is displayed in 15162this case. 15163 15164Note: as a result of the overhaul of the namespace object types in 15165the previous release, the namespace nodes for the predefined 15166scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 15167instead of ACPI_TYPE_ANY. This simplifies the namespace 15168management code but may affect code that walks the namespace tree 15169looking for specific object types. 15170 15171Code and Data Size: Current core subsystem library sizes are shown 15172below. These are the code and data sizes for the acpica.lib 15173produced by the Microsoft Visual C++ 6.0 compiler, and these 15174values do not include any ACPI driver or OSPM code. The debug 15175version of the code includes the debug output trace mechanism and 15176has a much larger code and data size. Note that these values will 15177vary depending on the efficiency of the compiler and the compiler 15178options used during generation. 15179 15180 Previous Release 15181 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15182 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15183 Current Release: 15184 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15185 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 15186 15187 151882) Linux 15189 15190Fixed a problem introduced in the previous release where the 15191Processor and Thermal objects were not recognized and installed in 15192/proc. This was related to the scope type change described above. 15193 15194 151953) iASL Compiler/Disassembler 15196 15197Implemented the -g option to get all of the required ACPI tables 15198from the registry and save them to files (Windows version of the 15199compiler only.) The required tables are the FADT, FACS, and DSDT. 15200 15201Added ACPI table checksum validation during table disassembly in 15202order to catch corrupted tables. 15203 15204 15205---------------------------------------- 1520622 October 2002. Summary of changes for version 20021022. 15207 152081) ACPI CA Core Subsystem: 15209 15210Implemented a restriction on the Scope operator that the target 15211must already exist in the namespace at the time the operator is 15212encountered (during table load or method execution). In other 15213words, forward references are not allowed and Scope() cannot 15214create a new object. This changes the previous behavior where the 15215interpreter would create the name if not found. This new behavior 15216correctly enables the search-to-root algorithm during namespace 15217lookup of the target name. Because of this upsearch, this fixes 15218the known Compaq _SB_.OKEC problem and makes both the AML 15219interpreter and iASL compiler compatible with other ACPI 15220implementations. 15221 15222Completed a major overhaul of the internal ACPI object types for 15223the ACPI Namespace and the associated operand objects. Many of 15224these types had become obsolete with the introduction of the two- 15225pass namespace load. This cleanup simplifies the code and makes 15226the entire namespace load mechanism much clearer and easier to 15227understand. 15228 15229Improved debug output for tracking scope opening/closing to help 15230diagnose scoping issues. The old scope name as well as the new 15231scope name are displayed. Also improved error messages for 15232problems with ASL Mutex objects and error messages for GPE 15233problems. 15234 15235Cleaned up the namespace dump code, removed obsolete code. 15236 15237All string output (for all namespace/object dumps) now uses the 15238common ACPI string output procedure which handles escapes properly 15239and does not emit non-printable characters. 15240 15241Fixed some issues with constants in the 64-bit version of the 15242local C library (utclib.c) 15243 15244 152452) Linux 15246 15247EC Driver: No longer attempts to acquire the Global Lock at 15248interrupt level. 15249 15250 152513) iASL Compiler/Disassembler 15252 15253Implemented ACPI 2.0B grammar change that disallows all Type 1 and 152542 opcodes outside of a control method. This means that the 15255"executable" operators (versus the "namespace" operators) cannot 15256be used at the table level; they can only be used within a control 15257method. 15258 15259Implemented the restriction on the Scope() operator where the 15260target must already exist in the namespace at the time the 15261operator is encountered (during ASL compilation). In other words, 15262forward references are not allowed and Scope() cannot create a new 15263object. This makes the iASL compiler compatible with other ACPI 15264implementations and makes the Scope() implementation adhere to the 15265ACPI specification. 15266 15267Fixed a problem where namepath optimization for the Alias operator 15268was optimizing the wrong path (of the two namepaths.) This caused 15269a "Missing alias link" error message. 15270 15271Fixed a problem where an "unknown reserved name" warning could be 15272incorrectly generated for names like "_SB" when the trailing 15273underscore is not used in the original ASL. 15274 15275Fixed a problem where the reserved name check did not handle 15276NamePaths with multiple NameSegs correctly. The first nameseg of 15277the NamePath was examined instead of the last NameSeg. 15278 15279 15280---------------------------------------- 15281 1528202 October 2002. Summary of changes for this release. 15283 15284 152851) ACPI CA Core Subsystem version 20021002: 15286 15287Fixed a problem where a store/copy of a string to an existing 15288string did not always set the string length properly in the String 15289object. 15290 15291Fixed a reported problem with the ToString operator where the 15292behavior was identical to the ToHexString operator instead of just 15293simply converting a raw buffer to a string data type. 15294 15295Fixed a problem where CopyObject and the other "explicit" 15296conversion operators were not updating the internal namespace node 15297type as part of the store operation. 15298 15299Fixed a memory leak during implicit source operand conversion 15300where the original object was not deleted if it was converted to a 15301new object of a different type. 15302 15303Enhanced error messages for all problems associated with namespace 15304lookups. Common procedure generates and prints the lookup name as 15305well as the formatted status. 15306 15307Completed implementation of a new design for the Alias support 15308within the namespace. The existing design did not handle the case 15309where a new object was assigned to one of the two names due to the 15310use of an explicit conversion operator, resulting in the two names 15311pointing to two different objects. The new design simply points 15312the Alias name to the original name node - not to the object. 15313This results in a level of indirection that must be handled in the 15314name resolution mechanism. 15315 15316Code and Data Size: Current core subsystem library sizes are shown 15317below. These are the code and data sizes for the acpica.lib 15318produced by the Microsoft Visual C++ 6.0 compiler, and these 15319values do not include any ACPI driver or OSPM code. The debug 15320version of the code includes the debug output trace mechanism and 15321has a larger code and data size. Note that these values will vary 15322depending on the efficiency of the compiler and the compiler 15323options used during generation. 15324 15325 Previous Release 15326 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15327 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 15328 Current Release: 15329 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15330 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15331 15332 153332) Linux 15334 15335Initialize thermal driver's timer before it is used. (Knut 15336Neumann) 15337 15338Allow handling negative celsius values. (Kochi Takayoshi) 15339 15340Fix thermal management and make trip points. R/W (Pavel Machek) 15341 15342Fix /proc/acpi/sleep. (P. Christeas) 15343 15344IA64 fixes. (David Mosberger) 15345 15346Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 15347 15348Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 15349Brodowski) 15350 15351 153523) iASL Compiler/Disassembler 15353 15354Clarified some warning/error messages. 15355 15356 15357---------------------------------------- 1535818 September 2002. Summary of changes for this release. 15359 15360 153611) ACPI CA Core Subsystem version 20020918: 15362 15363Fixed a reported problem with reference chaining (via the Index() 15364and RefOf() operators) in the ObjectType() and SizeOf() operators. 15365The definition of these operators includes the dereferencing of 15366all chained references to return information on the base object. 15367 15368Fixed a problem with stores to indexed package elements - the 15369existing code would not complete the store if an "implicit 15370conversion" was not performed. In other words, if the existing 15371object (package element) was to be replaced completely, the code 15372didn't handle this case. 15373 15374Relaxed typechecking on the ASL "Scope" operator to allow the 15375target name to refer to an object of type Integer, String, or 15376Buffer, in addition to the scoping object types (Device, 15377predefined Scopes, Processor, PowerResource, and ThermalZone.) 15378This allows existing AML code that has workarounds for a bug in 15379Windows to function properly. A warning is issued, however. This 15380affects both the AML interpreter and the iASL compiler. Below is 15381an example of this type of ASL code: 15382 15383 Name(DEB,0x00) 15384 Scope(DEB) 15385 { 15386 15387Fixed some reported problems with 64-bit integer support in the 15388local implementation of C library functions (clib.c) 15389 15390 153912) Linux 15392 15393Use ACPI fix map region instead of IOAPIC region, since it is 15394undefined in non-SMP. 15395 15396Ensure that the SCI has the proper polarity and trigger, even on 15397systems that do not have an interrupt override entry in the MADT. 15398 153992.5 big driver reorganization (Pat Mochel) 15400 15401Use early table mapping code from acpitable.c (Andi Kleen) 15402 15403New blacklist entries (Andi Kleen) 15404 15405Blacklist improvements. Split blacklist code out into a separate 15406file. Move checking the blacklist to very early. Previously, we 15407would use ACPI tables, and then halfway through init, check the 15408blacklist -- too late. Now, it's early enough to completely fall- 15409back to non-ACPI. 15410 15411 154123) iASL Compiler/Disassembler version 20020918: 15413 15414Fixed a problem where the typechecking code didn't know that an 15415alias could point to a method. In other words, aliases were not 15416being dereferenced during typechecking. 15417 15418 15419---------------------------------------- 1542029 August 2002. Summary of changes for this release. 15421 154221) ACPI CA Core Subsystem Version 20020829: 15423 15424If the target of a Scope() operator already exists, it must be an 15425object type that actually opens a scope -- such as a Device, 15426Method, Scope, etc. This is a fatal runtime error. Similar error 15427check has been added to the iASL compiler also. 15428 15429Tightened up the namespace load to disallow multiple names in the 15430same scope. This previously was allowed if both objects were of 15431the same type. (i.e., a lookup was the same as entering a new 15432name). 15433 15434 154352) Linux 15436 15437Ensure that the ACPI interrupt has the proper trigger and 15438polarity. 15439 15440local_irq_disable is extraneous. (Matthew Wilcox) 15441 15442Make "acpi=off" actually do what it says, and not use the ACPI 15443interpreter *or* the tables. 15444 15445Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 15446Takayoshi) 15447 15448 154493) iASL Compiler/Disassembler Version 20020829: 15450 15451Implemented namepath optimization for name declarations. For 15452example, a declaration like "Method (\_SB_.ABCD)" would get 15453optimized to "Method (ABCD)" if the declaration is within the 15454\_SB_ scope. This optimization is in addition to the named 15455reference path optimization first released in the previous 15456version. This would seem to complete all possible optimizations 15457for namepaths within the ASL/AML. 15458 15459If the target of a Scope() operator already exists, it must be an 15460object type that actually opens a scope -- such as a Device, 15461Method, Scope, etc. 15462 15463Implemented a check and warning for unreachable code in the same 15464block below a Return() statement. 15465 15466Fixed a problem where the listing file was not generated if the 15467compiler aborted if the maximum error count was exceeded (200). 15468 15469Fixed a problem where the typechecking of method return values was 15470broken. This includes the check for a return value when the 15471method is invoked as a TermArg (a return value is expected.) 15472 15473Fixed a reported problem where EOF conditions during a quoted 15474string or comment caused a fault. 15475 15476 15477---------------------------------------- 1547815 August 2002. Summary of changes for this release. 15479 154801) ACPI CA Core Subsystem Version 20020815: 15481 15482Fixed a reported problem where a Store to a method argument that 15483contains a reference did not perform the indirect store correctly. 15484This problem was created during the conversion to the new 15485reference object model - the indirect store to a method argument 15486code was not updated to reflect the new model. 15487 15488Reworked the ACPI mode change code to better conform to ACPI 2.0, 15489handle corner cases, and improve code legibility (Kochi Takayoshi) 15490 15491Fixed a problem with the pathname parsing for the carat (^) 15492prefix. The heavy use of the carat operator by the new namepath 15493optimization in the iASL compiler uncovered a problem with the AML 15494interpreter handling of this prefix. In the case where one or 15495more carats precede a single nameseg, the nameseg was treated as 15496standalone and the search rule (to root) was inadvertently 15497applied. This could cause both the iASL compiler and the 15498interpreter to find the wrong object or to miss the error that 15499should occur if the object does not exist at that exact pathname. 15500 15501Found and fixed the problem where the HP Pavilion DSDT would not 15502load. This was a relatively minor tweak to the table loading code 15503(a problem caused by the unexpected encounter with a method 15504invocation not within a control method), but it does not solve the 15505overall issue of the execution of AML code at the table level. 15506This investigation is still ongoing. 15507 15508Code and Data Size: Current core subsystem library sizes are shown 15509below. These are the code and data sizes for the acpica.lib 15510produced by the Microsoft Visual C++ 6.0 compiler, and these 15511values do not include any ACPI driver or OSPM code. The debug 15512version of the code includes the debug output trace mechanism and 15513has a larger code and data size. Note that these values will vary 15514depending on the efficiency of the compiler and the compiler 15515options used during generation. 15516 15517 Previous Release 15518 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 15519 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 15520 Current Release: 15521 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15522 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 15523 15524 155252) Linux 15526 15527Remove redundant slab.h include (Brad Hards) 15528 15529Fix several bugs in thermal.c (Herbert Nachtnebel) 15530 15531Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 15532 15533Change acpi_system_suspend to use updated irq functions (Pavel 15534Machek) 15535 15536Export acpi_get_firmware_table (Matthew Wilcox) 15537 15538Use proper root proc entry for ACPI (Kochi Takayoshi) 15539 15540Fix early-boot table parsing (Bjorn Helgaas) 15541 15542 155433) iASL Compiler/Disassembler 15544 15545Reworked the compiler options to make them more consistent and to 15546use two-letter options where appropriate. We were running out of 15547sensible letters. This may break some makefiles, so check the 15548current options list by invoking the compiler with no parameters. 15549 15550Completed the design and implementation of the ASL namepath 15551optimization option for the compiler. This option optimizes all 15552references to named objects to the shortest possible path. The 15553first attempt tries to utilize a single nameseg (4 characters) and 15554the "search-to-root" algorithm used by the interpreter. If that 15555cannot be used (because either the name is not in the search path 15556or there is a conflict with another object with the same name), 15557the pathname is optimized using the carat prefix (usually a 15558shorter string than specifying the entire path from the root.) 15559 15560Implemented support to obtain the DSDT from the Windows registry 15561(when the disassembly option is specified with no input file). 15562Added this code as the implementation for AcpiOsTableOverride in 15563the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 15564utility) to scan memory for the DSDT to the AcpiOsTableOverride 15565function in the DOS OSL to make the disassembler truly OS 15566independent. 15567 15568Implemented a new option to disassemble and compile in one step. 15569When used without an input filename, this option will grab the 15570DSDT from the local machine, disassemble it, and compile it in one 15571step. 15572 15573Added a warning message for invalid escapes (a backslash followed 15574by any character other than the allowable escapes). This catches 15575the quoted string error "\_SB_" (which should be "\\_SB_" ). 15576 15577Also, there are numerous instances in the ACPI specification where 15578this error occurs. 15579 15580Added a compiler option to disable all optimizations. This is 15581basically the "compatibility mode" because by using this option, 15582the AML code will come out exactly the same as other ASL 15583compilers. 15584 15585Added error messages for incorrectly ordered dependent resource 15586functions. This includes: missing EndDependentFn macro at end of 15587dependent resource list, nested dependent function macros (both 15588start and end), and missing StartDependentFn macro. These are 15589common errors that should be caught at compile time. 15590 15591Implemented _OSI support for the disassembler and compiler. _OSI 15592must be included in the namespace for proper disassembly (because 15593the disassembler must know the number of arguments.) 15594 15595Added an "optimization" message type that is optional (off by 15596default). This message is used for all optimizations - including 15597constant folding, integer optimization, and namepath optimization. 15598 15599---------------------------------------- 1560025 July 2002. Summary of changes for this release. 15601 15602 156031) ACPI CA Core Subsystem Version 20020725: 15604 15605The AML Disassembler has been enhanced to produce compilable ASL 15606code and has been integrated into the iASL compiler (see below) as 15607well as the single-step disassembly for the AML debugger and the 15608disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 15609resource templates and macros are fully supported. The 15610disassembler has been tested on over 30 different AML files, 15611producing identical AML when the resulting disassembled ASL file 15612is recompiled with the same ASL compiler. 15613 15614Modified the Resource Manager to allow zero interrupts and zero 15615dma channels during the GetCurrentResources call. This was 15616causing problems on some platforms. 15617 15618Added the AcpiOsRedirectOutput interface to the OSL to simplify 15619output redirection for the AcpiOsPrintf and AcpiOsVprintf 15620interfaces. 15621 15622Code and Data Size: Current core subsystem library sizes are shown 15623below. These are the code and data sizes for the acpica.lib 15624produced by the Microsoft Visual C++ 6.0 compiler, and these 15625values do not include any ACPI driver or OSPM code. The debug 15626version of the code includes the debug output trace mechanism and 15627has a larger code and data size. Note that these values will vary 15628depending on the efficiency of the compiler and the compiler 15629options used during generation. 15630 15631 Previous Release 15632 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 15633 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 15634 Current Release: 15635 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 15636 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 15637 15638 156392) Linux 15640 15641Fixed a panic in the EC driver (Dominik Brodowski) 15642 15643Implemented checksum of the R/XSDT itself during Linux table scan 15644(Richard Schaal) 15645 15646 156473) iASL compiler 15648 15649The AML disassembler is integrated into the compiler. The "-d" 15650option invokes the disassembler to completely disassemble an 15651input AML file, producing as output a text ASL file with the 15652extension ".dsl" (to avoid name collisions with existing .asl 15653source files.) A future enhancement will allow the disassembler 15654to obtain the BIOS DSDT from the registry under Windows. 15655 15656Fixed a problem with the VendorShort and VendorLong resource 15657descriptors where an invalid AML sequence was created. 15658 15659Implemented a fix for BufferData term in the ASL parser. It was 15660inadvertently defined twice, allowing invalid syntax to pass and 15661causing reduction conflicts. 15662 15663Fixed a problem where the Ones opcode could get converted to a 15664value of zero if "Ones" was used where a byte, word or dword value 15665was expected. The 64-bit value is now truncated to the correct 15666size with the correct value. 15667 15668 15669 15670---------------------------------------- 1567102 July 2002. Summary of changes for this release. 15672 15673 156741) ACPI CA Core Subsystem Version 20020702: 15675 15676The Table Manager code has been restructured to add several new 15677features. Tables that are not required by the core subsystem 15678(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 15679validated in any way and are returned from AcpiGetFirmwareTable if 15680requested. The AcpiOsTableOverride interface is now called for 15681each table that is loaded by the subsystem in order to allow the 15682host to override any table it chooses. Previously, only the DSDT 15683could be overridden. Added one new files, tbrsdt.c and 15684tbgetall.c. 15685 15686Fixed a problem with the conversion of internal package objects to 15687external objects (when a package is returned from a control 15688method.) The return buffer length was set to zero instead of the 15689proper length of the package object. 15690 15691Fixed a reported problem with the use of the RefOf and DeRefOf 15692operators when passing reference arguments to control methods. A 15693new type of Reference object is used internally for references 15694produced by the RefOf operator. 15695 15696Added additional error messages in the Resource Manager to explain 15697AE_BAD_DATA errors when they occur during resource parsing. 15698 15699Split the AcpiEnableSubsystem into two primitives to enable a 15700finer granularity initialization sequence. These two calls should 15701be called in this order: AcpiEnableSubsystem (flags), 15702AcpiInitializeObjects (flags). The flags parameter remains the 15703same. 15704 15705 157062) Linux 15707 15708Updated the ACPI utilities module to understand the new style of 15709fully resolved package objects that are now returned from the core 15710subsystem. This eliminates errors of the form: 15711 15712 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 15713 acpi_utils-0430 [145] acpi_evaluate_reference: 15714 Invalid element in package (not a device reference) 15715 15716The method evaluation utility uses the new buffer allocation 15717scheme instead of calling AcpiEvaluate Object twice. 15718 15719Added support for ECDT. This allows the use of the Embedded 15720 15721Controller before the namespace has been fully initialized, which 15722is necessary for ACPI 2.0 support, and for some laptops to 15723initialize properly. (Laptops using ECDT are still rare, so only 15724limited testing was performed of the added functionality.) 15725 15726Fixed memory leaks in the EC driver. 15727 15728Eliminated a brittle code structure in acpi_bus_init(). 15729 15730Eliminated the acpi_evaluate() helper function in utils.c. It is 15731no longer needed since acpi_evaluate_object can optionally 15732allocate memory for the return object. 15733 15734Implemented fix for keyboard hang when getting battery readings on 15735some systems (Stephen White) 15736 15737PCI IRQ routing update (Dominik Brodowski) 15738 15739Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 15740support 15741 15742---------------------------------------- 1574311 June 2002. Summary of changes for this release. 15744 15745 157461) ACPI CA Core Subsystem Version 20020611: 15747 15748Fixed a reported problem where constants such as Zero and One 15749appearing within _PRT packages were not handled correctly within 15750the resource manager code. Originally reported against the ASL 15751compiler because the code generator now optimizes integers to 15752their minimal AML representation (i.e. AML constants if possible.) 15753The _PRT code now handles all AML constant opcodes correctly 15754(Zero, One, Ones, Revision). 15755 15756Fixed a problem with the Concatenate operator in the AML 15757interpreter where a buffer result object was incorrectly marked as 15758not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 15759 15760All package sub-objects are now fully resolved before they are 15761returned from the external ACPI interfaces. This means that name 15762strings are resolved to object handles, and constant operators 15763(Zero, One, Ones, Revision) are resolved to Integers. 15764 15765Implemented immediate resolution of the AML Constant opcodes 15766(Zero, One, Ones, Revision) to Integer objects upon detection 15767within the AML stream. This has simplified and reduced the 15768generated code size of the subsystem by eliminating about 10 15769switch statements for these constants (which previously were 15770contained in Reference objects.) The complicating issues are that 15771the Zero opcode is used as a "placeholder" for unspecified 15772optional target operands and stores to constants are defined to be 15773no-ops. 15774 15775Code and Data Size: Current core subsystem library sizes are shown 15776below. These are the code and data sizes for the acpica.lib 15777produced by the Microsoft Visual C++ 6.0 compiler, and these 15778values do not include any ACPI driver or OSPM code. The debug 15779version of the code includes the debug output trace mechanism and 15780has a larger code and data size. Note that these values will vary 15781depending on the efficiency of the compiler and the compiler 15782options used during generation. 15783 15784 Previous Release 15785 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 15786 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 15787 Current Release: 15788 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 15789 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 15790 15791 157922) Linux 15793 15794 15795Added preliminary support for obtaining _TRA data for PCI root 15796bridges (Bjorn Helgaas). 15797 15798 157993) iASL Compiler Version X2046: 15800 15801Fixed a problem where the "_DDN" reserved name was defined to be a 15802control method with one argument. There are no arguments, and 15803_DDN does not have to be a control method. 15804 15805Fixed a problem with the Linux version of the compiler where the 15806source lines printed with error messages were the wrong lines. 15807This turned out to be the "LF versus CR/LF" difference between 15808Windows and Unix. This appears to be the longstanding issue 15809concerning listing output and error messages. 15810 15811Fixed a problem with the Linux version of compiler where opcode 15812names within error messages were wrong. This was caused by a 15813slight difference in the output of the Flex tool on Linux versus 15814Windows. 15815 15816Fixed a problem with the Linux compiler where the hex output files 15817contained some garbage data caused by an internal buffer overrun. 15818 15819 15820---------------------------------------- 1582117 May 2002. Summary of changes for this release. 15822 15823 158241) ACPI CA Core Subsystem Version 20020517: 15825 15826Implemented a workaround to an BIOS bug discovered on the HP 15827OmniBook where the FADT revision number and the table size are 15828inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 15829behavior is to fallback to using only the ACPI 1.0 fields of the 15830FADT if the table is too small to be a ACPI 2.0 table as claimed 15831by the revision number. Although this is a BIOS bug, this is a 15832case where the workaround is simple enough and with no side 15833effects, so it seemed prudent to add it. A warning message is 15834issued, however. 15835 15836Implemented minimum size checks for the fixed-length ACPI tables - 15837- the FADT and FACS, as well as consistency checks between the 15838revision number and the table size. 15839 15840Fixed a reported problem in the table override support where the 15841new table pointer was incorrectly treated as a physical address 15842instead of a logical address. 15843 15844Eliminated the use of the AE_AML_ERROR exception and replaced it 15845with more descriptive codes. 15846 15847Fixed a problem where an exception would occur if an ASL Field was 15848defined with no named Field Units underneath it (used by some 15849index fields). 15850 15851Code and Data Size: Current core subsystem library sizes are shown 15852below. These are the code and data sizes for the acpica.lib 15853produced by the Microsoft Visual C++ 6.0 compiler, and these 15854values do not include any ACPI driver or OSPM code. The debug 15855version of the code includes the debug output trace mechanism and 15856has a larger code and data size. Note that these values will vary 15857depending on the efficiency of the compiler and the compiler 15858options used during generation. 15859 15860 Previous Release 15861 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 15862 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 15863 Current Release: 15864 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 15865 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 15866 15867 15868 158692) Linux 15870 15871Much work done on ACPI init (MADT and PCI IRQ routing support). 15872(Paul D. and Dominik Brodowski) 15873 15874Fix PCI IRQ-related panic on boot (Sam Revitch) 15875 15876Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 15877 15878Fix "MHz" typo (Dominik Brodowski) 15879 15880Fix RTC year 2000 issue (Dominik Brodowski) 15881 15882Preclude multiple button proc entries (Eric Brunet) 15883 15884Moved arch-specific code out of include/platform/aclinux.h 15885 158863) iASL Compiler Version X2044: 15887 15888Implemented error checking for the string used in the EISAID macro 15889(Usually used in the definition of the _HID object.) The code now 15890strictly enforces the PnP format - exactly 7 characters, 3 15891uppercase letters and 4 hex digits. 15892 15893If a raw string is used in the definition of the _HID object 15894(instead of the EISAID macro), the string must contain all 15895alphanumeric characters (e.g., "*PNP0011" is not allowed because 15896of the asterisk.) 15897 15898Implemented checking for invalid use of ACPI reserved names for 15899most of the name creation operators (Name, Device, Event, Mutex, 15900OperationRegion, PowerResource, Processor, and ThermalZone.) 15901Previously, this check was only performed for control methods. 15902 15903Implemented an additional check on the Name operator to emit an 15904error if a reserved name that must be implemented in ASL as a 15905control method is used. We know that a reserved name must be a 15906method if it is defined with input arguments. 15907 15908The warning emitted when a namespace object reference is not found 15909during the cross reference phase has been changed into an error. 15910The "External" directive should be used for names defined in other 15911modules. 15912 15913 159144) Tools and Utilities 15915 15916The 16-bit tools (adump16 and aexec16) have been regenerated and 15917tested. 15918 15919Fixed a problem with the output of both acpidump and adump16 where 15920the indentation of closing parentheses and brackets was not 15921 15922aligned properly with the parent block. 15923 15924 15925---------------------------------------- 1592603 May 2002. Summary of changes for this release. 15927 15928 159291) ACPI CA Core Subsystem Version 20020503: 15930 15931Added support a new OSL interface that allows the host operating 15932 15933system software to override the DSDT found in the firmware - 15934AcpiOsTableOverride. With this interface, the OSL can examine the 15935version of the firmware DSDT and replace it with a different one 15936if desired. 15937 15938Added new external interfaces for accessing ACPI registers from 15939device drivers and other system software - AcpiGetRegister and 15940AcpiSetRegister. This was simply an externalization of the 15941existing AcpiHwBitRegister interfaces. 15942 15943Fixed a regression introduced in the previous build where the 15944ASL/AML CreateField operator always returned an error, 15945"destination must be a NS Node". 15946 15947Extended the maximum time (before failure) to successfully enable 15948ACPI mode to 3 seconds. 15949 15950Code and Data Size: Current core subsystem library sizes are shown 15951below. These are the code and data sizes for the acpica.lib 15952produced by the Microsoft Visual C++ 6.0 compiler, and these 15953values do not include any ACPI driver or OSPM code. The debug 15954version of the code includes the debug output trace mechanism and 15955has a larger code and data size. Note that these values will vary 15956depending on the efficiency of the compiler and the compiler 15957options used during generation. 15958 15959 Previous Release 15960 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 15961 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 15962 Current Release: 15963 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 15964 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 15965 15966 159672) Linux 15968 15969Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 15970free. While 3 out of 4 of our in-house systems work fine, the last 15971one still hangs when testing the LAPIC timer. 15972 15973Renamed many files in 2.5 kernel release to omit "acpi_" from the 15974name. 15975 15976Added warning on boot for Presario 711FR. 15977 15978Sleep improvements (Pavel Machek) 15979 15980ACPI can now be built without CONFIG_PCI enabled. 15981 15982IA64: Fixed memory map functions (JI Lee) 15983 15984 159853) iASL Compiler Version X2043: 15986 15987Added support to allow the compiler to be integrated into the MS 15988VC++ development environment for one-button compilation of single 15989files or entire projects -- with error-to-source-line mapping. 15990 15991Implemented support for compile-time constant folding for the 15992Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 15993specification. This allows the ASL writer to use expressions 15994instead of Integer/Buffer/String constants in terms that must 15995evaluate to constants at compile time and will also simplify the 15996emitted AML in any such sub-expressions that can be folded 15997(evaluated at compile-time.) This increases the size of the 15998compiler significantly because a portion of the ACPI CA AML 15999interpreter is included within the compiler in order to pre- 16000evaluate constant expressions. 16001 16002 16003Fixed a problem with the "Unicode" ASL macro that caused the 16004compiler to fault. (This macro is used in conjunction with the 16005_STR reserved name.) 16006 16007Implemented an AML opcode optimization to use the Zero, One, and 16008Ones opcodes where possible to further reduce the size of integer 16009constants and thus reduce the overall size of the generated AML 16010code. 16011 16012Implemented error checking for new reserved terms for ACPI version 160132.0A. 16014 16015Implemented the -qr option to display the current list of ACPI 16016reserved names known to the compiler. 16017 16018Implemented the -qc option to display the current list of ASL 16019operators that are allowed within constant expressions and can 16020therefore be folded at compile time if the operands are constants. 16021 16022 160234) Documentation 16024 16025Updated the Programmer's Reference for new interfaces, data types, 16026and memory allocation model options. 16027 16028Updated the iASL Compiler User Reference to apply new format and 16029add information about new features and options. 16030 16031---------------------------------------- 1603219 April 2002. Summary of changes for this release. 16033 160341) ACPI CA Core Subsystem Version 20020419: 16035 16036The source code base for the Core Subsystem has been completely 16037cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 16038versions. The Lint option files used are included in the 16039/acpi/generate/lint directory. 16040 16041Implemented enhanced status/error checking across the entire 16042Hardware manager subsystem. Any hardware errors (reported from 16043the OSL) are now bubbled up and will abort a running control 16044method. 16045 16046 16047Fixed a problem where the per-ACPI-table integer width (32 or 64) 16048was stored only with control method nodes, causing a fault when 16049non-control method code was executed during table loading. The 16050solution implemented uses a global variable to indicate table 16051width across the entire ACPI subsystem. Therefore, ACPI CA does 16052not support mixed integer widths across different ACPI tables 16053(DSDT, SSDT). 16054 16055Fixed a problem where NULL extended fields (X fields) in an ACPI 160562.0 ACPI FADT caused the table load to fail. Although the 16057existing ACPI specification is a bit fuzzy on this topic, the new 16058behavior is to fall back on a ACPI 1.0 field if the corresponding 16059ACPI 2.0 X field is zero (even though the table revision indicates 16060a full ACPI 2.0 table.) The ACPI specification will be updated to 16061clarify this issue. 16062 16063Fixed a problem with the SystemMemory operation region handler 16064where memory was always accessed byte-wise even if the AML- 16065specified access width was larger than a byte. This caused 16066problems on systems with memory-mapped I/O. Memory is now 16067accessed with the width specified. On systems that do not support 16068non-aligned transfers, a check is made to guarantee proper address 16069alignment before proceeding in order to avoid an AML-caused 16070alignment fault within the kernel. 16071 16072 16073Fixed a problem with the ExtendedIrq resource where only one byte 16074of the 4-byte Irq field was extracted. 16075 16076Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 16077function was out of date and required a rewrite. 16078 16079Code and Data Size: Current core subsystem library sizes are shown 16080below. These are the code and data sizes for the acpica.lib 16081produced by the Microsoft Visual C++ 6.0 compiler, and these 16082values do not include any ACPI driver or OSPM code. The debug 16083version of the code includes the debug output trace mechanism and 16084has a larger code and data size. Note that these values will vary 16085depending on the efficiency of the compiler and the compiler 16086options used during generation. 16087 16088 Previous Release 16089 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 16090 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 16091 Current Release: 16092 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 16093 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 16094 16095 160962) Linux 16097 16098PCI IRQ routing fixes (Dominik Brodowski) 16099 16100 161013) iASL Compiler Version X2042: 16102 16103Implemented an additional compile-time error check for a field 16104unit whose size + minimum access width would cause a run-time 16105access beyond the end-of-region. Previously, only the field size 16106itself was checked. 16107 16108The Core subsystem and iASL compiler now share a common parse 16109object in preparation for compile-time evaluation of the type 161103/4/5 ASL operators. 16111 16112 16113---------------------------------------- 16114Summary of changes for this release: 03_29_02 16115 161161) ACPI CA Core Subsystem Version 20020329: 16117 16118Implemented support for late evaluation of TermArg operands to 16119Buffer and Package objects. This allows complex expressions to be 16120used in the declarations of these object types. 16121 16122Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 161231.0, if the field was larger than 32 bits, it was returned as a 16124buffer - otherwise it was returned as an integer. In ACPI 2.0, 16125the field is returned as a buffer only if the field is larger than 1612664 bits. The TableRevision is now considered when making this 16127conversion to avoid incompatibility with existing ASL code. 16128 16129Implemented logical addressing for AcpiOsGetRootPointer. This 16130allows an RSDP with either a logical or physical address. With 16131this support, the host OS can now override all ACPI tables with 16132one logical RSDP. Includes implementation of "typed" pointer 16133support to allow a common data type for both physical and logical 16134pointers internally. This required a change to the 16135AcpiOsGetRootPointer interface. 16136 16137Implemented the use of ACPI 2.0 Generic Address Structures for all 16138GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 16139mapped I/O for these ACPI features. 16140 16141Initialization now ignores not only non-required tables (All 16142tables other than the FADT, FACS, DSDT, and SSDTs), but also does 16143not validate the table headers of unrecognized tables. 16144 16145Fixed a problem where a notify handler could only be 16146installed/removed on an object of type Device. All "notify" 16147 16148objects are now supported -- Devices, Processor, Power, and 16149Thermal. 16150 16151Removed most verbosity from the ACPI_DB_INFO debug level. Only 16152critical information is returned when this debug level is enabled. 16153 16154Code and Data Size: Current core subsystem library sizes are shown 16155below. These are the code and data sizes for the acpica.lib 16156produced by the Microsoft Visual C++ 6.0 compiler, and these 16157values do not include any ACPI driver or OSPM code. The debug 16158version of the code includes the debug output trace mechanism and 16159has a larger code and data size. Note that these values will vary 16160depending on the efficiency of the compiler and the compiler 16161options used during generation. 16162 16163 Previous Release 16164 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 16165 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 16166 Current Release: 16167 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 16168 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 16169 16170 161712) Linux: 16172 16173The processor driver (acpi_processor.c) now fully supports ACPI 161742.0-based processor performance control (e.g. Intel(R) 16175SpeedStep(TM) technology) Note that older laptops that only have 16176the Intel "applet" interface are not supported through this. The 16177'limit' and 'performance' interface (/proc) are fully functional. 16178[Note that basic policy for controlling performance state 16179transitions will be included in the next version of ospmd.] The 16180idle handler was modified to more aggressively use C2, and PIIX4 16181errata handling underwent a complete overhaul (big thanks to 16182Dominik Brodowski). 16183 16184Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 16185based devices in the ACPI namespace are now dynamically bound 16186(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 16187This allows, among other things, ACPI to resolve bus numbers for 16188subordinate PCI bridges. 16189 16190Enhanced PCI IRQ routing to get the proper bus number for _PRT 16191entries defined underneath PCI bridges. 16192 16193Added IBM 600E to bad bios list due to invalid _ADR value for 16194PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 16195 16196In the process of adding full MADT support (e.g. IOAPIC) for IA32 16197(acpi.c, mpparse.c) -- stay tuned. 16198 16199Added back visual differentiation between fixed-feature and 16200control-method buttons in dmesg. Buttons are also subtyped (e.g. 16201button/power/PWRF) to simplify button identification. 16202 16203We no longer use -Wno-unused when compiling debug. Please ignore 16204any "_THIS_MODULE defined but not used" messages. 16205 16206Can now shut down the system using "magic sysrq" key. 16207 16208 162093) iASL Compiler version 2041: 16210 16211Fixed a problem where conversion errors for hex/octal/decimal 16212constants were not reported. 16213 16214Implemented a fix for the General Register template Address field. 16215This field was 8 bits when it should be 64. 16216 16217Fixed a problem where errors/warnings were no longer being emitted 16218within the listing output file. 16219 16220Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 16221exactly 4 characters, alphanumeric only. 16222 16223 16224 16225 16226---------------------------------------- 16227Summary of changes for this release: 03_08_02 16228 16229 162301) ACPI CA Core Subsystem Version 20020308: 16231 16232Fixed a problem with AML Fields where the use of the "AccessAny" 16233keyword could cause an interpreter error due to attempting to read 16234or write beyond the end of the parent Operation Region. 16235 16236Fixed a problem in the SystemMemory Operation Region handler where 16237an attempt was made to map memory beyond the end of the region. 16238This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 16239errors on some Linux systems. 16240 16241Fixed a problem where the interpreter/namespace "search to root" 16242algorithm was not functioning for some object types. Relaxed the 16243internal restriction on the search to allow upsearches for all 16244external object types as well as most internal types. 16245 16246 162472) Linux: 16248 16249We now use safe_halt() macro versus individual calls to sti | hlt. 16250 16251Writing to the processor limit interface should now work. "echo 1" 16252will increase the limit, 2 will decrease, and 0 will reset to the 16253 16254default. 16255 16256 162573) ASL compiler: 16258 16259Fixed segfault on Linux version. 16260 16261 16262---------------------------------------- 16263Summary of changes for this release: 02_25_02 16264 162651) ACPI CA Core Subsystem: 16266 16267 16268Fixed a problem where the GPE bit masks were not initialized 16269properly, causing erratic GPE behavior. 16270 16271Implemented limited support for multiple calling conventions. The 16272code can be generated with either the VPL (variable parameter 16273list, or "C") convention, or the FPL (fixed parameter list, or 16274"Pascal") convention. The core subsystem is about 3.4% smaller 16275when generated with FPL. 16276 16277 162782) Linux 16279 16280Re-add some /proc/acpi/event functionality that was lost during 16281the rewrite 16282 16283Resolved issue with /proc events for fixed-feature buttons showing 16284up as the system device. 16285 16286Fixed checks on C2/C3 latencies to be inclusive of maximum values. 16287 16288Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 16289 16290Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 16291 16292Fixed limit interface & usage to fix bugs with passive cooling 16293hysterisis. 16294 16295Restructured PRT support. 16296 16297 16298---------------------------------------- 16299Summary of changes for this label: 02_14_02 16300 16301 163021) ACPI CA Core Subsystem: 16303 16304Implemented support in AcpiLoadTable to allow loading of FACS and 16305FADT tables. 16306 16307Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 16308been removed. All 64-bit platforms should be migrated to the ACPI 163092.0 tables. The actbl71.h header has been removed from the source 16310tree. 16311 16312All C macros defined within the subsystem have been prefixed with 16313"ACPI_" to avoid collision with other system include files. 16314 16315Removed the return value for the two AcpiOsPrint interfaces, since 16316it is never used and causes lint warnings for ignoring the return 16317value. 16318 16319Added error checking to all internal mutex acquire and release 16320calls. Although a failure from one of these interfaces is 16321probably a fatal system error, these checks will cause the 16322immediate abort of the currently executing method or interface. 16323 16324Fixed a problem where the AcpiSetCurrentResources interface could 16325fault. This was a side effect of the deployment of the new memory 16326allocation model. 16327 16328Fixed a couple of problems with the Global Lock support introduced 16329in the last major build. The "common" (1.0/2.0) internal FACS was 16330being overwritten with the FACS signature and clobbering the 16331Global Lock pointer. Also, the actual firmware FACS was being 16332unmapped after construction of the "common" FACS, preventing 16333access to the actual Global Lock field within it. The "common" 16334internal FACS is no longer installed as an actual ACPI table; it 16335is used simply as a global. 16336 16337Code and Data Size: Current core subsystem library sizes are shown 16338below. These are the code and data sizes for the acpica.lib 16339produced by the Microsoft Visual C++ 6.0 compiler, and these 16340values do not include any ACPI driver or OSPM code. The debug 16341version of the code includes the debug output trace mechanism and 16342has a larger code and data size. Note that these values will vary 16343depending on the efficiency of the compiler and the compiler 16344options used during generation. 16345 16346 Previous Release (02_07_01) 16347 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 16348 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 16349 Current Release: 16350 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 16351 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 16352 16353 163542) Linux 16355 16356Updated Linux-specific code for core macro and OSL interface 16357changes described above. 16358 16359Improved /proc/acpi/event. It now can be opened only once and has 16360proper poll functionality. 16361 16362Fixed and restructured power management (acpi_bus). 16363 16364Only create /proc "view by type" when devices of that class exist. 16365 16366Fixed "charging/discharging" bug (and others) in acpi_battery. 16367 16368Improved thermal zone code. 16369 16370 163713) ASL Compiler, version X2039: 16372 16373 16374Implemented the new compiler restriction on ASL String hex/octal 16375escapes to non-null, ASCII values. An error results if an invalid 16376value is used. (This will require an ACPI 2.0 specification 16377change.) 16378 16379AML object labels that are output to the optional C and ASM source 16380are now prefixed with both the ACPI table signature and table ID 16381to help guarantee uniqueness within a large BIOS project. 16382 16383 16384---------------------------------------- 16385Summary of changes for this label: 02_01_02 16386 163871) ACPI CA Core Subsystem: 16388 16389ACPI 2.0 support is complete in the entire Core Subsystem and the 16390ASL compiler. All new ACPI 2.0 operators are implemented and all 16391other changes for ACPI 2.0 support are complete. With 16392simultaneous code and data optimizations throughout the subsystem, 16393ACPI 2.0 support has been implemented with almost no additional 16394cost in terms of code and data size. 16395 16396Implemented a new mechanism for allocation of return buffers. If 16397the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 16398be allocated on behalf of the caller. Consolidated all return 16399buffer validation and allocation to a common procedure. Return 16400buffers will be allocated via the primary OSL allocation interface 16401since it appears that a separate pool is not needed by most users. 16402If a separate pool is required for these buffers, the caller can 16403still use the original mechanism and pre-allocate the buffer(s). 16404 16405Implemented support for string operands within the DerefOf 16406operator. 16407 16408Restructured the Hardware and Event managers to be table driven, 16409simplifying the source code and reducing the amount of generated 16410code. 16411 16412Split the common read/write low-level ACPI register bitfield 16413procedure into a separate read and write, simplifying the code 16414considerably. 16415 16416Obsoleted the AcpiOsCallocate OSL interface. This interface was 16417used only a handful of times and didn't have enough critical mass 16418for a separate interface. Replaced with a common calloc procedure 16419in the core. 16420 16421Fixed a reported problem with the GPE number mapping mechanism 16422that allows GPE1 numbers to be non-contiguous with GPE0. 16423Reorganized the GPE information and shrunk a large array that was 16424originally large enough to hold info for all possible GPEs (256) 16425to simply large enough to hold all GPEs up to the largest GPE 16426number on the machine. 16427 16428Fixed a reported problem with resource structure alignment on 64- 16429bit platforms. 16430 16431Changed the AcpiEnableEvent and AcpiDisableEvent external 16432interfaces to not require any flags for the common case of 16433enabling/disabling a GPE. 16434 16435Implemented support to allow a "Notify" on a Processor object. 16436 16437Most TBDs in comments within the source code have been resolved 16438and eliminated. 16439 16440 16441Fixed a problem in the interpreter where a standalone parent 16442prefix (^) was not handled correctly in the interpreter and 16443debugger. 16444 16445Removed obsolete and unnecessary GPE save/restore code. 16446 16447Implemented Field support in the ASL Load operator. This allows a 16448table to be loaded from a named field, in addition to loading a 16449table directly from an Operation Region. 16450 16451Implemented timeout and handle support in the external Global Lock 16452interfaces. 16453 16454Fixed a problem in the AcpiDump utility where pathnames were no 16455longer being generated correctly during the dump of named objects. 16456 16457Modified the AML debugger to give a full display of if/while 16458predicates instead of just one AML opcode at a time. (The 16459predicate can have several nested ASL statements.) The old method 16460was confusing during single stepping. 16461 16462Code and Data Size: Current core subsystem library sizes are shown 16463below. These are the code and data sizes for the acpica.lib 16464produced by the Microsoft Visual C++ 6.0 compiler, and these 16465values do not include any ACPI driver or OSPM code. The debug 16466version of the code includes the debug output trace mechanism and 16467has a larger code and data size. Note that these values will vary 16468depending on the efficiency of the compiler and the compiler 16469options used during generation. 16470 16471 Previous Release (12_18_01) 16472 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 16473 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 16474 Current Release: 16475 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 16476 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 16477 164782) Linux 16479 16480 Implemented fix for PIIX reverse throttling errata (Processor 16481driver) 16482 16483Added new Limit interface (Processor and Thermal drivers) 16484 16485New thermal policy (Thermal driver) 16486 16487Many updates to /proc 16488 16489Battery "low" event support (Battery driver) 16490 16491Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 16492 16493IA32 - IA64 initialization unification, no longer experimental 16494 16495Menuconfig options redesigned 16496 164973) ASL Compiler, version X2037: 16498 16499Implemented several new output features to simplify integration of 16500AML code into firmware: 1) Output the AML in C source code with 16501labels for each named ASL object. The original ASL source code 16502is interleaved as C comments. 2) Output the AML in ASM source code 16503with labels and interleaved ASL source. 3) Output the AML in 16504raw hex table form, in either C or ASM. 16505 16506Implemented support for optional string parameters to the 16507LoadTable operator. 16508 16509Completed support for embedded escape sequences within string 16510literals. The compiler now supports all single character escapes 16511as well as the Octal and Hex escapes. Note: the insertion of a 16512null byte into a string literal (via the hex/octal escape) causes 16513the string to be immediately terminated. A warning is issued. 16514 16515Fixed a problem where incorrect AML was generated for the case 16516where an ASL namepath consists of a single parent prefix ( 16517 16518) with no trailing name segments. 16519 16520The compiler has been successfully generated with a 64-bit C 16521compiler. 16522 16523 16524 16525 16526---------------------------------------- 16527Summary of changes for this label: 12_18_01 16528 165291) Linux 16530 16531Enhanced blacklist with reason and severity fields. Any table's 16532signature may now be used to identify a blacklisted system. 16533 16534Call _PIC control method to inform the firmware which interrupt 16535model the OS is using. Turn on any disabled link devices. 16536 16537Cleaned up busmgr /proc error handling (Andreas Dilger) 16538 16539 2) ACPI CA Core Subsystem: 16540 16541Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 16542while loop) 16543 16544Completed implementation of the ACPI 2.0 "Continue", 16545"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 16546operators. All new ACPI 2.0 operators are now implemented in both 16547the ASL compiler and the AML interpreter. The only remaining ACPI 165482.0 task is support for the String data type in the DerefOf 16549operator. Fixed a problem with AcquireMutex where the status code 16550was lost if the caller had to actually wait for the mutex. 16551 16552Increased the maximum ASL Field size from 64K bits to 4G bits. 16553 16554Completed implementation of the external Global Lock interfaces -- 16555AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 16556Handler parameters were added. 16557 16558Completed another pass at removing warnings and issues when 16559compiling with 64-bit compilers. The code now compiles cleanly 16560with the Intel 64-bit C/C++ compiler. Most notably, the pointer 16561add and subtract (diff) macros have changed considerably. 16562 16563 16564Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1656564-bit platforms, 32-bits on all others. This type is used 16566wherever memory allocation and/or the C sizeof() operator is used, 16567and affects the OSL memory allocation interfaces AcpiOsAllocate 16568and AcpiOsCallocate. 16569 16570Implemented sticky user breakpoints in the AML debugger. 16571 16572Code and Data Size: Current core subsystem library sizes are shown 16573below. These are the code and data sizes for the acpica.lib 16574produced by the Microsoft Visual C++ 6.0 compiler, and these 16575values do not include any ACPI driver or OSPM code. The debug 16576version of the code includes the debug output trace mechanism and 16577has a larger code and data size. Note that these values will vary 16578depending on the efficiency of the compiler and the compiler 16579options used during generation. 16580 16581 Previous Release (12_05_01) 16582 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 16583 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 16584 Current Release: 16585 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 16586 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 16587 16588 3) ASL Compiler, version X2034: 16589 16590Now checks for (and generates an error if detected) the use of a 16591Break or Continue statement without an enclosing While statement. 16592 16593 16594Successfully generated the compiler with the Intel 64-bit C 16595compiler. 16596 16597 ---------------------------------------- 16598Summary of changes for this label: 12_05_01 16599 16600 1) ACPI CA Core Subsystem: 16601 16602The ACPI 2.0 CopyObject operator is fully implemented. This 16603operator creates a new copy of an object (and is also used to 16604bypass the "implicit conversion" mechanism of the Store operator.) 16605 16606The ACPI 2.0 semantics for the SizeOf operator are fully 16607implemented. The change is that performing a SizeOf on a 16608reference object causes an automatic dereference of the object to 16609tha actual value before the size is evaluated. This behavior was 16610undefined in ACPI 1.0. 16611 16612The ACPI 2.0 semantics for the Extended IRQ resource descriptor 16613have been implemented. The interrupt polarity and mode are now 16614independently set. 16615 16616Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 16617appearing in Package objects were not properly converted to 16618integers when the internal Package was converted to an external 16619object (via the AcpiEvaluateObject interface.) 16620 16621Fixed a problem with the namespace object deletion mechanism for 16622objects created by control methods. There were two parts to this 16623problem: 1) Objects created during the initialization phase method 16624parse were not being deleted, and 2) The object owner ID mechanism 16625to track objects was broken. 16626 16627Fixed a problem where the use of the ASL Scope operator within a 16628control method would result in an invalid opcode exception. 16629 16630Fixed a problem introduced in the previous label where the buffer 16631length required for the _PRT structure was not being returned 16632correctly. 16633 16634Code and Data Size: Current core subsystem library sizes are shown 16635below. These are the code and data sizes for the acpica.lib 16636produced by the Microsoft Visual C++ 6.0 compiler, and these 16637values do not include any ACPI driver or OSPM code. The debug 16638version of the code includes the debug output trace mechanism and 16639has a larger code and data size. Note that these values will vary 16640depending on the efficiency of the compiler and the compiler 16641options used during generation. 16642 16643 Previous Release (11_20_01) 16644 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 16645 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 16646 16647 Current Release: 16648 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 16649 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 16650 16651 2) Linux: 16652 16653Updated all files to apply cleanly against 2.4.16. 16654 16655Added basic PCI Interrupt Routing Table (PRT) support for IA32 16656(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 16657version supports both static and dyanmic PRT entries, but dynamic 16658entries are treated as if they were static (not yet 16659reconfigurable). Architecture- specific code to use this data is 16660absent on IA32 but should be available shortly. 16661 16662Changed the initialization sequence to start the ACPI interpreter 16663(acpi_init) prior to initialization of the PCI driver (pci_init) 16664in init/main.c. This ordering is required to support PRT and 16665facilitate other (future) enhancement. A side effect is that the 16666ACPI bus driver and certain device drivers can no longer be loaded 16667as modules. 16668 16669Modified the 'make menuconfig' options to allow PCI Interrupt 16670Routing support to be included without the ACPI Bus and other 16671device drivers. 16672 16673 3) ASL Compiler, version X2033: 16674 16675Fixed some issues with the use of the new CopyObject and 16676DataTableRegion operators. Both are fully functional. 16677 16678 ---------------------------------------- 16679Summary of changes for this label: 11_20_01 16680 16681 20 November 2001. Summary of changes for this release. 16682 16683 1) ACPI CA Core Subsystem: 16684 16685Updated Index support to match ACPI 2.0 semantics. Storing a 16686Integer, String, or Buffer to an Index of a Buffer will store only 16687the least-significant byte of the source to the Indexed buffer 16688byte. Multiple writes are not performed. 16689 16690Fixed a problem where the access type used in an AccessAs ASL 16691operator was not recorded correctly into the field object. 16692 16693Fixed a problem where ASL Event objects were created in a 16694signalled state. Events are now created in an unsignalled state. 16695 16696The internal object cache is now purged after table loading and 16697initialization to reduce the use of dynamic kernel memory -- on 16698the assumption that object use is greatest during the parse phase 16699of the entire table (versus the run-time use of individual control 16700methods.) 16701 16702ACPI 2.0 variable-length packages are now fully operational. 16703 16704Code and Data Size: Code and Data optimizations have permitted new 16705feature development with an actual reduction in the library size. 16706Current core subsystem library sizes are shown below. These are 16707the code and data sizes for the acpica.lib produced by the 16708Microsoft Visual C++ 6.0 compiler, and these values do not include 16709any ACPI driver or OSPM code. The debug version of the code 16710includes the debug output trace mechanism and has a larger code 16711and data size. Note that these values will vary depending on the 16712efficiency of the compiler and the compiler options used during 16713generation. 16714 16715 Previous Release (11_09_01): 16716 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 16717 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 16718 16719 Current Release: 16720 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 16721 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 16722 16723 2) Linux: 16724 16725Enhanced the ACPI boot-time initialization code to allow the use 16726of Local APIC tables for processor enumeration on IA-32, and to 16727pave the way for a fully MPS-free boot (on SMP systems) in the 16728near future. This functionality replaces 16729arch/i386/kernel/acpitables.c, which was introduced in an earlier 167302.4.15-preX release. To enable this feature you must add 16731"acpi_boot=on" to the kernel command line -- see the help entry 16732for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 16733the works... 16734 16735Restructured the configuration options to allow boot-time table 16736parsing support without inclusion of the ACPI Interpreter (and 16737other) code. 16738 16739NOTE: This release does not include fixes for the reported events, 16740power-down, and thermal passive cooling issues (coming soon). 16741 16742 3) ASL Compiler: 16743 16744Added additional typechecking for Fields within restricted access 16745Operation Regions. All fields within EC and CMOS regions must be 16746declared with ByteAcc. All fields withing SMBus regions must be 16747declared with the BufferAcc access type. 16748 16749Fixed a problem where the listing file output of control methods 16750no longer interleaved the actual AML code with the ASL source 16751code. 16752 16753 16754 16755 16756---------------------------------------- 16757Summary of changes for this label: 11_09_01 16758 167591) ACPI CA Core Subsystem: 16760 16761Implemented ACPI 2.0-defined support for writes to fields with a 16762Buffer, String, or Integer source operand that is smaller than the 16763target field. In these cases, the source operand is zero-extended 16764to fill the target field. 16765 16766Fixed a problem where a Field starting bit offset (within the 16767parent operation region) was calculated incorrectly if the 16768 16769alignment of the field differed from the access width. This 16770affected CreateWordField, CreateDwordField, CreateQwordField, and 16771possibly other fields that use the "AccessAny" keyword. 16772 16773Fixed a problem introduced in the 11_02_01 release where indirect 16774stores through method arguments did not operate correctly. 16775 167762) Linux: 16777 16778Implemented boot-time ACPI table parsing support 16779(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 16780facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 16781legacy BIOS interfaces (e.g. MPS) for the configuration of system 16782processors, memory, and interrupts during setup_arch(). Note that 16783this patch does not include the required architecture-specific 16784changes required to apply this information -- subsequent patches 16785will be posted for both IA32 and IA64 to achieve this. 16786 16787Added low-level sleep support for IA32 platforms, courtesy of Pat 16788Mochel. This allows IA32 systems to transition to/from various 16789sleeping states (e.g. S1, S3), although the lack of a centralized 16790driver model and power-manageable drivers will prevent its 16791(successful) use on most systems. 16792 16793Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 16794submenu, unified IA32 and IA64 options, added new "Boot using ACPI 16795tables" option, etc. 16796 16797Increased the default timeout for the EC driver from 1ms to 10ms 16798(1000 cycles of 10us) to try to address AE_TIME errors during EC 16799transactions. 16800 16801 ---------------------------------------- 16802Summary of changes for this label: 11_02_01 16803 168041) ACPI CA Core Subsystem: 16805 16806ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 16807(QWordAcc keyword). All ACPI 2.0 64-bit support is now 16808implemented. 16809 16810OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 16811changes to support ACPI 2.0 Qword field access. Read/Write 16812PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 16813accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 16814the value parameter for the address space handler interface is now 16815an ACPI_INTEGER. OSL implementations of these interfaces must now 16816handle the case where the Width parameter is 64. 16817 16818Index Fields: Fixed a problem where unaligned bit assembly and 16819disassembly for IndexFields was not supported correctly. 16820 16821Index and Bank Fields: Nested Index and Bank Fields are now 16822supported. During field access, a check is performed to ensure 16823that the value written to an Index or Bank register is not out of 16824the range of the register. The Index (or Bank) register is 16825written before each access to the field data. Future support will 16826include allowing individual IndexFields to be wider than the 16827DataRegister width. 16828 16829Fields: Fixed a problem where the AML interpreter was incorrectly 16830attempting to write beyond the end of a Field/OpRegion. This was 16831a boundary case that occurred when a DWORD field was written to a 16832BYTE access OpRegion, forcing multiple writes and causing the 16833interpreter to write one datum too many. 16834 16835Fields: Fixed a problem with Field/OpRegion access where the 16836starting bit address of a field was incorrectly calculated if the 16837current access type was wider than a byte (WordAcc, DwordAcc, or 16838QwordAcc). 16839 16840Fields: Fixed a problem where forward references to individual 16841FieldUnits (individual Field names within a Field definition) were 16842not resolved during the AML table load. 16843 16844Fields: Fixed a problem where forward references from a Field 16845definition to the parent Operation Region definition were not 16846resolved during the AML table load. 16847 16848Fields: Duplicate FieldUnit names within a scope are now detected 16849during AML table load. 16850 16851Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 16852returned an incorrect name for the root node. 16853 16854Code and Data Size: Code and Data optimizations have permitted new 16855feature development with an actual reduction in the library size. 16856Current core subsystem library sizes are shown below. These are 16857the code and data sizes for the acpica.lib produced by the 16858Microsoft Visual C++ 6.0 compiler, and these values do not include 16859any ACPI driver or OSPM code. The debug version of the code 16860includes the debug output trace mechanism and has a larger code 16861and data size. Note that these values will vary depending on the 16862efficiency of the compiler and the compiler options used during 16863generation. 16864 16865 Previous Release (10_18_01): 16866 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 16867 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 16868 16869 Current Release: 16870 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 16871 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 16872 16873 2) Linux: 16874 16875Improved /proc processor output (Pavel Machek) Re-added 16876MODULE_LICENSE("GPL") to all modules. 16877 16878 3) ASL Compiler version X2030: 16879 16880Duplicate FieldUnit names within a scope are now detected and 16881flagged as errors. 16882 16883 4) Documentation: 16884 16885Programmer Reference updated to reflect OSL and address space 16886handler interface changes described above. 16887 16888---------------------------------------- 16889Summary of changes for this label: 10_18_01 16890 16891ACPI CA Core Subsystem: 16892 16893Fixed a problem with the internal object reference count mechanism 16894that occasionally caused premature object deletion. This resolves 16895all of the outstanding problem reports where an object is deleted 16896in the middle of an interpreter evaluation. Although this problem 16897only showed up in rather obscure cases, the solution to the 16898problem involved an adjustment of all reference counts involving 16899objects attached to namespace nodes. 16900 16901Fixed a problem with Field support in the interpreter where 16902writing to an aligned field whose length is an exact multiple (2 16903or greater) of the field access granularity would cause an attempt 16904to write beyond the end of the field. 16905 16906The top level AML opcode execution functions within the 16907interpreter have been renamed with a more meaningful and 16908consistent naming convention. The modules exmonad.c and 16909exdyadic.c were eliminated. New modules are exoparg1.c, 16910exoparg2.c, exoparg3.c, and exoparg6.c. 16911 16912Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 16913 16914Fixed a problem where the AML debugger was causing some internal 16915objects to not be deleted during subsystem termination. 16916 16917Fixed a problem with the external AcpiEvaluateObject interface 16918where the subsystem would fault if the named object to be 16919evaluated refered to a constant such as Zero, Ones, etc. 16920 16921Fixed a problem with IndexFields and BankFields where the 16922subsystem would fault if the index, data, or bank registers were 16923not defined in the same scope as the field itself. 16924 16925Added printf format string checking for compilers that support 16926this feature. Corrected more than 50 instances of issues with 16927format specifiers within invocations of ACPI_DEBUG_PRINT 16928throughout the core subsystem code. 16929 16930The ASL "Revision" operator now returns the ACPI support level 16931implemented in the core - the value "2" since the ACPI 2.0 support 16932is more than 50% implemented. 16933 16934Enhanced the output of the AML debugger "dump namespace" command 16935to output in a more human-readable form. 16936 16937Current core subsystem library code sizes are shown below. These 16938 16939are the code and data sizes for the acpica.lib produced by the 16940Microsoft Visual C++ 6.0 compiler, and these values do not include 16941any ACPI driver or OSPM code. The debug version of the code 16942includes the full debug trace mechanism -- leading to a much 16943 16944larger code and data size. Note that these values will vary 16945depending on the efficiency of the compiler and the compiler 16946options used during generation. 16947 16948 Previous Label (09_20_01): 16949 Non-Debug Version: 65K Code, 5K Data, 70K Total 16950 Debug Version: 138K Code, 58K Data, 196K Total 16951 16952 This Label: 16953 16954 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 16955 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 16956 16957Linux: 16958 16959Implemented a "Bad BIOS Blacklist" to track machines that have 16960known ASL/AML problems. 16961 16962Enhanced the /proc interface for the thermal zone driver and added 16963support for _HOT (the critical suspend trip point). The 'info' 16964file now includes threshold/policy information, and allows setting 16965of _SCP (cooling preference) and _TZP (polling frequency) values 16966to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 16967frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 16968preference to the passive/quiet mode (if supported by the ASL). 16969 16970Implemented a workaround for a gcc bug that resuted in an OOPs 16971when loading the control method battery driver. 16972 16973 ---------------------------------------- 16974Summary of changes for this label: 09_20_01 16975 16976 ACPI CA Core Subsystem: 16977 16978The AcpiEnableEvent and AcpiDisableEvent interfaces have been 16979modified to allow individual GPE levels to be flagged as wake- 16980enabled (i.e., these GPEs are to remain enabled when the platform 16981sleeps.) 16982 16983The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 16984support wake-enabled GPEs. This means that upon entering the 16985sleep state, all GPEs that are not wake-enabled are disabled. 16986When leaving the sleep state, these GPEs are reenabled. 16987 16988A local double-precision divide/modulo module has been added to 16989enhance portability to OS kernels where a 64-bit math library is 16990not available. The new module is "utmath.c". 16991 16992Several optimizations have been made to reduce the use of CPU 16993stack. Originally over 2K, the maximum stack usage is now below 169942K at 1860 bytes (1.82k) 16995 16996Fixed a problem with the AcpiGetFirmwareTable interface where the 16997root table pointer was not mapped into a logical address properly. 16998 16999Fixed a problem where a NULL pointer was being dereferenced in the 17000interpreter code for the ASL Notify operator. 17001 17002Fixed a problem where the use of the ASL Revision operator 17003returned an error. This operator now returns the current version 17004of the ACPI CA core subsystem. 17005 17006Fixed a problem where objects passed as control method parameters 17007to AcpiEvaluateObject were always deleted at method termination. 17008However, these objects may end up being stored into the namespace 17009by the called method. The object reference count mechanism was 17010applied to these objects instead of a force delete. 17011 17012Fixed a problem where static strings or buffers (contained in the 17013AML code) that are declared as package elements within the ASL 17014code could cause a fault because the interpreter would attempt to 17015delete them. These objects are now marked with the "static 17016object" flag to prevent any attempt to delete them. 17017 17018Implemented an interpreter optimization to use operands directly 17019from the state object instead of extracting the operands to local 17020variables. This reduces stack use and code size, and improves 17021performance. 17022 17023The module exxface.c was eliminated as it was an unnecessary extra 17024layer of code. 17025 17026Current core subsystem library code sizes are shown below. These 17027are the code and data sizes for the acpica.lib produced by the 17028Microsoft Visual C++ 6.0 compiler, and these values do not include 17029any ACPI driver or OSPM code. The debug version of the code 17030includes the full debug trace mechanism -- leading to a much 17031larger code and data size. Note that these values will vary 17032depending on the efficiency of the compiler and the compiler 17033options used during generation. 17034 17035 Non-Debug Version: 65K Code, 5K Data, 70K Total 17036(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 17037Total (Previously 195K) 17038 17039Linux: 17040 17041Support for ACPI 2.0 64-bit integers has been added. All ACPI 17042Integer objects are now 64 bits wide 17043 17044All Acpi data types and structures are now in lower case. Only 17045Acpi macros are upper case for differentiation. 17046 17047 Documentation: 17048 17049Changes to the external interfaces as described above. 17050 17051 ---------------------------------------- 17052Summary of changes for this label: 08_31_01 17053 17054 ACPI CA Core Subsystem: 17055 17056A bug with interpreter implementation of the ASL Divide operator 17057was found and fixed. The implicit function return value (not the 17058explicit store operands) was returning the remainder instead of 17059the quotient. This was a longstanding bug and it fixes several 17060known outstanding issues on various platforms. 17061 17062The ACPI_DEBUG_PRINT and function trace entry/exit macros have 17063been further optimized for size. There are 700 invocations of the 17064DEBUG_PRINT macro alone, so each optimization reduces the size of 17065the debug version of the subsystem significantly. 17066 17067A stack trace mechanism has been implemented. The maximum stack 17068usage is about 2K on 32-bit platforms. The debugger command "stat 17069stack" will display the current maximum stack usage. 17070 17071All public symbols and global variables within the subsystem are 17072now prefixed with the string "Acpi". This keeps all of the 17073symbols grouped together in a kernel map, and avoids conflicts 17074with other kernel subsystems. 17075 17076Most of the internal fixed lookup tables have been moved into the 17077code segment via the const operator. 17078 17079Several enhancements have been made to the interpreter to both 17080reduce the code size and improve performance. 17081 17082Current core subsystem library code sizes are shown below. These 17083are the code and data sizes for the acpica.lib produced by the 17084Microsoft Visual C++ 6.0 compiler, and these values do not include 17085any ACPI driver or OSPM code. The debug version of the code 17086includes the full debug trace mechanism which contains over 700 17087invocations of the DEBUG_PRINT macro, 500 function entry macro 17088invocations, and over 900 function exit macro invocations -- 17089leading to a much larger code and data size. Note that these 17090values will vary depending on the efficiency of the compiler and 17091the compiler options used during generation. 17092 17093 Non-Debug Version: 64K Code, 5K Data, 69K Total 17094Debug Version: 137K Code, 58K Data, 195K Total 17095 17096 Linux: 17097 17098Implemented wbinvd() macro, pending a kernel-wide definition. 17099 17100Fixed /proc/acpi/event to handle poll() and short reads. 17101 17102 ASL Compiler, version X2026: 17103 17104Fixed a problem introduced in the previous label where the AML 17105 17106code emitted for package objects produced packages with zero 17107length. 17108 17109 ---------------------------------------- 17110Summary of changes for this label: 08_16_01 17111 17112ACPI CA Core Subsystem: 17113 17114The following ACPI 2.0 ASL operators have been implemented in the 17115AML interpreter (These are already supported by the Intel ASL 17116compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 17117ToBuffer. Support for 64-bit AML constants is implemented in the 17118AML parser, debugger, and disassembler. 17119 17120The internal memory tracking mechanism (leak detection code) has 17121been upgraded to reduce the memory overhead (a separate tracking 17122block is no longer allocated for each memory allocation), and now 17123supports all of the internal object caches. 17124 17125The data structures and code for the internal object caches have 17126been coelesced and optimized so that there is a single cache and 17127memory list data structure and a single group of functions that 17128implement generic cache management. This has reduced the code 17129size in both the debug and release versions of the subsystem. 17130 17131The DEBUG_PRINT macro(s) have been optimized for size and replaced 17132by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 17133different, because it generates a single call to an internal 17134function. This results in a savings of about 90 bytes per 17135invocation, resulting in an overall code and data savings of about 1713616% in the debug version of the subsystem. 17137 17138 Linux: 17139 17140Fixed C3 disk corruption problems and re-enabled C3 on supporting 17141machines. 17142 17143Integrated low-level sleep code by Patrick Mochel. 17144 17145Further tweaked source code Linuxization. 17146 17147Other minor fixes. 17148 17149 ASL Compiler: 17150 17151Support for ACPI 2.0 variable length packages is fixed/completed. 17152 17153Fixed a problem where the optional length parameter for the ACPI 171542.0 ToString operator. 17155 17156Fixed multiple extraneous error messages when a syntax error is 17157detected within the declaration line of a control method. 17158 17159 ---------------------------------------- 17160Summary of changes for this label: 07_17_01 17161 17162ACPI CA Core Subsystem: 17163 17164Added a new interface named AcpiGetFirmwareTable to obtain any 17165ACPI table via the ACPI signature. The interface can be called at 17166any time during kernel initialization, even before the kernel 17167virtual memory manager is initialized and paging is enabled. This 17168allows kernel subsystems to obtain ACPI tables very early, even 17169before the ACPI CA subsystem is initialized. 17170 17171Fixed a problem where Fields defined with the AnyAcc attribute 17172could be resolved to the incorrect address under the following 17173conditions: 1) the field width is larger than 8 bits and 2) the 17174parent operation region is not defined on a DWORD boundary. 17175 17176Fixed a problem where the interpreter is not being locked during 17177namespace initialization (during execution of the _INI control 17178methods), causing an error when an attempt is made to release it 17179later. 17180 17181ACPI 2.0 support in the AML Interpreter has begun and will be 17182ongoing throughout the rest of this year. In this label, The Mod 17183operator is implemented. 17184 17185Added a new data type to contain full PCI addresses named 17186ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 17187and Function values. 17188 17189 Linux: 17190 17191Enhanced the Linux version of the source code to change most 17192capitalized ACPI type names to lowercase. For example, all 17193instances of ACPI_STATUS are changed to acpi_status. This will 17194result in a large diff, but the change is strictly cosmetic and 17195aligns the CA code closer to the Linux coding standard. 17196 17197OSL Interfaces: 17198 17199The interfaces to the PCI configuration space have been changed to 17200add the PCI Segment number and to split the single 32-bit combined 17201DeviceFunction field into two 16-bit fields. This was 17202accomplished by moving the four values that define an address in 17203PCI configuration space (segment, bus, device, and function) to 17204the new ACPI_PCI_ID structure. 17205 17206The changes to the PCI configuration space interfaces led to a 17207reexamination of the complete set of address space access 17208interfaces for PCI, I/O, and Memory. The previously existing 18 17209interfaces have proven difficult to maintain (any small change 17210must be propagated across at least 6 interfaces) and do not easily 17211allow for future expansion to 64 bits if necessary. Also, on some 17212systems, it would not be appropriate to demultiplex the access 17213width (8, 16, 32,or 64) before calling the OSL if the 17214corresponding native OS interfaces contain a similar access width 17215parameter. For these reasons, the 18 address space interfaces 17216have been replaced by these 6 new ones: 17217 17218AcpiOsReadPciConfiguration 17219AcpiOsWritePciConfiguration 17220AcpiOsReadMemory 17221AcpiOsWriteMemory 17222AcpiOsReadPort 17223AcpiOsWritePort 17224 17225Added a new interface named AcpiOsGetRootPointer to allow the OSL 17226to perform the platform and/or OS-specific actions necessary to 17227obtain the ACPI RSDP table pointer. On IA-32 platforms, this 17228interface will simply call down to the CA core to perform the low- 17229memory search for the table. On IA-64, the RSDP is obtained from 17230EFI. Migrating this interface to the OSL allows the CA core to 17231 17232remain OS and platform independent. 17233 17234Added a new interface named AcpiOsSignal to provide a generic 17235"function code and pointer" interface for various miscellaneous 17236signals and notifications that must be made to the host OS. The 17237first such signals are intended to support the ASL Fatal and 17238Breakpoint operators. In the latter case, the AcpiOsBreakpoint 17239interface has been obsoleted. 17240 17241The definition of the AcpiFormatException interface has been 17242changed to simplify its use. The caller no longer must supply a 17243buffer to the call; A pointer to a const string is now returned 17244directly. This allows the call to be easily used in printf 17245statements, etc. since the caller does not have to manage a local 17246buffer. 17247 17248 17249 ASL Compiler, Version X2025: 17250 17251The ACPI 2.0 Switch/Case/Default operators have been implemented 17252and are fully functional. They will work with all ACPI 1.0 17253interpreters, since the operators are simply translated to If/Else 17254pairs. 17255 17256The ACPI 2.0 ElseIf operator is implemented and will also work 17257with 1.0 interpreters, for the same reason. 17258 17259Implemented support for ACPI 2.0 variable-length packages. These 17260packages have a separate opcode, and their size is determined by 17261the interpreter at run-time. 17262 17263Documentation The ACPI CA Programmer Reference has been updated to 17264reflect the new interfaces and changes to existing interfaces. 17265 17266 ------------------------------------------ 17267Summary of changes for this label: 06_15_01 17268 17269 ACPI CA Core Subsystem: 17270 17271Fixed a problem where a DWORD-accessed field within a Buffer 17272object would get its byte address inadvertently rounded down to 17273the nearest DWORD. Buffers are always Byte-accessible. 17274 17275 ASL Compiler, version X2024: 17276 17277Fixed a problem where the Switch() operator would either fault or 17278hang the compiler. Note however, that the AML code for this ACPI 172792.0 operator is not yet implemented. 17280 17281Compiler uses the new AcpiOsGetTimer interface to obtain compile 17282timings. 17283 17284Implementation of the CreateField operator automatically converts 17285a reference to a named field within a resource descriptor from a 17286byte offset to a bit offset if required. 17287 17288Added some missing named fields from the resource descriptor 17289support. These are the names that are automatically created by the 17290compiler to reference fields within a descriptor. They are only 17291valid at compile time and are not passed through to the AML 17292interpreter. 17293 17294Resource descriptor named fields are now typed as Integers and 17295subject to compile-time typechecking when used in expressions. 17296 17297 ------------------------------------------ 17298Summary of changes for this label: 05_18_01 17299 17300 ACPI CA Core Subsystem: 17301 17302Fixed a couple of problems in the Field support code where bits 17303from adjacent fields could be returned along with the proper field 17304bits. Restructured the field support code to improve performance, 17305readability and maintainability. 17306 17307New DEBUG_PRINTP macro automatically inserts the procedure name 17308into the output, saving hundreds of copies of procedure name 17309strings within the source, shrinking the memory footprint of the 17310debug version of the core subsystem. 17311 17312 Source Code Structure: 17313 17314The source code directory tree was restructured to reflect the 17315current organization of the component architecture. Some files 17316and directories have been moved and/or renamed. 17317 17318 Linux: 17319 17320Fixed leaking kacpidpc processes. 17321 17322Fixed queueing event data even when /proc/acpi/event is not 17323opened. 17324 17325 ASL Compiler, version X2020: 17326 17327Memory allocation performance enhancement - over 24X compile time 17328improvement on large ASL files. Parse nodes and namestring 17329buffers are now allocated from a large internal compiler buffer. 17330 17331The temporary .SRC file is deleted unless the "-s" option is 17332specified 17333 17334The "-d" debug output option now sends all output to the .DBG file 17335instead of the console. 17336 17337"External" second parameter is now optional 17338 17339"ElseIf" syntax now properly allows the predicate 17340 17341Last operand to "Load" now recognized as a Target operand 17342 17343Debug object can now be used anywhere as a normal object. 17344 17345ResourceTemplate now returns an object of type BUFFER 17346 17347EISAID now returns an object of type INTEGER 17348 17349"Index" now works with a STRING operand 17350 17351"LoadTable" now accepts optional parameters 17352 17353"ToString" length parameter is now optional 17354 17355"Interrupt (ResourceType," parse error fixed. 17356 17357"Register" with a user-defined region space parse error fixed 17358 17359Escaped backslash at the end of a string ("\\") scan/parse error 17360fixed 17361 17362"Revision" is now an object of type INTEGER. 17363 17364 17365 17366------------------------------------------ 17367Summary of changes for this label: 05_02_01 17368 17369Linux: 17370 17371/proc/acpi/event now blocks properly. 17372 17373Removed /proc/sys/acpi. You can still dump your DSDT from 17374/proc/acpi/dsdt. 17375 17376 ACPI CA Core Subsystem: 17377 17378Fixed a problem introduced in the previous label where some of the 17379"small" resource descriptor types were not recognized. 17380 17381Improved error messages for the case where an ASL Field is outside 17382the range of the parent operation region. 17383 17384 ASL Compiler, version X2018: 17385 17386 17387Added error detection for ASL Fields that extend beyond the length 17388of the parent operation region (only if the length of the region 17389is known at compile time.) This includes fields that have a 17390minimum access width that is smaller than the parent region, and 17391individual field units that are partially or entirely beyond the 17392extent of the parent. 17393 17394 17395 17396------------------------------------------ 17397Summary of changes for this label: 04_27_01 17398 17399 ACPI CA Core Subsystem: 17400 17401Fixed a problem where the namespace mutex could be released at the 17402wrong time during execution of AcpiRemoveAddressSpaceHandler. 17403 17404Added optional thread ID output for debug traces, to simplify 17405debugging of multiple threads. Added context switch notification 17406when the debug code realizes that a different thread is now 17407executing ACPI code. 17408 17409Some additional external data types have been prefixed with the 17410string "ACPI_" for consistency. This may effect existing code. 17411The data types affected are the external callback typedefs - e.g., 17412 17413WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 17414 17415 Linux: 17416 17417Fixed an issue with the OSL semaphore implementation where a 17418thread was waking up with an error from receiving a SIGCHLD 17419signal. 17420 17421Linux version of ACPI CA now uses the system C library for string 17422manipulation routines instead of a local implementation. 17423 17424Cleaned up comments and removed TBDs. 17425 17426 ASL Compiler, version X2017: 17427 17428Enhanced error detection and reporting for all file I/O 17429operations. 17430 17431 Documentation: 17432 17433Programmer Reference updated to version 1.06. 17434 17435 17436 17437------------------------------------------ 17438Summary of changes for this label: 04_13_01 17439 17440 ACPI CA Core Subsystem: 17441 17442Restructured support for BufferFields and RegionFields. 17443BankFields support is now fully operational. All known 32-bit 17444limitations on field sizes have been removed. Both BufferFields 17445and (Operation) RegionFields are now supported by the same field 17446management code. 17447 17448Resource support now supports QWORD address and IO resources. The 1744916/32/64 bit address structures and the Extended IRQ structure 17450have been changed to properly handle Source Resource strings. 17451 17452A ThreadId of -1 is now used to indicate a "mutex not acquired" 17453condition internally and must never be returned by AcpiOsThreadId. 17454This reserved value was changed from 0 since Unix systems allow a 17455thread ID of 0. 17456 17457Linux: 17458 17459Driver code reorganized to enhance portability 17460 17461Added a kernel configuration option to control ACPI_DEBUG 17462 17463Fixed the EC driver to honor _GLK. 17464 17465ASL Compiler, version X2016: 17466 17467Fixed support for the "FixedHw" keyword. Previously, the FixedHw 17468address space was set to 0, not 0x7f as it should be. 17469 17470 ------------------------------------------ 17471Summary of changes for this label: 03_13_01 17472 17473 ACPI CA Core Subsystem: 17474 17475During ACPI initialization, the _SB_._INI method is now run if 17476present. 17477 17478Notify handler fix - notifies are deferred until the parent method 17479completes execution. This fixes the "mutex already acquired" 17480issue seen occasionally. 17481 17482Part of the "implicit conversion" rules in ACPI 2.0 have been 17483found to cause compatibility problems with existing ASL/AML. The 17484convert "result-to-target-type" implementation has been removed 17485for stores to method Args and Locals. Source operand conversion 17486is still fully implemented. Possible changes to ACPI 2.0 17487specification pending. 17488 17489Fix to AcpiRsCalculatePciRoutingTableLength to return correct 17490length. 17491 17492Fix for compiler warnings for 64-bit compiles. 17493 17494 Linux: 17495 17496/proc output aligned for easier parsing. 17497 17498Release-version compile problem fixed. 17499 17500New kernel configuration options documented in Configure.help. 17501 17502IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 17503context" message. 17504 17505 OSPM: 17506 17507Power resource driver integrated with bus manager. 17508 17509Fixed kernel fault during active cooling for thermal zones. 17510 17511Source Code: 17512 17513The source code tree has been restructured. 17514 17515 17516 17517------------------------------------------ 17518Summary of changes for this label: 03_02_01 17519 17520 Linux OS Services Layer (OSL): 17521 17522Major revision of all Linux-specific code. 17523 17524Modularized all ACPI-specific drivers. 17525 17526Added new thermal zone and power resource drivers. 17527 17528Revamped /proc interface (new functionality is under /proc/acpi). 17529 17530New kernel configuration options. 17531 17532 Linux known issues: 17533 17534New kernel configuration options not documented in Configure.help 17535yet. 17536 17537 17538Module dependencies not currently implemented. If used, they 17539should be loaded in this order: busmgr, power, ec, system, 17540processor, battery, ac_adapter, button, thermal. 17541 17542Modules will not load if CONFIG_MODVERSION is set. 17543 17544IBM 600E - entering S5 may reboot instead of shutting down. 17545 17546IBM 600E - Sleep button may generate "Invalid <NULL> context" 17547message. 17548 17549Some systems may fail with "execution mutex already acquired" 17550message. 17551 17552 ACPI CA Core Subsystem: 17553 17554Added a new OSL Interface, AcpiOsGetThreadId. This was required 17555for the deadlock detection code. Defined to return a non-zero, 32- 17556bit thread ID for the currently executing thread. May be a non- 17557zero constant integer on single-thread systems. 17558 17559Implemented deadlock detection for internal subsystem mutexes. We 17560may add conditional compilation for this code (debug only) later. 17561 17562ASL/AML Mutex object semantics are now fully supported. This 17563includes multiple acquires/releases by owner and support for the 17564 17565Mutex SyncLevel parameter. 17566 17567A new "Force Release" mechanism automatically frees all ASL 17568Mutexes that have been acquired but not released when a thread 17569exits the interpreter. This forces conformance to the ACPI spec 17570("All mutexes must be released when an invocation exits") and 17571prevents deadlocked ASL threads. This mechanism can be expanded 17572(later) to monitor other resource acquisitions if OEM ASL code 17573continues to misbehave (which it will). 17574 17575Several new ACPI exception codes have been added for the Mutex 17576support. 17577 17578Recursive method calls are now allowed and supported (the ACPI 17579spec does in fact allow recursive method calls.) The number of 17580recursive calls is subject to the restrictions imposed by the 17581SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 17582parameter. 17583 17584Implemented support for the SyncLevel parameter for control 17585methods (ACPI 2.0 feature) 17586 17587Fixed a deadlock problem when multiple threads attempted to use 17588the interpreter. 17589 17590Fixed a problem where the string length of a String package 17591element was not always set in a package returned from 17592AcpiEvaluateObject. 17593 17594Fixed a problem where the length of a String package element was 17595not always included in the length of the overall package returned 17596from AcpiEvaluateObject. 17597 17598Added external interfaces (Acpi*) to the ACPI debug memory 17599manager. This manager keeps a list of all outstanding 17600allocations, and can therefore detect memory leaks and attempts to 17601free memory blocks more than once. Useful for code such as the 17602power manager, etc. May not be appropriate for device drivers. 17603Performance with the debug code enabled is slow. 17604 17605The ACPI Global Lock is now an optional hardware element. 17606 17607 ASL Compiler Version X2015: 17608 17609Integrated changes to allow the compiler to be generated on 17610multiple platforms. 17611 17612Linux makefile added to generate the compiler on Linux 17613 17614 Source Code: 17615 17616All platform-specific headers have been moved to their own 17617subdirectory, Include/Platform. 17618 17619New source file added, Interpreter/ammutex.c 17620 17621New header file, Include/acstruct.h 17622 17623 Documentation: 17624 17625The programmer reference has been updated for the following new 17626interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 17627 17628 ------------------------------------------ 17629Summary of changes for this label: 02_08_01 17630 17631Core ACPI CA Subsystem: Fixed a problem where an error was 17632incorrectly returned if the return resource buffer was larger than 17633the actual data (in the resource interfaces). 17634 17635References to named objects within packages are resolved to the 17636 17637full pathname string before packages are returned directly (via 17638the AcpiEvaluateObject interface) or indirectly via the resource 17639interfaces. 17640 17641Linux OS Services Layer (OSL): 17642 17643Improved /proc battery interface. 17644 17645 17646Added C-state debugging output and other miscellaneous fixes. 17647 17648ASL Compiler Version X2014: 17649 17650All defined method arguments can now be used as local variables, 17651including the ones that are not actually passed in as parameters. 17652The compiler tracks initialization of the arguments and issues an 17653exception if they are used without prior assignment (just like 17654locals). 17655 17656The -o option now specifies a filename prefix that is used for all 17657output files, including the AML output file. Otherwise, the 17658default behavior is as follows: 1) the AML goes to the file 17659specified in the DSDT. 2) all other output files use the input 17660source filename as the base. 17661 17662 ------------------------------------------ 17663Summary of changes for this label: 01_25_01 17664 17665Core ACPI CA Subsystem: Restructured the implementation of object 17666store support within the interpreter. This includes support for 17667the Store operator as well as any ASL operators that include a 17668target operand. 17669 17670Partially implemented support for Implicit Result-to-Target 17671conversion. This is when a result object is converted on the fly 17672to the type of an existing target object. Completion of this 17673support is pending further analysis of the ACPI specification 17674concerning this matter. 17675 17676CPU-specific code has been removed from the subsystem (hardware 17677directory). 17678 17679New Power Management Timer functions added 17680 17681Linux OS Services Layer (OSL): Moved system state transition code 17682to the core, fixed it, and modified Linux OSL accordingly. 17683 17684Fixed C2 and C3 latency calculations. 17685 17686 17687We no longer use the compilation date for the version message on 17688initialization, but retrieve the version from AcpiGetSystemInfo(). 17689 17690Incorporated for fix Sony VAIO machines. 17691 17692Documentation: The Programmer Reference has been updated and 17693reformatted. 17694 17695 17696ASL Compiler: Version X2013: Fixed a problem where the line 17697numbering and error reporting could get out of sync in the 17698presence of multiple include files. 17699 17700 ------------------------------------------ 17701Summary of changes for this label: 01_15_01 17702 17703Core ACPI CA Subsystem: 17704 17705Implemented support for type conversions in the execution of the 17706ASL Concatenate operator (The second operand is converted to 17707match the type of the first operand before concatenation.) 17708 17709Support for implicit source operand conversion is partially 17710implemented. The ASL source operand types Integer, Buffer, and 17711String are freely interchangeable for most ASL operators and are 17712converted by the interpreter on the fly as required. Implicit 17713Target operand conversion (where the result is converted to the 17714target type before storing) is not yet implemented. 17715 17716Support for 32-bit and 64-bit BCD integers is implemented. 17717 17718Problem fixed where a field read on an aligned field could cause a 17719read past the end of the field. 17720 17721New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 17722does not return a value, but the caller expects one. (The ASL 17723compiler flags this as a warning.) 17724 17725ASL Compiler: 17726 17727Version X2011: 177281. Static typechecking of all operands is implemented. This 17729prevents the use of invalid objects (such as using a Package where 17730an Integer is required) at compile time instead of at interpreter 17731run-time. 177322. The ASL source line is printed with ALL errors and warnings. 177333. Bug fix for source EOF without final linefeed. 177344. Debug option is split into a parse trace and a namespace trace. 177355. Namespace output option (-n) includes initial values for 17736integers and strings. 177376. Parse-only option added for quick syntax checking. 177387. Compiler checks for duplicate ACPI name declarations 17739 17740Version X2012: 177411. Relaxed typechecking to allow interchangeability between 17742strings, integers, and buffers. These types are now converted by 17743the interpreter at runtime. 177442. Compiler reports time taken by each internal subsystem in the 17745debug output file. 17746 17747 17748 ------------------------------------------ 17749Summary of changes for this label: 12_14_00 17750 17751ASL Compiler: 17752 17753This is the first official release of the compiler. Since the 17754compiler requires elements of the Core Subsystem, this label 17755synchronizes everything. 17756 17757------------------------------------------ 17758Summary of changes for this label: 12_08_00 17759 17760 17761Fixed a problem where named references within the ASL definition 17762of both OperationRegions and CreateXXXFields did not work 17763properly. The symptom was an AE_AML_OPERAND_TYPE during 17764initialization of the region/field. This is similar (but not 17765related internally) to the problem that was fixed in the last 17766label. 17767 17768Implemented both 32-bit and 64-bit support for the BCD ASL 17769functions ToBCD and FromBCD. 17770 17771Updated all legal headers to include "2000" in the copyright 17772years. 17773 17774 ------------------------------------------ 17775Summary of changes for this label: 12_01_00 17776 17777Fixed a problem where method invocations within the ASL definition 17778of both OperationRegions and CreateXXXFields did not work 17779properly. The symptom was an AE_AML_OPERAND_TYPE during 17780initialization of the region/field: 17781 17782 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 17783[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 17784(0x3005) 17785 17786Fixed a problem where operators with more than one nested 17787subexpression would fail. The symptoms were varied, by mostly 17788AE_AML_OPERAND_TYPE errors. This was actually a rather serious 17789problem that has gone unnoticed until now. 17790 17791 Subtract (Add (1,2), Multiply (3,4)) 17792 17793Fixed a problem where AcpiGetHandle didn't quite get fixed in the 17794previous build (The prefix part of a relative path was handled 17795incorrectly). 17796 17797Fixed a problem where Operation Region initialization failed if 17798the operation region name was a "namepath" instead of a simple 17799"nameseg". Symptom was an AE_NO_OPERAND error. 17800 17801Fixed a problem where an assignment to a local variable via the 17802indirect RefOf mechanism only worked for the first such 17803assignment. Subsequent assignments were ignored. 17804 17805 ------------------------------------------ 17806Summary of changes for this label: 11_15_00 17807 17808ACPI 2.0 table support with backwards support for ACPI 1.0 and the 178090.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 17810the AML interpreter does NOT have support for the new 2.0 ASL 17811grammar terms at this time. 17812 17813All ACPI hardware access is via the GAS structures in the ACPI 2.0 17814FADT. 17815 17816All physical memory addresses across all platforms are now 64 bits 17817wide. Logical address width remains dependent on the platform 17818(i.e., "void *"). 17819 17820AcpiOsMapMemory interface changed to a 64-bit physical address. 17821 17822The AML interpreter integer size is now 64 bits, as per the ACPI 178232.0 specification. 17824 17825For backwards compatibility with ACPI 1.0, ACPI tables with a 17826revision number less than 2 use 32-bit integers only. 17827 17828Fixed a problem where the evaluation of OpRegion operands did not 17829always resolve them to numbers properly. 17830 17831------------------------------------------ 17832Summary of changes for this label: 10_20_00 17833 17834Fix for CBN_._STA issue. This fix will allow correct access to 17835CBN_ OpRegions when the _STA returns 0x8. 17836 17837Support to convert ACPI constants (Ones, Zeros, One) to actual 17838values before a package object is returned 17839 17840Fix for method call as predicate to if/while construct causing 17841incorrect if/while behavior 17842 17843Fix for Else block package lengths sometimes calculated wrong (if 17844block > 63 bytes) 17845 17846Fix for Processor object length field, was always zero 17847 17848Table load abort if FACP sanity check fails 17849 17850Fix for problem with Scope(name) if name already exists 17851 17852Warning emitted if a named object referenced cannot be found 17853(resolved) during method execution. 17854 17855 17856 17857 17858 17859------------------------------------------ 17860Summary of changes for this label: 9_29_00 17861 17862New table initialization interfaces: AcpiInitializeSubsystem no 17863longer has any parameters AcpiFindRootPointer - Find the RSDP (if 17864necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 17865>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 17866AcpiLoadTables 17867 17868Note: These interface changes require changes to all existing OSDs 17869 17870The PCI_Config default address space handler is always installed 17871at the root namespace object. 17872 17873------------------------------------------- 17874Summary of changes for this label: 09_15_00 17875 17876The new initialization architecture is implemented. New 17877interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 17878AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 17879 17880(Namespace is automatically loaded when a table is loaded) 17881 17882The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1788352 bytes to 32 bytes. There is usually one of these for every 17884namespace object, so the memory savings is significant. 17885 17886Implemented just-in-time evaluation of the CreateField operators. 17887 17888Bug fixes for IA-64 support have been integrated. 17889 17890Additional code review comments have been implemented 17891 17892The so-called "third pass parse" has been replaced by a final walk 17893through the namespace to initialize all operation regions (address 17894spaces) and fields that have not yet been initialized during the 17895execution of the various _INI and REG methods. 17896 17897New file - namespace/nsinit.c 17898 17899------------------------------------------- 17900Summary of changes for this label: 09_01_00 17901 17902Namespace manager data structures have been reworked to change the 17903primary object from a table to a single object. This has 17904resulted in dynamic memory savings of 3X within the namespace and 179052X overall in the ACPI CA subsystem. 17906 17907Fixed problem where the call to AcpiEvFindPciRootBuses was 17908inadvertently left commented out. 17909 17910Reduced the warning count when generating the source with the GCC 17911compiler. 17912 17913Revision numbers added to each module header showing the 17914SourceSafe version of the file. Please refer to this version 17915number when giving us feedback or comments on individual modules. 17916 17917The main object types within the subsystem have been renamed to 17918clarify their purpose: 17919 17920ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 17921ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 17922ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 17923 17924NOTE: no changes to the initialization sequence are included in 17925this label. 17926 17927------------------------------------------- 17928Summary of changes for this label: 08_23_00 17929 17930Fixed problem where TerminateControlMethod was being called 17931multiple times per method 17932 17933Fixed debugger problem where single stepping caused a semaphore to 17934be oversignalled 17935 17936Improved performance through additional parse object caching - 17937added ACPI_EXTENDED_OP type 17938 17939------------------------------------------- 17940Summary of changes for this label: 08_10_00 17941 17942Parser/Interpreter integration: Eliminated the creation of 17943complete parse trees for ACPI tables and control methods. 17944Instead, parse subtrees are created and then deleted as soon as 17945they are processed (Either entered into the namespace or executed 17946by the interpreter). This reduces the use of dynamic kernel 17947memory significantly. (about 10X) 17948 17949Exception codes broken into classes and renumbered. Be sure to 17950recompile all code that includes acexcep.h. Hopefully we won't 17951have to renumber the codes again now that they are split into 17952classes (environment, programmer, AML code, ACPI table, and 17953internal). 17954 17955Fixed some additional alignment issues in the Resource Manager 17956subcomponent 17957 17958Implemented semaphore tracking in the AcpiExec utility, and fixed 17959several places where mutexes/semaphores were being unlocked 17960without a corresponding lock operation. There are no known 17961semaphore or mutex "leaks" at this time. 17962 17963Fixed the case where an ASL Return operator is used to return an 17964unnamed package. 17965 17966------------------------------------------- 17967Summary of changes for this label: 07_28_00 17968 17969Fixed a problem with the way addresses were calculated in 17970AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 17971manifested itself when a Field was created with WordAccess or 17972DwordAccess, but the field unit defined within the Field was less 17973 17974than a Word or Dword. 17975 17976Fixed a problem in AmlDumpOperands() module's loop to pull 17977operands off of the operand stack to display information. The 17978problem manifested itself as a TLB error on 64-bit systems when 17979accessing an operand stack with two or more operands. 17980 17981Fixed a problem with the PCI configuration space handlers where 17982context was getting confused between accesses. This required a 17983change to the generic address space handler and address space 17984setup definitions. Handlers now get both a global handler context 17985(this is the one passed in by the user when executing 17986AcpiInstallAddressSpaceHandler() and a specific region context 17987that is unique to each region (For example, the _ADR, _SEG and 17988_BBN values associated with a specific region). The generic 17989function definitions have changed to the following: 17990 17991typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 17992UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 17993*HandlerContext, // This used to be void *Context void 17994*RegionContext); // This is an additional parameter 17995 17996typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 17997RegionHandle, UINT32 Function, void *HandlerContext, void 17998**RegionContext); // This used to be **ReturnContext 17999 18000------------------------------------------- 18001Summary of changes for this label: 07_21_00 18002 18003Major file consolidation and rename. All files within the 18004interpreter have been renamed as well as most header files. This 18005was done to prevent collisions with existing files in the host 18006OSs -- filenames such as "config.h" and "global.h" seem to be 18007quite common. The VC project files have been updated. All 18008makefiles will require modification. 18009 18010The parser/interpreter integration continues in Phase 5 with the 18011implementation of a complete 2-pass parse (the AML is parsed 18012twice) for each table; This avoids the construction of a huge 18013parse tree and therefore reduces the amount of dynamic memory 18014required by the subsystem. Greater use of the parse object cache 18015means that performance is unaffected. 18016 18017Many comments from the two code reviews have been rolled in. 18018 18019The 64-bit alignment support is complete. 18020 18021------------------------------------------- 18022Summary of changes for this label: 06_30_00 18023 18024With a nod and a tip of the hat to the technology of yesteryear, 18025we've added support in the source code for 80 column output 18026devices. The code is now mostly constrained to 80 columns or 18027less to support environments and editors that 1) cannot display 18028or print more than 80 characters on a single line, and 2) cannot 18029disable line wrapping. 18030 18031A major restructuring of the namespace data structure has been 18032completed. The result is 1) cleaner and more 18033understandable/maintainable code, and 2) a significant reduction 18034in the dynamic memory requirement for each named ACPI object 18035(almost half). 18036 18037------------------------------------------- 18038Summary of changes for this label: 06_23_00 18039 18040Linux support has been added. In order to obtain approval to get 18041the ACPI CA subsystem into the Linux kernel, we've had to make 18042quite a few changes to the base subsystem that will affect all 18043users (all the changes are generic and OS- independent). The 18044effects of these global changes have been somewhat far reaching. 18045Files have been merged and/or renamed and interfaces have been 18046renamed. The major changes are described below. 18047 18048Osd* interfaces renamed to AcpiOs* to eliminate namespace 18049pollution/confusion within our target kernels. All OSD 18050interfaces must be modified to match the new naming convention. 18051 18052Files merged across the subsystem. A number of the smaller source 18053and header files have been merged to reduce the file count and 18054increase the density of the existing files. There are too many 18055to list here. In general, makefiles that call out individual 18056files will require rebuilding. 18057 18058Interpreter files renamed. All interpreter files now have the 18059prefix am* instead of ie* and is*. 18060 18061Header files renamed: The acapi.h file is now acpixf.h. The 18062acpiosd.h file is now acpiosxf.h. We are removing references to 18063the acronym "API" since it is somewhat windowsy. The new name is 18064"external interface" or xface or xf in the filenames.j 18065 18066 18067All manifest constants have been forced to upper case (some were 18068mixed case.) Also, the string "ACPI_" has been prepended to many 18069(not all) of the constants, typedefs, and structs. 18070 18071The globals "DebugLevel" and "DebugLayer" have been renamed 18072"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 18073 18074All other globals within the subsystem are now prefixed with 18075"AcpiGbl_" Internal procedures within the subsystem are now 18076prefixed with "Acpi" (with only a few exceptions). The original 18077two-letter abbreviation for the subcomponent remains after "Acpi" 18078- for example, CmCallocate became AcpiCmCallocate. 18079 18080Added a source code translation/conversion utility. Used to 18081generate the Linux source code, it can be modified to generate 18082other types of source as well. Can also be used to cleanup 18083existing source by removing extraneous spaces and blank lines. 18084Found in tools/acpisrc/* 18085 18086OsdUnMapMemory was renamed to OsdUnmapMemory and then 18087AcpiOsUnmapMemory. (UnMap became Unmap). 18088 18089A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 18090When set to one, this indicates that the caller wants to use the 18091 18092semaphore as a mutex, not a counting semaphore. ACPI CA uses 18093both types. However, implementers of this call may want to use 18094different OS primitives depending on the type of semaphore 18095requested. For example, some operating systems provide separate 18096 18097"mutex" and "semaphore" interfaces - where the mutex interface is 18098much faster because it doesn't have all the overhead of a full 18099semaphore implementation. 18100 18101Fixed a deadlock problem where a method that accesses the PCI 18102address space can block forever if it is the first access to the 18103space. 18104 18105------------------------------------------- 18106Summary of changes for this label: 06_02_00 18107 18108Support for environments that cannot handle unaligned data 18109accesses (e.g. firmware and OS environments devoid of alignment 18110handler technology namely SAL/EFI and the IA-64 Linux kernel) has 18111been added (via configurable macros) in these three areas: - 18112Transfer of data from the raw AML byte stream is done via byte 18113moves instead of word/dword/qword moves. - External objects are 18114aligned within the user buffer, including package elements (sub- 18115objects). - Conversion of name strings to UINT32 Acpi Names is now 18116done byte-wise. 18117 18118The Store operator was modified to mimic Microsoft's 18119implementation when storing to a Buffer Field. 18120 18121Added a check of the BM_STS bit before entering C3. 18122 18123The methods subdirectory has been obsoleted and removed. A new 18124file, cmeval.c subsumes the functionality. 18125 18126A 16-bit (DOS) version of AcpiExec has been developed. The 18127makefile is under the acpiexec directory. 18128