1---------------------------------------- 215 February 2019. Summary of changes for version 20190215: 3 4This release is available at https://acpica.org/downloads 5 6 70) Support for ACPI specification version 6.3: 8 9Add PCC operation region support for the AML interpreter. This adds PCC 10operation region support in the AML interpreter and a default handler for 11acpiexec. The change also renames the PCC region address space keyword to 12PlatformCommChannel. 13 14Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG. 15These methods provide OSPM with health information and device boot 16status. 17 18PDTT: Add TriggerOrder to the PCC Identifier structure. The field value 19defines if the trigger needs to be invoked by OSPM before or at the end 20of kernel crash dump processing/handling operation. 21 22SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT 23is used for describing devices such as heterogeneous processors, 24accelerators, GPUs, and IO devices with integrated compute or DMA 25engines. 26 27MADT: Add support for statistical profiling in GICC. Statistical 28profiling extension (SPE) is an architecture-specific feature for ARM. 29 30MADT: Add online capable flag. If this bit is set, system hardware 31supports enabling this processor during OS runtime. 32 33New Error Disconnect Recover Notification value. There are a number of 34scenarios where system Firmware in collaboration with hardware may 35disconnect one or more devices from the rest of the system for purposes 36of error containment. Firmware can use this new notification value to 37alert OSPM of such a removal. 38 39PPTT: New additional fields in Processor Structure Flags. These flags 40provide more information about processor topology. 41 42NFIT/Disassembler: Change a field name from "Address Range" to "Region 43Type". 44 45HMAT updates: make several existing fields to be reserved as well as 46rename subtable 0 to "memory proximity domain attributes". 47 48GTDT: Add support for new GTDT Revision 3. This revision adds information 49for the EL2 timer. 50 51iASL: Update the HMAT example template for new fields. 52 53iASL: Add support for the new revision of the GTDT (Rev 3). 54 55 561) ACPICA kernel-resident subsystem: 57 58AML Parser: fix the main AML parse loop to correctly skip erroneous 59extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2- 60byte extended opcodes. If an error occurs during an AML table load, the 61AML parser will continue loading the table by skipping the offending 62opcode. This implements a "load table at any cost" philosophy. 63 64 652) iASL Compiler/Disassembler and Tools: 66 67iASL: Add checks for illegal object references, such as a reference 68outside of method to an object within a method. Such an object is only 69temporary. 70 71iASL: Emit error for creation of a zero-length operation region. Such a 72region is rather pointless. If encountered, a runtime error is also 73implemented in the interpeter. 74 75Debugger: Fix a possible fault with the "test objects" command. 76 77iASL: Makefile: support parent directory filenames containing embedded 78spaces. 79 80iASL: Update the TPM2 template to revision 4. 81 82iASL: Add the ability to report specific warnings or remarks as errors. 83 84Disassembler: Disassemble OEMx tables as actual AML byte code. 85Previously, these tables were treated as "unknown table". 86 87iASL: Add definition and disassembly for TPM2 revision 3. 88 89iASL: Add support for TPM2 rev 3 compilation. 90 91 92---------------------------------------- 9308 January 2019. Summary of changes for version 20190108: 94 95 961) ACPICA kernel-resident subsystem: 97 98Updated all copyrights to 2019. This affects all source code modules. 99 100 1012) iASL Compiler/Disassembler and Tools: 102 103ASL test suite (ASLTS): Updated all copyrights to 2019. 104 105Tools: Updated all signon copyrights to 2019. 106 107AcpiExec: Added a new option to dump extra information concerning any 108memory leaks detected by the internal object/cache tracking mechanism. - 109va 110 111iASL: Updated the table template for the TPM2 table to the newest version 112of the table (Revision 4) 113 114 115---------------------------------------- 11613 December 2018. Summary of changes for version 20181213: 117 118 1191) ACPICA Kernel-resident Subsystem: 120 121Fixed some buffer length issues with the GenericSerialBus, related to two 122of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes, 123which are rarely seen in the field. For these, the LEN field of the ASL 124buffer is now ignored. Hans de Goede 125 126Implemented a new object evaluation trace mechanism for control methods 127and data objects. This includes nested control methods. It is 128particularly useful for examining the ACPI execution during system 129initialization since the output is relatively terse. The flag below 130enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface: 131 #define ACPI_LV_EVALUATION 0x00080000 132 133Examples: 134 Enter evaluation : _SB.PCI0._INI (Method) 135 Exit evaluation : _SB.PCI0._INI 136 Enter evaluation : _OSI (Method) 137 Exit evaluation : _OSI 138 Enter evaluation : _SB.PCI0.TEST (Method) 139 Nested method call : _SB.PCI0.NST1 140 Exit nested method : _SB.PCI0.NST1 141 Exit evaluation : _SB.PCI0.TEST 142 143Added two recently-defined _OSI strings. See 144https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi- 145osi. 146 "Windows 2018" 147 "Windows 2018.2" 148 149Update for buffer-to-string conversions via the ToHexString ASL operator. 150A "0x" is now prepended to each of the hex values in the output string. 151This provides compatibility with other ACPI implementations. The ACPI 152specification is somewhat vague on this issue. 153 Example output string after conversion: 154"0x01,0x02,0x03,0x04,0x05,0x06" 155 156Return a run-time error for TermArg expressions within individual package 157elements. Although this is technically supported by the ASL grammar, 158other ACPI implementations do not support this either. Also, this fixes a 159fault if this type of construct is ever encountered (it never has been). 160 161 1622) iASL Compiler/Disassembler and Tools: 163 164iASL: Implemented a new compile option (-ww) that will promote individual 165warnings and remarks to errors. This is intended to enhance the firmware 166build process. 167 168AcpiExec: Implemented a new command-line option (-eo) to support the new 169object evaluation trace mechanism described above. 170 171Disassembler: Added support to disassemble OEMx tables as AML/ASL tables 172instead of a "unknown table" message. 173 174AcpiHelp: Improved support for the "special" predefined names such as 175_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be 176used for "xx" and "x". 177 178---------------------------------------- 17931 October 2018. Summary of changes for version 20181031: 180 181 182An Operation Region regression was fixed by properly adding address 183ranges to a global list during initialization. This allows OS to 184accurately check for overlapping regions between native devices (such as 185PCI) and Operation regions as well as checking for region conflicts 186between two Operation Regions. 187 188Added support for the 2-byte extended opcodes in the code/feature that 189attempts to continue parsing during the table load phase. Skip parsing 190Device declarations (and other extended opcodes) when an error occurs 191during parsing. Previously, only single-byte opcodes were supported. 192 193Cleanup: Simplified the module-level code support by eliminating a 194useless global variable (AcpiGbl_GroupModuleLeveCode). 195 196 1972) iASL Compiler/Disassembler and Tools: 198 199iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE 200could cause a fault in the preprocessor. This was an inadvertent side- 201effect from moving more allocations/frees to the local cache/memory 202mechanism. 203 204iASL: Enhanced error detection by validating that all NameSeg elements 205within a NamePatch actually exist. The previous behavior was spotty at 206best, and such errors could be improperly ignored at compiler time (never 207at runtime, however. There are two new error messages, as shown in the 208examples below: 209 210dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1) 211Error 6161 - ^ One or more objects within 212the Pathname do not exist (TTTT.BXXX) 213 214dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1) 215Error 6160 - One or more prefix Scopes do not exist ^ 216(BBBB.CBF1) 217 218iASL: Disassembler/table-compiler: Added support for the static data 219table TPM2 revision 3 (an older version of TPM2). The support has been 220added for the compiler and the disassembler. 221 222Fixed compilation of DOS format data table file on Unix/Linux systems. 223iASL now properly detects line continuations (\) for DOS format data 224table definition language files on when executing on Unix/Linux. 225 226---------------------------------------- 22703 October 2018. Summary of changes for version 20181003: 228 229 2302) iASL Compiler/Disassembler and Tools: 231 232Fixed a regression introduced in version 20180927 that could cause the 233compiler to fault, especially with NamePaths containing one or more 234carats (^). Such as: ^^_SB_PCI0 235 236Added a new remark for the Sleep() operator when the sleep time operand 237is larger than one second. This is a very long time for the ASL/BIOS code 238and may not be what was intended by the ASL writer. 239 240---------------------------------------- 24127 September 2018. Summary of changes for version 20180927: 242 243 2441) ACPICA kernel-resident subsystem: 245 246Updated the GPE support to clear the status of all ACPI events when 247entering any/all sleep states in order to avoid premature wakeups. In 248theory, this may cause some wakeup events to be missed, but the 249likelihood of this is small. This change restores the original behavior 250of the ACPICA code in order to fix a regression seen from the previous 251"Stop unconditionally clearing ACPI IRQs during suspend/resume" change. 252This regression could cause some systems to incorrectly wake immediately. 253 254Updated the execution of the _REG methods during initialization and 255namespace loading to bring the behavior into closer conformance to the 256ACPI specification and other ACPI implementations: 257 258From the ACPI specification 6.2A, section 6.5.4 "_REG (Region): 259 "Control methods must assume all operation regions are inaccessible 260until the _REG(RegionSpace, 1) method is executed" 261 262 "The exceptions to this rule are: 2631. OSPM must guarantee that the following operation regions are always 264accessible: 265 SystemIO operation regions. 266 SystemMemory operation regions when accessing memory returned by the 267System Address Map reporting interfaces." 268 269Since the state of both the SystemIO and SystemMemory address spaces are 270defined by the specification to never change, this ACPICA change ensures 271that now _REG is never called on them. This solves some problems seen in 272the field and provides compatibility with other ACPI implementations. An 273update to the upcoming new version of the ACPI specification will help 274clarify this behavior. 275 276Updated the implementation of support for the Generic Serial Bus. For the 277"bidirectional" protocols, the internal implementation now automatically 278creates a return data buffer of the maximum size (255). This handles the 279worst-case for data that is returned from the serial bus handler, and 280fixes some problems seen in the field. This new buffer is directly 281returned to the ASL. As such, there is no true "bidirectional" buffer, 282which matches the ACPI specification. This is the reason for the "double 283store" seen in the example ASL code in the specification, shown below: 284 285Word Process Call (AttribProcessCall): 286 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100) 287 Field(TOP1, BufferAcc, NoLock, Preserve) 288 { 289 FLD1, 8, // Virtual register at command value 1. 290 } 291 292 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer 293 // as BUFF 294 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word) 295 296 Store(0x5416, DATA) // Save 0x5416 into the data buffer 297 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call 298transaction 299 // This is the "double store". The write to 300 // FLD1 returns a new buffer, which is stored 301 // back into BUFF with the second Store. 302 303 3042) iASL Compiler/Disassembler and Tools: 305 306iASL: Implemented detection of extraneous/redundant uses of the Offset() 307operator within a Field Unit list. A remark is now issued for these. For 308example, the first two of the Offset() operators below are extraneous. 309Because both the compiler and the interpreter track the offsets 310automatically, these Offsets simply refer to the current offset and are 311unnecessary. Note, when optimization is enabled, the iASL compiler will 312in fact remove the redundant Offset operators and will not emit any AML 313code for them. 314 315 OperationRegion (OPR1, SystemMemory, 0x100, 0x100) 316 Field (OPR1) 317 { 318 Offset (0), // Never needed 319 FLD1, 32, 320 Offset (4), // Redundant, offset is already 4 (bytes) 321 FLD2, 8, 322 Offset (64), // OK use of Offset. 323 FLD3, 16, 324 } 325dsdt.asl 14: Offset (0), 326Remark 2158 - ^ Unnecessary/redundant use of Offset 327operator 328 329dsdt.asl 16: Offset (4), 330Remark 2158 - ^ Unnecessary/redundant use of Offset 331operator 332 333---------------------------------------- 33410 August 2018. Summary of changes for version 20180810: 335 336 3371) ACPICA kernel-resident subsystem: 338 339Initial ACPI table loading: Attempt to continue loading ACPI tables 340regardless of malformed AML. Since migrating table initialization to the 341new module-level code support, the AML interpreter rejected tables upon 342any ACPI error encountered during table load. This is a problem because 343non-serious ACPI errors during table load do not necessarily mean that 344the entire definition block (DSDT or SSDT) is invalid. This change 345improves the table loading by ignoring some types of errors that can be 346generated by incorrect AML. This can range from object type errors, scope 347errors, and index errors. 348 349Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs 350during suspend/resume. The status of ACPI events is no longer cleared 351when entering the ACPI S5 system state (power off) which caused some 352systems to power up immediately after turning off power in certain 353situations. This was a functional regression. It was fixed by clearing 354the status of all ACPI events again when entering S5 (for system-wide 355suspend or hibernation the clearing of the status of all events is not 356desirable, as it might cause the kernel to miss wakeup events sometimes). 357Rafael Wysocki. 358 359 3602) iASL Compiler/Disassembler and Tools: 361 362AcpiExec: Enhanced the -fi option (Namespace initialization file). Field 363elements listed in the initialization file were previously initialized 364after the table load and before executing module-level code blocks. 365Recent changes in the module-level code support means that the table load 366becomes a large control method execution. If fields are used within 367module-level code and we are executing with the -fi option, the 368initialization values were used to initialize the namespace object(s) 369only after the table was finished loading. This change Provides an early 370initialization of objects specified in the initialization file so that 371field unit values are populated during the table load (not after the 372load). 373 374AcpiExec: Fixed a small memory leak regression that could result in 375warnings during exit of the utility. These warnings were similar to 376these: 377 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small] 378 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001 379 380---------------------------------------- 38129 June 2018. Summary of changes for version 20180629: 382 383 3841) iASL Compiler/Disassembler and Tools: 385 386iASL: Fixed a regression related to the use of the ASL External 387statement. Error checking for the use of the External() statement has 388been relaxed. Previously, a restriction on the use of External meant that 389the referenced named object was required to be defined in a different 390table (an SSDT). Thus it would be an error to declare an object as an 391external and then define the same named object in the same table. For 392example: 393 DefinitionBlock (...) 394 { 395 External (DEV1) 396 Device (DEV1){...} // This was an error 397 } 398However, this behavior has caused regressions in some existing ASL code, 399because there is code that depends on named objects and externals (with 400the same name) being declared in the same table. This change will allow 401the ASL code above to compile without errors or warnings. 402 403iASL: Implemented ASL language extensions for four operators to make some 404of their arguments optional instead of required: 405 1) Field (RegionName, AccessType, LockRule, UpdateRule) 406 2) BankField (RegionName, BankName, BankValue, 407 AccessType, LockRule, UpdateRule) 408 3) IndexField (IndexName, DataName, 409 AccessType, LockRule, UpdateRule) 410For the Field operators above, the AccessType, LockRule, and UpdateRule 411are now optional arguments. The default values are: 412 AccessType: AnyAcc 413 LockRule: NoLock 414 UpdateRule: Preserve 415 4) Mutex (MutexName, SyncLevel) 416For this operator, the SyncLevel argument is now optional. This argument 417is rarely used in any meaningful way by ASL code, and thus it makes sense 418to make it optional. The default value is: 419 SyncLevel: 0 420 421iASL: Attempted use of the ASL Unload() operator now results in the 422following warning: 423 "Unload is not supported by all operating systems" 424This is in fact very true, and the Unload operator may be completely 425deprecated in the near future. 426 427AcpiExec: Fixed a regression for the -fi option (Namespace initialization 428file. Recent changes in the ACPICA module-level code support altered the 429table load/initialization sequence . This means that the table load has 430become a large method execution of the table itself. If Operation Region 431Fields are used within any module-level code and the -fi option was 432specified, the initialization values were populated only after the table 433had completely finished loading (and thus the module-level code had 434already been executed). This change moves the initialization of objects 435listed in the initialization file to before the table is executed as a 436method. Field unit values are now initialized before the table execution 437is performed. 438 439---------------------------------------- 44031 May 2018. Summary of changes for version 20180531: 441 442 4431) ACPICA kernel-resident Subsystem: 444 445Implemented additional support to help ensure that a DSDT or SSDT is 446fully loaded even if errors are incurred during the load. The majority of 447the problems that are seen is the failure of individual AML operators 448that occur during execution of any module-level code (MLC) existing in 449the table. This support adds a mechanism to abort the current ASL 450statement (AML opcode), emit an error message, and to simply move on to 451the next opcode -- instead of aborting the entire table load. This is 452different than the execution of a control method where the entire method 453is aborted upon any error. The goal is to perform a very "best effort" to 454load the ACPI tables. The most common MLC errors that have been seen in 455the field are direct references to unresolved ASL/AML symbols (referenced 456directly without the use of the CondRefOf operator to validate the 457symbol). This new ACPICA behavior is now compatible with other ACPI 458implementations. 459 460Interpreter: The Unload AML operator is no longer supported for the 461reasons below. An AE_NOT_IMPLEMENTED exception is returned. 4621) A correct implementation on at least some hosts may not be possible. 4632) Other ACPI implementations do not correctly/fully support it. 4643) It requires host device driver support which is not known to exist. 465 (To properly support namespace unload out from underneath.) 4664) This AML operator has never been seen in the field. 467 468Parser: Added a debug option to dump AML parse sub-trees as they are 469being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is 470ACPI_DB_PARSE_TREES. 471 472Debugger: Reduced the verbosity for errors incurred during table load and 473module-level code execution. 474 475Completed an investigation into adding a namespace node "owner list" 476instead of the current "owner ID" associated with namespace nodes. This 477list would link together all nodes that are owned by an individual 478control method. The purpose would be to enhance control method execution 479by speeding up cleanup during method exit (all namespace nodes created by 480a method are deleted upon method termination.) Currently, the entire 481namespace must be searched for matching owner IDs if (and only if) the 482method creates named objects outside of the local scope. However, by far 483the most common case is that methods create objects locally, not outside 484the method scope. There is already an ACPICA optimization in place that 485only searches the entire namespace in the rare case of a method creating 486objects elsewhere in the namespace. Therefore, it is felt that the 487overhead of adding an additional pointer to each namespace node to 488implement the owner list makes this feature unnecessary. 489 490 4912) iASL Compiler/Disassembler and Tools: 492 493iASL, Disassembler, and Template generator: Implemented support for 494Revision D of the IORT table. Adds a new subtable that is used to specify 495SMMUv3 PMCGs. rmurphy-arm. 496 497Disassembler: Restored correct table header validation for the "special" 498ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI 499table header and must be special-cased. This was a regression that has 500been present for apparently a long time. 501 502AcpiExec: Reduced verbosity of the local exception handler implemented 503within acpiexec. This handler is invoked by ACPICA upon any exceptions 504generated during control method execution. A new option was added: -vh 505restores the original verbosity level if desired. 506 507AcpiExec: Changed the default base from decimal to hex for the -x option 508(set debug level). This simplifies the use of this option and matches the 509behavior of the corresponding iASL -x option. 510 511AcpiExec: Restored a force-exit on multiple control-c (sigint) 512interrupts. This allows program termination even if other issues cause 513the control-c to fail. 514 515ASL test suite (ASLTS): Added tests for the recently implemented package 516element resolution mechanism that allows forward references to named 517objects from individual package elements (this mechanism provides 518compatibility with other ACPI implementations.) 519 520 521---------------------------------------- 5228 May 2018. Summary of changes for version 20180508: 523 524 5251) ACPICA kernel-resident subsystem: 526 527Completed the new (recently deployed) package resolution mechanism for 528the Load and LoadTable ASL/AML operators. This fixes a regression that 529was introduced in version 20180209 that could result in an 530AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table 531(SSDT) that contains package objects. 532 533 5342) iASL Compiler/Disassembler and Tools: 535 536AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than 5371 MB. This change allows for table offsets within the acpidump file to be 538up to 8 characters. These changes are backwards compatible with existing 539acpidump files. 540 541 542---------------------------------------- 54327 April 2018. Summary of changes for version 20180427: 544 545 5461) ACPICA kernel-resident subsystem: 547 548Debugger: Added support for Package objects in the "Test Objects" 549command. This command walks the entire namespace and evaluates all named 550data objects (Integers, Strings, Buffers, and now Packages). 551 552Improved error messages for the namespace root node. Originally, the root 553was referred to by the confusing string "\___". This has been replaced by 554"Namespace Root" for clarification. 555 556Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin 557Ian King <colin.king@canonical.com>. 558 559 5602) iASL Compiler/Disassembler and Tools: 561 562iASL: Implemented support to detect and flag illegal forward references. 563For compatibility with other ACPI implementations, these references are 564now illegal at the root level of the DSDT or SSDTs. Forward references 565have always been illegal within control methods. This change should not 566affect existing ASL/AML code because of the fact that these references 567have always been illegal in the other ACPI implementation. 568 569iASL: Added error messages for the case where a table OEM ID and OEM 570TABLE ID strings are longer than the ACPI-defined length. Previously, 571these strings were simply silently truncated. 572 573iASL: Enhanced the -tc option (which creates an AML hex file in C, 574suitable for import into a firmware project): 575 1) Create a unique name for the table, to simplify use of multiple 576SSDTs. 577 2) Add a protection #ifdef in the file, similar to a .h header file. 578With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd, 579evan.lloyd@arm.com 580 581AcpiExec: Added a new option, -df, to disable the local fault handler. 582This is useful during debugging, where it may be desired to drop into a 583debugger on a fault. 584 585---------------------------------------- 58613 March 2018. Summary of changes for version 20180313: 587 588 5891) ACPICA kernel-resident subsystem: 590 591Implemented various improvements to the GPE support: 592 5931) Dispatch all active GPEs at initialization time so that no GPEs are 594lost. 5952) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled 596before devices are enumerated. 5973) Don't unconditionally clear ACPI IRQs during suspend/resume, so that 598IRQs are not lost. 5994) Add parallel GPE handling to eliminate the possibility of dispatching 600the same GPE twice. 6015) Dispatch any pending GPEs after enabling for the first time. 602 603AcpiGetObjectInfo - removed support for the _STA method. This was causing 604problems on some platforms. 605 606Added a new _OSI string, "Windows 2017.2". 607 608Cleaned up and simplified the module-level code support. These changes 609are in preparation for the eventual removal of the legacy MLC support 610(deferred execution), replaced by the new MLC architecture which executes 611the MLC as a table is loaded (DSDT/SSDTs). 612 613Changed a compile-time option to a runtime option. Changes the option to 614ignore ACPI table load-time package resolution errors into a runtime 615option. Used only for platforms that generate many AE_NOT_FOUND errors 616during boot. AcpiGbl_IgnorePackageResolutionErrors. 617 618Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some 619ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid 620compilation errors from unused variables (seen with some compilers). 621 622 6232) iASL Compiler/Disassembler and Tools: 624 625ASLTS: parallelized execution in order to achieve an (approximately) 2X 626performance increase. 627 628ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves 629error reporting. 630 631---------------------------------------- 63209 February 2018. Summary of changes for version 20180209: 633 634 6351) ACPICA kernel-resident subsystem: 636 637Completed the final integration of the recent changes to Package Object 638handling and the module-level AML code support. This allows forward 639references from individual package elements when the package object is 640declared from within module-level code blocks. Provides compatibility 641with other ACPI implementations. 642 643The new architecture for the AML module-level code has been completed and 644is now the default for the ACPICA code. This new architecture executes 645the module-level code in-line as the ACPI table is loaded/parsed instead 646of the previous architecture which deferred this code until after the 647table was fully loaded. This solves some ASL code ordering issues and 648provides compatibility with other ACPI implementations. At this time, 649there is an option to fallback to the earlier architecture, but this 650support is deprecated and is planned to be completely removed later this 651year. 652 653Added a compile-time option to ignore AE_NOT_FOUND exceptions during 654resolution of named reference elements within Package objects. Although 655this is potentially a serious problem, it can generate a lot of 656noise/errors on platforms whose firmware carries around a bunch of unused 657Package objects. To disable these errors, define 658ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All 659errors are always reported for ACPICA applications such as AcpiExec. 660 661Fixed a regression related to the explicit type-conversion AML operators 662(ToXXXX). The regression was introduced early in 2017 but was not seen 663until recently because these operators are not fully supported by other 664ACPI implementations and are thus rarely used by firmware developers. The 665operators are defined by the ACPI specification to not implement the 666"implicit result object conversion". The regression incorrectly 667introduced this object conversion for the following explicit conversion 668operators: 669 ToInteger 670 ToString 671 ToBuffer 672 ToDecimalString 673 ToHexString 674 ToBCD 675 FromBCD 676 677 6782) iASL Compiler/Disassembler and Tools: 679 680iASL: Fixed a problem with the compiler constant folding feature as 681related to the ToXXXX explicit conversion operators. These operators do 682not support the "implicit result object conversion" by definition. Thus, 683ASL expressions that use these operators cannot be folded to a simple 684Store operator because Store implements the implicit conversion. This 685change uses the CopyObject operator for the ToXXXX operator folding 686instead. CopyObject is defined to not implement implicit result 687conversions and is thus appropriate for folding the ToXXXX operators. 688 689iASL: Changed the severity of an error condition to a simple warning for 690the case where a symbol is declared both locally and as an external 691symbol. This accommodates existing ASL code. 692 693AcpiExec: The -ep option to enable the new architecture for module-level 694code has been removed. It is replaced by the -dp option which instead has 695the opposite effect: it disables the new architecture (the default) and 696enables the legacy architecture. When the legacy code is removed in the 697future, the -dp option will be removed also. 698 699---------------------------------------- 70005 January 2018. Summary of changes for version 20180105: 701 702 7031) ACPICA kernel-resident subsystem: 704 705Updated all copyrights to 2018. This affects all source code modules. 706 707Fixed a possible build error caused by an unresolved reference to the 708AcpiUtSafeStrncpy function. 709 710Removed NULL pointer arithmetic in the various pointer manipulation 711macros. All "(void *) NULL" constructs are converted to "(void *) 0". 712This eliminates warnings/errors in newer C compilers. Jung-uk Kim. 713 714Added support for A32 ABI compilation, which uses the ILP32 model. Anuj 715Mittal. 716 717 7182) iASL Compiler/Disassembler and Tools: 719 720ASLTS: Updated all copyrights to 2018. 721 722Tools: Updated all signon copyrights to 2018. 723 724AcpiXtract: Fixed a regression related to ACPI table signatures where the 725signature was truncated to 3 characters (instead of 4). 726 727AcpiExec: Restore the original terminal mode after the use of the -v and 728-vd options. 729 730ASLTS: Deployed the iASL __METHOD__ macro across the test suite. 731 732---------------------------------------- 73314 December 2017. Summary of changes for version 20171214: 734 735 7361) ACPICA kernel-resident subsystem: 737 738Fixed a regression in the external (public) AcpiEvaluateObjectTyped 739interface where the optional "pathname" argument had inadvertently become 740a required argument returning an error if omitted (NULL pointer 741argument). 742 743Fixed two possible memory leaks related to the recently developed "late 744resolution" of reference objects within ASL Package Object definitions. 745 746Added two recently defined _OSI strings: "Windows 2016" and "Windows 7472017". Mario Limonciello. 748 749Implemented and deployed a safer version of the C library function 750strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the 751creation of unterminated strings as a possible result of a standard 752strncpy. 753 754Cleaned up and restructured the global variable file (acglobal.h). There 755are many changes, but no functional changes. 756 757 7582) iASL Compiler/Disassembler and Tools: 759 760iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the 761optional OemData field at the end of the table was incorrectly required 762for proper compilation. It is now correctly an optional field. 763 764ASLTS: The entire suite was converted from standard ASL to the ASL+ 765language, using the ASL-to-ASL+ converter which is integrated into the 766iASL compiler. A binary compare of all output files has verified the 767correctness of the conversion. 768 769iASL: Fixed the source code build for platforms where "char" is unsigned. 770This affected the iASL lexer only. Jung-uk Kim. 771 772---------------------------------------- 77310 November 2017. Summary of changes for version 20171110: 774 775 7761) ACPICA kernel-resident subsystem: 777 778This release implements full support for ACPI 6.2A: 779 NFIT - Added a new subtable, "Platform Capabilities Structure" 780No other changes to ACPICA were required, since ACPI 6.2A is primarily an 781errata release of the specification. 782 783Other ACPI table changes: 784 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo 785 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy 786Linton 787 788Utilities: Modified the string/integer conversion functions to use 789internal 64-bit divide support instead of a native divide. On 32-bit 790platforms, a 64-bit divide typically requires a library function which 791may not be present in the build (kernel or otherwise). 792 793Implemented a targeted error message for timeouts returned from the 794Embedded Controller device driver. This is seen frequently enough to 795special-case an AE_TIME returned from an EC operation region access: 796 "Timeout from EC hardware or EC device driver" 797 798Changed the "ACPI Exception" message prefix to "ACPI Error" so that all 799runtime error messages have the identical prefix. 800 801 8022) iASL Compiler/Disassembler and Tools: 803 804AcpiXtract: Fixed a problem with table header detection within the 805acpidump file. Processing a table could be ended early if a 0x40 (@) 806appears in the original binary table, resulting in the @ symbol appearing 807in the decoded ASCII field at the end of the acpidump text line. The 808symbol caused acpixtract to incorrectly think it had reached the end of 809the current table and the beginning of a new table. 810 811AcpiXtract: Added an option (-f) to ignore some errors during table 812extraction. This initial implementation ignores non-ASCII and non- 813printable characters found in the acpidump text file. 814 815TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics 816for ASLTS. This feature is used to track memory allocations from 817different memory caches within the ACPICA code. At the end of an ASLTS 818run, these memory statistics are recorded and stored in a log file. 819 820Debugger (user-space version): Implemented a simple "Background" command. 821Creates a new thread to execute a control method in the background, while 822control returns to the debugger prompt to allow additional commands. 823 Syntax: Background <Namepath> [Arguments] 824 825---------------------------------------- 82629 September 2017. Summary of changes for version 20170929: 827 828 8291) ACPICA kernel-resident subsystem: 830 831Redesigned and implemented an improved ASL While() loop timeout 832mechanism. This mechanism is used to prevent infinite loops in the kernel 833AML interpreter caused by either non-responsive hardware or incorrect AML 834code. The new implementation uses AcpiOsGetTimer instead of a simple 835maximum loop count, and is thus more accurate and constant across 836different machines. The default timeout is currently 30 seconds, but this 837may be adjusted later. 838 839Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to 840better reflect the new implementation of the loop timeout mechanism. 841 842Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support 843and to fix an off-by-one error. Jung-uk Kim. 844 845Fixed an EFI build problem by updating the makefiles to for a new file 846that was added, utstrsuppt.c 847 848 8492) iASL Compiler/Disassembler and Tools: 850 851Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This 852includes support in the table disassembler, compiler, and template 853generator. 854 855iASL: Added an exception for an illegal type of recursive method 856invocation. If a method creates named objects, the first recursive call 857will fail at runtime. This change adds an error detection at compile time 858to catch the problem up front. Note: Marking such a method as 859"serialized" will not help with this problem, because the same thread can 860acquire the method mutex more than once. Example compiler and runtime 861output: 862 863 Method (MTH1) 864 { 865 Name (INT1, 1) 866 MTH1 () 867 } 868 869 dsdt.asl 22: MTH1 () 870 Error 6152 - ^ Illegal recursive call to method 871 that creates named objects (MTH1) 872 873Previous runtime exception: 874 ACPI Error: [INT1] Namespace lookup failure, 875 AE_ALREADY_EXISTS (20170831/dswload2-465) 876 877iASL: Updated support for External() opcodes to improve namespace 878management and error detection. These changes are related to issues seen 879with multiple-segment namespace pathnames within External declarations, 880such as below: 881 882 External(\_SB.PCI0.GFX0, DeviceObj) 883 External(\_SB.PCI0.GFX0.ALSI) 884 885iASL: Implemented support for multi-line error/warning messages. This 886enables more detailed and helpful error messages as below, from the 887initial deployment for the duplicate names error: 888 889 DSDT.iiii 1692: Device(PEG2) { 890 Error 6074 - ^ Name already exists in scope 891(PEG2) 892 893 Original name creation/declaration below: 894 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj) 895 896AcpiXtract: Added additional flexibility to support differing input hex 897dump formats. Specifically, hex dumps that contain partial disassembly 898and/or comments within the ACPI table data definition. There exist some 899dump utilities seen in the field that create this type of hex dump (such 900as Simics). For example: 901 902 DSDT @ 0xdfffd0c0 (10999 bytes) 903 Signature DSDT 904 Length 10999 905 Revision 1 906 Checksum 0xf3 (Ok) 907 OEM_ID BXPC 908 OEM_table_id BXDSDT 909 OEM_revision 1 910 Creator_id 1280593481 911 Creator_revision 537399345 912 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00 913 ... 914 2af0: 5f 4c 30 46 00 a4 01 915 916Test suite: Miscellaneous changes/fixes: 917 More cleanup and simplification of makefiles 918 Continue compilation of test cases after a compile failure 919 Do not perform binary compare unless both files actually exist 920 921iASL: Performed some code/module restructuring. Moved all memory 922allocation functions to new modules. Two new files, aslallocate.c and 923aslcache.c 924 925---------------------------------------- 92631 August 2017. Summary of changes for version 20170831: 927 928 9291) ACPICA kernel-resident subsystem: 930 931Implemented internal support for full 64-bit addresses that appear in all 932Generic Address Structure (GAS) structures. Previously, only the lower 32 933bits were used. Affects the use of GAS structures in the FADT and other 934tables, as well as the GAS structures passed to the AcpiRead and 935AcpiWrite public external interfaces that are used by drivers. Lv Zheng. 936 937Added header support for the PDTT ACPI table (Processor Debug Trigger 938Table). Full support in the iASL Data Table Compiler and disassembler is 939forthcoming. 940 941 9422) iASL Compiler/Disassembler and Tools: 943 944iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor 945Properties Topology Table) where a flag bit was specified in the wrong 946bit position ("Line Size Valid", bit 6). 947 948iASL: Implemented support for Octal integer constants as defined by the 949ASL language grammar, per the ACPI specification. Any integer constant 950that starts with a zero is an octal constant. For example, 951 Store (037777, Local0) /* Octal constant */ 952 Store (0x3FFF, Local0) /* Hex equivalent */ 953 Store (16383, Local0) /* Decimal equivalent */ 954 955iASL: Improved overflow detection for 64-bit string conversions during 956compilation of integer constants. "Overflow" in this case means a string 957that represents an integer that is too large to fit into a 64-bit value. 958Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to 959the low-order 32 bits with a warning, as previously implemented. Several 960new exceptions are defined that indicate a 64-bit overflow, as well as 961the base (radix) that was used during the attempted conversion. Examples: 962 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW 963 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW 964 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW 965 966iASL: Added a warning for the case where a ResourceTemplate is declared 967with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In 968this case, the resulting template is created with a single END_TAG 969descriptor, which is essentially useless. 970 971iASL: Expanded the -vw option (ignore specific warnings/remarks) to 972include compilation error codes as well. 973 974---------------------------------------- 97528 July 2017. Summary of changes for version 20170728: 976 977 9781) ACPICA kernel-resident subsystem: 979 980Fixed a regression seen with small resource descriptors that could cause 981an inadvertent AE_AML_NO_RESOURCE_END_TAG exception. 982 983AML interpreter: Implemented a new feature that allows forward references 984from individual named references within package objects that are 985contained within blocks of "module-level code". This provides 986compatibility with other ACPI implementations and supports existing 987firmware that depends on this feature. Example: 988 989 Name (ABCD, 1) 990 If (ABCD) /* An If() at module-level */ 991 { 992 Name (PKG1, Package() 993 { 994 INT1 /* Forward reference to object INT1 995*/ 996 }) 997 Name (INT1, 0x1234) 998 } 999 1000AML Interpreter: Fixed a problem with the Alias() operator where aliases 1001to some ASL objects were not handled properly. Objects affected are: 1002Mutex, Event, and OperationRegion. 1003 1004AML Debugger: Enhanced to properly handle AML Alias objects. These 1005objects have one level of indirection which was not fully supported by 1006the debugger. 1007 1008Table Manager: Added support to detect and ignore duplicate SSDTs within 1009the XSDT/RSDT. This error in the XSDT has been seen in the field. 1010 1011EFI and EDK2 support: 1012 Enabled /WX flag for MSVC builds 1013 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer 1014 Added local support for 64-bit multiply and shift operations 1015 Added support to compile acpidump.efi on Windows 1016 Added OSL function stubs for interfaces not used under EFI 1017 1018Added additional support for the _DMA predefined name. _DMA returns a 1019buffer containing a resource template. This change add support within the 1020resource manager (AcpiWalkResourceBuffer) to walk and parse this list of 1021resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> 1022 1023 10242) iASL Compiler/Disassembler and Tools: 1025 1026iASL: Fixed a problem where the internal input line buffer(s) could 1027overflow if there are very long lines in the input ASL source code file. 1028Implemented buffer management that automatically increases the size of 1029the buffers as necessary. 1030 1031iASL: Added an option (-vx) to "expect" particular remarks, warnings and 1032errors. If the specified exception is not raised during compilation, the 1033compiler emits an error. This is intended to support the ASL test suite, 1034but may be useful in other contexts. 1035 1036iASL: Implemented a new predefined macro, __METHOD__, which returns a 1037string containing the name of the current control method that is being 1038compiled. 1039 1040iASL: Implemented debugger and table compiler support for the SDEI ACPI 1041table (Software Delegated Exception Interface). James Morse 1042<james.morse@arm.com> 1043 1044Unix/Linux makefiles: Added an option to disable compile optimizations. 1045The disable occurs when the NOOPT flag is set to TRUE. 1046theracermaster@gmail.com 1047 1048Acpidump: Added support for multiple DSDT and FACS tables. This can occur 1049when there are different tables for 32-bit versus 64-bit. 1050 1051Enhanced error reporting for the ASL test suite (ASLTS) by removing 1052unnecessary/verbose text, and emit the actual line number where an error 1053has occurred. These changes are intended to improve the usefulness of the 1054test suite. 1055 1056---------------------------------------- 105729 June 2017. Summary of changes for version 20170629: 1058 1059 10601) ACPICA kernel-resident subsystem: 1061 1062Tables: Implemented a deferred ACPI table verification. This is useful 1063for operating systems where the tables cannot be verified in the early 1064initialization stage due to early memory mapping limitations on some 1065architectures. Lv Zheng. 1066 1067Tables: Removed the signature validation for dynamically loaded tables. 1068Provides compatibility with other ACPI implementations. Previously, only 1069SSDT tables were allowed, as per the ACPI specification. Now, any table 1070signature can be used via the Load() operator. Lv Zheng. 1071 1072Tables: Fixed several mutex issues that could cause errors during table 1073acquisition. Lv Zheng. 1074 1075Tables: Fixed a problem where an ACPI warning could be generated if a 1076null pointer was passed to the AcpiPutTable interface. Lv Zheng. 1077 1078Tables: Added a mechanism to handle imbalances for the AcpiGetTable and 1079AcpiPutTable interfaces. This applies to the "late stage" table loading 1080when the use of AcpiPutTable is no longer required (since the system 1081memory manager is fully running and available). Lv Zheng. 1082 1083Fixed/Reverted a regression during processing of resource descriptors 1084that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG 1085exception in this case. 1086 1087Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the 1088I/O Remapping specification. Robin Murphy <robin.murphy@arm.com> 1089 1090Interpreter: Fixed a possible fault if an Alias operator with an invalid 1091or duplicate target is encountered during Alias creation in 1092AcpiExCreateAlias. Alex James <theracermaster@gmail.com> 1093 1094Added an option to use designated initializers for function pointers. 1095Kees Cook <keescook@google.com> 1096 1097 10982) iASL Compiler/Disassembler and Tools: 1099 1100iASL: Allow compilation of External declarations with target pathnames 1101that refer to existing named objects within the table. Erik Schmauss. 1102 1103iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a 1104FieldUnit name also is declared via External in the same table. Erik 1105Schmauss. 1106 1107iASL: Allow existing scope names within pathnames used in External 1108statements. For example: 1109 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external 1110 Device (ABCD) 1111 1112iASL: IORT ACPI table: Implemented changes required to decode the new 1113Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table 1114compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com> 1115 1116Disassembler: Don't abort disassembly on errors from External() 1117statements. Erik Schmauss. 1118 1119Disassembler: fixed a possible fault when one of the Create*Field 1120operators references a Resource Template. ACPICA Bugzilla 1396. 1121 1122iASL: In the source code, resolved some naming inconsistences across the 1123parsing support. Fixes confusion between "Parse Op" and "Parse Node". 1124Adds a new file, aslparseop.c 1125 1126---------------------------------------- 112731 May 2017. Summary of changes for version 20170531: 1128 1129 11300) ACPI 6.2 support: 1131 1132The ACPI specification version 6.2 has been released and is available at 1133http://uefi.org/specifications 1134 1135This version of ACPICA fully supports the ACPI 6.2 specification. Changes 1136are summarized below. 1137 1138New ACPI tables (Table Compiler/Disassembler/Templates): 1139 HMAT (Heterogeneous Memory Attributes Table) 1140 WSMT (Windows SMM Security Mitigation Table) 1141 PPTT (Processor Properties Topology Table) 1142 1143New subtables for existing ACPI tables: 1144 HEST (New subtable, Arch-deferred machine check) 1145 SRAT (New subtable, Arch-specific affinity structure) 1146 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 1147 1148Simple updates for existing ACPI tables: 1149 BGRT (two new flag bits) 1150 HEST (New bit defined for several subtables, GHES_ASSIST) 1151 1152New Resource Descriptors and Resource macros (Compiler/Disassembler): 1153 PinConfig() 1154 PinFunction() 1155 PinGroup() 1156 PinGroupConfig() 1157 PinGroupFunction() 1158 New type for hardware error notification (section 18.3.2.9) 1159 1160New predefined names/methods (Compiler/Interpreter): 1161 _HMA (Heterogeneous Memory Attributes) 1162 _LSI (Label Storage Information) 1163 _LSR (Label Storage Read) 1164 _LSW (Label Storage Write) 1165 1166ASL grammar/macro changes (Compiler): 1167 For() ASL macro, implemented with the AML while operator 1168 Extensions to Concatenate operator 1169 Support for multiple definition blocks in same ASL file 1170 Clarification for Buffer operator 1171 Allow executable AML code underneath all scopes (Devices, etc.) 1172 Clarification/change for the _OSI return value 1173 ASL grammar update for reference operators 1174 Allow a zero-length string for AML filename in DefinitionBlock 1175 1176Miscellaneous: 1177 New device object notification value 1178 Remove a notify value (0x0C) for graceful shutdown 1179 New UUIDs for processor/cache properties and 1180 physical package property 1181 New _HID, ACPI0014 (Wireless Power Calibration Device) 1182 1183 11841) ACPICA kernel-resident subsystem: 1185 1186Added support to disable ACPI events on hardware-reduced platforms. 1187Eliminates error messages of the form "Could not enable fixed event". Lv 1188Zheng 1189 1190Fixed a problem using Device/Thermal objects with the ObjectType and 1191DerefOf ASL operators. This support had not been fully/properly 1192implemented. 1193 1194Fixed a problem where if a Buffer object containing a resource template 1195was longer than the actual resource template, an error was generated -- 1196even though the AML is legal. This case has been seen in the field. 1197 1198Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 1199The values for DUAL_PIC and MULTIPLE_APIC were reversed. 1200 1201Added header file changes for the TPM2 ACPI table. Update to new version 1202of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 1203 1204Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 1205These interfaces are intended to be used only in conjunction with the 1206predefined _DLM method (Device Lock Method). "This object appears in a 1207device scope when AML access to the device must be synchronized with the 1208OS environment". 1209 1210Example Code and Data Size: These are the sizes for the OS-independent 1211acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1212debug version of the code includes the debug output trace mechanism and 1213has a much larger code and data size. 1214 1215 Current Release: 1216 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 1217 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 1218 Previous Release: 1219 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 1220 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 1221 1222 12232) iASL Compiler/Disassembler and Tools: 1224 1225iASL: Fixed a problem where an External() declaration could not refer to 1226a Field Unit. Erik Schmauss. 1227 1228Disassembler: Improved support for the Switch/Case operators. This 1229feature will disassemble AML code back to the original Switch operators 1230when possible, instead of an If..Else sequence. David Box 1231 1232iASL and disassembler: Improved the handling of multiple extraneous 1233parentheses for both ASL input and disassembled ASL output. 1234 1235Improved the behavior of the iASL compiler and disassembler to detect 1236improper use of external declarations 1237 1238Disassembler: Now aborts immediately upon detection of an unknown AML 1239opcode. The AML parser has no real way to recover from this, and can 1240result in the creation of an ill-formed parse tree that causes errors 1241later during the disassembly. 1242 1243All tools: Fixed a problem where the Unix application OSL did not handle 1244control-c correctly. For example, a control-c could incorrectly wake the 1245debugger. 1246 1247AcpiExec: Improved the Control-C handling and added a handler for 1248segmentation faults (SIGSEGV). Supports both Windows and Unix-like 1249environments. 1250 1251Reduced the verbosity of the generic unix makefiles. Previously, each 1252compilation displayed the full set of compiler options. This has been 1253eliminated as the options are easily inspected within the makefiles. Each 1254compilation now results in a single line of output. 1255 1256---------------------------------------- 125703 March 2017. Summary of changes for version 20170303: 1258 1259 12600) ACPICA licensing: 1261 1262The licensing information at the start of each source code module has 1263been updated. In addition to the Intel license, the dual GPLv2/BSD 1264license has been added for completeness. Now, a single version of the 1265source code should be suitable for all ACPICA customers. This is the 1266major change for this release since it affects all source code modules. 1267 1268 12691) ACPICA kernel-resident subsystem: 1270 1271Fixed two issues with the common asltypes.h header that could cause 1272problems in some environments: (Kim Jung-uk) 1273 Removed typedef for YY_BUFFER_STATE ? 1274 Fixes an error with earlier versions of Flex. 1275 Removed use of FILE typedef (which is only defined in stdio.h) 1276 1277 12782) iASL Compiler/Disassembler and Tools: 1279 1280Disassembler: fixed a regression introduced in 20170224. A fix for a 1281memory leak related to resource descriptor tags (names) could fault when 1282the disassembler was generated with 64-bit compilers. 1283 1284The ASLTS test suite has been updated to implement a new testing 1285architecture. During generation of the suite from ASL source, both the 1286ASL and ASL+ compilers are now validated, as well as the disassembler 1287itself (Erik Schmauss). The architecture executes as follows: 1288 1289 For every ASL source module: 1290 Compile (legacy ASL compilation) 1291 Disassemble the resulting AML to ASL+ source code 1292 Compile the new ASL+ module 1293 Perform a binary compare on the legacy AML and the new ASL+ AML 1294 The ASLTS suite then executes normally using the AML binaries. 1295 1296---------------------------------------- 129724 February 2017. Summary of changes for version 20170224: 1298 1299 13001) ACPICA kernel-resident subsystem: 1301 1302Interpreter: Fixed two issues with the control method return value auto- 1303repair feature, where an attempt to double-delete an internal object 1304could result in an ACPICA warning (for _CID repair and others). No fault 1305occurs, however, because the attempted deletion (actually a release to an 1306internal cache) is detected and ignored via object poisoning. 1307 1308Debugger: Fixed an AML interpreter mutex issue during the single stepping 1309of control methods. If certain debugger commands are executed during 1310stepping, a mutex acquire/release error could occur. Lv Zheng. 1311 1312Fixed some issues generating ACPICA with the Intel C compiler by 1313restoring the original behavior and compiler-specific include file in 1314acenv.h. Lv Zheng. 1315 1316Example Code and Data Size: These are the sizes for the OS-independent 1317acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1318debug version of the code includes the debug output trace mechanism and 1319has a much larger code and data size. 1320 1321 Current Release: 1322 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 1323 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 1324 Previous Release: 1325 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1326 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1327 1328 13292) iASL Compiler/Disassembler and Tools: 1330 1331iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 1332tool has been designed, implemented, and included in this release. The 1333key feature of this utility is that the original comments within the 1334input ASL file are preserved during the conversion process, and included 1335within the converted ASL+ file -- thus creating a transparent conversion 1336of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 1337 1338 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 1339converted code 1340 1341iASL/Disassembler: Improved the detection and correct disassembly of 1342Switch/Case operators. This feature detects sequences of if/elseif/else 1343operators that originated from ASL Switch/Case/Default operators and 1344emits the original operators. David Box. 1345 1346iASL: Improved the IORT ACPI table support in the following areas. Lv 1347Zheng: 1348 Clear MappingOffset if the MappingCount is zero. 1349 Fix the disassembly of the SMMU GSU interrupt offset. 1350 Update the template file for the IORT table. 1351 1352Disassembler: Enhanced the detection and disassembly of resource 1353template/descriptor within a Buffer object. An EndTag descriptor is now 1354required to have a zero second byte, since all known ASL compilers emit 1355this. This helps eliminate incorrect decisions when a buffer is 1356disassembled (false positives on resource templates). 1357 1358---------------------------------------- 135919 January 2017. Summary of changes for version 20170119: 1360 1361 13621) General ACPICA software: 1363 1364Entire source code base: Added the 2017 copyright to all source code 1365legal/licensing module headers and utility/tool signons. This includes 1366the standard Linux dual-license header. This affects virtually every file 1367in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 1368the ACPICA test suite. 1369 1370 13712) iASL Compiler/Disassembler and Tools: 1372 1373iASL: Removed/fixed an inadvertent remark when a method argument 1374containing a reference is used as a target operand within the method (and 1375never used as a simple argument), as in the example below. Jeffrey Hugo. 1376 1377 dsdt.asl 1507: Store(0x1, Arg0) 1378 Remark 2146 - ^ Method Argument is never used (Arg0) 1379 1380All tools: Removed the bit width of the compiler that generated the tool 1381from the common signon for all user space tools. This proved to be 1382confusing and unnecessary. This includes similar removal of HARDWARE_NAME 1383from the generic makefiles (Thomas Petazzoni). Example below. 1384 1385 Old: 1386 ASL+ Optimizing Compiler version 20170119-32 1387 ASL+ Optimizing Compiler version 20170119-64 1388 1389 New: 1390 ASL+ Optimizing Compiler version 20170119 1391 1392---------------------------------------- 139322 December 2016. Summary of changes for version 20161222: 1394 1395 13961) ACPICA kernel-resident subsystem: 1397 1398AML Debugger: Implemented a new mechanism to simplify and enhance 1399debugger integration into all environments, including kernel debuggers 1400and user-space utilities, as well as remote debug services. This 1401mechanism essentially consists of new OSL interfaces to support debugger 1402initialization/termination, as well as wait/notify interfaces to perform 1403the debugger handshake with the host. Lv Zheng. 1404 1405 New OSL interfaces: 1406 AcpiOsInitializeDebugger (void) 1407 AcpiOsTerminateDebugger (void) 1408 AcpiOsWaitCommandReady (void) 1409 AcpiOsNotifyCommandComplete (void) 1410 1411 New OS services layer: 1412 osgendbg.c -- Example implementation, and used for AcpiExec 1413 1414Update for Generic Address Space (GAS) support: Although the AccessWidth 1415and/or BitOffset fields of the GAS are not often used, this change now 1416fully supports these fields. This affects the internal support for FADT 1417registers, registers in other ACPI data tables, and the AcpiRead and 1418AcpiWrite public interfaces. Lv Zheng. 1419 1420Sleep support: In order to simplify integration of ACPI sleep for the 1421various host operating systems, a new OSL interface has been introduced. 1422AcpiOsEnterSleep allows the host to perform any required operations 1423before the final write to the sleep control register(s) is performed by 1424ACPICA. Lv Zheng. 1425 1426 New OSL interface: 1427 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 1428 1429 Called from these internal interfaces: 1430 AcpiHwLegacySleep 1431 AcpiHwExtendedSleep 1432 1433EFI support: Added a very small EFI/ACPICA example application. Provides 1434a simple demo for EFI integration, as well as assisting with resolution 1435of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 1436 1437 source/tools/efihello/efihello.c 1438 1439Local C library: Implemented several new functions to enhance ACPICA 1440portability, for environments where these clib functions are not 1441available (such as EFI). Lv Zheng: 1442 putchar 1443 getchar 1444 strpbrk 1445 strtok 1446 memmove 1447 1448Fixed a regression where occasionally a valid resource descriptor was 1449incorrectly detected as invalid at runtime, and a 1450AE_AML_NO_RESOURCE_END_TAG was returned. 1451 1452Fixed a problem with the recently implemented support that enables 1453control method invocations as Target operands to many ASL operators. 1454Warnings of this form: "Needed type [Reference], found [Processor]" were 1455seen at runtime for some method invocations. 1456 1457Example Code and Data Size: These are the sizes for the OS-independent 1458acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1459debug version of the code includes the debug output trace mechanism and 1460has a much larger code and data size. 1461 1462 Current Release: 1463 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 1464 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 1465 Previous Release: 1466 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1467 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1468 1469 14702) iASL Compiler/Disassembler and Tools: 1471 1472Disassembler: Enhanced output by adding the capability to detect and 1473disassemble ASL Switch/Case statements back to the original ASL source 1474code instead of if/else blocks. David Box. 1475 1476AcpiHelp: Split a large file into separate files based upon 1477functionality/purpose. New files are: 1478 ahaml.c 1479 ahasl.c 1480 1481---------------------------------------- 148217 November 2016. Summary of changes for version 20161117: 1483 1484 14851) ACPICA kernel-resident subsystem: 1486 1487Table Manager: Fixed a regression introduced in 20160729, "FADT support 1488cleanup". This was an attempt to remove all references in the source to 1489the FADT version 2, which never was a legal version number. It was 1490skipped because it was an early version of 64-bit support that was 1491eventually abandoned for the current 64-bit support. 1492 1493Interpreter: Fixed a problem where runtime implicit conversion was 1494incorrectly disabled for the ASL operators below. This brings the 1495behavior into compliance with the ACPI specification: 1496 FromBCD 1497 ToBCD 1498 ToDecimalString 1499 ToHexString 1500 ToInteger 1501 ToBuffer 1502 1503Table Manager: Added a new public interface, AcpiPutTable, used to 1504release and free an ACPI table returned by AcpiGetTable and related 1505interfaces. Lv Zheng. 1506 1507Example Code and Data Size: These are the sizes for the OS-independent 1508acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1509debug version of the code includes the debug output trace mechanism and 1510has a much larger code and data size. 1511 1512 Current Release: 1513 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 1514 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 1515 Previous Release: 1516 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1517 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1518 1519 15202) iASL Compiler/Disassembler and Tools: 1521 1522Disassembler: Fixed a regression for disassembly of Resource Template. 1523Detection of templates in the AML stream missed some types of templates. 1524 1525iASL: Fixed a problem where an Access Size error was returned for the PCC 1526address space when the AccessSize of the GAS register is greater than a 1527DWORD. Hoan Tran. 1528 1529iASL: Implemented several grammar changes for the operators below. These 1530changes are slated for the next version of the ACPI specification: 1531 RefOf - Disallow method invocation as an operand 1532 CondRefOf - Disallow method invocation as an operand 1533 DerefOf - Disallow operands that use the result from operators 1534that 1535 do not return a reference (Changed TermArg to 1536SuperName). 1537 1538iASL: Control method invocations are now allowed for Target operands, as 1539per the ACPI specification. Removed error for using a control method 1540invocation as a Target operand. 1541 1542Disassembler: Improved detection of Resource Templates, Unicode, and 1543Strings within Buffer objects. These subtypes do not contain a specific 1544opcode to indicate the originating ASL code, and they must be detected by 1545other means within the disassembler. 1546 1547iASL: Implemented an optimization improvement for 32-bit ACPI tables 1548(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 1549only after 64-bit to 32-bit truncation. A truncation warning message is 1550still emitted, however. 1551 1552AcpiXtract: Implemented handling for both types of line terminators (LF 1553or CR/LF) so that it can accept AcpiDump output files from any system. 1554Peter Wu. 1555 1556AcpiBin: Added two new options for comparing AML files: 1557 -a: compare and display ALL mismatches 1558 -o: start compare at this offset into the second file 1559 1560---------------------------------------- 156130 September 2016. Summary of changes for version 20160930: 1562 1563 15641) ACPICA kernel-resident subsystem: 1565 1566Fixed a regression in the internal AcpiTbFindTable function where a non 1567AE_OK exception could inadvertently be returned even if the function did 1568not fail. This problem affects the following operators: 1569 DataTableRegion 1570 LoadTable 1571 1572Fixed a regression in the LoadTable operator where a load to any 1573namespace location other than the root no longer worked properly. 1574 1575Increased the maximum loop count value that will result in the 1576AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 1577prevent infinite loops within the AML interpreter and thus the host OS 1578kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 15791,048,575). 1580 1581Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 1582acpixf.h file. This allows hosts to easily configure the maximum loop 1583count at runtime. 1584 1585Removed an illegal character in the strtoul64.c file. This character 1586caused errors with some C compilers. 1587 1588Example Code and Data Size: These are the sizes for the OS-independent 1589acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1590debug version of the code includes the debug output trace mechanism and 1591has a much larger code and data size. 1592 1593 Current Release: 1594 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 1595 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 1596 Previous Release: 1597 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 1598 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 1599 1600 16012) iASL Compiler/Disassembler and Tools: 1602 1603Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 1604the simpler ASL ElseIf keyword. During the conversion, a trailing If 1605block could be lost and missing from the disassembled output. 1606 1607iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 1608the missing rule caused a parse error when using the Index operator as an 1609operand to ObjectType. This construct now compiles properly. Example: 1610 ObjectType(PKG1[4]). 1611 1612iASL: Correctly handle unresolved symbols in the hardware map file (-lm 1613option). Previously, unresolved symbols could cause a protection fault. 1614Such symbols are now marked as unresolved in the map file. 1615 1616iASL: Implemented support to allow control method invocations as an 1617operand to the ASL DeRefOf operator. Example: 1618 DeRefOf(MTH1(Local0)) 1619 1620Disassembler: Improved support for the ToPLD ASL macro. Detection of a 1621possible _PLD buffer now includes examination of both the normal buffer 1622length (16 or 20) as well as the surrounding AML package length. 1623 1624Disassembler: Fixed a problem with the decoding of complex expressions 1625within the Divide operator for ASL+. For the case where both the quotient 1626and remainder targets are specified, the entire statement cannot be 1627disassembled. Previously, the output incorrectly contained a mix of ASL- 1628and ASL+ operators. This mixed statement causes a syntax error when 1629compiled. Example: 1630 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 1631disassembled to: 1632 Divide (INT1 + 6, 128, RSLT, QUOT) 1633 1634iASL/Tools: Added support to process AML and non-AML ACPI tables 1635consistently. For the disassembler and AcpiExec, allow all types of ACPI 1636tables (AML and data tables). For the iASL -e option, allow only AML 1637tables (DSDT/SSDT). 1638 1639---------------------------------------- 164031 August 2016. Summary of changes for version 20160831: 1641 1642 16431) ACPICA kernel-resident subsystem: 1644 1645Improve support for the so-called "module-level code", which is defined 1646to be math, logical and control AML opcodes that appear outside of any 1647control method. This change improves the support by adding more opcodes 1648that can be executed in the manner. Some other issues have been solved, 1649and the ASL grammar changes to support such code under all scope 1650operators (Device, etc.) are complete. Lv Zheng. 1651 1652UEFI support: these OSL functions have been implemented. This is an 1653additional step toward supporting the AcpiExec utility natively (with 1654full hardware access) under UEFI. Marcelo Ferreira. 1655 AcpiOsReadPciConfiguration 1656 AcpiOsWritePciConfiguration 1657 1658Fixed a possible mutex error during control method auto-serialization. Lv 1659Zheng. 1660 1661Updated support for the Generic Address Structure by fully implementing 1662all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 1663Zheng. 1664 1665Updated the return value for the internal _OSI method. Instead of 16660xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 1667for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 1668implementations, and will be reflected and clarified in the next version 1669of the ACPI specification. 1670 1671Implemented two new table events that can be passed to an ACPICA table 1672handler. These events are used to indicate a table installation or 1673uninstallation. These events are used in addition to existed table load 1674and unload events. Lv Zheng. 1675 1676Implemented a cleanup for all internal string-to-integer conversions. 1677Consolidate multiple versions of this functionality and limit possible 1678bases to either 10 or 16 to simplify the code. Adds a new file, 1679utstrtoul64. 1680 1681Cleanup the inclusion order of the various compiler-specific headers. 1682This simplifies build configuration management. The compiler-specific 1683headers are now split out from the host-specific headers. Lv Zheng. 1684 1685Example Code and Data Size: These are the sizes for the OS-independent 1686acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1687debug version of the code includes the debug output trace mechanism and 1688has a much larger code and data size. 1689 1690 Current Release: 1691 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 1692 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 1693 1694 16952) iASL Compiler/Disassembler and Tools: 1696 1697iASL/AcpiExec: Added a command line option to display the build date/time 1698of the tool (-vd). This can be useful to verify that the correct version 1699of the tools are being used. 1700 1701AML Debugger: Implemented a new subcommand ("execute predef") to execute 1702all predefined control methods and names within the current namespace. 1703This can be useful for debugging problems with ACPI tables and the ACPI 1704namespace. 1705 1706---------------------------------------- 170729 July 2016. Summary of changes for version 20160729: 1708 1709 17101) ACPICA kernel-resident subsystem: 1711 1712Implemented basic UEFI support for the various ACPICA tools. This 1713includes: 17141) An OSL to implement the various AcpiOs* interfaces on UEFI. 17152) Support to obtain the ACPI tables on UEFI. 17163) Local implementation of required C library functions not available on 1717UEFI. 17184) A front-end (main) function for the tools for UEFI-related 1719initialization. 1720 1721The initial deployment of this support is the AcpiDump utility executing 1722as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 1723Current environments supported are Linux/Unix. MSVC generation is not 1724supported at this time. See the generate/efi/README file for build 1725instructions. Lv Zheng. 1726 1727Future plans include porting the AcpiExec utility to execute natively on 1728the platform with I/O and memory access. This will allow viewing/dump of 1729the platform namespace and native execution of ACPI control methods that 1730access the actual hardware. To fully implement this support, the OSL 1731functions below must be implemented with UEFI interfaces. Any community 1732help in the implementation of these functions would be appreciated: 1733 AcpiOsReadPort 1734 AcpiOsWritePort 1735 AcpiOsReadMemory 1736 AcpiOsWriteMemory 1737 AcpiOsReadPciConfiguration 1738 AcpiOsWritePciConfiguration 1739 1740Restructured and standardized the C library configuration for ACPICA, 1741resulting in the various configuration options below. This includes a 1742global restructuring of the compiler-dependent and platform-dependent 1743include files. These changes may affect the existing platform-dependent 1744configuration files on some hosts. Lv Zheng. 1745 1746The current C library configuration options appear below. For any issues, 1747it may be helpful to examine the existing compiler-dependent and 1748platform-dependent files as examples. Lv Zheng. 1749 17501) Linux kernel: 1751 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 1752library. 1753 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 17542) Unix/Windows/BSD applications: 1755 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 1756library. 1757 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 17583) UEFI applications: 1759 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 1760library. 1761 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 17624) UEFI applications (EDK2/StdLib): 1763 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 1764 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 1765 1766 1767AML interpreter: "module-level code" support. Allows for execution of so- 1768called "executable" AML code (math/logical operations, etc.) outside of 1769control methods not just at the module level (top level) but also within 1770any scope declared outside of a control method - Scope{}, Device{}, 1771Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 1772 1773Simplified the configuration of the "maximum AML loops" global option by 1774adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 1775modified at runtime. 1776 1777 1778Example Code and Data Size: These are the sizes for the OS-independent 1779acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1780debug version of the code includes the debug output trace mechanism and 1781has a much larger code and data size. 1782 1783 Current Release: 1784 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 1785 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 1786 1787 17882) iASL Compiler/Disassembler and Tools: 1789 1790iASL: Add full support for the RASF ACPI table (RAS Features Table). 1791Includes disassembler, data table compiler, and header support. 1792 1793iASL Expand "module-level code" support. Allows for 1794compilation/disassembly of so-called "executable" AML code (math/logical 1795operations, etc.) outside of control methods not just at the module level 1796(top level) but also within any scope declared outside of a control 1797method - Scope{}, Device{}, Processor{}, PowerResource{}, and 1798ThermalZone{}. 1799 1800AcpiDump: Added support for dumping all SSDTs on newer versions of 1801Windows. These tables are now easily available -- SSDTs are not available 1802through the registry on older versions. 1803 1804---------------------------------------- 180527 May 2016. Summary of changes for version 20160527: 1806 1807 18081) ACPICA kernel-resident subsystem: 1809 1810Temporarily reverted the new arbitrary bit length/alignment support in 1811AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 1812a number of regressions with the new code that need to be fully resolved 1813and tested before this support can be finally integrated into ACPICA. 1814Apologies for any inconveniences these issues may have caused. 1815 1816The ACPI message macros are not configurable (ACPI_MSG_ERROR, 1817ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 1818and ACPI_MSG_BIOS_WARNING). Lv Zheng. 1819 1820Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 1821option. Adds a new return macro, return_STR. Junk-uk Kim. 1822 1823Example Code and Data Size: These are the sizes for the OS-independent 1824acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1825debug version of the code includes the debug output trace mechanism and 1826has a much larger code and data size. 1827 1828 Current Release: 1829 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 1830 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1831 Previous Release: 1832 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1833 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 1834 1835---------------------------------------- 183622 April 2016. Summary of changes for version 20160422: 1837 18381) ACPICA kernel-resident subsystem: 1839 1840Fixed a regression in the GAS (generic address structure) arbitrary bit 1841support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 1842and incorrect return values. Lv Zheng. ACPICA BZ 1270. 1843 1844ACPI 6.0: Added support for new/renamed resource macros. One new argument 1845was added to each of these macros, and the original name has been 1846deprecated. The AML disassembler will always disassemble to the new 1847names. Support for the new macros was added to iASL, disassembler, 1848resource manager, and the acpihelp utility. ACPICA BZ 1274. 1849 1850 I2cSerialBus -> I2cSerialBusV2 1851 SpiSerialBus -> SpiSerialBusV2 1852 UartSerialBus -> UartSerialBusV2 1853 1854ACPI 6.0: Added support for a new integer field that was appended to the 1855package object returned by the _BIX method. This adds iASL compile-time 1856and AML runtime error checking. ACPICA BZ 1273. 1857 1858ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 1859Subspace Type2" (Headers, Disassembler, and data table compiler). 1860 1861Example Code and Data Size: These are the sizes for the OS-independent 1862acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1863debug version of the code includes the debug output trace mechanism and 1864has a much larger code and data size. 1865 1866 Current Release: 1867 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 1868 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 1869 Previous Release: 1870 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 1871 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 1872 1873 18742) iASL Compiler/Disassembler and Tools: 1875 1876iASL: Implemented an ASL grammar extension to allow/enable executable 1877"module-level code" to be created and executed under the various 1878operators that create new scopes. This type of AML code is already 1879supported in all known AML interpreters, and the grammar change will 1880appear in the next version of the ACPI specification. Simplifies the 1881conditional runtime creation of named objects under these object types: 1882 1883 Device 1884 PowerResource 1885 Processor 1886 Scope 1887 ThermalZone 1888 1889iASL: Implemented a new ASL extension, a "For" loop macro to add greater 1890ease-of-use to the ASL language. The syntax is similar to the 1891corresponding C operator, and is implemented with the existing AML While 1892opcode -- thus requiring no changes to existing AML interpreters. 1893 1894 For (Initialize, Predicate, Update) {TermList} 1895 1896Grammar: 1897 ForTerm := 1898 For ( 1899 Initializer // Nothing | TermArg => ComputationalData 1900 Predicate // Nothing | TermArg => ComputationalData 1901 Update // Nothing | TermArg => ComputationalData 1902 ) {TermList} 1903 1904 1905iASL: The _HID/_ADR detection and validation has been enhanced to search 1906under conditionals in order to allow these objects to be conditionally 1907created at runtime. 1908 1909iASL: Fixed several issues with the constant folding feature. The 1910improvement allows better detection and resolution of statements that can 1911be folded at compile time. ACPICA BZ 1266. 1912 1913iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 1914conversion to the ASL ElseIf operator where incorrect ASL code could be 1915generated. 1916 1917iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 1918sometimes an extra (and extraneous) set of parentheses were emitted for 1919some combinations of operators. Although this did not cause any problems 1920with recompilation of the disassembled code, it made the code more 1921difficult to read. David Box. ACPICA BZ 1231. 1922 1923iASL: Changed to ignore the unreferenced detection for predefined names 1924of resource descriptor elements, when the resource descriptor is 1925created/defined within a control method. 1926 1927iASL: Disassembler: Fix a possible fault with externally declared Buffer 1928objects. 1929 1930---------------------------------------- 193118 March 2016. Summary of changes for version 20160318: 1932 19331) ACPICA kernel-resident subsystem: 1934 1935Added support for arbitrary bit lengths and bit offsets for registers 1936defined by the Generic Address Structure. Previously, only aligned bit 1937lengths of 8/16/32/64 were supported. This was sufficient for many years, 1938but recently some machines have been seen that require arbitrary bit- 1939level support. ACPICA BZ 1240. Lv Zheng. 1940 1941Fixed an issue where the \_SB._INI method sometimes must be evaluated 1942before any _REG methods are evaluated. Lv Zheng. 1943 1944Implemented several changes related to ACPI table support 1945(Headers/Disassembler/TableCompiler): 1946NFIT: For ACPI 6.1, updated to add some additional new fields and 1947constants. 1948FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 19496). 1950DMAR: Added new constants per the 10/2014 DMAR spec. 1951IORT: Added new subtable per the 10/2015 IORT spec. 1952HEST: For ACPI 6.1, added new constants and new subtable. 1953DBG2: Added new constants per the 12/2015 DBG2 spec. 1954FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 1955ACPICA BZ 1249. 1956ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 1957 1958Updated header support for the DMAR table to match the current version of 1959the related spec. 1960 1961Added extensions to the ASL Concatenate operator to allow any ACPI object 1962to be passed as an operand. Any object other than Integer/String/Buffer 1963simply returns a string containing the object type. This extends the 1964usefulness of the Printf macros. Previously, Concatenate would abort the 1965control method if a non-data object was encountered. 1966 1967ACPICA source code: Deployed the C "const" keyword across the source code 1968where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 1969 1970Example Code and Data Size: These are the sizes for the OS-independent 1971acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1972debug version of the code includes the debug output trace mechanism and 1973has a much larger code and data size. 1974 1975 Current Release: 1976 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 1977 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 1978 Previous Release: 1979 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 1980 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 1981 1982 19832) iASL Compiler/Disassembler and Tools: 1984 1985iASL/Disassembler: Improved the heuristic used to determine the number of 1986arguments for an externally defined control method (a method in another 1987table). Although this is an improvement, there is no deterministic way to 1988"guess" the number of method arguments. Only the ACPI 6.0 External opcode 1989will completely solve this problem as it is deployed (automatically) in 1990newer BIOS code. 1991 1992iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 1993statements that could cause errors when the disassembled file is 1994compiled. ACPICA BZ 1243. David Box. 1995 1996iASL: Fixed a regression caused by the merger of the two versions of the 1997local strtoul64. Because of a dependency on a global variable, strtoul64 1998could return an error for integers greater than a 32-bit value. ACPICA BZ 19991260. 2000 2001iASL: Fixed a regression where a fault could occur for an ASL Return 2002statement if it invokes a control method that is not resolved. ACPICA BZ 20031264. 2004 2005AcpiXtract: Improved input file validation: detection of binary files and 2006non-acpidump text files. 2007 2008---------------------------------------- 200912 February 2016. Summary of changes for version 20160212: 2010 20111) ACPICA kernel-resident subsystem: 2012 2013Implemented full support for the ACPI 6.1 specification (released in 2014January). This version of the specification is available at: 2015http://www.uefi.org/specifications 2016 2017Only a relatively small number of changes were required in ACPICA to 2018support ACPI 6.1, in these areas: 2019- New predefined names 2020- New _HID values 2021- A new subtable for HEST 2022- A few other header changes for new values 2023 2024Ensure \_SB_._INI is executed before any _REG methods are executed. There 2025appears to be existing BIOS code that relies on this behavior. Lv Zheng. 2026 2027Reverted a change made in version 20151218 which enabled method 2028invocations to be targets of various ASL operators (SuperName and Target 2029grammar elements). While the new behavior is supported by the ACPI 2030specification, other AML interpreters do not support this behavior and 2031never will. The ACPI specification will be updated for ACPI 6.2 to remove 2032this support. Therefore, the change was reverted to the original ACPICA 2033behavior. 2034 2035ACPICA now supports the GCC 6 compiler. 2036 2037Current Release: (Note: build changes increased sizes) 2038 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 2039 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 2040Previous Release: 2041 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 2042 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 2043 2044 20452) iASL Compiler/Disassembler and Tools: 2046 2047Completed full support for the ACPI 6.0 External() AML opcode. The 2048compiler emits an external AML opcode for each ASL External statement. 2049This opcode is used by the disassembler to assist with the disassembly of 2050external control methods by specifying the required number of arguments 2051for the method. AML interpreters do not use this opcode. To ensure that 2052interpreters do not even see the opcode, a block of one or more external 2053opcodes is surrounded by an "If(0)" construct. As this feature becomes 2054commonly deployed in BIOS code, the ability of disassemblers to correctly 2055disassemble AML code will be greatly improved. David Box. 2056 2057iASL: Implemented support for an optional cross-reference output file. 2058The -lx option will create a the cross-reference file with the suffix 2059"xrf". Three different types of cross-reference are created in this file: 2060- List of object references made from within each control method 2061- Invocation (caller) list for each user-defined control method 2062- List of references to each non-method object in the namespace 2063 2064iASL: Method invocations as ASL Target operands are now disallowed and 2065flagged as errors in preparation for ACPI 6.2 (see the description of the 2066problem above). 2067 2068---------------------------------------- 20698 January 2016. Summary of changes for version 20160108: 2070 20711) ACPICA kernel-resident subsystem: 2072 2073Updated all ACPICA copyrights and signons to 2016: Added the 2016 2074copyright to all source code module headers and utility/tool signons. 2075This includes the standard Linux dual-license header. This affects 2076virtually every file in the ACPICA core subsystem, iASL compiler, all 2077ACPICA utilities, and the ACPICA test suite. 2078 2079Fixed a regression introduced in version 20151218 concerning the 2080execution of so-called module-level ASL/AML code. Namespace objects 2081created under a module-level If() construct were not properly/fully 2082entered into the namespace and could cause an interpreter fault when 2083accessed. 2084 2085Example Code and Data Size: These are the sizes for the OS-independent 2086acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2087debug version of the code includes the debug output trace mechanism and 2088has a much larger code and data size. 2089 2090Current Release: 2091 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 2092 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 2093 Previous Release: 2094 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 2095 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 2096 2097 20982) iASL Compiler/Disassembler and Tools: 2099 2100Fixed a problem with the compilation of the GpioIo and GpioInt resource 2101descriptors. The _PIN field name was incorrectly defined to be an array 2102of 32-bit values, but the _PIN values are in fact 16 bits each. This 2103would cause incorrect bit width warnings when using Word (16-bit) fields 2104to access the descriptors. 2105 2106 2107---------------------------------------- 210818 December 2015. Summary of changes for version 20151218: 2109 21101) ACPICA kernel-resident subsystem: 2111 2112Implemented per-AML-table execution of "module-level code" as individual 2113ACPI tables are loaded into the namespace during ACPICA initialization. 2114In other words, any module-level code within an AML table is executed 2115immediately after the table is loaded, instead of batched and executed 2116after all of the tables have been loaded. This provides compatibility 2117with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 2118David Box. 2119 2120To fully support the feature above, the default operation region handlers 2121for the SystemMemory, SystemIO, and PCI_Config address spaces are now 2122installed before any ACPI tables are loaded. This enables module-level 2123code to access these address spaces during the table load and module- 2124level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 2125Box. 2126 2127Implemented several changes to the internal _REG support in conjunction 2128with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 2129utilities for the changes above. Although these tools were changed, host 2130operating systems that simply use the default handlers for SystemMemory, 2131SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 2132 2133For example, in the code below, DEV1 is conditionally added to the 2134namespace by the DSDT via module-level code that accesses an operation 2135region. The SSDT references DEV1 via the Scope operator. DEV1 must be 2136created immediately after the DSDT is loaded in order for the SSDT to 2137successfully reference DEV1. Previously, this code would cause an 2138AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 2139fully supported by ACPICA. 2140 2141 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 2142 { 2143 OperationRegion (OPR1, SystemMemory, 0x400, 32) 2144 Field (OPR1, AnyAcc, NoLock, Preserve) 2145 { 2146 FLD1, 1 2147 } 2148 If (FLD1) 2149 { 2150 Device (\DEV1) 2151 { 2152 } 2153 } 2154 } 2155 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 2156 { 2157 External (\DEV1, DeviceObj) 2158 Scope (\DEV1) 2159 { 2160 } 2161 } 2162 2163Fixed an AML interpreter problem where control method invocations were 2164not handled correctly when the invocation was itself a SuperName argument 2165to another ASL operator. In these cases, the method was not invoked. 2166ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 2167argument: 2168 Store 2169 Acquire, Wait 2170 CondRefOf, RefOf 2171 Decrement, Increment 2172 Load, Unload 2173 Notify 2174 Signal, Release, Reset 2175 SizeOf 2176 2177Implemented automatic String-to-ObjectReference conversion support for 2178packages returned by predefined names (such as _DEP). A common BIOS error 2179is to add double quotes around an ObjectReference namepath, which turns 2180the reference into an unexpected string object. This support detects the 2181problem and corrects it before the package is returned to the caller that 2182invoked the method. Lv Zheng. 2183 2184Implemented extensions to the Concatenate operator. Concatenate now 2185accepts any type of object, it is not restricted to simply 2186Integer/String/Buffer. For objects other than these 3 basic data types, 2187the argument is treated as a string containing the name of the object 2188type. This expands the utility of Concatenate and the Printf/Fprintf 2189macros. ACPICA BZ 1222. 2190 2191Cleaned up the output of the ASL Debug object. The timer() value is now 2192optional and no longer emitted by default. Also, the basic data types of 2193Integer/String/Buffer are simply emitted as their values, without a data 2194type string -- since the data type is obvious from the output. ACPICA BZ 21951221. 2196 2197Example Code and Data Size: These are the sizes for the OS-independent 2198acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2199debug version of the code includes the debug output trace mechanism and 2200has a much larger code and data size. 2201 2202 Current Release: 2203 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 2204 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 2205 Previous Release: 2206 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 2207 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 2208 2209 22102) iASL Compiler/Disassembler and Tools: 2211 2212iASL: Fixed some issues with the ASL Include() operator. This operator 2213was incorrectly defined in the iASL parser rules, causing a new scope to 2214be opened for the code within the include file. This could lead to 2215several issues, including allowing ASL code that is technically illegal 2216and not supported by AML interpreters. Note, this does not affect the 2217related #include preprocessor operator. ACPICA BZ 1212. 2218 2219iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 2220operator is essentially an ASL macro since there is no AML opcode 2221associated with it. The code emitted by the iASL compiler for ElseIf is 2222an Else opcode followed immediately by an If opcode. The disassembler 2223will now emit an ElseIf if it finds an Else immediately followed by an 2224If. This simplifies the decoded ASL, especially for deeply nested 2225If..Else and large Switch constructs. Thus, the disassembled code more 2226closely follows the original source ASL. ACPICA BZ 1211. Example: 2227 2228 Old disassembly: 2229 Else 2230 { 2231 If (Arg0 == 0x02) 2232 { 2233 Local0 = 0x05 2234 } 2235 } 2236 2237 New disassembly: 2238 ElseIf (Arg0 == 0x02) 2239 { 2240 Local0 = 0x05 2241 } 2242 2243AcpiExec: Added support for the new module level code behavior and the 2244early region installation. This required a small change to the 2245initialization, since AcpiExec must install its own operation region 2246handlers. 2247 2248AcpiExec: Added support to make the debug object timer optional. Default 2249is timer disabled. This cleans up the debug object output -- the timer 2250data is rarely used. 2251 2252AcpiExec: Multiple ACPI tables are now loaded in the order that they 2253appear on the command line. This can be important when there are 2254interdependencies/references between the tables. 2255 2256iASL/Templates. Add support to generate template files with multiple 2257SSDTs within a single output file. Also added ommand line support to 2258specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 22591223, 1225. 2260 2261 2262---------------------------------------- 226324 November 2015. Summary of changes for version 20151124: 2264 22651) ACPICA kernel-resident subsystem: 2266 2267Fixed a possible regression for a previous update to FADT handling. The 2268FADT no longer has a fixed table ID, causing some issues with code that 2269was hardwired to a specific ID. Lv Zheng. 2270 2271Fixed a problem where the method auto-serialization could interfere with 2272the current SyncLevel. This change makes the auto-serialization support 2273transparent to the SyncLevel support and management. 2274 2275Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 2276interface is intended for early access to the namespace during the 2277initial namespace device discovery walk. The _SUB method has been seen to 2278access operation regions in some cases, causing errors because the 2279operation regions are not fully initialized. 2280 2281AML Debugger: Fixed some issues with the terminate/quit/exit commands 2282that can cause faults. Lv Zheng. 2283 2284AML Debugger: Add thread ID support so that single-step mode only applies 2285to the AML Debugger thread. This prevents runtime errors within some 2286kernels. Lv Zheng. 2287 2288Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 2289methods that are invoked by this interface are optional, removed warnings 2290emitted for the case where one or more of these methods do not exist. 2291ACPICA BZ 1208, original change by Prarit Bhargava. 2292 2293Made a major pass through the entire ACPICA source code base to 2294standardize formatting that has diverged a bit over time. There are no 2295functional changes, but this will of course cause quite a few code 2296differences from the previous ACPICA release. 2297 2298Example Code and Data Size: These are the sizes for the OS-independent 2299acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2300debug version of the code includes the debug output trace mechanism and 2301has a much larger code and data size. 2302 2303 Current Release: 2304 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 2305 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 2306 Previous Release: 2307 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2308 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 2309 2310 23112) iASL Compiler/Disassembler and Tools: 2312 2313iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 2314definition blocks within a single ASL file and the resulting AML file. 2315Support for this type of file was also added to the various tools that 2316use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 2317example code below shows two definition blocks within the same file: 2318 2319 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 23200x12345678) 2321 { 2322 } 2323 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 2324 { 2325 } 2326 2327iASL: Enhanced typechecking for the Name() operator. All expressions for 2328the value of the named object must be reduced/folded to a single constant 2329at compile time, as per the ACPI specification (the AML definition of 2330Name()). 2331 2332iASL: Fixed some code indentation issues for the -ic and -ia options (C 2333and assembly headers). Now all emitted code correctly begins in column 1. 2334 2335iASL: Added an error message for an attempt to open a Scope() on an 2336object defined in an SSDT. The DSDT is always loaded into the namespace 2337first, so any attempt to open a Scope on an SSDT object will fail at 2338runtime. 2339 2340 2341---------------------------------------- 234230 September 2015. Summary of changes for version 20150930: 2343 23441) ACPICA kernel-resident subsystem: 2345 2346Debugger: Implemented several changes and bug fixes to assist support for 2347the in-kernel version of the AML debugger. Lv Zheng. 2348- Fix the "predefined" command for in-kernel debugger. 2349- Do not enter debug command loop for the help and version commands. 2350- Disallow "execute" command during execution/single-step of a method. 2351 2352Interpreter: Updated runtime typechecking for all operators that have 2353target operands. The operand is resolved and validated that it is legal. 2354For example, the target cannot be a non-data object such as a Device, 2355Mutex, ThermalZone, etc., as per the ACPI specification. 2356 2357Debugger: Fixed the double-mutex user I/O handshake to work when local 2358deadlock detection is enabled. 2359 2360Debugger: limited display of method locals and arguments (LocalX and 2361ArgX) to only those that have actually been initialized. This prevents 2362lines of extraneous output. 2363 2364Updated the definition of the NFIT table to correct the bit polarity of 2365one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 2366 2367Example Code and Data Size: These are the sizes for the OS-independent 2368acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2369debug version of the code includes the debug output trace mechanism and 2370has a much larger code and data size. 2371 2372 Current Release: 2373 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2374 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 2375 Previous Release: 2376 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2377 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2378 2379 23802) iASL Compiler/Disassembler and Tools: 2381 2382iASL: Improved the compile-time typechecking for operands of many of the 2383ASL operators: 2384 2385-- Added an option to disable compiler operand/operator typechecking (- 2386ot). 2387 2388-- For the following operators, the TermArg operands are now validated 2389when possible to be Integer data objects: BankField, OperationRegion, 2390DataTableRegion, Buffer, and Package. 2391 2392-- Store (Source, Target): Both the source and target operands are 2393resolved and checked that the operands are both legal. For example, 2394neither operand can be a non-data object such as a Device, Mutex, 2395ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 2396operator can be used to store an object to any type of target object. 2397 2398-- Store (Source, Target): If the source is a Package object, the target 2399must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 2400is a Package, the source must also be a Package. 2401 2402-- Store (Source, Target): A warning is issued if the source and target 2403resolve to the identical named object. 2404 2405-- Store (Source, <method invocation>): An error is generated for the 2406target method invocation, as this construct is not supported by the AML 2407interpreter. 2408 2409-- For all ASL math and logic operators, the target operand must be a 2410data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 2411includes the function return value also. 2412 2413-- External declarations are also included in the typechecking where 2414possible. External objects defined using the UnknownObj keyword cannot be 2415typechecked, however. 2416 2417iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 2418operator: 2419- Legacy code: Index(PKG1, 3) 2420- New ASL+ code: PKG1[3] 2421This completes the ACPI 6.0 ASL+ support as it was the only operator not 2422supported. 2423 2424iASL: Fixed the file suffix for the preprocessor output file (.i). Two 2425spaces were inadvertently appended to the filename, causing file access 2426and deletion problems on some systems. 2427 2428ASL Test Suite (ASLTS): Updated the master makefile to generate all 2429possible compiler output files when building the test suite -- thus 2430exercising these features of the compiler. These files are automatically 2431deleted when the test suite exits. 2432 2433 2434---------------------------------------- 243518 August 2015. Summary of changes for version 20150818: 2436 24371) ACPICA kernel-resident subsystem: 2438 2439Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 2440Zheng. ACPICA BZ 1186. 2441 2442Completed development to ensure that the ACPICA Disassembler and Debugger 2443are fully standalone components of ACPICA. Removed cross-component 2444dependences. Lv Zheng. 2445 2446The max-number-of-AML-loops is now runtime configurable (previously was 2447compile-time only). This is essentially a loop timeout to force-abort 2448infinite AML loops. ACPCIA BZ 1192. 2449 2450Debugger: Cleanup output to dump ACPI names and namepaths without any 2451trailing underscores. Lv Zheng. ACPICA BZ 1135. 2452 2453Removed unnecessary conditional compilations across the Debugger and 2454Disassembler components where entire modules could be left uncompiled. 2455 2456The aapits test is deprecated and has been removed from the ACPICA git 2457tree. The test has never been completed and has not been maintained, thus 2458becoming rather useless. ACPICA BZ 1015, 794. 2459 2460A batch of small changes to close bugzilla and other reports: 2461- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 2462- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 2463- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 2464- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 2465Moore. 2466- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 2467ACPICA BZ 1184. 2468- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 2469operators. 2470- Debugger: Split debugger initialization/termination interfaces. Lv 2471Zheng. 2472- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 2473identification. 2474- AcpiExec: Add debug message during _REG method phase during table 2475load/init. 2476- AcpiNames: Fix a regression where some output was missing and no longer 2477emitted. 2478- Debugger: General cleanup and simplification. Lv Zheng. 2479- Disassembler: Cleanup use of several global option variables. Lv Zheng. 2480 2481Example Code and Data Size: These are the sizes for the OS-independent 2482acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2483debug version of the code includes the debug output trace mechanism and 2484has a much larger code and data size. 2485 2486 Current Release: 2487 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 2488 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 2489 Previous Release: 2490 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2491 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2492 2493 24942) iASL Compiler/Disassembler and Tools: 2495 2496AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 2497were not handled properly and caused load errors. Now, properly invoke 2498and use the ACPICA auto-reallocate mechanism for ACPI table data 2499structures. ACPICA BZ 1188 2500 2501AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 2502BZ 1190. 2503 2504AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 2505AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 2506executed during initialization. ACPICA BZ 1187, 1189. 2507 2508iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 2509that corresponds to each disassembled ASL statement, to simplify 2510debugging. ACPICA BZ 1191. 2511 2512Debugger: Add option to the "objects" command to display a summary of the 2513current namespace objects (Object type and count). This is displayed if 2514the command is entered with no arguments. 2515 2516AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 2517 2518 2519---------------------------------------- 252017 July 2015. Summary of changes for version 20150717: 2521 25221) ACPICA kernel-resident subsystem: 2523 2524Improved the partitioning between the Debugger and Disassembler 2525components. This allows the Debugger to be used standalone within kernel 2526code without the Disassembler (which is used for single stepping also). 2527This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 2528 2529Debugger: Implemented a new command to trace the execution of control 2530methods (Trace). This is especially useful for the in-kernel version of 2531the debugger when file I/O may not be available for method trace output. 2532See the ACPICA reference for more information. Lv Zheng. 2533 2534Moved all C library prototypes (used for the local versions of these 2535functions when requested) to a new header, acclib.h 2536Cleaned up the use of non-ANSI C library functions. These functions are 2537implemented locally in ACPICA. Moved all such functions to a common 2538source file, utnonansi.c 2539 2540Debugger: Fixed a problem with the "!!" command (get last command 2541executed) where the debugger could enter an infinite loop and eventually 2542crash. 2543 2544Removed the use of local macros that were used for some of the standard C 2545library functions to automatically cast input parameters. This mostly 2546affected the is* functions where the input parameter is defined to be an 2547int. This required a few modifications to the main ACPICA source code to 2548provide casting for these functions and eliminate possible compiler 2549warnings for these parameters. 2550 2551Across the source code, added additional status/error checking to resolve 2552issues discovered by static source code analysis tools such as Coverity. 2553 2554Example Code and Data Size: These are the sizes for the OS-independent 2555acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2556debug version of the code includes the debug output trace mechanism and 2557has a much larger code and data size. 2558 2559 Current Release: 2560 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 2561 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 2562 Previous Release: 2563 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 2564 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 2565 2566 25672) iASL Compiler/Disassembler and Tools: 2568 2569iASL: Fixed a regression where the device map file feature no longer 2570worked properly when used in conjunction with the disassembler. It only 2571worked properly with the compiler itself. 2572 2573iASL: Implemented a new warning for method LocalX variables that are set 2574but never used (similar to a C compiler such as gcc). This also applies 2575to ArgX variables that are not defined by the parent method, and are 2576instead (legally) used as local variables. 2577 2578iASL/Preprocessor: Finished the pass-through of line numbers from the 2579preprocessor to the compiler. This ensures that compiler errors/warnings 2580have the correct original line numbers and filenames, regardless of any 2581#include files. 2582 2583iASL/Preprocessor: Fixed a couple of issues with comment handling and the 2584pass-through of comments to the preprocessor output file (which becomes 2585the compiler input file). Also fixed a problem with // comments that 2586appear after a math expression. 2587 2588iASL: Added support for the TCPA server table to the table compiler and 2589template generator. (The client table was already previously supported) 2590 2591iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 2592identify the iASL compiler. 2593 2594Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 2595multiple times. The new names are ACPI_SIGN_NEGATIVE and 2596ACPI_SIGN_POSITIVE. 2597 2598AcpiHelp: Update to expand help messages for the iASL preprocessor 2599directives. 2600 2601 2602---------------------------------------- 260319 June 2015. Summary of changes for version 20150619: 2604 2605Two regressions in version 20150616 have been addressed: 2606 2607Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 2608etc.) This update changes ACPICA to only use the standard headers for 2609functions, or the prototypes for the local versions of the C library 2610functions. Across the source code, this required some additional casts 2611for some Clib invocations for portability. Moved all local prototypes to 2612a new file, acclib.h 2613 2614Fixes several problems with recent changes to the handling of the FACS 2615table that could cause some systems not to boot. 2616 2617 2618---------------------------------------- 261916 June 2015. Summary of changes for version 20150616: 2620 2621 26221) ACPICA kernel-resident subsystem: 2623 2624Across the entire ACPICA source code base, the various macros for the C 2625library functions (such as ACPI_STRLEN, etc.) have been removed and 2626replaced by the standard C library names (strlen, etc.) The original 2627purpose for these macros is no longer applicable. This simplification 2628reduces the number of macros used in the ACPICA source code 2629significantly, improving readability and maintainability. 2630 2631Implemented support for a new ACPI table, the OSDT. This table, the 2632"override" SDT, can be loaded directly by the host OS at boot time. It 2633enables the replacement of existing namespace objects that were installed 2634via the DSDT and/or SSDTs. The primary purpose for this is to replace 2635buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 2636for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 2637Moore. 2638 2639Added support for systems with (improperly) two FACS tables -- a "32-bit" 2640table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 2641X field). This change will support both automatically. There continues to 2642be systems found with this issue. This support requires a change to the 2643AcpiSetFirmwareWakingVector interface. Also, a public global variable has 2644been added to allow the host to select which FACS is desired 2645(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 2646details Lv Zheng. 2647 2648Added a new feature to allow for systems that do not contain an FACS. 2649Although this is already supported on hardware-reduced platforms, the 2650feature has been extended for all platforms. The reasoning is that we do 2651not want to abort the entire ACPICA initialization just because the 2652system is seriously buggy and has no FACS. 2653 2654Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 2655not correctly transcribed from the ACPI specification in ACPICA version 265620150515. 2657 2658Implemented support for the _CLS object in the AcpiGetObjectInfo external 2659interface. 2660 2661Updated the definitions of the TCPA and TPM2 ACPI tables to the more 2662recent TCG ACPI Specification, December 14, 2014. Table disassembler and 2663compiler also updated. Note: The TCPA "server" table is not supported by 2664the disassembler/table-compiler at this time. 2665 2666ACPI 6.0: Added definitions for the new GIC version field in the MADT. 2667 2668Example Code and Data Size: These are the sizes for the OS-independent 2669acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2670debug version of the code includes the debug output trace mechanism and 2671has a much larger code and data size. 2672 2673 Current Release: 2674 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 2675 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 2676 Previous Release: 2677 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 2678 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 2679 2680 26812) iASL Compiler/Disassembler and Tools: 2682 2683Disassembler: Fixed a problem with the new symbolic operator disassembler 2684where incorrect ASL code could be emitted in some cases for the "non- 2685commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 2686ShiftRight. The actual problem cases seem to be rather unusual in common 2687ASL code, however. David Box. 2688 2689Modified the linux version of acpidump to obtain ACPI tables from not 2690just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 2691Zheng. 2692 2693iASL: Fixed a problem where the user preprocessor output file (.i) 2694contained extra data that was not expected. The compiler was using this 2695file as a temporary file and passed through #line directives in order to 2696keep compiler error messages in sync with the input file and line number 2697across multiple include files. The (.i) is no longer a temporary file as 2698the compiler uses a new, different file for the original purpose. 2699 2700iASL: Fixed a problem where comments within the original ASL source code 2701file were not passed through to the preprocessor output file, nor any 2702listing files. 2703 2704iASL: Fixed some issues for the handling of the "#include" preprocessor 2705directive and the similar (but not the same) "Include" ASL operator. 2706 2707iASL: Add support for the new OSDT in both the disassembler and compiler. 2708 2709iASL: Fixed a problem with the constant folding support where a Buffer 2710object could be incorrectly generated (incorrectly formed) during a 2711conversion to a Store() operator. 2712 2713AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 2714description text for the _REV predefined name. _REV now permanently 2715returns 2, as per the ACPI 6.0 specification. 2716 2717Debugger: Enhanced the output of the Debug ASL object for references 2718produced by the Index operator. For Buffers and strings, only output the 2719actual byte pointed to by the index. For packages, only print the single 2720package element decoded by the index. Previously, the entire 2721buffer/string/package was emitted. 2722 2723iASL/Table-compiler: Fixed a regression where the "generic" data types 2724were no longer recognized, causing errors. 2725 2726 2727---------------------------------------- 272815 May 2015. Summary of changes for version 20150515: 2729 2730This release implements most of ACPI 6.0 as described below. 2731 27321) ACPICA kernel-resident subsystem: 2733 2734Implemented runtime argument checking and return value checking for all 2735new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 2736_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 2737 2738Example Code and Data Size: These are the sizes for the OS-independent 2739acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2740debug version of the code includes the debug output trace mechanism and 2741has a much larger code and data size. 2742 2743 Current Release: 2744 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 2745 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 2746 Previous Release: 2747 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 2748 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 2749 2750 27512) iASL Compiler/Disassembler and Tools: 2752 2753iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 2754names (argument count validation and return value typechecking.) 2755 2756iASL disassembler and table compiler: implemented support for all new 2757ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 2758 2759iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 2760tables: FADT, MADT. 2761 2762iASL preprocessor: Added a new directive to enable inclusion of binary 2763blobs into ASL code. The new directive is #includebuffer. It takes a 2764binary file as input and emits a named ascii buffer object into the ASL 2765code. 2766 2767AcpiHelp: Added support for all new ACPI 6.0 predefined names. 2768 2769AcpiHelp: Added a new option, -d, to display all iASL preprocessor 2770directives. 2771 2772AcpiHelp: Added a new option, -t, to display all known/supported ACPI 2773tables. 2774 2775 2776---------------------------------------- 277710 April 2015. Summary of changes for version 20150410: 2778 2779Reverted a change introduced in version 20150408 that caused 2780a regression in the disassembler where incorrect operator 2781symbols could be emitted. 2782 2783 2784---------------------------------------- 278508 April 2015. Summary of changes for version 20150408: 2786 2787 27881) ACPICA kernel-resident subsystem: 2789 2790Permanently set the return value for the _REV predefined name. It now 2791returns 2 (was 5). This matches other ACPI implementations. _REV will be 2792deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 2793for ACPI 2.0 and later. It should never be used to differentiate or 2794identify operating systems. 2795 2796Added the "Windows 2015" string to the _OSI support. ACPICA will now 2797return TRUE to a query with this string. 2798 2799Fixed several issues with the local version of the printf function. 2800 2801Added the C99 compiler option (-std=c99) to the Unix makefiles. 2802 2803 Current Release: 2804 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 2805 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 2806 Previous Release: 2807 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2808 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2809 2810 28112) iASL Compiler/Disassembler and Tools: 2812 2813iASL: Implemented an enhancement to the constant folding feature to 2814transform the parse tree to a simple Store operation whenever possible: 2815 Add (2, 3, X) ==> is converted to: Store (5, X) 2816 X = 2 + 3 ==> is converted to: Store (5, X) 2817 2818Updated support for the SLIC table (Software Licensing Description Table) 2819in both the Data Table compiler and the disassembler. The SLIC table 2820support now conforms to "Microsoft Software Licensing Tables (SLIC and 2821MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 2822following the ACPI header is now defined to be "Proprietary Data", and as 2823such, can only be entered or displayed as a hex data block. 2824 2825Implemented full support for the MSDM table as described in the document 2826above. Note: The format of MSDM is similar to SLIC. Any MSDM data 2827following the ACPI header is defined to be "Proprietary Data", and can 2828only be entered or displayed as a hex data block. 2829 2830Implemented the -Pn option for the iASL Table Compiler (was only 2831implemented for the ASL compiler). This option disables the iASL 2832preprocessor. 2833 2834Disassembler: For disassembly of Data Tables, added a comment field 2835around the Ascii equivalent data that is emitted as part of the "Raw 2836Table Data" block. This prevents the iASL Preprocessor from possible 2837confusion if/when the table is compiled. 2838 2839Disassembler: Added an option (-df) to force the disassembler to assume 2840that the table being disassembled contains valid AML. This feature is 2841useful for disassembling AML files that contain ACPI signatures other 2842than DSDT or SSDT (such as OEMx or other signatures). 2843 2844Changes for the EFI version of the tools: 28451) Fixed a build error/issue 28462) Fixed a cast warning 2847 2848iASL: Fixed a path issue with the __FILE__ operator by making the 2849directory prefix optional within the internal SplitInputFilename 2850function. 2851 2852Debugger: Removed some unused global variables. 2853 2854Tests: Updated the makefile for proper generation of the AAPITS suite. 2855 2856 2857---------------------------------------- 285804 February 2015. Summary of changes for version 20150204: 2859 2860ACPICA kernel-resident subsystem: 2861 2862Updated all ACPICA copyrights and signons to 2014. Added the 2014 2863copyright to all module headers and signons, including the standard Linux 2864header. This affects virtually every file in the ACPICA core subsystem, 2865iASL compiler, all ACPICA utilities, and the test suites. 2866 2867Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 2868A raw gpe handling mechanism was created to allow better handling of GPE 2869storms that aren't easily managed by the normal handler. The raw handler 2870allows disabling/renabling of the the GPE so that interrupt storms can be 2871avoided in cases where events cannot be timely serviced. In this 2872scenario, handlers should use the AcpiSetGpe() API to disable/enable the 2873GPE. This API will leave the reference counts undisturbed, thereby 2874preventing unintentional clearing of the GPE when the intent in only to 2875temporarily disable it. Raw handlers allow enabling and disabling of a 2876GPE by removing GPE register locking. As such, raw handlers much provide 2877their own locks while using GPE API's to protect access to GPE data 2878structures. 2879Lv Zheng 2880 2881Events: Always modify GPE registers under the GPE lock. 2882Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 2883values. Reported as bug by joe.liu@apple.com. 2884 2885Unix makefiles: Separate option to disable optimizations and 2886_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 2887NOOPT disable option and creates a separate flag (NOFORTIFY) for this 2888purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 2889errors when building ACPICA. This allows disabling the option without 2890also having to disable optimazations. 2891David Box 2892 2893 Current Release: 2894 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 2895 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 2896 2897-- 2898-------------------------------------- 289907 November 2014. Summary of changes for version 20141107: 2900 2901This release is available at https://acpica.org/downloads 2902 2903This release introduces and implements language extensions to ASL that 2904provide support for symbolic ("C-style") operators and expressions. These 2905language extensions are known collectively as ASL+. 2906 2907 29081) iASL Compiler/Disassembler and Tools: 2909 2910Disassembler: Fixed a problem with disassembly of the UartSerialBus 2911macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 2912Box. 2913 2914Disassembler: Fixed the Unicode macro support to add escape sequences. 2915All non-printable ASCII values are emitted as escape sequences, as well 2916as the standard escapes for quote and backslash. Ensures that the 2917disassembled macro can be correctly recompiled. 2918 2919iASL: Added Printf/Fprintf macros for formatted output. These macros are 2920translated to existing AML Concatenate and Store operations. Printf 2921writes to the ASL Debug object. Fprintf allows the specification of an 2922ASL name as the target. Only a single format specifier is required, %o, 2923since the AML interpreter dynamically converts objects to the required 2924type. David E. Box. 2925 2926 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 2927 (Concatenate (Concatenate (Concatenate ("", Arg0), 2928 ": Unexpected value for "), Arg1), ", "), Arg2), 2929 " at line "), Arg3), Debug) 2930 2931 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 2932 Arg0, Arg1, Arg2, Arg3) 2933 2934 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 2935 ("", Arg1), ": "), Arg0), " Successful"), STR1) 2936 2937 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 2938 2939iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 2940ASL parse tree before the AML code is generated. This allows blocks of 2941ASL code to be removed in order to help locate and identify problem 2942devices and/or code. David E. Box. 2943 2944AcpiExec: Added support (-fi) for an optional namespace object 2945initialization file. This file specifies initial values for namespace 2946objects as necessary for debugging and testing different ASL code paths 2947that may be taken as a result of BIOS options. 2948 2949 29502) Overview of symbolic operator support for ASL (ASL+) 2951------------------------------------------------------- 2952 2953As an extension to the ASL language, iASL implements support for symbolic 2954(C-style) operators for math and logical expressions. This can greatly 2955simplify ASL code as well as improve both readability and 2956maintainability. These language extensions can exist concurrently with 2957all legacy ASL code and expressions. 2958 2959The symbolic extensions are 100% compatible with existing AML 2960interpreters, since no new AML opcodes are created. To implement the 2961extensions, the iASL compiler transforms the symbolic expressions into 2962the legacy ASL/AML equivalents at compile time. 2963 2964Full symbolic expressions are supported, along with the standard C 2965precedence and associativity rules. 2966 2967Full disassembler support for the symbolic expressions is provided, and 2968creates an automatic migration path for existing ASL code to ASL+ code 2969via the disassembly process. By default, the disassembler now emits ASL+ 2970code with symbolic expressions. An option (-dl) is provided to force the 2971disassembler to emit legacy ASL code if desired. 2972 2973Below is the complete list of the currently supported symbolic operators 2974with examples. See the iASL User Guide for additional information. 2975 2976 2977ASL+ Syntax Legacy ASL Equivalent 2978----------- --------------------- 2979 2980 // Math operators 2981 2982Z = X + Y Add (X, Y, Z) 2983Z = X - Y Subtract (X, Y, Z) 2984Z = X * Y Multiply (X, Y, Z) 2985Z = X / Y Divide (X, Y, , Z) 2986Z = X % Y Mod (X, Y, Z) 2987Z = X << Y ShiftLeft (X, Y, Z) 2988Z = X >> Y ShiftRight (X, Y, Z) 2989Z = X & Y And (X, Y, Z) 2990Z = X | Y Or (X, Y, Z) 2991Z = X ^ Y Xor (X, Y, Z) 2992Z = ~X Not (X, Z) 2993X++ Increment (X) 2994X-- Decrement (X) 2995 2996 // Logical operators 2997 2998(X == Y) LEqual (X, Y) 2999(X != Y) LNotEqual (X, Y) 3000(X < Y) LLess (X, Y) 3001(X > Y) LGreater (X, Y) 3002(X <= Y) LLessEqual (X, Y) 3003(X >= Y) LGreaterEqual (X, Y) 3004(X && Y) LAnd (X, Y) 3005(X || Y) LOr (X, Y) 3006(!X) LNot (X) 3007 3008 // Assignment and compound assignment operations 3009 3010X = Y Store (Y, X) 3011X += Y Add (X, Y, X) 3012X -= Y Subtract (X, Y, X) 3013X *= Y Multiply (X, Y, X) 3014X /= Y Divide (X, Y, , X) 3015X %= Y Mod (X, Y, X) 3016X <<= Y ShiftLeft (X, Y, X) 3017X >>= Y ShiftRight (X, Y, X) 3018X &= Y And (X, Y, X) 3019X |= Y Or (X, Y, X) 3020X ^= Y Xor (X, Y, X) 3021 3022 30233) ASL+ Examples: 3024----------------- 3025 3026Legacy ASL: 3027 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 3028 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 30290x03FB), 3030 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 3031 { 3032 And (MEMB, 0xFFFFFFF0, SRMB) 3033 Store (MEMB, Local2) 3034 Store (PDBM, Local1) 3035 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 3036 Store (SRMB, MEMB) 3037 Or (PDBM, 0x02, PDBM) 3038 } 3039 3040ASL+ version: 3041 If (((R510 & 0x03FB) == 0x02E0) || 3042 ((R520 & 0x03FB) == 0x02E0) || 3043 ((R530 & 0x03FB) == 0x02E0) || 3044 ((R540 & 0x03FB) == 0x02E0)) 3045 { 3046 SRMB = (MEMB & 0xFFFFFFF0) 3047 Local2 = MEMB 3048 Local1 = PDBM 3049 PDBM &= 0xFFFFFFFFFFFFFFF9 3050 MEMB = SRMB 3051 PDBM |= 0x02 3052 } 3053 3054Legacy ASL: 3055 Store (0x1234, Local1) 3056 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 3057 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 3058 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 3059 Store (Index (PKG1, 0x03), Local6) 3060 Store (Add (Local3, Local2), Debug) 3061 Add (Local1, 0x0F, Local2) 3062 Add (Local1, Multiply (Local2, Local3), Local2) 3063 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 3064 3065ASL+ version: 3066 Local1 = 0x1234 3067 Local3 = (((Local1 + TEST) + 0x20) * Local2) 3068 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 3069 Local3 = (Local1 + (TEST + (0x20 * Local2))) 3070 Local6 = Index (PKG1, 0x03) 3071 Debug = (Local3 + Local2) 3072 Local2 = (Local1 + 0x0F) 3073 Local2 = (Local1 + (Local2 * Local3)) 3074 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 3075 3076 3077---------------------------------------- 307826 September 2014. Summary of changes for version 20140926: 3079 30801) ACPICA kernel-resident subsystem: 3081 3082Updated the GPIO operation region handler interface (GeneralPurposeIo). 3083In order to support GPIO Connection objects with multiple pins, along 3084with the related Field objects, the following changes to the interface 3085have been made: The Address is now defined to be the offset in bits of 3086the field unit from the previous invocation of a Connection. It can be 3087viewed as a "Pin Number Index" into the connection resource descriptor. 3088The BitWidth is the exact bit width of the field. It is usually one bit, 3089but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 3090additional information and examples. 3091 3092GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 3093corresponding _Lxx/_Exx methods are disabled (they may have been enabled 3094by the firmware), so that they cannot fire until they are enabled via 3095AcpiUpdateAllGpes. Rafael J. Wysocki. 3096 3097Added a new return flag for the Event/GPE status interfaces -- 3098AcpiGetEventStatus and AcpiGetGpeStatus. The new 3099ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 3100GPE currently has a handler associated with it, and can thus actually 3101affect the system. Lv Zheng. 3102 3103Example Code and Data Size: These are the sizes for the OS-independent 3104acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3105debug version of the code includes the debug output trace mechanism and 3106has a much larger code and data size. 3107 3108 Current Release: 3109 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 3110 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 3111 Previous Release: 3112 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3113 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3114 31152) iASL Compiler/Disassembler and Tools: 3116 3117iASL: Fixed a memory allocation/free regression introduced in 20140828 3118that could cause the compiler to crash. This was introduced inadvertently 3119during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 31201113. 3121 3122iASL: Removed two error messages that have been found to create false 3123positives, until they can be fixed and fully validated (ACPICA BZ 1112): 31241) Illegal forward reference within a method 31252) Illegal reference across two methods 3126 3127iASL: Implemented a new option (-lm) to create a hardware mapping file 3128that summarizes all GPIO, I2C, SPI, and UART connections. This option 3129works for both the compiler and disassembler. See the iASL compiler user 3130guide for additional information and examples (section 6.4.6). 3131 3132AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 3133version 2. This corrects the AE_BAD_HEADER exception seen on systems with 3134a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 3135 3136AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 3137unless STDIN is actually a terminal. Assists with batch-mode processing. 3138ACPICA BZ 1114. 3139 3140Disassembler/AcpiHelp: Added another large group of recognized _HID 3141values. 3142 3143 3144---------------------------------------- 314528 August 2014. Summary of changes for version 20140828: 3146 31471) ACPICA kernel-resident subsystem: 3148 3149Fixed a problem related to the internal use of the Timer() operator where 3150a 64-bit divide could cause an attempted link to a double-precision math 3151library. This divide is not actually necessary, so the code was 3152restructured to eliminate it. Lv Zheng. 3153 3154ACPI 5.1: Added support for the runtime validation of the _DSD package 3155(similar to the iASL support). 3156 3157ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 3158SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 3159 3160Example Code and Data Size: These are the sizes for the OS-independent 3161acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3162debug version of the code includes the debug output trace mechanism and 3163has a much larger code and data size. 3164 3165 Current Release: 3166 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 3167 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 3168 Previous Release: 3169 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 3170 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 3171 31722) iASL Compiler/Disassembler and Tools: 3173 3174AcpiExec: Fixed a problem on unix systems where the original terminal 3175state was not always properly restored upon exit. Seen when using the -v 3176option. ACPICA BZ 1104. 3177 3178iASL: Fixed a problem with the validation of the ranges/length within the 3179Memory24 resource descriptor. There was a boundary condition when the 3180range was equal to the (length -1) caused by the fact that these values 3181are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 3182 3183Disassembler: Fixed a problem with the GpioInt descriptor interrupt 3184polarity 3185flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 3186is 3187now supported properly. 3188 3189ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 3190in the disassembler, data table compiler, and table template generator. 3191 3192iASL: Added a requirement for Device() objects that one of either a _HID 3193or _ADR must exist within the scope of a Device, as per the ACPI 3194specification. Remove a similar requirement that was incorrectly in place 3195for the _DSD object. 3196 3197iASL: Added error detection for illegal named references within control 3198methods that would cause runtime failures. Now trapped as errors are: 1) 3199References to objects within a non-parent control method. 2) Forward 3200references (within a method) -- for control methods, AML interpreters use 3201a one-pass parse of control methods. ACPICA BZ 1008. 3202 3203iASL: Added error checking for dependencies related to the _PSx power 3204methods. ACPICA BZ 1029. 32051) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 3206_PS3. 32072) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 3208scope. 3209 3210iASL and table compiler: Cleanup miscellaneous memory leaks by fully 3211deploying the existing object and string caches and adding new caches for 3212the table compiler. 3213 3214iASL: Split the huge parser source file into multiple subfiles to improve 3215manageability. Generation now requires the M4 macro preprocessor, which 3216is part of the Bison distribution on both unix and windows platforms. 3217 3218AcpiSrc: Fixed and removed all extraneous warnings generated during 3219entire ACPICA source code scan and/or conversion. 3220 3221 3222---------------------------------------- 3223 322424 July 2014. Summary of changes for version 20140724: 3225 3226The ACPI 5.1 specification has been released and is available at: 3227http://uefi.org/specs/access 3228 3229 32300) ACPI 5.1 support in ACPICA: 3231 3232ACPI 5.1 is fully supported in ACPICA as of this release. 3233 3234New predefined names. Support includes iASL and runtime ACPICA 3235validation. 3236 _CCA (Cache Coherency Attribute). 3237 _DSD (Device-Specific Data). David Box. 3238 3239Modifications to existing ACPI tables. Support includes headers, iASL 3240Data Table compiler, disassembler, and the template generator. 3241 FADT - New fields and flags. Graeme Gregory. 3242 GTDT - One new subtable and new fields. Tomasz Nowicki. 3243 MADT - Two new subtables. Tomasz Nowicki. 3244 PCCT - One new subtable. 3245 3246Miscellaneous. 3247 New notification type for System Resource Affinity change events. 3248 3249 32501) ACPICA kernel-resident subsystem: 3251 3252Fixed a regression introduced in 20140627 where a fault can happen during 3253the deletion of Alias AML namespace objects. The problem affected both 3254the core ACPICA and the ACPICA tools including iASL and AcpiExec. 3255 3256Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 3257simple mechanism to enable wake GPEs that have no associated handler or 3258control method. Rafael Wysocki. 3259 3260Updated the AcpiEnableGpe interface to disallow the enable if there is no 3261handler or control method associated with the particular GPE. This will 3262help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 3263 3264Updated GPE handling and dispatch by disabling the GPE before clearing 3265the status bit for edge-triggered GPEs. Lv Zheng. 3266 3267Added Timer() support to the AML Debug object. The current timer value is 3268now displayed with each invocation of (Store to) the debug object to 3269enable simple generation of execution times for AML code (method 3270execution for example.) ACPICA BZ 1093. 3271 3272Example Code and Data Size: These are the sizes for the OS-independent 3273acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3274debug version of the code includes the debug output trace mechanism and 3275has a much larger code and data size. 3276 3277 Current Release: 3278 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 3279 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 3280 Previous Release: 3281 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 3282 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 3283 3284 32852) iASL Compiler/Disassembler and Tools: 3286 3287Fixed an issue with the recently added local printf implementation, 3288concerning width/precision specifiers that could cause incorrect output. 3289Lv Zheng. ACPICA BZ 1094. 3290 3291Disassembler: Added support to detect buffers that contain UUIDs and 3292disassemble them to an invocation of the ToUUID operator. Also emit 3293commented descriptions of known ACPI-related UUIDs. 3294 3295AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 3296-u. Adds three new files. 3297 3298iASL: Update table compiler and disassembler for DMAR table changes that 3299were introduced in September 2013. With assistance by David Woodhouse. 3300 3301---------------------------------------- 330227 June 2014. Summary of changes for version 20140627: 3303 33041) ACPICA kernel-resident subsystem: 3305 3306Formatted Output: Implemented local versions of standard formatted output 3307utilities such as printf, etc. Over time, it has been discovered that 3308there are in fact many portability issues with printf, and the addition 3309of this feature will fix/prevent these issues once and for all. Some 3310known issues are summarized below: 3311 33121) Output of 64-bit values is not portable. For example, UINT64 is %ull 3313for the Linux kernel and is %uI64 for some MSVC versions. 33142) Invoking printf consistently in a manner that is portable across both 331532-bit and 64-bit platforms is difficult at best in many situations. 33163) The output format for pointers varies from system to system (leading 3317zeros especially), and leads to inconsistent output from ACPICA across 3318platforms. 33194) Certain platform-specific printf formats may conflict with ACPICA use. 33205) If there is no local C library available, ACPICA now has local support 3321for printf. 3322 3323-- To address these printf issues in a complete manner, ACPICA now 3324directly implements a small subset of printf format specifiers, only 3325those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 3326 3327Implemented support for ACPICA generation within the EFI environment. 3328Initially, the AcpiDump utility is supported in the UEFI shell 3329environment. Lv Zheng. 3330 3331Added a new external interface, AcpiLogError, to improve ACPICA 3332portability. This allows the host to redirect error messages from the 3333ACPICA utilities. Lv Zheng. 3334 3335Added and deployed new OSL file I/O interfaces to improve ACPICA 3336portability: 3337 AcpiOsOpenFile 3338 AcpiOsCloseFile 3339 AcpiOsReadFile 3340 AcpiOsWriteFile 3341 AcpiOsGetFileOffset 3342 AcpiOsSetFileOffset 3343There are C library implementations of these functions in the new file 3344service_layers/oslibcfs.c -- however, the functions can be implemented by 3345the local host in any way necessary. Lv Zheng. 3346 3347Implemented a mechanism to disable/enable ACPI table checksum validation 3348at runtime. This can be useful when loading tables very early during OS 3349initialization when it may not be possible to map the entire table in 3350order to compute the checksum. Lv Zheng. 3351 3352Fixed a buffer allocation issue for the Generic Serial Bus support. 3353Originally, a fixed buffer length was used. This change allows for 3354variable-length buffers based upon the protocol indicated by the field 3355access attributes. Reported by Lan Tianyu. Lv Zheng. 3356 3357Fixed a problem where an object detached from a namespace node was not 3358properly terminated/cleared and could cause a circular list problem if 3359reattached. ACPICA BZ 1063. David Box. 3360 3361Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 3362 3363Fixed a possible memory leak in an error return path within the function 3364AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 3365 3366Example Code and Data Size: These are the sizes for the OS-independent 3367acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3368debug version of the code includes the debug output trace mechanism and 3369has a much larger code and data size. 3370 3371 Current Release: 3372 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 3373 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 3374 Previous Release: 3375 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3376 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3377 3378 33792) iASL Compiler/Disassembler and Tools: 3380 3381Disassembler: Add dump of ASCII equivalent text within a comment at the 3382end of each line of the output for the Buffer() ASL operator. 3383 3384AcpiDump: Miscellaneous changes: 3385 Fixed repetitive table dump in -n mode. 3386 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 3387the ACPI 2.0 GUID fails. 3388 3389iASL: Fixed a problem where the compiler could fault if incorrectly given 3390an acpidump output file as input. ACPICA BZ 1088. David Box. 3391 3392AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 3393they are invoked without any arguments. 3394 3395Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 33961086. Colin Ian King. 3397 3398Disassembler: Cleaned up a block of code that extracts a parent Op 3399object. Added a comment that explains that the parent is guaranteed to be 3400valid in this case. ACPICA BZ 1069. 3401 3402 3403---------------------------------------- 340424 April 2014. Summary of changes for version 20140424: 3405 34061) ACPICA kernel-resident subsystem: 3407 3408Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 3409Some of these tables are known to contain a trailing NULL entry. Lv 3410Zheng. 3411 3412Removed an extraneous error message for the case where there are a large 3413number of system GPEs (> 124). This was the "32-bit FADT register is too 3414long to convert to GAS struct" message, which is irrelevant for GPEs 3415since the GPEx_BLK_LEN fields of the FADT are always used instead of the 3416(limited capacity) GAS bit length. Also, several changes to ensure proper 3417support for GPE numbers > 255, where some "GPE number" fields were 8-bits 3418internally. 3419 3420Implemented and deployed additional configuration support for the public 3421ACPICA external interfaces. Entire classes of interfaces can now be 3422easily modified or configured out, replaced by stubbed inline functions 3423by default. Lv Zheng. 3424 3425Moved all public ACPICA runtime configuration globals to the public 3426ACPICA external interface file for convenience. Also, removed some 3427obsolete/unused globals. See the file acpixf.h. Lv Zheng. 3428 3429Documentation: Added a new section to the ACPICA reference describing the 3430maximum number of GPEs that can be supported by the FADT-defined GPEs in 3431block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 3432reference. 3433 3434Example Code and Data Size: These are the sizes for the OS-independent 3435acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3436debug version of the code includes the debug output trace mechanism and 3437has a much larger code and data size. 3438 3439 Current Release: 3440 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 3441 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 3442 Previous Release: 3443 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3444 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3445 3446 34472) iASL Compiler/Disassembler and Tools: 3448 3449iASL and disassembler: Add full support for the LPIT table (Low Power 3450Idle Table). Includes support in the disassembler, data table compiler, 3451and template generator. 3452 3453AcpiDump utility: 34541) Add option to force the use of the RSDT (over the XSDT). 34552) Improve validation of the RSDP signature (use 8 chars instead of 4). 3456 3457iASL: Add check for predefined packages that are too large. For 3458predefined names that contain subpackages, check if each subpackage is 3459too large. (Check for too small already exists.) 3460 3461Debugger: Updated the GPE command (which simulates a GPE by executing the 3462GPE code paths in ACPICA). The GPE device is now optional, and defaults 3463to the GPE 0/1 FADT-defined blocks. 3464 3465Unix application OSL: Update line-editing support. Add additional error 3466checking and take care not to reset terminal attributes on exit if they 3467were never set. This should help guarantee that the terminal is always 3468left in the previous state on program exit. 3469 3470 3471---------------------------------------- 347225 March 2014. Summary of changes for version 20140325: 3473 34741) ACPICA kernel-resident subsystem: 3475 3476Updated the auto-serialize feature for control methods. This feature 3477automatically serializes all methods that create named objects in order 3478to prevent runtime errors. The update adds support to ignore the 3479currently executing AML SyncLevel when invoking such a method, in order 3480to prevent disruption of any existing SyncLevel priorities that may exist 3481in the AML code. Although the use of SyncLevels is relatively rare, this 3482change fixes a regression where an AE_AML_MUTEX_ORDER exception can 3483appear on some machines starting with the 20140214 release. 3484 3485Added a new external interface to allow the host to install ACPI tables 3486very early, before the namespace is even created. AcpiInstallTable gives 3487the host additional flexibility for ACPI table management. Tables can be 3488installed directly by the host as if they had originally appeared in the 3489XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 3490(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 3491with additional internal restructuring and cleanup. See the ACPICA 3492Reference for interface details. Lv Zheng. 3493 3494Added validation of the checksum for all incoming dynamically loaded 3495tables (via external interfaces or via AML Load/LoadTable operators). Lv 3496Zheng. 3497 3498Updated the use of the AcpiOsWaitEventsComplete interface during Notify 3499and GPE handler removal. Restructured calls to eliminate possible race 3500conditions. Lv Zheng. 3501 3502Added a warning for the use/execution of the ASL/AML Unload (table) 3503operator. This will help detect and identify machines that use this 3504operator if and when it is ever used. This operator has never been seen 3505in the field and the usage model and possible side-effects of the drastic 3506runtime action of a full table removal are unknown. 3507 3508Reverted the use of #pragma push/pop which was introduced in the 20140214 3509release. It appears that push and pop are not implemented by enough 3510compilers to make the use of this feature feasible for ACPICA at this 3511time. However, these operators may be deployed in a future ACPICA 3512release. 3513 3514Added the missing EXPORT_SYMBOL macros for the install and remove SCI 3515handler interfaces. 3516 3517Source code generation: 35181) Disabled the use of the "strchr" macro for the gcc-specific 3519generation. For some versions of gcc, this macro can periodically expose 3520a compiler bug which in turn causes compile-time error(s). 35212) Added support for PPC64 compilation. Colin Ian King. 3522 3523Example Code and Data Size: These are the sizes for the OS-independent 3524acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3525debug version of the code includes the debug output trace mechanism and 3526has a much larger code and data size. 3527 3528 Current Release: 3529 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 3530 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 3531 Previous Release: 3532 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3533 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3534 3535 35362) iASL Compiler/Disassembler and Tools: 3537 3538Disassembler: Added several new features to improve the readability of 3539the resulting ASL code. Extra information is emitted within comment 3540fields in the ASL code: 35411) Known _HID/_CID values are decoded to descriptive text. 35422) Standard values for the Notify() operator are decoded to descriptive 3543text. 35443) Target operands are expanded to full pathnames (in a comment) when 3545possible. 3546 3547Disassembler: Miscellaneous updates for extern() handling: 35481) Abort compiler if file specified by -fe option does not exist. 35492) Silence unnecessary warnings about argument count mismatches. 35503) Update warning messages concerning unresolved method externals. 35514) Emit "UnknownObj" keyword for externals whose type cannot be 3552determined. 3553 3554AcpiHelp utility: 35551) Added the -a option to display both the ASL syntax and the AML 3556encoding for an input ASL operator. This effectively displays all known 3557information about an ASL operator with one AcpiHelp invocation. 35582) Added substring match support (similar to a wildcard) for the -i 3559(_HID/PNP IDs) option. 3560 3561iASL/Disassembler: Since this tool does not yet support execution on big- 3562endian machines, added detection of endianness and an error message if 3563execution is attempted on big-endian. Support for big-endian within iASL 3564is a feature that is on the ACPICA to-be-done list. 3565 3566AcpiBin utility: 35671) Remove option to extract binary files from an acpidump; this function 3568is made obsolete by the AcpiXtract utility. 35692) General cleanup of open files and allocated buffers. 3570 3571 3572---------------------------------------- 357314 February 2014. Summary of changes for version 20140214: 3574 35751) ACPICA kernel-resident subsystem: 3576 3577Implemented a new mechanism to proactively prevent problems with ill- 3578behaved reentrant control methods that create named ACPI objects. This 3579behavior is illegal as per the ACPI specification, but is nonetheless 3580frequently seen in the field. Previously, this could lead to an 3581AE_ALREADY_EXISTS exception if the method was actually entered by more 3582than one thread. This new mechanism detects such methods at table load 3583time and marks them "serialized" to prevent reentrancy. A new global 3584option, AcpiGbl_AutoSerializeMethods, has been added to disable this 3585feature if desired. This mechanism and global option obsoletes and 3586supersedes the previous AcpiGbl_SerializeAllMethods option. 3587 3588Added the "Windows 2013" string to the _OSI support. ACPICA will now 3589respond TRUE to _OSI queries with this string. It is the stated policy of 3590ACPICA to add new strings to the _OSI support as soon as possible after 3591they are defined. See the full ACPICA _OSI policy which has been added to 3592the utilities/utosi.c file. 3593 3594Hardened/updated the _PRT return value auto-repair code: 35951) Do not abort the repair on a single subpackage failure, continue to 3596check all subpackages. 35972) Add check for the minimum subpackage length (4). 35983) Properly handle extraneous NULL package elements. 3599 3600Added support to avoid the possibility of infinite loops when traversing 3601object linked lists. Never allow an infinite loop, even in the face of 3602corrupted object lists. 3603 3604ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 3605pack(pop) directives to ensure that the ACPICA headers are independent of 3606compiler settings or other host headers. 3607 3608Example Code and Data Size: These are the sizes for the OS-independent 3609acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3610debug version of the code includes the debug output trace mechanism and 3611has a much larger code and data size. 3612 3613 Current Release: 3614 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 3615 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 3616 Previous Release: 3617 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 3618 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 3619 3620 36212) iASL Compiler/Disassembler and Tools: 3622 3623iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 3624first reserved field was incorrectly forced to have a value of zero. This 3625change correctly forces the field to have a value of one. ACPICA BZ 1081. 3626 3627Debugger: Added missing support for the "Extra" and "Data" subobjects 3628when displaying object data. 3629 3630Debugger: Added support to display entire object linked lists when 3631displaying object data. 3632 3633iASL: Removed the obsolete -g option to obtain ACPI tables from the 3634Windows registry. This feature has been superseded by the acpidump 3635utility. 3636 3637 3638---------------------------------------- 363914 January 2014. Summary of changes for version 20140114: 3640 36411) ACPICA kernel-resident subsystem: 3642 3643Updated all ACPICA copyrights and signons to 2014. Added the 2014 3644copyright to all module headers and signons, including the standard Linux 3645header. This affects virtually every file in the ACPICA core subsystem, 3646iASL compiler, all ACPICA utilities, and the test suites. 3647 3648Improved parameter validation for AcpiInstallGpeBlock. Added the 3649following checks: 36501) The incoming device handle refers to type ACPI_TYPE_DEVICE. 36512) There is not already a GPE block attached to the device. 3652Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 3653device. 3654 3655Correctly support "references" in the ACPI_OBJECT. This change fixes the 3656support to allow references (namespace nodes) to be passed as arguments 3657to control methods via the evaluate object interface. This is probably 3658most useful for testing purposes, however. 3659 3660Improved support for 32/64 bit physical addresses in printf()-like 3661output. This change improves the support for physical addresses in printf 3662debug statements and other output on both 32-bit and 64-bit hosts. It 3663consistently outputs the appropriate number of bytes for each host. The 3664%p specifier is unsatisfactory since it does not emit uniform output on 3665all hosts/clib implementations (on some, leading zeros are not supported, 3666leading to difficult-to-read output). 3667 3668Example Code and Data Size: These are the sizes for the OS-independent 3669acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3670debug version of the code includes the debug output trace mechanism and 3671has a much larger code and data size. 3672 3673 Current Release: 3674 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 3675 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 3676 Previous Release: 3677 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 3678 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 3679 3680 36812) iASL Compiler/Disassembler and Tools: 3682 3683iASL: Fix a possible fault when using the Connection() operator. Fixes a 3684problem if the parent Field definition for the Connection operator refers 3685to an operation region that does not exist. ACPICA BZ 1064. 3686 3687AcpiExec: Load of local test tables is now optional. The utility has the 3688capability to load some various tables to test features of ACPICA. 3689However, there are enough of them that the output of the utility became 3690confusing. With this change, only the required local tables are displayed 3691(RSDP, XSDT, etc.) along with the actual tables loaded via the command 3692line specification. This makes the default output simler and easier to 3693understand. The -el command line option restores the original behavior 3694for testing purposes. 3695 3696AcpiExec: Added support for overlapping operation regions. This change 3697expands the simulation of operation regions by supporting regions that 3698overlap within the given address space. Supports SystemMemory and 3699SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 3700 3701AcpiExec: Added region handler support for PCI_Config and EC spaces. This 3702allows AcpiExec to simulate these address spaces, similar to the current 3703support for SystemMemory and SystemIO. 3704 3705Debugger: Added new command to read/write/compare all namespace objects. 3706The command "test objects" will exercise the entire namespace by writing 3707new values to each data object, and ensuring that the write was 3708successful. The original value is then restored and verified. 3709 3710Debugger: Added the "test predefined" command. This change makes this 3711test public and puts it under the new "test" command. The test executes 3712each and every predefined name within the current namespace. 3713 3714 3715---------------------------------------- 371618 December 2013. Summary of changes for version 20131218: 3717 3718Global note: The ACPI 5.0A specification was released this month. There 3719are no changes needed for ACPICA since this release of ACPI is an 3720errata/clarification release. The specification is available at 3721acpi.info. 3722 3723 37241) ACPICA kernel-resident subsystem: 3725 3726Added validation of the XSDT root table if it is present. Some older 3727platforms contain an XSDT that is ill-formed or otherwise invalid (such 3728as containing some or all entries that are NULL pointers). This change 3729adds a new function to validate the XSDT before actually using it. If the 3730XSDT is found to be invalid, ACPICA will now automatically fall back to 3731using the RSDT instead. Original implementation by Zhao Yakui. Ported to 3732ACPICA and enhanced by Lv Zheng and Bob Moore. 3733 3734Added a runtime option to ignore the XSDT and force the use of the RSDT. 3735This change adds a runtime option that will force ACPICA to use the RSDT 3736instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 3737requires that an XSDT be used instead of the RSDT, the XSDT has been 3738found to be corrupt or ill-formed on some machines. Lv Zheng. 3739 3740Added a runtime option to favor 32-bit FADT register addresses over the 374164-bit addresses. This change adds an option to favor 32-bit FADT 3742addresses when there is a conflict between the 32-bit and 64-bit versions 3743of the same register. The default behavior is to use the 64-bit version 3744in accordance with the ACPI specification. This can now be overridden via 3745the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 3746 3747During the change above, the internal "Convert FADT" and "Verify FADT" 3748functions have been merged to simplify the code, making it easier to 3749understand and maintain. ACPICA BZ 933. 3750 3751Improve exception reporting and handling for GPE block installation. 3752Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 3753status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 3754 3755Added helper macros to extract bus/segment numbers from the HEST table. 3756This change adds two macros to extract the encoded bus and segment 3757numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 3758Betty Dall <betty.dall@hp.com> 3759 3760Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 3761by ACPICA. It is not a public macro, so it should have no effect on 3762existing OSV code. Lv Zheng. 3763 3764Example Code and Data Size: These are the sizes for the OS-independent 3765acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3766debug version of the code includes the debug output trace mechanism and 3767has a much larger code and data size. 3768 3769 Current Release: 3770 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 3771 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 3772 Previous Release: 3773 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 3774 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 3775 3776 37772) iASL Compiler/Disassembler and Tools: 3778 3779Disassembler: Improved pathname support for emitted External() 3780statements. This change adds full pathname support for external names 3781that have been resolved internally by the inclusion of additional ACPI 3782tables (via the iASL -e option). Without this change, the disassembler 3783can emit multiple externals for the same object, or it become confused 3784when the Scope() operator is used on an external object. Overall, greatly 3785improves the ability to actually recompile the emitted ASL code when 3786objects a referenced across multiple ACPI tables. Reported by Michael 3787Tsirkin (mst@redhat.com). 3788 3789Tests/ASLTS: Updated functional control suite to execute with no errors. 3790David Box. Fixed several errors related to the testing of the interpreter 3791slack mode. Lv Zheng. 3792 3793iASL: Added support to detect names that are declared within a control 3794method, but are unused (these are temporary names that are only valid 3795during the time the method is executing). A remark is issued for these 3796cases. ACPICA BZ 1022. 3797 3798iASL: Added full support for the DBG2 table. Adds full disassembler, 3799table compiler, and template generator support for the DBG2 table (Debug 3800Port 2 table). 3801 3802iASL: Added full support for the PCCT table, update the table definition. 3803Updates the PCCT table definition in the actbl3.h header and adds table 3804compiler and template generator support. 3805 3806iASL: Added an option to emit only error messages (no warnings/remarks). 3807The -ve option will enable only error messages, warnings and remarks are 3808suppressed. This can simplify debugging when only the errors are 3809important, such as when an ACPI table is disassembled and there are many 3810warnings and remarks -- but only the actual errors are of real interest. 3811 3812Example ACPICA code (source/tools/examples): Updated the example code so 3813that it builds to an actual working program, not just example code. Added 3814ACPI tables and execution of an example control method in the DSDT. Added 3815makefile support for Unix generation. 3816 3817 3818---------------------------------------- 381915 November 2013. Summary of changes for version 20131115: 3820 3821This release is available at https://acpica.org/downloads 3822 3823 38241) ACPICA kernel-resident subsystem: 3825 3826Resource Manager: Fixed loop termination for the "get AML length" 3827function. The loop previously had an error termination on a NULL resource 3828pointer, which can never happen since the loop simply increments a valid 3829resource pointer. This fix changes the loop to terminate with an error on 3830an invalid end-of-buffer condition. The problem can be seen as an 3831infinite loop by callers to AcpiSetCurrentResources with an invalid or 3832corrupted resource descriptor, or a resource descriptor that is missing 3833an END_TAG descriptor. Reported by Dan Carpenter 3834<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 3835 3836Table unload and ACPICA termination: Delete all attached data objects 3837during namespace node deletion. This fix updates namespace node deletion 3838to delete the entire list of attached objects (attached via 3839AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 38401024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 3841 3842ACPICA termination: Added support to delete all objects attached to the 3843root namespace node. This fix deletes any and all objects that have been 3844attached to the root node via AcpiAttachData. Previously, none of these 3845objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 3846 3847Debug output: Do not emit the function nesting level for the in-kernel 3848build. The nesting level is really only useful during a single-thread 3849execution. Therefore, only enable this output for the AcpiExec utility. 3850Also, only emit the thread ID when executing under AcpiExec (Context 3851switches are still always detected and a message is emitted). ACPICA BZ 3852972. 3853 3854Example Code and Data Size: These are the sizes for the OS-independent 3855acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3856debug version of the code includes the debug output trace mechanism and 3857has a much larger code and data size. 3858 3859 Current Release: 3860 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 3861 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 3862 Previous Release: 3863 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 3864 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 3865 3866 38672) iASL Compiler/Disassembler and Tools: 3868 3869AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 3870correct portable POSIX header for terminal control functions. 3871 3872Disassembler: Fixed control method invocation issues related to the use 3873of the CondRefOf() operator. The problem is seen in the disassembly where 3874control method invocations may not be disassembled properly if the 3875control method name has been used previously as an argument to CondRefOf. 3876The solution is to not attempt to emit an external declaration for the 3877CondRefOf target (it is not necessary in the first place). This prevents 3878disassembler object type confusion. ACPICA BZ 988. 3879 3880Unix Makefiles: Added an option to disable compiler optimizations and the 3881_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 3882with optimizations (reportedly, gcc 4.4 for example). This change adds a 3883command line option for make (NOOPT) that disables all compiler 3884optimizations and the _FORTIFY_SOURCE compiler flag. The default 3885optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 38861034. Lv Zheng, Bob Moore. 3887 3888Tests/ASLTS: Added options to specify individual test cases and modes. 3889This allows testers running aslts.sh to optionally specify individual 3890test modes and test cases. Also added an option to disable the forced 3891generation of the ACPICA tools from source if desired. Lv Zheng. 3892 3893---------------------------------------- 389427 September 2013. Summary of changes for version 20130927: 3895 3896This release is available at https://acpica.org/downloads 3897 3898 38991) ACPICA kernel-resident subsystem: 3900 3901Fixed a problem with store operations to reference objects. This change 3902fixes a problem where a Store operation to an ArgX object that contained 3903a 3904reference to a field object did not complete the automatic dereference 3905and 3906then write to the actual field object. Instead, the object type of the 3907field object was inadvertently changed to match the type of the source 3908operand. The new behavior will actually write to the field object (buffer 3909field or field unit), thus matching the correct ACPI-defined behavior. 3910 3911Implemented support to allow the host to redefine individual OSL 3912prototypes. This change enables the host to redefine OSL prototypes found 3913in the acpiosxf.h file. This allows the host to implement OSL interfaces 3914with a macro or inlined function. Further, it allows the host to add any 3915additional required modifiers such as __iomem, __init, __exit, etc., as 3916necessary on a per-interface basis. Enables maximum flexibility for the 3917OSL interfaces. Lv Zheng. 3918 3919Hardcoded the access width for the FADT-defined reset register. The ACPI 3920specification requires the reset register width to be 8 bits. ACPICA now 3921hardcodes the width to 8 and ignores the FADT width value. This provides 3922compatibility with other ACPI implementations that have allowed BIOS code 3923with bad register width values to go unnoticed. Matthew Garett, Bob 3924Moore, 3925Lv Zheng. 3926 3927Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 3928used 3929in the OSL header (acpiosxf). The change modifies the position of this 3930macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 3931build issues if the OSL defines the implementation of the interface to be 3932an inline stub function. Lv Zheng. 3933 3934Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 3935initialization interfaces. This change adds a new macro for the main init 3936and terminate external interfaces in order to support hosts that require 3937additional or different processing for these functions. Changed from 3938ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 3939Zheng, Bob Moore. 3940 3941Cleaned up the memory allocation macros for configurability. In the 3942common 3943case, the ACPI_ALLOCATE and related macros now resolve directly to their 3944respective AcpiOs* OSL interfaces. Two options: 39451) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 3946default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 39472) For AcpiExec (and for debugging), the macros can optionally be 3948resolved 3949to the local ACPICA interfaces that track each allocation (local tracking 3950is used to immediately detect memory leaks). 3951Lv Zheng. 3952 3953Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 3954to predefine this macro to either TRUE or FALSE during the system build. 3955 3956Replaced __FUNCTION_ with __func__ in the gcc-specific header. 3957 3958Example Code and Data Size: These are the sizes for the OS-independent 3959acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3960debug version of the code includes the debug output trace mechanism and 3961has a much larger code and data size. 3962 3963 Current Release: 3964 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 3965 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 3966 Previous Release: 3967 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 3968 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3969 3970 39712) iASL Compiler/Disassembler and Tools: 3972 3973iASL: Implemented wildcard support for the -e option. This simplifies use 3974when there are many SSDTs that must be included to resolve external 3975method 3976declarations. ACPICA BZ 1041. Example: 3977 iasl -e ssdt*.dat -d dsdt.dat 3978 3979AcpiExec: Add history/line-editing for Unix/Linux systems. This change 3980adds a portable module that implements full history and limited line 3981editing for Unix and Linux systems. It does not use readline() due to 3982portability issues. Instead it uses the POSIX termio interface to put the 3983terminal in raw input mode so that the various special keys can be 3984trapped 3985(such as up/down-arrow for history support and left/right-arrow for line 3986editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 3987 3988AcpiXtract: Add support to handle (ignore) "empty" lines containing only 3989one or more spaces. This provides compatible with early or different 3990versions of the AcpiDump utility. ACPICA BZ 1044. 3991 3992AcpiDump: Do not ignore tables that contain only an ACPI table header. 3993Apparently, some BIOSs create SSDTs that contain an ACPI table header but 3994no other data. This change adds support to dump these tables. Any tables 3995shorter than the length of an ACPI table header remain in error (an error 3996message is emitted). Reported by Yi Li. 3997 3998Debugger: Echo actual command along with the "unknown command" message. 3999 4000---------------------------------------- 400123 August 2013. Summary of changes for version 20130823: 4002 40031) ACPICA kernel-resident subsystem: 4004 4005Implemented support for host-installed System Control Interrupt (SCI) 4006handlers. Certain ACPI functionality requires the host to handle raw 4007SCIs. For example, the "SCI Doorbell" that is defined for memory power 4008state support requires the host device driver to handle SCIs to examine 4009if the doorbell has been activated. Multiple SCI handlers can be 4010installed to allow for future expansion. New external interfaces are 4011AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 4012details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 4013 4014Operation region support: Never locally free the handler "context" 4015pointer. This change removes some dangerous code that attempts to free 4016the handler context pointer in some (rare) circumstances. The owner of 4017the handler owns this pointer and the ACPICA code should never touch it. 4018Although not seen to be an issue in any kernel, it did show up as a 4019problem (fault) under AcpiExec. Also, set the internal storage field for 4020the context pointer to zero when the region is deactivated, simply for 4021sanity. David Box. ACPICA BZ 1039. 4022 4023AcpiRead: On error, do not modify the return value target location. If an 4024error happens in the middle of a split 32/32 64-bit I/O operation, do not 4025modify the target of the return value pointer. Makes the code consistent 4026with the rest of ACPICA. Bjorn Helgaas. 4027 4028Example Code and Data Size: These are the sizes for the OS-independent 4029acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4030debug version of the code includes the debug output trace mechanism and 4031has a much larger code and data size. 4032 4033 Current Release: 4034 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 4035 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4036 Previous Release: 4037 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 4038 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 4039 4040 40412) iASL Compiler/Disassembler and Tools: 4042 4043AcpiDump: Implemented several new features and fixed some problems: 40441) Added support to dump the RSDP, RSDT, and XSDT tables. 40452) Added support for multiple table instances (SSDT, UEFI). 40463) Added option to dump "customized" (overridden) tables (-c). 40474) Fixed a problem where some table filenames were improperly 4048constructed. 40495) Improved some error messages, removed some unnecessary messages. 4050 4051iASL: Implemented additional support for disassembly of ACPI tables that 4052contain invocations of external control methods. The -fe<file> option 4053allows the import of a file that specifies the external methods along 4054with the required number of arguments for each -- allowing for the 4055correct disassembly of the table. This is a workaround for a limitation 4056of AML code where the disassembler often cannot determine the number of 4057arguments required for an external control method and generates incorrect 4058ASL code. See the iASL reference for details. ACPICA BZ 1030. 4059 4060Debugger: Implemented a new command (paths) that displays the full 4061pathnames (namepaths) and object types of all objects in the namespace. 4062This is an alternative to the namespace command. 4063 4064Debugger: Implemented a new command (sci) that invokes the SCI dispatch 4065mechanism and any installed handlers. 4066 4067iASL: Fixed a possible segfault for "too many parent prefixes" condition. 4068This can occur if there are too many parent prefixes in a namepath (for 4069example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 4070 4071Application OSLs: Set the return value for the PCI read functions. These 4072functions simply return AE_OK, but should set the return value to zero 4073also. This change implements this. ACPICA BZ 1038. 4074 4075Debugger: Prevent possible command line buffer overflow. Increase the 4076size of a couple of the debugger line buffers, and ensure that overflow 4077cannot happen. ACPICA BZ 1037. 4078 4079iASL: Changed to abort immediately on serious errors during the parsing 4080phase. Due to the nature of ASL, there is no point in attempting to 4081compile these types of errors, and they typically end up causing a 4082cascade of hundreds of errors which obscure the original problem. 4083 4084---------------------------------------- 408525 July 2013. Summary of changes for version 20130725: 4086 40871) ACPICA kernel-resident subsystem: 4088 4089Fixed a problem with the DerefOf operator where references to FieldUnits 4090and BufferFields incorrectly returned the parent object, not the actual 4091value of the object. After this change, a dereference of a FieldUnit 4092reference results in a read operation on the field to get the value, and 4093likewise, the appropriate BufferField value is extracted from the target 4094buffer. 4095 4096Fixed a problem where the _WAK method could cause a fault under these 4097circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 4098method returned no value. The problem is rarely seen because most kernels 4099run ACPICA in slack mode. 4100 4101For the DerefOf operator, a fatal error now results if an attempt is made 4102to dereference a reference (created by the Index operator) to a NULL 4103package element. Provides compatibility with other ACPI implementations, 4104and this behavior will be added to a future version of the ACPI 4105specification. 4106 4107The ACPI Power Management Timer (defined in the FADT) is now optional. 4108This provides compatibility with other ACPI implementations and will 4109appear in the next version of the ACPI specification. If there is no PM 4110Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 4111zero in the FADT indicates no PM timer. 4112 4113Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 4114allows the host to globally enable/disable all vendor strings, all 4115feature strings, or both. Intended to be primarily used for debugging 4116purposes only. Lv Zheng. 4117 4118Expose the collected _OSI data to the host via a global variable. This 4119data tracks the highest level vendor ID that has been invoked by the BIOS 4120so that the host (and potentially ACPICA itself) can change behaviors 4121based upon the age of the BIOS. 4122 4123Example Code and Data Size: These are the sizes for the OS-independent 4124acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4125debug version of the code includes the debug output trace mechanism and 4126has a much larger code and data size. 4127 4128 Current Release: 4129 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 4130 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 4131 Previous Release: 4132 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 4133 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 4134 4135 41362) iASL Compiler/Disassembler and Tools: 4137 4138iASL: Created the following enhancements for the -so option (create 4139offset table): 41401)Add offsets for the last nameseg in each namepath for every supported 4141object type 41422)Add support for Processor, Device, Thermal Zone, and Scope objects 41433)Add the actual AML opcode for the parent object of every supported 4144object type 41454)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 4146 4147Disassembler: Emit all unresolved external symbols in a single block. 4148These are external references to control methods that could not be 4149resolved, and thus, the disassembler had to make a guess at the number of 4150arguments to parse. 4151 4152iASL: The argument to the -T option (create table template) is now 4153optional. If not specified, the default table is a DSDT, typically the 4154most common case. 4155 4156---------------------------------------- 415726 June 2013. Summary of changes for version 20130626: 4158 41591) ACPICA kernel-resident subsystem: 4160 4161Fixed an issue with runtime repair of the _CST object. Null or invalid 4162elements were not always removed properly. Lv Zheng. 4163 4164Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 4165FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 4166the maximum number of GPEs is 1016. Use of multiple GPE block devices 4167makes the system-wide number of GPEs essentially unlimited. 4168 4169Example Code and Data Size: These are the sizes for the OS-independent 4170acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4171debug version of the code includes the debug output trace mechanism and 4172has a much larger code and data size. 4173 4174 Current Release: 4175 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 4176 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 4177 Previous Release: 4178 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 4179 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 4180 4181 41822) iASL Compiler/Disassembler and Tools: 4183 4184Portable AcpiDump: Implemented full support for the Linux and FreeBSD 4185hosts. Now supports Linux, FreeBSD, and Windows. 4186 4187Disassembler: Added some missing types for the HEST and EINJ tables: "Set 4188Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 4189 4190iASL/Preprocessor: Implemented full support for nested 4191#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 4192 4193Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 4194max. The original purpose of this constraint was to limit the amount of 4195debug output. However, the string function in question (UtPrintString) is 4196now used for the disassembler also, where 256 bytes is insufficient. 4197Reported by RehabMan@GitHub. 4198 4199iASL/DataTables: Fixed some problems and issues with compilation of DMAR 4200tables. ACPICA BZ 999. Lv Zheng. 4201 4202iASL: Fixed a couple of error exit issues that could result in a "Could 4203not delete <file>" message during ASL compilation. 4204 4205AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 4206the actual signatures for these tables are "FACP" and "APIC", 4207respectively. 4208 4209AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 4210tables are allowed to have multiple instances. 4211 4212---------------------------------------- 421317 May 2013. Summary of changes for version 20130517: 4214 42151) ACPICA kernel-resident subsystem: 4216 4217Fixed a regression introduced in version 20130328 for _INI methods. This 4218change fixes a problem introduced in 20130328 where _INI methods are no 4219longer executed properly because of a memory block that was not 4220initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 4221<tomasz.nowicki@linaro.org>. 4222 4223Fixed a possible problem with the new extended sleep registers in the 4224ACPI 42255.0 FADT. Do not use these registers (even if populated) unless the HW- 4226reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 42271020. Lv Zheng. 4228 4229Implemented return value repair code for _CST predefined objects: Sort 4230the 4231list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 4232 4233Implemented a debug-only option to disable loading of SSDTs from the 4234RSDT/XSDT during ACPICA initialization. This can be useful for debugging 4235ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 4236acglobal.h - ACPICA BZ 1005. Lv Zheng. 4237 4238Fixed some issues in the ACPICA initialization and termination code: 4239Tomasz Nowicki <tomasz.nowicki@linaro.org> 42401) Clear events initialized flag upon event component termination. ACPICA 4241BZ 1013. 42422) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 42433) Delete global lock pending lock during termination. ACPICA BZ 1012. 42444) Clear debug buffer global on termination to prevent possible multiple 4245delete. ACPICA BZ 1010. 4246 4247Standardized all switch() blocks across the entire source base. After 4248many 4249years, different formatting for switch() had crept in. This change makes 4250the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 4251 4252Split some files to enhance ACPICA modularity and configurability: 42531) Split buffer dump routines into utilities/utbuffer.c 42542) Split internal error message routines into utilities/uterror.c 42553) Split table print utilities into tables/tbprint.c 42564) Split iASL command-line option processing into asloptions.c 4257 4258Makefile enhancements: 42591) Support for all new files above. 42602) Abort make on errors from any subcomponent. Chao Guan. 42613) Add build support for Apple Mac OS X. Liang Qi. 4262 4263Example Code and Data Size: These are the sizes for the OS-independent 4264acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4265debug version of the code includes the debug output trace mechanism and 4266has a much larger code and data size. 4267 4268 Current Release: 4269 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 4270 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 4271 Previous Release: 4272 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 4273 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 4274 4275 42762) iASL Compiler/Disassembler and Tools: 4277 4278New utility: Implemented an easily portable version of the acpidump 4279utility to extract ACPI tables from the system (or a file) in an ASCII 4280hex 4281dump format. The top-level code implements the various command line 4282options, file I/O, and table dump routines. To port to a new host, only 4283three functions need to be implemented to get tables -- since this 4284functionality is OS-dependent. See the tools/acpidump/apmain.c module and 4285the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 42861) The Windows version obtains the ACPI tables from the Registry. 42872) The Linux version is under development. 42883) Other hosts - If an OS-dependent module is submitted, it will be 4289distributed with ACPICA. 4290 4291iASL: Fixed a regression for -D preprocessor option (define symbol). A 4292restructuring/change to the initialization sequence caused this option to 4293no longer work properly. 4294 4295iASL: Implemented a mechanism to disable specific warnings and remarks. 4296Adds a new command line option, "-vw <messageid> as well as "#pragma 4297disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 4298 4299iASL: Fix for too-strict package object validation. The package object 4300validation for return values from the predefined names is a bit too 4301strict, it does not allow names references within the package (which will 4302be resolved at runtime.) These types of references cannot be validated at 4303compile time. This change ignores named references within package objects 4304for names that return or define static packages. 4305 4306Debugger: Fixed the 80-character command line limitation for the History 4307command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 4308 4309iASL: Added control method and package support for the -so option 4310(generates AML offset table for BIOS support.) 4311 4312iASL: issue a remark if a non-serialized method creates named objects. If 4313a thread blocks within the method for any reason, and another thread 4314enters the method, the method will fail because an attempt will be made 4315to 4316create the same (named) object twice. In this case, issue a remark that 4317the method should be marked serialized. NOTE: may become a warning later. 4318ACPICA BZ 909. 4319 4320---------------------------------------- 432118 April 2013. Summary of changes for version 20130418: 4322 43231) ACPICA kernel-resident subsystem: 4324 4325Fixed a possible buffer overrun during some rare but specific field unit 4326read operations. This overrun can only happen if the DSDT version is 1 -- 4327meaning that all AML integers are 32 bits -- and the field length is 4328between 33 and 55 bits long. During the read, an internal buffer object 4329is 4330created for the field unit because the field is larger than an integer 4331(32 4332bits). However, in this case, the buffer will be incorrectly written 4333beyond the end because the buffer length is less than the internal 4334minimum 4335of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 4336long, but a full 8 bytes will be written. 4337 4338Updated the Embedded Controller "orphan" _REG method support. This refers 4339to _REG methods under the EC device that have no corresponding operation 4340region. This is allowed by the ACPI specification. This update removes a 4341dependency on the existence an ECDT table. It will execute an orphan _REG 4342method as long as the operation region handler for the EC is installed at 4343the EC device node and not the namespace root. Rui Zhang (original 4344update), Bob Moore (update/integrate). 4345 4346Implemented run-time argument typechecking for all predefined ACPI names 4347(_STA, _BIF, etc.) This change performs object typechecking on all 4348incoming arguments for all predefined names executed via 4349AcpiEvaluateObject. This ensures that ACPI-related device drivers are 4350passing correct object types as well as the correct number of arguments 4351(therefore identifying any issues immediately). Also, the ASL/namespace 4352definition of the predefined name is checked against the ACPI 4353specification for the proper argument count. Adds one new file, 4354nsarguments.c 4355 4356Changed an exception code for the ASL UnLoad() operator. Changed the 4357exception code for the case where the input DdbHandle is invalid, from 4358AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 4359 4360Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 4361global makefile. The use of this flag causes compiler errors on earlier 4362versions of GCC, so it has been removed for compatibility. 4363 4364Miscellaneous cleanup: 43651) Removed some unused/obsolete macros 43662) Fixed a possible memory leak in the _OSI support 43673) Removed an unused variable in the predefined name support 43684) Windows OSL: remove obsolete reference to a memory list field 4369 4370Example Code and Data Size: These are the sizes for the OS-independent 4371acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4372debug version of the code includes the debug output trace mechanism and 4373has a much larger code and data size. 4374 4375 Current Release: 4376 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4377 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4378 Previous Release: 4379 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 4380 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 4381 4382 43832) iASL Compiler/Disassembler and Tools: 4384 4385AcpiExec: Added installation of a handler for the SystemCMOS address 4386space. This prevents control method abort if a method accesses this 4387space. 4388 4389AcpiExec: Added support for multiple EC devices, and now install EC 4390operation region handler(s) at the actual EC device instead of the 4391namespace root. This reflects the typical behavior of host operating 4392systems. 4393 4394AcpiExec: Updated to ensure that all operation region handlers are 4395installed before the _REG methods are executed. This prevents a _REG 4396method from aborting if it accesses an address space has no handler. 4397AcpiExec installs a handler for every possible address space. 4398 4399Debugger: Enhanced the "handlers" command to display non-root handlers. 4400This change enhances the handlers command to display handlers associated 4401with individual devices throughout the namespace, in addition to the 4402currently supported display of handlers associated with the root 4403namespace 4404node. 4405 4406ASL Test Suite: Several test suite errors have been identified and 4407resolved, reducing the total error count during execution. Chao Guan. 4408 4409---------------------------------------- 441028 March 2013. Summary of changes for version 20130328: 4411 44121) ACPICA kernel-resident subsystem: 4413 4414Fixed several possible race conditions with the internal object reference 4415counting mechanism. Some of the external ACPICA interfaces update object 4416reference counts without holding the interpreter or namespace lock. This 4417change adds a spinlock to protect reference count updates on the internal 4418ACPICA objects. Reported by and with assistance from Andriy Gapon 4419(avg@FreeBSD.org). 4420 4421FADT support: Removed an extraneous warning for very large GPE register 4422sets. This change removes a size mismatch warning if the legacy length 4423field for a GPE register set is larger than the 64-bit GAS structure can 4424accommodate. GPE register sets can be larger than the 255-bit width 4425limitation of the GAS structure. Linn Crosetto (linn@hp.com). 4426 4427_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 4428return from this interface. Handles a possible timeout case if 4429ACPI_WAIT_FOREVER is modified by the host to be a value less than 4430"forever". Jung-uk Kim. 4431 4432Predefined name support: Add allowed/required argument type information 4433to 4434the master predefined info table. This change adds the infrastructure to 4435enable typechecking on incoming arguments for all predefined 4436methods/objects. It does not actually contain the code that will fully 4437utilize this information, this is still under development. Also condenses 4438some duplicate code for the predefined names into a new module, 4439utilities/utpredef.c 4440 4441Example Code and Data Size: These are the sizes for the OS-independent 4442acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4443debug version of the code includes the debug output trace mechanism and 4444has a much larger code and data size. 4445 4446 Previous Release: 4447 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4448 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4449 Current Release: 4450 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 4451 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 4452 4453 44542) iASL Compiler/Disassembler and Tools: 4455 4456iASL: Implemented a new option to simplify the development of ACPI- 4457related 4458BIOS code. Adds support for a new "offset table" output file. The -so 4459option will create a C table containing the AML table offsets of various 4460named objects in the namespace so that BIOS code can modify them easily 4461at 4462boot time. This can simplify BIOS runtime code by eliminating expensive 4463searches for "magic values", enhancing boot times and adding greater 4464reliability. With assistance from Lee Hamel. 4465 4466iASL: Allow additional predefined names to return zero-length packages. 4467Now, all predefined names that are defined by the ACPI specification to 4468return a "variable-length package of packages" are allowed to return a 4469zero length top-level package. This allows the BIOS to tell the host that 4470the requested feature is not supported, and supports existing BIOS/ASL 4471code and practices. 4472 4473iASL: Changed the "result not used" warning to an error. This is the case 4474where an ASL operator is effectively a NOOP because the result of the 4475operation is not stored anywhere. For example: 4476 Add (4, Local0) 4477There is no target (missing 3rd argument), nor is the function return 4478value used. This is potentially a very serious problem -- since the code 4479was probably intended to do something, but for whatever reason, the value 4480was not stored. Therefore, this issue has been upgraded from a warning to 4481an error. 4482 4483AcpiHelp: Added allowable/required argument types to the predefined names 4484info display. This feature utilizes the recent update to the predefined 4485names table (above). 4486 4487---------------------------------------- 448814 February 2013. Summary of changes for version 20130214: 4489 44901) ACPICA Kernel-resident Subsystem: 4491 4492Fixed a possible regression on some hosts: Reinstated the safe return 4493macros (return_ACPI_STATUS, etc.) that ensure that the argument is 4494evaluated only once. Although these macros are not needed for the ACPICA 4495code itself, they are often used by ACPI-related host device drivers 4496where 4497the safe feature may be necessary. 4498 4499Fixed several issues related to the ACPI 5.0 reduced hardware support 4500(SOC): Now ensure that if the platform declares itself as hardware- 4501reduced 4502via the FADT, the following functions become NOOPs (and always return 4503AE_OK) because ACPI is always enabled by definition on these machines: 4504 AcpiEnable 4505 AcpiDisable 4506 AcpiHwGetMode 4507 AcpiHwSetMode 4508 4509Dynamic Object Repair: Implemented additional runtime repairs for 4510predefined name return values. Both of these repairs can simplify code in 4511the related device drivers that invoke these methods: 45121) For the _STR and _MLS names, automatically repair/convert an ASCII 4513string to a Unicode buffer. 45142) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 4515a 4516lone end tag descriptor in the following cases: A Return(0) was executed, 4517a null buffer was returned, or no object at all was returned (non-slack 4518mode only). Adds a new file, nsconvert.c 4519ACPICA BZ 998. Bob Moore, Lv Zheng. 4520 4521Resource Manager: Added additional code to prevent possible infinite 4522loops 4523while traversing corrupted or ill-formed resource template buffers. Check 4524for zero-length resource descriptors in all code that loops through 4525resource templates (the length field is used to index through the 4526template). This change also hardens the external AcpiWalkResources and 4527AcpiWalkResourceBuffer interfaces. 4528 4529Local Cache Manager: Enhanced the main data structure to eliminate an 4530unnecessary mechanism to access the next object in the list. Actually 4531provides a small performance enhancement for hosts that use the local 4532ACPICA cache manager. Jung-uk Kim. 4533 4534Example Code and Data Size: These are the sizes for the OS-independent 4535acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4536debug version of the code includes the debug output trace mechanism and 4537has a much larger code and data size. 4538 4539 Previous Release: 4540 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4541 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4542 Current Release: 4543 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 4544 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 4545 4546 45472) iASL Compiler/Disassembler and Tools: 4548 4549iASL/Disassembler: Fixed several issues with the definition of the ACPI 45505.0 RASF table (RAS Feature Table). This change incorporates late changes 4551that were made to the ACPI 5.0 specification. 4552 4553iASL/Disassembler: Added full support for the following new ACPI tables: 4554 1) The MTMR table (MID Timer Table) 4555 2) The VRTC table (Virtual Real Time Clock Table). 4556Includes header file, disassembler, table compiler, and template support 4557for both tables. 4558 4559iASL: Implemented compile-time validation of package objects returned by 4560predefined names. This new feature validates static package objects 4561returned by the various predefined names defined to return packages. Both 4562object types and package lengths are validated, for both parent packages 4563and sub-packages, if any. The code is similar in structure and behavior 4564to 4565the runtime repair mechanism within the AML interpreter and uses the 4566existing predefined name information table. Adds a new file, aslprepkg.c. 4567ACPICA BZ 938. 4568 4569iASL: Implemented auto-detection of binary ACPI tables for disassembly. 4570This feature detects a binary file with a valid ACPI table header and 4571invokes the disassembler automatically. Eliminates the need to 4572specifically invoke the disassembler with the -d option. ACPICA BZ 862. 4573 4574iASL/Disassembler: Added several warnings for the case where there are 4575unresolved control methods during the disassembly. This can potentially 4576cause errors when the output file is compiled, because the disassembler 4577assumes zero method arguments in these cases (it cannot determine the 4578actual number of arguments without resolution/definition of the method). 4579 4580Debugger: Added support to display all resources with a single command. 4581Invocation of the resources command with no arguments will now display 4582all 4583resources within the current namespace. 4584 4585AcpiHelp: Added descriptive text for each ACPICA exception code displayed 4586via the -e option. 4587 4588---------------------------------------- 458917 January 2013. Summary of changes for version 20130117: 4590 45911) ACPICA Kernel-resident Subsystem: 4592 4593Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 4594return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 4595objects to return a package containing one integer, most BIOS code 4596returns 4597two integers and the previous code reflects that. However, we also need 4598to 4599support BIOS code that actually implements to the ACPI spec, and this 4600change reflects this. 4601 4602Fixed two issues with the ACPI_DEBUG_PRINT macros: 46031) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 4604C compilers that require this support. 46052) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 4606ACPI_DEBUG is already used by many of the various hosts. 4607 4608Updated all ACPICA copyrights and signons to 2013. Added the 2013 4609copyright to all module headers and signons, including the standard Linux 4610header. This affects virtually every file in the ACPICA core subsystem, 4611iASL compiler, all ACPICA utilities, and the test suites. 4612 4613Example Code and Data Size: These are the sizes for the OS-independent 4614acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4615debug version of the code includes the debug output trace mechanism and 4616has a much larger code and data size. 4617 4618 Previous Release: 4619 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 4620 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 4621 Current Release: 4622 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 4623 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 4624 4625 46262) iASL Compiler/Disassembler and Tools: 4627 4628Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 4629prevent a possible fault on some hosts. Some C libraries modify the arg 4630pointer parameter to vfprintf making it difficult to call it twice in the 4631AcpiOsVprintf function. Use a local buffer to workaround this issue. This 4632does not affect the Windows OSL since the Win C library does not modify 4633the arg pointer. Chao Guan, Bob Moore. 4634 4635iASL: Fixed a possible infinite loop when the maximum error count is 4636reached. If an output file other than the .AML file is specified (such as 4637a listing file), and the maximum number of errors is reached, do not 4638attempt to flush data to the output file(s) as the compiler is aborting. 4639This can cause an infinite loop as the max error count code essentially 4640keeps calling itself. 4641 4642iASL/Disassembler: Added an option (-in) to ignore NOOP 4643opcodes/operators. 4644Implemented for both the compiler and the disassembler. Often, the NOOP 4645opcode is used as padding for packages that are changed dynamically by 4646the 4647BIOS. When disassembled and recompiled, these NOOPs will cause syntax 4648errors. This option causes the disassembler to ignore all NOOP opcodes 4649(0xA3), and it also causes the compiler to ignore all ASL source code 4650NOOP 4651statements as well. 4652 4653Debugger: Enhanced the Sleep command to execute all sleep states. This 4654change allows Sleep to be invoked with no arguments and causes the 4655debugger to execute all of the sleep states, 0-5, automatically. 4656 4657---------------------------------------- 465820 December 2012. Summary of changes for version 20121220: 4659 46601) ACPICA Kernel-resident Subsystem: 4661 4662Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 4663alternate entry point for AcpiWalkResources and improves the usability of 4664the resource manager by accepting as input a buffer containing the output 4665of either a _CRS, _PRS, or _AEI method. The key functionality is that the 4666input buffer is not deleted by this interface so that it can be used by 4667the host later. See the ACPICA reference for details. 4668 4669Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 4670(DSDT version < 2). The constant will be truncated and this warning 4671reflects that behavior. 4672 4673Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 4674ExtendedInterrupt, and GpioInt descriptors. This change adds support to 4675both get and set the new wake bit in these descriptors, separately from 4676the existing share bit. Reported by Aaron Lu. 4677 4678Interpreter: Fix Store() when an implicit conversion is not possible. For 4679example, in the cases such as a store of a string to an existing package 4680object, implement the store as a CopyObject(). This is a small departure 4681from the ACPI specification which states that the control method should 4682be 4683aborted in this case. However, the ASLTS suite depends on this behavior. 4684 4685Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 4686macros: check if debug output is currently enabled as soon as possible to 4687minimize performance impact if debug is in fact not enabled. 4688 4689Source code restructuring: Cleanup to improve modularity. The following 4690new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 4691psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 4692Associated makefiles and project files have been updated. 4693 4694Changed an exception code for LoadTable operator. For the case where one 4695of the input strings is too long, change the returned exception code from 4696AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 4697 4698Fixed a possible memory leak in dispatcher error path. On error, delete 4699the mutex object created during method mutex creation. Reported by 4700tim.gardner@canonical.com. 4701 4702Example Code and Data Size: These are the sizes for the OS-independent 4703acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4704debug version of the code includes the debug output trace mechanism and 4705has a much larger code and data size. 4706 4707 Previous Release: 4708 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 4709 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4710 Current Release: 4711 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 4712 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 4713 4714 47152) iASL Compiler/Disassembler and Tools: 4716 4717iASL: Disallow a method call as argument to the ObjectType ASL operator. 4718This change tracks an errata to the ACPI 5.0 document. The AML grammar 4719will not allow the interpreter to differentiate between a method and a 4720method invocation when these are used as an argument to the ObjectType 4721operator. The ACPI specification change is to disallow a method 4722invocation 4723(UserTerm) for the ObjectType operator. 4724 4725Finish support for the TPM2 and CSRT tables in the headers, table 4726compiler, and disassembler. 4727 4728Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 4729always expires immediately if the semaphore is not available. The 4730original 4731code was using a relative-time timeout, but sem_timedwait requires the 4732use 4733of an absolute time. 4734 4735iASL: Added a remark if the Timer() operator is used within a 32-bit 4736table. This operator returns a 64-bit time value that will be truncated 4737within a 32-bit table. 4738 4739iASL Source code restructuring: Cleanup to improve modularity. The 4740following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 4741aslmethod.c, and aslfileio.c. Associated makefiles and project files have 4742been updated. 4743 4744 4745---------------------------------------- 474614 November 2012. Summary of changes for version 20121114: 4747 47481) ACPICA Kernel-resident Subsystem: 4749 4750Implemented a performance enhancement for ACPI/AML Package objects. This 4751change greatly increases the performance of Package objects within the 4752interpreter. It changes the processing of reference counts for packages 4753by 4754optimizing for the most common case where the package sub-objects are 4755either Integers, Strings, or Buffers. Increases the overall performance 4756of 4757the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 47582X.) 4759Chao Guan. ACPICA BZ 943. 4760 4761Implemented and deployed common macros to extract flag bits from resource 4762descriptors. Improves readability and maintainability of the code. Fixes 4763a 4764problem with the UART serial bus descriptor for the number of data bits 4765flags (was incorrectly 2 bits, should be 3). 4766 4767Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 4768of the macros and changed the SETx macros to the style of (destination, 4769source). Also added ACPI_CASTx companion macros. Lv Zheng. 4770 4771Example Code and Data Size: These are the sizes for the OS-independent 4772acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4773debug version of the code includes the debug output trace mechanism and 4774has a much larger code and data size. 4775 4776 Previous Release: 4777 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 4778 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4779 Current Release: 4780 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 4781 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4782 4783 47842) iASL Compiler/Disassembler and Tools: 4785 4786Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 4787adds the ShareAndWake and ExclusiveAndWake flags which were added to the 4788Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 4789 4790Disassembler: Fixed a problem with external declaration generation. Fixes 4791a problem where an incorrect pathname could be generated for an external 4792declaration if the original reference to the object includes leading 4793carats (^). ACPICA BZ 984. 4794 4795Debugger: Completed a major update for the Disassemble<method> command. 4796This command was out-of-date and did not properly disassemble control 4797methods that had any reasonable complexity. This fix brings the command 4798up 4799to the same level as the rest of the disassembler. Adds one new file, 4800dmdeferred.c, which is existing code that is now common with the main 4801disassembler and the debugger disassemble command. ACPICA MZ 978. 4802 4803iASL: Moved the parser entry prototype to avoid a duplicate declaration. 4804Newer versions of Bison emit this prototype, so moved the prototype out 4805of 4806the iASL header to where it is actually used in order to avoid a 4807duplicate 4808declaration. 4809 4810iASL/Tools: Standardized use of the stream I/O functions: 4811 1) Ensure check for I/O error after every fopen/fread/fwrite 4812 2) Ensure proper order of size/count arguments for fread/fwrite 4813 3) Use test of (Actual != Requested) after all fwrite, and most fread 4814 4) Standardize I/O error messages 4815Improves reliability and maintainability of the code. Bob Moore, Lv 4816Zheng. 4817ACPICA BZ 981. 4818 4819Disassembler: Prevent duplicate External() statements. During generation 4820of external statements, detect similar pathnames that are actually 4821duplicates such as these: 4822 External (\ABCD) 4823 External (ABCD) 4824Remove all leading '\' characters from pathnames during the external 4825statement generation so that duplicates will be detected and tossed. 4826ACPICA BZ 985. 4827 4828Tools: Replace low-level I/O with stream I/O functions. Replace 4829open/read/write/close with the stream I/O equivalents 4830fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 4831Moore. 4832 4833AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 4834name header so that AcpiXtract recognizes the output file/table. 4835 4836iASL: Remove obsolete -2 option flag. Originally intended to force the 4837compiler/disassembler into an ACPI 2.0 mode, this was never implemented 4838and the entire concept is now obsolete. 4839 4840---------------------------------------- 484118 October 2012. Summary of changes for version 20121018: 4842 4843 48441) ACPICA Kernel-resident Subsystem: 4845 4846Updated support for the ACPI 5.0 MPST table. Fixes some problems 4847introduced by late changes to the table as it was added to the ACPI 5.0 4848specification. Includes header, disassembler, and data table compiler 4849support as well as a new version of the MPST template. 4850 4851AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 48525.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 4853methods: _HID, _CID, and _UID. 4854 4855Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 4856ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 4857name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 4858names for their various drivers. Affects the AcpiGetObjectInfo external 4859interface, and other internal interfaces as well. 4860 4861Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 4862This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 4863on machines that support non-aligned transfers. Optimizes for this case 4864rather than using a strncpy. With assistance from Zheng Lv. 4865 4866Resource Manager: Small fix for buffer size calculation. Fixed a one byte 4867error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 4868 4869Added a new debug print message for AML mutex objects that are force- 4870released. At control method termination, any currently acquired mutex 4871objects are force-released. Adds a new debug-only message for each one 4872that is released. 4873 4874Audited/updated all ACPICA return macros and the function debug depth 4875counter: 1) Ensure that all functions that use the various TRACE macros 4876also use the appropriate ACPICA return macros. 2) Ensure that all normal 4877return statements surround the return expression (value) with parens to 4878ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 4879Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 4880 4881Global source code changes/maintenance: All extra lines at the start and 4882end of each source file have been removed for consistency. Also, within 4883comments, all new sentences start with a single space instead of a double 4884space, again for consistency across the code base. 4885 4886Example Code and Data Size: These are the sizes for the OS-independent 4887acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4888debug version of the code includes the debug output trace mechanism and 4889has a much larger code and data size. 4890 4891 Previous Release: 4892 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 4893 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 4894 Current Release: 4895 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 4896 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 4897 4898 48992) iASL Compiler/Disassembler and Tools: 4900 4901AcpiExec: Improved the algorithm used for memory leak/corruption 4902detection. Added some intelligence to the code that maintains the global 4903list of allocated memory. The list is now ordered by allocated memory 4904address, significantly improving performance. When running AcpiExec on 4905the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 4906on the platform and/or the environment. Note, this performance 4907enhancement affects the AcpiExec utility only, not the kernel-resident 4908ACPICA code. 4909 4910Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 4911the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 4912incorrect table offset reported for invalid opcodes. Report the original 491332-bit value for bad ACPI_NAMEs (as well as the repaired name.) 4914 4915Disassembler: Enhanced the -vt option to emit the binary table data in 4916hex format to assist with debugging. 4917 4918Fixed a potential filename buffer overflow in osunixdir.c. Increased the 4919size of file structure. Colin Ian King. 4920 4921---------------------------------------- 492213 September 2012. Summary of changes for version 20120913: 4923 4924 49251) ACPICA Kernel-resident Subsystem: 4926 4927ACPI 5.0: Added two new notify types for the Hardware Error Notification 4928Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 4929and 4930MCE(6). 4931 4932Table Manager: Merged/removed duplicate code in the root table resize 4933functions. One function is external, the other is internal. Lv Zheng, 4934ACPICA 4935BZ 846. 4936 4937Makefiles: Completely removed the obsolete "Linux" makefiles under 4938acpica/generate/linux. These makefiles are obsolete and have been 4939replaced 4940by 4941the generic unix makefiles under acpica/generate/unix. 4942 4943Makefiles: Ensure that binary files always copied properly. Minor rule 4944change 4945to ensure that the final binary output files are always copied up to the 4946appropriate binary directory (bin32 or bin64.) 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.8K Code, 25.3K Data, 119.1K Total 4957 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 4958 Current Release: 4959 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 4960 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 4961 4962 49632) iASL Compiler/Disassembler and Tools: 4964 4965Disassembler: Fixed a possible fault during the disassembly of resource 4966descriptors when a second parse is required because of the invocation of 4967external control methods within the table. With assistance from 4968adq@lidskialf.net. ACPICA BZ 976. 4969 4970iASL: Fixed a namepath optimization problem. An error can occur if the 4971parse 4972node that contains the namepath to be optimized does not have a parent 4973node 4974that is a named object. This change fixes the problem. 4975 4976iASL: Fixed a regression where the AML file is not deleted on errors. The 4977AML 4978output file should be deleted if there are any errors during the 4979compiler. 4980The 4981only exception is if the -f (force output) option is used. ACPICA BZ 974. 4982 4983iASL: Added a feature to automatically increase internal line buffer 4984sizes. 4985Via realloc(), automatically increase the internal line buffer sizes as 4986necessary to support very long source code lines. The current version of 4987the 4988preprocessor requires a buffer long enough to contain full source code 4989lines. 4990This change increases the line buffer(s) if the input lines go beyond the 4991current buffer size. This eliminates errors that occurred when a source 4992code 4993line was longer than the buffer. 4994 4995iASL: Fixed a problem with constant folding in method declarations. The 4996SyncLevel term is a ByteConstExpr, and incorrect code would be generated 4997if a 4998Type3 opcode was used. 4999 5000Debugger: Improved command help support. For incorrect argument count, 5001display 5002full help for the command. For help command itself, allow an argument to 5003specify a command. 5004 5005Test Suites: Several bug fixes for the ASLTS suite reduces the number of 5006errors during execution of the suite. Guan Chao. 5007 5008---------------------------------------- 500916 August 2012. Summary of changes for version 20120816: 5010 5011 50121) ACPICA Kernel-resident Subsystem: 5013 5014Removed all use of the deprecated _GTS and _BFS predefined methods. The 5015_GTS 5016(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 5017deprecated and will probably be removed from the ACPI specification. 5018Windows 5019does not invoke them, and reportedly never will. The final nail in the 5020coffin 5021is that the ACPI specification states that these methods must be run with 5022interrupts off, which is not going to happen in a kernel interpreter. 5023Note: 5024Linux has removed all use of the methods also. It was discovered that 5025invoking these functions caused failures on some machines, probably 5026because 5027they were never tested since Windows does not call them. Affects two 5028external 5029interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 5030ACPICA BZ 969. 5031 5032Implemented support for complex bit-packed buffers returned from the _PLD 5033(Physical Location of Device) predefined method. Adds a new external 5034interface, AcpiDecodePldBuffer that parses the buffer into a more usable 5035C 5036structure. Note: C Bitfields cannot be used for this type of predefined 5037structure since the memory layout of individual bitfields is not defined 5038by 5039the C language. In addition, there are endian concerns where a compiler 5040will 5041change the bitfield ordering based on the machine type. The new ACPICA 5042interface eliminates these issues, and should be called after _PLD is 5043executed. ACPICA BZ 954. 5044 5045Implemented a change to allow a scope change to root (via "Scope (\)") 5046during 5047execution of module-level ASL code (code that is executed at table load 5048time.) Lin Ming. 5049 5050Added the Windows8/Server2012 string for the _OSI method. This change 5051adds 5052a 5053new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 50542012. 5055 5056Added header support for the new ACPI tables DBG2 (Debug Port Table Type 50572) 5058and CSRT (Core System Resource Table). 5059 5060Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 5061names. This simplifies access to the buffers returned by these predefined 5062names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 5063 5064GPE support: Removed an extraneous parameter from the various low-level 5065internal GPE functions. Tang Feng. 5066 5067Removed the linux makefiles from the unix packages. The generate/linux 5068makefiles are obsolete and have been removed from the unix tarball 5069release 5070packages. The replacement makefiles are under generate/unix, and there is 5071a 5072top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 5073 5074Updates for Unix makefiles: 50751) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 50762) Update linker flags (move to end of command line) for AcpiExec 5077utility. 5078Guan Chao. 5079 5080Split ACPICA initialization functions to new file, utxfinit.c. Split from 5081utxface.c to improve modularity and reduce file size. 5082 5083Example Code and Data Size: These are the sizes for the OS-independent 5084acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5085debug version of the code includes the debug output trace mechanism and 5086has a 5087much larger code and data size. 5088 5089 Previous Release: 5090 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 5091 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 5092 Current Release: 5093 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 5094 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 5095 5096 50972) iASL Compiler/Disassembler and Tools: 5098 5099iASL: Fixed a problem with constant folding for fixed-length constant 5100expressions. The constant-folding code was not being invoked for constant 5101expressions that allow the use of type 3/4/5 opcodes to generate 5102constants 5103for expressions such as ByteConstExpr, WordConstExpr, etc. This could 5104result 5105in the generation of invalid AML bytecode. ACPICA BZ 970. 5106 5107iASL: Fixed a generation issue on newer versions of Bison. Newer versions 5108apparently automatically emit some of the necessary externals. This 5109change 5110handles these versions in order to eliminate generation warnings. 5111 5112Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 5113 5114Disassembler: Add support to decode _PLD buffers. The decoded buffer 5115appears 5116within comments in the output file. 5117 5118Debugger: Fixed a regression with the "Threads" command where 5119AE_BAD_PARAMETER was always returned. 5120 5121---------------------------------------- 512211 July 2012. Summary of changes for version 20120711: 5123 51241) ACPICA Kernel-resident Subsystem: 5125 5126Fixed a possible fault in the return package object repair code. Fixes a 5127problem that can occur when a lone package object is wrapped with an 5128outer 5129package object in order to force conformance to the ACPI specification. 5130Can 5131affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 5132_DLM, 5133_CSD, _PSD, _TSD. 5134 5135Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 5136PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 5137ARB_DIS bit must be implemented in the host-dependent C3 processor power 5138state 5139support. Note, ARB_DIS is obsolete and only applies to older chipsets, 5140both 5141Intel and other vendors. (for Intel: ICH4-M and earlier) 5142 5143This change removes the code to disable/enable bus master arbitration 5144during 5145suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 5146causes 5147resume problems on some machines. The change has been in use for over 5148seven 5149years within Linux. 5150 5151Implemented two new external interfaces to support host-directed dynamic 5152ACPI 5153table load and unload. They are intended to simplify the host 5154implementation 5155of hot-plug support: 5156 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 5157 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 5158table. 5159See the ACPICA reference for additional details. Adds one new file, 5160components/tables/tbxfload.c 5161 5162Implemented and deployed two new interfaces for errors and warnings that 5163are 5164known to be caused by BIOS/firmware issues: 5165 AcpiBiosError: Prints "ACPI Firmware Error" message. 5166 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 5167Deployed these new interfaces in the ACPICA Table Manager code for ACPI 5168table 5169and FADT errors. Additional deployment to be completed as appropriate in 5170the 5171future. The associated conditional macros are ACPI_BIOS_ERROR and 5172ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 5173ACPICA 5174BZ 5175843. 5176 5177Implicit notify support: ensure that no memory allocation occurs within a 5178critical region. This fix moves a memory allocation outside of the time 5179that a 5180spinlock is held. Fixes issues on systems that do not allow this 5181behavior. 5182Jung-uk Kim. 5183 5184Split exception code utilities and tables into a new file, 5185utilities/utexcep.c 5186 5187Example Code and Data Size: These are the sizes for the OS-independent 5188acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5189debug 5190version of the code includes the debug output trace mechanism and has a 5191much 5192larger code and data size. 5193 5194 Previous Release: 5195 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 5196 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 5197 Current Release: 5198 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 5199 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 5200 5201 52022) iASL Compiler/Disassembler and Tools: 5203 5204iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 5205of 52060. Jung-uk Kim. 5207 5208Debugger: Enhanced the "tables" command to emit additional information 5209about 5210the current set of ACPI tables, including the owner ID and flags decode. 5211 5212Debugger: Reimplemented the "unload" command to use the new 5213AcpiUnloadParentTable external interface. This command was disable 5214previously 5215due to need for an unload interface. 5216 5217AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 5218option 5219will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 5220 5221---------------------------------------- 522220 June 2012. Summary of changes for version 20120620: 5223 5224 52251) ACPICA Kernel-resident Subsystem: 5226 5227Implemented support to expand the "implicit notify" feature to allow 5228multiple 5229devices to be notified by a single GPE. This feature automatically 5230generates a 5231runtime device notification in the absence of a BIOS-provided GPE control 5232method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 5233notify is 5234provided by ACPICA for Windows compatibility, and is a workaround for 5235BIOS 5236AML 5237code errors. See the description of the AcpiSetupGpeForWake interface in 5238the 5239APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 5240 5241Changed some comments and internal function names to simplify and ensure 5242correctness of the Linux code translation. No functional changes. 5243 5244Example Code and Data Size: These are the sizes for the OS-independent 5245acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5246debug 5247version of the code includes the debug output trace mechanism and has a 5248much 5249larger code and data size. 5250 5251 Previous Release: 5252 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 5253 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 5254 Current Release: 5255 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 5256 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 5257 5258 52592) iASL Compiler/Disassembler and Tools: 5260 5261Disassembler: Added support to emit short, commented descriptions for the 5262ACPI 5263predefined names in order to improve the readability of the disassembled 5264output. ACPICA BZ 959. Changes include: 5265 1) Emit descriptions for all standard predefined names (_INI, _STA, 5266_PRW, 5267etc.) 5268 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 5269 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 5270etc.) 5271 5272AcpiSrc: Fixed several long-standing Linux code translation issues. 5273Argument 5274descriptions in function headers are now translated properly to lower 5275case 5276and 5277underscores. ACPICA BZ 961. Also fixes translation problems such as 5278these: 5279(old -> new) 5280 i_aSL -> iASL 5281 00-7_f -> 00-7F 5282 16_k -> 16K 5283 local_fADT -> local_FADT 5284 execute_oSI -> execute_OSI 5285 5286iASL: Fixed a problem where null bytes were inadvertently emitted into 5287some 5288listing files. 5289 5290iASL: Added the existing debug options to the standard help screen. There 5291are 5292no longer two different help screens. ACPICA BZ 957. 5293 5294AcpiHelp: Fixed some typos in the various predefined name descriptions. 5295Also 5296expand some of the descriptions where appropriate. 5297 5298iASL: Fixed the -ot option (display compile times/statistics). Was not 5299working 5300properly for standard output; only worked for the debug file case. 5301 5302---------------------------------------- 530318 May 2012. Summary of changes for version 20120518: 5304 5305 53061) ACPICA Core Subsystem: 5307 5308Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 5309defined 5310to block until asynchronous events such as notifies and GPEs have 5311completed. 5312Within ACPICA, it is only called before a notify or GPE handler is 5313removed/uninstalled. It also may be useful for the host OS within related 5314drivers such as the Embedded Controller driver. See the ACPICA reference 5315for 5316additional information. ACPICA BZ 868. 5317 5318ACPI Tables: Added a new error message for a possible overflow failure 5319during 5320the conversion of FADT 32-bit legacy register addresses to internal 5321common 532264- 5323bit GAS structure representation. The GAS has a one-byte "bit length" 5324field, 5325thus limiting the register length to 255 bits. ACPICA BZ 953. 5326 5327Example Code and Data Size: These are the sizes for the OS-independent 5328acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5329debug 5330version of the code includes the debug output trace mechanism and has a 5331much 5332larger code and data size. 5333 5334 Previous Release: 5335 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5336 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 5337 Current Release: 5338 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 5339 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 5340 5341 53422) iASL Compiler/Disassembler and Tools: 5343 5344iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 5345macro. 5346This keyword was added late in the ACPI 5.0 release cycle and was not 5347implemented until now. 5348 5349Disassembler: Added support for Operation Region externals. Adds missing 5350support for operation regions that are defined in another table, and 5351referenced locally via a Field or BankField ASL operator. Now generates 5352the 5353correct External statement. 5354 5355Disassembler: Several additional fixes for the External() statement 5356generation 5357related to some ASL operators. Also, order the External() statements 5358alphabetically in the disassembler output. Fixes the External() 5359generation 5360for 5361the Create* field, Alias, and Scope operators: 5362 1) Create* buffer field operators - fix type mismatch warning on 5363disassembly 5364 2) Alias - implement missing External support 5365 3) Scope - fix to make sure all necessary externals are emitted. 5366 5367iASL: Improved pathname support. For include files, merge the prefix 5368pathname 5369with the file pathname and eliminate unnecessary components. Convert 5370backslashes in all pathnames to forward slashes, for readability. Include 5371file 5372pathname changes affect both #include and Include() type operators. 5373 5374iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 5375end 5376of a valid line by inserting a newline and then returning the EOF during 5377the 5378next call to GetNextLine. Prevents the line from being ignored due to EOF 5379condition. 5380 5381iASL: Implemented some changes to enhance the IDE support (-vi option.) 5382Error 5383and Warning messages are now correctly recognized for both the source 5384code 5385browser and the global error and warning counts. 5386 5387---------------------------------------- 538820 April 2012. Summary of changes for version 20120420: 5389 5390 53911) ACPICA Core Subsystem: 5392 5393Implemented support for multiple notify handlers. This change adds 5394support 5395to 5396allow multiple system and device notify handlers on Device, Thermal Zone, 5397and 5398Processor objects. This can simplify the host OS notification 5399implementation. 5400Also re-worked and restructured the entire notify support code to 5401simplify 5402handler installation, handler removal, notify event queuing, and notify 5403dispatch to handler(s). Note: there can still only be two global notify 5404handlers - one for system notifies and one for device notifies. There are 5405no 5406changes to the existing handler install/remove interfaces. Lin Ming, Bob 5407Moore, Rafael Wysocki. 5408 5409Fixed a regression in the package repair code where the object reference 5410count was calculated incorrectly. Regression was introduced in the commit 5411"Support to add Package wrappers". 5412 5413Fixed a couple possible memory leaks in the AML parser, in the error 5414recovery 5415path. Jesper Juhl, Lin Ming. 5416 5417Example Code and Data Size: These are the sizes for the OS-independent 5418acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5419debug version of the code includes the debug output trace mechanism and 5420has a 5421much larger code and data size. 5422 5423 Previous Release: 5424 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5425 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5426 Current Release: 5427 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5428 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 5429 5430 54312) iASL Compiler/Disassembler and Tools: 5432 5433iASL: Fixed a problem with the resource descriptor support where the 5434length 5435of the StartDependentFn and StartDependentFnNoPrio descriptors were not 5436included in cumulative descriptor offset, resulting in incorrect values 5437for 5438resource tags within resource descriptors appearing after a 5439StartDependent* 5440descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 5441 5442iASL and Preprocessor: Implemented full support for the #line directive 5443to 5444correctly track original source file line numbers through the .i 5445preprocessor 5446output file - for error and warning messages. 5447 5448iASL: Expand the allowable byte constants for address space IDs. 5449Previously, 5450the allowable range was 0x80-0xFF (user-defined spaces), now the range is 54510x0A-0xFF to allow for custom and new IDs without changing the compiler. 5452 5453iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 5454 5455iASL: Add option to completely disable the preprocessor (-Pn). 5456 5457iASL: Now emit all error/warning messages to standard error (stderr) by 5458default (instead of the previous stdout). 5459 5460ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 5461Update 5462for resource descriptor offset fix above. Update/cleanup error output 5463routines. Enable and send iASL errors/warnings to an error logfile 5464(error.txt). Send all other iASL output to a logfile (compiler.txt). 5465Fixed 5466several extraneous "unrecognized operator" messages. 5467 5468---------------------------------------- 546920 March 2012. Summary of changes for version 20120320: 5470 5471 54721) ACPICA Core Subsystem: 5473 5474Enhanced the sleep/wake interfaces to optionally execute the _GTS method 5475(Going To Sleep) and the _BFS method (Back From Sleep). Windows 5476apparently 5477does not execute these methods, and therefore these methods are often 5478untested. It has been seen on some systems where the execution of these 5479methods causes errors and also prevents the machine from entering S5. It 5480is 5481therefore suggested that host operating systems do not execute these 5482methods 5483by default. In the future, perhaps these methods can be optionally 5484executed 5485based on the age of the system and/or what is the newest version of 5486Windows 5487that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 5488and 5489AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 5490Ming. 5491 5492Fixed a problem where the length of the local/common FADT was set too 5493early. 5494The local FADT table length cannot be set to the common length until the 5495original length has been examined. There is code that checks the table 5496length 5497and sets various fields appropriately. This can affect older machines 5498with 5499early FADT versions. For example, this can cause inadvertent writes to 5500the 5501CST_CNT register. Julian Anastasov. 5502 5503Fixed a mapping issue related to a physical table override. Use the 5504deferred 5505mapping mechanism for tables loaded via the physical override OSL 5506interface. 5507This allows for early mapping before the virtual memory manager is 5508available. 5509Thomas Renninger, Bob Moore. 5510 5511Enhanced the automatic return-object repair code: Repair a common problem 5512with 5513predefined methods that are defined to return a variable-length Package 5514of 5515sub-objects. If there is only one sub-object, some BIOS ASL code 5516mistakenly 5517simply returns the single object instead of a Package with one sub- 5518object. 5519This new support will repair this error by wrapping a Package object 5520around 5521the original object, creating the correct and expected Package with one 5522sub- 5523object. Names that can be repaired in this manner include: _ALR, _CSD, 5524_HPX, 5525_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 5526939. 5527 5528Changed the exception code returned for invalid ACPI paths passed as 5529parameters to external interfaces such as AcpiEvaluateObject. Was 5530AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 5531 5532Example Code and Data Size: These are the sizes for the OS-independent 5533acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5534debug 5535version of the code includes the debug output trace mechanism and has a 5536much 5537larger code and data size. 5538 5539 Previous Release: 5540 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 5541 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5542 Current Release: 5543 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 5544 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5545 5546 55472) iASL Compiler/Disassembler and Tools: 5548 5549iASL: Added the infrastructure and initial implementation of a integrated 5550C- 5551like preprocessor. This will simplify BIOS development process by 5552eliminating 5553the need for a separate preprocessing step during builds. On Windows, it 5554also 5555eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 5556features including full #define() macro support are still under 5557development. 5558These preprocessor directives are supported: 5559 #define 5560 #elif 5561 #else 5562 #endif 5563 #error 5564 #if 5565 #ifdef 5566 #ifndef 5567 #include 5568 #pragma message 5569 #undef 5570 #warning 5571In addition, these new command line options are supported: 5572 -D <symbol> Define symbol for preprocessor use 5573 -li Create preprocessed output file (*.i) 5574 -P Preprocess only and create preprocessor output file (*.i) 5575 5576Table Compiler: Fixed a problem where the equals operator within an 5577expression 5578did not work properly. 5579 5580Updated iASL to use the current versions of Bison/Flex. Updated the 5581Windows 5582project file to invoke these tools from the standard location. ACPICA BZ 5583904. 5584Versions supported: 5585 Flex for Windows: V2.5.4 5586 Bison for Windows: V2.4.1 5587 5588---------------------------------------- 558915 February 2012. Summary of changes for version 20120215: 5590 5591 55921) ACPICA Core Subsystem: 5593 5594There have been some major changes to the sleep/wake support code, as 5595described below (a - e). 5596 5597a) The AcpiLeaveSleepState has been split into two interfaces, similar to 5598AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 5599AcpiLeaveSleepStatePrep. This allows the host to perform actions between 5600the 5601time the _BFS method is called and the _WAK method is called. NOTE: all 5602hosts 5603must update their wake/resume code or else sleep/wake will not work 5604properly. 5605Rafael Wysocki. 5606 5607b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 5608_WAK 5609method. Some machines require that the GPEs are enabled before the _WAK 5610method 5611is executed. Thomas Renninger. 5612 5613c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 5614bit. 5615Some BIOS code assumes that WAK_STS will be cleared on resume and use it 5616to 5617determine whether the system is rebooting or resuming. Matthew Garrett. 5618 5619d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 5620Sleep) to 5621match the ACPI specification requirement. Rafael Wysocki. 5622 5623e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 5624registers within the V5 FADT. This support adds two new files: 5625hardware/hwesleep.c implements the support for the new registers. Moved 5626all 5627sleep/wake external interfaces to hardware/hwxfsleep.c. 5628 5629 5630Added a new OSL interface for ACPI table overrides, 5631AcpiOsPhysicalTableOverride. This interface allows the host to override a 5632table via a physical address, instead of the logical address required by 5633AcpiOsTableOverride. This simplifies the host implementation. Initial 5634implementation by Thomas Renninger. The ACPICA implementation creates a 5635single 5636shared function for table overrides that attempts both a logical and a 5637physical override. 5638 5639Expanded the OSL memory read/write interfaces to 64-bit data 5640(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 5641transfer support for GAS register structures passed to AcpiRead and 5642AcpiWrite. 5643 5644Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 5645custom 5646build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 5647model. 5648See the ACPICA reference for details. ACPICA BZ 942. This option removes 5649about 565010% of the code and 5% of the static data, and the following hardware 5651ACPI 5652features become unavailable: 5653 PM Event and Control registers 5654 SCI interrupt (and handler) 5655 Fixed Events 5656 General Purpose Events (GPEs) 5657 Global Lock 5658 ACPI PM timer 5659 FACS table (Waking vectors and Global Lock) 5660 5661Updated the unix tarball directory structure to match the ACPICA git 5662source 5663tree. This ensures that the generic unix makefiles work properly (in 5664generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 5665867. 5666 5667Updated the return value of the _REV predefined method to integer value 5 5668to 5669reflect ACPI 5.0 support. 5670 5671Moved the external ACPI PM timer interface prototypes to the public 5672acpixf.h 5673file where they belong. 5674 5675Example Code and Data Size: These are the sizes for the OS-independent 5676acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5677debug 5678version of the code includes the debug output trace mechanism and has a 5679much 5680larger code and data size. 5681 5682 Previous Release: 5683 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 5684 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 5685 Current Release: 5686 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 5687 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 5688 5689 56902) iASL Compiler/Disassembler and Tools: 5691 5692Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 5693descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 5694incorrectly displayed. 5695 5696AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 5697specification. 5698 5699---------------------------------------- 570011 January 2012. Summary of changes for version 20120111: 5701 5702 57031) ACPICA Core Subsystem: 5704 5705Implemented a new mechanism to allow host device drivers to check for 5706address 5707range conflicts with ACPI Operation Regions. Both SystemMemory and 5708SystemIO 5709address spaces are supported. A new external interface, 5710AcpiCheckAddressRange, 5711allows drivers to check an address range against the ACPI namespace. See 5712the 5713ACPICA reference for additional details. Adds one new file, 5714utilities/utaddress.c. Lin Ming, Bob Moore. 5715 5716Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 5717Control 5718and 5719Status registers, update the ACPI 5.0 flags, and update internal data 5720structures to handle an FADT larger than 256 bytes. The size of the ACPI 57215.0 5722FADT is 268 bytes. 5723 5724Updated all ACPICA copyrights and signons to 2012. Added the 2012 5725copyright to 5726all module headers and signons, including the standard Linux header. This 5727affects virtually every file in the ACPICA core subsystem, iASL compiler, 5728and 5729all ACPICA utilities. 5730 5731Example Code and Data Size: These are the sizes for the OS-independent 5732acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5733debug 5734version of the code includes the debug output trace mechanism and has a 5735much 5736larger code and data size. 5737 5738 Previous Release: 5739 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 5740 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 5741 Current Release: 5742 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 5743 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 5744 5745 57462) iASL Compiler/Disassembler and Tools: 5747 5748Disassembler: fixed a problem with the automatic resource tag generation 5749support. Fixes a problem where the resource tags are inadvertently not 5750constructed if the table being disassembled contains external references 5751to 5752control methods. Moved the actual construction of the tags to after the 5753final 5754namespace is constructed (after 2nd parse is invoked due to external 5755control 5756method references.) ACPICA BZ 941. 5757 5758Table Compiler: Make all "generic" operators caseless. These are the 5759operators 5760like UINT8, String, etc. Making these caseless improves ease-of-use. 5761ACPICA BZ 5762934. 5763 5764---------------------------------------- 576523 November 2011. Summary of changes for version 20111123: 5766 57670) ACPI 5.0 Support: 5768 5769This release contains full support for the ACPI 5.0 specification, as 5770summarized below. 5771 5772Reduced Hardware Support: 5773------------------------- 5774 5775This support allows for ACPI systems without the usual ACPI hardware. 5776This 5777support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 5778will 5779not attempt to initialize or use any of the usual ACPI hardware. Note, 5780when 5781this flag is set, all of the following ACPI hardware is assumed to be not 5782present and is not initialized or accessed: 5783 5784 General Purpose Events (GPEs) 5785 Fixed Events (PM1a/PM1b and PM Control) 5786 Power Management Timer and Console Buttons (power/sleep) 5787 Real-time Clock Alarm 5788 Global Lock 5789 System Control Interrupt (SCI) 5790 The FACS is assumed to be non-existent 5791 5792ACPI Tables: 5793------------ 5794 5795All new tables and updates to existing tables are fully supported in the 5796ACPICA headers (for use by device drivers), the disassembler, and the 5797iASL 5798Data Table Compiler. ACPI 5.0 defines these new tables: 5799 5800 BGRT /* Boot Graphics Resource Table */ 5801 DRTM /* Dynamic Root of Trust for Measurement table */ 5802 FPDT /* Firmware Performance Data Table */ 5803 GTDT /* Generic Timer Description Table */ 5804 MPST /* Memory Power State Table */ 5805 PCCT /* Platform Communications Channel Table */ 5806 PMTT /* Platform Memory Topology Table */ 5807 RASF /* RAS Feature table */ 5808 5809Operation Regions/SpaceIDs: 5810--------------------------- 5811 5812All new operation regions are fully supported by the iASL compiler, the 5813disassembler, and the ACPICA runtime code (for dispatch to region 5814handlers.) 5815The new operation region Space IDs are: 5816 5817 GeneralPurposeIo 5818 GenericSerialBus 5819 5820Resource Descriptors: 5821--------------------- 5822 5823All new ASL resource descriptors are fully supported by the iASL 5824compiler, 5825the 5826ASL/AML disassembler, and the ACPICA runtime Resource Manager code 5827(including 5828all new predefined resource tags). New descriptors are: 5829 5830 FixedDma 5831 GpioIo 5832 GpioInt 5833 I2cSerialBus 5834 SpiSerialBus 5835 UartSerialBus 5836 5837ASL/AML Operators, New and Modified: 5838------------------------------------ 5839 5840One new operator is added, the Connection operator, which is used to 5841associate 5842a GeneralPurposeIo or GenericSerialBus resource descriptor with 5843individual 5844field objects within an operation region. Several new protocols are 5845associated 5846with the AccessAs operator. All are fully supported by the iASL compiler, 5847disassembler, and runtime ACPICA AML interpreter: 5848 5849 Connection // Declare Field Connection 5850attributes 5851 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 5852 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 5853Protocol 5854 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 5855 RawDataBuffer // Data type for Vendor Data 5856fields 5857 5858Predefined ASL/AML Objects: 5859--------------------------- 5860 5861All new predefined objects/control-methods are supported by the iASL 5862compiler 5863and the ACPICA runtime validation/repair (arguments and return values.) 5864New 5865predefined names include the following: 5866 5867Standard Predefined Names (Objects or Control Methods): 5868 _AEI, _CLS, _CPC, _CWS, _DEP, 5869 _DLM, _EVT, _GCP, _CRT, _GWS, 5870 _HRV, _PRE, _PSE, _SRT, _SUB. 5871 5872Resource Tags (Names used to access individual fields within resource 5873descriptors): 5874 _DBT, _DPL, _DRS, _END, _FLC, 5875 _IOR, _LIN, _MOD, _PAR, _PHA, 5876 _PIN, _PPI, _POL, _RXL, _SLV, 5877 _SPE, _STB, _TXL, _VEN. 5878 5879ACPICA External Interfaces: 5880--------------------------- 5881 5882Several new interfaces have been defined for use by ACPI-related device 5883drivers and other host OS services: 5884 5885AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 5886to 5887acquire and release AML mutexes that are defined in the DSDT/SSDT tables 5888provided by the BIOS. They are intended to be used in conjunction with 5889the 5890ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 5891mutual exclusion with the AML code/interpreter. 5892 5893AcpiGetEventResources: Returns the (formatted) resource descriptors as 5894defined 5895by the ACPI 5.0 _AEI object (ACPI Event Information). This object 5896provides 5897resource descriptors associated with hardware-reduced platform events, 5898similar 5899to the AcpiGetCurrentResources interface. 5900 5901Operation Region Handlers: For General Purpose IO and Generic Serial Bus 5902operation regions, information about the Connection() object and any 5903optional 5904length information is passed to the region handler within the Context 5905parameter. 5906 5907AcpiBufferToResource: This interface converts a raw AML buffer containing 5908a 5909resource template or resource descriptor to the ACPI_RESOURCE internal 5910format 5911suitable for use by device drivers. Can be used by an operation region 5912handler 5913to convert the Connection() buffer object into a ACPI_RESOURCE. 5914 5915Miscellaneous/Tools/TestSuites: 5916------------------------------- 5917 5918Support for extended _HID names (Four alpha characters instead of three). 5919Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 5920Support for ACPI 5.0 features in the ASLTS test suite. 5921Fully updated documentation (ACPICA and iASL reference documents.) 5922 5923ACPI Table Definition Language: 5924------------------------------- 5925 5926Support for this language was implemented and released as a subsystem of 5927the 5928iASL compiler in 2010. (See the iASL compiler User Guide.) 5929 5930 5931Non-ACPI 5.0 changes for this release: 5932-------------------------------------- 5933 59341) ACPICA Core Subsystem: 5935 5936Fix a problem with operation region declarations where a failure can 5937occur 5938if 5939the region name and an argument that evaluates to an object (such as the 5940region address) are in different namespace scopes. Lin Ming, ACPICA BZ 5941937. 5942 5943Do not abort an ACPI table load if an invalid space ID is found within. 5944This 5945will be caught later if the offending method is executed. ACPICA BZ 925. 5946 5947Fixed an issue with the FFixedHW space ID where the ID was not always 5948recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 5949 5950Fixed a problem with the 32-bit generation of the unix-specific OSL 5951(osunixxf.c). Lin Ming, ACPICA BZ 936. 5952 5953Several changes made to enable generation with the GCC 4.6 compiler. 5954ACPICA BZ 5955935. 5956 5957New error messages: Unsupported I/O requests (not 8/16/32 bit), and 5958Index/Bank 5959field registers out-of-range. 5960 59612) iASL Compiler/Disassembler and Tools: 5962 5963iASL: Implemented the __PATH__ operator, which returns the full pathname 5964of 5965the current source file. 5966 5967AcpiHelp: Automatically display expanded keyword information for all ASL 5968operators. 5969 5970Debugger: Add "Template" command to disassemble/dump resource template 5971buffers. 5972 5973Added a new master script to generate and execute the ASLTS test suite. 5974Automatically handles 32- and 64-bit generation. See tests/aslts.sh 5975 5976iASL: Fix problem with listing generation during processing of the 5977Switch() 5978operator where AML listing was disabled until the entire Switch block was 5979completed. 5980 5981iASL: Improve support for semicolon statement terminators. Fix "invalid 5982character" message for some cases when the semicolon is used. Semicolons 5983are 5984now allowed after every <Term> grammar element. ACPICA BZ 927. 5985 5986iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 5987923. 5988 5989Disassembler: Fix problem with disassembly of the DataTableRegion 5990operator 5991where an inadvertent "Unhandled deferred opcode" message could be 5992generated. 5993 59943) Example Code and Data Size 5995 5996These are the sizes for the OS-independent acpica.lib produced by the 5997Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 5998includes the debug output trace mechanism and has a much larger code and 5999data 6000size. 6001 6002 Previous Release: 6003 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6004 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6005 Current Release: 6006 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 6007 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 6008 6009---------------------------------------- 601022 September 2011. Summary of changes for version 20110922: 6011 60120) ACPI 5.0 News: 6013 6014Support for ACPI 5.0 in ACPICA has been underway for several months and 6015will 6016be released at the same time that ACPI 5.0 is officially released. 6017 6018The ACPI 5.0 specification is on track for release in the next few 6019months. 6020 60211) ACPICA Core Subsystem: 6022 6023Fixed a problem where the maximum sleep time for the Sleep() operator was 6024intended to be limited to two seconds, but was inadvertently limited to 602520 6026seconds instead. 6027 6028Linux and Unix makefiles: Added header file dependencies to ensure 6029correct 6030generation of ACPICA core code and utilities. Also simplified the 6031makefiles 6032considerably through the use of the vpath variable to specify search 6033paths. 6034ACPICA BZ 924. 6035 60362) iASL Compiler/Disassembler and Tools: 6037 6038iASL: Implemented support to check the access length for all fields 6039created to 6040access named Resource Descriptor fields. For example, if a resource field 6041is 6042defined to be two bits, a warning is issued if a CreateXxxxField() is 6043used 6044with an incorrect bit length. This is implemented for all current 6045resource 6046descriptor names. ACPICA BZ 930. 6047 6048Disassembler: Fixed a byte ordering problem with the output of 24-bit and 604956- 6050bit integers. 6051 6052iASL: Fixed a couple of issues associated with variable-length package 6053objects. 1) properly handle constants like One, Ones, Zero -- do not make 6054a 6055VAR_PACKAGE when these are used as a package length. 2) Allow the 6056VAR_PACKAGE 6057opcode (in addition to PACKAGE) when validating object types for 6058predefined 6059names. 6060 6061iASL: Emit statistics for all output files (instead of just the ASL input 6062and 6063AML output). Includes listings, hex files, etc. 6064 6065iASL: Added -G option to the table compiler to allow the compilation of 6066custom 6067ACPI tables. The only part of a table that is required is the standard 606836- 6069byte 6070ACPI header. 6071 6072AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 6073headers), 6074which also adds correct 64-bit support. Also, now all output filenames 6075are 6076completely lower case. 6077 6078AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 6079loading table files. A warning is issued for any such tables. The only 6080exception is an FADT. This also fixes a possible fault when attempting to 6081load 6082non-AML tables. ACPICA BZ 932. 6083 6084AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 6085a 6086missing table terminator could cause a fault when using the -p option. 6087 6088AcpiSrc: Fixed a possible divide-by-zero fault when generating file 6089statistics. 6090 60913) Example Code and Data Size 6092 6093These are the sizes for the OS-independent acpica.lib produced by the 6094Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 6095includes the debug output trace mechanism and has a much larger code and 6096data 6097size. 6098 6099 Previous Release (VC 9.0): 6100 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6101 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6102 Current Release (VC 9.0): 6103 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6104 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6105 6106 6107---------------------------------------- 610823 June 2011. Summary of changes for version 20110623: 6109 61101) ACPI CA Core Subsystem: 6111 6112Updated the predefined name repair mechanism to not attempt repair of a 6113_TSS 6114return object if a _PSS object is present. We can only sort the _TSS 6115return 6116package if there is no _PSS within the same scope. This is because if 6117_PSS 6118is 6119present, the ACPI specification dictates that the _TSS Power Dissipation 6120field 6121is to be ignored, and therefore some BIOSs leave garbage values in the 6122_TSS 6123Power field(s). In this case, it is best to just return the _TSS package 6124as- 6125is. Reported by, and fixed with assistance from Fenghua Yu. 6126 6127Added an option to globally disable the control method return value 6128validation 6129and repair. This runtime option can be used to disable return value 6130repair 6131if 6132this is causing a problem on a particular machine. Also added an option 6133to 6134AcpiExec (-dr) to set this disable flag. 6135 6136All makefiles and project files: Major changes to improve generation of 6137ACPICA 6138tools. ACPICA BZ 912: 6139 Reduce default optimization levels to improve compatibility 6140 For Linux, add strict-aliasing=0 for gcc 4 6141 Cleanup and simplify use of command line defines 6142 Cleanup multithread library support 6143 Improve usage messages 6144 6145Linux-specific header: update handling of THREAD_ID and pthread. For the 614632- 6147bit case, improve casting to eliminate possible warnings, especially with 6148the 6149acpica tools. 6150 6151Example Code and Data Size: These are the sizes for the OS-independent 6152acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6153debug 6154version of the code includes the debug output trace mechanism and has a 6155much 6156larger code and data size. 6157 6158 Previous Release (VC 9.0): 6159 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 6160 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6161 Current Release (VC 9.0): 6162 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 6163 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6164 61652) iASL Compiler/Disassembler and Tools: 6166 6167With this release, a new utility named "acpihelp" has been added to the 6168ACPICA 6169package. This utility summarizes the ACPI specification chapters for the 6170ASL 6171and AML languages. It generates under Linux/Unix as well as Windows, and 6172provides the following functionality: 6173 Find/display ASL operator(s) -- with description and syntax. 6174 Find/display ASL keyword(s) -- with exact spelling and descriptions. 6175 Find/display ACPI predefined name(s) -- with description, number 6176 of arguments, and the return value data type. 6177 Find/display AML opcode name(s) -- with opcode, arguments, and 6178grammar. 6179 Decode/display AML opcode -- with opcode name, arguments, and 6180grammar. 6181 6182Service Layers: Make multi-thread support configurable. Conditionally 6183compile 6184the multi-thread support so that threading libraries will not be linked 6185if 6186not 6187necessary. The only tool that requires multi-thread support is AcpiExec. 6188 6189iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 6190of 6191Bison appear to want the interface to yyerror to be a const char * (or at 6192least this is a problem when generating iASL on some systems.) ACPICA BZ 6193923 6194Pierre Lejeune. 6195 6196Tools: Fix for systems where O_BINARY is not defined. Only used for 6197Windows 6198versions of the tools. 6199 6200---------------------------------------- 620127 May 2011. Summary of changes for version 20110527: 6202 62031) ACPI CA Core Subsystem: 6204 6205ASL Load() operator: Reinstate most restrictions on the incoming ACPI 6206table 6207signature. Now, only allow SSDT, OEMx, and a null signature. History: 6208 1) Originally, we checked the table signature for "SSDT" or "PSDT". 6209 (PSDT is now obsolete.) 6210 2) We added support for OEMx tables, signature "OEM" plus a fourth 6211 "don't care" character. 6212 3) Valid tables were encountered with a null signature, so we just 6213 gave up on validating the signature, (05/2008). 6214 4) We encountered non-AML tables such as the MADT, which caused 6215 interpreter errors and kernel faults. So now, we once again allow 6216 only SSDT, OEMx, and now, also a null signature. (05/2011). 6217 6218Added the missing _TDL predefined name to the global name list in order 6219to 6220enable validation. Affects both the core ACPICA code and the iASL 6221compiler. 6222 6223Example Code and Data Size: These are the sizes for the OS-independent 6224acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6225debug 6226version of the code includes the debug output trace mechanism and has a 6227much 6228larger code and data size. 6229 6230 Previous Release (VC 9.0): 6231 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 6232 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 6233 Current Release (VC 9.0): 6234 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 6235 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 6236 62372) iASL Compiler/Disassembler and Tools: 6238 6239Debugger/AcpiExec: Implemented support for "complex" method arguments on 6240the 6241debugger command line. This adds support beyond simple integers -- 6242including 6243Strings, Buffers, and Packages. Includes support for nested packages. 6244Increased the default command line buffer size to accommodate these 6245arguments. 6246See the ACPICA reference for details and syntax. ACPICA BZ 917. 6247 6248Debugger/AcpiExec: Implemented support for "default" method arguments for 6249the 6250Execute/Debug command. Now, the debugger will always invoke a control 6251method 6252with the required number of arguments -- even if the command line 6253specifies 6254none or insufficient arguments. It uses default integer values for any 6255missing 6256arguments. Also fixes a bug where only six method arguments maximum were 6257supported instead of the required seven. 6258 6259Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 6260and 6261also return status in order to prevent buffer overruns. See the ACPICA 6262reference for details and syntax. ACPICA BZ 921 6263 6264iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 6265makefiles to simplify support for the two different but similar parser 6266generators, bison and yacc. 6267 6268Updated the generic unix makefile for gcc 4. The default gcc version is 6269now 6270expected to be 4 or greater, since options specific to gcc 4 are used. 6271 6272---------------------------------------- 627313 April 2011. Summary of changes for version 20110413: 6274 62751) ACPI CA Core Subsystem: 6276 6277Implemented support to execute a so-called "orphan" _REG method under the 6278EC 6279device. This change will force the execution of a _REG method underneath 6280the 6281EC 6282device even if there is no corresponding operation region of type 6283EmbeddedControl. Fixes a problem seen on some machines and apparently is 6284compatible with Windows behavior. ACPICA BZ 875. 6285 6286Added more predefined methods that are eligible for automatic NULL 6287package 6288element removal. This change adds another group of predefined names to 6289the 6290list 6291of names that can be repaired by having NULL package elements dynamically 6292removed. This group are those methods that return a single variable- 6293length 6294package containing simple data types such as integers, buffers, strings. 6295This 6296includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 6297_PSL, 6298_Sx, 6299and _TZD. ACPICA BZ 914. 6300 6301Split and segregated all internal global lock functions to a new file, 6302evglock.c. 6303 6304Updated internal address SpaceID for DataTable regions. Moved this 6305internal 6306space 6307id in preparation for ACPI 5.0 changes that will include some new space 6308IDs. 6309This 6310change should not affect user/host code. 6311 6312Example Code and Data Size: These are the sizes for the OS-independent 6313acpica.lib 6314produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 6315version of 6316the code includes the debug output trace mechanism and has a much larger 6317code 6318and 6319data size. 6320 6321 Previous Release (VC 9.0): 6322 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 6323 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 6324 Current Release (VC 9.0): 6325 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 6326 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 6327 63282) iASL Compiler/Disassembler and Tools: 6329 6330iASL/DTC: Major update for new grammar features. Allow generic data types 6331in 6332custom ACPI tables. Field names are now optional. Any line can be split 6333to 6334multiple lines using the continuation char (\). Large buffers now use 6335line- 6336continuation character(s) and no colon on the continuation lines. See the 6337grammar 6338update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 6339Moore. 6340 6341iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 6342statements. 6343Since the parser stuffs a "zero" as the return value for these statements 6344(due 6345to 6346the underlying AML grammar), they were seen as "return with value" by the 6347iASL 6348semantic checking. They are now seen correctly as "null" return 6349statements. 6350 6351iASL: Check if a_REG declaration has a corresponding Operation Region. 6352Adds a 6353check for each _REG to ensure that there is in fact a corresponding 6354operation 6355region declaration in the same scope. If not, the _REG method is not very 6356useful 6357since it probably won't be executed. ACPICA BZ 915. 6358 6359iASL/DTC: Finish support for expression evaluation. Added a new 6360expression 6361parser 6362that implements c-style operator precedence and parenthesization. ACPICA 6363bugzilla 6364908. 6365 6366Disassembler/DTC: Remove support for () and <> style comments in data 6367tables. 6368Now 6369that DTC has full expression support, we don't want to have comment 6370strings 6371that 6372start with a parentheses or a less-than symbol. Now, only the standard /* 6373and 6374// 6375comments are supported, as well as the bracket [] comments. 6376 6377AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 6378"unusual" 6379headers in the acpidump file. Update the header validation to support 6380these 6381tables. Problem introduced in previous AcpiXtract version in the change 6382to 6383support "wrong checksum" error messages emitted by acpidump utility. 6384 6385iASL: Add a * option to generate all template files (as a synonym for 6386ALL) 6387as 6388in 6389"iasl -T *" or "iasl -T ALL". 6390 6391iASL/DTC: Do not abort compiler on fatal errors. We do not want to 6392completely 6393abort the compiler on "fatal" errors, simply should abort the current 6394compile. 6395This allows multiple compiles with a single (possibly wildcard) compiler 6396invocation. 6397 6398---------------------------------------- 639916 March 2011. Summary of changes for version 20110316: 6400 64011) ACPI CA Core Subsystem: 6402 6403Fixed a problem caused by a _PRW method appearing at the namespace root 6404scope 6405during the setup of wake GPEs. A fault could occur if a _PRW directly 6406under 6407the 6408root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 6409 6410Implemented support for "spurious" Global Lock interrupts. On some 6411systems, a 6412global lock interrupt can occur without the pending flag being set. Upon 6413a 6414GL 6415interrupt, we now ensure that a thread is actually waiting for the lock 6416before 6417signaling GL availability. Rafael Wysocki, Bob Moore. 6418 6419Example Code and Data Size: These are the sizes for the OS-independent 6420acpica.lib 6421produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 6422version of 6423the code includes the debug output trace mechanism and has a much larger 6424code 6425and 6426data size. 6427 6428 Previous Release (VC 9.0): 6429 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6430 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6431 Current Release (VC 9.0): 6432 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 6433 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 6434 64352) iASL Compiler/Disassembler and Tools: 6436 6437Implemented full support for the "SLIC" ACPI table. Includes support in 6438the 6439header files, disassembler, table compiler, and template generator. Bob 6440Moore, 6441Lin Ming. 6442 6443AcpiXtract: Correctly handle embedded comments and messages from 6444AcpiDump. 6445Apparently some or all versions of acpidump will occasionally emit a 6446comment 6447like 6448"Wrong checksum", etc., into the dump file. This was causing problems for 6449AcpiXtract. ACPICA BZ 905. 6450 6451iASL: Fix the Linux makefile by removing an inadvertent double file 6452inclusion. 6453ACPICA BZ 913. 6454 6455AcpiExec: Update installation of operation region handlers. Install one 6456handler 6457for a user-defined address space. This is used by the ASL test suite 6458(ASLTS). 6459 6460---------------------------------------- 646111 February 2011. Summary of changes for version 20110211: 6462 64631) ACPI CA Core Subsystem: 6464 6465Added a mechanism to defer _REG methods for some early-installed 6466handlers. 6467Most user handlers should be installed before call to 6468AcpiEnableSubsystem. 6469However, Event handlers and region handlers should be installed after 6470AcpiInitializeObjects. Override handlers for the "default" regions should 6471be 6472installed early, however. This change executes all _REG methods for the 6473default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 6474chicken/egg issues between them. ACPICA BZ 848. 6475 6476Implemented an optimization for GPE detection. This optimization will 6477simply 6478ignore GPE registers that contain no enabled GPEs -- there is no need to 6479read the register since this information is available internally. This 6480becomes more important on machines with a large GPE space. ACPICA 6481bugzilla 6482884. Lin Ming. Suggestion from Joe Liu. 6483 6484Removed all use of the highly unreliable FADT revision field. The 6485revision 6486number in the FADT has been found to be completely unreliable and cannot 6487be 6488trusted. Only the actual table length can be used to infer the version. 6489This 6490change updates the ACPICA core and the disassembler so that both no 6491longer 6492even look at the FADT version and instead depend solely upon the FADT 6493length. 6494 6495Fix an unresolved name issue for the no-debug and no-error-message source 6496generation cases. The _AcpiModuleName was left undefined in these cases, 6497but 6498it is actually needed as a parameter to some interfaces. Define 6499_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 6500 6501Split several large files (makefiles and project files updated) 6502 utglobal.c -> utdecode.c 6503 dbcomds.c -> dbmethod.c dbnames.c 6504 dsopcode.c -> dsargs.c dscontrol.c 6505 dsload.c -> dsload2.c 6506 aslanalyze.c -> aslbtypes.c aslwalks.c 6507 6508Example Code and Data Size: These are the sizes for the OS-independent 6509acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 6510debug version of the code includes the debug output trace mechanism and 6511has 6512a much larger code and data size. 6513 6514 Previous Release (VC 9.0): 6515 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6516 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6517 Current Release (VC 9.0): 6518 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6519 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6520 65212) iASL Compiler/Disassembler and Tools: 6522 6523iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 6524These are useful C-style macros with the standard definitions. ACPICA 6525bugzilla 898. 6526 6527iASL/DTC: Added support for integer expressions and labels. Support for 6528full 6529expressions for all integer fields in all ACPI tables. Support for labels 6530in 6531"generic" portions of tables such as UEFI. See the iASL reference manual. 6532 6533Debugger: Added a command to display the status of global handlers. The 6534"handlers" command will display op region, fixed event, and miscellaneous 6535global handlers. installation status -- and for op regions, whether 6536default 6537or user-installed handler will be used. 6538 6539iASL: Warn if reserved method incorrectly returns a value. Many 6540predefined 6541names are defined such that they do not return a value. If implemented as 6542a 6543method, issue a warning if such a name explicitly returns a value. ACPICA 6544Bugzilla 855. 6545 6546iASL: Added detection of GPE method name conflicts. Detects a conflict 6547where 6548there are two GPE methods of the form _Lxy and _Exy in the same scope. 6549(For 6550example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 6551 6552iASL/DTC: Fixed a couple input scanner issues with comments and line 6553numbers. Comment remover could get confused and miss a comment ending. 6554Fixed 6555a problem with line counter maintenance. 6556 6557iASL/DTC: Reduced the severity of some errors from fatal to error. There 6558is 6559no need to abort on simple errors within a field definition. 6560 6561Debugger: Simplified the output of the help command. All help output now 6562in 6563a single screen, instead of help subcommands. ACPICA Bugzilla 897. 6564 6565---------------------------------------- 656612 January 2011. Summary of changes for version 20110112: 6567 65681) ACPI CA Core Subsystem: 6569 6570Fixed a race condition between method execution and namespace walks that 6571can 6572possibly cause a fault. The problem was apparently introduced in version 657320100528 as a result of a performance optimization that reduces the 6574number 6575of 6576namespace walks upon method exit by using the delete_namespace_subtree 6577function instead of the delete_namespace_by_owner function used 6578previously. 6579Bug is a missing namespace lock in the delete_namespace_subtree function. 6580dana.myers@oracle.com 6581 6582Fixed several issues and a possible fault with the automatic "serialized" 6583method support. History: This support changes a method to "serialized" on 6584the 6585fly if the method generates an AE_ALREADY_EXISTS error, indicating the 6586possibility that it cannot handle reentrancy. This fix repairs a couple 6587of 6588issues seen in the field, especially on machines with many cores: 6589 6590 1) Delete method children only upon the exit of the last thread, 6591 so as to not delete objects out from under other running threads 6592 (and possibly causing a fault.) 6593 2) Set the "serialized" bit for the method only upon the exit of the 6594 Last thread, so as to not cause deadlock when running threads 6595 attempt to exit. 6596 3) Cleanup the use of the AML "MethodFlags" and internal method flags 6597 so that there is no longer any confusion between the two. 6598 6599 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 6600 6601Debugger: Now lock the namespace for duration of a namespace dump. 6602Prevents 6603issues if the namespace is changing dynamically underneath the debugger. 6604Especially affects temporary namespace nodes, since the debugger displays 6605these also. 6606 6607Updated the ordering of include files. The ACPICA headers should appear 6608before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 6609set 6610any necessary compiler-specific defines, etc. Affects the ACPI-related 6611tools 6612and utilities. 6613 6614Updated all ACPICA copyrights and signons to 2011. Added the 2011 6615copyright 6616to all module headers and signons, including the Linux header. This 6617affects 6618virtually every file in the ACPICA core subsystem, iASL compiler, and all 6619utilities. 6620 6621Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 6622project files for VC++ 6.0 are now obsolete. New project files can be 6623found 6624under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 6625details. 6626 6627Example Code and Data Size: These are the sizes for the OS-independent 6628acpica.lib produced by the Microsoft Visual C++ 9.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 (VC 6.0): 6634 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 6635 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 6636 Current Release (VC 9.0): 6637 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 6638 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 6639 66402) iASL Compiler/Disassembler and Tools: 6641 6642iASL: Added generic data types to the Data Table compiler. Add "generic" 6643data 6644types such as UINT32, String, Unicode, etc., to simplify the generation 6645of 6646platform-defined tables such as UEFI. Lin Ming. 6647 6648iASL: Added listing support for the Data Table Compiler. Adds listing 6649support 6650(-l) to display actual binary output for each line of input code. 6651 6652---------------------------------------- 665309 December 2010. Summary of changes for version 20101209: 6654 66551) ACPI CA Core Subsystem: 6656 6657Completed the major overhaul of the GPE support code that was begun in 6658July 66592010. Major features include: removal of _PRW execution in ACPICA (host 6660executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 6661changes to existing interfaces, simplification of GPE handler operation, 6662and 6663a handful of new interfaces: 6664 6665 AcpiUpdateAllGpes 6666 AcpiFinishGpe 6667 AcpiSetupGpeForWake 6668 AcpiSetGpeWakeMask 6669 One new file, evxfgpe.c to consolidate all external GPE interfaces. 6670 6671See the ACPICA Programmer Reference for full details and programming 6672information. See the new section 4.4 "General Purpose Event (GPE) 6673Support" 6674for a full overview, and section 8.7 "ACPI General Purpose Event 6675Management" 6676for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 6677Ming, 6678Bob Moore, Rafael Wysocki. 6679 6680Implemented a new GPE feature for Windows compatibility, the "Implicit 6681Wake 6682GPE Notify". This feature will automatically issue a Notify(2) on a 6683device 6684when a Wake GPE is received if there is no corresponding GPE method or 6685handler. ACPICA BZ 870. 6686 6687Fixed a problem with the Scope() operator during table parse and load 6688phase. 6689During load phase (table load or method execution), the scope operator 6690should 6691not enter the target into the namespace. Instead, it should open a new 6692scope 6693at the target location. Linux BZ 19462, ACPICA BZ 882. 6694 6695Example Code and Data Size: These are the sizes for the OS-independent 6696acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6697debug version of the code includes the debug output trace mechanism and 6698has a 6699much larger code and data size. 6700 6701 Previous Release: 6702 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 6703 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 6704 Current Release: 6705 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6706 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6707 67082) iASL Compiler/Disassembler and Tools: 6709 6710iASL: Relax the alphanumeric restriction on _CID strings. These strings 6711are 6712"bus-specific" per the ACPI specification, and therefore any characters 6713are 6714acceptable. The only checks that can be performed are for a null string 6715and 6716perhaps for a leading asterisk. ACPICA BZ 886. 6717 6718iASL: Fixed a problem where a syntax error that caused a premature EOF 6719condition on the source file emitted a very confusing error message. The 6720premature EOF is now detected correctly. ACPICA BZ 891. 6721 6722Disassembler: Decode the AccessSize within a Generic Address Structure 6723(byte 6724access, word access, etc.) Note, this field does not allow arbitrary bit 6725access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 6726 6727New: AcpiNames utility - Example namespace dump utility. Shows an example 6728of 6729ACPICA configuration for a minimal namespace dump utility. Uses table and 6730namespace managers, but no AML interpreter. Does not add any 6731functionality 6732over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 6733partition and configure ACPICA. ACPICA BZ 883. 6734 6735AML Debugger: Increased the debugger buffer size for method return 6736objects. 6737Was 4K, increased to 16K. Also enhanced error messages for debugger 6738method 6739execution, including the buffer overflow case. 6740 6741---------------------------------------- 674213 October 2010. Summary of changes for version 20101013: 6743 67441) ACPI CA Core Subsystem: 6745 6746Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 6747now 6748clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 6749HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 6750 6751Changed the type of the predefined namespace object _TZ from ThermalZone 6752to 6753Device. This was found to be confusing to the host software that 6754processes 6755the various thermal zones, since _TZ is not really a ThermalZone. 6756However, 6757a 6758Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 6759Zhang. 6760 6761Added Windows Vista SP2 to the list of supported _OSI strings. The actual 6762string is "Windows 2006 SP2". 6763 6764Eliminated duplicate code in AcpiUtExecute* functions. Now that the 6765nsrepair 6766code automatically repairs _HID-related strings, this type of code is no 6767longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 6768878. 6769 6770Example Code and Data Size: These are the sizes for the OS-independent 6771acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6772debug version of the code includes the debug output trace mechanism and 6773has a 6774much larger code and data size. 6775 6776 Previous Release: 6777 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6778 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6779 Current Release: 6780 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6781 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6782 67832) iASL Compiler/Disassembler and Tools: 6784 6785iASL: Implemented additional compile-time validation for _HID strings. 6786The 6787non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 6788length 6789of 6790the string must be exactly seven or eight characters. For both _HID and 6791_CID 6792strings, all characters must be alphanumeric. ACPICA BZ 874. 6793 6794iASL: Allow certain "null" resource descriptors. Some BIOS code creates 6795descriptors that are mostly or all zeros, with the expectation that they 6796will 6797be filled in at runtime. iASL now allows this as long as there is a 6798"resource 6799tag" (name) associated with the descriptor, which gives the ASL a handle 6800needed to modify the descriptor. ACPICA BZ 873. 6801 6802Added single-thread support to the generic Unix application OSL. 6803Primarily 6804for iASL support, this change removes the use of semaphores in the 6805single- 6806threaded ACPICA tools/applications - increasing performance. The 6807_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 6808option. ACPICA BZ 879. 6809 6810AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 6811support 6812for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 6813 6814iASL: Moved all compiler messages to a new file, aslmessages.h. 6815 6816---------------------------------------- 681715 September 2010. Summary of changes for version 20100915: 6818 68191) ACPI CA Core Subsystem: 6820 6821Removed the AcpiOsDerivePciId OSL interface. The various host 6822implementations 6823of this function were not OS-dependent and are now obsolete and can be 6824removed from all host OSLs. This function has been replaced by 6825AcpiHwDerivePciId, which is now part of the ACPICA core code. 6826AcpiHwDerivePciId has been implemented without recursion. Adds one new 6827module, hwpci.c. ACPICA BZ 857. 6828 6829Implemented a dynamic repair for _HID and _CID strings. The following 6830problems are now repaired at runtime: 1) Remove a leading asterisk in the 6831string, and 2) the entire string is uppercased. Both repairs are in 6832accordance with the ACPI specification and will simplify host driver 6833code. 6834ACPICA BZ 871. 6835 6836The ACPI_THREAD_ID type is no longer configurable, internally it is now 6837always UINT64. This simplifies the ACPICA code, especially any printf 6838output. 6839UINT64 is the only common data type for all thread_id types across all 6840operating systems. It is now up to the host OSL to cast the native 6841thread_id 6842type to UINT64 before returning the value to ACPICA (via 6843AcpiOsGetThreadId). 6844Lin Ming, Bob Moore. 6845 6846Added the ACPI_INLINE type to enhance the ACPICA configuration. The 6847"inline" 6848keyword is not standard across compilers, and this type allows inline to 6849be 6850configured on a per-compiler basis. Lin Ming. 6851 6852Made the system global AcpiGbl_SystemAwakeAndRunning publicly 6853available. 6854Added an extern for this boolean in acpixf.h. Some hosts utilize this 6855value 6856during suspend/restore operations. ACPICA BZ 869. 6857 6858All code that implements error/warning messages with the "ACPI:" prefix 6859has 6860been moved to a new module, utxferror.c. 6861 6862The UINT64_OVERLAY was moved to utmath.c, which is the only module where 6863it 6864is used. ACPICA BZ 829. Lin Ming, Bob Moore. 6865 6866Example Code and Data Size: These are the sizes for the OS-independent 6867acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6868debug version of the code includes the debug output trace mechanism and 6869has a 6870much larger code and data size. 6871 6872 Previous Release: 6873 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 6874 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 6875 Current Release: 6876 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 6877 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 6878 68792) iASL Compiler/Disassembler and Tools: 6880 6881iASL/Disassembler: Write ACPI errors to stderr instead of the output 6882file. 6883This keeps the output files free of random error messages that may 6884originate 6885from within the namespace/interpreter code. Used this opportunity to 6886merge 6887all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 6888866. Lin Ming, Bob Moore. 6889 6890Tools: update some printfs for ansi warnings on size_t. Handle width 6891change 6892of size_t on 32-bit versus 64-bit generations. Lin Ming. 6893 6894---------------------------------------- 689506 August 2010. Summary of changes for version 20100806: 6896 68971) ACPI CA Core Subsystem: 6898 6899Designed and implemented a new host interface to the _OSI support code. 6900This 6901will allow the host to dynamically add or remove multiple _OSI strings, 6902as 6903well as install an optional handler that is called for each _OSI 6904invocation. 6905Also added a new AML debugger command, 'osi' to display and modify the 6906global 6907_OSI string table, and test support in the AcpiExec utility. See the 6908ACPICA 6909reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 6910New Functions: 6911 AcpiInstallInterface - Add an _OSI string. 6912 AcpiRemoveInterface - Delete an _OSI string. 6913 AcpiInstallInterfaceHandler - Install optional _OSI handler. 6914Obsolete Functions: 6915 AcpiOsValidateInterface - no longer used. 6916New Files: 6917 source/components/utilities/utosi.c 6918 6919Re-introduced the support to enable multi-byte transfers for Embedded 6920Controller (EC) operation regions. A reported problem was found to be a 6921bug 6922in the host OS, not in the multi-byte support. Previously, the maximum 6923data 6924size passed to the EC operation region handler was a single byte. There 6925are 6926often EC Fields larger than one byte that need to be transferred, and it 6927is 6928useful for the EC driver to lock these as a single transaction. This 6929change 6930enables single transfers larger than 8 bits. This effectively changes the 6931access to the EC space from ByteAcc to AnyAcc, and will probably require 6932changes to the host OS Embedded Controller driver to enable 16/32/64/256- 6933bit 6934transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 6935 6936Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 6937prototype in acpiosxf.h had the output value pointer as a (void *). 6938It should be a (UINT64 *). This may affect some host OSL code. 6939 6940Fixed a couple problems with the recently modified Linux makefiles for 6941iASL 6942and AcpiExec. These new makefiles place the generated object files in the 6943local directory so that there can be no collisions between the files that 6944are 6945shared between them that are compiled with different options. 6946 6947Example Code and Data Size: These are the sizes for the OS-independent 6948acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6949debug version of the code includes the debug output trace mechanism and 6950has a 6951much larger code and data size. 6952 6953 Previous Release: 6954 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6955 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 6956 Current Release: 6957 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 6958 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 6959 69602) iASL Compiler/Disassembler and Tools: 6961 6962iASL/Disassembler: Added a new option (-da, "disassemble all") to load 6963the 6964namespace from and disassemble an entire group of AML files. Useful for 6965loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 6966and 6967disassembling with one simple command. ACPICA BZ 865. Lin Ming. 6968 6969iASL: Allow multiple invocations of -e option. This change allows 6970multiple 6971uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 6972834. 6973Lin Ming. 6974 6975---------------------------------------- 697602 July 2010. Summary of changes for version 20100702: 6977 69781) ACPI CA Core Subsystem: 6979 6980Implemented several updates to the recently added GPE reference count 6981support. The model for "wake" GPEs is changing to give the host OS 6982complete 6983control of these GPEs. Eventually, the ACPICA core will not execute any 6984_PRW 6985methods, since the host already must execute them. Also, additional 6986changes 6987were made to help ensure that the reference counts are kept in proper 6988synchronization with reality. Rafael J. Wysocki. 6989 69901) Ensure that GPEs are not enabled twice during initialization. 69912) Ensure that GPE enable masks stay in sync with the reference count. 69923) Do not inadvertently enable GPEs when writing GPE registers. 69934) Remove the internal wake reference counter and add new AcpiGpeWakeup 6994interface. This interface will set or clear individual GPEs for wakeup. 69955) Remove GpeType argument from AcpiEnable and AcpiDisable. These 6996interfaces 6997are now used for "runtime" GPEs only. 6998 6999Changed the behavior of the GPE install/remove handler interfaces. The 7000GPE 7001is 7002no longer disabled during this process, as it was found to cause problems 7003on 7004some machines. Rafael J. Wysocki. 7005 7006Reverted a change introduced in version 20100528 to enable Embedded 7007Controller multi-byte transfers. This change was found to cause problems 7008with 7009Index Fields and possibly Bank Fields. It will be reintroduced when these 7010problems have been resolved. 7011 7012Fixed a problem with references to Alias objects within Package Objects. 7013A 7014reference to an Alias within the definition of a Package was not always 7015resolved properly. Aliases to objects like Processors, Thermal zones, 7016etc. 7017were resolved to the actual object instead of a reference to the object 7018as 7019it 7020should be. Package objects are only allowed to contain integer, string, 7021buffer, package, and reference objects. Redhat bugzilla 608648. 7022 7023Example Code and Data Size: These are the sizes for the OS-independent 7024acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7025debug version of the code includes the debug output trace mechanism and 7026has a 7027much larger code and data size. 7028 7029 Previous Release: 7030 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7031 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 7032 Current Release: 7033 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7034 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 7035 70362) iASL Compiler/Disassembler and Tools: 7037 7038iASL: Implemented a new compiler subsystem to allow definition and 7039compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 7040These 7041are called "ACPI Data Tables", and the new compiler is the "Data Table 7042Compiler". This compiler is intended to simplify the existing error-prone 7043process of creating these tables for the BIOS, as well as allowing the 7044disassembly, modification, recompilation, and override of existing ACPI 7045data 7046tables. See the iASL User Guide for detailed information. 7047 7048iASL: Implemented a new Template Generator option in support of the new 7049Data 7050Table Compiler. This option will create examples of all known ACPI tables 7051that can be used as the basis for table development. See the iASL 7052documentation and the -T option. 7053 7054Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 7055Descriptor Table). 7056 7057Updated the Linux makefiles for iASL and AcpiExec to place the generated 7058object files in the local directory so that there can be no collisions 7059between the shared files between them that are generated with different 7060options. 7061 7062Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 7063Use 7064the #define __APPLE__ to enable this support. 7065 7066---------------------------------------- 706728 May 2010. Summary of changes for version 20100528: 7068 7069Note: The ACPI 4.0a specification was released on April 5, 2010 and is 7070available at www.acpi.info. This is primarily an errata release. 7071 70721) ACPI CA Core Subsystem: 7073 7074Undefined ACPI tables: We are looking for the definitions for the 7075following 7076ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 7077 7078Implemented support to enable multi-byte transfers for Embedded 7079Controller 7080(EC) operation regions. Previously, the maximum data size passed to the 7081EC 7082operation region handler was a single byte. There are often EC Fields 7083larger 7084than one byte that need to be transferred, and it is useful for the EC 7085driver 7086to lock these as a single transaction. This change enables single 7087transfers 7088larger than 8 bits. This effectively changes the access to the EC space 7089from 7090ByteAcc to AnyAcc, and will probably require changes to the host OS 7091Embedded 7092Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 7093bit 7094transfers. Alexey Starikovskiy, Lin Ming 7095 7096Implemented a performance enhancement for namespace search and access. 7097This 7098change enhances the performance of namespace searches and walks by adding 7099a 7100backpointer to the parent in each namespace node. On large namespaces, 7101this 7102change can improve overall ACPI performance by up to 9X. Adding a pointer 7103to 7104each namespace node increases the overall size of the internal namespace 7105by 7106about 5%, since each namespace entry usually consists of both a namespace 7107node and an ACPI operand object. However, this is the first growth of the 7108namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 7109 7110Implemented a performance optimization that reduces the number of 7111namespace 7112walks. On control method exit, only walk the namespace if the method is 7113known 7114to have created namespace objects outside of its local scope. Previously, 7115the 7116entire namespace was traversed on each control method exit. This change 7117can 7118improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 7119Moore. 7120 7121Added support to truncate I/O addresses to 16 bits for Windows 7122compatibility. 7123Some ASL code has been seen in the field that inadvertently has bits set 7124above bit 15. This feature is optional and is enabled if the BIOS 7125requests 7126any Windows OSI strings. It can also be enabled by the host OS. Matthew 7127Garrett, Bob Moore. 7128 7129Added support to limit the maximum time for the ASL Sleep() operator. To 7130prevent accidental deep sleeps, limit the maximum time that Sleep() will 7131actually sleep. Configurable, the default maximum is two seconds. ACPICA 7132bugzilla 854. 7133 7134Added run-time validation support for the _WDG and_WED Microsoft 7135predefined 7136methods. These objects are defined by "Windows Instrumentation", and are 7137not 7138part of the ACPI spec. ACPICA BZ 860. 7139 7140Expanded all statistic counters used during namespace and device 7141initialization from 16 to 32 bits in order to support very large 7142namespaces. 7143 7144Replaced all instances of %d in printf format specifiers with %u since 7145nearly 7146all integers in ACPICA are unsigned. 7147 7148Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 7149returned 7150as AE_NO_HANDLER. 7151 7152Example Code and Data Size: These are the sizes for the OS-independent 7153acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7154debug version of the code includes the debug output trace mechanism and 7155has a 7156much larger code and data size. 7157 7158 Previous Release: 7159 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 7160 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 7161 Current Release: 7162 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 7163 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 7164 71652) iASL Compiler/Disassembler and Tools: 7166 7167iASL: Added compiler support for the _WDG and_WED Microsoft predefined 7168methods. These objects are defined by "Windows Instrumentation", and are 7169not 7170part of the ACPI spec. ACPICA BZ 860. 7171 7172AcpiExec: added option to disable the memory tracking mechanism. The -dt 7173option will disable the tracking mechanism, which improves performance 7174considerably. 7175 7176AcpiExec: Restructured the command line options into -d (disable) and -e 7177(enable) options. 7178 7179---------------------------------------- 718028 April 2010. Summary of changes for version 20100428: 7181 71821) ACPI CA Core Subsystem: 7183 7184Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 7185including FADT-based and GPE Block Devices, execute any _PRW methods in 7186the 7187new table, and process any _Lxx/_Exx GPE methods in the new table. Any 7188runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 7189immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 7190Devices. Provides compatibility with other ACPI implementations. Two new 7191files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 7192Moore. 7193 7194Fixed a regression introduced in version 20100331 within the table 7195manager 7196where initial table loading could fail. This was introduced in the fix 7197for 7198AcpiReallocateRootTable. Also, renamed some of fields in the table 7199manager 7200data structures to clarify their meaning and use. 7201 7202Fixed a possible allocation overrun during internal object copy in 7203AcpiUtCopySimpleObject. The original code did not correctly handle the 7204case 7205where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 7206847. 7207 7208Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 7209possible access beyond end-of-allocation. Also, now fully validate 7210descriptor 7211(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 7212 7213Example Code and Data Size: These are the sizes for the OS-independent 7214acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7215debug version of the code includes the debug output trace mechanism and 7216has a 7217much larger code and data size. 7218 7219 Previous Release: 7220 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 7221 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 7222 Current Release: 7223 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 7224 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 7225 72262) iASL Compiler/Disassembler and Tools: 7227 7228iASL: Implemented Min/Max/Len/Gran validation for address resource 7229descriptors. This change implements validation for the address fields 7230that 7231are common to all address-type resource descriptors. These checks are 7232implemented: Checks for valid Min/Max, length within the Min/Max window, 7233valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 7234per 7235table 6-40 in the ACPI 4.0a specification. Also split the large 7236aslrestype1.c 7237and aslrestype2.c files into five new files. ACPICA BZ 840. 7238 7239iASL: Added support for the _Wxx predefined names. This support was 7240missing 7241and these names were not recognized by the compiler as valid predefined 7242names. ACPICA BZ 851. 7243 7244iASL: Added an error for all predefined names that are defined to return 7245no 7246value and thus must be implemented as Control Methods. These include all 7247of 7248the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 7249names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 7250 7251iASL: Implemented the -ts option to emit hex AML data in ASL format, as 7252an 7253ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 7254be 7255dynamically loaded via the Load() operator. Also cleaned up output for 7256the 7257- 7258ta and -tc options. ACPICA BZ 853. 7259 7260Tests: Added a new file with examples of extended iASL error checking. 7261Demonstrates the advanced error checking ability of the iASL compiler. 7262Available at tests/misc/badcode.asl. 7263 7264---------------------------------------- 726531 March 2010. Summary of changes for version 20100331: 7266 72671) ACPI CA Core Subsystem: 7268 7269Completed a major update for the GPE support in order to improve support 7270for 7271shared GPEs and to simplify both host OS and ACPICA code. Added a 7272reference 7273count mechanism to support shared GPEs that require multiple device 7274drivers. 7275Several external interfaces have changed. One external interface has been 7276removed. One new external interface was added. Most of the GPE external 7277interfaces now use the GPE spinlock instead of the events mutex (and the 7278Flags parameter for many GPE interfaces has been removed.) See the 7279updated 7280ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 7281Rafael 7282Wysocki. ACPICA BZ 831. 7283 7284Changed: 7285 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 7286Removed: 7287 AcpiSetGpeType 7288New: 7289 AcpiSetGpe 7290 7291Implemented write support for DataTable operation regions. These regions 7292are 7293defined via the DataTableRegion() operator. Previously, only read support 7294was 7295implemented. The ACPI specification allows DataTableRegions to be 7296read/write, 7297however. 7298 7299Implemented a new subsystem option to force a copy of the DSDT to local 7300memory. Optionally copy the entire DSDT to local memory (instead of 7301simply 7302mapping it.) There are some (albeit very rare) BIOSs that corrupt or 7303replace 7304the original DSDT, creating the need for this option. Default is FALSE, 7305do 7306not copy the DSDT. 7307 7308Implemented detection of a corrupted or replaced DSDT. This change adds 7309support to detect a DSDT that has been corrupted and/or replaced from 7310outside 7311the OS (by firmware). This is typically catastrophic for the system, but 7312has 7313been seen on some machines. Once this problem has been detected, the DSDT 7314copy option can be enabled via system configuration. Lin Ming, Bob Moore. 7315 7316Fixed two problems with AcpiReallocateRootTable during the root table 7317copy. 7318When copying the root table to the new allocation, the length used was 7319incorrect. The new size was used instead of the current table size, 7320meaning 7321too much data was copied. Also, the count of available slots for ACPI 7322tables 7323was not set correctly. Alexey Starikovskiy, Bob Moore. 7324 7325Example Code and Data Size: These are the sizes for the OS-independent 7326acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7327debug version of the code includes the debug output trace mechanism and 7328has a 7329much larger code and data size. 7330 7331 Previous Release: 7332 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 7333 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 7334 Current Release: 7335 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 7336 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 7337 73382) iASL Compiler/Disassembler and Tools: 7339 7340iASL: Implement limited typechecking for values returned from predefined 7341control methods. The type of any returned static (unnamed) object is now 7342validated. For example, Return(1). ACPICA BZ 786. 7343 7344iASL: Fixed a predefined name object verification regression. Fixes a 7345problem 7346introduced in version 20100304. An error is incorrectly generated if a 7347predefined name is declared as a static named object with a value defined 7348using the keywords "Zero", "One", or "Ones". Lin Ming. 7349 7350iASL: Added Windows 7 support for the -g option (get local ACPI tables) 7351by 7352reducing the requested registry access rights. ACPICA BZ 842. 7353 7354Disassembler: fixed a possible fault when generating External() 7355statements. 7356Introduced in commit ae7d6fd: Properly handle externals with parent- 7357prefix 7358(carat). Fixes a string length allocation calculation. Lin Ming. 7359 7360---------------------------------------- 736104 March 2010. Summary of changes for version 20100304: 7362 73631) ACPI CA Core Subsystem: 7364 7365Fixed a possible problem with the AML Mutex handling function 7366AcpiExReleaseMutex where the function could fault under the very rare 7367condition when the interpreter has blocked, the interpreter lock is 7368released, 7369the interpreter is then reentered via the same thread, and attempts to 7370acquire an AML mutex that was previously acquired. FreeBSD report 140979. 7371Lin 7372Ming. 7373 7374Implemented additional configuration support for the AML "Debug Object". 7375Output from the debug object can now be enabled via a global variable, 7376AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 7377debugging. 7378This debug output is now available in the release version of ACPICA 7379instead 7380of just the debug version. Also, the entire debug output module can now 7381be 7382configured out of the ACPICA build if desired. One new file added, 7383executer/exdebug.c. Lin Ming, Bob Moore. 7384 7385Added header support for the ACPI MCHI table (Management Controller Host 7386Interface Table). This table was added in ACPI 4.0, but the defining 7387document 7388has only recently become available. 7389 7390Standardized output of integer values for ACPICA warnings/errors. Always 7391use 73920x prefix for hex output, always use %u for unsigned integer decimal 7393output. 7394Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 7395400 7396invocations.) These invocations were converted from the original 7397ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 7398 7399Example Code and Data Size: These are the sizes for the OS-independent 7400acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7401debug version of the code includes the debug output trace mechanism and 7402has a 7403much larger code and data size. 7404 7405 Previous Release: 7406 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7407 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7408 Current Release: 7409 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 7410 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 7411 74122) iASL Compiler/Disassembler and Tools: 7413 7414iASL: Implemented typechecking support for static (non-control method) 7415predefined named objects that are declared with the Name() operator. For 7416example, the type of this object is now validated to be of type Integer: 7417Name(_BBN, 1). This change migrates the compiler to using the core 7418predefined 7419name table instead of maintaining a local version. Added a new file, 7420aslpredef.c. ACPICA BZ 832. 7421 7422Disassembler: Added support for the ACPI 4.0 MCHI table. 7423 7424---------------------------------------- 742521 January 2010. Summary of changes for version 20100121: 7426 74271) ACPI CA Core Subsystem: 7428 7429Added the 2010 copyright to all module headers and signons. This affects 7430virtually every file in the ACPICA core subsystem, the iASL compiler, the 7431tools/utilities, and the test suites. 7432 7433Implemented a change to the AcpiGetDevices interface to eliminate 7434unnecessary 7435invocations of the _STA method. In the case where a specific _HID is 7436requested, do not run _STA until a _HID match is found. This eliminates 7437potentially dozens of _STA calls during a search for a particular 7438device/HID, 7439which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 7440 7441Implemented an additional repair for predefined method return values. 7442Attempt 7443to repair unexpected NULL elements within returned Package objects. 7444Create 7445an 7446Integer of value zero, a NULL String, or a zero-length Buffer as 7447appropriate. 7448ACPICA BZ 818. Lin Ming, Bob Moore. 7449 7450Removed the obsolete ACPI_INTEGER data type. This type was introduced as 7451the 7452code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 7453(with 745464-bit AML integers). It is now obsolete and this change removes it from 7455the 7456ACPICA code base, replaced by UINT64. The original typedef has been 7457retained 7458for now for compatibility with existing device driver code. ACPICA BZ 7459824. 7460 7461Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 7462in 7463the parse tree object. 7464 7465Added additional warning options for the gcc-4 generation. Updated the 7466source 7467accordingly. This includes some code restructuring to eliminate 7468unreachable 7469code, elimination of some gotos, elimination of unused return values, 7470some 7471additional casting, and removal of redundant declarations. 7472 7473Example Code and Data Size: These are the sizes for the OS-independent 7474acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7475debug version of the code includes the debug output trace mechanism and 7476has a 7477much larger code and data size. 7478 7479 Previous Release: 7480 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7481 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7482 Current Release: 7483 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 7484 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 7485 74862) iASL Compiler/Disassembler and Tools: 7487 7488No functional changes for this release. 7489 7490---------------------------------------- 749114 December 2009. Summary of changes for version 20091214: 7492 74931) ACPI CA Core Subsystem: 7494 7495Enhanced automatic data type conversions for predefined name repairs. 7496This 7497change expands the automatic repairs/conversions for predefined name 7498return 7499values to make Integers, Strings, and Buffers fully interchangeable. 7500Also, 7501a 7502Buffer can be converted to a Package of Integers if necessary. The 7503nsrepair.c 7504module was completely restructured. Lin Ming, Bob Moore. 7505 7506Implemented automatic removal of null package elements during predefined 7507name 7508repairs. This change will automatically remove embedded and trailing NULL 7509package elements from returned package objects that are defined to 7510contain 7511a 7512variable number of sub-packages. The driver is then presented with a 7513package 7514with no null elements to deal with. ACPICA BZ 819. 7515 7516Implemented a repair for the predefined _FDE and _GTM names. The expected 7517return value for both names is a Buffer of 5 DWORDs. This repair fixes 7518two 7519possible problems (both seen in the field), where a package of integers 7520is 7521returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 7522Kim. 7523 7524Implemented additional module-level code support. This change will 7525properly 7526execute module-level code that is not at the root of the namespace (under 7527a 7528Device object, etc.). Now executes the code within the current scope 7529instead 7530of the root. ACPICA BZ 762. Lin Ming. 7531 7532Fixed possible mutex acquisition errors when running _REG methods. Fixes 7533a 7534problem where mutex errors can occur when running a _REG method that is 7535in 7536the same scope as a method-defined operation region or an operation 7537region 7538under a module-level IF block. This type of code is rare, so the problem 7539has 7540not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 7541 7542Fixed a possible memory leak during module-level code execution. An 7543object 7544could be leaked for each block of executed module-level code if the 7545interpreter slack mode is enabled This change deletes any implicitly 7546returned 7547object from the module-level code block. Lin Ming. 7548 7549Removed messages for successful predefined repair(s). The repair 7550mechanism 7551was considered too wordy. Now, messages are only unconditionally emitted 7552if 7553the return object cannot be repaired. Existing messages for successful 7554repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 7555827. 7556 7557Example Code and Data Size: These are the sizes for the OS-independent 7558acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7559debug version of the code includes the debug output trace mechanism and 7560has a 7561much larger code and data size. 7562 7563 Previous Release: 7564 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 7565 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 7566 Current Release: 7567 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 7568 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 7569 75702) iASL Compiler/Disassembler and Tools: 7571 7572iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 7573files 7574were no longer automatically removed at the termination of the compile. 7575 7576acpiexec: Implemented the -f option to specify default region fill value. 7577This option specifies the value used to initialize buffers that simulate 7578operation regions. Default value is zero. Useful for debugging problems 7579that 7580depend on a specific initial value for a region or field. 7581 7582---------------------------------------- 758312 November 2009. Summary of changes for version 20091112: 7584 75851) ACPI CA Core Subsystem: 7586 7587Implemented a post-order callback to AcpiWalkNamespace. The existing 7588interface only has a pre-order callback. This change adds an additional 7589parameter for a post-order callback which will be more useful for bus 7590scans. 7591ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 7592 7593Modified the behavior of the operation region memory mapping cache for 7594SystemMemory. Ensure that the memory mappings created for operation 7595regions 7596do not cross 4K page boundaries. Crossing a page boundary while mapping 7597regions can cause kernel warnings on some hosts if the pages have 7598different 7599attributes. Such regions are probably BIOS bugs, and this is the 7600workaround. 7601Linux BZ 14445. Lin Ming. 7602 7603Implemented an automatic repair for predefined methods that must return 7604sorted lists. This change will repair (by sorting) packages returned by 7605_ALR, 7606_PSS, and _TSS. Drivers can now assume that the packages are correctly 7607sorted 7608and do not contain NULL package elements. Adds one new file, 7609namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 7610 7611Fixed a possible fault during predefined name validation if a return 7612Package 7613object contains NULL elements. Also adds a warning if a NULL element is 7614followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 7615may 7616include repair or removal of all such NULL elements where possible. 7617 7618Implemented additional module-level executable AML code support. This 7619change 7620will execute module-level code that is not at the root of the namespace 7621(under a Device object, etc.) at table load time. Module-level executable 7622AML 7623code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 7624 7625Implemented a new internal function to create Integer objects. This 7626function 7627simplifies miscellaneous object creation code. ACPICA BZ 823. 7628 7629Reduced the severity of predefined repair messages, Warning to Info. 7630Since 7631the object was successfully repaired, a warning is too severe. Reduced to 7632an 7633info message for now. These messages may eventually be changed to debug- 7634only. 7635ACPICA BZ 812. 7636 7637Example Code and Data Size: These are the sizes for the OS-independent 7638acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7639debug version of the code includes the debug output trace mechanism and 7640has a 7641much larger code and data size. 7642 7643 Previous Release: 7644 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 7645 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 7646 Current Release: 7647 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 7648 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 7649 76502) iASL Compiler/Disassembler and Tools: 7651 7652iASL: Implemented Switch() with While(1) so that Break works correctly. 7653This 7654change correctly implements the Switch operator with a surrounding 7655While(1) 7656so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 7657 7658iASL: Added a message if a package initializer list is shorter than 7659package 7660length. Adds a new remark for a Package() declaration if an initializer 7661list 7662exists, but is shorter than the declared length of the package. Although 7663technically legal, this is probably a coding error and it is seen in the 7664field. ACPICA BZ 815. Lin Ming, Bob Moore. 7665 7666iASL: Fixed a problem where the compiler could fault after the maximum 7667number 7668of errors was reached (200). 7669 7670acpixtract: Fixed a possible warning for pointer cast if the compiler 7671warning 7672level set very high. 7673 7674---------------------------------------- 767513 October 2009. Summary of changes for version 20091013: 7676 76771) ACPI CA Core Subsystem: 7678 7679Fixed a problem where an Operation Region _REG method could be executed 7680more 7681than once. If a custom address space handler is installed by the host 7682before 7683the "initialize operation regions" phase of the ACPICA initialization, 7684any 7685_REG methods for that address space could be executed twice. This change 7686fixes the problem. ACPICA BZ 427. Lin Ming. 7687 7688Fixed a possible memory leak for the Scope() ASL operator. When the exact 7689invocation of "Scope(\)" is executed (change scope to root), one internal 7690operand object was leaked. Lin Ming. 7691 7692Implemented a run-time repair for the _MAT predefined method. If the _MAT 7693return value is defined as a Field object in the AML, and the field 7694size is less than or equal to the default width of an integer (32 or 769564),_MAT 7696can incorrectly return an Integer instead of a Buffer. ACPICA now 7697automatically repairs this problem. ACPICA BZ 810. 7698 7699Implemented a run-time repair for the _BIF and _BIX predefined methods. 7700The 7701"OEM Information" field is often incorrectly returned as an Integer with 7702value zero if the field is not supported by the platform. This is due to 7703an 7704ambiguity in the ACPI specification. The field should always be a string. 7705ACPICA now automatically repairs this problem by returning a NULL string 7706within the returned Package. ACPICA BZ 807. 7707 7708Example Code and Data Size: These are the sizes for the OS-independent 7709acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7710debug version of the code includes the debug output trace mechanism and 7711has a 7712much larger code and data size. 7713 7714 Previous Release: 7715 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 7716 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 7717 Current Release: 7718 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 7719 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 7720 77212) iASL Compiler/Disassembler and Tools: 7722 7723Disassembler: Fixed a problem where references to external symbols that 7724contained one or more parent-prefixes (carats) were not handled 7725correctly, 7726possibly causing a fault. ACPICA BZ 806. Lin Ming. 7727 7728Disassembler: Restructured the code so that all functions that handle 7729external symbols are in a single module. One new file is added, 7730common/dmextern.c. 7731 7732AML Debugger: Added a max count argument for the Batch command (which 7733executes multiple predefined methods within the namespace.) 7734 7735iASL: Updated the compiler documentation (User Reference.) Available at 7736http://www.acpica.org/documentation/. ACPICA BZ 750. 7737 7738AcpiXtract: Updated for Lint and other formatting changes. Close all open 7739files. 7740 7741---------------------------------------- 774203 September 2009. Summary of changes for version 20090903: 7743 77441) ACPI CA Core Subsystem: 7745 7746For Windows Vista compatibility, added the automatic execution of an _INI 7747method located at the namespace root (\_INI). This method is executed at 7748table load time. This support is in addition to the automatic execution 7749of 7750\_SB._INI. Lin Ming. 7751 7752Fixed a possible memory leak in the interpreter for AML package objects 7753if 7754the package initializer list is longer than the defined size of the 7755package. 7756This apparently can only happen if the BIOS changes the package size on 7757the 7758fly (seen in a _PSS object), as ASL compilers do not allow this. The 7759interpreter will truncate the package to the defined size (and issue an 7760error 7761message), but previously could leave the extra objects undeleted if they 7762were 7763pre-created during the argument processing (such is the case if the 7764package 7765consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 7766 7767Fixed a problem seen when a Buffer or String is stored to itself via ASL. 7768This has been reported in the field. Previously, ACPICA would zero out 7769the 7770buffer/string. Now, the operation is treated as a noop. Provides Windows 7771compatibility. ACPICA BZ 803. Lin Ming. 7772 7773Removed an extraneous error message for ASL constructs of the form 7774Store(LocalX,LocalX) when LocalX is uninitialized. These curious 7775statements 7776are seen in many BIOSs and are once again treated as NOOPs and no error 7777is 7778emitted when they are encountered. ACPICA BZ 785. 7779 7780Fixed an extraneous warning message if a _DSM reserved method returns a 7781Package object. _DSM can return any type of object, so validation on the 7782return type cannot be performed. ACPICA BZ 802. 7783 7784Example Code and Data Size: These are the sizes for the OS-independent 7785acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7786debug version of the code includes the debug output trace mechanism and 7787has a 7788much larger code and data size. 7789 7790 Previous Release: 7791 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 7792 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 7793 Current Release: 7794 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 7795 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 7796 77972) iASL Compiler/Disassembler and Tools: 7798 7799iASL: Fixed a problem with the use of the Alias operator and Resource 7800Templates. The correct alias is now constructed and no error is emitted. 7801ACPICA BZ 738. 7802 7803iASL: Implemented the -I option to specify additional search directories 7804for 7805include files. Allows multiple additional search paths for include files. 7806Directories are searched in the order specified on the command line 7807(after 7808the local directory is searched.) ACPICA BZ 800. 7809 7810iASL: Fixed a problem where the full pathname for include files was not 7811emitted for warnings/errors. This caused the IDE support to not work 7812properly. ACPICA BZ 765. 7813 7814iASL: Implemented the -@ option to specify a Windows-style response file 7815containing additional command line options. ACPICA BZ 801. 7816 7817AcpiExec: Added support to load multiple AML files simultaneously (such 7818as 7819a 7820DSDT and multiple SSDTs). Also added support for wildcards within the AML 7821pathname. These features allow all machine tables to be easily loaded and 7822debugged together. ACPICA BZ 804. 7823 7824Disassembler: Added missing support for disassembly of HEST table Error 7825Bank 7826subtables. 7827 7828---------------------------------------- 782930 July 2009. Summary of changes for version 20090730: 7830 7831The ACPI 4.0 implementation for ACPICA is complete with this release. 7832 78331) ACPI CA Core Subsystem: 7834 7835ACPI 4.0: Added header file support for all new and changed ACPI tables. 7836Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 7837new 7838for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 7839BERT, 7840EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 7841There 7842have been some ACPI 4.0 changes to other existing tables. Split the large 7843actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 7844 7845ACPI 4.0: Implemented predefined name validation for all new names. There 7846are 784731 new names in ACPI 4.0. The predefined validation module was split into 7848two 7849files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 7850 7851Implemented support for so-called "module-level executable code". This is 7852executable AML code that exists outside of any control method and is 7853intended 7854to be executed at table load time. Although illegal since ACPI 2.0, this 7855type 7856of code still exists and is apparently still being created. Blocks of 7857this 7858code are now detected and executed as intended. Currently, the code 7859blocks 7860must exist under either an If, Else, or While construct; these are the 7861typical cases seen in the field. ACPICA BZ 762. Lin Ming. 7862 7863Implemented an automatic dynamic repair for predefined names that return 7864nested Package objects. This applies to predefined names that are defined 7865to 7866return a variable-length Package of sub-packages. If the number of sub- 7867packages is one, BIOS code is occasionally seen that creates a simple 7868single 7869package with no sub-packages. This code attempts to fix the problem by 7870wrapping a new package object around the existing package. These methods 7871can 7872be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 7873BZ 7874790. 7875 7876Fixed a regression introduced in 20090625 for the AcpiGetDevices 7877interface. 7878The _HID/_CID matching was broken and no longer matched IDs correctly. 7879ACPICA 7880BZ 793. 7881 7882Fixed a problem with AcpiReset where the reset would silently fail if the 7883register was one of the protected I/O ports. AcpiReset now bypasses the 7884port 7885validation mechanism. This may eventually be driven into the 7886AcpiRead/Write 7887interfaces. 7888 7889Fixed a regression related to the recent update of the AcpiRead/Write 7890interfaces. A sleep/suspend could fail if the optional PM2 Control 7891register 7892does not exist during an attempt to write the Bus Master Arbitration bit. 7893(However, some hosts already delete the code that writes this bit, and 7894the 7895code may in fact be obsolete at this date.) ACPICA BZ 799. 7896 7897Fixed a problem where AcpiTerminate could fault if inadvertently called 7898twice 7899in succession. ACPICA BZ 795. 7900 7901Example Code and Data Size: These are the sizes for the OS-independent 7902acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7903debug version of the code includes the debug output trace mechanism and 7904has a 7905much larger code and data size. 7906 7907 Previous Release: 7908 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 7909 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 7910 Current Release: 7911 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 7912 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 7913 79142) iASL Compiler/Disassembler and Tools: 7915 7916ACPI 4.0: Implemented disassembler support for all new ACPI tables and 7917changes to existing tables. ACPICA BZ 775. 7918 7919---------------------------------------- 792025 June 2009. Summary of changes for version 20090625: 7921 7922The ACPI 4.0 Specification was released on June 16 and is available at 7923www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 7924continue for the next few releases. 7925 79261) ACPI CA Core Subsystem: 7927 7928ACPI 4.0: Implemented interpreter support for the IPMI operation region 7929address space. Includes support for bi-directional data buffers and an 7930IPMI 7931address space handler (to be installed by an IPMI device driver.) ACPICA 7932BZ 7933773. Lin Ming. 7934 7935ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 7936Includes 7937support in both the header files and the disassembler. 7938 7939Completed a major update for the AcpiGetObjectInfo external interface. 7940Changes include: 7941 - Support for variable, unlimited length HID, UID, and CID strings. 7942 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 7943etc.) 7944 - Call the _SxW power methods on behalf of a device object. 7945 - Determine if a device is a PCI root bridge. 7946 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 7947These changes will require an update to all callers of this interface. 7948See 7949the updated ACPICA Programmer Reference for details. One new source file 7950has 7951been added - utilities/utids.c. ACPICA BZ 368, 780. 7952 7953Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 7954transfers. The Value parameter has been extended from 32 bits to 64 bits 7955in 7956order to support new ACPI 4.0 tables. These changes will require an 7957update 7958to 7959all callers of these interfaces. See the ACPICA Programmer Reference for 7960details. ACPICA BZ 768. 7961 7962Fixed several problems with AcpiAttachData. The handler was not invoked 7963when 7964the host node was deleted. The data sub-object was not automatically 7965deleted 7966when the host node was deleted. The interface to the handler had an 7967unused 7968parameter, this was removed. ACPICA BZ 778. 7969 7970Enhanced the function that dumps ACPI table headers. All non-printable 7971characters in the string fields are now replaced with '?' (Signature, 7972OemId, 7973OemTableId, and CompilerId.) ACPI tables with non-printable characters in 7974these fields are occasionally seen in the field. ACPICA BZ 788. 7975 7976Fixed a problem with predefined method repair code where the code that 7977attempts to repair/convert an object of incorrect type is only executed 7978on 7979the first time the predefined method is called. The mechanism that 7980disables 7981warnings on subsequent calls was interfering with the repair mechanism. 7982ACPICA BZ 781. 7983 7984Fixed a possible memory leak in the predefined validation/repair code 7985when 7986a 7987buffer is automatically converted to an expected string object. 7988 7989Removed obsolete 16-bit files from the distribution and from the current 7990git 7991tree head. ACPICA BZ 776. 7992 7993Example Code and Data Size: These are the sizes for the OS-independent 7994acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7995debug version of the code includes the debug output trace mechanism and 7996has a 7997much larger code and data size. 7998 7999 Previous Release: 8000 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 8001 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 8002 Current Release: 8003 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 8004 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 8005 80062) iASL Compiler/Disassembler and Tools: 8007 8008ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 8009operation region keyword. ACPICA BZ 771, 772. Lin Ming. 8010 8011ACPI 4.0: iASL - implemented compile-time validation support for all new 8012predefined names and control methods (31 total). ACPICA BZ 769. 8013 8014---------------------------------------- 801521 May 2009. Summary of changes for version 20090521: 8016 80171) ACPI CA Core Subsystem: 8018 8019Disabled the preservation of the SCI enable bit in the PM1 control 8020register. 8021The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 8022to 8023be 8024a "preserved" bit - "OSPM always preserves this bit position", section 80254.7.3.2.1. However, some machines fail if this bit is in fact preserved 8026because the bit needs to be explicitly set by the OS as a workaround. No 8027machines fail if the bit is not preserved. Therefore, ACPICA no longer 8028attempts to preserve this bit. 8029 8030Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 8031incorrectly formed _PRT package could cause a fault. Added validation to 8032ensure that each package element is actually a sub-package. 8033 8034Implemented a new interface to install or override a single control 8035method, 8036AcpiInstallMethod. This interface is useful when debugging in order to 8037repair 8038an existing method or to install a missing method without having to 8039override 8040the entire ACPI table. See the ACPICA Programmer Reference for use and 8041examples. Lin Ming, Bob Moore. 8042 8043Fixed several reference count issues with the DdbHandle object that is 8044created from a Load or LoadTable operator. Prevent premature deletion of 8045the 8046object. Also, mark the object as invalid once the table has been 8047unloaded. 8048This is needed because the handle itself may not be deleted after the 8049table 8050unload, depending on whether it has been stored in a named object by the 8051caller. Lin Ming. 8052 8053Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 8054mutexes of the same sync level are acquired but then not released in 8055strict 8056opposite order, the internally maintained Current Sync Level becomes 8057confused 8058and can cause subsequent execution errors. ACPICA BZ 471. 8059 8060Changed the allowable release order for ASL mutex objects. The ACPI 4.0 8061specification has been changed to make the SyncLevel for mutex objects 8062more 8063useful. When releasing a mutex, the SyncLevel of the mutex must now be 8064the 8065same as the current sync level. This makes more sense than the previous 8066rule 8067(SyncLevel less than or equal). This change updates the code to match the 8068specification. 8069 8070Fixed a problem with the local version of the AcpiOsPurgeCache function. 8071The 8072(local) cache must be locked during all cache object deletions. Andrew 8073Baumann. 8074 8075Updated the Load operator to use operation region interfaces. This 8076replaces 8077direct memory mapping with region access calls. Now, all region accesses 8078go 8079through the installed region handler as they should. 8080 8081Simplified and optimized the NsGetNextNode function. Reduced parameter 8082count 8083and reduced code for this frequently used function. 8084 8085Example Code and Data Size: These are the sizes for the OS-independent 8086acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8087debug version of the code includes the debug output trace mechanism and 8088has a 8089much larger code and data size. 8090 8091 Previous Release: 8092 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 8093 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 8094 Current Release: 8095 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 8096 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 8097 80982) iASL Compiler/Disassembler and Tools: 8099 8100Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 8101problems 8102with sub-table disassembly and handling invalid sub-tables. Attempt 8103recovery 8104after an invalid sub-table ID. 8105 8106---------------------------------------- 810722 April 2009. Summary of changes for version 20090422: 8108 81091) ACPI CA Core Subsystem: 8110 8111Fixed a compatibility issue with the recently released I/O port 8112protection 8113mechanism. For windows compatibility, 1) On a port protection violation, 8114simply ignore the request and do not return an exception (allow the 8115control 8116method to continue execution.) 2) If only part of the request overlaps a 8117protected port, read/write the individual ports that are not protected. 8118Linux 8119BZ 13036. Lin Ming 8120 8121Enhanced the execution of the ASL/AML BreakPoint operator so that it 8122actually 8123breaks into the AML debugger if the debugger is present. This matches the 8124ACPI-defined behavior. 8125 8126Fixed several possible warnings related to the use of the configurable 8127ACPI_THREAD_ID. This type can now be configured as either an integer or a 8128pointer with no warnings. Also fixes several warnings in printf-like 8129statements for the 64-bit build when the type is configured as a pointer. 8130ACPICA BZ 766, 767. 8131 8132Fixed a number of possible warnings when compiling with gcc 4+ (depending 8133on 8134warning options.) Examples include printf formats, aliasing, unused 8135globals, 8136missing prototypes, missing switch default statements, use of non-ANSI 8137library functions, use of non-ANSI constructs. See generate/unix/Makefile 8138for 8139a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 8140 8141Example Code and Data Size: These are the sizes for the OS-independent 8142acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8143debug version of the code includes the debug output trace mechanism and 8144has a 8145much larger code and data size. 8146 8147 Previous Release: 8148 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 8149 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 8150 Current Release: 8151 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 8152 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 8153 81542) iASL Compiler/Disassembler and Tools: 8155 8156iASL: Fixed a generation warning from Bison 2.3 and fixed several 8157warnings 8158on 8159the 64-bit build. 8160 8161iASL: Fixed a problem where the Unix/Linux versions of the compiler could 8162not 8163correctly digest Windows/DOS formatted files (with CR/LF). 8164 8165iASL: Added a new option for "quiet mode" (-va) that produces only the 8166compilation summary, not individual errors and warnings. Useful for large 8167batch compilations. 8168 8169AcpiExec: Implemented a new option (-z) to enable a forced 8170semaphore/mutex 8171timeout that can be used to detect hang conditions during execution of 8172AML 8173code (includes both internal semaphores and AML-defined mutexes and 8174events.) 8175 8176Added new makefiles for the generation of acpica in a generic unix-like 8177environment. These makefiles are intended to generate the acpica tools 8178and 8179utilities from the original acpica git source tree structure. 8180 8181Test Suites: Updated and cleaned up the documentation files. Updated the 8182copyrights to 2009, affecting all source files. Use the new version of 8183iASL 8184with quiet mode. Increased the number of available semaphores in the 8185Windows 8186OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 8187added 8188an alternate implementation of the semaphore timeout to allow aslts to 8189execute fully on Cygwin. 8190 8191---------------------------------------- 819220 March 2009. Summary of changes for version 20090320: 8193 81941) ACPI CA Core Subsystem: 8195 8196Fixed a possible race condition between AcpiWalkNamespace and dynamic 8197table 8198unloads. Added a reader/writer locking mechanism to allow multiple 8199concurrent 8200namespace walks (readers), but block a dynamic table unload until it can 8201gain 8202exclusive write access to the namespace. This fixes a problem where a 8203table 8204unload could (possibly catastrophically) delete the portion of the 8205namespace 8206that is currently being examined by a walk. Adds a new file, utlock.c, 8207that 8208implements the reader/writer lock mechanism. ACPICA BZ 749. 8209 8210Fixed a regression introduced in version 20090220 where a change to the 8211FADT 8212handling could cause the ACPICA subsystem to access non-existent I/O 8213ports. 8214 8215Modified the handling of FADT register and table (FACS/DSDT) addresses. 8216The 8217FADT can contain both 32-bit and 64-bit versions of these addresses. 8218Previously, the 64-bit versions were favored, meaning that if both 32 and 821964 8220versions were valid, but not equal, the 64-bit version was used. This was 8221found to cause some machines to fail. Now, in this case, the 32-bit 8222version 8223is used instead. This now matches the Windows behavior. 8224 8225Implemented a new mechanism to protect certain I/O ports. Provides 8226Microsoft 8227compatibility and protects the standard PC I/O ports from access via AML 8228code. Adds a new file, hwvalid.c 8229 8230Fixed a possible extraneous warning message from the FADT support. The 8231message warns of a 32/64 length mismatch between the legacy and GAS 8232definitions for a register. 8233 8234Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 8235is 8236made obsolete by the port protection mechanism above. It was previously 8237used 8238to validate the entire address range of an operation region, which could 8239be 8240incorrect if the range included illegal ports, but fields within the 8241operation region did not actually access those ports. Validation is now 8242performed on a per-field basis instead of the entire region. 8243 8244Modified the handling of the PM1 Status Register ignored bit (bit 11.) 8245Ignored bits must be "preserved" according to the ACPI spec. Usually, 8246this 8247means a read/modify/write when writing to the register. However, for 8248status 8249registers, writing a one means clear the event. Writing a zero means 8250preserve 8251the event (do not clear.) This behavior is clarified in the ACPI 4.0 8252spec, 8253and the ACPICA code now simply always writes a zero to the ignored bit. 8254 8255Modified the handling of ignored bits for the PM1 A/B Control Registers. 8256As 8257per the ACPI specification, for the control registers, preserve 8258(read/modify/write) all bits that are defined as either reserved or 8259ignored. 8260 8261Updated the handling of write-only bits in the PM1 A/B Control Registers. 8262When reading the register, zero the write-only bits as per the ACPI spec. 8263ACPICA BZ 443. Lin Ming. 8264 8265Removed "Linux" from the list of supported _OSI strings. Linux no longer 8266wants to reply true to this request. The Windows strings are the only 8267paths 8268through the AML that are tested and known to work properly. 8269 8270 Previous Release: 8271 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 8272 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 8273 Current Release: 8274 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 8275 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 8276 82772) iASL Compiler/Disassembler and Tools: 8278 8279Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 8280and 8281aetables.c 8282 8283---------------------------------------- 828420 February 2009. Summary of changes for version 20090220: 8285 82861) ACPI CA Core Subsystem: 8287 8288Optimized the ACPI register locking. Removed locking for reads from the 8289ACPI 8290bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 8291is 8292not required when reading the single-bit registers. The 8293AcpiGetRegisterUnlocked function is no longer needed and has been 8294removed. 8295This will improve performance for reads on these registers. ACPICA BZ 8296760. 8297 8298Fixed the parameter validation for AcpiRead/Write. Now return 8299AE_BAD_PARAMETER if the input register pointer is null, and 8300AE_BAD_ADDRESS 8301if 8302the register has an address of zero. Previously, these cases simply 8303returned 8304AE_OK. For optional registers such as PM1B status/enable/control, the 8305caller 8306should check for a valid register address before calling. ACPICA BZ 748. 8307 8308Renamed the external ACPI bit register access functions. Renamed 8309AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 8310functions. The new names are AcpiReadBitRegister and 8311AcpiWriteBitRegister. 8312Also, restructured the code for these functions by simplifying the code 8313path 8314and condensing duplicate code to reduce code size. 8315 8316Added new functions to transparently handle the possibly split PM1 A/B 8317registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 8318functions 8319now handle the split registers for PM1 Status, Enable, and Control. 8320ACPICA 8321BZ 8322746. 8323 8324Added a function to handle the PM1 control registers, 8325AcpiHwWritePm1Control. 8326This function writes both of the PM1 control registers (A/B). These 8327registers 8328are different than the PM1 A/B status and enable registers in that 8329different 8330values can be written to the A/B registers. Most notably, the SLP_TYP 8331bits 8332can be different, as per the values returned from the _Sx predefined 8333methods. 8334 8335Removed an extra register write within AcpiHwClearAcpiStatus. This 8336function 8337was writing an optional PM1B status register twice. The existing call to 8338the 8339low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 8340A/B 8341register. ACPICA BZ 751. 8342 8343Split out the PM1 Status registers from the FADT. Added new globals for 8344these 8345registers (A/B), similar to the way the PM1 Enable registers are handled. 8346Instead of overloading the FADT Event Register blocks. This makes the 8347code 8348clearer and less prone to error. 8349 8350Fixed the warning message for when the platform contains too many ACPI 8351tables 8352for the default size of the global root table data structure. The 8353calculation 8354for the truncation value was incorrect. 8355 8356Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 8357obsolete macro, since it is now a simple reference to ->common.type. 8358There 8359were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 8360 8361Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 8362TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 8363simply SLEEP_TYPE. ACPICA BZ 754. 8364 8365Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 8366function is only needed on 64-bit host operating systems and is thus not 8367included for 32-bit hosts. 8368 8369Debug output: print the input and result for invocations of the _OSI 8370reserved 8371control method via the ACPI_LV_INFO debug level. Also, reduced some of 8372the 8373verbosity of this debug level. Len Brown. 8374 8375Example Code and Data Size: These are the sizes for the OS-independent 8376acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8377debug version of the code includes the debug output trace mechanism and 8378has a 8379much larger code and data size. 8380 8381 Previous Release: 8382 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8383 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8384 Current Release: 8385 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 8386 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 8387 83882) iASL Compiler/Disassembler and Tools: 8389 8390Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 8391various legal performance profiles. 8392 8393---------------------------------------- 839423 January 2009. Summary of changes for version 20090123: 8395 83961) ACPI CA Core Subsystem: 8397 8398Added the 2009 copyright to all module headers and signons. This affects 8399virtually every file in the ACPICA core subsystem, the iASL compiler, and 8400the tools/utilities. 8401 8402Implemented a change to allow the host to override any ACPI table, 8403including 8404dynamically loaded tables. Previously, only the DSDT could be replaced by 8405the 8406host. With this change, the AcpiOsTableOverride interface is called for 8407each 8408table found in the RSDT/XSDT during ACPICA initialization, and also 8409whenever 8410a table is dynamically loaded via the AML Load operator. 8411 8412Updated FADT flag definitions, especially the Boot Architecture flags. 8413 8414Debugger: For the Find command, automatically pad the input ACPI name 8415with 8416underscores if the name is shorter than 4 characters. This enables a 8417match 8418with the actual namespace entry which is itself padded with underscores. 8419 8420Example Code and Data Size: These are the sizes for the OS-independent 8421acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8422debug version of the code includes the debug output trace mechanism and 8423has a 8424much larger code and data size. 8425 8426 Previous Release: 8427 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8428 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8429 Current Release: 8430 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 8431 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 8432 84332) iASL Compiler/Disassembler and Tools: 8434 8435Fix build error under Bison-2.4. 8436 8437Dissasembler: Enhanced FADT support. Added decoding of the Boot 8438Architecture 8439flags. Now decode all flags, regardless of the FADT version. Flag output 8440includes the FADT version which first defined each flag. 8441 8442The iASL -g option now dumps the RSDT to a file (in addition to the FADT 8443and 8444DSDT). Windows only. 8445 8446---------------------------------------- 844704 December 2008. Summary of changes for version 20081204: 8448 84491) ACPI CA Core Subsystem: 8450 8451The ACPICA Programmer Reference has been completely updated and revamped 8452for 8453this release. This includes updates to the external interfaces, OSL 8454interfaces, the overview sections, and the debugger reference. 8455 8456Several new ACPICA interfaces have been implemented and documented in the 8457programmer reference: 8458AcpiReset - Writes the reset value to the FADT-defined reset register. 8459AcpiDisableAllGpes - Disable all available GPEs. 8460AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 8461AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 8462AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 8463AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 8464AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 8465 8466Most of the public ACPI hardware-related interfaces have been moved to a 8467new 8468file, components/hardware/hwxface.c 8469 8470Enhanced the FADT parsing and low-level ACPI register access: The ACPI 8471register lengths within the FADT are now used, and the low level ACPI 8472register access no longer hardcodes the ACPI register lengths. Given that 8473there may be some risk in actually trusting the FADT register lengths, a 8474run- 8475time option was added to fall back to the default hardcoded lengths if 8476the 8477FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 8478option is set to true for now, and a warning is issued if a suspicious 8479FADT 8480register length is overridden with the default value. 8481 8482Fixed a reference count issue in NsRepairObject. This problem was 8483introduced 8484in version 20081031 as part of a fix to repair Buffer objects within 8485Packages. Lin Ming. 8486 8487Added semaphore support to the Linux/Unix application OS-services layer 8488(OSL). ACPICA BZ 448. Lin Ming. 8489 8490Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 8491will 8492be implemented in the OSL, or will binary semaphores be used instead. 8493 8494Example Code and Data Size: These are the sizes for the OS-independent 8495acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8496debug version of the code includes the debug output trace mechanism and 8497has a 8498much larger code and data size. 8499 8500 Previous Release: 8501 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 8502 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 8503 Current Release: 8504 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 8505 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 8506 85072) iASL Compiler/Disassembler and Tools: 8508 8509iASL: Completed the '-e' option to include additional ACPI tables in 8510order 8511to 8512aid with disassembly and External statement generation. ACPICA BZ 742. 8513Lin 8514Ming. 8515 8516iASL: Removed the "named object in while loop" error. The compiler cannot 8517determine how many times a loop will execute. ACPICA BZ 730. 8518 8519Disassembler: Implemented support for FADT revision 2 (MS extension). 8520ACPICA 8521BZ 743. 8522 8523Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 8524MCFG). 8525 8526---------------------------------------- 852731 October 2008. Summary of changes for version 20081031: 8528 85291) ACPI CA Core Subsystem: 8530 8531Restructured the ACPICA header files into public/private. acpi.h now 8532includes 8533only the "public" acpica headers. All other acpica headers are "private" 8534and 8535should not be included by acpica users. One new file, accommon.h is used 8536to 8537include the commonly used private headers for acpica code generation. 8538Future 8539plans include moving all private headers to a new subdirectory. 8540 8541Implemented an automatic Buffer->String return value conversion for 8542predefined ACPI methods. For these methods (such as _BIF), added 8543automatic 8544conversion for return objects that are required to be a String, but a 8545Buffer 8546was found instead. This can happen when reading string battery data from 8547an 8548operation region, because it used to be difficult to convert the data 8549from 8550buffer to string from within the ASL. Ensures that the host OS is 8551provided 8552with a valid null-terminated string. Linux BZ 11822. 8553 8554Updated the FACS waking vector interfaces. Split 8555AcpiSetFirmwareWakingVector 8556into two: one for the 32-bit vector, another for the 64-bit vector. This 8557is 8558required because the host OS must setup the wake much differently for 8559each 8560vector (real vs. protected mode, etc.) and the interface itself should 8561not 8562be 8563deciding which vector to use. Also, eliminated the 8564GetFirmwareWakingVector 8565interface, as it served no purpose (only the firmware reads the vector, 8566OS 8567only writes the vector.) ACPICA BZ 731. 8568 8569Implemented a mechanism to escape infinite AML While() loops. Added a 8570loop 8571counter to force exit from AML While loops if the count becomes too 8572large. 8573This can occur in poorly written AML when the hardware does not respond 8574within a while loop and the loop does not implement a timeout. The 8575maximum 8576loop count is configurable. A new exception code is returned when a loop 8577is 8578broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 8579 8580Optimized the execution of AML While loops. Previously, a control state 8581object was allocated and freed for each execution of the loop. The 8582optimization is to simply reuse the control state for each iteration. 8583This 8584speeds up the raw loop execution time by about 5%. 8585 8586Enhanced the implicit return mechanism. For Windows compatibility, return 8587an 8588implicit integer of value zero for methods that contain no executable 8589code. 8590Such methods are seen in the field as stubs (presumably), and can cause 8591drivers to fail if they expect a return value. Lin Ming. 8592 8593Allow multiple backslashes as root prefixes in namepaths. In a fully 8594qualified namepath, allow multiple backslash prefixes. This can happen 8595(and 8596is seen in the field) because of the use of a double-backslash in strings 8597(since backslash is the escape character) causing confusion. ACPICA BZ 8598739 8599Lin Ming. 8600 8601Emit a warning if two different FACS or DSDT tables are discovered in the 8602FADT. Checks if there are two valid but different addresses for the FACS 8603and 8604DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 8605 8606Consolidated the method argument count validation code. Merged the code 8607that 8608validates control method argument counts into the predefined validation 8609module. Eliminates possible multiple warnings for incorrect argument 8610counts. 8611 8612Implemented ACPICA example code. Includes code for ACPICA initialization, 8613handler installation, and calling a control method. Available at 8614source/tools/examples. 8615 8616Added a global pointer for FACS table to simplify internal FACS access. 8617Use 8618the global pointer instead of using AcpiGetTableByIndex for each FACS 8619access. 8620This simplifies the code for the Global Lock and the Firmware Waking 8621Vector(s). 8622 8623Example Code and Data Size: These are the sizes for the OS-independent 8624acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8625debug version of the code includes the debug output trace mechanism and 8626has a 8627much larger code and data size. 8628 8629 Previous Release: 8630 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 8631 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 8632 Current Release: 8633 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 8634 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 8635 86362) iASL Compiler/Disassembler and Tools: 8637 8638iASL: Improved disassembly of external method calls. Added the -e option 8639to 8640allow the inclusion of additional ACPI tables to help with the 8641disassembly 8642of 8643method invocations and the generation of external declarations during the 8644disassembly. Certain external method invocations cannot be disassembled 8645properly without the actual declaration of the method. Use the -e option 8646to 8647include the table where the external method(s) are actually declared. 8648Most 8649useful for disassembling SSDTs that make method calls back to the master 8650DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 8651-d 8652-e dsdt.aml ssdt1.aml 8653 8654iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 8655problem where the use of an alias within a namepath would result in a not 8656found error or cause the compiler to fault. Also now allows forward 8657references from the Alias operator itself. ACPICA BZ 738. 8658 8659---------------------------------------- 866026 September 2008. Summary of changes for version 20080926: 8661 86621) ACPI CA Core Subsystem: 8663 8664Designed and implemented a mechanism to validate predefined ACPI methods 8665and 8666objects. This code validates the predefined ACPI objects (objects whose 8667names 8668start with underscore) that appear in the namespace, at the time they are 8669evaluated. The argument count and the type of the returned object are 8670validated against the ACPI specification. The purpose of this validation 8671is 8672to detect problems with the BIOS-implemented predefined ACPI objects 8673before 8674the results are returned to the ACPI-related drivers. Future enhancements 8675may 8676include actual repair of incorrect return objects where possible. Two new 8677files are nspredef.c and acpredef.h. 8678 8679Fixed a fault in the AML parser if a memory allocation fails during the 8680Op 8681completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 8682 8683Fixed an issue with implicit return compatibility. This change improves 8684the 8685implicit return mechanism to be more compatible with the MS interpreter. 8686Lin 8687Ming, ACPICA BZ 349. 8688 8689Implemented support for zero-length buffer-to-string conversions. Allow 8690zero 8691length strings during interpreter buffer-to-string conversions. For 8692example, 8693during the ToDecimalString and ToHexString operators, as well as implicit 8694conversions. Fiodor Suietov, ACPICA BZ 585. 8695 8696Fixed two possible memory leaks in the error exit paths of 8697AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 8698are 8699similar in that they use a stack of state objects in order to eliminate 8700recursion. The stack must be fully unwound and deallocated if an error 8701occurs. Lin Ming. ACPICA BZ 383. 8702 8703Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 8704global 8705ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 8706Moore ACPICA BZ 442. 8707 8708Removed the obsolete version number in module headers. Removed the 8709"$Revision" number that appeared in each module header. This version 8710number 8711was useful under SourceSafe and CVS, but has no meaning under git. It is 8712not 8713only incorrect, it could also be misleading. 8714 8715Example Code and Data Size: These are the sizes for the OS-independent 8716acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8717debug version of the code includes the debug output trace mechanism and 8718has a 8719much larger code and data size. 8720 8721 Previous Release: 8722 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8723 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 8724 Current Release: 8725 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 8726 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 8727 8728---------------------------------------- 872929 August 2008. Summary of changes for version 20080829: 8730 87311) ACPI CA Core Subsystem: 8732 8733Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 8734Reference. Changes include the elimination of cheating on the Object 8735field 8736for the DdbHandle subtype, addition of a reference class field to 8737differentiate the various reference types (instead of an AML opcode), and 8738the 8739cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 8740 8741Reduce an error to a warning for an incorrect method argument count. 8742Previously aborted with an error if too few arguments were passed to a 8743control method via the external ACPICA interface. Now issue a warning 8744instead 8745and continue. Handles the case where the method inadvertently declares 8746too 8747many arguments, but does not actually use the extra ones. Applies mainly 8748to 8749the predefined methods. Lin Ming. Linux BZ 11032. 8750 8751Disallow the evaluation of named object types with no intrinsic value. 8752Return 8753AE_TYPE for objects that have no value and therefore evaluation is 8754undefined: 8755Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 8756of 8757these types were allowed, but an exception would be generated at some 8758point 8759during the evaluation. Now, the error is generated up front. 8760 8761Fixed a possible memory leak in the AcpiNsGetExternalPathname function 8762(nsnames.c). Fixes a leak in the error exit path. 8763 8764Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 8765debug 8766levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 8767ACPI_EXCEPTION 8768interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 8769ACPI_LV_EVENTS. 8770 8771Removed obsolete and/or unused exception codes from the acexcep.h header. 8772There is the possibility that certain device drivers may be affected if 8773they 8774use any of these exceptions. 8775 8776The ACPICA documentation has been added to the public git source tree, 8777under 8778acpica/documents. Included are the ACPICA programmer reference, the iASL 8779compiler reference, and the changes.txt release logfile. 8780 8781Example Code and Data Size: These are the sizes for the OS-independent 8782acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8783debug version of the code includes the debug output trace mechanism and 8784has a 8785much larger code and data size. 8786 8787 Previous Release: 8788 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8789 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 8790 Current Release: 8791 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8792 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 8793 87942) iASL Compiler/Disassembler and Tools: 8795 8796Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 8797defines _SCP with 3 arguments. Previous versions defined it with only 1 8798argument. iASL now allows both definitions. 8799 8800iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 8801zero- 8802length subtables when disassembling ACPI tables. Also fixed a couple of 8803errors where a full 16-bit table type field was not extracted from the 8804input 8805properly. 8806 8807acpisrc: Improve comment counting mechanism for generating source code 8808statistics. Count first and last lines of multi-line comments as 8809whitespace, 8810not comment lines. Handle Linux legal header in addition to standard 8811acpica 8812header. 8813 8814---------------------------------------- 8815 881629 July 2008. Summary of changes for version 20080729: 8817 88181) ACPI CA Core Subsystem: 8819 8820Fix a possible deadlock in the GPE dispatch. Remove call to 8821AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 8822attempt 8823to acquire the GPE lock but can deadlock since the GPE lock is already 8824held 8825at dispatch time. This code was introduced in version 20060831 as a 8826response 8827to Linux BZ 6881 and has since been removed from Linux. 8828 8829Add a function to dereference returned reference objects. Examines the 8830return 8831object from a call to AcpiEvaluateObject. Any Index or RefOf references 8832are 8833automatically dereferenced in an attempt to return something useful 8834(these 8835reference types cannot be converted into an external ACPI_OBJECT.) 8836Provides 8837MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 8838 8839x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 8840subtables for the MADT and one new subtable for the SRAT. Includes 8841disassembler and AcpiSrc support. Data from the Intel 64 Architecture 8842x2APIC 8843Specification, June 2008. 8844 8845Additional error checking for pathname utilities. Add error check after 8846all 8847calls to AcpiNsGetPathnameLength. Add status return from 8848AcpiNsBuildExternalPath and check after all calls. Add parameter 8849validation 8850to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 8851 8852Return status from the global init function AcpiUtGlobalInitialize. This 8853is 8854used by both the kernel subsystem and the utilities such as iASL 8855compiler. 8856The function could possibly fail when the caches are initialized. Yang 8857Yi. 8858 8859Add a function to decode reference object types to strings. Created for 8860improved error messages. 8861 8862Improve object conversion error messages. Better error messages during 8863object 8864conversion from internal to the external ACPI_OBJECT. Used for external 8865calls 8866to AcpiEvaluateObject. 8867 8868Example Code and Data Size: These are the sizes for the OS-independent 8869acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8870debug version of the code includes the debug output trace mechanism and 8871has a 8872much larger code and data size. 8873 8874 Previous Release: 8875 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 8876 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 8877 Current Release: 8878 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 8879 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 8880 88812) iASL Compiler/Disassembler and Tools: 8882 8883Debugger: fix a possible hang when evaluating non-methods. Fixes a 8884problem 8885introduced in version 20080701. If the object being evaluated (via 8886execute 8887command) is not a method, the debugger can hang while trying to obtain 8888non- 8889existent parameters. 8890 8891iASL: relax error for using reserved "_T_x" identifiers. These names can 8892appear in a disassembled ASL file if they were emitted by the original 8893compiler. Instead of issuing an error or warning and forcing the user to 8894manually change these names, issue a remark instead. 8895 8896iASL: error if named object created in while loop. Emit an error if any 8897named 8898object is created within a While loop. If allowed, this code will 8899generate 8900a 8901run-time error on the second iteration of the loop when an attempt is 8902made 8903to 8904create the same named object twice. ACPICA bugzilla 730. 8905 8906iASL: Support absolute pathnames for include files. Add support for 8907absolute 8908pathnames within the Include operator. previously, only relative 8909pathnames 8910were supported. 8911 8912iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 8913Descriptor. 8914The ACPI spec requires one interrupt minimum. BZ 423 8915 8916iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 8917Handles the case for the Interrupt Resource Descriptor where 8918the ResourceSource argument is omitted but ResourceSourceIndex 8919is present. Now leave room for the Index. BZ 426 8920 8921iASL: Prevent error message if CondRefOf target does not exist. Fixes 8922cases 8923where an error message is emitted if the target does not exist. BZ 516 8924 8925iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 8926(get ACPI tables on Windows). This was apparently broken in version 892720070919. 8928 8929AcpiXtract: Handle EOF while extracting data. Correctly handle the case 8930where 8931the EOF happens immediately after the last table in the input file. Print 8932completion message. Previously, no message was displayed in this case. 8933 8934---------------------------------------- 893501 July 2008. Summary of changes for version 20080701: 8936 89370) Git source tree / acpica.org 8938 8939Fixed a problem where a git-clone from http would not transfer the entire 8940source tree. 8941 89421) ACPI CA Core Subsystem: 8943 8944Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 8945enable bit. Now performs a read-change-write of the enable register 8946instead 8947of simply writing out the cached enable mask. This will prevent 8948inadvertent 8949enabling of GPEs if a rogue GPE is received during initialization (before 8950GPE 8951handlers are installed.) 8952 8953Implemented a copy for dynamically loaded tables. Previously, dynamically 8954loaded tables were simply mapped - but on some machines this memory is 8955corrupted after suspend. Now copy the table to a local buffer. For the 8956OpRegion case, added checksum verify. Use the table length from the table 8957header, not the region length. For the Buffer case, use the table length 8958also. Dennis Noordsij, Bob Moore. BZ 10734 8959 8960Fixed a problem where the same ACPI table could not be dynamically loaded 8961and 8962unloaded more than once. Without this change, a table cannot be loaded 8963again 8964once it has been loaded/unloaded one time. The current mechanism does not 8965unregister a table upon an unload. During a load, if the same table is 8966found, 8967this no longer returns an exception. BZ 722 8968 8969Fixed a problem where the wrong descriptor length was calculated for the 8970EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 8971EndTag 8972are calculated as 12 bytes long, but the actual length in the internal 8973descriptor is 16 because of the round-up to 8 on the 64-bit build. 8974Reported 8975by Linn Crosetto. BZ 728 8976 8977Fixed a possible memory leak in the Unload operator. The DdbHandle 8978returned 8979by Load() did not have its reference count decremented during unload, 8980leading 8981to a memory leak. Lin Ming. BZ 727 8982 8983Fixed a possible memory leak when deleting thermal/processor objects. Any 8984associated notify handlers (and objects) were not being deleted. Fiodor 8985Suietov. BZ 506 8986 8987Fixed the ordering of the ASCII names in the global mutex table to match 8988the 8989actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 8990only. 8991Vegard Nossum. BZ 726 8992 8993Enhanced the AcpiGetObjectInfo interface to return the number of required 8994arguments if the object is a control method. Added this call to the 8995debugger 8996so the proper number of default arguments are passed to a method. This 8997prevents a warning when executing methods from AcpiExec. 8998 8999Added a check for an invalid handle in AcpiGetObjectInfo. Return 9000AE_BAD_PARAMETER if input handle is invalid. BZ 474 9001 9002Fixed an extraneous warning from exconfig.c on the 64-bit build. 9003 9004Example Code and Data Size: These are the sizes for the OS-independent 9005acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9006debug version of the code includes the debug output trace mechanism and 9007has a 9008much larger code and data size. 9009 9010 Previous Release: 9011 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 9012 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 9013 Current Release: 9014 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 9015 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 9016 90172) iASL Compiler/Disassembler and Tools: 9018 9019iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 9020resource descriptor names. 9021 9022iASL: Detect invalid ASCII characters in input (windows version). Removed 9023the 9024"-CF" flag from the flex compile, enables correct detection of non-ASCII 9025characters in the input. BZ 441 9026 9027iASL: Eliminate warning when result of LoadTable is not used. Eliminate 9028the 9029"result of operation not used" warning when the DDB handle returned from 9030LoadTable is not used. The warning is not needed. BZ 590 9031 9032AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 9033method 9034to 9035pass address of table to the AML. Added option to disable OpRegion 9036simulation 9037to allow creation of an OpRegion with a real address that was passed to 9038_CFG. 9039All of this allows testing of the Load and Unload operators from 9040AcpiExec. 9041 9042Debugger: update tables command for unloaded tables. Handle unloaded 9043tables 9044and use the standard table header output routine. 9045 9046---------------------------------------- 904709 June 2008. Summary of changes for version 20080609: 9048 90491) ACPI CA Core Subsystem: 9050 9051Implemented a workaround for reversed _PRT entries. A significant number 9052of 9053BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 9054change dynamically detects and repairs this problem. Provides 9055compatibility 9056with MS ACPI. BZ 6859 9057 9058Simplified the internal ACPI hardware interfaces to eliminate the locking 9059flag parameter from Register Read/Write. Added a new external interface, 9060AcpiGetRegisterUnlocked. 9061 9062Fixed a problem where the invocation of a GPE control method could hang. 9063This 9064was a regression introduced in 20080514. The new method argument count 9065validation mechanism can enter an infinite loop when a GPE method is 9066dispatched. Problem fixed by removing the obsolete code that passed GPE 9067block 9068information to the notify handler via the control method parameter 9069pointer. 9070 9071Fixed a problem where the _SST execution status was incorrectly returned 9072to 9073the caller of AcpiEnterSleepStatePrep. This was a regression introduced 9074in 907520080514. _SST is optional and a NOT_FOUND exception should never be 9076returned. BZ 716 9077 9078Fixed a problem where a deleted object could be accessed from within the 9079AML 9080parser. This was a regression introduced in version 20080123 as a fix for 9081the 9082Unload operator. Lin Ming. BZ 10669 9083 9084Cleaned up the debug operand dump mechanism. Eliminated unnecessary 9085operands 9086and eliminated the use of a negative index in a loop. Operands are now 9087displayed in the correct order, not backwards. This also fixes a 9088regression 9089introduced in 20080514 on 64-bit systems where the elimination of 9090ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 9091715 9092 9093Fixed a possible memory leak in EvPciConfigRegionSetup where the error 9094exit 9095path did not delete a locally allocated structure. 9096 9097Updated definitions for the DMAR and SRAT tables to synchronize with the 9098current specifications. Includes disassembler support. 9099 9100Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 9101loop termination value was used. Loop terminated on iteration early, 9102missing 9103one mutex. Linn Crosetto 9104 9105Example Code and Data Size: These are the sizes for the OS-independent 9106acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9107debug version of the code includes the debug output trace mechanism and 9108has a 9109much larger code and data size. 9110 9111 Previous Release: 9112 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 9113 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 9114 Current Release: 9115 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 9116 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 9117 91182) iASL Compiler/Disassembler and Tools: 9119 9120Disassembler: Implemented support for EisaId() within _CID objects. Now 9121disassemble integer _CID objects back to EisaId invocations, including 9122multiple integers within _CID packages. Includes single-step support for 9123debugger also. 9124 9125Disassembler: Added support for DMAR and SRAT table definition changes. 9126 9127---------------------------------------- 912814 May 2008. Summary of changes for version 20080514: 9129 91301) ACPI CA Core Subsystem: 9131 9132Fixed a problem where GPEs were enabled too early during the ACPICA 9133initialization. This could lead to "handler not installed" errors on some 9134machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 9135This 9136ensures that all operation regions and devices throughout the namespace 9137have 9138been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 9139 9140Implemented a change to the enter sleep code. Moved execution of the _GTS 9141method to just before setting sleep enable bit. The execution was moved 9142from 9143AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 9144immediately before the SLP_EN bit is set, as per the ACPI specification. 9145Luming Yu, BZ 1653. 9146 9147Implemented a fix to disable unknown GPEs (2nd version). Now always 9148disable 9149the GPE, even if ACPICA thinks that that it is already disabled. It is 9150possible that the AML or some other code has enabled the GPE unbeknownst 9151to 9152the ACPICA code. 9153 9154Fixed a problem with the Field operator where zero-length fields would 9155return 9156an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 9157ASL 9158field declarations in Field(), BankField(), and IndexField(). BZ 10606. 9159 9160Implemented a fix for the Load operator, now load the table at the 9161namespace 9162root. This reverts a change introduced in version 20071019. The table is 9163now 9164loaded at the namespace root even though this goes against the ACPI 9165specification. This provides compatibility with other ACPI 9166implementations. 9167The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 9168Ming. 9169 9170Fixed a problem where ACPICA would not Load() tables with unusual 9171signatures. 9172Now ignore ACPI table signature for Load() operator. Only "SSDT" is 9173acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 9174Therefore, signature validation is worthless. Apparently MS ACPI accepts 9175such 9176signatures, ACPICA must be compatible. BZ 10454. 9177 9178Fixed a possible negative array index in AcpiUtValidateException. Added 9179NULL 9180fields to the exception string arrays to eliminate a -1 subtraction on 9181the 9182SubStatus field. 9183 9184Updated the debug tracking macros to reduce overall code and data size. 9185Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 9186instead of pointers to static strings. Jan Beulich and Bob Moore. 9187 9188Implemented argument count checking in control method invocation via 9189AcpiEvaluateObject. Now emit an error if too few arguments, warning if 9190too 9191many. This applies only to extern programmatic control method execution, 9192not 9193method-to-method calls within the AML. Lin Ming. 9194 9195Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 9196no 9197longer needed, especially with the removal of 16-bit support. It was 9198replaced 9199mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 9200bit 9201on 920232/64-bit platforms is required. 9203 9204Added the C const qualifier for appropriate string constants -- mostly 9205MODULE_NAME and printf format strings. Jan Beulich. 9206 9207Example Code and Data Size: These are the sizes for the OS-independent 9208acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9209debug version of the code includes the debug output trace mechanism and 9210has a 9211much larger code and data size. 9212 9213 Previous Release: 9214 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 9215 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 9216 Current Release: 9217 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 9218 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 9219 92202) iASL Compiler/Disassembler and Tools: 9221 9222Implemented ACPI table revision ID validation in the disassembler. Zero 9223is 9224always invalid. For DSDTs, the ID controls the interpreter integer width. 92251 9226means 32-bit and this is unusual. 2 or greater is 64-bit. 9227 9228---------------------------------------- 922921 March 2008. Summary of changes for version 20080321: 9230 92311) ACPI CA Core Subsystem: 9232 9233Implemented an additional change to the GPE support in order to suppress 9234spurious or stray GPEs. The AcpiEvDisableGpe function will now 9235permanently 9236disable incoming GPEs that are neither enabled nor disabled -- meaning 9237that 9238the GPE is unknown to the system. This should prevent future interrupt 9239floods 9240from that GPE. BZ 6217 (Zhang Rui) 9241 9242Fixed a problem where NULL package elements were not returned to the 9243AcpiEvaluateObject interface correctly. The element was simply ignored 9244instead of returning a NULL ACPI_OBJECT package element, potentially 9245causing 9246a buffer overflow and/or confusing the caller who expected a fixed number 9247of 9248elements. BZ 10132 (Lin Ming, Bob Moore) 9249 9250Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 9251Dword, 9252Qword), Field, BankField, and IndexField operators when invoked from 9253inside 9254an executing control method. In this case, these operators created 9255namespace 9256nodes that were incorrectly left marked as permanent nodes instead of 9257temporary nodes. This could cause a problem if there is race condition 9258between an exiting control method and a running namespace walk. (Reported 9259by 9260Linn Crosetto) 9261 9262Fixed a problem where the CreateField and CreateXXXField operators would 9263incorrectly allow duplicate names (the name of the field) with no 9264exception 9265generated. 9266 9267Implemented several changes for Notify handling. Added support for new 9268Notify 9269values (ACPI 2.0+) and improved the Notify debug output. Notify on 9270PowerResource objects is no longer allowed, as per the ACPI 9271specification. 9272(Bob Moore, Zhang Rui) 9273 9274All Reference Objects returned via the AcpiEvaluateObject interface are 9275now 9276marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 9277for 9278NULL objects - either NULL package elements or unresolved named 9279references. 9280 9281Fixed a problem where an extraneous debug message was produced for 9282package 9283objects (when debugging enabled). The message "Package List length larger 9284than NumElements count" is now produced in the correct case, and is now 9285an 9286error message rather than a debug message. Added a debug message for the 9287opposite case, where NumElements is larger than the Package List (the 9288package 9289will be padded out with NULL elements as per the ACPI spec.) 9290 9291Implemented several improvements for the output of the ASL "Debug" object 9292to 9293clarify and keep all data for a given object on one output line. 9294 9295Fixed two size calculation issues with the variable-length Start 9296Dependent 9297resource descriptor. 9298 9299Example Code and Data Size: These are the sizes for the OS-independent 9300acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9301debug version of the code includes the debug output trace mechanism and 9302has 9303a much larger code and data size. 9304 9305 Previous Release: 9306 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 9307 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 9308 Current Release: 9309 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 9310 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 9311 93122) iASL Compiler/Disassembler and Tools: 9313 9314Fixed a problem with the use of the Switch operator where execution of 9315the 9316containing method by multiple concurrent threads could cause an 9317AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 9318actual Switch opcode, it must be simulated with local named temporary 9319variables and if/else pairs. The solution chosen was to mark any method 9320that 9321uses Switch as Serialized, thus preventing multiple thread entries. BZ 9322469. 9323 9324---------------------------------------- 932513 February 2008. Summary of changes for version 20080213: 9326 93271) ACPI CA Core Subsystem: 9328 9329Implemented another MS compatibility design change for GPE/Notify 9330handling. 9331GPEs are now cleared/enabled asynchronously to allow all pending notifies 9332to 9333complete first. It is expected that the OSL will queue the enable request 9334behind all pending notify requests (may require changes to the local host 9335OSL 9336in AcpiOsExecute). Alexey Starikovskiy. 9337 9338Fixed a problem where buffer and package objects passed as arguments to a 9339control method via the external AcpiEvaluateObject interface could cause 9340an 9341AE_AML_INTERNAL exception depending on the order and type of operators 9342executed by the target control method. 9343 9344Fixed a problem where resource descriptor size optimization could cause a 9345problem when a _CRS resource template is passed to a _SRS method. The 9346_SRS 9347resource template must use the same descriptors (with the same size) as 9348returned from _CRS. This change affects the following resource 9349descriptors: 9350IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 93519487) 9352 9353Fixed a problem where a CopyObject to RegionField, BankField, and 9354IndexField 9355objects did not perform an implicit conversion as it should. These types 9356must 9357retain their initial type permanently as per the ACPI specification. 9358However, 9359a CopyObject to all other object types should not perform an implicit 9360conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 9361 9362Fixed a problem with the AcpiGetDevices interface where the mechanism to 9363match device CIDs did not examine the entire list of available CIDs, but 9364instead aborted on the first non-matching CID. Andrew Patterson. 9365 9366Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 9367was 9368inadvertently changed to return a 16-bit value instead of a 32-bit value, 9369truncating the upper dword of a 64-bit value. This macro is only used to 9370display debug output, so no incorrect calculations were made. Also, 9371reimplemented the macro so that a 64-bit shift is not performed by 9372inefficient compilers. 9373 9374Added missing va_end statements that should correspond with each va_start 9375statement. 9376 9377Example Code and Data Size: These are the sizes for the OS-independent 9378acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9379debug version of the code includes the debug output trace mechanism and 9380has 9381a much larger code and data size. 9382 9383 Previous Release: 9384 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9385 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9386 Current Release: 9387 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 9388 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 9389 93902) iASL Compiler/Disassembler and Tools: 9391 9392Implemented full disassembler support for the following new ACPI tables: 9393BERT, EINJ, and ERST. Implemented partial disassembler support for the 9394complicated HEST table. These tables support the Windows Hardware Error 9395Architecture (WHEA). 9396 9397---------------------------------------- 939823 January 2008. Summary of changes for version 20080123: 9399 94001) ACPI CA Core Subsystem: 9401 9402Added the 2008 copyright to all module headers and signons. This affects 9403virtually every file in the ACPICA core subsystem, the iASL compiler, and 9404the tools/utilities. 9405 9406Fixed a problem with the SizeOf operator when used with Package and 9407Buffer 9408objects. These objects have deferred execution for some arguments, and 9409the 9410execution is now completed before the SizeOf is executed. This problem 9411caused 9412unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 9413BZ 94149558 9415 9416Implemented an enhancement to the interpreter "slack mode". In the 9417absence 9418of 9419an explicit return or an implicitly returned object from the last 9420executed 9421opcode, a control method will now implicitly return an integer of value 0 9422for 9423Microsoft compatibility. (Lin Ming) BZ 392 9424 9425Fixed a problem with the Load operator where an exception was not 9426returned 9427in 9428the case where the table is already loaded. (Lin Ming) BZ 463 9429 9430Implemented support for the use of DDBHandles as an Indexed Reference, as 9431per 9432the ACPI spec. (Lin Ming) BZ 486 9433 9434Implemented support for UserTerm (Method invocation) for the Unload 9435operator 9436as per the ACPI spec. (Lin Ming) BZ 580 9437 9438Fixed a problem with the LoadTable operator where the OemId and 9439OemTableId 9440input strings could cause unexpected failures if they were shorter than 9441the 9442maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 9443 9444Implemented support for UserTerm (Method invocation) for the Unload 9445operator 9446as per the ACPI spec. (Lin Ming) BZ 580 9447 9448Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 9449HEST, 9450IBFT, UEFI, WDAT. Disassembler support is forthcoming. 9451 9452Example Code and Data Size: These are the sizes for the OS-independent 9453acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9454debug version of the code includes the debug output trace mechanism and 9455has 9456a much larger code and data size. 9457 9458 Previous Release: 9459 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9460 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9461 Current Release: 9462 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 9463 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 9464 94652) iASL Compiler/Disassembler and Tools: 9466 9467Implemented support in the disassembler for checksum validation on 9468incoming 9469binary DSDTs and SSDTs. If incorrect, a message is displayed within the 9470table 9471header dump at the start of the disassembly. 9472 9473Implemented additional debugging information in the namespace listing 9474file 9475created during compilation. In addition to the namespace hierarchy, the 9476full 9477pathname to each namespace object is displayed. 9478 9479Fixed a problem with the disassembler where invalid ACPI tables could 9480cause 9481faults or infinite loops. 9482 9483Fixed an unexpected parse error when using the optional "parameter types" 9484list in a control method declaration. (Lin Ming) BZ 397 9485 9486Fixed a problem where two External declarations with the same name did 9487not 9488cause an error (Lin Ming) BZ 509 9489 9490Implemented support for full TermArgs (adding Argx, Localx and method 9491invocation) for the ParameterData parameter to the LoadTable operator. 9492(Lin 9493Ming) BZ 583,587 9494 9495---------------------------------------- 949619 December 2007. Summary of changes for version 20071219: 9497 94981) ACPI CA Core Subsystem: 9499 9500Implemented full support for deferred execution for the TermArg string 9501arguments for DataTableRegion. This enables forward references and full 9502operand resolution for the three string arguments. Similar to 9503OperationRegion 9504deferred argument execution.) Lin Ming. BZ 430 9505 9506Implemented full argument resolution support for the BankValue argument 9507to 9508BankField. Previously, only constants were supported, now any TermArg may 9509be 9510used. Lin Ming BZ 387, 393 9511 9512Fixed a problem with AcpiGetDevices where the search of a branch of the 9513device tree could be terminated prematurely. In accordance with the ACPI 9514specification, the search down the current branch is terminated if a 9515device 9516is both not present and not functional (instead of just not present.) 9517Yakui 9518Zhao. 9519 9520Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 9521if 9522the underlying AML code changed the GPE enable registers. Now, any 9523unknown 9524incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 9525disabled 9526instead of simply ignored. Rui Zhang. 9527 9528Fixed a problem with Index Fields where the Index register was 9529incorrectly 9530limited to a maximum of 32 bits. Now any size may be used. 9531 9532Fixed a couple memory leaks associated with "implicit return" objects 9533when 9534the AML Interpreter slack mode is enabled. Lin Ming BZ 349 9535 9536Example Code and Data Size: These are the sizes for the OS-independent 9537acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9538debug version of the code includes the debug output trace mechanism and 9539has 9540a much larger code and data size. 9541 9542 Previous Release: 9543 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 9544 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9545 Current Release: 9546 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 9547 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 9548 9549---------------------------------------- 955014 November 2007. Summary of changes for version 20071114: 9551 95521) ACPI CA Core Subsystem: 9553 9554Implemented event counters for each of the Fixed Events, the ACPI SCI 9555(interrupt) itself, and control methods executed. Named 9556AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 9557These 9558should be useful for debugging and statistics. 9559 9560Implemented a new external interface, AcpiGetStatistics, to retrieve the 9561contents of the various event counters. Returns the current values for 9562AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 9563AcpiMethodCount. The interface can be expanded in the future if new 9564counters 9565are added. Device drivers should use this interface rather than access 9566the 9567counters directly. 9568 9569Fixed a problem with the FromBCD and ToBCD operators. With some 9570compilers, 9571the ShortDivide function worked incorrectly, causing problems with the 9572BCD 9573functions with large input values. A truncation from 64-bit to 32-bit 9574inadvertently occurred. Internal BZ 435. Lin Ming 9575 9576Fixed a problem with Index references passed as method arguments. 9577References 9578passed as arguments to control methods were dereferenced immediately 9579(before 9580control was passed to the called method). The references are now 9581correctly 9582passed directly to the called method. BZ 5389. Lin Ming 9583 9584Fixed a problem with CopyObject used in conjunction with the Index 9585operator. 9586The reference was incorrectly dereferenced before the copy. The reference 9587is 9588now correctly copied. BZ 5391. Lin Ming 9589 9590Fixed a problem with Control Method references within Package objects. 9591These 9592references are now correctly generated. This completes the package 9593construction overhaul that began in version 20071019. 9594 9595Example Code and Data Size: These are the sizes for the OS-independent 9596acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9597debug version of the code includes the debug output trace mechanism and 9598has 9599a much larger code and data size. 9600 9601 Previous Release: 9602 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 9603 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 9604 Current Release: 9605 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 9606 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 9607 9608 96092) iASL Compiler/Disassembler and Tools: 9610 9611The AcpiExec utility now installs handlers for all of the predefined 9612Operation Region types. New types supported are: PCI_Config, CMOS, and 9613PCIBARTarget. 9614 9615Fixed a problem with the 64-bit version of AcpiExec where the extended 9616(64- 9617bit) address fields for the DSDT and FACS within the FADT were not being 9618used, causing truncation of the upper 32-bits of these addresses. Lin 9619Ming 9620and Bob Moore 9621 9622---------------------------------------- 962319 October 2007. Summary of changes for version 20071019: 9624 96251) ACPI CA Core Subsystem: 9626 9627Fixed a problem with the Alias operator when the target of the alias is a 9628named ASL operator that opens a new scope -- Scope, Device, 9629PowerResource, 9630Processor, and ThermalZone. In these cases, any children of the original 9631operator could not be accessed via the alias, potentially causing 9632unexpected 9633AE_NOT_FOUND exceptions. (BZ 9067) 9634 9635Fixed a problem with the Package operator where all named references were 9636created as object references and left otherwise unresolved. According to 9637the 9638ACPI specification, a Package can only contain Data Objects or references 9639to 9640control methods. The implication is that named references to Data Objects 9641(Integer, Buffer, String, Package, BufferField, Field) should be resolved 9642immediately upon package creation. This is the approach taken with this 9643change. References to all other named objects (Methods, Devices, Scopes, 9644etc.) are all now properly created as reference objects. (BZ 5328) 9645 9646Reverted a change to Notify handling that was introduced in version 964720070508. This version changed the Notify handling from asynchronous to 9648fully synchronous (Device driver Notify handling with respect to the 9649Notify 9650ASL operator). It was found that this change caused more problems than it 9651solved and was removed by most users. 9652 9653Fixed a problem with the Increment and Decrement operators where the type 9654of 9655the target object could be unexpectedly and incorrectly changed. (BZ 353) 9656Lin Ming. 9657 9658Fixed a problem with the Load and LoadTable operators where the table 9659location within the namespace was ignored. Instead, the table was always 9660loaded into the root or current scope. Lin Ming. 9661 9662Fixed a problem with the Load operator when loading a table from a buffer 9663object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 9664 9665Fixed a problem with the Debug object where a store of a DdbHandle 9666reference 9667object to the Debug object could cause a fault. 9668 9669Added a table checksum verification for the Load operator, in the case 9670where 9671the load is from a buffer. (BZ 578). 9672 9673Implemented additional parameter validation for the LoadTable operator. 9674The 9675length of the input strings SignatureString, OemIdString, and OemTableId 9676are 9677now checked for maximum lengths. (BZ 582) Lin Ming. 9678 9679Example Code and Data Size: These are the sizes for the OS-independent 9680acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9681debug version of the code includes the debug output trace mechanism and 9682has 9683a much larger code and data size. 9684 9685 Previous Release: 9686 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 9687 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 9688 Current Release: 9689 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 9690 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 9691 9692 96932) iASL Compiler/Disassembler: 9694 9695Fixed a problem where if a single file was specified and the file did not 9696exist, no error message was emitted. (Introduced with wildcard support in 9697version 20070917.) 9698 9699---------------------------------------- 970019 September 2007. Summary of changes for version 20070919: 9701 97021) ACPI CA Core Subsystem: 9703 9704Designed and implemented new external interfaces to install and remove 9705handlers for ACPI table-related events. Current events that are defined 9706are 9707LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 9708they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 9709AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 9710 9711Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 9712(acpi_serialized option on Linux) could cause some systems to hang during 9713initialization. (Bob Moore) BZ 8171 9714 9715Fixed a problem where objects of certain types (Device, ThermalZone, 9716Processor, PowerResource) can be not found if they are declared and 9717referenced from within the same control method (Lin Ming) BZ 341 9718 9719Example Code and Data Size: These are the sizes for the OS-independent 9720acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9721debug version of the code includes the debug output trace mechanism and 9722has 9723a much larger code and data size. 9724 9725 Previous Release: 9726 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 9727 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 9728 Current Release: 9729 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 9730 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 9731 9732 97332) iASL Compiler/Disassembler: 9734 9735Implemented support to allow multiple files to be compiled/disassembled 9736in 9737a 9738single invocation. This includes command line wildcard support for both 9739the 9740Windows and Unix versions of the compiler. This feature simplifies the 9741disassembly and compilation of multiple ACPI tables in a single 9742directory. 9743 9744---------------------------------------- 974508 May 2007. Summary of changes for version 20070508: 9746 97471) ACPI CA Core Subsystem: 9748 9749Implemented a Microsoft compatibility design change for the handling of 9750the 9751Notify AML operator. Previously, notify handlers were dispatched and 9752executed completely asynchronously in a deferred thread. The new design 9753still executes the notify handlers in a different thread, but the 9754original 9755thread that executed the Notify() now waits at a synchronization point 9756for 9757the notify handler to complete. Some machines depend on a synchronous 9758Notify 9759operator in order to operate correctly. 9760 9761Implemented support to allow Package objects to be passed as method 9762arguments to the external AcpiEvaluateObject interface. Previously, this 9763would return the AE_NOT_IMPLEMENTED exception. This feature had not been 9764implemented since there were no reserved control methods that required it 9765until recently. 9766 9767Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 9768that 9769contained invalid non-zero values in reserved fields could cause later 9770failures because these fields have meaning in later revisions of the 9771FADT. 9772For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 9773fields 9774are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 9775 9776Fixed a problem where the Global Lock handle was not properly updated if 9777a 9778thread that acquired the Global Lock via executing AML code then 9779attempted 9780to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 9781Joe 9782Liu. 9783 9784Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 9785could be corrupted if the interrupt being removed was at the head of the 9786list. Reported by Linn Crosetto. 9787 9788Example Code and Data Size: These are the sizes for the OS-independent 9789acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9790debug version of the code includes the debug output trace mechanism and 9791has 9792a much larger code and data size. 9793 9794 Previous Release: 9795 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9796 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 9797 Current Release: 9798 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 9799 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 9800 9801---------------------------------------- 980220 March 2007. Summary of changes for version 20070320: 9803 98041) ACPI CA Core Subsystem: 9805 9806Implemented a change to the order of interpretation and evaluation of AML 9807operand objects within the AML interpreter. The interpreter now evaluates 9808operands in the order that they appear in the AML stream (and the 9809corresponding ASL code), instead of in the reverse order (after the 9810entire 9811operand list has been parsed). The previous behavior caused several 9812subtle 9813incompatibilities with the Microsoft AML interpreter as well as being 9814somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 9815 9816Implemented a change to the ACPI Global Lock support. All interfaces to 9817the 9818global lock now allow the same thread to acquire the lock multiple times. 9819This affects the AcpiAcquireGlobalLock external interface to the global 9820lock 9821as well as the internal use of the global lock to support AML fields -- a 9822control method that is holding the global lock can now simultaneously 9823access 9824AML fields that require global lock protection. Previously, in both 9825cases, 9826this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 9827to 9828AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 9829Controller. There is no change to the behavior of the AML Acquire 9830operator, 9831as this can already be used to acquire a mutex multiple times by the same 9832thread. BZ 8066. With assistance from Alexey Starikovskiy. 9833 9834Fixed a problem where invalid objects could be referenced in the AML 9835Interpreter after error conditions. During operand evaluation, ensure 9836that 9837the internal "Return Object" field is cleared on error and only valid 9838pointers are stored there. Caused occasional access to deleted objects 9839that 9840resulted in "large reference count" warning messages. Valery Podrezov. 9841 9842Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 9843on 9844deeply nested control method invocations. BZ 7873, local BZ 487. Valery 9845Podrezov. 9846 9847Fixed an internal problem with the handling of result objects on the 9848interpreter result stack. BZ 7872. Valery Podrezov. 9849 9850Removed obsolete code that handled the case where AML_NAME_OP is the 9851target 9852of a reference (Reference.Opcode). This code was no longer necessary. BZ 98537874. Valery Podrezov. 9854 9855Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 9856was 9857a 9858remnant from the previously discontinued 16-bit support. 9859 9860Example Code and Data Size: These are the sizes for the OS-independent 9861acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9862debug version of the code includes the debug output trace mechanism and 9863has 9864a much larger code and data size. 9865 9866 Previous Release: 9867 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9868 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9869 Current Release: 9870 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9871 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 9872 9873---------------------------------------- 987426 January 2007. Summary of changes for version 20070126: 9875 98761) ACPI CA Core Subsystem: 9877 9878Added the 2007 copyright to all module headers and signons. This affects 9879virtually every file in the ACPICA core subsystem, the iASL compiler, and 9880the utilities. 9881 9882Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 9883during a table load. A bad pointer was passed in the case where the DSDT 9884is 9885overridden, causing a fault in this case. 9886 9887Example Code and Data Size: These are the sizes for the OS-independent 9888acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9889debug version of the code includes the debug output trace mechanism and 9890has 9891a much larger code and data size. 9892 9893 Previous Release: 9894 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9895 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9896 Current Release: 9897 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9898 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9899 9900---------------------------------------- 990115 December 2006. Summary of changes for version 20061215: 9902 99031) ACPI CA Core Subsystem: 9904 9905Support for 16-bit ACPICA has been completely removed since it is no 9906longer 9907necessary and it clutters the code. All 16-bit macros, types, and 9908conditional compiles have been removed, cleaning up and simplifying the 9909code 9910across the entire subsystem. DOS support is no longer needed since the 9911bootable Linux firmware kit is now available. 9912 9913The handler for the Global Lock is now removed during AcpiTerminate to 9914enable a clean subsystem restart, via the implementation of the 9915AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 9916HP) 9917 9918Implemented enhancements to the multithreading support within the 9919debugger 9920to enable improved multithreading debugging and evaluation of the 9921subsystem. 9922(Valery Podrezov) 9923 9924Debugger: Enhanced the Statistics/Memory command to emit the total 9925(maximum) 9926memory used during the execution, as well as the maximum memory consumed 9927by 9928each of the various object types. (Valery Podrezov) 9929 9930Example Code and Data Size: These are the sizes for the OS-independent 9931acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9932debug version of the code includes the debug output trace mechanism and 9933has 9934a much larger code and data size. 9935 9936 Previous Release: 9937 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 9938 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 9939 Current Release: 9940 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 9941 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 9942 9943 99442) iASL Compiler/Disassembler and Tools: 9945 9946AcpiExec: Implemented a new option (-m) to display full memory use 9947statistics upon subsystem/program termination. (Valery Podrezov) 9948 9949---------------------------------------- 995009 November 2006. Summary of changes for version 20061109: 9951 99521) ACPI CA Core Subsystem: 9953 9954Optimized the Load ASL operator in the case where the source operand is 9955an 9956operation region. Simply map the operation region memory, instead of 9957performing a bytewise read. (Region must be of type SystemMemory, see 9958below.) 9959 9960Fixed the Load ASL operator for the case where the source operand is a 9961region field. A buffer object is also allowed as the source operand. BZ 9962480 9963 9964Fixed a problem where the Load ASL operator allowed the source operand to 9965be 9966an operation region of any type. It is now restricted to regions of type 9967SystemMemory, as per the ACPI specification. BZ 481 9968 9969Additional cleanup and optimizations for the new Table Manager code. 9970 9971AcpiEnable will now fail if all of the required ACPI tables are not 9972loaded 9973(FADT, FACS, DSDT). BZ 477 9974 9975Added #pragma pack(8/4) to acobject.h to ensure that the structures in 9976this 9977header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 9978manually optimized to be aligned and will not work if it is byte-packed. 9979 9980Example Code and Data Size: These are the sizes for the OS-independent 9981acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9982debug version of the code includes the debug output trace mechanism and 9983has 9984a much larger code and data size. 9985 9986 Previous Release: 9987 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 9988 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 9989 Current Release: 9990 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 9991 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 9992 9993 99942) iASL Compiler/Disassembler and Tools: 9995 9996Fixed a problem where the presence of the _OSI predefined control method 9997within complex expressions could cause an internal compiler error. 9998 9999AcpiExec: Implemented full region support for multiple address spaces. 10000SpaceId is now part of the REGION object. BZ 429 10001 10002---------------------------------------- 1000311 October 2006. Summary of changes for version 20061011: 10004 100051) ACPI CA Core Subsystem: 10006 10007Completed an AML interpreter performance enhancement for control method 10008execution. Previously a 2-pass parse/execution, control methods are now 10009completely parsed and executed in a single pass. This improves overall 10010interpreter performance by ~25%, reduces code size, and reduces CPU stack 10011use. (Valery Podrezov + interpreter changes in version 20051202 that 10012eliminated namespace loading during the pass one parse.) 10013 10014Implemented _CID support for PCI Root Bridge detection. If the _HID does 10015not 10016match the predefined PCI Root Bridge IDs, the _CID list (if present) is 10017now 10018obtained and also checked for an ID match. 10019 10020Implemented additional support for the PCI _ADR execution: upsearch until 10021a 10022device scope is found before executing _ADR. This allows PCI_Config 10023operation regions to be declared locally within control methods 10024underneath 10025PCI device objects. 10026 10027Fixed a problem with a possible race condition between threads executing 10028AcpiWalkNamespace and the AML interpreter. This condition was removed by 10029modifying AcpiWalkNamespace to (by default) ignore all temporary 10030namespace 10031entries created during any concurrent control method execution. An 10032additional namespace race condition is known to exist between 10033AcpiWalkNamespace and the Load/Unload ASL operators and is still under 10034investigation. 10035 10036Restructured the AML ParseLoop function, breaking it into several 10037subfunctions in order to reduce CPU stack use and improve 10038maintainability. 10039(Mikhail Kouzmich) 10040 10041AcpiGetHandle: Fix for parameter validation to detect invalid 10042combinations 10043of prefix handle and pathname. BZ 478 10044 10045Example Code and Data Size: These are the sizes for the OS-independent 10046acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10047debug version of the code includes the debug output trace mechanism and 10048has 10049a much larger code and data size. 10050 10051 Previous Release: 10052 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10053 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 10054 Current Release: 10055 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 10056 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 10057 100582) iASL Compiler/Disassembler and Tools: 10059 10060Ported the -g option (get local ACPI tables) to the new ACPICA Table 10061Manager 10062to restore original behavior. 10063 10064---------------------------------------- 1006527 September 2006. Summary of changes for version 20060927: 10066 100671) ACPI CA Core Subsystem: 10068 10069Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 10070These functions now use a spinlock for mutual exclusion and the interrupt 10071level indication flag is not needed. 10072 10073Fixed a problem with the Global Lock where the lock could appear to be 10074obtained before it is actually obtained. The global lock semaphore was 10075inadvertently created with one unit instead of zero units. (BZ 464) 10076Fiodor 10077Suietov. 10078 10079Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 10080during 10081a read from a buffer or region field. (BZ 458) Fiodor Suietov. 10082 10083Example Code and Data Size: These are the sizes for the OS-independent 10084acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10085debug version of the code includes the debug output trace mechanism and 10086has 10087a much larger code and data size. 10088 10089 Previous Release: 10090 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10091 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 10092 Current Release: 10093 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10094 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 10095 10096 100972) iASL Compiler/Disassembler and Tools: 10098 10099Fixed a compilation problem with the pre-defined Resource Descriptor 10100field 10101names where an "object does not exist" error could be incorrectly 10102generated 10103if the parent ResourceTemplate pathname places the template within a 10104different namespace scope than the current scope. (BZ 7212) 10105 10106Fixed a problem where the compiler could hang after syntax errors 10107detected 10108in an ElseIf construct. (BZ 453) 10109 10110Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 10111operator. An incorrect output filename was produced when this parameter 10112was 10113a null string (""). Now, the original input filename is used as the AML 10114output filename, with an ".aml" extension. 10115 10116Implemented a generic batch command mode for the AcpiExec utility 10117(execute 10118any AML debugger command) (Valery Podrezov). 10119 10120---------------------------------------- 1012112 September 2006. Summary of changes for version 20060912: 10122 101231) ACPI CA Core Subsystem: 10124 10125Enhanced the implementation of the "serialized mode" of the interpreter 10126(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 10127specified, instead of creating a serialization semaphore per control 10128method, 10129the interpreter lock is simply no longer released before a blocking 10130operation during control method execution. This effectively makes the AML 10131Interpreter single-threaded. The overhead of a semaphore per-method is 10132eliminated. 10133 10134Fixed a regression where an error was no longer emitted if a control 10135method 10136attempts to create 2 objects of the same name. This once again returns 10137AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 10138that 10139will dynamically serialize the control method to possible prevent future 10140errors. (BZ 440) 10141 10142Integrated a fix for a problem with PCI Express HID detection in the PCI 10143Config Space setup procedure. (BZ 7145) 10144 10145Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 10146AcpiHwInitialize function - the FADT registers are now validated when the 10147table is loaded. 10148 10149Added two new warnings during FADT verification - 1) if the FADT is 10150larger 10151than the largest known FADT version, and 2) if there is a mismatch 10152between 10153a 1015432-bit block address and the 64-bit X counterpart (when both are non- 10155zero.) 10156 10157Example Code and Data Size: These are the sizes for the OS-independent 10158acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10159debug version of the code includes the debug output trace mechanism and 10160has 10161a much larger code and data size. 10162 10163 Previous Release: 10164 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 10165 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 10166 Current Release: 10167 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 10168 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 10169 10170 101712) iASL Compiler/Disassembler and Tools: 10172 10173Fixed a problem with the implementation of the Switch() operator where 10174the 10175temporary variable was declared too close to the actual Switch, instead 10176of 10177at method level. This could cause a problem if the Switch() operator is 10178within a while loop, causing an error on the second iteration. (BZ 460) 10179 10180Disassembler - fix for error emitted for unknown type for target of scope 10181operator. Now, ignore it and continue. 10182 10183Disassembly of an FADT now verifies the input FADT and reports any errors 10184found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 10185 10186Disassembly of raw data buffers with byte initialization data now 10187prefixes 10188each output line with the current buffer offset. 10189 10190Disassembly of ASF! table now includes all variable-length data fields at 10191the end of some of the subtables. 10192 10193The disassembler now emits a comment if a buffer appears to be a 10194ResourceTemplate, but cannot be disassembled as such because the EndTag 10195does 10196not appear at the very end of the buffer. 10197 10198AcpiExec - Added the "-t" command line option to enable the serialized 10199mode 10200of the AML interpreter. 10201 10202---------------------------------------- 1020331 August 2006. Summary of changes for version 20060831: 10204 102051) ACPI CA Core Subsystem: 10206 10207Miscellaneous fixes for the Table Manager: 10208- Correctly initialize internal common FADT for all 64-bit "X" fields 10209- Fixed a couple table mapping issues during table load 10210- Fixed a couple alignment issues for IA64 10211- Initialize input array to zero in AcpiInitializeTables 10212- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 10213AcpiGetTableByIndex 10214 10215Change for GPE support: when a "wake" GPE is received, all wake GPEs are 10216now 10217immediately disabled to prevent the waking GPE from firing again and to 10218prevent other wake GPEs from interrupting the wake process. 10219 10220Added the AcpiGpeCount global that tracks the number of processed GPEs, 10221to 10222be used for debugging systems with a large number of ACPI interrupts. 10223 10224Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 10225both the ACPICA headers and the disassembler. 10226 10227Example Code and Data Size: These are the sizes for the OS-independent 10228acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10229debug version of the code includes the debug output trace mechanism and 10230has 10231a much larger code and data size. 10232 10233 Previous Release: 10234 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 10235 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 10236 Current Release: 10237 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 10238 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 10239 10240 102412) iASL Compiler/Disassembler and Tools: 10242 10243Disassembler support for the DMAR ACPI table. 10244 10245---------------------------------------- 1024623 August 2006. Summary of changes for version 20060823: 10247 102481) ACPI CA Core Subsystem: 10249 10250The Table Manager component has been completely redesigned and 10251reimplemented. The new design is much simpler, and reduces the overall 10252code 10253and data size of the kernel-resident ACPICA by approximately 5%. Also, it 10254is 10255now possible to obtain the ACPI tables very early during kernel 10256initialization, even before dynamic memory management is initialized. 10257(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 10258 10259Obsolete ACPICA interfaces: 10260 10261- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 10262init 10263time). 10264- AcpiLoadTable: Not needed. 10265- AcpiUnloadTable: Not needed. 10266 10267New ACPICA interfaces: 10268 10269- AcpiInitializeTables: Must be called before the table manager can be 10270used. 10271- AcpiReallocateRootTable: Used to transfer the root table to dynamically 10272allocated memory after it becomes available. 10273- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 10274tables 10275in the RSDT/XSDT. 10276 10277Other ACPICA changes: 10278 10279- AcpiGetTableHeader returns the actual mapped table header, not a copy. 10280Use 10281AcpiOsUnmapMemory to free this mapping. 10282- AcpiGetTable returns the actual mapped table. The mapping is managed 10283internally and must not be deleted by the caller. Use of this interface 10284causes no additional dynamic memory allocation. 10285- AcpiFindRootPointer: Support for physical addressing has been 10286eliminated, 10287it appeared to be unused. 10288- The interface to AcpiOsMapMemory has changed to be consistent with the 10289other allocation interfaces. 10290- The interface to AcpiOsGetRootPointer has changed to eliminate 10291unnecessary 10292parameters. 10293- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 1029464- 10295bit platforms. Was previously 64 bits on all platforms. 10296- The interface to the ACPI Global Lock acquire/release macros have 10297changed 10298slightly since ACPICA no longer keeps a local copy of the FACS with a 10299constructed pointer to the actual global lock. 10300 10301Porting to the new table manager: 10302 10303- AcpiInitializeTables: Must be called once, and can be called anytime 10304during the OS initialization process. It allows the host to specify an 10305area 10306of memory to be used to store the internal version of the RSDT/XSDT (root 10307table). This allows the host to access ACPI tables before memory 10308management 10309is initialized and running. 10310- AcpiReallocateRootTable: Can be called after memory management is 10311running 10312to copy the root table to a dynamically allocated array, freeing up the 10313scratch memory specified in the call to AcpiInitializeTables. 10314- AcpiSubsystemInitialize: This existing interface is independent of the 10315Table Manager, and does not have to be called before the Table Manager 10316can 10317be used, it only must be called before the rest of ACPICA can be used. 10318- ACPI Tables: Some changes have been made to the names and structure of 10319the 10320actbl.h and actbl1.h header files and may require changes to existing 10321code. 10322For example, bitfields have been completely removed because of their lack 10323of 10324portability across C compilers. 10325- Update interfaces to the Global Lock acquire/release macros if local 10326versions are used. (see acwin.h) 10327 10328Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 10329 10330New files: tbfind.c 10331 10332Example Code and Data Size: These are the sizes for the OS-independent 10333acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10334debug version of the code includes the debug output trace mechanism and 10335has 10336a much larger code and data size. 10337 10338 Previous Release: 10339 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10340 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10341 Current Release: 10342 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 10343 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 10344 10345 103462) iASL Compiler/Disassembler and Tools: 10347 10348No changes for this release. 10349 10350---------------------------------------- 1035121 July 2006. Summary of changes for version 20060721: 10352 103531) ACPI CA Core Subsystem: 10354 10355The full source code for the ASL test suite used to validate the iASL 10356compiler and the ACPICA core subsystem is being released with the ACPICA 10357source for the first time. The source is contained in a separate package 10358and 10359consists of over 1100 files that exercise all ASL/AML operators. The 10360package 10361should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 10362Fiodor 10363Suietov) 10364 10365Completed a new design and implementation for support of the ACPI Global 10366Lock. On the OS side, the global lock is now treated as a standard AML 10367mutex. Previously, multiple OS threads could "acquire" the global lock 10368simultaneously. However, this could cause the BIOS to be starved out of 10369the 10370lock - especially in cases such as the Embedded Controller driver where 10371there is a tight coupling between the OS and the BIOS. 10372 10373Implemented an optimization for the ACPI Global Lock interrupt mechanism. 10374The Global Lock interrupt handler no longer queues the execution of a 10375separate thread to signal the global lock semaphore. Instead, the 10376semaphore 10377is signaled directly from the interrupt handler. 10378 10379Implemented support within the AML interpreter for package objects that 10380contain a larger AML length (package list length) than the package 10381element 10382count. In this case, the length of the package is truncated to match the 10383package element count. Some BIOS code apparently modifies the package 10384length 10385on the fly, and this change supports this behavior. Provides 10386compatibility 10387with the MS AML interpreter. (With assistance from Fiodor Suietov) 10388 10389Implemented a temporary fix for the BankValue parameter of a Bank Field 10390to 10391support all constant values, now including the Zero and One opcodes. 10392Evaluation of this parameter must eventually be converted to a full 10393TermArg 10394evaluation. A not-implemented error is now returned (temporarily) for 10395non- 10396constant values for this parameter. 10397 10398Fixed problem reports (Fiodor Suietov) integrated: 10399- Fix for premature object deletion after CopyObject on Operation Region 10400(BZ 10401350) 10402 10403Example Code and Data Size: These are the sizes for the OS-independent 10404acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10405debug version of the code includes the debug output trace mechanism and 10406has 10407a much larger code and data size. 10408 10409 Previous Release: 10410 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 10411 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 10412 Current Release: 10413 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10414 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10415 10416 104172) iASL Compiler/Disassembler and Tools: 10418 10419No changes for this release. 10420 10421---------------------------------------- 1042207 July 2006. Summary of changes for version 20060707: 10423 104241) ACPI CA Core Subsystem: 10425 10426Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 10427that do not allow the initialization of address pointers within packed 10428structures - even though the hardware itself may support misaligned 10429transfers. Some of the debug data structures are packed by default to 10430minimize size. 10431 10432Added an error message for the case where AcpiOsGetThreadId() returns 10433zero. 10434A non-zero value is required by the core ACPICA code to ensure the proper 10435operation of AML mutexes and recursive control methods. 10436 10437The DSDT is now the only ACPI table that determines whether the AML 10438interpreter is in 32-bit or 64-bit mode. Not really a functional change, 10439but 10440the hooks for per-table 32/64 switching have been removed from the code. 10441A 10442clarification to the ACPI specification is forthcoming in ACPI 3.0B. 10443 10444Fixed a possible leak of an OwnerID in the error path of 10445AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 10446deletion to a single place in AcpiTbUninstallTable to correct possible 10447leaks 10448when using the AcpiTbDeleteTablesByType interface (with assistance from 10449Lance Ortiz.) 10450 10451Fixed a problem with Serialized control methods where the semaphore 10452associated with the method could be over-signaled after multiple method 10453invocations. 10454 10455Fixed two issues with the locking of the internal namespace data 10456structure. 10457Both the Unload() operator and AcpiUnloadTable interface now lock the 10458namespace during the namespace deletion associated with the table unload 10459(with assistance from Linn Crosetto.) 10460 10461Fixed problem reports (Valery Podrezov) integrated: 10462- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 10463 10464Fixed problem reports (Fiodor Suietov) integrated: 10465- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 10466- On Address Space handler deletion, needless deactivation call (BZ 374) 10467- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 10468375) 10469- Possible memory leak, Notify sub-objects of Processor, Power, 10470ThermalZone 10471(BZ 376) 10472- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 10473- Minimum Length of RSDT should be validated (BZ 379) 10474- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 10475Handler (BZ (380) 10476- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 10477loaded 10478(BZ 381) 10479 10480Example Code and Data Size: These are the sizes for the OS-independent 10481acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10482debug version of the code includes the debug output trace mechanism and 10483has 10484a much larger code and data size. 10485 10486 Previous Release: 10487 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10488 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10489 Current Release: 10490 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 10491 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 10492 10493 104942) iASL Compiler/Disassembler and Tools: 10495 10496Fixed problem reports: 10497Compiler segfault when ASL contains a long (>1024) String declaration (BZ 10498436) 10499 10500---------------------------------------- 1050123 June 2006. Summary of changes for version 20060623: 10502 105031) ACPI CA Core Subsystem: 10504 10505Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 10506allows the type to be customized to the host OS for improved efficiency 10507(since a spinlock is usually a very small object.) 10508 10509Implemented support for "ignored" bits in the ACPI registers. According 10510to 10511the ACPI specification, these bits should be preserved when writing the 10512registers via a read/modify/write cycle. There are 3 bits preserved in 10513this 10514manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 10515 10516Implemented the initial deployment of new OSL mutex interfaces. Since 10517some 10518host operating systems have separate mutex and semaphore objects, this 10519feature was requested. The base code now uses mutexes (and the new mutex 10520interfaces) wherever a binary semaphore was used previously. However, for 10521the current release, the mutex interfaces are defined as macros to map 10522them 10523to the existing semaphore interfaces. Therefore, no OSL changes are 10524required 10525at this time. (See acpiosxf.h) 10526 10527Fixed several problems with the support for the control method SyncLevel 10528parameter. The SyncLevel now works according to the ACPI specification 10529and 10530in concert with the Mutex SyncLevel parameter, since the current 10531SyncLevel 10532is a property of the executing thread. Mutual exclusion for control 10533methods 10534is now implemented with a mutex instead of a semaphore. 10535 10536Fixed three instances of the use of the C shift operator in the bitfield 10537support code (exfldio.c) to avoid the use of a shift value larger than 10538the 10539target data width. The behavior of C compilers is undefined in this case 10540and 10541can cause unpredictable results, and therefore the case must be detected 10542and 10543avoided. (Fiodor Suietov) 10544 10545Added an info message whenever an SSDT or OEM table is loaded dynamically 10546via the Load() or LoadTable() ASL operators. This should improve 10547debugging 10548capability since it will show exactly what tables have been loaded 10549(beyond 10550the tables present in the RSDT/XSDT.) 10551 10552Example Code and Data Size: These are the sizes for the OS-independent 10553acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10554debug version of the code includes the debug output trace mechanism and 10555has 10556a much larger code and data size. 10557 10558 Previous Release: 10559 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10560 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10561 Current Release: 10562 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 10563 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 10564 10565 105662) iASL Compiler/Disassembler and Tools: 10567 10568No changes for this release. 10569 10570---------------------------------------- 1057108 June 2006. Summary of changes for version 20060608: 10572 105731) ACPI CA Core Subsystem: 10574 10575Converted the locking mutex used for the ACPI hardware to a spinlock. 10576This 10577change should eliminate all problems caused by attempting to acquire a 10578semaphore at interrupt level, and it means that all ACPICA external 10579interfaces that directly access the ACPI hardware can be safely called 10580from 10581interrupt level. OSL code that implements the semaphore interfaces should 10582be 10583able to eliminate any workarounds for being called at interrupt level. 10584 10585Fixed a regression introduced in 20060526 where the ACPI device 10586initialization could be prematurely aborted with an AE_NOT_FOUND if a 10587device 10588did not have an optional _INI method. 10589 10590Fixed an IndexField issue where a write to the Data Register should be 10591limited in size to the AccessSize (width) of the IndexField itself. (BZ 10592433, 10593Fiodor Suietov) 10594 10595Fixed problem reports (Valery Podrezov) integrated: 10596- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 10597 10598Fixed problem reports (Fiodor Suietov) integrated: 10599- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 10600 10601Removed four global mutexes that were obsolete and were no longer being 10602used. 10603 10604Example Code and Data Size: These are the sizes for the OS-independent 10605acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10606debug version of the code includes the debug output trace mechanism and 10607has 10608a much larger code and data size. 10609 10610 Previous Release: 10611 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 10612 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 10613 Current Release: 10614 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 10615 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 10616 10617 106182) iASL Compiler/Disassembler and Tools: 10619 10620Fixed a fault when using -g option (get tables from registry) on Windows 10621machines. 10622 10623Fixed problem reports integrated: 10624- Generate error if CreateField NumBits parameter is zero. (BZ 405) 10625- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 10626Suietov) 10627- Global table revision override (-r) is ignored (BZ 413) 10628 10629---------------------------------------- 1063026 May 2006. Summary of changes for version 20060526: 10631 106321) ACPI CA Core Subsystem: 10633 10634Restructured, flattened, and simplified the internal interfaces for 10635namespace object evaluation - resulting in smaller code, less CPU stack 10636use, 10637and fewer interfaces. (With assistance from Mikhail Kouzmich) 10638 10639Fixed a problem with the CopyObject operator where the first parameter 10640was 10641not typed correctly for the parser, interpreter, compiler, and 10642disassembler. 10643Caused various errors and unexpected behavior. 10644 10645Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 10646produced incorrect results with some C compilers. Since the behavior of C 10647compilers when the shift value is larger than the datatype width is 10648apparently not well defined, the interpreter now detects this condition 10649and 10650simply returns zero as expected in all such cases. (BZ 395) 10651 10652Fixed problem reports (Valery Podrezov) integrated: 10653- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 10654- Allow interpreter to handle nested method declarations (BZ 5361) 10655 10656Fixed problem reports (Fiodor Suietov) integrated: 10657- AcpiTerminate doesn't free debug memory allocation list objects (BZ 10658355) 10659- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 10660356) 10661- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 10662- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 10663- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 10664- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 10665- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 10666- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 10667- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 10668365) 10669- Status of the Global Initialization Handler call not used (BZ 366) 10670- Incorrect object parameter to Global Initialization Handler (BZ 367) 10671 10672Example Code and Data Size: These are the sizes for the OS-independent 10673acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10674debug version of the code includes the debug output trace mechanism and 10675has 10676a much larger code and data size. 10677 10678 Previous Release: 10679 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 10680 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 10681 Current Release: 10682 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 10683 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 10684 10685 106862) iASL Compiler/Disassembler and Tools: 10687 10688Modified the parser to allow the names IO, DMA, and IRQ to be used as 10689namespace identifiers with no collision with existing resource descriptor 10690macro names. This provides compatibility with other ASL compilers and is 10691most useful for disassembly/recompilation of existing tables without 10692parse 10693errors. (With assistance from Thomas Renninger) 10694 10695Disassembler: fixed an incorrect disassembly problem with the 10696DataTableRegion and CopyObject operators. Fixed a possible fault during 10697disassembly of some Alias operators. 10698 10699---------------------------------------- 1070012 May 2006. Summary of changes for version 20060512: 10701 107021) ACPI CA Core Subsystem: 10703 10704Replaced the AcpiOsQueueForExecution interface with a new interface named 10705AcpiOsExecute. The major difference is that the new interface does not 10706have 10707a Priority parameter, this appeared to be useless and has been replaced 10708by 10709a 10710Type parameter. The Type tells the host what type of execution is being 10711requested, such as global lock handler, notify handler, GPE handler, etc. 10712This allows the host to queue and execute the request as appropriate for 10713the 10714request type, possibly using different work queues and different 10715priorities 10716for the various request types. This enables fixes for multithreading 10717deadlock problems such as BZ #5534, and will require changes to all 10718existing 10719OS interface layers. (Alexey Starikovskiy and Bob Moore) 10720 10721Fixed a possible memory leak associated with the support for the so- 10722called 10723"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 10724Suietov) 10725 10726Fixed a problem with the Load() operator where a table load from an 10727operation region could overwrite an internal table buffer by up to 7 10728bytes 10729and cause alignment faults on IPF systems. (With assistance from Luming 10730Yu) 10731 10732Example Code and Data Size: These are the sizes for the OS-independent 10733acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10734debug version of the code includes the debug output trace mechanism and 10735has 10736a much larger code and data size. 10737 10738 Previous Release: 10739 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 10740 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 10741 Current Release: 10742 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 10743 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 10744 10745 10746 107472) iASL Compiler/Disassembler and Tools: 10748 10749Disassembler: Implemented support to cross reference the internal 10750namespace 10751and automatically generate ASL External() statements for symbols not 10752defined 10753within the current table being disassembled. This will simplify the 10754disassembly and recompilation of interdependent tables such as SSDTs 10755since 10756these statements will no longer have to be added manually. 10757 10758Disassembler: Implemented experimental support to automatically detect 10759invocations of external control methods and generate appropriate 10760External() 10761statements. This is problematic because the AML cannot be correctly 10762parsed 10763until the number of arguments for each control method is known. 10764Currently, 10765standalone method invocations and invocations as the source operand of a 10766Store() statement are supported. 10767 10768Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 10769LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 10770LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 10771more readable and likely closer to the original ASL source. 10772 10773---------------------------------------- 1077421 April 2006. Summary of changes for version 20060421: 10775 107761) ACPI CA Core Subsystem: 10777 10778Removed a device initialization optimization introduced in 20051216 where 10779the _STA method was not run unless an _INI was also present for the same 10780device. This optimization could cause problems because it could allow 10781_INI 10782methods to be run within a not-present device subtree. (If a not-present 10783device had no _INI, _STA would not be run, the not-present status would 10784not 10785be discovered, and the children of the device would be incorrectly 10786traversed.) 10787 10788Implemented a new _STA optimization where namespace subtrees that do not 10789contain _INI are identified and ignored during device initialization. 10790Selectively running _STA can significantly improve boot time on large 10791machines (with assistance from Len Brown.) 10792 10793Implemented support for the device initialization case where the returned 10794_STA flags indicate a device not-present but functioning. In this case, 10795_INI 10796is not run, but the device children are examined for presence, as per the 10797ACPI specification. 10798 10799Implemented an additional change to the IndexField support in order to 10800conform to MS behavior. The value written to the Index Register is not 10801simply a byte offset, it is a byte offset in units of the access width of 10802the parent Index Field. (Fiodor Suietov) 10803 10804Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 10805interface is called during the creation of all AML operation regions, and 10806allows the host OS to exert control over what addresses it will allow the 10807AML code to access. Operation Regions whose addresses are disallowed will 10808cause a runtime exception when they are actually accessed (will not 10809affect 10810or abort table loading.) See oswinxf or osunixxf for an example 10811implementation. 10812 10813Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 10814interface allows the host OS to match the various "optional" 10815interface/behavior strings for the _OSI predefined control method as 10816appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 10817for an example implementation. 10818 10819Restructured and corrected various problems in the exception handling 10820code 10821paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 10822(with assistance from Takayoshi Kochi.) 10823 10824Modified the Linux source converter to ignore quoted string literals 10825while 10826converting identifiers from mixed to lower case. This will correct 10827problems 10828with the disassembler and other areas where such strings must not be 10829modified. 10830 10831The ACPI_FUNCTION_* macros no longer require quotes around the function 10832name. This allows the Linux source converter to convert the names, now 10833that 10834the converter ignores quoted strings. 10835 10836Example Code and Data Size: These are the sizes for the OS-independent 10837acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10838debug version of the code includes the debug output trace mechanism and 10839has 10840a much larger code and data size. 10841 10842 Previous Release: 10843 10844 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 10845 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 10846 Current Release: 10847 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 10848 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 10849 10850 108512) iASL Compiler/Disassembler and Tools: 10852 10853Implemented 3 new warnings for iASL, and implemented multiple warning 10854levels 10855(w2 flag). 10856 108571) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 10858not 10859WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 10860check for the possible timeout, a warning is issued. 10861 108622) Useless operators: If an ASL operator does not specify an optional 10863target 10864operand and it also does not use the function return value from the 10865operator, a warning is issued since the operator effectively does 10866nothing. 10867 108683) Unreferenced objects: If a namespace object is created, but never 10869referenced, a warning is issued. This is a warning level 2 since there 10870are 10871cases where this is ok, such as when a secondary table is loaded that 10872uses 10873the unreferenced objects. Even so, care is taken to only flag objects 10874that 10875don't look like they will ever be used. For example, the reserved methods 10876(starting with an underscore) are usually not referenced because it is 10877expected that the OS will invoke them. 10878 10879---------------------------------------- 1088031 March 2006. Summary of changes for version 20060331: 10881 108821) ACPI CA Core Subsystem: 10883 10884Implemented header file support for the following additional ACPI tables: 10885ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 10886support, 10887all current and known ACPI tables are now defined in the ACPICA headers 10888and 10889are available for use by device drivers and other software. 10890 10891Implemented support to allow tables that contain ACPI names with invalid 10892characters to be loaded. Previously, this would cause the table load to 10893fail, but since there are several known cases of such tables on existing 10894machines, this change was made to enable ACPI support for them. Also, 10895this 10896matches the behavior of the Microsoft ACPI implementation. 10897 10898Fixed a couple regressions introduced during the memory optimization in 10899the 1090020060317 release. The namespace node definition required additional 10901reorganization and an internal datatype that had been changed to 8-bit 10902was 10903restored to 32-bit. (Valery Podrezov) 10904 10905Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 10906could be passed through to AcpiOsReleaseObject which is unexpected. Such 10907null pointers are now trapped and ignored, matching the behavior of the 10908previous implementation before the deployment of AcpiOsReleaseObject. 10909(Valery Podrezov, Fiodor Suietov) 10910 10911Fixed a memory mapping leak during the deletion of a SystemMemory 10912operation 10913region where a cached memory mapping was not deleted. This became a 10914noticeable problem for operation regions that are defined within 10915frequently 10916used control methods. (Dana Meyers) 10917 10918Reorganized the ACPI table header files into two main files: one for the 10919ACPI tables consumed by the ACPICA core, and another for the 10920miscellaneous 10921ACPI tables that are consumed by the drivers and other software. The 10922various 10923FADT definitions were merged into one common section and three different 10924tables (ACPI 1.0, 1.0+, and 2.0) 10925 10926Example Code and Data Size: These are the sizes for the OS-independent 10927acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 10928debug version of the code includes the debug output trace mechanism and 10929has 10930a much larger code and data size. 10931 10932 Previous Release: 10933 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 10934 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 10935 Current Release: 10936 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 10937 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 10938 10939 109402) iASL Compiler/Disassembler and Tools: 10941 10942Disassembler: Implemented support to decode and format all non-AML ACPI 10943tables (tables other than DSDTs and SSDTs.) This includes the new tables 10944added to the ACPICA headers, therefore all current and known ACPI tables 10945are 10946supported. 10947 10948Disassembler: The change to allow ACPI names with invalid characters also 10949enables the disassembly of such tables. Invalid characters within names 10950are 10951changed to '*' to make the name printable; the iASL compiler will still 10952generate an error for such names, however, since this is an invalid ACPI 10953character. 10954 10955Implemented an option for AcpiXtract (-a) to extract all tables found in 10956the 10957input file. The default invocation extracts only the DSDTs and SSDTs. 10958 10959Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 10960makefile for the AcpiXtract utility. 10961 10962---------------------------------------- 1096317 March 2006. Summary of changes for version 20060317: 10964 109651) ACPI CA Core Subsystem: 10966 10967Implemented the use of a cache object for all internal namespace nodes. 10968Since there are about 1000 static nodes in a typical system, this will 10969decrease memory use for cache implementations that minimize per- 10970allocation 10971overhead (such as a slab allocator.) 10972 10973Removed the reference count mechanism for internal namespace nodes, since 10974it 10975was deemed unnecessary. This reduces the size of each namespace node by 10976about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 10977case, 10978and 32 bytes for the 64-bit case. 10979 10980Optimized several internal data structures to reduce object size on 64- 10981bit 10982platforms by packing data within the 64-bit alignment. This includes the 10983frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 10984instances corresponding to the namespace objects. 10985 10986Added two new strings for the predefined _OSI method: "Windows 2001.1 10987SP1" 10988and "Windows 2006". 10989 10990Split the allocation tracking mechanism out to a separate file, from 10991utalloc.c to uttrack.c. This mechanism appears to be only useful for 10992application-level code. Kernels may wish to not include uttrack.c in 10993distributions. 10994 10995Removed all remnants of the obsolete ACPI_REPORT_* macros and the 10996associated 10997code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 10998macros.) 10999 11000Code and Data Size: These are the sizes for the acpica.lib produced by 11001the 11002Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11003ACPI 11004driver or OSPM code. The debug version of the code includes the debug 11005output 11006trace mechanism and has a much larger code and data size. Note that these 11007values will vary depending on the efficiency of the compiler and the 11008compiler options used during generation. 11009 11010 Previous Release: 11011 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11012 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 11013 Current Release: 11014 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 11015 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 11016 11017 110182) iASL Compiler/Disassembler and Tools: 11019 11020Implemented an ANSI C version of the acpixtract utility. This version 11021will 11022automatically extract the DSDT and all SSDTs from the input acpidump text 11023file and dump the binary output to separate files. It can also display a 11024summary of the input file including the headers for each table found and 11025will extract any single ACPI table, with any signature. (See 11026source/tools/acpixtract) 11027 11028---------------------------------------- 1102910 March 2006. Summary of changes for version 20060310: 11030 110311) ACPI CA Core Subsystem: 11032 11033Tagged all external interfaces to the subsystem with the new 11034ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 11035assist 11036kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 11037macro. The default definition is NULL. 11038 11039Added the ACPI_THREAD_ID type for the return value from 11040AcpiOsGetThreadId. 11041This allows the host to define this as necessary to simplify kernel 11042integration. The default definition is ACPI_NATIVE_UINT. 11043 11044Fixed two interpreter problems related to error processing, the deletion 11045of 11046objects, and placing invalid pointers onto the internal operator result 11047stack. BZ 6028, 6151 (Valery Podrezov) 11048 11049Increased the reference count threshold where a warning is emitted for 11050large 11051reference counts in order to eliminate unnecessary warnings on systems 11052with 11053large namespaces (especially 64-bit.) Increased the value from 0x400 to 110540x800. 11055 11056Due to universal disagreement as to the meaning of the 'c' in the 11057calloc() 11058function, the ACPI_MEM_CALLOCATE macro has been renamed to 11059ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 11060ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 11061ACPI_FREE. 11062 11063Code and Data Size: These are the sizes for the acpica.lib produced by 11064the 11065Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11066ACPI 11067driver or OSPM code. The debug version of the code includes the debug 11068output 11069trace mechanism and has a much larger code and data size. Note that these 11070values will vary depending on the efficiency of the compiler and the 11071compiler options used during generation. 11072 11073 Previous Release: 11074 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 11075 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 11076 Current Release: 11077 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11078 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 11079 11080 110812) iASL Compiler/Disassembler: 11082 11083Disassembler: implemented support for symbolic resource descriptor 11084references. If a CreateXxxxField operator references a fixed offset 11085within 11086a 11087resource descriptor, a name is assigned to the descriptor and the offset 11088is 11089translated to the appropriate resource tag and pathname. The addition of 11090this support brings the disassembled code very close to the original ASL 11091source code and helps eliminate run-time errors when the disassembled 11092code 11093is modified (and recompiled) in such a way as to invalidate the original 11094fixed offsets. 11095 11096Implemented support for a Descriptor Name as the last parameter to the 11097ASL 11098Register() macro. This parameter was inadvertently left out of the ACPI 11099specification, and will be added for ACPI 3.0b. 11100 11101Fixed a problem where the use of the "_OSI" string (versus the full path 11102"\_OSI") caused an internal compiler error. ("No back ptr to op") 11103 11104Fixed a problem with the error message that occurs when an invalid string 11105is 11106used for a _HID object (such as one with an embedded asterisk: 11107"*PNP010A".) 11108The correct message is now displayed. 11109 11110---------------------------------------- 1111117 February 2006. Summary of changes for version 20060217: 11112 111131) ACPI CA Core Subsystem: 11114 11115Implemented a change to the IndexField support to match the behavior of 11116the 11117Microsoft AML interpreter. The value written to the Index register is now 11118a 11119byte offset, no longer an index based upon the width of the Data 11120register. 11121This should fix IndexField problems seen on some machines where the Data 11122register is not exactly one byte wide. The ACPI specification will be 11123clarified on this point. 11124 11125Fixed a problem where several resource descriptor types could overrun the 11126internal descriptor buffer due to size miscalculation: VendorShort, 11127VendorLong, and Interrupt. This was noticed on IA64 machines, but could 11128affect all platforms. 11129 11130Fixed a problem where individual resource descriptors were misaligned 11131within 11132the internal buffer, causing alignment faults on IA64 platforms. 11133 11134Code and Data Size: These are the sizes for the acpica.lib produced by 11135the 11136Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 11137ACPI 11138driver or OSPM code. The debug version of the code includes the debug 11139output 11140trace mechanism and has a much larger code and data size. Note that these 11141values will vary depending on the efficiency of the compiler and the 11142compiler options used during generation. 11143 11144 Previous Release: 11145 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11146 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 11147 Current Release: 11148 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 11149 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 11150 11151 111522) iASL Compiler/Disassembler: 11153 11154Implemented support for new reserved names: _WDG and _WED are Microsoft 11155extensions for Windows Instrumentation Management, _TDL is a new ACPI- 11156defined method (Throttling Depth Limit.) 11157 11158Fixed a problem where a zero-length VendorShort or VendorLong resource 11159descriptor was incorrectly emitted as a descriptor of length one. 11160 11161---------------------------------------- 1116210 February 2006. Summary of changes for version 20060210: 11163 111641) ACPI CA Core Subsystem: 11165 11166Removed a couple of extraneous ACPI_ERROR messages that appeared during 11167normal execution. These became apparent after the conversion from 11168ACPI_DEBUG_PRINT. 11169 11170Fixed a problem where the CreateField operator could hang if the BitIndex 11171or 11172NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 11173 11174Fixed a problem where a DeRefOf operation on a buffer object incorrectly 11175failed with an exception. This also fixes a couple of related RefOf and 11176DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 11177 11178Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 11179of 11180AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 11181BZ 111825480) 11183 11184Implemented a memory cleanup at the end of the execution of each 11185iteration 11186of an AML While() loop, preventing the accumulation of outstanding 11187objects. 11188(Valery Podrezov, BZ 5427) 11189 11190Eliminated a chunk of duplicate code in the object resolution code. 11191(Valery 11192Podrezov, BZ 5336) 11193 11194Fixed several warnings during the 64-bit code generation. 11195 11196The AcpiSrc source code conversion tool now inserts one line of 11197whitespace 11198after an if() statement that is followed immediately by a comment, 11199improving 11200readability of the Linux code. 11201 11202Code and Data Size: The current and previous library sizes for the core 11203subsystem are shown below. These are the code and data sizes for the 11204acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11205These 11206values do not include any ACPI driver or OSPM code. The debug version of 11207the 11208code includes the debug output trace mechanism and has a much larger code 11209and data size. Note that these values will vary depending on the 11210efficiency 11211of the compiler and the compiler options used during generation. 11212 11213 Previous Release: 11214 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 11215 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 11216 Current Release: 11217 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 11218 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 11219 11220 112212) iASL Compiler/Disassembler: 11222 11223Fixed a problem with the disassembly of a BankField operator with a 11224complex 11225expression for the BankValue parameter. 11226 11227---------------------------------------- 1122827 January 2006. Summary of changes for version 20060127: 11229 112301) ACPI CA Core Subsystem: 11231 11232Implemented support in the Resource Manager to allow unresolved 11233namestring 11234references within resource package objects for the _PRT method. This 11235support 11236is in addition to the previously implemented unresolved reference support 11237within the AML parser. If the interpreter slack mode is enabled, these 11238unresolved references will be passed through to the caller as a NULL 11239package 11240entry. 11241 11242Implemented and deployed new macros and functions for error and warning 11243messages across the subsystem. These macros are simpler and generate less 11244code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 11245ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 11246macros remain defined to allow ACPI drivers time to migrate to the new 11247macros. 11248 11249Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 11250the 11251Acquire/Release Lock OSL interfaces. 11252 11253Fixed a problem where Alias ASL operators are sometimes not correctly 11254resolved, in both the interpreter and the iASL compiler. 11255 11256Fixed several problems with the implementation of the 11257ConcatenateResTemplate 11258ASL operator. As per the ACPI specification, zero length buffers are now 11259treated as a single EndTag. One-length buffers always cause a fatal 11260exception. Non-zero length buffers that do not end with a full 2-byte 11261EndTag 11262cause a fatal exception. 11263 11264Fixed a possible structure overwrite in the AcpiGetObjectInfo external 11265interface. (With assistance from Thomas Renninger) 11266 11267Code and Data Size: The current and previous library sizes for the core 11268subsystem are shown below. These are the code and data sizes for the 11269acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11270These 11271values do not include any ACPI driver or OSPM code. The debug version of 11272the 11273code includes the debug output trace mechanism and has a much larger code 11274and data size. Note that these values will vary depending on the 11275efficiency 11276of the compiler and the compiler options used during generation. 11277 11278 Previous Release: 11279 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 11280 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 11281 Current Release: 11282 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 11283 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 11284 11285 112862) iASL Compiler/Disassembler: 11287 11288Fixed an internal error that was generated for any forward references to 11289ASL 11290Alias objects. 11291 11292---------------------------------------- 1129313 January 2006. Summary of changes for version 20060113: 11294 112951) ACPI CA Core Subsystem: 11296 11297Added 2006 copyright to all module headers and signons. This affects 11298virtually every file in the ACPICA core subsystem, iASL compiler, and the 11299utilities. 11300 11301Enhanced the ACPICA error reporting in order to simplify user migration 11302to 11303the non-debug version of ACPICA. Replaced all instances of the 11304ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 11305debug 11306levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 11307respectively. This preserves all error and warning messages in the non- 11308debug 11309version of the ACPICA code (this has been referred to as the "debug lite" 11310option.) Over 200 cases were converted to create a total of over 380 11311error/warning messages across the ACPICA code. This increases the code 11312and 11313data size of the default non-debug version of the code somewhat (about 1131413K), 11315but all error/warning reporting may be disabled if desired (and code 11316eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 11317configuration option. The size of the debug version of ACPICA remains 11318about 11319the same. 11320 11321Fixed a memory leak within the AML Debugger "Set" command. One object was 11322not properly deleted for every successful invocation of the command. 11323 11324Code and Data Size: The current and previous library sizes for the core 11325subsystem are shown below. These are the code and data sizes for the 11326acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11327These 11328values do not include any ACPI driver or OSPM code. The debug version of 11329the 11330code includes the debug output trace mechanism and has a much larger code 11331and data size. Note that these values will vary depending on the 11332efficiency 11333of the compiler and the compiler options used during generation. 11334 11335 Previous Release: 11336 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 11337 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 11338 Current Release: 11339 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 11340 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 11341 11342 113432) iASL Compiler/Disassembler: 11344 11345The compiler now officially supports the ACPI 3.0a specification that was 11346released on December 30, 2005. (Specification is available at 11347www.acpi.info) 11348 11349---------------------------------------- 1135016 December 2005. Summary of changes for version 20051216: 11351 113521) ACPI CA Core Subsystem: 11353 11354Implemented optional support to allow unresolved names within ASL Package 11355objects. A null object is inserted in the package when a named reference 11356cannot be located in the current namespace. Enabled via the interpreter 11357slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 11358machines 11359that contain such code. 11360 11361Implemented an optimization to the initialization sequence that can 11362improve 11363boot time. During ACPI device initialization, the _STA method is now run 11364if 11365and only if the _INI method exists. The _STA method is used to determine 11366if 11367the device is present; An _INI can only be run if _STA returns present, 11368but 11369it is a waste of time to run the _STA method if the _INI does not exist. 11370(Prototype and assistance from Dong Wei) 11371 11372Implemented use of the C99 uintptr_t for the pointer casting macros if it 11373is 11374available in the current compiler. Otherwise, the default (void *) cast 11375is 11376used as before. 11377 11378Fixed some possible memory leaks found within the execution path of the 11379Break, Continue, If, and CreateField operators. (Valery Podrezov) 11380 11381Fixed a problem introduced in the 20051202 release where an exception is 11382generated during method execution if a control method attempts to declare 11383another method. 11384 11385Moved resource descriptor string constants that are used by both the AML 11386disassembler and AML debugger to the common utilities directory so that 11387these components are independent. 11388 11389Implemented support in the AcpiExec utility (-e switch) to globally 11390ignore 11391exceptions during control method execution (method is not aborted.) 11392 11393Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 11394generation. 11395 11396Code and Data Size: The current and previous library sizes for the core 11397subsystem are shown below. These are the code and data sizes for the 11398acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11399These 11400values do not include any ACPI driver or OSPM code. The debug version of 11401the 11402code includes the debug output trace mechanism and has a much larger code 11403and data size. Note that these values will vary depending on the 11404efficiency 11405of the compiler and the compiler options used during generation. 11406 11407 Previous Release: 11408 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11409 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 11410 Current Release: 11411 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 11412 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 11413 11414 114152) iASL Compiler/Disassembler: 11416 11417Fixed a problem where a CPU stack overflow fault could occur if a 11418recursive 11419method call was made from within a Return statement. 11420 11421---------------------------------------- 1142202 December 2005. Summary of changes for version 20051202: 11423 114241) ACPI CA Core Subsystem: 11425 11426Modified the parsing of control methods to no longer create namespace 11427objects during the first pass of the parse. Objects are now created only 11428during the execute phase, at the moment the namespace creation operator 11429is 11430encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 11431This 11432should eliminate ALREADY_EXISTS exceptions seen on some machines where 11433reentrant control methods are protected by an AML mutex. The mutex will 11434now 11435correctly block multiple threads from attempting to create the same 11436object 11437more than once. 11438 11439Increased the number of available Owner Ids for namespace object tracking 11440from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 11441on 11442some machines with a large number of ACPI tables (either static or 11443dynamic). 11444 11445Fixed a problem with the AcpiExec utility where a fault could occur when 11446the 11447-b switch (batch mode) is used. 11448 11449Enhanced the namespace dump routine to output the owner ID for each 11450namespace object. 11451 11452Code and Data Size: The current and previous library sizes for the core 11453subsystem are shown below. These are the code and data sizes for the 11454acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11455These 11456values do not include any ACPI driver or OSPM code. The debug version of 11457the 11458code includes the debug output trace mechanism and has a much larger code 11459and data size. Note that these values will vary depending on the 11460efficiency 11461of the compiler and the compiler options used during generation. 11462 11463 Previous Release: 11464 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11465 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11466 Current Release: 11467 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11468 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 11469 11470 114712) iASL Compiler/Disassembler: 11472 11473Fixed a parse error during compilation of certain Switch/Case constructs. 11474To 11475simplify the parse, the grammar now allows for multiple Default 11476statements 11477and this error is now detected and flagged during the analysis phase. 11478 11479Disassembler: The disassembly now includes the contents of the original 11480table header within a comment at the start of the file. This includes the 11481name and version of the original ASL compiler. 11482 11483---------------------------------------- 1148417 November 2005. Summary of changes for version 20051117: 11485 114861) ACPI CA Core Subsystem: 11487 11488Fixed a problem in the AML parser where the method thread count could be 11489decremented below zero if any errors occurred during the method parse 11490phase. 11491This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 11492machines. 11493This also fixed a related regression with the mechanism that detects and 11494corrects methods that cannot properly handle reentrancy (related to the 11495deployment of the new OwnerId mechanism.) 11496 11497Eliminated the pre-parsing of control methods (to detect errors) during 11498table load. Related to the problem above, this was causing unwind issues 11499if 11500any errors occurred during the parse, and it seemed to be overkill. A 11501table 11502load should not be aborted if there are problems with any single control 11503method, thus rendering this feature rather pointless. 11504 11505Fixed a problem with the new table-driven resource manager where an 11506internal 11507buffer overflow could occur for small resource templates. 11508 11509Implemented a new external interface, AcpiGetVendorResource. This 11510interface 11511will find and return a vendor-defined resource descriptor within a _CRS 11512or 11513_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 11514Helgaas. 11515 11516Removed the length limit (200) on string objects as per the upcoming ACPI 115173.0A specification. This affects the following areas of the interpreter: 115181) 11519any implicit conversion of a Buffer to a String, 2) a String object 11520result 11521of the ASL Concatenate operator, 3) the String object result of the ASL 11522ToString operator. 11523 11524Fixed a problem in the Windows OS interface layer (OSL) where a 11525WAIT_FOREVER 11526on a semaphore object would incorrectly timeout. This allows the 11527multithreading features of the AcpiExec utility to work properly under 11528Windows. 11529 11530Updated the Linux makefiles for the iASL compiler and AcpiExec to include 11531the recently added file named "utresrc.c". 11532 11533Code and Data Size: The current and previous library sizes for the core 11534subsystem are shown below. These are the code and data sizes for the 11535acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11536These 11537values do not include any ACPI driver or OSPM code. The debug version of 11538the 11539code includes the debug output trace mechanism and has a much larger code 11540and data size. Note that these values will vary depending on the 11541efficiency 11542of the compiler and the compiler options used during generation. 11543 11544 Previous Release: 11545 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11546 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11547 Current Release: 11548 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 11549 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11550 11551 115522) iASL Compiler/Disassembler: 11553 11554Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 11555specification. For the iASL compiler, this means that string literals 11556within 11557the source ASL can be of any length. 11558 11559Enhanced the listing output to dump the AML code for resource descriptors 11560immediately after the ASL code for each descriptor, instead of in a block 11561at 11562the end of the entire resource template. 11563 11564Enhanced the compiler debug output to dump the entire original parse tree 11565constructed during the parse phase, before any transforms are applied to 11566the 11567tree. The transformed tree is dumped also. 11568 11569---------------------------------------- 1157002 November 2005. Summary of changes for version 20051102: 11571 115721) ACPI CA Core Subsystem: 11573 11574Modified the subsystem initialization sequence to improve GPE support. 11575The 11576GPE initialization has been split into two parts in order to defer 11577execution 11578of the _PRW methods (Power Resources for Wake) until after the hardware 11579is 11580fully initialized and the SCI handler is installed. This allows the _PRW 11581methods to access fields protected by the Global Lock. This will fix 11582systems 11583where a NO_GLOBAL_LOCK exception has been seen during initialization. 11584 11585Converted the ACPI internal object disassemble and display code within 11586the 11587AML debugger to fully table-driven operation, reducing code size and 11588increasing maintainability. 11589 11590Fixed a regression with the ConcatenateResTemplate() ASL operator 11591introduced 11592in the 20051021 release. 11593 11594Implemented support for "local" internal ACPI object types within the 11595debugger "Object" command and the AcpiWalkNamespace external interfaces. 11596These local types include RegionFields, BankFields, IndexFields, Alias, 11597and 11598reference objects. 11599 11600Moved common AML resource handling code into a new file, "utresrc.c". 11601This 11602code is shared by both the Resource Manager and the AML Debugger. 11603 11604Code and Data Size: The current and previous library sizes for the core 11605subsystem are shown below. These are the code and data sizes for the 11606acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11607These 11608values do not include any ACPI driver or OSPM code. The debug version of 11609the 11610code includes the debug output trace mechanism and has a much larger code 11611and data size. Note that these values will vary depending on the 11612efficiency 11613of the compiler and the compiler options used during generation. 11614 11615 Previous Release: 11616 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 11617 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 11618 Current Release: 11619 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 11620 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 11621 11622 116232) iASL Compiler/Disassembler: 11624 11625Fixed a problem with very large initializer lists (more than 4000 11626elements) 11627for both Buffer and Package objects where the parse stack could overflow. 11628 11629Enhanced the pre-compile source code scan for non-ASCII characters to 11630ignore 11631characters within comment fields. The scan is now always performed and is 11632no 11633longer optional, detecting invalid characters within a source file 11634immediately rather than during the parse phase or later. 11635 11636Enhanced the ASL grammar definition to force early reductions on all 11637list- 11638style grammar elements so that the overall parse stack usage is greatly 11639reduced. This should improve performance and reduce the possibility of 11640parse 11641stack overflow. 11642 11643Eliminated all reduce/reduce conflicts in the iASL parser generation. 11644Also, 11645with the addition of a %expected statement, the compiler generates from 11646source with no warnings. 11647 11648Fixed a possible segment fault in the disassembler if the input filename 11649does not contain a "dot" extension (Thomas Renninger). 11650 11651---------------------------------------- 1165221 October 2005. Summary of changes for version 20051021: 11653 116541) ACPI CA Core Subsystem: 11655 11656Implemented support for the EM64T and other x86-64 processors. This 11657essentially entails recognizing that these processors support non-aligned 11658memory transfers. Previously, all 64-bit processors were assumed to lack 11659hardware support for non-aligned transfers. 11660 11661Completed conversion of the Resource Manager to nearly full table-driven 11662operation. Specifically, the resource conversion code (convert AML to 11663internal format and the reverse) and the debug code to dump internal 11664resource descriptors are fully table-driven, reducing code and data size 11665and 11666improving maintainability. 11667 11668The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 11669word 11670on 64-bit processors instead of a fixed 32-bit word. (With assistance 11671from 11672Alexey Starikovskiy) 11673 11674Implemented support within the resource conversion code for the Type- 11675Specific byte within the various ACPI 3.0 *WordSpace macros. 11676 11677Fixed some issues within the resource conversion code for the type- 11678specific 11679flags for both Memory and I/O address resource descriptors. For Memory, 11680implemented support for the MTP and TTP flags. For I/O, split the TRS and 11681TTP flags into two separate fields. 11682 11683Code and Data Size: The current and previous library sizes for the core 11684subsystem are shown below. These are the code and data sizes for the 11685acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11686These 11687values do not include any ACPI driver or OSPM code. The debug version of 11688the 11689code includes the debug output trace mechanism and has a much larger code 11690and data size. Note that these values will vary depending on the 11691efficiency 11692of the compiler and the compiler options used during generation. 11693 11694 Previous Release: 11695 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 11696 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 11697 Current Release: 11698 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 11699 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 11700 11701 11702 117032) iASL Compiler/Disassembler: 11704 11705Relaxed a compiler restriction that disallowed a ResourceIndex byte if 11706the 11707corresponding ResourceSource string was not also present in a resource 11708descriptor declaration. This restriction caused problems with existing 11709AML/ASL code that includes the Index byte without the string. When such 11710AML 11711was disassembled, it could not be compiled without modification. Further, 11712the modified code created a resource template with a different size than 11713the 11714original, breaking code that used fixed offsets into the resource 11715template 11716buffer. 11717 11718Removed a recent feature of the disassembler to ignore a lone 11719ResourceIndex 11720byte. This byte is now emitted if present so that the exact AML can be 11721reproduced when the disassembled code is recompiled. 11722 11723Improved comments and text alignment for the resource descriptor code 11724emitted by the disassembler. 11725 11726Implemented disassembler support for the ACPI 3.0 AccessSize field within 11727a 11728Register() resource descriptor. 11729 11730---------------------------------------- 1173130 September 2005. Summary of changes for version 20050930: 11732 117331) ACPI CA Core Subsystem: 11734 11735Completed a major overhaul of the Resource Manager code - specifically, 11736optimizations in the area of the AML/internal resource conversion code. 11737The 11738code has been optimized to simplify and eliminate duplicated code, CPU 11739stack 11740use has been decreased by optimizing function parameters and local 11741variables, and naming conventions across the manager have been 11742standardized 11743for clarity and ease of maintenance (this includes function, parameter, 11744variable, and struct/typedef names.) The update may force changes in some 11745driver code, depending on how resources are handled by the host OS. 11746 11747All Resource Manager dispatch and information tables have been moved to a 11748single location for clarity and ease of maintenance. One new file was 11749created, named "rsinfo.c". 11750 11751The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 11752guarantee that the argument is not evaluated twice, making them less 11753prone 11754to macro side-effects. However, since there exists the possibility of 11755additional stack use if a particular compiler cannot optimize them (such 11756as 11757in the debug generation case), the original macros are optionally 11758available. 11759Note that some invocations of the return_VALUE macro may now cause size 11760mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 11761to 11762eliminate these. (From Randy Dunlap) 11763 11764Implemented a new mechanism to enable debug tracing for individual 11765control 11766methods. A new external interface, AcpiDebugTrace, is provided to enable 11767this mechanism. The intent is to allow the host OS to easily enable and 11768disable tracing for problematic control methods. This interface can be 11769easily exposed to a user or debugger interface if desired. See the file 11770psxface.c for details. 11771 11772AcpiUtCallocate will now return a valid pointer if a length of zero is 11773specified - a length of one is used and a warning is issued. This matches 11774the behavior of AcpiUtAllocate. 11775 11776Code and Data Size: The current and previous library sizes for the core 11777subsystem are shown below. These are the code and data sizes for the 11778acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11779These 11780values do not include any ACPI driver or OSPM code. The debug version of 11781the 11782code includes the debug output trace mechanism and has a much larger code 11783and data size. Note that these values will vary depending on the 11784efficiency 11785of the compiler and the compiler options used during generation. 11786 11787 Previous Release: 11788 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 11789 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 11790 Current Release: 11791 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 11792 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 11793 11794 117952) iASL Compiler/Disassembler: 11796 11797A remark is issued if the effective compile-time length of a package or 11798buffer is zero. Previously, this was a warning. 11799 11800---------------------------------------- 1180116 September 2005. Summary of changes for version 20050916: 11802 118031) ACPI CA Core Subsystem: 11804 11805Fixed a problem within the Resource Manager where support for the Generic 11806Register descriptor was not fully implemented. This descriptor is now 11807fully 11808recognized, parsed, disassembled, and displayed. 11809 11810Completely restructured the Resource Manager code to utilize table-driven 11811dispatch and lookup, eliminating many of the large switch() statements. 11812This 11813reduces overall subsystem code size and code complexity. Affects the 11814resource parsing and construction, disassembly, and debug dump output. 11815 11816Cleaned up and restructured the debug dump output for all resource 11817descriptors. Improved readability of the output and reduced code size. 11818 11819Fixed a problem where changes to internal data structures caused the 11820optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 11821 11822Code and Data Size: The current and previous library sizes for the core 11823subsystem are shown below. These are the code and data sizes for the 11824acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 11825These 11826values do not include any ACPI driver or OSPM code. The debug version of 11827the 11828code includes the debug output trace mechanism and has a much larger code 11829and data size. Note that these values will vary depending on the 11830efficiency 11831of the compiler and the compiler options used during generation. 11832 11833 Previous Release: 11834 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 11835 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 11836 Current Release: 11837 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 11838 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 11839 11840 118412) iASL Compiler/Disassembler: 11842 11843Updated the disassembler to automatically insert an EndDependentFn() 11844macro 11845into the ASL stream if this macro is missing in the original AML code, 11846simplifying compilation of the resulting ASL module. 11847 11848Fixed a problem in the disassembler where a disassembled ResourceSource 11849string (within a large resource descriptor) was not surrounded by quotes 11850and 11851not followed by a comma, causing errors when the resulting ASL module was 11852compiled. Also, escape sequences within a ResourceSource string are now 11853handled correctly (especially "\\") 11854 11855---------------------------------------- 1185602 September 2005. Summary of changes for version 20050902: 11857 118581) ACPI CA Core Subsystem: 11859 11860Fixed a problem with the internal Owner ID allocation and deallocation 11861mechanisms for control method execution and recursive method invocation. 11862This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 11863messages seen on some systems. Recursive method invocation depth is 11864currently limited to 255. (Alexey Starikovskiy) 11865 11866Completely eliminated all vestiges of support for the "module-level 11867executable code" until this support is fully implemented and debugged. 11868This 11869should eliminate the NO_RETURN_VALUE exceptions seen during table load on 11870some systems that invoke this support. 11871 11872Fixed a problem within the resource manager code where the transaction 11873flags 11874for a 64-bit address descriptor were handled incorrectly in the type- 11875specific flag byte. 11876 11877Consolidated duplicate code within the address descriptor resource 11878manager 11879code, reducing overall subsystem code size. 11880 11881Fixed a fault when using the AML debugger "disassemble" command to 11882disassemble individual control methods. 11883 11884Removed references to the "release_current" directory within the Unix 11885release package. 11886 11887Code and Data Size: The current and previous core subsystem library sizes 11888are shown below. These are the code and data sizes for the acpica.lib 11889produced by the Microsoft Visual C++ 6.0 compiler. These values do not 11890include any ACPI driver or OSPM code. The debug version of the code 11891includes 11892the debug output trace mechanism and has a much larger code and data 11893size. 11894Note that these values will vary depending on the efficiency of the 11895compiler 11896and the compiler options used during generation. 11897 11898 Previous Release: 11899 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11900 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 11901 Current Release: 11902 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 11903 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 11904 11905 119062) iASL Compiler/Disassembler: 11907 11908Implemented an error check for illegal duplicate values in the interrupt 11909and 11910dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 11911Interrupt(). 11912 11913Implemented error checking for the Irq() and IrqNoFlags() macros to 11914detect 11915too many values in the interrupt list (16 max) and invalid values in the 11916list (range 0 - 15) 11917 11918The maximum length string literal within an ASL file is now restricted to 11919200 characters as per the ACPI specification. 11920 11921Fixed a fault when using the -ln option (generate namespace listing). 11922 11923Implemented an error check to determine if a DescriptorName within a 11924resource descriptor has already been used within the current scope. 11925 11926---------------------------------------- 1192715 August 2005. Summary of changes for version 20050815: 11928 119291) ACPI CA Core Subsystem: 11930 11931Implemented a full bytewise compare to determine if a table load request 11932is 11933attempting to load a duplicate table. The compare is performed if the 11934table 11935signatures and table lengths match. This will allow different tables with 11936the same OEM Table ID and revision to be loaded - probably against the 11937ACPI 11938specification, but discovered in the field nonetheless. 11939 11940Added the changes.txt logfile to each of the zipped release packages. 11941 11942Code and Data Size: Current and previous core subsystem library sizes are 11943shown below. These are the code and data sizes for the acpica.lib 11944produced 11945by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11946any ACPI driver or OSPM code. The debug version of the code includes the 11947debug output trace mechanism and has a much larger code and data size. 11948Note 11949that these values will vary depending on the efficiency of the compiler 11950and 11951the compiler options used during generation. 11952 11953 Previous Release: 11954 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11955 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 11956 Current Release: 11957 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 11958 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 11959 11960 119612) iASL Compiler/Disassembler: 11962 11963Fixed a problem where incorrect AML code could be generated for Package 11964objects if optimization is disabled (via the -oa switch). 11965 11966Fixed a problem with where incorrect AML code is generated for variable- 11967length packages when the package length is not specified and the number 11968of 11969initializer values is greater than 255. 11970 11971 11972---------------------------------------- 1197329 July 2005. Summary of changes for version 20050729: 11974 119751) ACPI CA Core Subsystem: 11976 11977Implemented support to ignore an attempt to install/load a particular 11978ACPI 11979table more than once. Apparently there exists BIOS code that repeatedly 11980attempts to load the same SSDT upon certain events. With assistance from 11981Venkatesh Pallipadi. 11982 11983Restructured the main interface to the AML parser in order to correctly 11984handle all exceptional conditions. This will prevent leakage of the 11985OwnerId 11986resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 11987some 11988machines. With assistance from Alexey Starikovskiy. 11989 11990Support for "module level code" has been disabled in this version due to 11991a 11992number of issues that have appeared on various machines. The support can 11993be 11994enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 11995compilation. When the issues are fully resolved, the code will be enabled 11996by 11997default again. 11998 11999Modified the internal functions for debug print support to define the 12000FunctionName parameter as a (const char *) for compatibility with 12001compiler 12002built-in macros such as __FUNCTION__, etc. 12003 12004Linted the entire ACPICA source tree for both 32-bit and 64-bit. 12005 12006Implemented support to display an object count summary for the AML 12007Debugger 12008commands Object and Methods. 12009 12010Code and Data Size: Current and previous core subsystem library sizes are 12011shown below. These are the code and data sizes for the acpica.lib 12012produced 12013by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12014any ACPI driver or OSPM code. The debug version of the code includes the 12015debug output trace mechanism and has a much larger code and data size. 12016Note 12017that these values will vary depending on the efficiency of the compiler 12018and 12019the compiler options used during generation. 12020 12021 Previous Release: 12022 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 12023 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 12024 Current Release: 12025 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 12026 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 12027 12028 120292) iASL Compiler/Disassembler: 12030 12031Fixed a regression that appeared in the 20050708 version of the compiler 12032where an error message was inadvertently emitted for invocations of the 12033_OSI 12034reserved control method. 12035 12036---------------------------------------- 1203708 July 2005. Summary of changes for version 20050708: 12038 120391) ACPI CA Core Subsystem: 12040 12041The use of the CPU stack in the debug version of the subsystem has been 12042considerably reduced. Previously, a debug structure was declared in every 12043function that used the debug macros. This structure has been removed in 12044favor of declaring the individual elements as parameters to the debug 12045functions. This reduces the cumulative stack use during nested execution 12046of 12047ACPI function calls at the cost of a small increase in the code size of 12048the 12049debug version of the subsystem. With assistance from Alexey Starikovskiy 12050and 12051Len Brown. 12052 12053Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 12054headers to define a macro that will return the current function name at 12055runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 12056by 12057the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 12058compiler-dependent header, the function name is saved on the CPU stack 12059(one 12060pointer per function.) This mechanism is used because apparently there 12061exists no standard ANSI-C defined macro that that returns the function 12062name. 12063 12064Redesigned and reimplemented the "Owner ID" mechanism used to track 12065namespace objects created/deleted by ACPI tables and control method 12066execution. A bitmap is now used to allocate and free the IDs, thus 12067solving 12068the wraparound problem present in the previous implementation. The size 12069of 12070the namespace node descriptor was reduced by 2 bytes as a result (Alexey 12071Starikovskiy). 12072 12073Removed the UINT32_BIT and UINT16_BIT types that were used for the 12074bitfield 12075flag definitions within the headers for the predefined ACPI tables. These 12076have been replaced by UINT8_BIT in order to increase the code portability 12077of 12078the subsystem. If the use of UINT8 remains a problem, we may be forced to 12079eliminate bitfields entirely because of a lack of portability. 12080 12081Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 12082This 12083is a frequently used function and this improvement increases the 12084performance 12085of the entire subsystem (Alexey Starikovskiy). 12086 12087Fixed several possible memory leaks and the inverse - premature object 12088deletion (Alexey Starikovskiy). 12089 12090Code and Data Size: Current and previous core subsystem library sizes are 12091shown below. These are the code and data sizes for the acpica.lib 12092produced 12093by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12094any ACPI driver or OSPM code. The debug version of the code includes the 12095debug output trace mechanism and has a much larger code and data size. 12096Note 12097that these values will vary depending on the efficiency of the compiler 12098and 12099the compiler options used during generation. 12100 12101 Previous Release: 12102 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 12103 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 12104 Current Release: 12105 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 12106 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 12107 12108---------------------------------------- 1210924 June 2005. Summary of changes for version 20050624: 12110 121111) ACPI CA Core Subsystem: 12112 12113Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 12114the host-defined cache object. This allows the OSL implementation to 12115define 12116and type this object in any manner desired, simplifying the OSL 12117implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 12118Linux, and should be defined in the OS-specific header file for other 12119operating systems as required. 12120 12121Changed the interface to AcpiOsAcquireObject to directly return the 12122requested object as the function return (instead of ACPI_STATUS.) This 12123change was made for performance reasons, since this is the purpose of the 12124interface in the first place. AcpiOsAcquireObject is now similar to the 12125AcpiOsAllocate interface. 12126 12127Implemented a new AML debugger command named Businfo. This command 12128displays 12129information about all devices that have an associate _PRT object. The 12130_ADR, 12131_HID, _UID, and _CID are displayed for these devices. 12132 12133Modified the initialization sequence in AcpiInitializeSubsystem to call 12134the 12135OSL interface AcpiOslInitialize first, before any local initialization. 12136This 12137change was required because the global initialization now calls OSL 12138interfaces. 12139 12140Enhanced the Dump command to display the entire contents of Package 12141objects 12142(including all sub-objects and their values.) 12143 12144Restructured the code base to split some files because of size and/or 12145because the code logically belonged in a separate file. New files are 12146listed 12147below. All makefiles and project files included in the ACPI CA release 12148have 12149been updated. 12150 utilities/utcache.c /* Local cache interfaces */ 12151 utilities/utmutex.c /* Local mutex support */ 12152 utilities/utstate.c /* State object support */ 12153 interpreter/parser/psloop.c /* Main AML parse loop */ 12154 12155Code and Data Size: Current and previous core subsystem library sizes are 12156shown below. These are the code and data sizes for the acpica.lib 12157produced 12158by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12159any ACPI driver or OSPM code. The debug version of the code includes the 12160debug output trace mechanism and has a much larger code and data size. 12161Note 12162that these values will vary depending on the efficiency of the compiler 12163and 12164the compiler options used during generation. 12165 12166 Previous Release: 12167 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 12168 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 12169 Current Release: 12170 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 12171 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 12172 12173 121742) iASL Compiler/Disassembler: 12175 12176Fixed a regression introduced in version 20050513 where the use of a 12177Package 12178object within a Case() statement caused a compile time exception. The 12179original behavior has been restored (a Match() operator is emitted.) 12180 12181---------------------------------------- 1218217 June 2005. Summary of changes for version 20050617: 12183 121841) ACPI CA Core Subsystem: 12185 12186Moved the object cache operations into the OS interface layer (OSL) to 12187allow 12188the host OS to handle these operations if desired (for example, the Linux 12189OSL will invoke the slab allocator). This support is optional; the 12190compile 12191time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 12192cache 12193code in the ACPI CA core. The new OSL interfaces are shown below. See 12194utalloc.c for an example implementation, and acpiosxf.h for the exact 12195interface definitions. With assistance from Alexey Starikovskiy. 12196 AcpiOsCreateCache 12197 AcpiOsDeleteCache 12198 AcpiOsPurgeCache 12199 AcpiOsAcquireObject 12200 AcpiOsReleaseObject 12201 12202Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 12203return 12204and restore a flags parameter. This fits better with many OS lock models. 12205Note: the current execution state (interrupt handler or not) is no longer 12206passed to these interfaces. If necessary, the OSL must determine this 12207state 12208by itself, a simple and fast operation. With assistance from Alexey 12209Starikovskiy. 12210 12211Fixed a problem in the ACPI table handling where a valid XSDT was assumed 12212present if the revision of the RSDP was 2 or greater. According to the 12213ACPI 12214specification, the XSDT is optional in all cases, and the table manager 12215therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 12216Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 12217contain 12218only the RSDT. 12219 12220Fixed an interpreter problem with the Mid() operator in the case of an 12221input 12222string where the resulting output string is of zero length. It now 12223correctly 12224returns a valid, null terminated string object instead of a string object 12225with a null pointer. 12226 12227Fixed a problem with the control method argument handling to allow a 12228store 12229to an Arg object that already contains an object of type Device. The 12230Device 12231object is now correctly overwritten. Previously, an error was returned. 12232 12233 12234Enhanced the debugger Find command to emit object values in addition to 12235the 12236found object pathnames. The output format is the same as the dump 12237namespace 12238command. 12239 12240Enhanced the debugger Set command. It now has the ability to set the 12241value 12242of any Named integer object in the namespace (Previously, only method 12243locals 12244and args could be set.) 12245 12246Code and Data Size: Current and previous core subsystem library sizes are 12247shown below. These are the code and data sizes for the acpica.lib 12248produced 12249by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12250any ACPI driver or OSPM code. The debug version of the code includes the 12251debug output trace mechanism and has a much larger code and data size. 12252Note 12253that these values will vary depending on the efficiency of the compiler 12254and 12255the compiler options used during generation. 12256 12257 Previous Release: 12258 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 12259 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 12260 Current Release: 12261 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 12262 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 12263 12264 122652) iASL Compiler/Disassembler: 12266 12267Fixed a regression in the disassembler where if/else/while constructs 12268were 12269output incorrectly. This problem was introduced in the previous release 12270(20050526). This problem also affected the single-step disassembly in the 12271debugger. 12272 12273Fixed a problem where compiling the reserved _OSI method would randomly 12274(but 12275rarely) produce compile errors. 12276 12277Enhanced the disassembler to emit compilable code in the face of 12278incorrect 12279AML resource descriptors. If the optional ResourceSourceIndex is present, 12280but the ResourceSource is not, do not emit the ResourceSourceIndex in the 12281disassembly. Otherwise, the resulting code cannot be compiled without 12282errors. 12283 12284---------------------------------------- 1228526 May 2005. Summary of changes for version 20050526: 12286 122871) ACPI CA Core Subsystem: 12288 12289Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 12290the module level (not within a control method.) These opcodes are 12291executed 12292exactly once at the time the table is loaded. This type of code was legal 12293up 12294until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 12295in 12296order to provide backwards compatibility with earlier BIOS 12297implementations. 12298This eliminates the "Encountered executable code at module level" warning 12299that was previously generated upon detection of such code. 12300 12301Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 12302inadvertently be generated during the lookup of namespace objects in the 12303second pass parse of ACPI tables and control methods. It appears that 12304this 12305problem could occur during the resolution of forward references to 12306namespace 12307objects. 12308 12309Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 12310corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 12311allows the deadlock detection debug code to be compiled out in the normal 12312case, improving mutex performance (and overall subsystem performance) 12313considerably. 12314 12315Implemented a handful of miscellaneous fixes for possible memory leaks on 12316error conditions and error handling control paths. These fixes were 12317suggested by FreeBSD and the Coverity Prevent source code analysis tool. 12318 12319Added a check for a null RSDT pointer in AcpiGetFirmwareTable 12320(tbxfroot.c) 12321to prevent a fault in this error case. 12322 12323Code and Data Size: Current and previous core subsystem library sizes are 12324shown below. These are the code and data sizes for the acpica.lib 12325produced 12326by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12327any ACPI driver or OSPM code. The debug version of the code includes the 12328debug output trace mechanism and has a much larger code and data size. 12329Note 12330that these values will vary depending on the efficiency of the compiler 12331and 12332the compiler options used during generation. 12333 12334 Previous Release: 12335 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12336 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12337 Current Release: 12338 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 12339 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 12340 12341 123422) iASL Compiler/Disassembler: 12343 12344Implemented support to allow Type 1 and Type 2 ASL operators to appear at 12345the module level (not within a control method.) These operators will be 12346executed once at the time the table is loaded. This type of code was 12347legal 12348up until the release of ACPI 2.0B (2002) and is now supported by the iASL 12349compiler in order to provide backwards compatibility with earlier BIOS 12350ASL 12351code. 12352 12353The ACPI integer width (specified via the table revision ID or the -r 12354override, 32 or 64 bits) is now used internally during compile-time 12355constant 12356folding to ensure that constants are truncated to 32 bits if necessary. 12357Previously, the revision ID value was only emitted in the AML table 12358header. 12359 12360An error message is now generated for the Mutex and Method operators if 12361the 12362SyncLevel parameter is outside the legal range of 0 through 15. 12363 12364Fixed a problem with the Method operator ParameterTypes list handling 12365(ACPI 123663.0). Previously, more than 2 types or 2 arguments generated a syntax 12367error. 12368The actual underlying implementation of method argument typechecking is 12369still under development, however. 12370 12371---------------------------------------- 1237213 May 2005. Summary of changes for version 20050513: 12373 123741) ACPI CA Core Subsystem: 12375 12376Implemented support for PCI Express root bridges -- added support for 12377device 12378PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 12379 12380The interpreter now automatically truncates incoming 64-bit constants to 1238132 12382bits if currently executing out of a 32-bit ACPI table (Revision < 2). 12383This 12384also affects the iASL compiler constant folding. (Note: as per below, the 12385iASL compiler no longer allows 64-bit constants within 32-bit tables.) 12386 12387Fixed a problem where string and buffer objects with "static" pointers 12388(pointers to initialization data within an ACPI table) were not handled 12389consistently. The internal object copy operation now always copies the 12390data 12391to a newly allocated buffer, regardless of whether the source object is 12392static or not. 12393 12394Fixed a problem with the FromBCD operator where an implicit result 12395conversion was improperly performed while storing the result to the 12396target 12397operand. Since this is an "explicit conversion" operator, the implicit 12398conversion should never be performed on the output. 12399 12400Fixed a problem with the CopyObject operator where a copy to an existing 12401named object did not always completely overwrite the existing object 12402stored 12403at name. Specifically, a buffer-to-buffer copy did not delete the 12404existing 12405buffer. 12406 12407Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 12408and 12409structs for consistency. 12410 12411Code and Data Size: Current and previous core subsystem library sizes are 12412shown below. These are the code and data sizes for the acpica.lib 12413produced 12414by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12415any ACPI driver or OSPM code. The debug version of the code includes the 12416debug output trace mechanism and has a much larger code and data size. 12417Note 12418that these values will vary depending on the efficiency of the compiler 12419and 12420the compiler options used during generation. 12421 12422 Previous Release: 12423 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12424 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12425 Current Release: (Same sizes) 12426 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12427 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12428 12429 124302) iASL Compiler/Disassembler: 12431 12432The compiler now emits a warning if an attempt is made to generate a 64- 12433bit 12434integer constant from within a 32-bit ACPI table (Revision < 2). The 12435integer 12436is truncated to 32 bits. 12437 12438Fixed a problem with large package objects: if the static length of the 12439package is greater than 255, the "variable length package" opcode is 12440emitted. Previously, this caused an error. This requires an update to the 12441ACPI spec, since it currently (incorrectly) states that packages larger 12442than 12443255 elements are not allowed. 12444 12445The disassembler now correctly handles variable length packages and 12446packages 12447larger than 255 elements. 12448 12449---------------------------------------- 1245008 April 2005. Summary of changes for version 20050408: 12451 124521) ACPI CA Core Subsystem: 12453 12454Fixed three cases in the interpreter where an "index" argument to an ASL 12455function was still (internally) 32 bits instead of the required 64 bits. 12456This was the Index argument to the Index, Mid, and Match operators. 12457 12458The "strupr" function is now permanently local (AcpiUtStrupr), since this 12459is 12460not a POSIX-defined function and not present in most kernel-level C 12461libraries. All references to the C library strupr function have been 12462removed 12463from the headers. 12464 12465Completed the deployment of static functions/prototypes. All prototypes 12466with 12467the static attribute have been moved from the headers to the owning C 12468file. 12469 12470Implemented an extract option (-e) for the AcpiBin utility (AML binary 12471utility). This option allows the utility to extract individual ACPI 12472tables 12473from the output of AcpiDmp. It provides the same functionality of the 12474acpixtract.pl perl script without the worry of setting the correct perl 12475options. AcpiBin runs on Windows and has not yet been generated/validated 12476in 12477the Linux/Unix environment (but should be soon). 12478 12479Updated and fixed the table dump option for AcpiBin (-d). This option 12480converts a single ACPI table to a hex/ascii file, similar to the output 12481of 12482AcpiDmp. 12483 12484Code and Data Size: Current and previous core subsystem library sizes are 12485shown below. These are the code and data sizes for the acpica.lib 12486produced 12487by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12488any ACPI driver or OSPM code. The debug version of the code includes the 12489debug output trace mechanism and has a much larger code and data size. 12490Note 12491that these values will vary depending on the efficiency of the compiler 12492and 12493the compiler options used during generation. 12494 12495 Previous Release: 12496 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12497 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12498 Current Release: 12499 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 12500 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 12501 12502 125032) iASL Compiler/Disassembler: 12504 12505Disassembler fix: Added a check to ensure that the table length found in 12506the 12507ACPI table header within the input file is not longer than the actual 12508input 12509file size. This indicates some kind of file or table corruption. 12510 12511---------------------------------------- 1251229 March 2005. Summary of changes for version 20050329: 12513 125141) ACPI CA Core Subsystem: 12515 12516An error is now generated if an attempt is made to create a Buffer Field 12517of 12518length zero (A CreateField with a length operand of zero.) 12519 12520The interpreter now issues a warning whenever executable code at the 12521module 12522level is detected during ACPI table load. This will give some idea of the 12523prevalence of this type of code. 12524 12525Implemented support for references to named objects (other than control 12526methods) within package objects. 12527 12528Enhanced package object output for the debug object. Package objects are 12529now 12530completely dumped, showing all elements. 12531 12532Enhanced miscellaneous object output for the debug object. Any object can 12533now be written to the debug object (for example, a device object can be 12534written, and the type of the object will be displayed.) 12535 12536The "static" qualifier has been added to all local functions across both 12537the 12538core subsystem and the iASL compiler. 12539 12540The number of "long" lines (> 80 chars) within the source has been 12541significantly reduced, by about 1/3. 12542 12543Cleaned up all header files to ensure that all CA/iASL functions are 12544prototyped (even static functions) and the formatting is consistent. 12545 12546Two new header files have been added, acopcode.h and acnames.h. 12547 12548Removed several obsolete functions that were no longer used. 12549 12550Code and Data Size: Current and previous core subsystem library sizes are 12551shown below. These are the code and data sizes for the acpica.lib 12552produced 12553by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12554any ACPI driver or OSPM code. The debug version of the code includes the 12555debug output trace mechanism and has a much larger code and data size. 12556Note 12557that these values will vary depending on the efficiency of the compiler 12558and 12559the compiler options used during generation. 12560 12561 Previous Release: 12562 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12563 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 12564 Current Release: 12565 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 12566 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 12567 12568 12569 125702) iASL Compiler/Disassembler: 12571 12572Fixed a problem with the resource descriptor generation/support. For the 12573ResourceSourceIndex and the ResourceSource fields, both must be present, 12574or 12575both must be not present - can't have one without the other. 12576 12577The compiler now returns non-zero from the main procedure if any errors 12578have 12579occurred during the compilation. 12580 12581 12582---------------------------------------- 1258309 March 2005. Summary of changes for version 20050309: 12584 125851) ACPI CA Core Subsystem: 12586 12587The string-to-buffer implicit conversion code has been modified again 12588after 12589a change to the ACPI specification. In order to match the behavior of 12590the 12591other major ACPI implementation, the target buffer is no longer truncated 12592if 12593the source string is smaller than an existing target buffer. This change 12594requires an update to the ACPI spec, and should eliminate the recent 12595AE_AML_BUFFER_LIMIT issues. 12596 12597The "implicit return" support was rewritten to a new algorithm that 12598solves 12599the general case. Rather than attempt to determine when a method is about 12600to 12601exit, the result of every ASL operator is saved momentarily until the 12602very 12603next ASL operator is executed. Therefore, no matter how the method exits, 12604there will always be a saved implicit return value. This feature is only 12605enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 12606eliminate 12607AE_AML_NO_RETURN_VALUE errors when enabled. 12608 12609Implemented implicit conversion support for the predicate (operand) of 12610the 12611If, Else, and While operators. String and Buffer arguments are 12612automatically 12613converted to Integers. 12614 12615Changed the string-to-integer conversion behavior to match the new ACPI 12616errata: "If no integer object exists, a new integer is created. The ASCII 12617string is interpreted as a hexadecimal constant. Each string character is 12618interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 12619with the first character as the most significant digit, and ending with 12620the 12621first non-hexadecimal character or end-of-string." This means that the 12622first 12623non-hex character terminates the conversion and this is the code that was 12624changed. 12625 12626Fixed a problem where the ObjectType operator would fail (fault) when 12627used 12628on an Index of a Package which pointed to a null package element. The 12629operator now properly returns zero (Uninitialized) in this case. 12630 12631Fixed a problem where the While operator used excessive memory by not 12632properly popping the result stack during execution. There was no memory 12633leak 12634after execution, however. (Code provided by Valery Podrezov.) 12635 12636Fixed a problem where references to control methods within Package 12637objects 12638caused the method to be invoked, instead of producing a reference object 12639pointing to the method. 12640 12641Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 12642to 12643improve performance and reduce code size. (Code provided by Alexey 12644Starikovskiy.) 12645 12646Code and Data Size: Current and previous core subsystem library sizes are 12647shown below. These are the code and data sizes for the acpica.lib 12648produced 12649by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12650any ACPI driver or OSPM code. The debug version of the code includes the 12651debug output trace mechanism and has a much larger code and data size. 12652Note 12653that these values will vary depending on the efficiency of the compiler 12654and 12655the compiler options used during generation. 12656 12657 Previous Release: 12658 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12659 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 12660 Current Release: 12661 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12662 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 12663 12664 126652) iASL Compiler/Disassembler: 12666 12667Fixed a problem with the Return operator with no arguments. Since the AML 12668grammar for the byte encoding requires an operand for the Return opcode, 12669the 12670compiler now emits a Return(Zero) for this case. An ACPI specification 12671update has been written for this case. 12672 12673For tables other than the DSDT, namepath optimization is automatically 12674disabled. This is because SSDTs can be loaded anywhere in the namespace, 12675the 12676compiler has no knowledge of where, and thus cannot optimize namepaths. 12677 12678Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 12679inadvertently omitted from the ACPI specification, and will require an 12680update to the spec. 12681 12682The source file scan for ASCII characters is now optional (-a). This 12683change 12684was made because some vendors place non-ascii characters within comments. 12685However, the scan is simply a brute-force byte compare to ensure all 12686characters in the file are in the range 0x00 to 0x7F. 12687 12688Fixed a problem with the CondRefOf operator where the compiler was 12689inappropriately checking for the existence of the target. Since the point 12690of 12691the operator is to check for the existence of the target at run-time, the 12692compiler no longer checks for the target existence. 12693 12694Fixed a problem where errors generated from the internal AML interpreter 12695during constant folding were not handled properly, causing a fault. 12696 12697Fixed a problem with overly aggressive range checking for the Stall 12698operator. The valid range (max 255) is now only checked if the operand is 12699of 12700type Integer. All other operand types cannot be statically checked. 12701 12702Fixed a problem where control method references within the RefOf, 12703DeRefOf, 12704and ObjectType operators were not treated properly. They are now treated 12705as 12706actual references, not method invocations. 12707 12708Fixed and enhanced the "list namespace" option (-ln). This option was 12709broken 12710a number of releases ago. 12711 12712Improved error handling for the Field, IndexField, and BankField 12713operators. 12714The compiler now cleanly reports and recovers from errors in the field 12715component (FieldUnit) list. 12716 12717Fixed a disassembler problem where the optional ResourceDescriptor fields 12718TRS and TTP were not always handled correctly. 12719 12720Disassembler - Comments in output now use "//" instead of "/*" 12721 12722---------------------------------------- 1272328 February 2005. Summary of changes for version 20050228: 12724 127251) ACPI CA Core Subsystem: 12726 12727Fixed a problem where the result of an Index() operator (an object 12728reference) must increment the reference count on the target object for 12729the 12730life of the object reference. 12731 12732Implemented AML Interpreter and Debugger support for the new ACPI 3.0 12733Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 12734WordSpace 12735resource descriptors. 12736 12737Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 12738Space Descriptor" string, indicating interpreter support for the 12739descriptors 12740above. 12741 12742Implemented header support for the new ACPI 3.0 FADT flag bits. 12743 12744Implemented header support for the new ACPI 3.0 PCI Express bits for the 12745PM1 12746status/enable registers. 12747 12748Updated header support for the MADT processor local Apic struct and MADT 12749platform interrupt source struct for new ACPI 3.0 fields. 12750 12751Implemented header support for the SRAT and SLIT ACPI tables. 12752 12753Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 12754flag 12755at runtime. 12756 12757Code and Data Size: Current and previous core subsystem library sizes are 12758shown below. These are the code and data sizes for the acpica.lib 12759produced 12760by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12761any ACPI driver or OSPM code. The debug version of the code includes the 12762debug output trace mechanism and has a much larger code and data size. 12763Note 12764that these values will vary depending on the efficiency of the compiler 12765and 12766the compiler options used during generation. 12767 12768 Previous Release: 12769 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 12770 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 12771 Current Release: 12772 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12773 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 12774 12775 127762) iASL Compiler/Disassembler: 12777 12778Fixed a problem with the internal 64-bit String-to-integer conversion 12779with 12780strings less than two characters long. 12781 12782Fixed a problem with constant folding where the result of the Index() 12783operator can not be considered a constant. This means that Index() cannot 12784be 12785a type3 opcode and this will require an update to the ACPI specification. 12786 12787Disassembler: Implemented support for the TTP, MTP, and TRS resource 12788descriptor fields. These fields were inadvertently ignored and not output 12789in 12790the disassembly of the resource descriptor. 12791 12792 12793 ---------------------------------------- 1279411 February 2005. Summary of changes for version 20050211: 12795 127961) ACPI CA Core Subsystem: 12797 12798Implemented ACPI 3.0 support for implicit conversion within the Match() 12799operator. MatchObjects can now be of type integer, buffer, or string 12800instead 12801of just type integer. Package elements are implicitly converted to the 12802type 12803of the MatchObject. This change aligns the behavior of Match() with the 12804behavior of the other logical operators (LLess(), etc.) It also requires 12805an 12806errata change to the ACPI specification as this support was intended for 12807ACPI 3.0, but was inadvertently omitted. 12808 12809Fixed a problem with the internal implicit "to buffer" conversion. 12810Strings 12811that are converted to buffers will cause buffer truncation if the string 12812is 12813smaller than the target buffer. Integers that are converted to buffers 12814will 12815not cause buffer truncation, only zero extension (both as per the ACPI 12816spec.) The problem was introduced when code was added to truncate the 12817buffer, but this should not be performed in all cases, only the string 12818case. 12819 12820Fixed a problem with the Buffer and Package operators where the 12821interpreter 12822would get confused if two such operators were used as operands to an ASL 12823operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 12824stack was not being popped after the execution of these operators, 12825resulting 12826in an AE_NO_RETURN_VALUE exception. 12827 12828Fixed a problem with constructs of the form Store(Index(...),...). The 12829reference object returned from Index was inadvertently resolved to an 12830actual 12831value. This problem was introduced in version 20050114 when the behavior 12832of 12833Store() was modified to restrict the object types that can be used as the 12834source operand (to match the ACPI specification.) 12835 12836Reduced excessive stack use within the AcpiGetObjectInfo procedure. 12837 12838Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 12839 12840Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 12841 12842Code and Data Size: Current and previous core subsystem library sizes are 12843shown below. These are the code and data sizes for the acpica.lib 12844produced 12845by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12846any ACPI driver or OSPM code. The debug version of the code includes the 12847debug output trace mechanism and has a much larger code and data size. 12848Note 12849that these values will vary depending on the efficiency of the compiler 12850and 12851the compiler options used during generation. 12852 12853 Previous Release: 12854 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 12855 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 12856 Current Release: 12857 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 12858 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 12859 12860 128612) iASL Compiler/Disassembler: 12862 12863Fixed a code generation problem in the constant folding optimization code 12864where incorrect code was generated if a constant was reduced to a buffer 12865object (i.e., a reduced type 5 opcode.) 12866 12867Fixed a typechecking problem for the ToBuffer operator. Caused by an 12868incorrect return type in the internal opcode information table. 12869 12870---------------------------------------- 1287125 January 2005. Summary of changes for version 20050125: 12872 128731) ACPI CA Core Subsystem: 12874 12875Fixed a recently introduced problem with the Global Lock where the 12876underlying semaphore was not created. This problem was introduced in 12877version 20050114, and caused an AE_AML_NO_OPERAND exception during an 12878Acquire() operation on _GL. 12879 12880The local object cache is now optional, and is disabled by default. Both 12881AcpiExec and the iASL compiler enable the cache because they run in user 12882mode and this enhances their performance. #define 12883ACPI_ENABLE_OBJECT_CACHE 12884to enable the local cache. 12885 12886Fixed an issue in the internal function AcpiUtEvaluateObject concerning 12887the 12888optional "implicit return" support where an error was returned if no 12889return 12890object was expected, but one was implicitly returned. AE_OK is now 12891returned 12892in this case and the implicitly returned object is deleted. 12893AcpiUtEvaluateObject is only occasionally used, and only to execute 12894reserved 12895methods such as _STA and _INI where the return type is known up front. 12896 12897Fixed a few issues with the internal convert-to-integer code. It now 12898returns 12899an error if an attempt is made to convert a null string, a string of only 12900blanks/tabs, or a zero-length buffer. This affects both implicit 12901conversion 12902and explicit conversion via the ToInteger() operator. 12903 12904The internal debug code in AcpiUtAcquireMutex has been commented out. It 12905is 12906not needed for normal operation and should increase the performance of 12907the 12908entire subsystem. The code remains in case it is needed for debug 12909purposes 12910again. 12911 12912The AcpiExec source and makefile are included in the Unix/Linux package 12913for 12914the first time. 12915 12916Code and Data Size: Current and previous core subsystem library sizes are 12917shown below. These are the code and data sizes for the acpica.lib 12918produced 12919by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12920any ACPI driver or OSPM code. The debug version of the code includes the 12921debug output trace mechanism and has a much larger code and data size. 12922Note 12923that these values will vary depending on the efficiency of the compiler 12924and 12925the compiler options used during generation. 12926 12927 Previous Release: 12928 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 12929 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 12930 Current Release: 12931 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 12932 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 12933 129342) iASL Compiler/Disassembler: 12935 12936Switch/Case support: A warning is now issued if the type of the Switch 12937value 12938cannot be determined at compile time. For example, Switch(Arg0) will 12939generate the warning, and the type is assumed to be an integer. As per 12940the 12941ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 12942the 12943warning. 12944 12945Switch/Case support: Implemented support for buffer and string objects as 12946the switch value. This is an ACPI 3.0 feature, now that LEqual supports 12947buffers and strings. 12948 12949Switch/Case support: The emitted code for the LEqual() comparisons now 12950uses 12951the switch value as the first operand, not the second. The case value is 12952now 12953the second operand, and this allows the case value to be implicitly 12954converted to the type of the switch value, not the other way around. 12955 12956Switch/Case support: Temporary variables are now emitted immediately 12957within 12958the control method, not at the global level. This means that there are 12959now 1296036 temps available per-method, not 36 temps per-module as was the case 12961with 12962the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 12963 12964---------------------------------------- 1296514 January 2005. Summary of changes for version 20050114: 12966 12967Added 2005 copyright to all module headers. This affects every module in 12968the core subsystem, iASL compiler, and the utilities. 12969 129701) ACPI CA Core Subsystem: 12971 12972Fixed an issue with the String-to-Buffer conversion code where the string 12973null terminator was not included in the buffer after conversion, but 12974there 12975is existing ASL that assumes the string null terminator is included. This 12976is 12977the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 12978introduced in the previous version when the code was updated to correctly 12979set the converted buffer size as per the ACPI specification. The ACPI 12980spec 12981is ambiguous and will be updated to specify that the null terminator must 12982be 12983included in the converted buffer. This also affects the ToBuffer() ASL 12984operator. 12985 12986Fixed a problem with the Mid() ASL/AML operator where it did not work 12987correctly on Buffer objects. Newly created sub-buffers were not being 12988marked 12989as initialized. 12990 12991 12992Fixed a problem in AcpiTbFindTable where incorrect string compares were 12993performed on the OemId and OemTableId table header fields. These fields 12994are 12995not null terminated, so strncmp is now used instead of strcmp. 12996 12997Implemented a restriction on the Store() ASL/AML operator to align the 12998behavior with the ACPI specification. Previously, any object could be 12999used 13000as the source operand. Now, the only objects that may be used are 13001Integers, 13002Buffers, Strings, Packages, Object References, and DDB Handles. If 13003necessary, the original behavior can be restored by enabling the 13004EnableInterpreterSlack flag. 13005 13006Enhanced the optional "implicit return" support to allow an implicit 13007return 13008value from methods that are invoked externally via the AcpiEvaluateObject 13009interface. This enables implicit returns from the _STA and _INI methods, 13010for example. 13011 13012Changed the Revision() ASL/AML operator to return the current version of 13013the 13014AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 13015returned 13016the supported ACPI version (This is the function of the _REV method). 13017 13018Updated the _REV predefined method to return the currently supported 13019version 13020of ACPI, now 3. 13021 13022Implemented batch mode option for the AcpiExec utility (-b). 13023 13024Code and Data Size: Current and previous core subsystem library sizes are 13025shown below. These are the code and data sizes for the acpica.lib 13026produced 13027by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13028any ACPI driver or OSPM code. The debug version of the code includes the 13029debug output trace mechanism and has a much larger code and data size. 13030Note 13031that these values will vary depending on the efficiency of the compiler 13032and 13033the compiler options used during generation. 13034 13035 Previous Release: 13036 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13037 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 13038 Current Release: 13039 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 13040 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 13041 13042---------------------------------------- 1304310 December 2004. Summary of changes for version 20041210: 13044 13045ACPI 3.0 support is nearing completion in both the iASL compiler and the 13046ACPI CA core subsystem. 13047 130481) ACPI CA Core Subsystem: 13049 13050Fixed a problem in the ToDecimalString operator where the resulting 13051string 13052length was incorrectly calculated. The length is now calculated exactly, 13053eliminating incorrect AE_STRING_LIMIT exceptions. 13054 13055Fixed a problem in the ToHexString operator to allow a maximum 200 13056character 13057string to be produced. 13058 13059Fixed a problem in the internal string-to-buffer and buffer-to-buffer 13060copy 13061routine where the length of the resulting buffer was not truncated to the 13062new size (if the target buffer already existed). 13063 13064Code and Data Size: Current and previous core subsystem library sizes are 13065shown below. These are the code and data sizes for the acpica.lib 13066produced 13067by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13068any ACPI driver or OSPM code. The debug version of the code includes the 13069debug output trace mechanism and has a much larger code and data size. 13070Note 13071that these values will vary depending on the efficiency of the compiler 13072and 13073the compiler options used during generation. 13074 13075 Previous Release: 13076 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13077 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 13078 Current Release: 13079 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13080 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 13081 13082 130832) iASL Compiler/Disassembler: 13084 13085Implemented the new ACPI 3.0 resource template macros - DWordSpace, 13086ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 13087Includes support in the disassembler. 13088 13089Implemented support for the new (ACPI 3.0) parameter to the Register 13090macro, 13091AccessSize. 13092 13093Fixed a problem where the _HE resource name for the Interrupt macro was 13094referencing bit 0 instead of bit 1. 13095 13096Implemented check for maximum 255 interrupts in the Interrupt macro. 13097 13098Fixed a problem with the predefined resource descriptor names where 13099incorrect AML code was generated if the offset within the resource buffer 13100was 0 or 1. The optimizer shortened the AML code to a single byte opcode 13101but did not update the surrounding package lengths. 13102 13103Changes to the Dma macro: All channels within the channel list must be 13104in 13105the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 13106optional (default is BusMaster). 13107 13108Implemented check for maximum 7 data bytes for the VendorShort macro. 13109 13110The ReadWrite parameter is now optional for the Memory32 and similar 13111macros. 13112 13113---------------------------------------- 1311403 December 2004. Summary of changes for version 20041203: 13115 131161) ACPI CA Core Subsystem: 13117 13118The low-level field insertion/extraction code (exfldio) has been 13119completely 13120rewritten to eliminate unnecessary complexity, bugs, and boundary 13121conditions. 13122 13123Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 13124ToDecimalString 13125operators where the input operand could be inadvertently deleted if no 13126conversion was necessary (e.g., if the input to ToInteger was an Integer 13127object.) 13128 13129Fixed a problem with the ToDecimalString and ToHexString where an 13130incorrect 13131exception code was returned if the resulting string would be > 200 chars. 13132AE_STRING_LIMIT is now returned. 13133 13134Fixed a problem with the Concatenate operator where AE_OK was always 13135returned, even if the operation failed. 13136 13137Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 13138semaphores to be allocated. 13139 13140Code and Data Size: Current and previous core subsystem library sizes are 13141shown below. These are the code and data sizes for the acpica.lib 13142produced 13143by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13144any ACPI driver or OSPM code. The debug version of the code includes the 13145debug output trace mechanism and has a much larger code and data size. 13146Note 13147that these values will vary depending on the efficiency of the compiler 13148and 13149the compiler options used during generation. 13150 13151 Previous Release: 13152 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13153 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13154 Current Release: 13155 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 13156 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 13157 13158 131592) iASL Compiler/Disassembler: 13160 13161Fixed typechecking for the ObjectType and SizeOf operators. Problem was 13162recently introduced in 20041119. 13163 13164Fixed a problem with the ToUUID macro where the upper nybble of each 13165buffer 13166byte was inadvertently set to zero. 13167 13168---------------------------------------- 1316919 November 2004. Summary of changes for version 20041119: 13170 131711) ACPI CA Core Subsystem: 13172 13173Fixed a problem in the internal ConvertToInteger routine where new 13174integers 13175were not truncated to 32 bits for 32-bit ACPI tables. This routine 13176converts 13177buffers and strings to integers. 13178 13179Implemented support to store a value to an Index() on a String object. 13180This 13181is an ACPI 2.0 feature that had not yet been implemented. 13182 13183Implemented new behavior for storing objects to individual package 13184elements 13185(via the Index() operator). The previous behavior was to invoke the 13186implicit 13187conversion rules if an object was already present at the index. The new 13188behavior is to simply delete any existing object and directly store the 13189new 13190object. Although the ACPI specification seems unclear on this subject, 13191other 13192ACPI implementations behave in this manner. (This is the root of the 13193AE_BAD_HEX_CONSTANT issue.) 13194 13195Modified the RSDP memory scan mechanism to support the extended checksum 13196for 13197ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 13198RSDP signature is found with a valid checksum. 13199 13200Code and Data Size: Current and previous core subsystem library sizes are 13201shown below. These are the code and data sizes for the acpica.lib 13202produced 13203by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13204any ACPI driver or OSPM code. The debug version of the code includes the 13205debug output trace mechanism and has a much larger code and data size. 13206Note 13207that these values will vary depending on the efficiency of the compiler 13208and 13209the compiler options used during generation. 13210 13211 Previous Release: 13212 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13213 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13214 Current Release: 13215 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13216 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13217 13218 132192) iASL Compiler/Disassembler: 13220 13221Fixed a missing semicolon in the aslcompiler.y file. 13222 13223---------------------------------------- 1322405 November 2004. Summary of changes for version 20041105: 13225 132261) ACPI CA Core Subsystem: 13227 13228Implemented support for FADT revision 2. This was an interim table 13229(between 13230ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 13231 13232Implemented optional support to allow uninitialized LocalX and ArgX 13233variables in a control method. The variables are initialized to an 13234Integer 13235object with a value of zero. This support is enabled by setting the 13236AcpiGbl_EnableInterpreterSlack flag to TRUE. 13237 13238Implemented support for Integer objects for the SizeOf operator. Either 132394 13240or 8 is returned, depending on the current integer size (32-bit or 64- 13241bit, 13242depending on the parent table revision). 13243 13244Fixed a problem in the implementation of the SizeOf and ObjectType 13245operators 13246where the operand was resolved to a value too early, causing incorrect 13247return values for some objects. 13248 13249Fixed some possible memory leaks during exceptional conditions. 13250 13251Code and Data Size: Current and previous core subsystem library sizes are 13252shown below. These are the code and data sizes for the acpica.lib 13253produced 13254by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13255any ACPI driver or OSPM code. The debug version of the code includes the 13256debug output trace mechanism and has a much larger code and data size. 13257Note 13258that these values will vary depending on the efficiency of the compiler 13259and 13260the compiler options used during generation. 13261 13262 Previous Release: 13263 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13264 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 13265 Current Release: 13266 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 13267 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 13268 13269 132702) iASL Compiler/Disassembler: 13271 13272Implemented support for all ACPI 3.0 reserved names and methods. 13273 13274Implemented all ACPI 3.0 grammar elements in the front-end, including 13275support for semicolons. 13276 13277Implemented the ACPI 3.0 Function() and ToUUID() macros 13278 13279Fixed a problem in the disassembler where a Scope() operator would not be 13280emitted properly if the target of the scope was in another table. 13281 13282---------------------------------------- 1328315 October 2004. Summary of changes for version 20041015: 13284 13285Note: ACPI CA is currently undergoing an in-depth and complete formal 13286evaluation to test/verify the following areas. Other suggestions are 13287welcome. This will result in an increase in the frequency of releases and 13288the number of bug fixes in the next few months. 13289 - Functional tests for all ASL/AML operators 13290 - All implicit/explicit type conversions 13291 - Bit fields and operation regions 13292 - 64-bit math support and 32-bit-only "truncated" math support 13293 - Exceptional conditions, both compiler and interpreter 13294 - Dynamic object deletion and memory leaks 13295 - ACPI 3.0 support when implemented 13296 - External interfaces to the ACPI subsystem 13297 13298 132991) ACPI CA Core Subsystem: 13300 13301Fixed two alignment issues on 64-bit platforms - within debug statements 13302in 13303AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 13304Address 13305field within the non-aligned ACPI generic address structure. 13306 13307Fixed a problem in the Increment and Decrement operators where incorrect 13308operand resolution could result in the inadvertent modification of the 13309original integer when the integer is passed into another method as an 13310argument and the arg is then incremented/decremented. 13311 13312Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 13313bit 13314BCD number were truncated during conversion. 13315 13316Fixed a problem in the ToDecimal operator where the length of the 13317resulting 13318string could be set incorrectly too long if the input operand was a 13319Buffer 13320object. 13321 13322Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 13323(0) 13324within a buffer would prematurely terminate a compare between buffer 13325objects. 13326 13327Added a check for string overflow (>200 characters as per the ACPI 13328specification) during the Concatenate operator with two string operands. 13329 13330Code and Data Size: Current and previous core subsystem library sizes are 13331shown below. These are the code and data sizes for the acpica.lib 13332produced 13333by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13334any ACPI driver or OSPM code. The debug version of the code includes the 13335debug output trace mechanism and has a much larger code and data size. 13336Note 13337that these values will vary depending on the efficiency of the compiler 13338and 13339the compiler options used during generation. 13340 13341 Previous Release: 13342 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13343 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 13344 Current Release: 13345 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13346 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 13347 13348 13349 133502) iASL Compiler/Disassembler: 13351 13352Allow the use of the ObjectType operator on uninitialized Locals and Args 13353(returns 0 as per the ACPI specification). 13354 13355Fixed a problem where the compiler would fault if there was a syntax 13356error 13357in the FieldName of all of the various CreateXXXField operators. 13358 13359Disallow the use of lower case letters within the EISAID macro, as per 13360the 13361ACPI specification. All EISAID strings must be of the form "UUUNNNN" 13362Where 13363U is an uppercase letter and N is a hex digit. 13364 13365 13366---------------------------------------- 1336706 October 2004. Summary of changes for version 20041006: 13368 133691) ACPI CA Core Subsystem: 13370 13371Implemented support for the ACPI 3.0 Timer operator. This ASL function 13372implements a 64-bit timer with 100 nanosecond granularity. 13373 13374Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 13375implement the ACPI 3.0 Timer operator. This allows the host OS to 13376implement 13377the timer with the best clock available. Also, it keeps the core 13378subsystem 13379out of the clock handling business, since the host OS (usually) performs 13380this function. 13381 13382Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 13383functions use a 64-bit address which is part of the packed ACPI Generic 13384Address Structure. Since the structure is non-aligned, the alignment 13385macros 13386are now used to extract the address to a local variable before use. 13387 13388Fixed a problem where the ToInteger operator assumed all input strings 13389were 13390hexadecimal. The operator now handles both decimal strings and hex 13391strings 13392(prefixed with "0x"). 13393 13394Fixed a problem where the string length in the string object created as a 13395result of the internal ConvertToString procedure could be incorrect. This 13396potentially affected all implicit conversions and also the 13397ToDecimalString 13398and ToHexString operators. 13399 13400Fixed two problems in the ToString operator. If the length parameter was 13401zero, an incorrect string object was created and the value of the input 13402length parameter was inadvertently changed from zero to Ones. 13403 13404Fixed a problem where the optional ResourceSource string in the 13405ExtendedIRQ 13406resource macro was ignored. 13407 13408Simplified the interfaces to the internal division functions, reducing 13409code 13410size and complexity. 13411 13412Code and Data Size: Current and previous core subsystem library sizes are 13413shown below. These are the code and data sizes for the acpica.lib 13414produced 13415by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13416any ACPI driver or OSPM code. The debug version of the code includes the 13417debug output trace mechanism and has a much larger code and data size. 13418Note 13419that these values will vary depending on the efficiency of the compiler 13420and 13421the compiler options used during generation. 13422 13423 Previous Release: 13424 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13425 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13426 Current Release: 13427 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13428 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 13429 13430 134312) iASL Compiler/Disassembler: 13432 13433Implemented support for the ACPI 3.0 Timer operator. 13434 13435Fixed a problem where the Default() operator was inadvertently ignored in 13436a 13437Switch/Case block. This was a problem in the translation of the Switch 13438statement to If...Else pairs. 13439 13440Added support to allow a standalone Return operator, with no parentheses 13441(or 13442operands). 13443 13444Fixed a problem with code generation for the ElseIf operator where the 13445translated Else...If parse tree was improperly constructed leading to the 13446loss of some code. 13447 13448---------------------------------------- 1344922 September 2004. Summary of changes for version 20040922: 13450 134511) ACPI CA Core Subsystem: 13452 13453Fixed a problem with the implementation of the LNot() operator where 13454"Ones" 13455was not returned for the TRUE case. Changed the code to return Ones 13456instead 13457of (!Arg) which was usually 1. This change affects iASL constant folding 13458for 13459this operator also. 13460 13461Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 13462not 13463initialized properly -- Now zero the entire buffer in this case where the 13464buffer already exists. 13465 13466Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 13467Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 13468related code considerably. This will require changes/updates to all OS 13469interface layers (OSLs.) 13470 13471Implemented a new external interface, AcpiInstallExceptionHandler, to 13472allow 13473a system exception handler to be installed. This handler is invoked upon 13474any 13475run-time exception that occurs during control method execution. 13476 13477Added support for the DSDT in AcpiTbFindTable. This allows the 13478DataTableRegion() operator to access the local copy of the DSDT. 13479 13480Code and Data Size: Current and previous core subsystem library sizes are 13481shown below. These are the code and data sizes for the acpica.lib 13482produced 13483by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13484any ACPI driver or OSPM code. The debug version of the code includes the 13485debug output trace mechanism and has a much larger code and data size. 13486Note 13487that these values will vary depending on the efficiency of the compiler 13488and 13489the compiler options used during generation. 13490 13491 Previous Release: 13492 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13493 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13494 Current Release: 13495 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 13496 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 13497 13498 134992) iASL Compiler/Disassembler: 13500 13501Fixed a problem with constant folding and the LNot operator. LNot was 13502returning 1 in the TRUE case, not Ones as per the ACPI specification. 13503This 13504could result in the generation of an incorrect folded/reduced constant. 13505 13506End-Of-File is now allowed within a "//"-style comment. A parse error no 13507longer occurs if such a comment is at the very end of the input ASL 13508source 13509file. 13510 13511Implemented the "-r" option to override the Revision in the table header. 13512The initial use of this option will be to simplify the evaluation of the 13513AML 13514interpreter by allowing a single ASL source module to be compiled for 13515either 1351632-bit or 64-bit integers. 13517 13518 13519---------------------------------------- 1352027 August 2004. Summary of changes for version 20040827: 13521 135221) ACPI CA Core Subsystem: 13523 13524- Implemented support for implicit object conversion in the non-numeric 13525logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 13526and 13527LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 13528the second operand is implicitly converted on the fly to match the type 13529of 13530the first operand. For example: 13531 13532 LEqual (Source1, Source2) 13533 13534Source1 and Source2 must each evaluate to an integer, a string, or a 13535buffer. 13536The data type of Source1 dictates the required type of Source2. Source2 13537is 13538implicitly converted if necessary to match the type of Source1. 13539 13540- Updated and corrected the behavior of the string conversion support. 13541The 13542rules concerning conversion of buffers to strings (according to the ACPI 13543specification) are as follows: 13544 13545ToDecimalString - explicit byte-wise conversion of buffer to string of 13546decimal values (0-255) separated by commas. ToHexString - explicit byte- 13547wise 13548conversion of buffer to string of hex values (0-FF) separated by commas. 13549ToString - explicit byte-wise conversion of buffer to string. Byte-by- 13550byte 13551copy with no transform except NULL terminated. Any other implicit buffer- 13552to- 13553string conversion - byte-wise conversion of buffer to string of hex 13554values 13555(0-FF) separated by spaces. 13556 13557- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 13558 13559- Fixed a problem in AcpiNsGetPathnameLength where the returned length 13560was 13561one byte too short in the case of a node in the root scope. This could 13562cause a fault during debug output. 13563 13564- Code and Data Size: Current and previous core subsystem library sizes 13565are 13566shown below. These are the code and data sizes for the acpica.lib 13567produced 13568by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13569any ACPI driver or OSPM code. The debug version of the code includes the 13570debug output trace mechanism and has a much larger code and data size. 13571Note 13572that these values will vary depending on the efficiency of the compiler 13573and 13574the compiler options used during generation. 13575 13576 Previous Release: 13577 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 13578 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 13579 Current Release: 13580 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 13581 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 13582 13583 135842) iASL Compiler/Disassembler: 13585 13586- Fixed a Linux generation error. 13587 13588 13589---------------------------------------- 1359016 August 2004. Summary of changes for version 20040816: 13591 135921) ACPI CA Core Subsystem: 13593 13594Designed and implemented support within the AML interpreter for the so- 13595called "implicit return". This support returns the result of the last 13596ASL 13597operation within a control method, in the absence of an explicit Return() 13598operator. A few machines depend on this behavior, even though it is not 13599explicitly supported by the ASL language. It is optional support that 13600can 13601be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 13602 13603Removed support for the PCI_Config address space from the internal low 13604level 13605hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 13606support was not used internally, and would not work correctly anyway 13607because 13608the PCI bus number and segment number were not supported. There are 13609separate interfaces for PCI configuration space access because of the 13610unique 13611interface. 13612 13613Code and Data Size: Current and previous core subsystem library sizes are 13614shown below. These are the code and data sizes for the acpica.lib 13615produced 13616by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13617any ACPI driver or OSPM code. The debug version of the code includes the 13618debug output trace mechanism and has a much larger code and data size. 13619Note 13620that these values will vary depending on the efficiency of the compiler 13621and 13622the compiler options used during generation. 13623 13624 Previous Release: 13625 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13626 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 13627 Current Release: 13628 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 13629 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 13630 13631 136322) iASL Compiler/Disassembler: 13633 13634Fixed a problem where constants in ASL expressions at the root level (not 13635within a control method) could be inadvertently truncated during code 13636generation. This problem was introduced in the 20040715 release. 13637 13638 13639---------------------------------------- 1364015 July 2004. Summary of changes for version 20040715: 13641 136421) ACPI CA Core Subsystem: 13643 13644Restructured the internal HW GPE interfaces to pass/track the current 13645state 13646of interrupts (enabled/disabled) in order to avoid possible deadlock and 13647increase flexibility of the interfaces. 13648 13649Implemented a "lexicographical compare" for String and Buffer objects 13650within 13651the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 13652- 13653as per further clarification to the ACPI specification. Behavior is 13654similar 13655to C library "strcmp". 13656 13657Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 13658external function. In the 32-bit non-debug case, the stack use has been 13659reduced from 168 bytes to 32 bytes. 13660 13661Deployed a new run-time configuration flag, 13662AcpiGbl_EnableInterpreterSlack, 13663whose purpose is to allow the AML interpreter to forgive certain bad AML 13664constructs. Default setting is FALSE. 13665 13666Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 13667IO 13668support code. If enabled, it allows field access to go beyond the end of 13669a 13670region definition if the field is within the region length rounded up to 13671the 13672next access width boundary (a common coding error.) 13673 13674Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 13675ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 13676these 13677symbols are lowercase by the latest version of the AcpiSrc tool. 13678 13679The prototypes for the PCI interfaces in acpiosxf.h have been updated to 13680rename "Register" to simply "Reg" to prevent certain compilers from 13681complaining. 13682 13683Code and Data Size: Current and previous core subsystem library sizes are 13684shown below. These are the code and data sizes for the acpica.lib 13685produced 13686by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13687any ACPI driver or OSPM code. The debug version of the code includes the 13688debug output trace mechanism and has a much larger code and data size. 13689Note 13690that these values will vary depending on the efficiency of the compiler 13691and 13692the compiler options used during generation. 13693 13694 Previous Release: 13695 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13696 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 13697 Current Release: 13698 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 13699 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 13700 13701 137022) iASL Compiler/Disassembler: 13703 13704Implemented full support for Package objects within the Case() operator. 13705Note: The Break() operator is currently not supported within Case blocks 13706(TermLists) as there is some question about backward compatibility with 13707ACPI 137081.0 interpreters. 13709 13710 13711Fixed a problem where complex terms were not supported properly within 13712the 13713Switch() operator. 13714 13715Eliminated extraneous warning for compiler-emitted reserved names of the 13716form "_T_x". (Used in Switch/Case operators.) 13717 13718Eliminated optimization messages for "_T_x" objects and small constants 13719within the DefinitionBlock operator. 13720 13721 13722---------------------------------------- 1372315 June 2004. Summary of changes for version 20040615: 13724 137251) ACPI CA Core Subsystem: 13726 13727Implemented support for Buffer and String objects (as per ACPI 2.0) for 13728the 13729following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 13730LLessEqual. 13731 13732All directory names in the entire source package are lower case, as they 13733were in earlier releases. 13734 13735Implemented "Disassemble" command in the AML debugger that will 13736disassemble 13737a single control method. 13738 13739Code and Data Size: Current and previous core subsystem library sizes are 13740shown below. These are the code and data sizes for the acpica.lib 13741produced 13742by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13743any ACPI driver or OSPM code. The debug version of the code includes the 13744debug output trace mechanism and has a much larger code and data size. 13745Note 13746that these values will vary depending on the efficiency of the compiler 13747and 13748the compiler options used during generation. 13749 13750 Previous Release: 13751 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 13752 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 13753 13754 Current Release: 13755 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 13756 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 13757 13758 137592) iASL Compiler/Disassembler: 13760 13761Implemented support for Buffer and String objects (as per ACPI 2.0) for 13762the 13763following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 13764LLessEqual. 13765 13766All directory names in the entire source package are lower case, as they 13767were in earlier releases. 13768 13769Fixed a fault when using the -g or -d<nofilename> options if the FADT was 13770not found. 13771 13772Fixed an issue with the Windows version of the compiler where later 13773versions 13774of Windows place the FADT in the registry under the name "FADT" and not 13775"FACP" as earlier versions did. This applies when using the -g or - 13776d<nofilename> options. The compiler now looks for both strings as 13777necessary. 13778 13779Fixed a problem with compiler namepath optimization where a namepath 13780within 13781the Scope() operator could not be optimized if the namepath was a subpath 13782of 13783the current scope path. 13784 13785---------------------------------------- 1378627 May 2004. Summary of changes for version 20040527: 13787 137881) ACPI CA Core Subsystem: 13789 13790Completed a new design and implementation for EBDA (Extended BIOS Data 13791Area) 13792support in the RSDP scan code. The original code improperly scanned for 13793the 13794EBDA by simply scanning from memory location 0 to 0x400. The correct 13795method 13796is to first obtain the EBDA pointer from within the BIOS data area, then 13797scan 1K of memory starting at the EBDA pointer. There appear to be few 13798if 13799any machines that place the RSDP in the EBDA, however. 13800 13801Integrated a fix for a possible fault during evaluation of BufferField 13802arguments. Obsolete code that was causing the problem was removed. 13803 13804Found and fixed a problem in the Field Support Code where data could be 13805corrupted on a bit field read that starts on an aligned boundary but does 13806not end on an aligned boundary. Merged the read/write "datum length" 13807calculation code into a common procedure. 13808 13809Rolled in a couple of changes to the FreeBSD-specific header. 13810 13811 13812Code and Data Size: Current and previous core subsystem library sizes are 13813shown below. These are the code and data sizes for the acpica.lib 13814produced 13815by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13816any ACPI driver or OSPM code. The debug version of the code includes the 13817debug output trace mechanism and has a much larger code and data size. 13818Note 13819that these values will vary depending on the efficiency of the compiler 13820and 13821the compiler options used during generation. 13822 13823 Previous Release: 13824 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13825 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 13826 Current Release: 13827 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 13828 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 13829 13830 138312) iASL Compiler/Disassembler: 13832 13833Fixed a generation warning produced by some overly-verbose compilers for 13834a 1383564-bit constant. 13836 13837---------------------------------------- 1383814 May 2004. Summary of changes for version 20040514: 13839 138401) ACPI CA Core Subsystem: 13841 13842Fixed a problem where hardware GPE enable bits sometimes not set properly 13843during and after GPE method execution. Result of 04/27 changes. 13844 13845Removed extra "clear all GPEs" when sleeping/waking. 13846 13847Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 13848AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 13849to 13850the new AcpiEv* calls as appropriate. 13851 13852ACPI_OS_NAME was removed from the OS-specific headers. The default name 13853is 13854now "Microsoft Windows NT" for maximum compatibility. However this can 13855be 13856changed by modifying the acconfig.h file. 13857 13858Allow a single invocation of AcpiInstallNotifyHandler for a handler that 13859traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 13860 13861Run _INI methods on ThermalZone objects. This is against the ACPI 13862specification, but there is apparently ASL code in the field that has 13863these 13864_INI methods, and apparently "other" AML interpreters execute them. 13865 13866Performed a full 16/32/64 bit lint that resulted in some small changes. 13867 13868Added a sleep simulation command to the AML debugger to test sleep code. 13869 13870Code and Data Size: Current and previous core subsystem library sizes are 13871shown below. These are the code and data sizes for the acpica.lib 13872produced 13873by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13874any ACPI driver or OSPM code. The debug version of the code includes the 13875debug output trace mechanism and has a much larger code and data size. 13876Note 13877that these values will vary depending on the efficiency of the compiler 13878and 13879the compiler options used during generation. 13880 13881 Previous Release: 13882 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13883 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 13884 Current Release: 13885 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 13886 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 13887 13888---------------------------------------- 1388927 April 2004. Summary of changes for version 20040427: 13890 138911) ACPI CA Core Subsystem: 13892 13893Completed a major overhaul of the GPE handling within ACPI CA. There are 13894now three types of GPEs: wake-only, runtime-only, and combination 13895wake/run. 13896The only GPEs allowed to be combination wake/run are for button-style 13897devices such as a control-method power button, control-method sleep 13898button, 13899or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 13900not 13901referenced by any _PRW methods are marked for "runtime" and hardware 13902enabled. Any GPE that is referenced by a _PRW method is marked for 13903"wake" 13904(and disabled at runtime). However, at sleep time, only those GPEs that 13905have been specifically enabled for wake via the AcpiEnableGpe interface 13906will 13907actually be hardware enabled. 13908 13909A new external interface has been added, AcpiSetGpeType(), that is meant 13910to 13911be used by device drivers to force a GPE to a particular type. It will 13912be 13913especially useful for the drivers for the button devices mentioned above. 13914 13915Completed restructuring of the ACPI CA initialization sequence so that 13916default operation region handlers are installed before GPEs are 13917initialized 13918and the _PRW methods are executed. This will prevent errors when the 13919_PRW 13920methods attempt to access system memory or I/O space. 13921 13922GPE enable/disable no longer reads the GPE enable register. We now keep 13923the 13924enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 13925thus no longer depend on the hardware to maintain these bits. 13926 13927Always clear the wake status and fixed/GPE status bits before sleep, even 13928for state S5. 13929 13930Improved the AML debugger output for displaying the GPE blocks and their 13931current status. 13932 13933Added new strings for the _OSI method, of the form "Windows 2001 SPx" 13934where 13935x = 0,1,2,3,4. 13936 13937Fixed a problem where the physical address was incorrectly calculated 13938when 13939the Load() operator was used to directly load from an Operation Region 13940(vs. 13941loading from a Field object.) Also added check for minimum table length 13942for 13943this case. 13944 13945Fix for multiple mutex acquisition. Restore original thread SyncLevel on 13946mutex release. 13947 13948Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 13949consistency with the other fields returned. 13950 13951Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 13952structure for each GPE in the system, so the size of this structure is 13953important. 13954 13955CPU stack requirement reduction: Cleaned up the method execution and 13956object 13957evaluation paths so that now a parameter structure is passed, instead of 13958copying the various method parameters over and over again. 13959 13960In evregion.c: Correctly exit and reenter the interpreter region if and 13961only if dispatching an operation region request to a user-installed 13962handler. 13963Do not exit/reenter when dispatching to a default handler (e.g., default 13964system memory or I/O handlers) 13965 13966 13967Notes for updating drivers for the new GPE support. The following 13968changes 13969must be made to ACPI-related device drivers that are attached to one or 13970more 13971GPEs: (This information will be added to the ACPI CA Programmer 13972Reference.) 13973 139741) AcpiInstallGpeHandler no longer automatically enables the GPE, you 13975must 13976explicitly call AcpiEnableGpe. 139772) There is a new interface called AcpiSetGpeType. This should be called 13978before enabling the GPE. Also, this interface will automatically disable 13979the GPE if it is currently enabled. 139803) AcpiEnableGpe no longer supports a GPE type flag. 13981 13982Specific drivers that must be changed: 139831) EC driver: 13984 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 13985AeGpeHandler, NULL); 13986 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 13987 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 13988 139892) Button Drivers (Power, Lid, Sleep): 13990Run _PRW method under parent device 13991If _PRW exists: /* This is a control-method button */ 13992 Extract GPE number and possibly GpeDevice 13993 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 13994 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 13995 13996For all other devices that have _PRWs, we automatically set the GPE type 13997to 13998ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 13999This 14000must be done on a selective basis, usually requiring some kind of user 14001app 14002to allow the user to pick the wake devices. 14003 14004 14005Code and Data Size: Current and previous core subsystem library sizes are 14006shown below. These are the code and data sizes for the acpica.lib 14007produced 14008by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14009any ACPI driver or OSPM code. The debug version of the code includes the 14010debug output trace mechanism and has a much larger code and data size. 14011Note 14012that these values will vary depending on the efficiency of the compiler 14013and 14014the compiler options used during generation. 14015 14016 Previous Release: 14017 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 14018 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 14019 Current Release: 14020 14021 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 14022 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 14023 14024 14025 14026---------------------------------------- 1402702 April 2004. Summary of changes for version 20040402: 14028 140291) ACPI CA Core Subsystem: 14030 14031Fixed an interpreter problem where an indirect store through an ArgX 14032parameter was incorrectly applying the "implicit conversion rules" during 14033the store. From the ACPI specification: "If the target is a method local 14034or 14035argument (LocalX or ArgX), no conversion is performed and the result is 14036stored directly to the target". The new behavior is to disable implicit 14037conversion during ALL stores to an ArgX. 14038 14039Changed the behavior of the _PRW method scan to ignore any and all errors 14040returned by a given _PRW. This prevents the scan from aborting from the 14041failure of any single _PRW. 14042 14043Moved the runtime configuration parameters from the global init procedure 14044to 14045static variables in acglobal.h. This will allow the host to override the 14046default values easily. 14047 14048Code and Data Size: Current and previous core subsystem library sizes are 14049shown below. These are the code and data sizes for the acpica.lib 14050produced 14051by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14052any ACPI driver or OSPM code. The debug version of the code includes the 14053debug output trace mechanism and has a much larger code and data size. 14054Note 14055that these values will vary depending on the efficiency of the compiler 14056and 14057the compiler options used during generation. 14058 14059 Previous Release: 14060 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 14061 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 14062 Current Release: 14063 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 14064 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 14065 14066 140672) iASL Compiler/Disassembler: 14068 14069iASL now fully disassembles SSDTs. However, External() statements are 14070not 14071generated automatically for unresolved symbols at this time. This is a 14072planned feature for future implementation. 14073 14074Fixed a scoping problem in the disassembler that occurs when the type of 14075the 14076target of a Scope() operator is overridden. This problem caused an 14077incorrectly nested internal namespace to be constructed. 14078 14079Any warnings or errors that are emitted during disassembly are now 14080commented 14081out automatically so that the resulting file can be recompiled without 14082any 14083hand editing. 14084 14085---------------------------------------- 1408626 March 2004. Summary of changes for version 20040326: 14087 140881) ACPI CA Core Subsystem: 14089 14090Implemented support for "wake" GPEs via interaction between GPEs and the 14091_PRW methods. Every GPE that is pointed to by one or more _PRWs is 14092identified as a WAKE GPE and by default will no longer be enabled at 14093runtime. Previously, we were blindly enabling all GPEs with a 14094corresponding 14095_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 14096We 14097believe this has been the cause of thousands of "spurious" GPEs on some 14098systems. 14099 14100This new GPE behavior is can be reverted to the original behavior (enable 14101ALL GPEs at runtime) via a runtime flag. 14102 14103Fixed a problem where aliased control methods could not access objects 14104properly. The proper scope within the namespace was not initialized 14105(transferred to the target of the aliased method) before executing the 14106target method. 14107 14108Fixed a potential race condition on internal object deletion on the 14109return 14110object in AcpiEvaluateObject. 14111 14112Integrated a fix for resource descriptors where both _MEM and _MTP were 14113being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 14114wide, 0x0F instead of 0x03.) 14115 14116Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 14117preventing 14118a 14119fault in some cases. 14120 14121Updated Notify() values for debug statements in evmisc.c 14122 14123Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 14124 14125Code and Data Size: Current and previous core subsystem library sizes are 14126shown below. These are the code and data sizes for the acpica.lib 14127produced 14128by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14129any ACPI driver or OSPM code. The debug version of the code includes the 14130debug output trace mechanism and has a much larger code and data size. 14131Note 14132that these values will vary depending on the efficiency of the compiler 14133and 14134the compiler options used during generation. 14135 14136 Previous Release: 14137 14138 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 14139 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 14140 Current Release: 14141 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 14142 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 14143 14144---------------------------------------- 1414511 March 2004. Summary of changes for version 20040311: 14146 141471) ACPI CA Core Subsystem: 14148 14149Fixed a problem where errors occurring during the parse phase of control 14150method execution did not abort cleanly. For example, objects created and 14151installed in the namespace were not deleted. This caused all subsequent 14152invocations of the method to return the AE_ALREADY_EXISTS exception. 14153 14154Implemented a mechanism to force a control method to "Serialized" 14155execution 14156if the method attempts to create namespace objects. (The root of the 14157AE_ALREADY_EXISTS problem.) 14158 14159Implemented support for the predefined _OSI "internal" control method. 14160Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 14161and 14162"Windows 2001.1", and can be easily upgraded for new strings as 14163necessary. 14164This feature will allow "other" operating systems to execute the fully 14165tested, "Windows" code path through the ASL code 14166 14167Global Lock Support: Now allows multiple acquires and releases with any 14168internal thread. Removed concept of "owning thread" for this special 14169mutex. 14170 14171Fixed two functions that were inappropriately declaring large objects on 14172the 14173CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 14174during 14175method execution considerably. 14176 14177Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 14178S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 14179 14180Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 14181defined on the machine. 14182 14183Implemented two runtime options: One to force all control method 14184execution 14185to "Serialized" to mimic Windows behavior, another to disable _OSI 14186support 14187if it causes problems on a given machine. 14188 14189Code and Data Size: Current and previous core subsystem library sizes are 14190shown below. These are the code and data sizes for the acpica.lib 14191produced 14192by the Microsoft Visual C++ 6.0 compiler, and these values do not include 14193any ACPI driver or OSPM code. The debug version of the code includes the 14194debug output trace mechanism and has a much larger code and data size. 14195Note 14196that these values will vary depending on the efficiency of the compiler 14197and 14198the compiler options used during generation. 14199 14200 Previous Release: 14201 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 14202 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 14203 Current Release: 14204 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 14205 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 14206 142072) iASL Compiler/Disassembler: 14208 14209Fixed an array size problem for FreeBSD that would cause the compiler to 14210fault. 14211 14212---------------------------------------- 1421320 February 2004. Summary of changes for version 20040220: 14214 14215 142161) ACPI CA Core Subsystem: 14217 14218Implemented execution of _SxD methods for Device objects in the 14219GetObjectInfo interface. 14220 14221Fixed calls to _SST method to pass the correct arguments. 14222 14223Added a call to _SST on wake to restore to "working" state. 14224 14225Check for End-Of-Buffer failure case in the WalkResources interface. 14226 14227Integrated fix for 64-bit alignment issue in acglobal.h by moving two 14228structures to the beginning of the file. 14229 14230After wake, clear GPE status register(s) before enabling GPEs. 14231 14232After wake, clear/enable power button. (Perhaps we should clear/enable 14233all 14234fixed events upon wake.) 14235 14236Fixed a couple of possible memory leaks in the Namespace manager. 14237 14238Integrated latest acnetbsd.h file. 14239 14240---------------------------------------- 1424111 February 2004. Summary of changes for version 20040211: 14242 14243 142441) ACPI CA Core Subsystem: 14245 14246Completed investigation and implementation of the call-by-reference 14247mechanism for control method arguments. 14248 14249Fixed a problem where a store of an object into an indexed package could 14250fail if the store occurs within a different method than the method that 14251created the package. 14252 14253Fixed a problem where the ToDecimal operator could return incorrect 14254results. 14255 14256Fixed a problem where the CopyObject operator could fail on some of the 14257more 14258obscure objects (e.g., Reference objects.) 14259 14260Improved the output of the Debug object to display buffer, package, and 14261index objects. 14262 14263Fixed a problem where constructs of the form "RefOf (ArgX)" did not 14264return 14265the expected result. 14266 14267Added permanent ACPI_REPORT_ERROR macros for all instances of the 14268ACPI_AML_INTERNAL exception. 14269 14270Integrated latest version of acfreebsd.h 14271 14272---------------------------------------- 1427316 January 2004. Summary of changes for version 20040116: 14274 14275The purpose of this release is primarily to update the copyright years in 14276each module, thus causing a huge number of diffs. There are a few small 14277functional changes, however. 14278 142791) ACPI CA Core Subsystem: 14280 14281Improved error messages when there is a problem finding one or more of 14282the 14283required base ACPI tables 14284 14285Reintroduced the definition of APIC_HEADER in actbl.h 14286 14287Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 14288 14289Removed extraneous reference to NewObj in dsmthdat.c 14290 142912) iASL compiler 14292 14293Fixed a problem introduced in December that disabled the correct 14294disassembly 14295of Resource Templates 14296 14297 14298---------------------------------------- 1429903 December 2003. Summary of changes for version 20031203: 14300 143011) ACPI CA Core Subsystem: 14302 14303Changed the initialization of Operation Regions during subsystem 14304init to perform two entire walks of the ACPI namespace; The first 14305to initialize the regions themselves, the second to execute the 14306_REG methods. This fixed some interdependencies across _REG 14307methods found on some machines. 14308 14309Fixed a problem where a Store(Local0, Local1) could simply update 14310the object reference count, and not create a new copy of the 14311object if the Local1 is uninitialized. 14312 14313Implemented support for the _SST reserved method during sleep 14314transitions. 14315 14316Implemented support to clear the SLP_TYP and SLP_EN bits when 14317waking up, this is apparently required by some machines. 14318 14319When sleeping, clear the wake status only if SleepState is not S5. 14320 14321Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 14322pointer arithmetic advanced a string pointer too far. 14323 14324Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 14325could be returned if the requested table has not been loaded. 14326 14327Within the support for IRQ resources, restructured the handling of 14328the active and edge/level bits. 14329 14330Fixed a few problems in AcpiPsxExecute() where memory could be 14331leaked under certain error conditions. 14332 14333Improved error messages for the cases where the ACPI mode could 14334not be entered. 14335 14336Code and Data Size: Current and previous core subsystem library 14337sizes are shown below. These are the code and data sizes for the 14338acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14339these values do not include any ACPI driver or OSPM code. The 14340debug version of the code includes the debug output trace 14341mechanism and has a much larger code and data size. Note that 14342these values will vary depending on the efficiency of the compiler 14343and the compiler options used during generation. 14344 14345 Previous Release (20031029): 14346 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 14347 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 14348 Current Release: 14349 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 14350 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 14351 143522) iASL Compiler/Disassembler: 14353 14354Implemented a fix for the iASL disassembler where a bad index was 14355generated. This was most noticeable on 64-bit platforms 14356 14357 14358---------------------------------------- 1435929 October 2003. Summary of changes for version 20031029: 14360 143611) ACPI CA Core Subsystem: 14362 14363 14364Fixed a problem where a level-triggered GPE with an associated 14365_Lxx control method was incorrectly cleared twice. 14366 14367Fixed a problem with the Field support code where an access can 14368occur beyond the end-of-region if the field is non-aligned but 14369extends to the very end of the parent region (resulted in an 14370AE_AML_REGION_LIMIT exception.) 14371 14372Fixed a problem with ACPI Fixed Events where an RT Clock handler 14373would not get invoked on an RTC event. The RTC event bitmasks for 14374the PM1 registers were not being initialized properly. 14375 14376Implemented support for executing _STA and _INI methods for 14377Processor objects. Although this is currently not part of the 14378ACPI specification, there is existing ASL code that depends on the 14379init-time execution of these methods. 14380 14381Implemented and deployed a GetDescriptorName function to decode 14382the various types of internal descriptors. Guards against null 14383descriptors during debug output also. 14384 14385Implemented and deployed a GetNodeName function to extract the 4- 14386character namespace node name. This function simplifies the debug 14387and error output, as well as guarding against null pointers during 14388output. 14389 14390Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 14391simplify the debug and error output of 64-bit integers. This 14392macro replaces the HIDWORD and LODWORD macros for dumping these 14393integers. 14394 14395Updated the implementation of the Stall() operator to only call 14396AcpiOsStall(), and also return an error if the operand is larger 14397than 255. This preserves the required behavior of not 14398relinquishing the processor, as would happen if AcpiOsSleep() was 14399called for "long stalls". 14400 14401Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 14402initialized are now treated as NOOPs. 14403 14404Cleaned up a handful of warnings during 64-bit generation. 14405 14406Fixed a reported error where and incorrect GPE number was passed 14407to the GPE dispatch handler. This value is only used for error 14408output, however. Used this opportunity to clean up and streamline 14409the GPE dispatch code. 14410 14411Code and Data Size: Current and previous core subsystem library 14412sizes are shown below. These are the code and data sizes for the 14413acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14414these values do not include any ACPI driver or OSPM code. The 14415 14416debug version of the code includes the debug output trace 14417mechanism and has a much larger code and data size. Note that 14418these values will vary depending on the efficiency of the compiler 14419and the compiler options used during generation. 14420 14421 Previous Release (20031002): 14422 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14423 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14424 Current Release: 14425 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 14426 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 14427 14428 144292) iASL Compiler/Disassembler: 14430 14431Updated the iASL compiler to return an error if the operand to the 14432Stall() operator is larger than 255. 14433 14434 14435---------------------------------------- 1443602 October 2003. Summary of changes for version 20031002: 14437 14438 144391) ACPI CA Core Subsystem: 14440 14441Fixed a problem with Index Fields where the index was not 14442incremented for fields that require multiple writes to the 14443index/data registers (Fields that are wider than the data 14444register.) 14445 14446Fixed a problem with all Field objects where a write could go 14447beyond the end-of-field if the field was larger than the access 14448granularity and therefore required multiple writes to complete the 14449request. An extra write beyond the end of the field could happen 14450inadvertently. 14451 14452Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 14453would incorrectly be returned if the width of the Data Register 14454was larger than the specified field access width. 14455 14456Completed fixes for LoadTable() and Unload() and verified their 14457operation. Implemented full support for the "DdbHandle" object 14458throughout the ACPI CA subsystem. 14459 14460Implemented full support for the MADT and ECDT tables in the ACPI 14461CA header files. Even though these tables are not directly 14462consumed by ACPI CA, the header definitions are useful for ACPI 14463device drivers. 14464 14465Integrated resource descriptor fixes posted to the Linux ACPI 14466list. This included checks for minimum descriptor length, and 14467support for trailing NULL strings within descriptors that have 14468optional string elements. 14469 14470Code and Data Size: Current and previous core subsystem library 14471sizes are shown below. These are the code and data sizes for the 14472acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14473these values do not include any ACPI driver or OSPM code. The 14474debug version of the code includes the debug output trace 14475mechanism and has a much larger code and data size. Note that 14476these values will vary depending on the efficiency of the compiler 14477and the compiler options used during generation. 14478 14479 Previous Release (20030918): 14480 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14481 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14482 Current Release: 14483 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 14484 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 14485 14486 144872) iASL Compiler: 14488 14489Implemented detection of non-ASCII characters within the input 14490source ASL file. This catches attempts to compile binary (AML) 14491files early in the compile, with an informative error message. 14492 14493Fixed a problem where the disassembler would fault if the output 14494filename could not be generated or if the output file could not be 14495opened. 14496 14497---------------------------------------- 1449818 September 2003. Summary of changes for version 20030918: 14499 14500 145011) ACPI CA Core Subsystem: 14502 14503Found and fixed a longstanding problem with the late execution of 14504the various deferred AML opcodes (such as Operation Regions, 14505Buffer Fields, Buffers, and Packages). If the name string 14506specified for the name of the new object placed the object in a 14507scope other than the current scope, the initialization/execution 14508of the opcode failed. The solution to this problem was to 14509implement a mechanism where the late execution of such opcodes 14510does not attempt to lookup/create the name a second time in an 14511incorrect scope. This fixes the "region size computed 14512incorrectly" problem. 14513 14514Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 14515Global Lock AE_BAD_PARAMETER error. 14516 14517Fixed several 64-bit issues with prototypes, casting and data 14518types. 14519 14520Removed duplicate prototype from acdisasm.h 14521 14522Fixed an issue involving EC Operation Region Detach (Shaohua Li) 14523 14524Code and Data Size: Current and previous core subsystem library 14525sizes are shown below. These are the code and data sizes for the 14526acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14527these values do not include any ACPI driver or OSPM code. The 14528debug version of the code includes the debug output trace 14529mechanism and has a much larger code and data size. Note that 14530these values will vary depending on the efficiency of the compiler 14531and the compiler options used during generation. 14532 14533 Previous Release: 14534 14535 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 14536 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 14537 Current Release: 14538 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 14539 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 14540 14541 145422) Linux: 14543 14544Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 14545correct sleep time in seconds. 14546 14547---------------------------------------- 1454814 July 2003. Summary of changes for version 20030619: 14549 145501) ACPI CA Core Subsystem: 14551 14552Parse SSDTs in order discovered, as opposed to reverse order 14553(Hrvoje Habjanic) 14554 14555Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 14556Klausner, 14557 Nate Lawson) 14558 14559 145602) Linux: 14561 14562Dynamically allocate SDT list (suggested by Andi Kleen) 14563 14564proc function return value cleanups (Andi Kleen) 14565 14566Correctly handle NMI watchdog during long stalls (Andrew Morton) 14567 14568Make it so acpismp=force works (reported by Andrew Morton) 14569 14570 14571---------------------------------------- 1457219 June 2003. Summary of changes for version 20030619: 14573 145741) ACPI CA Core Subsystem: 14575 14576Fix To/FromBCD, eliminating the need for an arch-specific #define. 14577 14578Do not acquire a semaphore in the S5 shutdown path. 14579 14580Fix ex_digits_needed for 0. (Takayoshi Kochi) 14581 14582Fix sleep/stall code reversal. (Andi Kleen) 14583 14584Revert a change having to do with control method calling 14585semantics. 14586 145872) Linux: 14588 14589acpiphp update (Takayoshi Kochi) 14590 14591Export acpi_disabled for sonypi (Stelian Pop) 14592 14593Mention acpismp=force in config help 14594 14595Re-add acpitable.c and acpismp=force. This improves backwards 14596 14597compatibility and also cleans up the code to a significant degree. 14598 14599Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 14600 14601---------------------------------------- 1460222 May 2003. Summary of changes for version 20030522: 14603 146041) ACPI CA Core Subsystem: 14605 14606Found and fixed a reported problem where an AE_NOT_FOUND error 14607occurred occasionally during _BST evaluation. This turned out to 14608be an Owner ID allocation issue where a called method did not get 14609a new ID assigned to it. Eventually, (after 64k calls), the Owner 14610ID UINT16 would wraparound so that the ID would be the same as the 14611caller's and the called method would delete the caller's 14612namespace. 14613 14614Implemented extended error reporting for control methods that are 14615aborted due to a run-time exception. Output includes the exact 14616AML instruction that caused the method abort, a dump of the method 14617locals and arguments at the time of the abort, and a trace of all 14618nested control method calls. 14619 14620Modified the interpreter to allow the creation of buffers of zero 14621length from the AML code. Implemented new code to ensure that no 14622attempt is made to actually allocate a memory buffer (of length 14623zero) - instead, a simple buffer object with a NULL buffer pointer 14624and length zero is created. A warning is no longer issued when 14625the AML attempts to create a zero-length buffer. 14626 14627Implemented a workaround for the "leading asterisk issue" in 14628_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 14629asterisk is automatically removed if present in any HID, UID, or 14630CID strings. The iASL compiler will still flag this asterisk as 14631an error, however. 14632 14633Implemented full support for _CID methods that return a package of 14634multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 14635now additionally returns a device _CID list if present. This 14636required a change to the external interface in order to pass an 14637ACPI_BUFFER object as a parameter since the _CID list is of 14638variable length. 14639 14640Fixed a problem with the new AE_SAME_HANDLER exception where 14641handler initialization code did not know about this exception. 14642 14643Code and Data Size: Current and previous core subsystem library 14644sizes are shown below. These are the code and data sizes for the 14645acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 14646these values do not include any ACPI driver or OSPM code. The 14647debug version of the code includes the debug output trace 14648mechanism and has a much larger code and data size. Note that 14649these values will vary depending on the efficiency of the compiler 14650and the compiler options used during generation. 14651 14652 Previous Release (20030509): 14653 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 14654 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 14655 Current Release: 14656 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 14657 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 14658 14659 146602) Linux: 14661 14662Fixed a bug in which we would reinitialize the ACPI interrupt 14663after it was already working, thus disabling all ACPI and the IRQs 14664for any other device sharing the interrupt. (Thanks to Stian 14665Jordet) 14666 14667Toshiba driver update (John Belmonte) 14668 14669Return only 0 or 1 for our interrupt handler status (Andrew 14670Morton) 14671 14672 146733) iASL Compiler: 14674 14675Fixed a reported problem where multiple (nested) ElseIf() 14676statements were not handled correctly by the compiler, resulting 14677in incorrect warnings and incorrect AML code. This was a problem 14678in both the ASL parser and the code generator. 14679 14680 146814) Documentation: 14682 14683Added changes to existing interfaces, new exception codes, and new 14684text concerning reference count object management versus garbage 14685collection. 14686 14687---------------------------------------- 1468809 May 2003. Summary of changes for version 20030509. 14689 14690 146911) ACPI CA Core Subsystem: 14692 14693Changed the subsystem initialization sequence to hold off 14694installation of address space handlers until the hardware has been 14695initialized and the system has entered ACPI mode. This is because 14696the installation of space handlers can cause _REG methods to be 14697run. Previously, the _REG methods could potentially be run before 14698ACPI mode was enabled. 14699 14700Fixed some memory leak issues related to address space handler and 14701notify handler installation. There were some problems with the 14702reference count mechanism caused by the fact that the handler 14703objects are shared across several namespace objects. 14704 14705Fixed a reported problem where reference counts within the 14706namespace were not properly updated when named objects created by 14707method execution were deleted. 14708 14709Fixed a reported problem where multiple SSDTs caused a deletion 14710issue during subsystem termination. Restructured the table data 14711structures to simplify the linked lists and the related code. 14712 14713Fixed a problem where the table ID associated with secondary 14714tables (SSDTs) was not being propagated into the namespace objects 14715created by those tables. This would only present a problem for 14716tables that are unloaded at run-time, however. 14717 14718Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 14719type as the length parameter (instead of UINT32). 14720 14721Solved a long-standing problem where an ALREADY_EXISTS error 14722appears on various systems. This problem could happen when there 14723are multiple PCI_Config operation regions under a single PCI root 14724bus. This doesn't happen very frequently, but there are some 14725systems that do this in the ASL. 14726 14727Fixed a reported problem where the internal DeleteNode function 14728was incorrectly handling the case where a namespace node was the 14729first in the parent's child list, and had additional peers (not 14730the only child, but first in the list of children.) 14731 14732Code and Data Size: Current core subsystem library sizes are shown 14733below. These are the code and data sizes for the acpica.lib 14734produced by the Microsoft Visual C++ 6.0 compiler, and these 14735values do not include any ACPI driver or OSPM code. The debug 14736version of the code includes the debug output trace mechanism and 14737has a much larger code and data size. Note that these values will 14738vary depending on the efficiency of the compiler and the compiler 14739options used during generation. 14740 14741 Previous Release 14742 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 14743 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 14744 Current Release: 14745 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 14746 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 14747 14748 147492) Linux: 14750 14751Allow ":" in OS override string (Ducrot Bruno) 14752 14753Kobject fix (Greg KH) 14754 14755 147563 iASL Compiler/Disassembler: 14757 14758Fixed a problem in the generation of the C source code files (AML 14759is emitted in C source statements for BIOS inclusion) where the 14760Ascii dump that appears within a C comment at the end of each line 14761could cause a compile time error if the AML sequence happens to 14762have an open comment or close comment sequence embedded. 14763 14764 14765---------------------------------------- 1476624 April 2003. Summary of changes for version 20030424. 14767 14768 147691) ACPI CA Core Subsystem: 14770 14771Support for big-endian systems has been implemented. Most of the 14772support has been invisibly added behind big-endian versions of the 14773ACPI_MOVE_* macros. 14774 14775Fixed a problem in AcpiHwDisableGpeBlock() and 14776AcpiHwClearGpeBlock() where an incorrect offset was passed to the 14777low level hardware write routine. The offset parameter was 14778actually eliminated from the low level read/write routines because 14779they had become obsolete. 14780 14781Fixed a problem where a handler object was deleted twice during 14782the removal of a fixed event handler. 14783 14784 147852) Linux: 14786 14787A fix for SMP systems with link devices was contributed by 14788 14789Compaq's Dan Zink. 14790 14791(2.5) Return whether we handled the interrupt in our IRQ handler. 14792(Linux ISRs no longer return void, so we can propagate the handler 14793return value from the ACPI CA core back to the OS.) 14794 14795 14796 147973) Documentation: 14798 14799The ACPI CA Programmer Reference has been updated to reflect new 14800interfaces and changes to existing interfaces. 14801 14802---------------------------------------- 1480328 March 2003. Summary of changes for version 20030328. 14804 148051) ACPI CA Core Subsystem: 14806 14807The GPE Block Device support has been completed. New interfaces 14808are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 14809interfaces (enable, disable, clear, getstatus) have been split 14810into separate interfaces for Fixed Events and General Purpose 14811Events (GPEs) in order to support GPE Block Devices properly. 14812 14813Fixed a problem where the error message "Failed to acquire 14814semaphore" would appear during operations on the embedded 14815controller (EC). 14816 14817Code and Data Size: Current core subsystem library sizes are shown 14818below. These are the code and data sizes for the acpica.lib 14819produced by the Microsoft Visual C++ 6.0 compiler, and these 14820values do not include any ACPI driver or OSPM code. The debug 14821version of the code includes the debug output trace mechanism and 14822has a much larger code and data size. Note that these values will 14823vary depending on the efficiency of the compiler and the compiler 14824options used during generation. 14825 14826 Previous Release 14827 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 14828 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 14829 Current Release: 14830 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 14831 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 14832 14833 14834---------------------------------------- 1483528 February 2003. Summary of changes for version 20030228. 14836 14837 148381) ACPI CA Core Subsystem: 14839 14840The GPE handling and dispatch code has been completely overhauled 14841in preparation for support of GPE Block Devices (ID ACPI0006). 14842This affects internal data structures and code only; there should 14843be no differences visible externally. One new file has been 14844added, evgpeblk.c 14845 14846The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 14847fields that are used to determine the GPE block lengths. The 14848REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 14849structures are ignored. This is per the ACPI specification but it 14850isn't very clear. The full 256 Block 0/1 GPEs are now supported 14851(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 14852 14853In the SCI interrupt handler, removed the read of the PM1_CONTROL 14854register to look at the SCI_EN bit. On some machines, this read 14855causes an SMI event and greatly slows down SCI events. (This may 14856in fact be the cause of slow battery status response on some 14857systems.) 14858 14859Fixed a problem where a store of a NULL string to a package object 14860could cause the premature deletion of the object. This was seen 14861during execution of the battery _BIF method on some systems, 14862resulting in no battery data being returned. 14863 14864Added AcpiWalkResources interface to simplify parsing of resource 14865lists. 14866 14867Code and Data Size: Current core subsystem library sizes are shown 14868below. These are the code and data sizes for the acpica.lib 14869produced by the Microsoft Visual C++ 6.0 compiler, and these 14870values do not include any ACPI driver or OSPM code. The debug 14871version of the code includes the debug output trace mechanism and 14872has a much larger code and data size. Note that these values will 14873vary depending on the efficiency of the compiler and the compiler 14874options used during generation. 14875 14876 Previous Release 14877 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 14878 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 14879 Current Release: 14880 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 14881 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 14882 14883 148842) Linux 14885 14886S3 fixes (Ole Rohne) 14887 14888Update ACPI PHP driver with to use new acpi_walk_resource API 14889(Bjorn Helgaas) 14890 14891Add S4BIOS support (Pavel Machek) 14892 14893Map in entire table before performing checksum (John Stultz) 14894 14895Expand the mem= cmdline to allow the specification of reserved and 14896ACPI DATA blocks (Pavel Machek) 14897 14898Never use ACPI on VISWS 14899 14900Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 14901 14902Revert a change that allowed P_BLK lengths to be 4 or 5. This is 14903causing us to think that some systems support C2 when they really 14904don't. 14905 14906Do not count processor objects for non-present CPUs (Thanks to 14907Dominik Brodowski) 14908 14909 149103) iASL Compiler: 14911 14912Fixed a problem where ASL include files could not be found and 14913opened. 14914 14915Added support for the _PDC reserved name. 14916 14917 14918---------------------------------------- 1491922 January 2003. Summary of changes for version 20030122. 14920 14921 149221) ACPI CA Core Subsystem: 14923 14924Added a check for constructs of the form: Store (Local0, Local0) 14925where Local0 is not initialized. Apparently, some BIOS 14926programmers believe that this is a NOOP. Since this store doesn't 14927do anything anyway, the new prototype behavior will ignore this 14928error. This is a case where we can relax the strict checking in 14929the interpreter in the name of compatibility. 14930 14931 149322) Linux 14933 14934The AcpiSrc Source Conversion Utility has been released with the 14935Linux package for the first time. This is the utility that is 14936used to convert the ACPI CA base source code to the Linux version. 14937 14938(Both) Handle P_BLK lengths shorter than 6 more gracefully 14939 14940(Both) Move more headers to include/acpi, and delete an unused 14941header. 14942 14943(Both) Move drivers/acpi/include directory to include/acpi 14944 14945(Both) Boot functions don't use cmdline, so don't pass it around 14946 14947(Both) Remove include of unused header (Adrian Bunk) 14948 14949(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 14950the 14951former now also includes the latter, acpiphp.h only needs the one, 14952now. 14953 14954(2.5) Make it possible to select method of bios restoring after S3 14955resume. [=> no more ugly ifdefs] (Pavel Machek) 14956 14957(2.5) Make proc write interfaces work (Pavel Machek) 14958 14959(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 14960 14961(2.5) Break out ACPI Perf code into its own module, under cpufreq 14962(Dominik Brodowski) 14963 14964(2.4) S4BIOS support (Ducrot Bruno) 14965 14966(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 14967Visinoni) 14968 14969 149703) iASL Compiler: 14971 14972Added support to disassemble SSDT and PSDTs. 14973 14974Implemented support to obtain SSDTs from the Windows registry if 14975available. 14976 14977 14978---------------------------------------- 1497909 January 2003. Summary of changes for version 20030109. 14980 149811) ACPI CA Core Subsystem: 14982 14983Changed the behavior of the internal Buffer-to-String conversion 14984function. The current ACPI specification states that the contents 14985of the buffer are "converted to a string of two-character 14986hexadecimal numbers, each separated by a space". Unfortunately, 14987this definition is not backwards compatible with existing ACPI 1.0 14988implementations (although the behavior was not defined in the ACPI 149891.0 specification). The new behavior simply copies data from the 14990buffer to the string until a null character is found or the end of 14991the buffer is reached. The new String object is always null 14992terminated. This problem was seen during the generation of _BIF 14993battery data where incorrect strings were returned for battery 14994type, etc. This will also require an errata to the ACPI 14995specification. 14996 14997Renamed all instances of NATIVE_UINT and NATIVE_INT to 14998ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 14999 15000Copyright in all module headers (both Linux and non-Linux) has be 15001updated to 2003. 15002 15003Code and Data Size: Current core subsystem library sizes are shown 15004below. These are the code and data sizes for the acpica.lib 15005produced by the Microsoft Visual C++ 6.0 compiler, and these 15006values do not include any ACPI driver or OSPM code. The debug 15007version of the code includes the debug output trace mechanism and 15008has a much larger code and data size. Note that these values will 15009vary depending on the efficiency of the compiler and the compiler 15010options used during generation. 15011 15012 Previous Release 15013 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15014 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15015 Current Release: 15016 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15017 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15018 15019 150202) Linux 15021 15022Fixed an oops on module insertion/removal (Matthew Tippett) 15023 15024(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 15025 15026(2.5) Replace pr_debug (Randy Dunlap) 15027 15028(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 15029 15030(Both) Eliminate spawning of thread from timer callback, in favor 15031of schedule_work() 15032 15033(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 15034 15035(Both) Added define for Fixed Function HW region (Matthew Wilcox) 15036 15037(Both) Add missing statics to button.c (Pavel Machek) 15038 15039Several changes have been made to the source code translation 15040utility that generates the Linux Code in order to make the code 15041more "Linux-like": 15042 15043All typedefs on structs and unions have been removed in keeping 15044with the Linux coding style. 15045 15046Removed the non-Linux SourceSafe module revision number from each 15047module header. 15048 15049Completed major overhaul of symbols to be lowercase for linux. 15050Doubled the number of symbols that are lowercase. 15051 15052Fixed a problem where identifiers within procedure headers and 15053within quotes were not fully lower cased (they were left with a 15054starting capital.) 15055 15056Some C macros whose only purpose is to allow the generation of 16- 15057bit code are now completely removed in the Linux code, increasing 15058readability and maintainability. 15059 15060---------------------------------------- 15061 1506212 December 2002. Summary of changes for version 20021212. 15063 15064 150651) ACPI CA Core Subsystem: 15066 15067Fixed a problem where the creation of a zero-length AML Buffer 15068would cause a fault. 15069 15070Fixed a problem where a Buffer object that pointed to a static AML 15071buffer (in an ACPI table) could inadvertently be deleted, causing 15072memory corruption. 15073 15074Fixed a problem where a user buffer (passed in to the external 15075ACPI CA interfaces) could be overwritten if the buffer was too 15076small to complete the operation, causing memory corruption. 15077 15078Fixed a problem in the Buffer-to-String conversion code where a 15079string of length one was always returned, regardless of the size 15080of the input Buffer object. 15081 15082Removed the NATIVE_CHAR data type across the entire source due to 15083lack of need and lack of consistent use. 15084 15085Code and Data Size: Current core subsystem library sizes are shown 15086below. These are the code and data sizes for the acpica.lib 15087produced by the Microsoft Visual C++ 6.0 compiler, and these 15088values do not include any ACPI driver or OSPM code. The debug 15089version of the code includes the debug output trace mechanism and 15090has a much larger code and data size. Note that these values will 15091vary depending on the efficiency of the compiler and the compiler 15092options used during generation. 15093 15094 Previous Release 15095 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 15096 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 15097 Current Release: 15098 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 15099 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 15100 15101 15102---------------------------------------- 1510305 December 2002. Summary of changes for version 20021205. 15104 151051) ACPI CA Core Subsystem: 15106 15107Fixed a problem where a store to a String or Buffer object could 15108cause corruption of the DSDT if the object type being stored was 15109the same as the target object type and the length of the object 15110being stored was equal to or smaller than the original (existing) 15111target object. This was seen to cause corruption of battery _BIF 15112buffers if the _BIF method modified the buffer on the fly. 15113 15114Fixed a problem where an internal error was generated if a control 15115method invocation was used in an OperationRegion, Buffer, or 15116Package declaration. This was caused by the deferred parsing of 15117the control method and thus the deferred creation of the internal 15118method object. The solution to this problem was to create the 15119internal method object at the moment the method is encountered in 15120the first pass - so that subsequent references to the method will 15121able to obtain the required parameter count and thus properly 15122parse the method invocation. This problem presented itself as an 15123AE_AML_INTERNAL during the pass 1 parse phase during table load. 15124 15125Fixed a problem where the internal String object copy routine did 15126not always allocate sufficient memory for the target String object 15127and caused memory corruption. This problem was seen to cause 15128"Allocation already present in list!" errors as memory allocation 15129became corrupted. 15130 15131Implemented a new function for the evaluation of namespace objects 15132that allows the specification of the allowable return object 15133types. This simplifies a lot of code that checks for a return 15134object of one or more specific objects returned from the 15135evaluation (such as _STA, etc.) This may become and external 15136function if it would be useful to ACPI-related drivers. 15137 15138Completed another round of prefixing #defines with "ACPI_" for 15139clarity. 15140 15141Completed additional code restructuring to allow more modular 15142linking for iASL compiler and AcpiExec. Several files were split 15143creating new files. New files: nsparse.c dsinit.c evgpe.c 15144 15145Implemented an abort mechanism to terminate an executing control 15146method via the AML debugger. This feature is useful for debugging 15147control methods that depend (wait) for specific hardware 15148responses. 15149 15150Code and Data Size: Current core subsystem library sizes are shown 15151below. These are the code and data sizes for the acpica.lib 15152produced by the Microsoft Visual C++ 6.0 compiler, and these 15153values do not include any ACPI driver or OSPM code. The debug 15154version of the code includes the debug output trace mechanism and 15155has a much larger code and data size. Note that these values will 15156vary depending on the efficiency of the compiler and the compiler 15157options used during generation. 15158 15159 Previous Release 15160 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15161 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 15162 Current Release: 15163 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 15164 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 15165 15166 151672) iASL Compiler/Disassembler 15168 15169Fixed a compiler code generation problem for "Interrupt" Resource 15170Descriptors. If specified in the ASL, the optional "Resource 15171Source Index" and "Resource Source" fields were not inserted into 15172the correct location within the AML resource descriptor, creating 15173an invalid descriptor. 15174 15175Fixed a disassembler problem for "Interrupt" resource descriptors. 15176The optional "Resource Source Index" and "Resource Source" fields 15177were ignored. 15178 15179 15180---------------------------------------- 1518122 November 2002. Summary of changes for version 20021122. 15182 15183 151841) ACPI CA Core Subsystem: 15185 15186Fixed a reported problem where an object stored to a Method Local 15187or Arg was not copied to a new object during the store - the 15188object pointer was simply copied to the Local/Arg. This caused 15189all subsequent operations on the Local/Arg to also affect the 15190original source of the store operation. 15191 15192Fixed a problem where a store operation to a Method Local or Arg 15193was not completed properly if the Local/Arg contained a reference 15194(from RefOf) to a named field. The general-purpose store-to- 15195namespace-node code is now used so that this case is handled 15196automatically. 15197 15198Fixed a problem where the internal object copy routine would cause 15199a protection fault if the object being copied was a Package and 15200contained either 1) a NULL package element or 2) a nested sub- 15201package. 15202 15203Fixed a problem with the GPE initialization that resulted from an 15204ambiguity in the ACPI specification. One section of the 15205specification states that both the address and length of the GPE 15206block must be zero if the block is not supported. Another section 15207implies that only the address need be zero if the block is not 15208supported. The code has been changed so that both the address and 15209the length must be non-zero to indicate a valid GPE block (i.e., 15210if either the address or the length is zero, the GPE block is 15211invalid.) 15212 15213Code and Data Size: Current core subsystem library sizes are shown 15214below. These are the code and data sizes for the acpica.lib 15215produced by the Microsoft Visual C++ 6.0 compiler, and these 15216values do not include any ACPI driver or OSPM code. The debug 15217version of the code includes the debug output trace mechanism and 15218has a much larger code and data size. Note that these values will 15219vary depending on the efficiency of the compiler and the compiler 15220options used during generation. 15221 15222 Previous Release 15223 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 15224 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 15225 Current Release: 15226 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15227 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 15228 15229 152302) Linux 15231 15232Cleaned up EC driver. Exported an external EC read/write 15233interface. By going through this, other drivers (most notably 15234sonypi) will be able to serialize access to the EC. 15235 15236 152373) iASL Compiler/Disassembler 15238 15239Implemented support to optionally generate include files for both 15240ASM and C (the -i switch). This simplifies BIOS development by 15241automatically creating include files that contain external 15242declarations for the symbols that are created within the 15243 15244(optionally generated) ASM and C AML source files. 15245 15246 15247---------------------------------------- 1524815 November 2002. Summary of changes for version 20021115. 15249 152501) ACPI CA Core Subsystem: 15251 15252Fixed a memory leak problem where an error during resolution of 15253 15254method arguments during a method invocation from another method 15255failed to cleanup properly by deleting all successfully resolved 15256argument objects. 15257 15258Fixed a problem where the target of the Index() operator was not 15259correctly constructed if the source object was a package. This 15260problem has not been detected because the use of a target operand 15261with Index() is very rare. 15262 15263Fixed a problem with the Index() operator where an attempt was 15264made to delete the operand objects twice. 15265 15266Fixed a problem where an attempt was made to delete an operand 15267twice during execution of the CondRefOf() operator if the target 15268did not exist. 15269 15270Implemented the first of perhaps several internal create object 15271functions that create and initialize a specific object type. This 15272consolidates duplicated code wherever the object is created, thus 15273shrinking the size of the subsystem. 15274 15275Implemented improved debug/error messages for errors that occur 15276during nested method invocations. All executing method pathnames 15277are displayed (with the error) as the call stack is unwound - thus 15278simplifying debug. 15279 15280Fixed a problem introduced in the 10/02 release that caused 15281premature deletion of a buffer object if a buffer was used as an 15282ASL operand where an integer operand is required (Thus causing an 15283implicit object conversion from Buffer to Integer.) The change in 15284the 10/02 release was attempting to fix a memory leak (albeit 15285incorrectly.) 15286 15287Code and Data Size: Current core subsystem library sizes are shown 15288below. These are the code and data sizes for the acpica.lib 15289produced by the Microsoft Visual C++ 6.0 compiler, and these 15290values do not include any ACPI driver or OSPM code. The debug 15291version of the code includes the debug output trace mechanism and 15292has a much larger code and data size. Note that these values will 15293vary depending on the efficiency of the compiler and the compiler 15294options used during generation. 15295 15296 Previous Release 15297 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 15298 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 15299 Current Release: 15300 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 15301 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 15302 15303 153042) Linux 15305 15306Changed the implementation of the ACPI semaphores to use down() 15307instead of down_interruptable(). It is important that the 15308execution of ACPI control methods not be interrupted by signals. 15309Methods must run to completion, or the system may be left in an 15310unknown/unstable state. 15311 15312Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 15313(Shawn Starr) 15314 15315 153163) iASL Compiler/Disassembler 15317 15318 15319Changed the default location of output files. All output files 15320are now placed in the current directory by default instead of in 15321the directory of the source file. This change may affect some 15322existing makefiles, but it brings the behavior of the compiler in 15323line with other similar tools. The location of the output files 15324can be overridden with the -p command line switch. 15325 15326 15327---------------------------------------- 1532811 November 2002. Summary of changes for version 20021111. 15329 15330 153310) ACPI Specification 2.0B is released and is now available at: 15332http://www.acpi.info/index.html 15333 15334 153351) ACPI CA Core Subsystem: 15336 15337Implemented support for the ACPI 2.0 SMBus Operation Regions. 15338This includes the early detection and handoff of the request to 15339the SMBus region handler (avoiding all of the complex field 15340support code), and support for the bidirectional return packet 15341from an SMBus write operation. This paves the way for the 15342development of SMBus drivers in each host operating system. 15343 15344Fixed a problem where the semaphore WAIT_FOREVER constant was 15345defined as 32 bits, but must be 16 bits according to the ACPI 15346specification. This had the side effect of causing ASL 15347Mutex/Event timeouts even though the ASL code requested a wait 15348forever. Changed all internal references to the ACPI timeout 15349parameter to 16 bits to prevent future problems. Changed the name 15350of WAIT_FOREVER to ACPI_WAIT_FOREVER. 15351 15352Code and Data Size: Current core subsystem library sizes are shown 15353below. These are the code and data sizes for the acpica.lib 15354produced by the Microsoft Visual C++ 6.0 compiler, and these 15355values do not include any ACPI driver or OSPM code. The debug 15356version of the code includes the debug output trace mechanism and 15357has a much larger code and data size. Note that these values will 15358vary depending on the efficiency of the compiler and the compiler 15359options used during generation. 15360 15361 Previous Release 15362 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15363 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 15364 Current Release: 15365 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 15366 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 15367 15368 153692) Linux 15370 15371Module loading/unloading fixes (John Cagle) 15372 15373 153743) iASL Compiler/Disassembler 15375 15376Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 15377 15378Implemented support for the disassembly of all SMBus protocol 15379keywords (SMBQuick, SMBWord, etc.) 15380 15381---------------------------------------- 1538201 November 2002. Summary of changes for version 20021101. 15383 15384 153851) ACPI CA Core Subsystem: 15386 15387Fixed a problem where platforms that have a GPE1 block but no GPE0 15388block were not handled correctly. This resulted in a "GPE 15389overlap" error message. GPE0 is no longer required. 15390 15391Removed code added in the previous release that inserted nodes 15392into the namespace in alphabetical order. This caused some side- 15393effects on various machines. The root cause of the problem is 15394still under investigation since in theory, the internal ordering 15395of the namespace nodes should not matter. 15396 15397 15398Enhanced error reporting for the case where a named object is not 15399found during control method execution. The full ACPI namepath 15400(name reference) of the object that was not found is displayed in 15401this case. 15402 15403Note: as a result of the overhaul of the namespace object types in 15404the previous release, the namespace nodes for the predefined 15405scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 15406instead of ACPI_TYPE_ANY. This simplifies the namespace 15407management code but may affect code that walks the namespace tree 15408looking for specific object types. 15409 15410Code and Data Size: Current core subsystem library sizes are shown 15411below. These are the code and data sizes for the acpica.lib 15412produced by the Microsoft Visual C++ 6.0 compiler, and these 15413values do not include any ACPI driver or OSPM code. The debug 15414version of the code includes the debug output trace mechanism and 15415has a much larger code and data size. Note that these values will 15416vary depending on the efficiency of the compiler and the compiler 15417options used during generation. 15418 15419 Previous Release 15420 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15421 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15422 Current Release: 15423 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 15424 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 15425 15426 154272) Linux 15428 15429Fixed a problem introduced in the previous release where the 15430Processor and Thermal objects were not recognized and installed in 15431/proc. This was related to the scope type change described above. 15432 15433 154343) iASL Compiler/Disassembler 15435 15436Implemented the -g option to get all of the required ACPI tables 15437from the registry and save them to files (Windows version of the 15438compiler only.) The required tables are the FADT, FACS, and DSDT. 15439 15440Added ACPI table checksum validation during table disassembly in 15441order to catch corrupted tables. 15442 15443 15444---------------------------------------- 1544522 October 2002. Summary of changes for version 20021022. 15446 154471) ACPI CA Core Subsystem: 15448 15449Implemented a restriction on the Scope operator that the target 15450must already exist in the namespace at the time the operator is 15451encountered (during table load or method execution). In other 15452words, forward references are not allowed and Scope() cannot 15453create a new object. This changes the previous behavior where the 15454interpreter would create the name if not found. This new behavior 15455correctly enables the search-to-root algorithm during namespace 15456lookup of the target name. Because of this upsearch, this fixes 15457the known Compaq _SB_.OKEC problem and makes both the AML 15458interpreter and iASL compiler compatible with other ACPI 15459implementations. 15460 15461Completed a major overhaul of the internal ACPI object types for 15462the ACPI Namespace and the associated operand objects. Many of 15463these types had become obsolete with the introduction of the two- 15464pass namespace load. This cleanup simplifies the code and makes 15465the entire namespace load mechanism much clearer and easier to 15466understand. 15467 15468Improved debug output for tracking scope opening/closing to help 15469diagnose scoping issues. The old scope name as well as the new 15470scope name are displayed. Also improved error messages for 15471problems with ASL Mutex objects and error messages for GPE 15472problems. 15473 15474Cleaned up the namespace dump code, removed obsolete code. 15475 15476All string output (for all namespace/object dumps) now uses the 15477common ACPI string output procedure which handles escapes properly 15478and does not emit non-printable characters. 15479 15480Fixed some issues with constants in the 64-bit version of the 15481local C library (utclib.c) 15482 15483 154842) Linux 15485 15486EC Driver: No longer attempts to acquire the Global Lock at 15487interrupt level. 15488 15489 154903) iASL Compiler/Disassembler 15491 15492Implemented ACPI 2.0B grammar change that disallows all Type 1 and 154932 opcodes outside of a control method. This means that the 15494"executable" operators (versus the "namespace" operators) cannot 15495be used at the table level; they can only be used within a control 15496method. 15497 15498Implemented the restriction on the Scope() operator where the 15499target must already exist in the namespace at the time the 15500operator is encountered (during ASL compilation). In other words, 15501forward references are not allowed and Scope() cannot create a new 15502object. This makes the iASL compiler compatible with other ACPI 15503implementations and makes the Scope() implementation adhere to the 15504ACPI specification. 15505 15506Fixed a problem where namepath optimization for the Alias operator 15507was optimizing the wrong path (of the two namepaths.) This caused 15508a "Missing alias link" error message. 15509 15510Fixed a problem where an "unknown reserved name" warning could be 15511incorrectly generated for names like "_SB" when the trailing 15512underscore is not used in the original ASL. 15513 15514Fixed a problem where the reserved name check did not handle 15515NamePaths with multiple NameSegs correctly. The first nameseg of 15516the NamePath was examined instead of the last NameSeg. 15517 15518 15519---------------------------------------- 15520 1552102 October 2002. Summary of changes for this release. 15522 15523 155241) ACPI CA Core Subsystem version 20021002: 15525 15526Fixed a problem where a store/copy of a string to an existing 15527string did not always set the string length properly in the String 15528object. 15529 15530Fixed a reported problem with the ToString operator where the 15531behavior was identical to the ToHexString operator instead of just 15532simply converting a raw buffer to a string data type. 15533 15534Fixed a problem where CopyObject and the other "explicit" 15535conversion operators were not updating the internal namespace node 15536type as part of the store operation. 15537 15538Fixed a memory leak during implicit source operand conversion 15539where the original object was not deleted if it was converted to a 15540new object of a different type. 15541 15542Enhanced error messages for all problems associated with namespace 15543lookups. Common procedure generates and prints the lookup name as 15544well as the formatted status. 15545 15546Completed implementation of a new design for the Alias support 15547within the namespace. The existing design did not handle the case 15548where a new object was assigned to one of the two names due to the 15549use of an explicit conversion operator, resulting in the two names 15550pointing to two different objects. The new design simply points 15551the Alias name to the original name node - not to the object. 15552This results in a level of indirection that must be handled in the 15553name resolution mechanism. 15554 15555Code and Data Size: Current core subsystem library sizes are shown 15556below. These are the code and data sizes for the acpica.lib 15557produced by the Microsoft Visual C++ 6.0 compiler, and these 15558values do not include any ACPI driver or OSPM code. The debug 15559version of the code includes the debug output trace mechanism and 15560has a larger code and data size. Note that these values will vary 15561depending on the efficiency of the compiler and the compiler 15562options used during generation. 15563 15564 Previous Release 15565 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15566 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 15567 Current Release: 15568 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 15569 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 15570 15571 155722) Linux 15573 15574Initialize thermal driver's timer before it is used. (Knut 15575Neumann) 15576 15577Allow handling negative celsius values. (Kochi Takayoshi) 15578 15579Fix thermal management and make trip points. R/W (Pavel Machek) 15580 15581Fix /proc/acpi/sleep. (P. Christeas) 15582 15583IA64 fixes. (David Mosberger) 15584 15585Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 15586 15587Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 15588Brodowski) 15589 15590 155913) iASL Compiler/Disassembler 15592 15593Clarified some warning/error messages. 15594 15595 15596---------------------------------------- 1559718 September 2002. Summary of changes for this release. 15598 15599 156001) ACPI CA Core Subsystem version 20020918: 15601 15602Fixed a reported problem with reference chaining (via the Index() 15603and RefOf() operators) in the ObjectType() and SizeOf() operators. 15604The definition of these operators includes the dereferencing of 15605all chained references to return information on the base object. 15606 15607Fixed a problem with stores to indexed package elements - the 15608existing code would not complete the store if an "implicit 15609conversion" was not performed. In other words, if the existing 15610object (package element) was to be replaced completely, the code 15611didn't handle this case. 15612 15613Relaxed typechecking on the ASL "Scope" operator to allow the 15614target name to refer to an object of type Integer, String, or 15615Buffer, in addition to the scoping object types (Device, 15616predefined Scopes, Processor, PowerResource, and ThermalZone.) 15617This allows existing AML code that has workarounds for a bug in 15618Windows to function properly. A warning is issued, however. This 15619affects both the AML interpreter and the iASL compiler. Below is 15620an example of this type of ASL code: 15621 15622 Name(DEB,0x00) 15623 Scope(DEB) 15624 { 15625 15626Fixed some reported problems with 64-bit integer support in the 15627local implementation of C library functions (clib.c) 15628 15629 156302) Linux 15631 15632Use ACPI fix map region instead of IOAPIC region, since it is 15633undefined in non-SMP. 15634 15635Ensure that the SCI has the proper polarity and trigger, even on 15636systems that do not have an interrupt override entry in the MADT. 15637 156382.5 big driver reorganization (Pat Mochel) 15639 15640Use early table mapping code from acpitable.c (Andi Kleen) 15641 15642New blacklist entries (Andi Kleen) 15643 15644Blacklist improvements. Split blacklist code out into a separate 15645file. Move checking the blacklist to very early. Previously, we 15646would use ACPI tables, and then halfway through init, check the 15647blacklist -- too late. Now, it's early enough to completely fall- 15648back to non-ACPI. 15649 15650 156513) iASL Compiler/Disassembler version 20020918: 15652 15653Fixed a problem where the typechecking code didn't know that an 15654alias could point to a method. In other words, aliases were not 15655being dereferenced during typechecking. 15656 15657 15658---------------------------------------- 1565929 August 2002. Summary of changes for this release. 15660 156611) ACPI CA Core Subsystem Version 20020829: 15662 15663If the target of a Scope() operator already exists, it must be an 15664object type that actually opens a scope -- such as a Device, 15665Method, Scope, etc. This is a fatal runtime error. Similar error 15666check has been added to the iASL compiler also. 15667 15668Tightened up the namespace load to disallow multiple names in the 15669same scope. This previously was allowed if both objects were of 15670the same type. (i.e., a lookup was the same as entering a new 15671name). 15672 15673 156742) Linux 15675 15676Ensure that the ACPI interrupt has the proper trigger and 15677polarity. 15678 15679local_irq_disable is extraneous. (Matthew Wilcox) 15680 15681Make "acpi=off" actually do what it says, and not use the ACPI 15682interpreter *or* the tables. 15683 15684Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 15685Takayoshi) 15686 15687 156883) iASL Compiler/Disassembler Version 20020829: 15689 15690Implemented namepath optimization for name declarations. For 15691example, a declaration like "Method (\_SB_.ABCD)" would get 15692optimized to "Method (ABCD)" if the declaration is within the 15693\_SB_ scope. This optimization is in addition to the named 15694reference path optimization first released in the previous 15695version. This would seem to complete all possible optimizations 15696for namepaths within the ASL/AML. 15697 15698If the target of a Scope() operator already exists, it must be an 15699object type that actually opens a scope -- such as a Device, 15700Method, Scope, etc. 15701 15702Implemented a check and warning for unreachable code in the same 15703block below a Return() statement. 15704 15705Fixed a problem where the listing file was not generated if the 15706compiler aborted if the maximum error count was exceeded (200). 15707 15708Fixed a problem where the typechecking of method return values was 15709broken. This includes the check for a return value when the 15710method is invoked as a TermArg (a return value is expected.) 15711 15712Fixed a reported problem where EOF conditions during a quoted 15713string or comment caused a fault. 15714 15715 15716---------------------------------------- 1571715 August 2002. Summary of changes for this release. 15718 157191) ACPI CA Core Subsystem Version 20020815: 15720 15721Fixed a reported problem where a Store to a method argument that 15722contains a reference did not perform the indirect store correctly. 15723This problem was created during the conversion to the new 15724reference object model - the indirect store to a method argument 15725code was not updated to reflect the new model. 15726 15727Reworked the ACPI mode change code to better conform to ACPI 2.0, 15728handle corner cases, and improve code legibility (Kochi Takayoshi) 15729 15730Fixed a problem with the pathname parsing for the carat (^) 15731prefix. The heavy use of the carat operator by the new namepath 15732optimization in the iASL compiler uncovered a problem with the AML 15733interpreter handling of this prefix. In the case where one or 15734more carats precede a single nameseg, the nameseg was treated as 15735standalone and the search rule (to root) was inadvertently 15736applied. This could cause both the iASL compiler and the 15737interpreter to find the wrong object or to miss the error that 15738should occur if the object does not exist at that exact pathname. 15739 15740Found and fixed the problem where the HP Pavilion DSDT would not 15741load. This was a relatively minor tweak to the table loading code 15742(a problem caused by the unexpected encounter with a method 15743invocation not within a control method), but it does not solve the 15744overall issue of the execution of AML code at the table level. 15745This investigation is still ongoing. 15746 15747Code and Data Size: Current core subsystem library sizes are shown 15748below. These are the code and data sizes for the acpica.lib 15749produced by the Microsoft Visual C++ 6.0 compiler, and these 15750values do not include any ACPI driver or OSPM code. The debug 15751version of the code includes the debug output trace mechanism and 15752has a larger code and data size. Note that these values will vary 15753depending on the efficiency of the compiler and the compiler 15754options used during generation. 15755 15756 Previous Release 15757 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 15758 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 15759 Current Release: 15760 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 15761 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 15762 15763 157642) Linux 15765 15766Remove redundant slab.h include (Brad Hards) 15767 15768Fix several bugs in thermal.c (Herbert Nachtnebel) 15769 15770Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 15771 15772Change acpi_system_suspend to use updated irq functions (Pavel 15773Machek) 15774 15775Export acpi_get_firmware_table (Matthew Wilcox) 15776 15777Use proper root proc entry for ACPI (Kochi Takayoshi) 15778 15779Fix early-boot table parsing (Bjorn Helgaas) 15780 15781 157823) iASL Compiler/Disassembler 15783 15784Reworked the compiler options to make them more consistent and to 15785use two-letter options where appropriate. We were running out of 15786sensible letters. This may break some makefiles, so check the 15787current options list by invoking the compiler with no parameters. 15788 15789Completed the design and implementation of the ASL namepath 15790optimization option for the compiler. This option optimizes all 15791references to named objects to the shortest possible path. The 15792first attempt tries to utilize a single nameseg (4 characters) and 15793the "search-to-root" algorithm used by the interpreter. If that 15794cannot be used (because either the name is not in the search path 15795or there is a conflict with another object with the same name), 15796the pathname is optimized using the carat prefix (usually a 15797shorter string than specifying the entire path from the root.) 15798 15799Implemented support to obtain the DSDT from the Windows registry 15800(when the disassembly option is specified with no input file). 15801Added this code as the implementation for AcpiOsTableOverride in 15802the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 15803utility) to scan memory for the DSDT to the AcpiOsTableOverride 15804function in the DOS OSL to make the disassembler truly OS 15805independent. 15806 15807Implemented a new option to disassemble and compile in one step. 15808When used without an input filename, this option will grab the 15809DSDT from the local machine, disassemble it, and compile it in one 15810step. 15811 15812Added a warning message for invalid escapes (a backslash followed 15813by any character other than the allowable escapes). This catches 15814the quoted string error "\_SB_" (which should be "\\_SB_" ). 15815 15816Also, there are numerous instances in the ACPI specification where 15817this error occurs. 15818 15819Added a compiler option to disable all optimizations. This is 15820basically the "compatibility mode" because by using this option, 15821the AML code will come out exactly the same as other ASL 15822compilers. 15823 15824Added error messages for incorrectly ordered dependent resource 15825functions. This includes: missing EndDependentFn macro at end of 15826dependent resource list, nested dependent function macros (both 15827start and end), and missing StartDependentFn macro. These are 15828common errors that should be caught at compile time. 15829 15830Implemented _OSI support for the disassembler and compiler. _OSI 15831must be included in the namespace for proper disassembly (because 15832the disassembler must know the number of arguments.) 15833 15834Added an "optimization" message type that is optional (off by 15835default). This message is used for all optimizations - including 15836constant folding, integer optimization, and namepath optimization. 15837 15838---------------------------------------- 1583925 July 2002. Summary of changes for this release. 15840 15841 158421) ACPI CA Core Subsystem Version 20020725: 15843 15844The AML Disassembler has been enhanced to produce compilable ASL 15845code and has been integrated into the iASL compiler (see below) as 15846well as the single-step disassembly for the AML debugger and the 15847disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 15848resource templates and macros are fully supported. The 15849disassembler has been tested on over 30 different AML files, 15850producing identical AML when the resulting disassembled ASL file 15851is recompiled with the same ASL compiler. 15852 15853Modified the Resource Manager to allow zero interrupts and zero 15854dma channels during the GetCurrentResources call. This was 15855causing problems on some platforms. 15856 15857Added the AcpiOsRedirectOutput interface to the OSL to simplify 15858output redirection for the AcpiOsPrintf and AcpiOsVprintf 15859interfaces. 15860 15861Code and Data Size: Current core subsystem library sizes are shown 15862below. These are the code and data sizes for the acpica.lib 15863produced by the Microsoft Visual C++ 6.0 compiler, and these 15864values do not include any ACPI driver or OSPM code. The debug 15865version of the code includes the debug output trace mechanism and 15866has a larger code and data size. Note that these values will vary 15867depending on the efficiency of the compiler and the compiler 15868options used during generation. 15869 15870 Previous Release 15871 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 15872 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 15873 Current Release: 15874 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 15875 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 15876 15877 158782) Linux 15879 15880Fixed a panic in the EC driver (Dominik Brodowski) 15881 15882Implemented checksum of the R/XSDT itself during Linux table scan 15883(Richard Schaal) 15884 15885 158863) iASL compiler 15887 15888The AML disassembler is integrated into the compiler. The "-d" 15889option invokes the disassembler to completely disassemble an 15890input AML file, producing as output a text ASL file with the 15891extension ".dsl" (to avoid name collisions with existing .asl 15892source files.) A future enhancement will allow the disassembler 15893to obtain the BIOS DSDT from the registry under Windows. 15894 15895Fixed a problem with the VendorShort and VendorLong resource 15896descriptors where an invalid AML sequence was created. 15897 15898Implemented a fix for BufferData term in the ASL parser. It was 15899inadvertently defined twice, allowing invalid syntax to pass and 15900causing reduction conflicts. 15901 15902Fixed a problem where the Ones opcode could get converted to a 15903value of zero if "Ones" was used where a byte, word or dword value 15904was expected. The 64-bit value is now truncated to the correct 15905size with the correct value. 15906 15907 15908 15909---------------------------------------- 1591002 July 2002. Summary of changes for this release. 15911 15912 159131) ACPI CA Core Subsystem Version 20020702: 15914 15915The Table Manager code has been restructured to add several new 15916features. Tables that are not required by the core subsystem 15917(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 15918validated in any way and are returned from AcpiGetFirmwareTable if 15919requested. The AcpiOsTableOverride interface is now called for 15920each table that is loaded by the subsystem in order to allow the 15921host to override any table it chooses. Previously, only the DSDT 15922could be overridden. Added one new files, tbrsdt.c and 15923tbgetall.c. 15924 15925Fixed a problem with the conversion of internal package objects to 15926external objects (when a package is returned from a control 15927method.) The return buffer length was set to zero instead of the 15928proper length of the package object. 15929 15930Fixed a reported problem with the use of the RefOf and DeRefOf 15931operators when passing reference arguments to control methods. A 15932new type of Reference object is used internally for references 15933produced by the RefOf operator. 15934 15935Added additional error messages in the Resource Manager to explain 15936AE_BAD_DATA errors when they occur during resource parsing. 15937 15938Split the AcpiEnableSubsystem into two primitives to enable a 15939finer granularity initialization sequence. These two calls should 15940be called in this order: AcpiEnableSubsystem (flags), 15941AcpiInitializeObjects (flags). The flags parameter remains the 15942same. 15943 15944 159452) Linux 15946 15947Updated the ACPI utilities module to understand the new style of 15948fully resolved package objects that are now returned from the core 15949subsystem. This eliminates errors of the form: 15950 15951 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 15952 acpi_utils-0430 [145] acpi_evaluate_reference: 15953 Invalid element in package (not a device reference) 15954 15955The method evaluation utility uses the new buffer allocation 15956scheme instead of calling AcpiEvaluate Object twice. 15957 15958Added support for ECDT. This allows the use of the Embedded 15959 15960Controller before the namespace has been fully initialized, which 15961is necessary for ACPI 2.0 support, and for some laptops to 15962initialize properly. (Laptops using ECDT are still rare, so only 15963limited testing was performed of the added functionality.) 15964 15965Fixed memory leaks in the EC driver. 15966 15967Eliminated a brittle code structure in acpi_bus_init(). 15968 15969Eliminated the acpi_evaluate() helper function in utils.c. It is 15970no longer needed since acpi_evaluate_object can optionally 15971allocate memory for the return object. 15972 15973Implemented fix for keyboard hang when getting battery readings on 15974some systems (Stephen White) 15975 15976PCI IRQ routing update (Dominik Brodowski) 15977 15978Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 15979support 15980 15981---------------------------------------- 1598211 June 2002. Summary of changes for this release. 15983 15984 159851) ACPI CA Core Subsystem Version 20020611: 15986 15987Fixed a reported problem where constants such as Zero and One 15988appearing within _PRT packages were not handled correctly within 15989the resource manager code. Originally reported against the ASL 15990compiler because the code generator now optimizes integers to 15991their minimal AML representation (i.e. AML constants if possible.) 15992The _PRT code now handles all AML constant opcodes correctly 15993(Zero, One, Ones, Revision). 15994 15995Fixed a problem with the Concatenate operator in the AML 15996interpreter where a buffer result object was incorrectly marked as 15997not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 15998 15999All package sub-objects are now fully resolved before they are 16000returned from the external ACPI interfaces. This means that name 16001strings are resolved to object handles, and constant operators 16002(Zero, One, Ones, Revision) are resolved to Integers. 16003 16004Implemented immediate resolution of the AML Constant opcodes 16005(Zero, One, Ones, Revision) to Integer objects upon detection 16006within the AML stream. This has simplified and reduced the 16007generated code size of the subsystem by eliminating about 10 16008switch statements for these constants (which previously were 16009contained in Reference objects.) The complicating issues are that 16010the Zero opcode is used as a "placeholder" for unspecified 16011optional target operands and stores to constants are defined to be 16012no-ops. 16013 16014Code and Data Size: Current core subsystem library sizes are shown 16015below. These are the code and data sizes for the acpica.lib 16016produced by the Microsoft Visual C++ 6.0 compiler, and these 16017values do not include any ACPI driver or OSPM code. The debug 16018version of the code includes the debug output trace mechanism and 16019has a larger code and data size. Note that these values will vary 16020depending on the efficiency of the compiler and the compiler 16021options used during generation. 16022 16023 Previous Release 16024 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 16025 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 16026 Current Release: 16027 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 16028 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 16029 16030 160312) Linux 16032 16033 16034Added preliminary support for obtaining _TRA data for PCI root 16035bridges (Bjorn Helgaas). 16036 16037 160383) iASL Compiler Version X2046: 16039 16040Fixed a problem where the "_DDN" reserved name was defined to be a 16041control method with one argument. There are no arguments, and 16042_DDN does not have to be a control method. 16043 16044Fixed a problem with the Linux version of the compiler where the 16045source lines printed with error messages were the wrong lines. 16046This turned out to be the "LF versus CR/LF" difference between 16047Windows and Unix. This appears to be the longstanding issue 16048concerning listing output and error messages. 16049 16050Fixed a problem with the Linux version of compiler where opcode 16051names within error messages were wrong. This was caused by a 16052slight difference in the output of the Flex tool on Linux versus 16053Windows. 16054 16055Fixed a problem with the Linux compiler where the hex output files 16056contained some garbage data caused by an internal buffer overrun. 16057 16058 16059---------------------------------------- 1606017 May 2002. Summary of changes for this release. 16061 16062 160631) ACPI CA Core Subsystem Version 20020517: 16064 16065Implemented a workaround to an BIOS bug discovered on the HP 16066OmniBook where the FADT revision number and the table size are 16067inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 16068behavior is to fallback to using only the ACPI 1.0 fields of the 16069FADT if the table is too small to be a ACPI 2.0 table as claimed 16070by the revision number. Although this is a BIOS bug, this is a 16071case where the workaround is simple enough and with no side 16072effects, so it seemed prudent to add it. A warning message is 16073issued, however. 16074 16075Implemented minimum size checks for the fixed-length ACPI tables - 16076- the FADT and FACS, as well as consistency checks between the 16077revision number and the table size. 16078 16079Fixed a reported problem in the table override support where the 16080new table pointer was incorrectly treated as a physical address 16081instead of a logical address. 16082 16083Eliminated the use of the AE_AML_ERROR exception and replaced it 16084with more descriptive codes. 16085 16086Fixed a problem where an exception would occur if an ASL Field was 16087defined with no named Field Units underneath it (used by some 16088index fields). 16089 16090Code and Data Size: Current core subsystem library sizes are shown 16091below. These are the code and data sizes for the acpica.lib 16092produced by the Microsoft Visual C++ 6.0 compiler, and these 16093values do not include any ACPI driver or OSPM code. The debug 16094version of the code includes the debug output trace mechanism and 16095has a larger code and data size. Note that these values will vary 16096depending on the efficiency of the compiler and the compiler 16097options used during generation. 16098 16099 Previous Release 16100 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 16101 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 16102 Current Release: 16103 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 16104 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 16105 16106 16107 161082) Linux 16109 16110Much work done on ACPI init (MADT and PCI IRQ routing support). 16111(Paul D. and Dominik Brodowski) 16112 16113Fix PCI IRQ-related panic on boot (Sam Revitch) 16114 16115Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 16116 16117Fix "MHz" typo (Dominik Brodowski) 16118 16119Fix RTC year 2000 issue (Dominik Brodowski) 16120 16121Preclude multiple button proc entries (Eric Brunet) 16122 16123Moved arch-specific code out of include/platform/aclinux.h 16124 161253) iASL Compiler Version X2044: 16126 16127Implemented error checking for the string used in the EISAID macro 16128(Usually used in the definition of the _HID object.) The code now 16129strictly enforces the PnP format - exactly 7 characters, 3 16130uppercase letters and 4 hex digits. 16131 16132If a raw string is used in the definition of the _HID object 16133(instead of the EISAID macro), the string must contain all 16134alphanumeric characters (e.g., "*PNP0011" is not allowed because 16135of the asterisk.) 16136 16137Implemented checking for invalid use of ACPI reserved names for 16138most of the name creation operators (Name, Device, Event, Mutex, 16139OperationRegion, PowerResource, Processor, and ThermalZone.) 16140Previously, this check was only performed for control methods. 16141 16142Implemented an additional check on the Name operator to emit an 16143error if a reserved name that must be implemented in ASL as a 16144control method is used. We know that a reserved name must be a 16145method if it is defined with input arguments. 16146 16147The warning emitted when a namespace object reference is not found 16148during the cross reference phase has been changed into an error. 16149The "External" directive should be used for names defined in other 16150modules. 16151 16152 161534) Tools and Utilities 16154 16155The 16-bit tools (adump16 and aexec16) have been regenerated and 16156tested. 16157 16158Fixed a problem with the output of both acpidump and adump16 where 16159the indentation of closing parentheses and brackets was not 16160 16161aligned properly with the parent block. 16162 16163 16164---------------------------------------- 1616503 May 2002. Summary of changes for this release. 16166 16167 161681) ACPI CA Core Subsystem Version 20020503: 16169 16170Added support a new OSL interface that allows the host operating 16171 16172system software to override the DSDT found in the firmware - 16173AcpiOsTableOverride. With this interface, the OSL can examine the 16174version of the firmware DSDT and replace it with a different one 16175if desired. 16176 16177Added new external interfaces for accessing ACPI registers from 16178device drivers and other system software - AcpiGetRegister and 16179AcpiSetRegister. This was simply an externalization of the 16180existing AcpiHwBitRegister interfaces. 16181 16182Fixed a regression introduced in the previous build where the 16183ASL/AML CreateField operator always returned an error, 16184"destination must be a NS Node". 16185 16186Extended the maximum time (before failure) to successfully enable 16187ACPI mode to 3 seconds. 16188 16189Code and Data Size: Current core subsystem library sizes are shown 16190below. These are the code and data sizes for the acpica.lib 16191produced by the Microsoft Visual C++ 6.0 compiler, and these 16192values do not include any ACPI driver or OSPM code. The debug 16193version of the code includes the debug output trace mechanism and 16194has a larger code and data size. Note that these values will vary 16195depending on the efficiency of the compiler and the compiler 16196options used during generation. 16197 16198 Previous Release 16199 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 16200 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 16201 Current Release: 16202 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 16203 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 16204 16205 162062) Linux 16207 16208Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 16209free. While 3 out of 4 of our in-house systems work fine, the last 16210one still hangs when testing the LAPIC timer. 16211 16212Renamed many files in 2.5 kernel release to omit "acpi_" from the 16213name. 16214 16215Added warning on boot for Presario 711FR. 16216 16217Sleep improvements (Pavel Machek) 16218 16219ACPI can now be built without CONFIG_PCI enabled. 16220 16221IA64: Fixed memory map functions (JI Lee) 16222 16223 162243) iASL Compiler Version X2043: 16225 16226Added support to allow the compiler to be integrated into the MS 16227VC++ development environment for one-button compilation of single 16228files or entire projects -- with error-to-source-line mapping. 16229 16230Implemented support for compile-time constant folding for the 16231Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 16232specification. This allows the ASL writer to use expressions 16233instead of Integer/Buffer/String constants in terms that must 16234evaluate to constants at compile time and will also simplify the 16235emitted AML in any such sub-expressions that can be folded 16236(evaluated at compile-time.) This increases the size of the 16237compiler significantly because a portion of the ACPI CA AML 16238interpreter is included within the compiler in order to pre- 16239evaluate constant expressions. 16240 16241 16242Fixed a problem with the "Unicode" ASL macro that caused the 16243compiler to fault. (This macro is used in conjunction with the 16244_STR reserved name.) 16245 16246Implemented an AML opcode optimization to use the Zero, One, and 16247Ones opcodes where possible to further reduce the size of integer 16248constants and thus reduce the overall size of the generated AML 16249code. 16250 16251Implemented error checking for new reserved terms for ACPI version 162522.0A. 16253 16254Implemented the -qr option to display the current list of ACPI 16255reserved names known to the compiler. 16256 16257Implemented the -qc option to display the current list of ASL 16258operators that are allowed within constant expressions and can 16259therefore be folded at compile time if the operands are constants. 16260 16261 162624) Documentation 16263 16264Updated the Programmer's Reference for new interfaces, data types, 16265and memory allocation model options. 16266 16267Updated the iASL Compiler User Reference to apply new format and 16268add information about new features and options. 16269 16270---------------------------------------- 1627119 April 2002. Summary of changes for this release. 16272 162731) ACPI CA Core Subsystem Version 20020419: 16274 16275The source code base for the Core Subsystem has been completely 16276cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 16277versions. The Lint option files used are included in the 16278/acpi/generate/lint directory. 16279 16280Implemented enhanced status/error checking across the entire 16281Hardware manager subsystem. Any hardware errors (reported from 16282the OSL) are now bubbled up and will abort a running control 16283method. 16284 16285 16286Fixed a problem where the per-ACPI-table integer width (32 or 64) 16287was stored only with control method nodes, causing a fault when 16288non-control method code was executed during table loading. The 16289solution implemented uses a global variable to indicate table 16290width across the entire ACPI subsystem. Therefore, ACPI CA does 16291not support mixed integer widths across different ACPI tables 16292(DSDT, SSDT). 16293 16294Fixed a problem where NULL extended fields (X fields) in an ACPI 162952.0 ACPI FADT caused the table load to fail. Although the 16296existing ACPI specification is a bit fuzzy on this topic, the new 16297behavior is to fall back on a ACPI 1.0 field if the corresponding 16298ACPI 2.0 X field is zero (even though the table revision indicates 16299a full ACPI 2.0 table.) The ACPI specification will be updated to 16300clarify this issue. 16301 16302Fixed a problem with the SystemMemory operation region handler 16303where memory was always accessed byte-wise even if the AML- 16304specified access width was larger than a byte. This caused 16305problems on systems with memory-mapped I/O. Memory is now 16306accessed with the width specified. On systems that do not support 16307non-aligned transfers, a check is made to guarantee proper address 16308alignment before proceeding in order to avoid an AML-caused 16309alignment fault within the kernel. 16310 16311 16312Fixed a problem with the ExtendedIrq resource where only one byte 16313of the 4-byte Irq field was extracted. 16314 16315Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 16316function was out of date and required a rewrite. 16317 16318Code and Data Size: Current core subsystem library sizes are shown 16319below. These are the code and data sizes for the acpica.lib 16320produced by the Microsoft Visual C++ 6.0 compiler, and these 16321values do not include any ACPI driver or OSPM code. The debug 16322version of the code includes the debug output trace mechanism and 16323has a larger code and data size. Note that these values will vary 16324depending on the efficiency of the compiler and the compiler 16325options used during generation. 16326 16327 Previous Release 16328 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 16329 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 16330 Current Release: 16331 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 16332 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 16333 16334 163352) Linux 16336 16337PCI IRQ routing fixes (Dominik Brodowski) 16338 16339 163403) iASL Compiler Version X2042: 16341 16342Implemented an additional compile-time error check for a field 16343unit whose size + minimum access width would cause a run-time 16344access beyond the end-of-region. Previously, only the field size 16345itself was checked. 16346 16347The Core subsystem and iASL compiler now share a common parse 16348object in preparation for compile-time evaluation of the type 163493/4/5 ASL operators. 16350 16351 16352---------------------------------------- 16353Summary of changes for this release: 03_29_02 16354 163551) ACPI CA Core Subsystem Version 20020329: 16356 16357Implemented support for late evaluation of TermArg operands to 16358Buffer and Package objects. This allows complex expressions to be 16359used in the declarations of these object types. 16360 16361Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 163621.0, if the field was larger than 32 bits, it was returned as a 16363buffer - otherwise it was returned as an integer. In ACPI 2.0, 16364the field is returned as a buffer only if the field is larger than 1636564 bits. The TableRevision is now considered when making this 16366conversion to avoid incompatibility with existing ASL code. 16367 16368Implemented logical addressing for AcpiOsGetRootPointer. This 16369allows an RSDP with either a logical or physical address. With 16370this support, the host OS can now override all ACPI tables with 16371one logical RSDP. Includes implementation of "typed" pointer 16372support to allow a common data type for both physical and logical 16373pointers internally. This required a change to the 16374AcpiOsGetRootPointer interface. 16375 16376Implemented the use of ACPI 2.0 Generic Address Structures for all 16377GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 16378mapped I/O for these ACPI features. 16379 16380Initialization now ignores not only non-required tables (All 16381tables other than the FADT, FACS, DSDT, and SSDTs), but also does 16382not validate the table headers of unrecognized tables. 16383 16384Fixed a problem where a notify handler could only be 16385installed/removed on an object of type Device. All "notify" 16386 16387objects are now supported -- Devices, Processor, Power, and 16388Thermal. 16389 16390Removed most verbosity from the ACPI_DB_INFO debug level. Only 16391critical information is returned when this debug level is enabled. 16392 16393Code and Data Size: Current core subsystem library sizes are shown 16394below. These are the code and data sizes for the acpica.lib 16395produced by the Microsoft Visual C++ 6.0 compiler, and these 16396values do not include any ACPI driver or OSPM code. The debug 16397version of the code includes the debug output trace mechanism and 16398has a larger code and data size. Note that these values will vary 16399depending on the efficiency of the compiler and the compiler 16400options used during generation. 16401 16402 Previous Release 16403 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 16404 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 16405 Current Release: 16406 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 16407 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 16408 16409 164102) Linux: 16411 16412The processor driver (acpi_processor.c) now fully supports ACPI 164132.0-based processor performance control (e.g. Intel(R) 16414SpeedStep(TM) technology) Note that older laptops that only have 16415the Intel "applet" interface are not supported through this. The 16416'limit' and 'performance' interface (/proc) are fully functional. 16417[Note that basic policy for controlling performance state 16418transitions will be included in the next version of ospmd.] The 16419idle handler was modified to more aggressively use C2, and PIIX4 16420errata handling underwent a complete overhaul (big thanks to 16421Dominik Brodowski). 16422 16423Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 16424based devices in the ACPI namespace are now dynamically bound 16425(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 16426This allows, among other things, ACPI to resolve bus numbers for 16427subordinate PCI bridges. 16428 16429Enhanced PCI IRQ routing to get the proper bus number for _PRT 16430entries defined underneath PCI bridges. 16431 16432Added IBM 600E to bad bios list due to invalid _ADR value for 16433PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 16434 16435In the process of adding full MADT support (e.g. IOAPIC) for IA32 16436(acpi.c, mpparse.c) -- stay tuned. 16437 16438Added back visual differentiation between fixed-feature and 16439control-method buttons in dmesg. Buttons are also subtyped (e.g. 16440button/power/PWRF) to simplify button identification. 16441 16442We no longer use -Wno-unused when compiling debug. Please ignore 16443any "_THIS_MODULE defined but not used" messages. 16444 16445Can now shut down the system using "magic sysrq" key. 16446 16447 164483) iASL Compiler version 2041: 16449 16450Fixed a problem where conversion errors for hex/octal/decimal 16451constants were not reported. 16452 16453Implemented a fix for the General Register template Address field. 16454This field was 8 bits when it should be 64. 16455 16456Fixed a problem where errors/warnings were no longer being emitted 16457within the listing output file. 16458 16459Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 16460exactly 4 characters, alphanumeric only. 16461 16462 16463 16464 16465---------------------------------------- 16466Summary of changes for this release: 03_08_02 16467 16468 164691) ACPI CA Core Subsystem Version 20020308: 16470 16471Fixed a problem with AML Fields where the use of the "AccessAny" 16472keyword could cause an interpreter error due to attempting to read 16473or write beyond the end of the parent Operation Region. 16474 16475Fixed a problem in the SystemMemory Operation Region handler where 16476an attempt was made to map memory beyond the end of the region. 16477This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 16478errors on some Linux systems. 16479 16480Fixed a problem where the interpreter/namespace "search to root" 16481algorithm was not functioning for some object types. Relaxed the 16482internal restriction on the search to allow upsearches for all 16483external object types as well as most internal types. 16484 16485 164862) Linux: 16487 16488We now use safe_halt() macro versus individual calls to sti | hlt. 16489 16490Writing to the processor limit interface should now work. "echo 1" 16491will increase the limit, 2 will decrease, and 0 will reset to the 16492 16493default. 16494 16495 164963) ASL compiler: 16497 16498Fixed segfault on Linux version. 16499 16500 16501---------------------------------------- 16502Summary of changes for this release: 02_25_02 16503 165041) ACPI CA Core Subsystem: 16505 16506 16507Fixed a problem where the GPE bit masks were not initialized 16508properly, causing erratic GPE behavior. 16509 16510Implemented limited support for multiple calling conventions. The 16511code can be generated with either the VPL (variable parameter 16512list, or "C") convention, or the FPL (fixed parameter list, or 16513"Pascal") convention. The core subsystem is about 3.4% smaller 16514when generated with FPL. 16515 16516 165172) Linux 16518 16519Re-add some /proc/acpi/event functionality that was lost during 16520the rewrite 16521 16522Resolved issue with /proc events for fixed-feature buttons showing 16523up as the system device. 16524 16525Fixed checks on C2/C3 latencies to be inclusive of maximum values. 16526 16527Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 16528 16529Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 16530 16531Fixed limit interface & usage to fix bugs with passive cooling 16532hysterisis. 16533 16534Restructured PRT support. 16535 16536 16537---------------------------------------- 16538Summary of changes for this label: 02_14_02 16539 16540 165411) ACPI CA Core Subsystem: 16542 16543Implemented support in AcpiLoadTable to allow loading of FACS and 16544FADT tables. 16545 16546Support for the now-obsolete interim 0.71 64-bit ACPI tables has 16547been removed. All 64-bit platforms should be migrated to the ACPI 165482.0 tables. The actbl71.h header has been removed from the source 16549tree. 16550 16551All C macros defined within the subsystem have been prefixed with 16552"ACPI_" to avoid collision with other system include files. 16553 16554Removed the return value for the two AcpiOsPrint interfaces, since 16555it is never used and causes lint warnings for ignoring the return 16556value. 16557 16558Added error checking to all internal mutex acquire and release 16559calls. Although a failure from one of these interfaces is 16560probably a fatal system error, these checks will cause the 16561immediate abort of the currently executing method or interface. 16562 16563Fixed a problem where the AcpiSetCurrentResources interface could 16564fault. This was a side effect of the deployment of the new memory 16565allocation model. 16566 16567Fixed a couple of problems with the Global Lock support introduced 16568in the last major build. The "common" (1.0/2.0) internal FACS was 16569being overwritten with the FACS signature and clobbering the 16570Global Lock pointer. Also, the actual firmware FACS was being 16571unmapped after construction of the "common" FACS, preventing 16572access to the actual Global Lock field within it. The "common" 16573internal FACS is no longer installed as an actual ACPI table; it 16574is used simply as a global. 16575 16576Code and Data Size: Current core subsystem library sizes are shown 16577below. These are the code and data sizes for the acpica.lib 16578produced by the Microsoft Visual C++ 6.0 compiler, and these 16579values do not include any ACPI driver or OSPM code. The debug 16580version of the code includes the debug output trace mechanism and 16581has a larger code and data size. Note that these values will vary 16582depending on the efficiency of the compiler and the compiler 16583options used during generation. 16584 16585 Previous Release (02_07_01) 16586 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 16587 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 16588 Current Release: 16589 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 16590 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 16591 16592 165932) Linux 16594 16595Updated Linux-specific code for core macro and OSL interface 16596changes described above. 16597 16598Improved /proc/acpi/event. It now can be opened only once and has 16599proper poll functionality. 16600 16601Fixed and restructured power management (acpi_bus). 16602 16603Only create /proc "view by type" when devices of that class exist. 16604 16605Fixed "charging/discharging" bug (and others) in acpi_battery. 16606 16607Improved thermal zone code. 16608 16609 166103) ASL Compiler, version X2039: 16611 16612 16613Implemented the new compiler restriction on ASL String hex/octal 16614escapes to non-null, ASCII values. An error results if an invalid 16615value is used. (This will require an ACPI 2.0 specification 16616change.) 16617 16618AML object labels that are output to the optional C and ASM source 16619are now prefixed with both the ACPI table signature and table ID 16620to help guarantee uniqueness within a large BIOS project. 16621 16622 16623---------------------------------------- 16624Summary of changes for this label: 02_01_02 16625 166261) ACPI CA Core Subsystem: 16627 16628ACPI 2.0 support is complete in the entire Core Subsystem and the 16629ASL compiler. All new ACPI 2.0 operators are implemented and all 16630other changes for ACPI 2.0 support are complete. With 16631simultaneous code and data optimizations throughout the subsystem, 16632ACPI 2.0 support has been implemented with almost no additional 16633cost in terms of code and data size. 16634 16635Implemented a new mechanism for allocation of return buffers. If 16636the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 16637be allocated on behalf of the caller. Consolidated all return 16638buffer validation and allocation to a common procedure. Return 16639buffers will be allocated via the primary OSL allocation interface 16640since it appears that a separate pool is not needed by most users. 16641If a separate pool is required for these buffers, the caller can 16642still use the original mechanism and pre-allocate the buffer(s). 16643 16644Implemented support for string operands within the DerefOf 16645operator. 16646 16647Restructured the Hardware and Event managers to be table driven, 16648simplifying the source code and reducing the amount of generated 16649code. 16650 16651Split the common read/write low-level ACPI register bitfield 16652procedure into a separate read and write, simplifying the code 16653considerably. 16654 16655Obsoleted the AcpiOsCallocate OSL interface. This interface was 16656used only a handful of times and didn't have enough critical mass 16657for a separate interface. Replaced with a common calloc procedure 16658in the core. 16659 16660Fixed a reported problem with the GPE number mapping mechanism 16661that allows GPE1 numbers to be non-contiguous with GPE0. 16662Reorganized the GPE information and shrunk a large array that was 16663originally large enough to hold info for all possible GPEs (256) 16664to simply large enough to hold all GPEs up to the largest GPE 16665number on the machine. 16666 16667Fixed a reported problem with resource structure alignment on 64- 16668bit platforms. 16669 16670Changed the AcpiEnableEvent and AcpiDisableEvent external 16671interfaces to not require any flags for the common case of 16672enabling/disabling a GPE. 16673 16674Implemented support to allow a "Notify" on a Processor object. 16675 16676Most TBDs in comments within the source code have been resolved 16677and eliminated. 16678 16679 16680Fixed a problem in the interpreter where a standalone parent 16681prefix (^) was not handled correctly in the interpreter and 16682debugger. 16683 16684Removed obsolete and unnecessary GPE save/restore code. 16685 16686Implemented Field support in the ASL Load operator. This allows a 16687table to be loaded from a named field, in addition to loading a 16688table directly from an Operation Region. 16689 16690Implemented timeout and handle support in the external Global Lock 16691interfaces. 16692 16693Fixed a problem in the AcpiDump utility where pathnames were no 16694longer being generated correctly during the dump of named objects. 16695 16696Modified the AML debugger to give a full display of if/while 16697predicates instead of just one AML opcode at a time. (The 16698predicate can have several nested ASL statements.) The old method 16699was confusing during single stepping. 16700 16701Code and Data Size: Current core subsystem library sizes are shown 16702below. These are the code and data sizes for the acpica.lib 16703produced by the Microsoft Visual C++ 6.0 compiler, and these 16704values do not include any ACPI driver or OSPM code. The debug 16705version of the code includes the debug output trace mechanism and 16706has a larger code and data size. Note that these values will vary 16707depending on the efficiency of the compiler and the compiler 16708options used during generation. 16709 16710 Previous Release (12_18_01) 16711 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 16712 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 16713 Current Release: 16714 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 16715 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 16716 167172) Linux 16718 16719 Implemented fix for PIIX reverse throttling errata (Processor 16720driver) 16721 16722Added new Limit interface (Processor and Thermal drivers) 16723 16724New thermal policy (Thermal driver) 16725 16726Many updates to /proc 16727 16728Battery "low" event support (Battery driver) 16729 16730Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 16731 16732IA32 - IA64 initialization unification, no longer experimental 16733 16734Menuconfig options redesigned 16735 167363) ASL Compiler, version X2037: 16737 16738Implemented several new output features to simplify integration of 16739AML code into firmware: 1) Output the AML in C source code with 16740labels for each named ASL object. The original ASL source code 16741is interleaved as C comments. 2) Output the AML in ASM source code 16742with labels and interleaved ASL source. 3) Output the AML in 16743raw hex table form, in either C or ASM. 16744 16745Implemented support for optional string parameters to the 16746LoadTable operator. 16747 16748Completed support for embedded escape sequences within string 16749literals. The compiler now supports all single character escapes 16750as well as the Octal and Hex escapes. Note: the insertion of a 16751null byte into a string literal (via the hex/octal escape) causes 16752the string to be immediately terminated. A warning is issued. 16753 16754Fixed a problem where incorrect AML was generated for the case 16755where an ASL namepath consists of a single parent prefix ( 16756 16757) with no trailing name segments. 16758 16759The compiler has been successfully generated with a 64-bit C 16760compiler. 16761 16762 16763 16764 16765---------------------------------------- 16766Summary of changes for this label: 12_18_01 16767 167681) Linux 16769 16770Enhanced blacklist with reason and severity fields. Any table's 16771signature may now be used to identify a blacklisted system. 16772 16773Call _PIC control method to inform the firmware which interrupt 16774model the OS is using. Turn on any disabled link devices. 16775 16776Cleaned up busmgr /proc error handling (Andreas Dilger) 16777 16778 2) ACPI CA Core Subsystem: 16779 16780Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 16781while loop) 16782 16783Completed implementation of the ACPI 2.0 "Continue", 16784"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 16785operators. All new ACPI 2.0 operators are now implemented in both 16786the ASL compiler and the AML interpreter. The only remaining ACPI 167872.0 task is support for the String data type in the DerefOf 16788operator. Fixed a problem with AcquireMutex where the status code 16789was lost if the caller had to actually wait for the mutex. 16790 16791Increased the maximum ASL Field size from 64K bits to 4G bits. 16792 16793Completed implementation of the external Global Lock interfaces -- 16794AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 16795Handler parameters were added. 16796 16797Completed another pass at removing warnings and issues when 16798compiling with 64-bit compilers. The code now compiles cleanly 16799with the Intel 64-bit C/C++ compiler. Most notably, the pointer 16800add and subtract (diff) macros have changed considerably. 16801 16802 16803Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1680464-bit platforms, 32-bits on all others. This type is used 16805wherever memory allocation and/or the C sizeof() operator is used, 16806and affects the OSL memory allocation interfaces AcpiOsAllocate 16807and AcpiOsCallocate. 16808 16809Implemented sticky user breakpoints in the AML debugger. 16810 16811Code and Data Size: Current core subsystem library sizes are shown 16812below. These are the code and data sizes for the acpica.lib 16813produced by the Microsoft Visual C++ 6.0 compiler, and these 16814values do not include any ACPI driver or OSPM code. The debug 16815version of the code includes the debug output trace mechanism and 16816has a larger code and data size. Note that these values will vary 16817depending on the efficiency of the compiler and the compiler 16818options used during generation. 16819 16820 Previous Release (12_05_01) 16821 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 16822 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 16823 Current Release: 16824 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 16825 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 16826 16827 3) ASL Compiler, version X2034: 16828 16829Now checks for (and generates an error if detected) the use of a 16830Break or Continue statement without an enclosing While statement. 16831 16832 16833Successfully generated the compiler with the Intel 64-bit C 16834compiler. 16835 16836 ---------------------------------------- 16837Summary of changes for this label: 12_05_01 16838 16839 1) ACPI CA Core Subsystem: 16840 16841The ACPI 2.0 CopyObject operator is fully implemented. This 16842operator creates a new copy of an object (and is also used to 16843bypass the "implicit conversion" mechanism of the Store operator.) 16844 16845The ACPI 2.0 semantics for the SizeOf operator are fully 16846implemented. The change is that performing a SizeOf on a 16847reference object causes an automatic dereference of the object to 16848tha actual value before the size is evaluated. This behavior was 16849undefined in ACPI 1.0. 16850 16851The ACPI 2.0 semantics for the Extended IRQ resource descriptor 16852have been implemented. The interrupt polarity and mode are now 16853independently set. 16854 16855Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 16856appearing in Package objects were not properly converted to 16857integers when the internal Package was converted to an external 16858object (via the AcpiEvaluateObject interface.) 16859 16860Fixed a problem with the namespace object deletion mechanism for 16861objects created by control methods. There were two parts to this 16862problem: 1) Objects created during the initialization phase method 16863parse were not being deleted, and 2) The object owner ID mechanism 16864to track objects was broken. 16865 16866Fixed a problem where the use of the ASL Scope operator within a 16867control method would result in an invalid opcode exception. 16868 16869Fixed a problem introduced in the previous label where the buffer 16870length required for the _PRT structure was not being returned 16871correctly. 16872 16873Code and Data Size: Current core subsystem library sizes are shown 16874below. These are the code and data sizes for the acpica.lib 16875produced by the Microsoft Visual C++ 6.0 compiler, and these 16876values do not include any ACPI driver or OSPM code. The debug 16877version of the code includes the debug output trace mechanism and 16878has a larger code and data size. Note that these values will vary 16879depending on the efficiency of the compiler and the compiler 16880options used during generation. 16881 16882 Previous Release (11_20_01) 16883 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 16884 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 16885 16886 Current Release: 16887 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 16888 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 16889 16890 2) Linux: 16891 16892Updated all files to apply cleanly against 2.4.16. 16893 16894Added basic PCI Interrupt Routing Table (PRT) support for IA32 16895(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 16896version supports both static and dynamic PRT entries, but dynamic 16897entries are treated as if they were static (not yet 16898reconfigurable). Architecture- specific code to use this data is 16899absent on IA32 but should be available shortly. 16900 16901Changed the initialization sequence to start the ACPI interpreter 16902(acpi_init) prior to initialization of the PCI driver (pci_init) 16903in init/main.c. This ordering is required to support PRT and 16904facilitate other (future) enhancement. A side effect is that the 16905ACPI bus driver and certain device drivers can no longer be loaded 16906as modules. 16907 16908Modified the 'make menuconfig' options to allow PCI Interrupt 16909Routing support to be included without the ACPI Bus and other 16910device drivers. 16911 16912 3) ASL Compiler, version X2033: 16913 16914Fixed some issues with the use of the new CopyObject and 16915DataTableRegion operators. Both are fully functional. 16916 16917 ---------------------------------------- 16918Summary of changes for this label: 11_20_01 16919 16920 20 November 2001. Summary of changes for this release. 16921 16922 1) ACPI CA Core Subsystem: 16923 16924Updated Index support to match ACPI 2.0 semantics. Storing a 16925Integer, String, or Buffer to an Index of a Buffer will store only 16926the least-significant byte of the source to the Indexed buffer 16927byte. Multiple writes are not performed. 16928 16929Fixed a problem where the access type used in an AccessAs ASL 16930operator was not recorded correctly into the field object. 16931 16932Fixed a problem where ASL Event objects were created in a 16933signalled state. Events are now created in an unsignalled state. 16934 16935The internal object cache is now purged after table loading and 16936initialization to reduce the use of dynamic kernel memory -- on 16937the assumption that object use is greatest during the parse phase 16938of the entire table (versus the run-time use of individual control 16939methods.) 16940 16941ACPI 2.0 variable-length packages are now fully operational. 16942 16943Code and Data Size: Code and Data optimizations have permitted new 16944feature development with an actual reduction in the library size. 16945Current core subsystem library sizes are shown below. These are 16946the code and data sizes for the acpica.lib produced by the 16947Microsoft Visual C++ 6.0 compiler, and these values do not include 16948any ACPI driver or OSPM code. The debug version of the code 16949includes the debug output trace mechanism and has a larger code 16950and data size. Note that these values will vary depending on the 16951efficiency of the compiler and the compiler options used during 16952generation. 16953 16954 Previous Release (11_09_01): 16955 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 16956 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 16957 16958 Current Release: 16959 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 16960 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 16961 16962 2) Linux: 16963 16964Enhanced the ACPI boot-time initialization code to allow the use 16965of Local APIC tables for processor enumeration on IA-32, and to 16966pave the way for a fully MPS-free boot (on SMP systems) in the 16967near future. This functionality replaces 16968arch/i386/kernel/acpitables.c, which was introduced in an earlier 169692.4.15-preX release. To enable this feature you must add 16970"acpi_boot=on" to the kernel command line -- see the help entry 16971for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 16972the works... 16973 16974Restructured the configuration options to allow boot-time table 16975parsing support without inclusion of the ACPI Interpreter (and 16976other) code. 16977 16978NOTE: This release does not include fixes for the reported events, 16979power-down, and thermal passive cooling issues (coming soon). 16980 16981 3) ASL Compiler: 16982 16983Added additional typechecking for Fields within restricted access 16984Operation Regions. All fields within EC and CMOS regions must be 16985declared with ByteAcc. All fields within SMBus regions must be 16986declared with the BufferAcc access type. 16987 16988Fixed a problem where the listing file output of control methods 16989no longer interleaved the actual AML code with the ASL source 16990code. 16991 16992 16993 16994 16995---------------------------------------- 16996Summary of changes for this label: 11_09_01 16997 169981) ACPI CA Core Subsystem: 16999 17000Implemented ACPI 2.0-defined support for writes to fields with a 17001Buffer, String, or Integer source operand that is smaller than the 17002target field. In these cases, the source operand is zero-extended 17003to fill the target field. 17004 17005Fixed a problem where a Field starting bit offset (within the 17006parent operation region) was calculated incorrectly if the 17007 17008alignment of the field differed from the access width. This 17009affected CreateWordField, CreateDwordField, CreateQwordField, and 17010possibly other fields that use the "AccessAny" keyword. 17011 17012Fixed a problem introduced in the 11_02_01 release where indirect 17013stores through method arguments did not operate correctly. 17014 170152) Linux: 17016 17017Implemented boot-time ACPI table parsing support 17018(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 17019facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 17020legacy BIOS interfaces (e.g. MPS) for the configuration of system 17021processors, memory, and interrupts during setup_arch(). Note that 17022this patch does not include the required architecture-specific 17023changes required to apply this information -- subsequent patches 17024will be posted for both IA32 and IA64 to achieve this. 17025 17026Added low-level sleep support for IA32 platforms, courtesy of Pat 17027Mochel. This allows IA32 systems to transition to/from various 17028sleeping states (e.g. S1, S3), although the lack of a centralized 17029driver model and power-manageable drivers will prevent its 17030(successful) use on most systems. 17031 17032Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 17033submenu, unified IA32 and IA64 options, added new "Boot using ACPI 17034tables" option, etc. 17035 17036Increased the default timeout for the EC driver from 1ms to 10ms 17037(1000 cycles of 10us) to try to address AE_TIME errors during EC 17038transactions. 17039 17040 ---------------------------------------- 17041Summary of changes for this label: 11_02_01 17042 170431) ACPI CA Core Subsystem: 17044 17045ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 17046(QWordAcc keyword). All ACPI 2.0 64-bit support is now 17047implemented. 17048 17049OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 17050changes to support ACPI 2.0 Qword field access. Read/Write 17051PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 17052accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 17053the value parameter for the address space handler interface is now 17054an ACPI_INTEGER. OSL implementations of these interfaces must now 17055handle the case where the Width parameter is 64. 17056 17057Index Fields: Fixed a problem where unaligned bit assembly and 17058disassembly for IndexFields was not supported correctly. 17059 17060Index and Bank Fields: Nested Index and Bank Fields are now 17061supported. During field access, a check is performed to ensure 17062that the value written to an Index or Bank register is not out of 17063the range of the register. The Index (or Bank) register is 17064written before each access to the field data. Future support will 17065include allowing individual IndexFields to be wider than the 17066DataRegister width. 17067 17068Fields: Fixed a problem where the AML interpreter was incorrectly 17069attempting to write beyond the end of a Field/OpRegion. This was 17070a boundary case that occurred when a DWORD field was written to a 17071BYTE access OpRegion, forcing multiple writes and causing the 17072interpreter to write one datum too many. 17073 17074Fields: Fixed a problem with Field/OpRegion access where the 17075starting bit address of a field was incorrectly calculated if the 17076current access type was wider than a byte (WordAcc, DwordAcc, or 17077QwordAcc). 17078 17079Fields: Fixed a problem where forward references to individual 17080FieldUnits (individual Field names within a Field definition) were 17081not resolved during the AML table load. 17082 17083Fields: Fixed a problem where forward references from a Field 17084definition to the parent Operation Region definition were not 17085resolved during the AML table load. 17086 17087Fields: Duplicate FieldUnit names within a scope are now detected 17088during AML table load. 17089 17090Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 17091returned an incorrect name for the root node. 17092 17093Code and Data Size: Code and Data optimizations have permitted new 17094feature development with an actual reduction in the library size. 17095Current core subsystem library sizes are shown below. These are 17096the code and data sizes for the acpica.lib produced by the 17097Microsoft Visual C++ 6.0 compiler, and these values do not include 17098any ACPI driver or OSPM code. The debug version of the code 17099includes the debug output trace mechanism and has a larger code 17100and data size. Note that these values will vary depending on the 17101efficiency of the compiler and the compiler options used during 17102generation. 17103 17104 Previous Release (10_18_01): 17105 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 17106 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 17107 17108 Current Release: 17109 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 17110 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 17111 17112 2) Linux: 17113 17114Improved /proc processor output (Pavel Machek) Re-added 17115MODULE_LICENSE("GPL") to all modules. 17116 17117 3) ASL Compiler version X2030: 17118 17119Duplicate FieldUnit names within a scope are now detected and 17120flagged as errors. 17121 17122 4) Documentation: 17123 17124Programmer Reference updated to reflect OSL and address space 17125handler interface changes described above. 17126 17127---------------------------------------- 17128Summary of changes for this label: 10_18_01 17129 17130ACPI CA Core Subsystem: 17131 17132Fixed a problem with the internal object reference count mechanism 17133that occasionally caused premature object deletion. This resolves 17134all of the outstanding problem reports where an object is deleted 17135in the middle of an interpreter evaluation. Although this problem 17136only showed up in rather obscure cases, the solution to the 17137problem involved an adjustment of all reference counts involving 17138objects attached to namespace nodes. 17139 17140Fixed a problem with Field support in the interpreter where 17141writing to an aligned field whose length is an exact multiple (2 17142or greater) of the field access granularity would cause an attempt 17143to write beyond the end of the field. 17144 17145The top level AML opcode execution functions within the 17146interpreter have been renamed with a more meaningful and 17147consistent naming convention. The modules exmonad.c and 17148exdyadic.c were eliminated. New modules are exoparg1.c, 17149exoparg2.c, exoparg3.c, and exoparg6.c. 17150 17151Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 17152 17153Fixed a problem where the AML debugger was causing some internal 17154objects to not be deleted during subsystem termination. 17155 17156Fixed a problem with the external AcpiEvaluateObject interface 17157where the subsystem would fault if the named object to be 17158evaluated referred to a constant such as Zero, Ones, etc. 17159 17160Fixed a problem with IndexFields and BankFields where the 17161subsystem would fault if the index, data, or bank registers were 17162not defined in the same scope as the field itself. 17163 17164Added printf format string checking for compilers that support 17165this feature. Corrected more than 50 instances of issues with 17166format specifiers within invocations of ACPI_DEBUG_PRINT 17167throughout the core subsystem code. 17168 17169The ASL "Revision" operator now returns the ACPI support level 17170implemented in the core - the value "2" since the ACPI 2.0 support 17171is more than 50% implemented. 17172 17173Enhanced the output of the AML debugger "dump namespace" command 17174to output in a more human-readable form. 17175 17176Current core subsystem library code sizes are shown below. These 17177 17178are the code and data sizes for the acpica.lib produced by the 17179Microsoft Visual C++ 6.0 compiler, and these values do not include 17180any ACPI driver or OSPM code. The debug version of the code 17181includes the full debug trace mechanism -- leading to a much 17182 17183larger code and data size. Note that these values will vary 17184depending on the efficiency of the compiler and the compiler 17185options used during generation. 17186 17187 Previous Label (09_20_01): 17188 Non-Debug Version: 65K Code, 5K Data, 70K Total 17189 Debug Version: 138K Code, 58K Data, 196K Total 17190 17191 This Label: 17192 17193 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 17194 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 17195 17196Linux: 17197 17198Implemented a "Bad BIOS Blacklist" to track machines that have 17199known ASL/AML problems. 17200 17201Enhanced the /proc interface for the thermal zone driver and added 17202support for _HOT (the critical suspend trip point). The 'info' 17203file now includes threshold/policy information, and allows setting 17204of _SCP (cooling preference) and _TZP (polling frequency) values 17205to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 17206frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 17207preference to the passive/quiet mode (if supported by the ASL). 17208 17209Implemented a workaround for a gcc bug that resuted in an OOPs 17210when loading the control method battery driver. 17211 17212 ---------------------------------------- 17213Summary of changes for this label: 09_20_01 17214 17215 ACPI CA Core Subsystem: 17216 17217The AcpiEnableEvent and AcpiDisableEvent interfaces have been 17218modified to allow individual GPE levels to be flagged as wake- 17219enabled (i.e., these GPEs are to remain enabled when the platform 17220sleeps.) 17221 17222The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 17223support wake-enabled GPEs. This means that upon entering the 17224sleep state, all GPEs that are not wake-enabled are disabled. 17225When leaving the sleep state, these GPEs are re-enabled. 17226 17227A local double-precision divide/modulo module has been added to 17228enhance portability to OS kernels where a 64-bit math library is 17229not available. The new module is "utmath.c". 17230 17231Several optimizations have been made to reduce the use of CPU 17232stack. Originally over 2K, the maximum stack usage is now below 172332K at 1860 bytes (1.82k) 17234 17235Fixed a problem with the AcpiGetFirmwareTable interface where the 17236root table pointer was not mapped into a logical address properly. 17237 17238Fixed a problem where a NULL pointer was being dereferenced in the 17239interpreter code for the ASL Notify operator. 17240 17241Fixed a problem where the use of the ASL Revision operator 17242returned an error. This operator now returns the current version 17243of the ACPI CA core subsystem. 17244 17245Fixed a problem where objects passed as control method parameters 17246to AcpiEvaluateObject were always deleted at method termination. 17247However, these objects may end up being stored into the namespace 17248by the called method. The object reference count mechanism was 17249applied to these objects instead of a force delete. 17250 17251Fixed a problem where static strings or buffers (contained in the 17252AML code) that are declared as package elements within the ASL 17253code could cause a fault because the interpreter would attempt to 17254delete them. These objects are now marked with the "static 17255object" flag to prevent any attempt to delete them. 17256 17257Implemented an interpreter optimization to use operands directly 17258from the state object instead of extracting the operands to local 17259variables. This reduces stack use and code size, and improves 17260performance. 17261 17262The module exxface.c was eliminated as it was an unnecessary extra 17263layer of code. 17264 17265Current core subsystem library code sizes are shown below. These 17266are the code and data sizes for the acpica.lib produced by the 17267Microsoft Visual C++ 6.0 compiler, and these values do not include 17268any ACPI driver or OSPM code. The debug version of the code 17269includes the full debug trace mechanism -- leading to a much 17270larger code and data size. Note that these values will vary 17271depending on the efficiency of the compiler and the compiler 17272options used during generation. 17273 17274 Non-Debug Version: 65K Code, 5K Data, 70K Total 17275(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 17276Total (Previously 195K) 17277 17278Linux: 17279 17280Support for ACPI 2.0 64-bit integers has been added. All ACPI 17281Integer objects are now 64 bits wide 17282 17283All Acpi data types and structures are now in lower case. Only 17284Acpi macros are upper case for differentiation. 17285 17286 Documentation: 17287 17288Changes to the external interfaces as described above. 17289 17290 ---------------------------------------- 17291Summary of changes for this label: 08_31_01 17292 17293 ACPI CA Core Subsystem: 17294 17295A bug with interpreter implementation of the ASL Divide operator 17296was found and fixed. The implicit function return value (not the 17297explicit store operands) was returning the remainder instead of 17298the quotient. This was a longstanding bug and it fixes several 17299known outstanding issues on various platforms. 17300 17301The ACPI_DEBUG_PRINT and function trace entry/exit macros have 17302been further optimized for size. There are 700 invocations of the 17303DEBUG_PRINT macro alone, so each optimization reduces the size of 17304the debug version of the subsystem significantly. 17305 17306A stack trace mechanism has been implemented. The maximum stack 17307usage is about 2K on 32-bit platforms. The debugger command "stat 17308stack" will display the current maximum stack usage. 17309 17310All public symbols and global variables within the subsystem are 17311now prefixed with the string "Acpi". This keeps all of the 17312symbols grouped together in a kernel map, and avoids conflicts 17313with other kernel subsystems. 17314 17315Most of the internal fixed lookup tables have been moved into the 17316code segment via the const operator. 17317 17318Several enhancements have been made to the interpreter to both 17319reduce the code size and improve performance. 17320 17321Current core subsystem library code sizes are shown below. These 17322are the code and data sizes for the acpica.lib produced by the 17323Microsoft Visual C++ 6.0 compiler, and these values do not include 17324any ACPI driver or OSPM code. The debug version of the code 17325includes the full debug trace mechanism which contains over 700 17326invocations of the DEBUG_PRINT macro, 500 function entry macro 17327invocations, and over 900 function exit macro invocations -- 17328leading to a much larger code and data size. Note that these 17329values will vary depending on the efficiency of the compiler and 17330the compiler options used during generation. 17331 17332 Non-Debug Version: 64K Code, 5K Data, 69K Total 17333Debug Version: 137K Code, 58K Data, 195K Total 17334 17335 Linux: 17336 17337Implemented wbinvd() macro, pending a kernel-wide definition. 17338 17339Fixed /proc/acpi/event to handle poll() and short reads. 17340 17341 ASL Compiler, version X2026: 17342 17343Fixed a problem introduced in the previous label where the AML 17344 17345code emitted for package objects produced packages with zero 17346length. 17347 17348 ---------------------------------------- 17349Summary of changes for this label: 08_16_01 17350 17351ACPI CA Core Subsystem: 17352 17353The following ACPI 2.0 ASL operators have been implemented in the 17354AML interpreter (These are already supported by the Intel ASL 17355compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 17356ToBuffer. Support for 64-bit AML constants is implemented in the 17357AML parser, debugger, and disassembler. 17358 17359The internal memory tracking mechanism (leak detection code) has 17360been upgraded to reduce the memory overhead (a separate tracking 17361block is no longer allocated for each memory allocation), and now 17362supports all of the internal object caches. 17363 17364The data structures and code for the internal object caches have 17365been coelesced and optimized so that there is a single cache and 17366memory list data structure and a single group of functions that 17367implement generic cache management. This has reduced the code 17368size in both the debug and release versions of the subsystem. 17369 17370The DEBUG_PRINT macro(s) have been optimized for size and replaced 17371by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 17372different, because it generates a single call to an internal 17373function. This results in a savings of about 90 bytes per 17374invocation, resulting in an overall code and data savings of about 1737516% in the debug version of the subsystem. 17376 17377 Linux: 17378 17379Fixed C3 disk corruption problems and re-enabled C3 on supporting 17380machines. 17381 17382Integrated low-level sleep code by Patrick Mochel. 17383 17384Further tweaked source code Linuxization. 17385 17386Other minor fixes. 17387 17388 ASL Compiler: 17389 17390Support for ACPI 2.0 variable length packages is fixed/completed. 17391 17392Fixed a problem where the optional length parameter for the ACPI 173932.0 ToString operator. 17394 17395Fixed multiple extraneous error messages when a syntax error is 17396detected within the declaration line of a control method. 17397 17398 ---------------------------------------- 17399Summary of changes for this label: 07_17_01 17400 17401ACPI CA Core Subsystem: 17402 17403Added a new interface named AcpiGetFirmwareTable to obtain any 17404ACPI table via the ACPI signature. The interface can be called at 17405any time during kernel initialization, even before the kernel 17406virtual memory manager is initialized and paging is enabled. This 17407allows kernel subsystems to obtain ACPI tables very early, even 17408before the ACPI CA subsystem is initialized. 17409 17410Fixed a problem where Fields defined with the AnyAcc attribute 17411could be resolved to the incorrect address under the following 17412conditions: 1) the field width is larger than 8 bits and 2) the 17413parent operation region is not defined on a DWORD boundary. 17414 17415Fixed a problem where the interpreter is not being locked during 17416namespace initialization (during execution of the _INI control 17417methods), causing an error when an attempt is made to release it 17418later. 17419 17420ACPI 2.0 support in the AML Interpreter has begun and will be 17421ongoing throughout the rest of this year. In this label, The Mod 17422operator is implemented. 17423 17424Added a new data type to contain full PCI addresses named 17425ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 17426and Function values. 17427 17428 Linux: 17429 17430Enhanced the Linux version of the source code to change most 17431capitalized ACPI type names to lowercase. For example, all 17432instances of ACPI_STATUS are changed to acpi_status. This will 17433result in a large diff, but the change is strictly cosmetic and 17434aligns the CA code closer to the Linux coding standard. 17435 17436OSL Interfaces: 17437 17438The interfaces to the PCI configuration space have been changed to 17439add the PCI Segment number and to split the single 32-bit combined 17440DeviceFunction field into two 16-bit fields. This was 17441accomplished by moving the four values that define an address in 17442PCI configuration space (segment, bus, device, and function) to 17443the new ACPI_PCI_ID structure. 17444 17445The changes to the PCI configuration space interfaces led to a 17446reexamination of the complete set of address space access 17447interfaces for PCI, I/O, and Memory. The previously existing 18 17448interfaces have proven difficult to maintain (any small change 17449must be propagated across at least 6 interfaces) and do not easily 17450allow for future expansion to 64 bits if necessary. Also, on some 17451systems, it would not be appropriate to demultiplex the access 17452width (8, 16, 32,or 64) before calling the OSL if the 17453corresponding native OS interfaces contain a similar access width 17454parameter. For these reasons, the 18 address space interfaces 17455have been replaced by these 6 new ones: 17456 17457AcpiOsReadPciConfiguration 17458AcpiOsWritePciConfiguration 17459AcpiOsReadMemory 17460AcpiOsWriteMemory 17461AcpiOsReadPort 17462AcpiOsWritePort 17463 17464Added a new interface named AcpiOsGetRootPointer to allow the OSL 17465to perform the platform and/or OS-specific actions necessary to 17466obtain the ACPI RSDP table pointer. On IA-32 platforms, this 17467interface will simply call down to the CA core to perform the low- 17468memory search for the table. On IA-64, the RSDP is obtained from 17469EFI. Migrating this interface to the OSL allows the CA core to 17470 17471remain OS and platform independent. 17472 17473Added a new interface named AcpiOsSignal to provide a generic 17474"function code and pointer" interface for various miscellaneous 17475signals and notifications that must be made to the host OS. The 17476first such signals are intended to support the ASL Fatal and 17477Breakpoint operators. In the latter case, the AcpiOsBreakpoint 17478interface has been obsoleted. 17479 17480The definition of the AcpiFormatException interface has been 17481changed to simplify its use. The caller no longer must supply a 17482buffer to the call; A pointer to a const string is now returned 17483directly. This allows the call to be easily used in printf 17484statements, etc. since the caller does not have to manage a local 17485buffer. 17486 17487 17488 ASL Compiler, Version X2025: 17489 17490The ACPI 2.0 Switch/Case/Default operators have been implemented 17491and are fully functional. They will work with all ACPI 1.0 17492interpreters, since the operators are simply translated to If/Else 17493pairs. 17494 17495The ACPI 2.0 ElseIf operator is implemented and will also work 17496with 1.0 interpreters, for the same reason. 17497 17498Implemented support for ACPI 2.0 variable-length packages. These 17499packages have a separate opcode, and their size is determined by 17500the interpreter at run-time. 17501 17502Documentation The ACPI CA Programmer Reference has been updated to 17503reflect the new interfaces and changes to existing interfaces. 17504 17505 ------------------------------------------ 17506Summary of changes for this label: 06_15_01 17507 17508 ACPI CA Core Subsystem: 17509 17510Fixed a problem where a DWORD-accessed field within a Buffer 17511object would get its byte address inadvertently rounded down to 17512the nearest DWORD. Buffers are always Byte-accessible. 17513 17514 ASL Compiler, version X2024: 17515 17516Fixed a problem where the Switch() operator would either fault or 17517hang the compiler. Note however, that the AML code for this ACPI 175182.0 operator is not yet implemented. 17519 17520Compiler uses the new AcpiOsGetTimer interface to obtain compile 17521timings. 17522 17523Implementation of the CreateField operator automatically converts 17524a reference to a named field within a resource descriptor from a 17525byte offset to a bit offset if required. 17526 17527Added some missing named fields from the resource descriptor 17528support. These are the names that are automatically created by the 17529compiler to reference fields within a descriptor. They are only 17530valid at compile time and are not passed through to the AML 17531interpreter. 17532 17533Resource descriptor named fields are now typed as Integers and 17534subject to compile-time typechecking when used in expressions. 17535 17536 ------------------------------------------ 17537Summary of changes for this label: 05_18_01 17538 17539 ACPI CA Core Subsystem: 17540 17541Fixed a couple of problems in the Field support code where bits 17542from adjacent fields could be returned along with the proper field 17543bits. Restructured the field support code to improve performance, 17544readability and maintainability. 17545 17546New DEBUG_PRINTP macro automatically inserts the procedure name 17547into the output, saving hundreds of copies of procedure name 17548strings within the source, shrinking the memory footprint of the 17549debug version of the core subsystem. 17550 17551 Source Code Structure: 17552 17553The source code directory tree was restructured to reflect the 17554current organization of the component architecture. Some files 17555and directories have been moved and/or renamed. 17556 17557 Linux: 17558 17559Fixed leaking kacpidpc processes. 17560 17561Fixed queueing event data even when /proc/acpi/event is not 17562opened. 17563 17564 ASL Compiler, version X2020: 17565 17566Memory allocation performance enhancement - over 24X compile time 17567improvement on large ASL files. Parse nodes and namestring 17568buffers are now allocated from a large internal compiler buffer. 17569 17570The temporary .SRC file is deleted unless the "-s" option is 17571specified 17572 17573The "-d" debug output option now sends all output to the .DBG file 17574instead of the console. 17575 17576"External" second parameter is now optional 17577 17578"ElseIf" syntax now properly allows the predicate 17579 17580Last operand to "Load" now recognized as a Target operand 17581 17582Debug object can now be used anywhere as a normal object. 17583 17584ResourceTemplate now returns an object of type BUFFER 17585 17586EISAID now returns an object of type INTEGER 17587 17588"Index" now works with a STRING operand 17589 17590"LoadTable" now accepts optional parameters 17591 17592"ToString" length parameter is now optional 17593 17594"Interrupt (ResourceType," parse error fixed. 17595 17596"Register" with a user-defined region space parse error fixed 17597 17598Escaped backslash at the end of a string ("\\") scan/parse error 17599fixed 17600 17601"Revision" is now an object of type INTEGER. 17602 17603 17604 17605------------------------------------------ 17606Summary of changes for this label: 05_02_01 17607 17608Linux: 17609 17610/proc/acpi/event now blocks properly. 17611 17612Removed /proc/sys/acpi. You can still dump your DSDT from 17613/proc/acpi/dsdt. 17614 17615 ACPI CA Core Subsystem: 17616 17617Fixed a problem introduced in the previous label where some of the 17618"small" resource descriptor types were not recognized. 17619 17620Improved error messages for the case where an ASL Field is outside 17621the range of the parent operation region. 17622 17623 ASL Compiler, version X2018: 17624 17625 17626Added error detection for ASL Fields that extend beyond the length 17627of the parent operation region (only if the length of the region 17628is known at compile time.) This includes fields that have a 17629minimum access width that is smaller than the parent region, and 17630individual field units that are partially or entirely beyond the 17631extent of the parent. 17632 17633 17634 17635------------------------------------------ 17636Summary of changes for this label: 04_27_01 17637 17638 ACPI CA Core Subsystem: 17639 17640Fixed a problem where the namespace mutex could be released at the 17641wrong time during execution of AcpiRemoveAddressSpaceHandler. 17642 17643Added optional thread ID output for debug traces, to simplify 17644debugging of multiple threads. Added context switch notification 17645when the debug code realizes that a different thread is now 17646executing ACPI code. 17647 17648Some additional external data types have been prefixed with the 17649string "ACPI_" for consistency. This may effect existing code. 17650The data types affected are the external callback typedefs - e.g., 17651 17652WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 17653 17654 Linux: 17655 17656Fixed an issue with the OSL semaphore implementation where a 17657thread was waking up with an error from receiving a SIGCHLD 17658signal. 17659 17660Linux version of ACPI CA now uses the system C library for string 17661manipulation routines instead of a local implementation. 17662 17663Cleaned up comments and removed TBDs. 17664 17665 ASL Compiler, version X2017: 17666 17667Enhanced error detection and reporting for all file I/O 17668operations. 17669 17670 Documentation: 17671 17672Programmer Reference updated to version 1.06. 17673 17674 17675 17676------------------------------------------ 17677Summary of changes for this label: 04_13_01 17678 17679 ACPI CA Core Subsystem: 17680 17681Restructured support for BufferFields and RegionFields. 17682BankFields support is now fully operational. All known 32-bit 17683limitations on field sizes have been removed. Both BufferFields 17684and (Operation) RegionFields are now supported by the same field 17685management code. 17686 17687Resource support now supports QWORD address and IO resources. The 1768816/32/64 bit address structures and the Extended IRQ structure 17689have been changed to properly handle Source Resource strings. 17690 17691A ThreadId of -1 is now used to indicate a "mutex not acquired" 17692condition internally and must never be returned by AcpiOsThreadId. 17693This reserved value was changed from 0 since Unix systems allow a 17694thread ID of 0. 17695 17696Linux: 17697 17698Driver code reorganized to enhance portability 17699 17700Added a kernel configuration option to control ACPI_DEBUG 17701 17702Fixed the EC driver to honor _GLK. 17703 17704ASL Compiler, version X2016: 17705 17706Fixed support for the "FixedHw" keyword. Previously, the FixedHw 17707address space was set to 0, not 0x7f as it should be. 17708 17709 ------------------------------------------ 17710Summary of changes for this label: 03_13_01 17711 17712 ACPI CA Core Subsystem: 17713 17714During ACPI initialization, the _SB_._INI method is now run if 17715present. 17716 17717Notify handler fix - notifies are deferred until the parent method 17718completes execution. This fixes the "mutex already acquired" 17719issue seen occasionally. 17720 17721Part of the "implicit conversion" rules in ACPI 2.0 have been 17722found to cause compatibility problems with existing ASL/AML. The 17723convert "result-to-target-type" implementation has been removed 17724for stores to method Args and Locals. Source operand conversion 17725is still fully implemented. Possible changes to ACPI 2.0 17726specification pending. 17727 17728Fix to AcpiRsCalculatePciRoutingTableLength to return correct 17729length. 17730 17731Fix for compiler warnings for 64-bit compiles. 17732 17733 Linux: 17734 17735/proc output aligned for easier parsing. 17736 17737Release-version compile problem fixed. 17738 17739New kernel configuration options documented in Configure.help. 17740 17741IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 17742context" message. 17743 17744 OSPM: 17745 17746Power resource driver integrated with bus manager. 17747 17748Fixed kernel fault during active cooling for thermal zones. 17749 17750Source Code: 17751 17752The source code tree has been restructured. 17753 17754 17755 17756------------------------------------------ 17757Summary of changes for this label: 03_02_01 17758 17759 Linux OS Services Layer (OSL): 17760 17761Major revision of all Linux-specific code. 17762 17763Modularized all ACPI-specific drivers. 17764 17765Added new thermal zone and power resource drivers. 17766 17767Revamped /proc interface (new functionality is under /proc/acpi). 17768 17769New kernel configuration options. 17770 17771 Linux known issues: 17772 17773New kernel configuration options not documented in Configure.help 17774yet. 17775 17776 17777Module dependencies not currently implemented. If used, they 17778should be loaded in this order: busmgr, power, ec, system, 17779processor, battery, ac_adapter, button, thermal. 17780 17781Modules will not load if CONFIG_MODVERSION is set. 17782 17783IBM 600E - entering S5 may reboot instead of shutting down. 17784 17785IBM 600E - Sleep button may generate "Invalid <NULL> context" 17786message. 17787 17788Some systems may fail with "execution mutex already acquired" 17789message. 17790 17791 ACPI CA Core Subsystem: 17792 17793Added a new OSL Interface, AcpiOsGetThreadId. This was required 17794for the deadlock detection code. Defined to return a non-zero, 32- 17795bit thread ID for the currently executing thread. May be a non- 17796zero constant integer on single-thread systems. 17797 17798Implemented deadlock detection for internal subsystem mutexes. We 17799may add conditional compilation for this code (debug only) later. 17800 17801ASL/AML Mutex object semantics are now fully supported. This 17802includes multiple acquires/releases by owner and support for the 17803 17804Mutex SyncLevel parameter. 17805 17806A new "Force Release" mechanism automatically frees all ASL 17807Mutexes that have been acquired but not released when a thread 17808exits the interpreter. This forces conformance to the ACPI spec 17809("All mutexes must be released when an invocation exits") and 17810prevents deadlocked ASL threads. This mechanism can be expanded 17811(later) to monitor other resource acquisitions if OEM ASL code 17812continues to misbehave (which it will). 17813 17814Several new ACPI exception codes have been added for the Mutex 17815support. 17816 17817Recursive method calls are now allowed and supported (the ACPI 17818spec does in fact allow recursive method calls.) The number of 17819recursive calls is subject to the restrictions imposed by the 17820SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 17821parameter. 17822 17823Implemented support for the SyncLevel parameter for control 17824methods (ACPI 2.0 feature) 17825 17826Fixed a deadlock problem when multiple threads attempted to use 17827the interpreter. 17828 17829Fixed a problem where the string length of a String package 17830element was not always set in a package returned from 17831AcpiEvaluateObject. 17832 17833Fixed a problem where the length of a String package element was 17834not always included in the length of the overall package returned 17835from AcpiEvaluateObject. 17836 17837Added external interfaces (Acpi*) to the ACPI debug memory 17838manager. This manager keeps a list of all outstanding 17839allocations, and can therefore detect memory leaks and attempts to 17840free memory blocks more than once. Useful for code such as the 17841power manager, etc. May not be appropriate for device drivers. 17842Performance with the debug code enabled is slow. 17843 17844The ACPI Global Lock is now an optional hardware element. 17845 17846 ASL Compiler Version X2015: 17847 17848Integrated changes to allow the compiler to be generated on 17849multiple platforms. 17850 17851Linux makefile added to generate the compiler on Linux 17852 17853 Source Code: 17854 17855All platform-specific headers have been moved to their own 17856subdirectory, Include/Platform. 17857 17858New source file added, Interpreter/ammutex.c 17859 17860New header file, Include/acstruct.h 17861 17862 Documentation: 17863 17864The programmer reference has been updated for the following new 17865interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 17866 17867 ------------------------------------------ 17868Summary of changes for this label: 02_08_01 17869 17870Core ACPI CA Subsystem: Fixed a problem where an error was 17871incorrectly returned if the return resource buffer was larger than 17872the actual data (in the resource interfaces). 17873 17874References to named objects within packages are resolved to the 17875 17876full pathname string before packages are returned directly (via 17877the AcpiEvaluateObject interface) or indirectly via the resource 17878interfaces. 17879 17880Linux OS Services Layer (OSL): 17881 17882Improved /proc battery interface. 17883 17884 17885Added C-state debugging output and other miscellaneous fixes. 17886 17887ASL Compiler Version X2014: 17888 17889All defined method arguments can now be used as local variables, 17890including the ones that are not actually passed in as parameters. 17891The compiler tracks initialization of the arguments and issues an 17892exception if they are used without prior assignment (just like 17893locals). 17894 17895The -o option now specifies a filename prefix that is used for all 17896output files, including the AML output file. Otherwise, the 17897default behavior is as follows: 1) the AML goes to the file 17898specified in the DSDT. 2) all other output files use the input 17899source filename as the base. 17900 17901 ------------------------------------------ 17902Summary of changes for this label: 01_25_01 17903 17904Core ACPI CA Subsystem: Restructured the implementation of object 17905store support within the interpreter. This includes support for 17906the Store operator as well as any ASL operators that include a 17907target operand. 17908 17909Partially implemented support for Implicit Result-to-Target 17910conversion. This is when a result object is converted on the fly 17911to the type of an existing target object. Completion of this 17912support is pending further analysis of the ACPI specification 17913concerning this matter. 17914 17915CPU-specific code has been removed from the subsystem (hardware 17916directory). 17917 17918New Power Management Timer functions added 17919 17920Linux OS Services Layer (OSL): Moved system state transition code 17921to the core, fixed it, and modified Linux OSL accordingly. 17922 17923Fixed C2 and C3 latency calculations. 17924 17925 17926We no longer use the compilation date for the version message on 17927initialization, but retrieve the version from AcpiGetSystemInfo(). 17928 17929Incorporated for fix Sony VAIO machines. 17930 17931Documentation: The Programmer Reference has been updated and 17932reformatted. 17933 17934 17935ASL Compiler: Version X2013: Fixed a problem where the line 17936numbering and error reporting could get out of sync in the 17937presence of multiple include files. 17938 17939 ------------------------------------------ 17940Summary of changes for this label: 01_15_01 17941 17942Core ACPI CA Subsystem: 17943 17944Implemented support for type conversions in the execution of the 17945ASL Concatenate operator (The second operand is converted to 17946match the type of the first operand before concatenation.) 17947 17948Support for implicit source operand conversion is partially 17949implemented. The ASL source operand types Integer, Buffer, and 17950String are freely interchangeable for most ASL operators and are 17951converted by the interpreter on the fly as required. Implicit 17952Target operand conversion (where the result is converted to the 17953target type before storing) is not yet implemented. 17954 17955Support for 32-bit and 64-bit BCD integers is implemented. 17956 17957Problem fixed where a field read on an aligned field could cause a 17958read past the end of the field. 17959 17960New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 17961does not return a value, but the caller expects one. (The ASL 17962compiler flags this as a warning.) 17963 17964ASL Compiler: 17965 17966Version X2011: 179671. Static typechecking of all operands is implemented. This 17968prevents the use of invalid objects (such as using a Package where 17969an Integer is required) at compile time instead of at interpreter 17970run-time. 179712. The ASL source line is printed with ALL errors and warnings. 179723. Bug fix for source EOF without final linefeed. 179734. Debug option is split into a parse trace and a namespace trace. 179745. Namespace output option (-n) includes initial values for 17975integers and strings. 179766. Parse-only option added for quick syntax checking. 179777. Compiler checks for duplicate ACPI name declarations 17978 17979Version X2012: 179801. Relaxed typechecking to allow interchangeability between 17981strings, integers, and buffers. These types are now converted by 17982the interpreter at runtime. 179832. Compiler reports time taken by each internal subsystem in the 17984debug output file. 17985 17986 17987 ------------------------------------------ 17988Summary of changes for this label: 12_14_00 17989 17990ASL Compiler: 17991 17992This is the first official release of the compiler. Since the 17993compiler requires elements of the Core Subsystem, this label 17994synchronizes everything. 17995 17996------------------------------------------ 17997Summary of changes for this label: 12_08_00 17998 17999 18000Fixed a problem where named references within the ASL definition 18001of both OperationRegions and CreateXXXFields did not work 18002properly. The symptom was an AE_AML_OPERAND_TYPE during 18003initialization of the region/field. This is similar (but not 18004related internally) to the problem that was fixed in the last 18005label. 18006 18007Implemented both 32-bit and 64-bit support for the BCD ASL 18008functions ToBCD and FromBCD. 18009 18010Updated all legal headers to include "2000" in the copyright 18011years. 18012 18013 ------------------------------------------ 18014Summary of changes for this label: 12_01_00 18015 18016Fixed a problem where method invocations within the ASL definition 18017of both OperationRegions and CreateXXXFields did not work 18018properly. The symptom was an AE_AML_OPERAND_TYPE during 18019initialization of the region/field: 18020 18021 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 18022[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 18023(0x3005) 18024 18025Fixed a problem where operators with more than one nested 18026subexpression would fail. The symptoms were varied, by mostly 18027AE_AML_OPERAND_TYPE errors. This was actually a rather serious 18028problem that has gone unnoticed until now. 18029 18030 Subtract (Add (1,2), Multiply (3,4)) 18031 18032Fixed a problem where AcpiGetHandle didn't quite get fixed in the 18033previous build (The prefix part of a relative path was handled 18034incorrectly). 18035 18036Fixed a problem where Operation Region initialization failed if 18037the operation region name was a "namepath" instead of a simple 18038"nameseg". Symptom was an AE_NO_OPERAND error. 18039 18040Fixed a problem where an assignment to a local variable via the 18041indirect RefOf mechanism only worked for the first such 18042assignment. Subsequent assignments were ignored. 18043 18044 ------------------------------------------ 18045Summary of changes for this label: 11_15_00 18046 18047ACPI 2.0 table support with backwards support for ACPI 1.0 and the 180480.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 18049the AML interpreter does NOT have support for the new 2.0 ASL 18050grammar terms at this time. 18051 18052All ACPI hardware access is via the GAS structures in the ACPI 2.0 18053FADT. 18054 18055All physical memory addresses across all platforms are now 64 bits 18056wide. Logical address width remains dependent on the platform 18057(i.e., "void *"). 18058 18059AcpiOsMapMemory interface changed to a 64-bit physical address. 18060 18061The AML interpreter integer size is now 64 bits, as per the ACPI 180622.0 specification. 18063 18064For backwards compatibility with ACPI 1.0, ACPI tables with a 18065revision number less than 2 use 32-bit integers only. 18066 18067Fixed a problem where the evaluation of OpRegion operands did not 18068always resolve them to numbers properly. 18069 18070------------------------------------------ 18071Summary of changes for this label: 10_20_00 18072 18073Fix for CBN_._STA issue. This fix will allow correct access to 18074CBN_ OpRegions when the _STA returns 0x8. 18075 18076Support to convert ACPI constants (Ones, Zeros, One) to actual 18077values before a package object is returned 18078 18079Fix for method call as predicate to if/while construct causing 18080incorrect if/while behavior 18081 18082Fix for Else block package lengths sometimes calculated wrong (if 18083block > 63 bytes) 18084 18085Fix for Processor object length field, was always zero 18086 18087Table load abort if FACP sanity check fails 18088 18089Fix for problem with Scope(name) if name already exists 18090 18091Warning emitted if a named object referenced cannot be found 18092(resolved) during method execution. 18093 18094 18095 18096 18097 18098------------------------------------------ 18099Summary of changes for this label: 9_29_00 18100 18101New table initialization interfaces: AcpiInitializeSubsystem no 18102longer has any parameters AcpiFindRootPointer - Find the RSDP (if 18103necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 18104>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 18105AcpiLoadTables 18106 18107Note: These interface changes require changes to all existing OSDs 18108 18109The PCI_Config default address space handler is always installed 18110at the root namespace object. 18111 18112------------------------------------------- 18113Summary of changes for this label: 09_15_00 18114 18115The new initialization architecture is implemented. New 18116interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 18117AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 18118 18119(Namespace is automatically loaded when a table is loaded) 18120 18121The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1812252 bytes to 32 bytes. There is usually one of these for every 18123namespace object, so the memory savings is significant. 18124 18125Implemented just-in-time evaluation of the CreateField operators. 18126 18127Bug fixes for IA-64 support have been integrated. 18128 18129Additional code review comments have been implemented 18130 18131The so-called "third pass parse" has been replaced by a final walk 18132through the namespace to initialize all operation regions (address 18133spaces) and fields that have not yet been initialized during the 18134execution of the various _INI and REG methods. 18135 18136New file - namespace/nsinit.c 18137 18138------------------------------------------- 18139Summary of changes for this label: 09_01_00 18140 18141Namespace manager data structures have been reworked to change the 18142primary object from a table to a single object. This has 18143resulted in dynamic memory savings of 3X within the namespace and 181442X overall in the ACPI CA subsystem. 18145 18146Fixed problem where the call to AcpiEvFindPciRootBuses was 18147inadvertently left commented out. 18148 18149Reduced the warning count when generating the source with the GCC 18150compiler. 18151 18152Revision numbers added to each module header showing the 18153SourceSafe version of the file. Please refer to this version 18154number when giving us feedback or comments on individual modules. 18155 18156The main object types within the subsystem have been renamed to 18157clarify their purpose: 18158 18159ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 18160ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 18161ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 18162 18163NOTE: no changes to the initialization sequence are included in 18164this label. 18165 18166------------------------------------------- 18167Summary of changes for this label: 08_23_00 18168 18169Fixed problem where TerminateControlMethod was being called 18170multiple times per method 18171 18172Fixed debugger problem where single stepping caused a semaphore to 18173be oversignalled 18174 18175Improved performance through additional parse object caching - 18176added ACPI_EXTENDED_OP type 18177 18178------------------------------------------- 18179Summary of changes for this label: 08_10_00 18180 18181Parser/Interpreter integration: Eliminated the creation of 18182complete parse trees for ACPI tables and control methods. 18183Instead, parse subtrees are created and then deleted as soon as 18184they are processed (Either entered into the namespace or executed 18185by the interpreter). This reduces the use of dynamic kernel 18186memory significantly. (about 10X) 18187 18188Exception codes broken into classes and renumbered. Be sure to 18189recompile all code that includes acexcep.h. Hopefully we won't 18190have to renumber the codes again now that they are split into 18191classes (environment, programmer, AML code, ACPI table, and 18192internal). 18193 18194Fixed some additional alignment issues in the Resource Manager 18195subcomponent 18196 18197Implemented semaphore tracking in the AcpiExec utility, and fixed 18198several places where mutexes/semaphores were being unlocked 18199without a corresponding lock operation. There are no known 18200semaphore or mutex "leaks" at this time. 18201 18202Fixed the case where an ASL Return operator is used to return an 18203unnamed package. 18204 18205------------------------------------------- 18206Summary of changes for this label: 07_28_00 18207 18208Fixed a problem with the way addresses were calculated in 18209AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 18210manifested itself when a Field was created with WordAccess or 18211DwordAccess, but the field unit defined within the Field was less 18212 18213than a Word or Dword. 18214 18215Fixed a problem in AmlDumpOperands() module's loop to pull 18216operands off of the operand stack to display information. The 18217problem manifested itself as a TLB error on 64-bit systems when 18218accessing an operand stack with two or more operands. 18219 18220Fixed a problem with the PCI configuration space handlers where 18221context was getting confused between accesses. This required a 18222change to the generic address space handler and address space 18223setup definitions. Handlers now get both a global handler context 18224(this is the one passed in by the user when executing 18225AcpiInstallAddressSpaceHandler() and a specific region context 18226that is unique to each region (For example, the _ADR, _SEG and 18227_BBN values associated with a specific region). The generic 18228function definitions have changed to the following: 18229 18230typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 18231UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 18232*HandlerContext, // This used to be void *Context void 18233*RegionContext); // This is an additional parameter 18234 18235typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 18236RegionHandle, UINT32 Function, void *HandlerContext, void 18237**RegionContext); // This used to be **ReturnContext 18238 18239------------------------------------------- 18240Summary of changes for this label: 07_21_00 18241 18242Major file consolidation and rename. All files within the 18243interpreter have been renamed as well as most header files. This 18244was done to prevent collisions with existing files in the host 18245OSs -- filenames such as "config.h" and "global.h" seem to be 18246quite common. The VC project files have been updated. All 18247makefiles will require modification. 18248 18249The parser/interpreter integration continues in Phase 5 with the 18250implementation of a complete 2-pass parse (the AML is parsed 18251twice) for each table; This avoids the construction of a huge 18252parse tree and therefore reduces the amount of dynamic memory 18253required by the subsystem. Greater use of the parse object cache 18254means that performance is unaffected. 18255 18256Many comments from the two code reviews have been rolled in. 18257 18258The 64-bit alignment support is complete. 18259 18260------------------------------------------- 18261Summary of changes for this label: 06_30_00 18262 18263With a nod and a tip of the hat to the technology of yesteryear, 18264we've added support in the source code for 80 column output 18265devices. The code is now mostly constrained to 80 columns or 18266less to support environments and editors that 1) cannot display 18267or print more than 80 characters on a single line, and 2) cannot 18268disable line wrapping. 18269 18270A major restructuring of the namespace data structure has been 18271completed. The result is 1) cleaner and more 18272understandable/maintainable code, and 2) a significant reduction 18273in the dynamic memory requirement for each named ACPI object 18274(almost half). 18275 18276------------------------------------------- 18277Summary of changes for this label: 06_23_00 18278 18279Linux support has been added. In order to obtain approval to get 18280the ACPI CA subsystem into the Linux kernel, we've had to make 18281quite a few changes to the base subsystem that will affect all 18282users (all the changes are generic and OS- independent). The 18283effects of these global changes have been somewhat far reaching. 18284Files have been merged and/or renamed and interfaces have been 18285renamed. The major changes are described below. 18286 18287Osd* interfaces renamed to AcpiOs* to eliminate namespace 18288pollution/confusion within our target kernels. All OSD 18289interfaces must be modified to match the new naming convention. 18290 18291Files merged across the subsystem. A number of the smaller source 18292and header files have been merged to reduce the file count and 18293increase the density of the existing files. There are too many 18294to list here. In general, makefiles that call out individual 18295files will require rebuilding. 18296 18297Interpreter files renamed. All interpreter files now have the 18298prefix am* instead of ie* and is*. 18299 18300Header files renamed: The acapi.h file is now acpixf.h. The 18301acpiosd.h file is now acpiosxf.h. We are removing references to 18302the acronym "API" since it is somewhat windowsy. The new name is 18303"external interface" or xface or xf in the filenames.j 18304 18305 18306All manifest constants have been forced to upper case (some were 18307mixed case.) Also, the string "ACPI_" has been prepended to many 18308(not all) of the constants, typedefs, and structs. 18309 18310The globals "DebugLevel" and "DebugLayer" have been renamed 18311"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 18312 18313All other globals within the subsystem are now prefixed with 18314"AcpiGbl_" Internal procedures within the subsystem are now 18315prefixed with "Acpi" (with only a few exceptions). The original 18316two-letter abbreviation for the subcomponent remains after "Acpi" 18317- for example, CmCallocate became AcpiCmCallocate. 18318 18319Added a source code translation/conversion utility. Used to 18320generate the Linux source code, it can be modified to generate 18321other types of source as well. Can also be used to cleanup 18322existing source by removing extraneous spaces and blank lines. 18323Found in tools/acpisrc/* 18324 18325OsdUnMapMemory was renamed to OsdUnmapMemory and then 18326AcpiOsUnmapMemory. (UnMap became Unmap). 18327 18328A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 18329When set to one, this indicates that the caller wants to use the 18330 18331semaphore as a mutex, not a counting semaphore. ACPI CA uses 18332both types. However, implementers of this call may want to use 18333different OS primitives depending on the type of semaphore 18334requested. For example, some operating systems provide separate 18335 18336"mutex" and "semaphore" interfaces - where the mutex interface is 18337much faster because it doesn't have all the overhead of a full 18338semaphore implementation. 18339 18340Fixed a deadlock problem where a method that accesses the PCI 18341address space can block forever if it is the first access to the 18342space. 18343 18344------------------------------------------- 18345Summary of changes for this label: 06_02_00 18346 18347Support for environments that cannot handle unaligned data 18348accesses (e.g. firmware and OS environments devoid of alignment 18349handler technology namely SAL/EFI and the IA-64 Linux kernel) has 18350been added (via configurable macros) in these three areas: - 18351Transfer of data from the raw AML byte stream is done via byte 18352moves instead of word/dword/qword moves. - External objects are 18353aligned within the user buffer, including package elements (sub- 18354objects). - Conversion of name strings to UINT32 Acpi Names is now 18355done byte-wise. 18356 18357The Store operator was modified to mimic Microsoft's 18358implementation when storing to a Buffer Field. 18359 18360Added a check of the BM_STS bit before entering C3. 18361 18362The methods subdirectory has been obsoleted and removed. A new 18363file, cmeval.c subsumes the functionality. 18364 18365A 16-bit (DOS) version of AcpiExec has been developed. The 18366makefile is under the acpiexec directory. 18367