1---------------------------------------- 219 January 2017. Summary of changes for version 20170119: 3 4This release is available at https://acpica.org/downloads 5 61) General ACPICA software: 7 8Entire source code base: Added the 2017 copyright to all source code 9legal/licensing module headers and utility/tool signons. This includes 10the standard Linux dual-license header. This affects virtually every file 11in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 12the ACPICA test suite. 13 14 152) iASL Compiler/Disassembler and Tools: 16 17iASL: Removed/fixed an inadvertent remark when a method argument 18containing a reference is used as a target operand within the method (and 19never used as a simple argument), as in the example below. Jeffrey Hugo. 20 21 dsdt.asl 1507: Store(0x1, Arg0) 22 Remark 2146 - ^ Method Argument is never used (Arg0) 23 24All tools: Removed the bit width of the compiler that generated the tool 25from the common signon for all user space tools. This proved to be 26confusing and unnecessary. This includes similar removal of HARDWARE_NAME 27from the generic makefiles (Thomas Petazzoni). Example below. 28 29 Old: 30 ASL+ Optimizing Compiler version 20170119-32 31 ASL+ Optimizing Compiler version 20170119-64 32 33 New: 34 ASL+ Optimizing Compiler version 20170119 35 36---------------------------------------- 3722 December 2016. Summary of changes for version 20161222: 38 39 401) ACPICA kernel-resident subsystem: 41 42AML Debugger: Implemented a new mechanism to simplify and enhance 43debugger integration into all environments, including kernel debuggers 44and user-space utilities, as well as remote debug services. This 45mechanism essentially consists of new OSL interfaces to support debugger 46initialization/termination, as well as wait/notify interfaces to perform 47the debugger handshake with the host. Lv Zheng. 48 49 New OSL interfaces: 50 AcpiOsInitializeDebugger (void) 51 AcpiOsTerminateDebugger (void) 52 AcpiOsWaitCommandReady (void) 53 AcpiOsNotifyCommandComplete (void) 54 55 New OS services layer: 56 osgendbg.c -- Example implementation, and used for AcpiExec 57 58Update for Generic Address Space (GAS) support: Although the AccessWidth 59and/or BitOffset fields of the GAS are not often used, this change now 60fully supports these fields. This affects the internal support for FADT 61registers, registers in other ACPI data tables, and the AcpiRead and 62AcpiWrite public interfaces. Lv Zheng. 63 64Sleep support: In order to simplify integration of ACPI sleep for the 65various host operating systems, a new OSL interface has been introduced. 66AcpiOsEnterSleep allows the host to perform any required operations 67before the final write to the sleep control register(s) is performed by 68ACPICA. Lv Zheng. 69 70 New OSL interface: 71 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 72 73 Called from these internal interfaces: 74 AcpiHwLegacySleep 75 AcpiHwExtendedSleep 76 77EFI support: Added a very small EFI/ACPICA example application. Provides 78a simple demo for EFI integration, as well as assisting with resolution 79of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 80 81 source/tools/efihello/efihello.c 82 83Local C library: Implemented several new functions to enhance ACPICA 84portability, for environments where these clib functions are not 85available (such as EFI). Lv Zheng: 86 putchar 87 getchar 88 strpbrk 89 strtok 90 memmove 91 92Fixed a regression where occasionally a valid resource descriptor was 93incorrectly detected as invalid at runtime, and a 94AE_AML_NO_RESOURCE_END_TAG was returned. 95 96Fixed a problem with the recently implemented support that enables 97control method invocations as Target operands to many ASL operators. 98Warnings of this form: "Needed type [Reference], found [Processor]" were 99seen at runtime for some method invocations. 100 101Example Code and Data Size: These are the sizes for the OS-independent 102acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 103debug version of the code includes the debug output trace mechanism and 104has a much larger code and data size. 105 106 Current Release: 107 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 108 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 109 Previous Release: 110 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 111 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 112 113 1142) iASL Compiler/Disassembler and Tools: 115 116Disassembler: Enhanced output by adding the capability to detect and 117disassemble ASL Switch/Case statements back to the original ASL source 118code instead of if/else blocks. David Box. 119 120AcpiHelp: Split a large file into separate files based upon 121functionality/purpose. New files are: 122 ahaml.c 123 ahasl.c 124 125---------------------------------------- 12617 November 2016. Summary of changes for version 20161117: 127 128 1291) ACPICA kernel-resident subsystem: 130 131Table Manager: Fixed a regression introduced in 20160729, "FADT support 132cleanup". This was an attempt to remove all references in the source to 133the FADT version 2, which never was a legal version number. It was 134skipped because it was an early version of 64-bit support that was 135eventually abandoned for the current 64-bit support. 136 137Interpreter: Fixed a problem where runtime implicit conversion was 138incorrectly disabled for the ASL operators below. This brings the 139behavior into compliance with the ACPI specification: 140 FromBCD 141 ToBCD 142 ToDecimalString 143 ToHexString 144 ToInteger 145 ToBuffer 146 147Table Manager: Added a new public interface, AcpiPutTable, used to 148release and free an ACPI table returned by AcpiGetTable and related 149interfaces. Lv Zheng. 150 151Example Code and Data Size: These are the sizes for the OS-independent 152acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 153debug version of the code includes the debug output trace mechanism and 154has a much larger code and data size. 155 156 Current Release: 157 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 158 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 159 Previous Release: 160 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 161 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 162 163 1642) iASL Compiler/Disassembler and Tools: 165 166Disassembler: Fixed a regression for disassembly of Resource Template. 167Detection of templates in the AML stream missed some types of templates. 168 169iASL: Fixed a problem where an Access Size error was returned for the PCC 170address space when the AccessSize of the GAS register is greater than a 171DWORD. Hoan Tran. 172 173iASL: Implemented several grammar changes for the operators below. These 174changes are slated for the next version of the ACPI specification: 175 RefOf - Disallow method invocation as an operand 176 CondRefOf - Disallow method invocation as an operand 177 DerefOf - Disallow operands that use the result from operators 178that 179 do not return a reference (Changed TermArg to 180SuperName). 181 182iASL: Control method invocations are now allowed for Target operands, as 183per the ACPI specification. Removed error for using a control method 184invocation as a Target operand. 185 186Disassembler: Improved detection of Resource Templates, Unicode, and 187Strings within Buffer objects. These subtypes do not contain a specific 188opcode to indicate the originating ASL code, and they must be detected by 189other means within the disassembler. 190 191iASL: Implemented an optimization improvement for 32-bit ACPI tables 192(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 193only after 64-bit to 32-bit truncation. A truncation warning message is 194still emitted, however. 195 196AcpiXtract: Implemented handling for both types of line terminators (LF 197or CR/LF) so that it can accept AcpiDump output files from any system. 198Peter Wu. 199 200AcpiBin: Added two new options for comparing AML files: 201 -a: compare and display ALL mismatches 202 -o: start compare at this offset into the second file 203 204---------------------------------------- 20530 September 2016. Summary of changes for version 20160930: 206 207 2081) ACPICA kernel-resident subsystem: 209 210Fixed a regression in the internal AcpiTbFindTable function where a non 211AE_OK exception could inadvertently be returned even if the function did 212not fail. This problem affects the following operators: 213 DataTableRegion 214 LoadTable 215 216Fixed a regression in the LoadTable operator where a load to any 217namespace location other than the root no longer worked properly. 218 219Increased the maximum loop count value that will result in the 220AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 221prevent infinite loops within the AML interpreter and thus the host OS 222kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 2231,048,575). 224 225Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 226acpixf.h file. This allows hosts to easily configure the maximum loop 227count at runtime. 228 229Removed an illegal character in the strtoul64.c file. This character 230caused errors with some C compilers. 231 232Example Code and Data Size: These are the sizes for the OS-independent 233acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 234debug version of the code includes the debug output trace mechanism and 235has a much larger code and data size. 236 237 Current Release: 238 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 239 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 240 Previous Release: 241 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 242 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 243 244 2452) iASL Compiler/Disassembler and Tools: 246 247Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 248the simpler ASL ElseIf keyword. During the conversion, a trailing If 249block could be lost and missing from the disassembled output. 250 251iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 252the missing rule caused a parse error when using the Index operator as an 253operand to ObjectType. This construct now compiles properly. Example: 254 ObjectType(PKG1[4]). 255 256iASL: Correctly handle unresolved symbols in the hardware map file (-lm 257option). Previously, unresolved symbols could cause a protection fault. 258Such symbols are now marked as unresolved in the map file. 259 260iASL: Implemented support to allow control method invocations as an 261operand to the ASL DeRefOf operator. Example: 262 DeRefOf(MTH1(Local0)) 263 264Disassembler: Improved support for the ToPLD ASL macro. Detection of a 265possible _PLD buffer now includes examination of both the normal buffer 266length (16 or 20) as well as the surrounding AML package length. 267 268Disassembler: Fixed a problem with the decoding of complex expressions 269within the Divide operator for ASL+. For the case where both the quotient 270and remainder targets are specified, the entire statement cannot be 271disassembled. Previously, the output incorrectly contained a mix of ASL- 272and ASL+ operators. This mixed statement causes a syntax error when 273compiled. Example: 274 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 275disassembled to: 276 Divide (INT1 + 6, 128, RSLT, QUOT) 277 278iASL/Tools: Added support to process AML and non-AML ACPI tables 279consistently. For the disassembler and AcpiExec, allow all types of ACPI 280tables (AML and data tables). For the iASL -e option, allow only AML 281tables (DSDT/SSDT). 282 283---------------------------------------- 28431 August 2016. Summary of changes for version 20160831: 285 286 2871) ACPICA kernel-resident subsystem: 288 289Improve support for the so-called "module-level code", which is defined 290to be math, logical and control AML opcodes that appear outside of any 291control method. This change improves the support by adding more opcodes 292that can be executed in the manner. Some other issues have been solved, 293and the ASL grammar changes to support such code under all scope 294operators (Device, etc.) are complete. Lv Zheng. 295 296UEFI support: these OSL functions have been implemented. This is an 297additional step toward supporting the AcpiExec utility natively (with 298full hardware access) under UEFI. Marcelo Ferreira. 299 AcpiOsReadPciConfiguration 300 AcpiOsWritePciConfiguration 301 302Fixed a possible mutex error during control method auto-serialization. Lv 303Zheng. 304 305Updated support for the Generic Address Structure by fully implementing 306all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 307Zheng. 308 309Updated the return value for the internal _OSI method. Instead of 3100xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 311for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 312implementations, and will be reflected and clarified in the next version 313of the ACPI specification. 314 315Implemented two new table events that can be passed to an ACPICA table 316handler. These events are used to indicate a table installation or 317uninstallation. These events are used in addition to existed table load 318and unload events. Lv Zheng. 319 320Implemented a cleanup for all internal string-to-integer conversions. 321Consolidate multiple versions of this functionality and limit possible 322bases to either 10 or 16 to simplify the code. Adds a new file, 323utstrtoul64. 324 325Cleanup the inclusion order of the various compiler-specific headers. 326This simplifies build configuration management. The compiler-specific 327headers are now split out from the host-specific headers. Lv Zheng. 328 329Example Code and Data Size: These are the sizes for the OS-independent 330acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 331debug version of the code includes the debug output trace mechanism and 332has a much larger code and data size. 333 334 Current Release: 335 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 336 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 337 338 3392) iASL Compiler/Disassembler and Tools: 340 341iASL/AcpiExec: Added a command line option to display the build date/time 342of the tool (-vd). This can be useful to verify that the correct version 343of the tools are being used. 344 345AML Debugger: Implemented a new subcommand ("execute predef") to execute 346all predefined control methods and names within the current namespace. 347This can be useful for debugging problems with ACPI tables and the ACPI 348namespace. 349 350---------------------------------------- 35129 July 2016. Summary of changes for version 20160729: 352 353 3541) ACPICA kernel-resident subsystem: 355 356Implemented basic UEFI support for the various ACPICA tools. This 357includes: 3581) An OSL to implement the various AcpiOs* interfaces on UEFI. 3592) Support to obtain the ACPI tables on UEFI. 3603) Local implementation of required C library functions not available on 361UEFI. 3624) A front-end (main) function for the tools for UEFI-related 363initialization. 364 365The initial deployment of this support is the AcpiDump utility executing 366as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 367Current environments supported are Linux/Unix. MSVC generation is not 368supported at this time. See the generate/efi/README file for build 369instructions. Lv Zheng. 370 371Future plans include porting the AcpiExec utility to execute natively on 372the platform with I/O and memory access. This will allow viewing/dump of 373the platform namespace and native execution of ACPI control methods that 374access the actual hardware. To fully implement this support, the OSL 375functions below must be implemented with UEFI interfaces. Any community 376help in the implementation of these functions would be appreciated: 377 AcpiOsReadPort 378 AcpiOsWritePort 379 AcpiOsReadMemory 380 AcpiOsWriteMemory 381 AcpiOsReadPciConfiguration 382 AcpiOsWritePciConfiguration 383 384Restructured and standardized the C library configuration for ACPICA, 385resulting in the various configuration options below. This includes a 386global restructuring of the compiler-dependent and platform-dependent 387include files. These changes may affect the existing platform-dependent 388configuration files on some hosts. Lv Zheng. 389 390The current C library configuration options appear below. For any issues, 391it may be helpful to examine the existing compiler-dependent and 392platform-dependent files as examples. Lv Zheng. 393 3941) Linux kernel: 395 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 396library. 397 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 3982) Unix/Windows/BSD applications: 399 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 400library. 401 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 4023) UEFI applications: 403 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 404library. 405 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 4064) UEFI applications (EDK2/StdLib): 407 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 408 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 409 410 411AML interpreter: "module-level code" support. Allows for execution of so- 412called "executable" AML code (math/logical operations, etc.) outside of 413control methods not just at the module level (top level) but also within 414any scope declared outside of a control method - Scope{}, Device{}, 415Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 416 417Simplified the configuration of the "maximum AML loops" global option by 418adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 419modified at runtime. 420 421 422Example Code and Data Size: These are the sizes for the OS-independent 423acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 424debug version of the code includes the debug output trace mechanism and 425has a much larger code and data size. 426 427 Current Release: 428 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 429 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 430 431 4322) iASL Compiler/Disassembler and Tools: 433 434iASL: Add full support for the RASF ACPI table (RAS Features Table). 435Includes disassembler, data table compiler, and header support. 436 437iASL Expand "module-level code" support. Allows for 438compilation/disassembly of so-called "executable" AML code (math/logical 439operations, etc.) outside of control methods not just at the module level 440(top level) but also within any scope declared outside of a control 441method - Scope{}, Device{}, Processor{}, PowerResource{}, and 442ThermalZone{}. 443 444AcpiDump: Added support for dumping all SSDTs on newer versions of 445Windows. These tables are now easily available -- SSDTs are not available 446through the registry on older versions. 447 448---------------------------------------- 44927 May 2016. Summary of changes for version 20160527: 450 451 4521) ACPICA kernel-resident subsystem: 453 454Temporarily reverted the new arbitrary bit length/alignment support in 455AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 456a number of regressions with the new code that need to be fully resolved 457and tested before this support can be finally integrated into ACPICA. 458Apologies for any inconveniences these issues may have caused. 459 460The ACPI message macros are not configurable (ACPI_MSG_ERROR, 461ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 462and ACPI_MSG_BIOS_WARNING). Lv Zheng. 463 464Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 465option. Adds a new return macro, return_STR. Junk-uk Kim. 466 467Example Code and Data Size: These are the sizes for the OS-independent 468acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 469debug version of the code includes the debug output trace mechanism and 470has a much larger code and data size. 471 472 Current Release: 473 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 474 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 475 Previous Release: 476 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 477 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 478 479---------------------------------------- 48022 April 2016. Summary of changes for version 20160422: 481 4821) ACPICA kernel-resident subsystem: 483 484Fixed a regression in the GAS (generic address structure) arbitrary bit 485support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 486and incorrect return values. Lv Zheng. ACPICA BZ 1270. 487 488ACPI 6.0: Added support for new/renamed resource macros. One new argument 489was added to each of these macros, and the original name has been 490deprecated. The AML disassembler will always disassemble to the new 491names. Support for the new macros was added to iASL, disassembler, 492resource manager, and the acpihelp utility. ACPICA BZ 1274. 493 494 I2cSerialBus -> I2cSerialBusV2 495 SpiSerialBus -> SpiSerialBusV2 496 UartSerialBus -> UartSerialBusV2 497 498ACPI 6.0: Added support for a new integer field that was appended to the 499package object returned by the _BIX method. This adds iASL compile-time 500and AML runtime error checking. ACPICA BZ 1273. 501 502ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 503Subspace Type2" (Headers, Disassembler, and data table compiler). 504 505Example Code and Data Size: These are the sizes for the OS-independent 506acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 507debug version of the code includes the debug output trace mechanism and 508has a much larger code and data size. 509 510 Current Release: 511 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 512 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 513 Previous Release: 514 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 515 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 516 517 5182) iASL Compiler/Disassembler and Tools: 519 520iASL: Implemented an ASL grammar extension to allow/enable executable 521"module-level code" to be created and executed under the various 522operators that create new scopes. This type of AML code is already 523supported in all known AML interpreters, and the grammar change will 524appear in the next version of the ACPI specification. Simplifies the 525conditional runtime creation of named objects under these object types: 526 527 Device 528 PowerResource 529 Processor 530 Scope 531 ThermalZone 532 533iASL: Implemented a new ASL extension, a "For" loop macro to add greater 534ease-of-use to the ASL language. The syntax is similar to the 535corresponding C operator, and is implemented with the existing AML While 536opcode -- thus requiring no changes to existing AML interpreters. 537 538 For (Initialize, Predicate, Update) {TermList} 539 540Grammar: 541 ForTerm := 542 For ( 543 Initializer // Nothing | TermArg => ComputationalData 544 Predicate // Nothing | TermArg => ComputationalData 545 Update // Nothing | TermArg => ComputationalData 546 ) {TermList} 547 548 549iASL: The _HID/_ADR detection and validation has been enhanced to search 550under conditionals in order to allow these objects to be conditionally 551created at runtime. 552 553iASL: Fixed several issues with the constant folding feature. The 554improvement allows better detection and resolution of statements that can 555be folded at compile time. ACPICA BZ 1266. 556 557iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 558conversion to the ASL ElseIf operator where incorrect ASL code could be 559generated. 560 561iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 562sometimes an extra (and extraneous) set of parentheses were emitted for 563some combinations of operators. Although this did not cause any problems 564with recompilation of the disassembled code, it made the code more 565difficult to read. David Box. ACPICA BZ 1231. 566 567iASL: Changed to ignore the unreferenced detection for predefined names 568of resource descriptor elements, when the resource descriptor is 569created/defined within a control method. 570 571iASL: Disassembler: Fix a possible fault with externally declared Buffer 572objects. 573 574---------------------------------------- 57518 March 2016. Summary of changes for version 20160318: 576 5771) ACPICA kernel-resident subsystem: 578 579Added support for arbitrary bit lengths and bit offsets for registers 580defined by the Generic Address Structure. Previously, only aligned bit 581lengths of 8/16/32/64 were supported. This was sufficient for many years, 582but recently some machines have been seen that require arbitrary bit- 583level support. ACPICA BZ 1240. Lv Zheng. 584 585Fixed an issue where the \_SB._INI method sometimes must be evaluated 586before any _REG methods are evaluated. Lv Zheng. 587 588Implemented several changes related to ACPI table support 589(Headers/Disassembler/TableCompiler): 590NFIT: For ACPI 6.1, updated to add some additional new fields and 591constants. 592FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 5936). 594DMAR: Added new constants per the 10/2014 DMAR spec. 595IORT: Added new subtable per the 10/2015 IORT spec. 596HEST: For ACPI 6.1, added new constants and new subtable. 597DBG2: Added new constants per the 12/2015 DBG2 spec. 598FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 599ACPICA BZ 1249. 600ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 601 602Updated header support for the DMAR table to match the current version of 603the related spec. 604 605Added extensions to the ASL Concatenate operator to allow any ACPI object 606to be passed as an operand. Any object other than Integer/String/Buffer 607simply returns a string containing the object type. This extends the 608usefulness of the Printf macros. Previously, Concatenate would abort the 609control method if a non-data object was encountered. 610 611ACPICA source code: Deployed the C "const" keyword across the source code 612where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 613 614Example Code and Data Size: These are the sizes for the OS-independent 615acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 616debug version of the code includes the debug output trace mechanism and 617has a much larger code and data size. 618 619 Current Release: 620 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 621 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 622 Previous Release: 623 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 624 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 625 626 6272) iASL Compiler/Disassembler and Tools: 628 629iASL/Disassembler: Improved the heuristic used to determine the number of 630arguments for an externally defined control method (a method in another 631table). Although this is an improvement, there is no deterministic way to 632"guess" the number of method arguments. Only the ACPI 6.0 External opcode 633will completely solve this problem as it is deployed (automatically) in 634newer BIOS code. 635 636iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 637statements that could cause errors when the disassembled file is 638compiled. ACPICA BZ 1243. David Box. 639 640iASL: Fixed a regression caused by the merger of the two versions of the 641local strtoul64. Because of a dependency on a global variable, strtoul64 642could return an error for integers greater than a 32-bit value. ACPICA BZ 6431260. 644 645iASL: Fixed a regression where a fault could occur for an ASL Return 646statement if it invokes a control method that is not resolved. ACPICA BZ 6471264. 648 649AcpiXtract: Improved input file validation: detection of binary files and 650non-acpidump text files. 651 652---------------------------------------- 65312 February 2016. Summary of changes for version 20160212: 654 6551) ACPICA kernel-resident subsystem: 656 657Implemented full support for the ACPI 6.1 specification (released in 658January). This version of the specification is available at: 659http://www.uefi.org/specifications 660 661Only a relatively small number of changes were required in ACPICA to 662support ACPI 6.1, in these areas: 663- New predefined names 664- New _HID values 665- A new subtable for HEST 666- A few other header changes for new values 667 668Ensure \_SB_._INI is executed before any _REG methods are executed. There 669appears to be existing BIOS code that relies on this behavior. Lv Zheng. 670 671Reverted a change made in version 20151218 which enabled method 672invocations to be targets of various ASL operators (SuperName and Target 673grammar elements). While the new behavior is supported by the ACPI 674specification, other AML interpreters do not support this behavior and 675never will. The ACPI specification will be updated for ACPI 6.2 to remove 676this support. Therefore, the change was reverted to the original ACPICA 677behavior. 678 679ACPICA now supports the GCC 6 compiler. 680 681Current Release: (Note: build changes increased sizes) 682 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 683 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 684Previous Release: 685 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 686 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 687 688 6892) iASL Compiler/Disassembler and Tools: 690 691Completed full support for the ACPI 6.0 External() AML opcode. The 692compiler emits an external AML opcode for each ASL External statement. 693This opcode is used by the disassembler to assist with the disassembly of 694external control methods by specifying the required number of arguments 695for the method. AML interpreters do not use this opcode. To ensure that 696interpreters do not even see the opcode, a block of one or more external 697opcodes is surrounded by an "If(0)" construct. As this feature becomes 698commonly deployed in BIOS code, the ability of disassemblers to correctly 699disassemble AML code will be greatly improved. David Box. 700 701iASL: Implemented support for an optional cross-reference output file. 702The -lx option will create a the cross-reference file with the suffix 703"xrf". Three different types of cross-reference are created in this file: 704- List of object references made from within each control method 705- Invocation (caller) list for each user-defined control method 706- List of references to each non-method object in the namespace 707 708iASL: Method invocations as ASL Target operands are now disallowed and 709flagged as errors in preparation for ACPI 6.2 (see the description of the 710problem above). 711 712---------------------------------------- 7138 January 2016. Summary of changes for version 20160108: 714 7151) ACPICA kernel-resident subsystem: 716 717Updated all ACPICA copyrights and signons to 2016: Added the 2016 718copyright to all source code module headers and utility/tool signons. 719This includes the standard Linux dual-license header. This affects 720virtually every file in the ACPICA core subsystem, iASL compiler, all 721ACPICA utilities, and the ACPICA test suite. 722 723Fixed a regression introduced in version 20151218 concerning the 724execution of so-called module-level ASL/AML code. Namespace objects 725created under a module-level If() construct were not properly/fully 726entered into the namespace and could cause an interpreter fault when 727accessed. 728 729Example Code and Data Size: These are the sizes for the OS-independent 730acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 731debug version of the code includes the debug output trace mechanism and 732has a much larger code and data size. 733 734Current Release: 735 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 736 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 737 Previous Release: 738 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 739 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 740 741 7422) iASL Compiler/Disassembler and Tools: 743 744Fixed a problem with the compilation of the GpioIo and GpioInt resource 745descriptors. The _PIN field name was incorrectly defined to be an array 746of 32-bit values, but the _PIN values are in fact 16 bits each. This 747would cause incorrect bit width warnings when using Word (16-bit) fields 748to access the descriptors. 749 750 751---------------------------------------- 75218 December 2015. Summary of changes for version 20151218: 753 7541) ACPICA kernel-resident subsystem: 755 756Implemented per-AML-table execution of "module-level code" as individual 757ACPI tables are loaded into the namespace during ACPICA initialization. 758In other words, any module-level code within an AML table is executed 759immediately after the table is loaded, instead of batched and executed 760after all of the tables have been loaded. This provides compatibility 761with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 762David Box. 763 764To fully support the feature above, the default operation region handlers 765for the SystemMemory, SystemIO, and PCI_Config address spaces are now 766installed before any ACPI tables are loaded. This enables module-level 767code to access these address spaces during the table load and module- 768level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 769Box. 770 771Implemented several changes to the internal _REG support in conjunction 772with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 773utilities for the changes above. Although these tools were changed, host 774operating systems that simply use the default handlers for SystemMemory, 775SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 776 777For example, in the code below, DEV1 is conditionally added to the 778namespace by the DSDT via module-level code that accesses an operation 779region. The SSDT references DEV1 via the Scope operator. DEV1 must be 780created immediately after the DSDT is loaded in order for the SSDT to 781successfully reference DEV1. Previously, this code would cause an 782AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 783fully supported by ACPICA. 784 785 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 786 { 787 OperationRegion (OPR1, SystemMemory, 0x400, 32) 788 Field (OPR1, AnyAcc, NoLock, Preserve) 789 { 790 FLD1, 1 791 } 792 If (FLD1) 793 { 794 Device (\DEV1) 795 { 796 } 797 } 798 } 799 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 800 { 801 External (\DEV1, DeviceObj) 802 Scope (\DEV1) 803 { 804 } 805 } 806 807Fixed an AML interpreter problem where control method invocations were 808not handled correctly when the invocation was itself a SuperName argument 809to another ASL operator. In these cases, the method was not invoked. 810ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 811argument: 812 Store 813 Acquire, Wait 814 CondRefOf, RefOf 815 Decrement, Increment 816 Load, Unload 817 Notify 818 Signal, Release, Reset 819 SizeOf 820 821Implemented automatic String-to-ObjectReference conversion support for 822packages returned by predefined names (such as _DEP). A common BIOS error 823is to add double quotes around an ObjectReference namepath, which turns 824the reference into an unexpected string object. This support detects the 825problem and corrects it before the package is returned to the caller that 826invoked the method. Lv Zheng. 827 828Implemented extensions to the Concatenate operator. Concatenate now 829accepts any type of object, it is not restricted to simply 830Integer/String/Buffer. For objects other than these 3 basic data types, 831the argument is treated as a string containing the name of the object 832type. This expands the utility of Concatenate and the Printf/Fprintf 833macros. ACPICA BZ 1222. 834 835Cleaned up the output of the ASL Debug object. The timer() value is now 836optional and no longer emitted by default. Also, the basic data types of 837Integer/String/Buffer are simply emitted as their values, without a data 838type string -- since the data type is obvious from the output. ACPICA BZ 8391221. 840 841Example Code and Data Size: These are the sizes for the OS-independent 842acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 843debug version of the code includes the debug output trace mechanism and 844has a much larger code and data size. 845 846 Current Release: 847 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 848 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 849 Previous Release: 850 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 851 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 852 853 8542) iASL Compiler/Disassembler and Tools: 855 856iASL: Fixed some issues with the ASL Include() operator. This operator 857was incorrectly defined in the iASL parser rules, causing a new scope to 858be opened for the code within the include file. This could lead to 859several issues, including allowing ASL code that is technically illegal 860and not supported by AML interpreters. Note, this does not affect the 861related #include preprocessor operator. ACPICA BZ 1212. 862 863iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 864operator is essentially an ASL macro since there is no AML opcode 865associated with it. The code emitted by the iASL compiler for ElseIf is 866an Else opcode followed immediately by an If opcode. The disassembler 867will now emit an ElseIf if it finds an Else immediately followed by an 868If. This simplifies the decoded ASL, especially for deeply nested 869If..Else and large Switch constructs. Thus, the disassembled code more 870closely follows the original source ASL. ACPICA BZ 1211. Example: 871 872 Old disassembly: 873 Else 874 { 875 If (Arg0 == 0x02) 876 { 877 Local0 = 0x05 878 } 879 } 880 881 New disassembly: 882 ElseIf (Arg0 == 0x02) 883 { 884 Local0 = 0x05 885 } 886 887AcpiExec: Added support for the new module level code behavior and the 888early region installation. This required a small change to the 889initialization, since AcpiExec must install its own operation region 890handlers. 891 892AcpiExec: Added support to make the debug object timer optional. Default 893is timer disabled. This cleans up the debug object output -- the timer 894data is rarely used. 895 896AcpiExec: Multiple ACPI tables are now loaded in the order that they 897appear on the command line. This can be important when there are 898interdependencies/references between the tables. 899 900iASL/Templates. Add support to generate template files with multiple 901SSDTs within a single output file. Also added ommand line support to 902specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 9031223, 1225. 904 905 906---------------------------------------- 90724 November 2015. Summary of changes for version 20151124: 908 9091) ACPICA kernel-resident subsystem: 910 911Fixed a possible regression for a previous update to FADT handling. The 912FADT no longer has a fixed table ID, causing some issues with code that 913was hardwired to a specific ID. Lv Zheng. 914 915Fixed a problem where the method auto-serialization could interfere with 916the current SyncLevel. This change makes the auto-serialization support 917transparent to the SyncLevel support and management. 918 919Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 920interface is intended for early access to the namespace during the 921initial namespace device discovery walk. The _SUB method has been seen to 922access operation regions in some cases, causing errors because the 923operation regions are not fully initialized. 924 925AML Debugger: Fixed some issues with the terminate/quit/exit commands 926that can cause faults. Lv Zheng. 927 928AML Debugger: Add thread ID support so that single-step mode only applies 929to the AML Debugger thread. This prevents runtime errors within some 930kernels. Lv Zheng. 931 932Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 933methods that are invoked by this interface are optional, removed warnings 934emitted for the case where one or more of these methods do not exist. 935ACPICA BZ 1208, original change by Prarit Bhargava. 936 937Made a major pass through the entire ACPICA source code base to 938standardize formatting that has diverged a bit over time. There are no 939functional changes, but this will of course cause quite a few code 940differences from the previous ACPICA release. 941 942Example Code and Data Size: These are the sizes for the OS-independent 943acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 944debug version of the code includes the debug output trace mechanism and 945has a much larger code and data size. 946 947 Current Release: 948 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 949 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 950 Previous Release: 951 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 952 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 953 954 9552) iASL Compiler/Disassembler and Tools: 956 957iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 958definition blocks within a single ASL file and the resulting AML file. 959Support for this type of file was also added to the various tools that 960use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 961example code below shows two definition blocks within the same file: 962 963 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 9640x12345678) 965 { 966 } 967 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 968 { 969 } 970 971iASL: Enhanced typechecking for the Name() operator. All expressions for 972the value of the named object must be reduced/folded to a single constant 973at compile time, as per the ACPI specification (the AML definition of 974Name()). 975 976iASL: Fixed some code indentation issues for the -ic and -ia options (C 977and assembly headers). Now all emitted code correctly begins in column 1. 978 979iASL: Added an error message for an attempt to open a Scope() on an 980object defined in an SSDT. The DSDT is always loaded into the namespace 981first, so any attempt to open a Scope on an SSDT object will fail at 982runtime. 983 984 985---------------------------------------- 98630 September 2015. Summary of changes for version 20150930: 987 9881) ACPICA kernel-resident subsystem: 989 990Debugger: Implemented several changes and bug fixes to assist support for 991the in-kernel version of the AML debugger. Lv Zheng. 992- Fix the "predefined" command for in-kernel debugger. 993- Do not enter debug command loop for the help and version commands. 994- Disallow "execute" command during execution/single-step of a method. 995 996Interpreter: Updated runtime typechecking for all operators that have 997target operands. The operand is resolved and validated that it is legal. 998For example, the target cannot be a non-data object such as a Device, 999Mutex, ThermalZone, etc., as per the ACPI specification. 1000 1001Debugger: Fixed the double-mutex user I/O handshake to work when local 1002deadlock detection is enabled. 1003 1004Debugger: limited display of method locals and arguments (LocalX and 1005ArgX) to only those that have actually been initialized. This prevents 1006lines of extraneous output. 1007 1008Updated the definition of the NFIT table to correct the bit polarity of 1009one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 1010 1011Example Code and Data Size: These are the sizes for the OS-independent 1012acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1013debug version of the code includes the debug output trace mechanism and 1014has a much larger code and data size. 1015 1016 Current Release: 1017 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1018 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 1019 Previous Release: 1020 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 1021 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 1022 1023 10242) iASL Compiler/Disassembler and Tools: 1025 1026iASL: Improved the compile-time typechecking for operands of many of the 1027ASL operators: 1028 1029-- Added an option to disable compiler operand/operator typechecking (- 1030ot). 1031 1032-- For the following operators, the TermArg operands are now validated 1033when possible to be Integer data objects: BankField, OperationRegion, 1034DataTableRegion, Buffer, and Package. 1035 1036-- Store (Source, Target): Both the source and target operands are 1037resolved and checked that the operands are both legal. For example, 1038neither operand can be a non-data object such as a Device, Mutex, 1039ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 1040operator can be used to store an object to any type of target object. 1041 1042-- Store (Source, Target): If the source is a Package object, the target 1043must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 1044is a Package, the source must also be a Package. 1045 1046-- Store (Source, Target): A warning is issued if the source and target 1047resolve to the identical named object. 1048 1049-- Store (Source, <method invocation>): An error is generated for the 1050target method invocation, as this construct is not supported by the AML 1051interpreter. 1052 1053-- For all ASL math and logic operators, the target operand must be a 1054data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 1055includes the function return value also. 1056 1057-- External declarations are also included in the typechecking where 1058possible. External objects defined using the UnknownObj keyword cannot be 1059typechecked, however. 1060 1061iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 1062operator: 1063- Legacy code: Index(PKG1, 3) 1064- New ASL+ code: PKG1[3] 1065This completes the ACPI 6.0 ASL+ support as it was the only operator not 1066supported. 1067 1068iASL: Fixed the file suffix for the preprocessor output file (.i). Two 1069spaces were inadvertently appended to the filename, causing file access 1070and deletion problems on some systems. 1071 1072ASL Test Suite (ASLTS): Updated the master makefile to generate all 1073possible compiler output files when building the test suite -- thus 1074exercising these features of the compiler. These files are automatically 1075deleted when the test suite exits. 1076 1077 1078---------------------------------------- 107918 August 2015. Summary of changes for version 20150818: 1080 10811) ACPICA kernel-resident subsystem: 1082 1083Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 1084Zheng. ACPICA BZ 1186. 1085 1086Completed development to ensure that the ACPICA Disassembler and Debugger 1087are fully standalone components of ACPICA. Removed cross-component 1088dependences. Lv Zheng. 1089 1090The max-number-of-AML-loops is now runtime configurable (previously was 1091compile-time only). This is essentially a loop timeout to force-abort 1092infinite AML loops. ACPCIA BZ 1192. 1093 1094Debugger: Cleanup output to dump ACPI names and namepaths without any 1095trailing underscores. Lv Zheng. ACPICA BZ 1135. 1096 1097Removed unnecessary conditional compilations across the Debugger and 1098Disassembler components where entire modules could be left uncompiled. 1099 1100The aapits test is deprecated and has been removed from the ACPICA git 1101tree. The test has never been completed and has not been maintained, thus 1102becoming rather useless. ACPICA BZ 1015, 794. 1103 1104A batch of small changes to close bugzilla and other reports: 1105- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 1106- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 1107- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 1108- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 1109Moore. 1110- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 1111ACPICA BZ 1184. 1112- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 1113operators. 1114- Debugger: Split debugger initialization/termination interfaces. Lv 1115Zheng. 1116- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 1117identification. 1118- AcpiExec: Add debug message during _REG method phase during table 1119load/init. 1120- AcpiNames: Fix a regression where some output was missing and no longer 1121emitted. 1122- Debugger: General cleanup and simplification. Lv Zheng. 1123- Disassembler: Cleanup use of several global option variables. Lv Zheng. 1124 1125Example Code and Data Size: These are the sizes for the OS-independent 1126acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1127debug version of the code includes the debug output trace mechanism and 1128has a much larger code and data size. 1129 1130 Current Release: 1131 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 1132 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 1133 Previous Release: 1134 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 1135 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 1136 1137 11382) iASL Compiler/Disassembler and Tools: 1139 1140AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 1141were not handled properly and caused load errors. Now, properly invoke 1142and use the ACPICA auto-reallocate mechanism for ACPI table data 1143structures. ACPICA BZ 1188 1144 1145AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 1146BZ 1190. 1147 1148AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 1149AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 1150executed during initialization. ACPICA BZ 1187, 1189. 1151 1152iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 1153that corresponds to each disassembled ASL statement, to simplify 1154debugging. ACPICA BZ 1191. 1155 1156Debugger: Add option to the "objects" command to display a summary of the 1157current namespace objects (Object type and count). This is displayed if 1158the command is entered with no arguments. 1159 1160AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 1161 1162 1163---------------------------------------- 116417 July 2015. Summary of changes for version 20150717: 1165 11661) ACPICA kernel-resident subsystem: 1167 1168Improved the partitioning between the Debugger and Disassembler 1169components. This allows the Debugger to be used standalone within kernel 1170code without the Disassembler (which is used for single stepping also). 1171This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 1172 1173Debugger: Implemented a new command to trace the execution of control 1174methods (Trace). This is especially useful for the in-kernel version of 1175the debugger when file I/O may not be available for method trace output. 1176See the ACPICA reference for more information. Lv Zheng. 1177 1178Moved all C library prototypes (used for the local versions of these 1179functions when requested) to a new header, acclib.h 1180Cleaned up the use of non-ANSI C library functions. These functions are 1181implemented locally in ACPICA. Moved all such functions to a common 1182source file, utnonansi.c 1183 1184Debugger: Fixed a problem with the "!!" command (get last command 1185executed) where the debugger could enter an infinite loop and eventually 1186crash. 1187 1188Removed the use of local macros that were used for some of the standard C 1189library functions to automatically cast input parameters. This mostly 1190affected the is* functions where the input parameter is defined to be an 1191int. This required a few modifications to the main ACPICA source code to 1192provide casting for these functions and eliminate possible compiler 1193warnings for these parameters. 1194 1195Across the source code, added additional status/error checking to resolve 1196issues discovered by static source code analysis tools such as Coverity. 1197 1198Example Code and Data Size: These are the sizes for the OS-independent 1199acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1200debug version of the code includes the debug output trace mechanism and 1201has a much larger code and data size. 1202 1203 Current Release: 1204 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 1205 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 1206 Previous Release: 1207 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 1208 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 1209 1210 12112) iASL Compiler/Disassembler and Tools: 1212 1213iASL: Fixed a regression where the device map file feature no longer 1214worked properly when used in conjunction with the disassembler. It only 1215worked properly with the compiler itself. 1216 1217iASL: Implemented a new warning for method LocalX variables that are set 1218but never used (similar to a C compiler such as gcc). This also applies 1219to ArgX variables that are not defined by the parent method, and are 1220instead (legally) used as local variables. 1221 1222iASL/Preprocessor: Finished the pass-through of line numbers from the 1223preprocessor to the compiler. This ensures that compiler errors/warnings 1224have the correct original line numbers and filenames, regardless of any 1225#include files. 1226 1227iASL/Preprocessor: Fixed a couple of issues with comment handling and the 1228pass-through of comments to the preprocessor output file (which becomes 1229the compiler input file). Also fixed a problem with // comments that 1230appear after a math expression. 1231 1232iASL: Added support for the TCPA server table to the table compiler and 1233template generator. (The client table was already previously supported) 1234 1235iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 1236identify the iASL compiler. 1237 1238Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 1239multiple times. The new names are ACPI_SIGN_NEGATIVE and 1240ACPI_SIGN_POSITIVE. 1241 1242AcpiHelp: Update to expand help messages for the iASL preprocessor 1243directives. 1244 1245 1246---------------------------------------- 124719 June 2015. Summary of changes for version 20150619: 1248 1249Two regressions in version 20150616 have been addressed: 1250 1251Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 1252etc.) This update changes ACPICA to only use the standard headers for 1253functions, or the prototypes for the local versions of the C library 1254functions. Across the source code, this required some additional casts 1255for some Clib invocations for portability. Moved all local prototypes to 1256a new file, acclib.h 1257 1258Fixes several problems with recent changes to the handling of the FACS 1259table that could cause some systems not to boot. 1260 1261 1262---------------------------------------- 126316 June 2015. Summary of changes for version 20150616: 1264 1265 12661) ACPICA kernel-resident subsystem: 1267 1268Across the entire ACPICA source code base, the various macros for the C 1269library functions (such as ACPI_STRLEN, etc.) have been removed and 1270replaced by the standard C library names (strlen, etc.) The original 1271purpose for these macros is no longer applicable. This simplification 1272reduces the number of macros used in the ACPICA source code 1273significantly, improving readability and maintainability. 1274 1275Implemented support for a new ACPI table, the OSDT. This table, the 1276"override" SDT, can be loaded directly by the host OS at boot time. It 1277enables the replacement of existing namespace objects that were installed 1278via the DSDT and/or SSDTs. The primary purpose for this is to replace 1279buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 1280for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 1281Moore. 1282 1283Added support for systems with (improperly) two FACS tables -- a "32-bit" 1284table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 1285X field). This change will support both automatically. There continues to 1286be systems found with this issue. This support requires a change to the 1287AcpiSetFirmwareWakingVector interface. Also, a public global variable has 1288been added to allow the host to select which FACS is desired 1289(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 1290details Lv Zheng. 1291 1292Added a new feature to allow for systems that do not contain an FACS. 1293Although this is already supported on hardware-reduced platforms, the 1294feature has been extended for all platforms. The reasoning is that we do 1295not want to abort the entire ACPICA initialization just because the 1296system is seriously buggy and has no FACS. 1297 1298Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 1299not correctly transcribed from the ACPI specification in ACPICA version 130020150515. 1301 1302Implemented support for the _CLS object in the AcpiGetObjectInfo external 1303interface. 1304 1305Updated the definitions of the TCPA and TPM2 ACPI tables to the more 1306recent TCG ACPI Specification, December 14, 2014. Table disassembler and 1307compiler also updated. Note: The TCPA "server" table is not supported by 1308the disassembler/table-compiler at this time. 1309 1310ACPI 6.0: Added definitions for the new GIC version field in the MADT. 1311 1312Example Code and Data Size: These are the sizes for the OS-independent 1313acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1314debug version of the code includes the debug output trace mechanism and 1315has a much larger code and data size. 1316 1317 Current Release: 1318 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 1319 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 1320 Previous Release: 1321 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 1322 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 1323 1324 13252) iASL Compiler/Disassembler and Tools: 1326 1327Disassembler: Fixed a problem with the new symbolic operator disassembler 1328where incorrect ASL code could be emitted in some cases for the "non- 1329commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 1330ShiftRight. The actual problem cases seem to be rather unusual in common 1331ASL code, however. David Box. 1332 1333Modified the linux version of acpidump to obtain ACPI tables from not 1334just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 1335Zheng. 1336 1337iASL: Fixed a problem where the user preprocessor output file (.i) 1338contained extra data that was not expected. The compiler was using this 1339file as a temporary file and passed through #line directives in order to 1340keep compiler error messages in sync with the input file and line number 1341across multiple include files. The (.i) is no longer a temporary file as 1342the compiler uses a new, different file for the original purpose. 1343 1344iASL: Fixed a problem where comments within the original ASL source code 1345file were not passed through to the preprocessor output file, nor any 1346listing files. 1347 1348iASL: Fixed some issues for the handling of the "#include" preprocessor 1349directive and the similar (but not the same) "Include" ASL operator. 1350 1351iASL: Add support for the new OSDT in both the disassembler and compiler. 1352 1353iASL: Fixed a problem with the constant folding support where a Buffer 1354object could be incorrectly generated (incorrectly formed) during a 1355conversion to a Store() operator. 1356 1357AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 1358description text for the _REV predefined name. _REV now permanently 1359returns 2, as per the ACPI 6.0 specification. 1360 1361Debugger: Enhanced the output of the Debug ASL object for references 1362produced by the Index operator. For Buffers and strings, only output the 1363actual byte pointed to by the index. For packages, only print the single 1364package element decoded by the index. Previously, the entire 1365buffer/string/package was emitted. 1366 1367iASL/Table-compiler: Fixed a regression where the "generic" data types 1368were no longer recognized, causing errors. 1369 1370 1371---------------------------------------- 137215 May 2015. Summary of changes for version 20150515: 1373 1374This release implements most of ACPI 6.0 as described below. 1375 13761) ACPICA kernel-resident subsystem: 1377 1378Implemented runtime argument checking and return value checking for all 1379new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 1380_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 1381 1382Example Code and Data Size: These are the sizes for the OS-independent 1383acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1384debug version of the code includes the debug output trace mechanism and 1385has a much larger code and data size. 1386 1387 Current Release: 1388 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 1389 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 1390 Previous Release: 1391 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 1392 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 1393 1394 13952) iASL Compiler/Disassembler and Tools: 1396 1397iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 1398names (argument count validation and return value typechecking.) 1399 1400iASL disassembler and table compiler: implemented support for all new 1401ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 1402 1403iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 1404tables: FADT, MADT. 1405 1406iASL preprocessor: Added a new directive to enable inclusion of binary 1407blobs into ASL code. The new directive is #includebuffer. It takes a 1408binary file as input and emits a named ascii buffer object into the ASL 1409code. 1410 1411AcpiHelp: Added support for all new ACPI 6.0 predefined names. 1412 1413AcpiHelp: Added a new option, -d, to display all iASL preprocessor 1414directives. 1415 1416AcpiHelp: Added a new option, -t, to display all known/supported ACPI 1417tables. 1418 1419 1420---------------------------------------- 142110 April 2015. Summary of changes for version 20150410: 1422 1423Reverted a change introduced in version 20150408 that caused 1424a regression in the disassembler where incorrect operator 1425symbols could be emitted. 1426 1427 1428---------------------------------------- 142908 April 2015. Summary of changes for version 20150408: 1430 1431 14321) ACPICA kernel-resident subsystem: 1433 1434Permanently set the return value for the _REV predefined name. It now 1435returns 2 (was 5). This matches other ACPI implementations. _REV will be 1436deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 1437for ACPI 2.0 and later. It should never be used to differentiate or 1438identify operating systems. 1439 1440Added the "Windows 2015" string to the _OSI support. ACPICA will now 1441return TRUE to a query with this string. 1442 1443Fixed several issues with the local version of the printf function. 1444 1445Added the C99 compiler option (-std=c99) to the Unix makefiles. 1446 1447 Current Release: 1448 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 1449 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 1450 Previous Release: 1451 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1452 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1453 1454 14552) iASL Compiler/Disassembler and Tools: 1456 1457iASL: Implemented an enhancement to the constant folding feature to 1458transform the parse tree to a simple Store operation whenever possible: 1459 Add (2, 3, X) ==> is converted to: Store (5, X) 1460 X = 2 + 3 ==> is converted to: Store (5, X) 1461 1462Updated support for the SLIC table (Software Licensing Description Table) 1463in both the Data Table compiler and the disassembler. The SLIC table 1464support now conforms to "Microsoft Software Licensing Tables (SLIC and 1465MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 1466following the ACPI header is now defined to be "Proprietary Data", and as 1467such, can only be entered or displayed as a hex data block. 1468 1469Implemented full support for the MSDM table as described in the document 1470above. Note: The format of MSDM is similar to SLIC. Any MSDM data 1471following the ACPI header is defined to be "Proprietary Data", and can 1472only be entered or displayed as a hex data block. 1473 1474Implemented the -Pn option for the iASL Table Compiler (was only 1475implemented for the ASL compiler). This option disables the iASL 1476preprocessor. 1477 1478Disassembler: For disassembly of Data Tables, added a comment field 1479around the Ascii equivalent data that is emitted as part of the "Raw 1480Table Data" block. This prevents the iASL Preprocessor from possible 1481confusion if/when the table is compiled. 1482 1483Disassembler: Added an option (-df) to force the disassembler to assume 1484that the table being disassembled contains valid AML. This feature is 1485useful for disassembling AML files that contain ACPI signatures other 1486than DSDT or SSDT (such as OEMx or other signatures). 1487 1488Changes for the EFI version of the tools: 14891) Fixed a build error/issue 14902) Fixed a cast warning 1491 1492iASL: Fixed a path issue with the __FILE__ operator by making the 1493directory prefix optional within the internal SplitInputFilename 1494function. 1495 1496Debugger: Removed some unused global variables. 1497 1498Tests: Updated the makefile for proper generation of the AAPITS suite. 1499 1500 1501---------------------------------------- 150204 February 2015. Summary of changes for version 20150204: 1503 1504ACPICA kernel-resident subsystem: 1505 1506Updated all ACPICA copyrights and signons to 2014. Added the 2014 1507copyright to all module headers and signons, including the standard Linux 1508header. This affects virtually every file in the ACPICA core subsystem, 1509iASL compiler, all ACPICA utilities, and the test suites. 1510 1511Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 1512A raw gpe handling mechanism was created to allow better handling of GPE 1513storms that aren't easily managed by the normal handler. The raw handler 1514allows disabling/renabling of the the GPE so that interrupt storms can be 1515avoided in cases where events cannot be timely serviced. In this 1516scenario, handlers should use the AcpiSetGpe() API to disable/enable the 1517GPE. This API will leave the reference counts undisturbed, thereby 1518preventing unintentional clearing of the GPE when the intent in only to 1519temporarily disable it. Raw handlers allow enabling and disabling of a 1520GPE by removing GPE register locking. As such, raw handlers much provide 1521their own locks while using GPE API's to protect access to GPE data 1522structures. 1523Lv Zheng 1524 1525Events: Always modify GPE registers under the GPE lock. 1526Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 1527values. Reported as bug by joe.liu@apple.com. 1528 1529Unix makefiles: Separate option to disable optimizations and 1530_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 1531NOOPT disable option and creates a separate flag (NOFORTIFY) for this 1532purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 1533errors when building ACPICA. This allows disabling the option without 1534also having to disable optimazations. 1535David Box 1536 1537 Current Release: 1538 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1539 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 1540 1541-- 1542-------------------------------------- 154307 November 2014. Summary of changes for version 20141107: 1544 1545This release is available at https://acpica.org/downloads 1546 1547This release introduces and implements language extensions to ASL that 1548provide support for symbolic ("C-style") operators and expressions. These 1549language extensions are known collectively as ASL+. 1550 1551 15521) iASL Compiler/Disassembler and Tools: 1553 1554Disassembler: Fixed a problem with disassembly of the UartSerialBus 1555macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 1556Box. 1557 1558Disassembler: Fixed the Unicode macro support to add escape sequences. 1559All non-printable ASCII values are emitted as escape sequences, as well 1560as the standard escapes for quote and backslash. Ensures that the 1561disassembled macro can be correctly recompiled. 1562 1563iASL: Added Printf/Fprintf macros for formatted output. These macros are 1564translated to existing AML Concatenate and Store operations. Printf 1565writes to the ASL Debug object. Fprintf allows the specification of an 1566ASL name as the target. Only a single format specifier is required, %o, 1567since the AML interpreter dynamically converts objects to the required 1568type. David E. Box. 1569 1570 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 1571 (Concatenate (Concatenate (Concatenate ("", Arg0), 1572 ": Unexpected value for "), Arg1), ", "), Arg2), 1573 " at line "), Arg3), Debug) 1574 1575 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 1576 Arg0, Arg1, Arg2, Arg3) 1577 1578 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 1579 ("", Arg1), ": "), Arg0), " Successful"), STR1) 1580 1581 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 1582 1583iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 1584ASL parse tree before the AML code is generated. This allows blocks of 1585ASL code to be removed in order to help locate and identify problem 1586devices and/or code. David E. Box. 1587 1588AcpiExec: Added support (-fi) for an optional namespace object 1589initialization file. This file specifies initial values for namespace 1590objects as necessary for debugging and testing different ASL code paths 1591that may be taken as a result of BIOS options. 1592 1593 15942) Overview of symbolic operator support for ASL (ASL+) 1595------------------------------------------------------- 1596 1597As an extension to the ASL language, iASL implements support for symbolic 1598(C-style) operators for math and logical expressions. This can greatly 1599simplify ASL code as well as improve both readability and 1600maintainability. These language extensions can exist concurrently with 1601all legacy ASL code and expressions. 1602 1603The symbolic extensions are 100% compatible with existing AML 1604interpreters, since no new AML opcodes are created. To implement the 1605extensions, the iASL compiler transforms the symbolic expressions into 1606the legacy ASL/AML equivalents at compile time. 1607 1608Full symbolic expressions are supported, along with the standard C 1609precedence and associativity rules. 1610 1611Full disassembler support for the symbolic expressions is provided, and 1612creates an automatic migration path for existing ASL code to ASL+ code 1613via the disassembly process. By default, the disassembler now emits ASL+ 1614code with symbolic expressions. An option (-dl) is provided to force the 1615disassembler to emit legacy ASL code if desired. 1616 1617Below is the complete list of the currently supported symbolic operators 1618with examples. See the iASL User Guide for additional information. 1619 1620 1621ASL+ Syntax Legacy ASL Equivalent 1622----------- --------------------- 1623 1624 // Math operators 1625 1626Z = X + Y Add (X, Y, Z) 1627Z = X - Y Subtract (X, Y, Z) 1628Z = X * Y Multiply (X, Y, Z) 1629Z = X / Y Divide (X, Y, , Z) 1630Z = X % Y Mod (X, Y, Z) 1631Z = X << Y ShiftLeft (X, Y, Z) 1632Z = X >> Y ShiftRight (X, Y, Z) 1633Z = X & Y And (X, Y, Z) 1634Z = X | Y Or (X, Y, Z) 1635Z = X ^ Y Xor (X, Y, Z) 1636Z = ~X Not (X, Z) 1637X++ Increment (X) 1638X-- Decrement (X) 1639 1640 // Logical operators 1641 1642(X == Y) LEqual (X, Y) 1643(X != Y) LNotEqual (X, Y) 1644(X < Y) LLess (X, Y) 1645(X > Y) LGreater (X, Y) 1646(X <= Y) LLessEqual (X, Y) 1647(X >= Y) LGreaterEqual (X, Y) 1648(X && Y) LAnd (X, Y) 1649(X || Y) LOr (X, Y) 1650(!X) LNot (X) 1651 1652 // Assignment and compound assignment operations 1653 1654X = Y Store (Y, X) 1655X += Y Add (X, Y, X) 1656X -= Y Subtract (X, Y, X) 1657X *= Y Multiply (X, Y, X) 1658X /= Y Divide (X, Y, , X) 1659X %= Y Mod (X, Y, X) 1660X <<= Y ShiftLeft (X, Y, X) 1661X >>= Y ShiftRight (X, Y, X) 1662X &= Y And (X, Y, X) 1663X |= Y Or (X, Y, X) 1664X ^= Y Xor (X, Y, X) 1665 1666 16673) ASL+ Examples: 1668----------------- 1669 1670Legacy ASL: 1671 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 1672 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 16730x03FB), 1674 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 1675 { 1676 And (MEMB, 0xFFFFFFF0, SRMB) 1677 Store (MEMB, Local2) 1678 Store (PDBM, Local1) 1679 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 1680 Store (SRMB, MEMB) 1681 Or (PDBM, 0x02, PDBM) 1682 } 1683 1684ASL+ version: 1685 If (((R510 & 0x03FB) == 0x02E0) || 1686 ((R520 & 0x03FB) == 0x02E0) || 1687 ((R530 & 0x03FB) == 0x02E0) || 1688 ((R540 & 0x03FB) == 0x02E0)) 1689 { 1690 SRMB = (MEMB & 0xFFFFFFF0) 1691 Local2 = MEMB 1692 Local1 = PDBM 1693 PDBM &= 0xFFFFFFFFFFFFFFF9 1694 MEMB = SRMB 1695 PDBM |= 0x02 1696 } 1697 1698Legacy ASL: 1699 Store (0x1234, Local1) 1700 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 1701 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 1702 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 1703 Store (Index (PKG1, 0x03), Local6) 1704 Store (Add (Local3, Local2), Debug) 1705 Add (Local1, 0x0F, Local2) 1706 Add (Local1, Multiply (Local2, Local3), Local2) 1707 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 1708 1709ASL+ version: 1710 Local1 = 0x1234 1711 Local3 = (((Local1 + TEST) + 0x20) * Local2) 1712 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 1713 Local3 = (Local1 + (TEST + (0x20 * Local2))) 1714 Local6 = Index (PKG1, 0x03) 1715 Debug = (Local3 + Local2) 1716 Local2 = (Local1 + 0x0F) 1717 Local2 = (Local1 + (Local2 * Local3)) 1718 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 1719 1720 1721---------------------------------------- 172226 September 2014. Summary of changes for version 20140926: 1723 17241) ACPICA kernel-resident subsystem: 1725 1726Updated the GPIO operation region handler interface (GeneralPurposeIo). 1727In order to support GPIO Connection objects with multiple pins, along 1728with the related Field objects, the following changes to the interface 1729have been made: The Address is now defined to be the offset in bits of 1730the field unit from the previous invocation of a Connection. It can be 1731viewed as a "Pin Number Index" into the connection resource descriptor. 1732The BitWidth is the exact bit width of the field. It is usually one bit, 1733but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 1734additional information and examples. 1735 1736GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 1737corresponding _Lxx/_Exx methods are disabled (they may have been enabled 1738by the firmware), so that they cannot fire until they are enabled via 1739AcpiUpdateAllGpes. Rafael J. Wysocki. 1740 1741Added a new return flag for the Event/GPE status interfaces -- 1742AcpiGetEventStatus and AcpiGetGpeStatus. The new 1743ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 1744GPE currently has a handler associated with it, and can thus actually 1745affect the system. Lv Zheng. 1746 1747Example Code and Data Size: These are the sizes for the OS-independent 1748acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1749debug version of the code includes the debug output trace mechanism and 1750has a much larger code and data size. 1751 1752 Current Release: 1753 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 1754 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 1755 Previous Release: 1756 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1757 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1758 17592) iASL Compiler/Disassembler and Tools: 1760 1761iASL: Fixed a memory allocation/free regression introduced in 20140828 1762that could cause the compiler to crash. This was introduced inadvertently 1763during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 17641113. 1765 1766iASL: Removed two error messages that have been found to create false 1767positives, until they can be fixed and fully validated (ACPICA BZ 1112): 17681) Illegal forward reference within a method 17692) Illegal reference across two methods 1770 1771iASL: Implemented a new option (-lm) to create a hardware mapping file 1772that summarizes all GPIO, I2C, SPI, and UART connections. This option 1773works for both the compiler and disassembler. See the iASL compiler user 1774guide for additional information and examples (section 6.4.6). 1775 1776AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 1777version 2. This corrects the AE_BAD_HEADER exception seen on systems with 1778a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 1779 1780AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 1781unless STDIN is actually a terminal. Assists with batch-mode processing. 1782ACPICA BZ 1114. 1783 1784Disassembler/AcpiHelp: Added another large group of recognized _HID 1785values. 1786 1787 1788---------------------------------------- 178928 August 2014. Summary of changes for version 20140828: 1790 17911) ACPICA kernel-resident subsystem: 1792 1793Fixed a problem related to the internal use of the Timer() operator where 1794a 64-bit divide could cause an attempted link to a double-precision math 1795library. This divide is not actually necessary, so the code was 1796restructured to eliminate it. Lv Zheng. 1797 1798ACPI 5.1: Added support for the runtime validation of the _DSD package 1799(similar to the iASL support). 1800 1801ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 1802SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 1803 1804Example Code and Data Size: These are the sizes for the OS-independent 1805acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1806debug version of the code includes the debug output trace mechanism and 1807has a much larger code and data size. 1808 1809 Current Release: 1810 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1811 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1812 Previous Release: 1813 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 1814 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 1815 18162) iASL Compiler/Disassembler and Tools: 1817 1818AcpiExec: Fixed a problem on unix systems where the original terminal 1819state was not always properly restored upon exit. Seen when using the -v 1820option. ACPICA BZ 1104. 1821 1822iASL: Fixed a problem with the validation of the ranges/length within the 1823Memory24 resource descriptor. There was a boundary condition when the 1824range was equal to the (length -1) caused by the fact that these values 1825are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 1826 1827Disassembler: Fixed a problem with the GpioInt descriptor interrupt 1828polarity 1829flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 1830is 1831now supported properly. 1832 1833ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 1834in the disassembler, data table compiler, and table template generator. 1835 1836iASL: Added a requirement for Device() objects that one of either a _HID 1837or _ADR must exist within the scope of a Device, as per the ACPI 1838specification. Remove a similar requirement that was incorrectly in place 1839for the _DSD object. 1840 1841iASL: Added error detection for illegal named references within control 1842methods that would cause runtime failures. Now trapped as errors are: 1) 1843References to objects within a non-parent control method. 2) Forward 1844references (within a method) -- for control methods, AML interpreters use 1845a one-pass parse of control methods. ACPICA BZ 1008. 1846 1847iASL: Added error checking for dependencies related to the _PSx power 1848methods. ACPICA BZ 1029. 18491) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 1850_PS3. 18512) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 1852scope. 1853 1854iASL and table compiler: Cleanup miscellaneous memory leaks by fully 1855deploying the existing object and string caches and adding new caches for 1856the table compiler. 1857 1858iASL: Split the huge parser source file into multiple subfiles to improve 1859manageability. Generation now requires the M4 macro preprocessor, which 1860is part of the Bison distribution on both unix and windows platforms. 1861 1862AcpiSrc: Fixed and removed all extraneous warnings generated during 1863entire ACPICA source code scan and/or conversion. 1864 1865 1866---------------------------------------- 1867 186824 July 2014. Summary of changes for version 20140724: 1869 1870The ACPI 5.1 specification has been released and is available at: 1871http://uefi.org/specs/access 1872 1873 18740) ACPI 5.1 support in ACPICA: 1875 1876ACPI 5.1 is fully supported in ACPICA as of this release. 1877 1878New predefined names. Support includes iASL and runtime ACPICA 1879validation. 1880 _CCA (Cache Coherency Attribute). 1881 _DSD (Device-Specific Data). David Box. 1882 1883Modifications to existing ACPI tables. Support includes headers, iASL 1884Data Table compiler, disassembler, and the template generator. 1885 FADT - New fields and flags. Graeme Gregory. 1886 GTDT - One new subtable and new fields. Tomasz Nowicki. 1887 MADT - Two new subtables. Tomasz Nowicki. 1888 PCCT - One new subtable. 1889 1890Miscellaneous. 1891 New notification type for System Resource Affinity change events. 1892 1893 18941) ACPICA kernel-resident subsystem: 1895 1896Fixed a regression introduced in 20140627 where a fault can happen during 1897the deletion of Alias AML namespace objects. The problem affected both 1898the core ACPICA and the ACPICA tools including iASL and AcpiExec. 1899 1900Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 1901simple mechanism to enable wake GPEs that have no associated handler or 1902control method. Rafael Wysocki. 1903 1904Updated the AcpiEnableGpe interface to disallow the enable if there is no 1905handler or control method associated with the particular GPE. This will 1906help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 1907 1908Updated GPE handling and dispatch by disabling the GPE before clearing 1909the status bit for edge-triggered GPEs. Lv Zheng. 1910 1911Added Timer() support to the AML Debug object. The current timer value is 1912now displayed with each invocation of (Store to) the debug object to 1913enable simple generation of execution times for AML code (method 1914execution for example.) ACPICA BZ 1093. 1915 1916Example Code and Data Size: These are the sizes for the OS-independent 1917acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1918debug version of the code includes the debug output trace mechanism and 1919has a much larger code and data size. 1920 1921 Current Release: 1922 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 1923 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 1924 Previous Release: 1925 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 1926 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 1927 1928 19292) iASL Compiler/Disassembler and Tools: 1930 1931Fixed an issue with the recently added local printf implementation, 1932concerning width/precision specifiers that could cause incorrect output. 1933Lv Zheng. ACPICA BZ 1094. 1934 1935Disassembler: Added support to detect buffers that contain UUIDs and 1936disassemble them to an invocation of the ToUUID operator. Also emit 1937commented descriptions of known ACPI-related UUIDs. 1938 1939AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 1940-u. Adds three new files. 1941 1942iASL: Update table compiler and disassembler for DMAR table changes that 1943were introduced in September 2013. With assistance by David Woodhouse. 1944 1945---------------------------------------- 194627 June 2014. Summary of changes for version 20140627: 1947 19481) ACPICA kernel-resident subsystem: 1949 1950Formatted Output: Implemented local versions of standard formatted output 1951utilities such as printf, etc. Over time, it has been discovered that 1952there are in fact many portability issues with printf, and the addition 1953of this feature will fix/prevent these issues once and for all. Some 1954known issues are summarized below: 1955 19561) Output of 64-bit values is not portable. For example, UINT64 is %ull 1957for the Linux kernel and is %uI64 for some MSVC versions. 19582) Invoking printf consistently in a manner that is portable across both 195932-bit and 64-bit platforms is difficult at best in many situations. 19603) The output format for pointers varies from system to system (leading 1961zeros especially), and leads to inconsistent output from ACPICA across 1962platforms. 19634) Certain platform-specific printf formats may conflict with ACPICA use. 19645) If there is no local C library available, ACPICA now has local support 1965for printf. 1966 1967-- To address these printf issues in a complete manner, ACPICA now 1968directly implements a small subset of printf format specifiers, only 1969those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 1970 1971Implemented support for ACPICA generation within the EFI environment. 1972Initially, the AcpiDump utility is supported in the UEFI shell 1973environment. Lv Zheng. 1974 1975Added a new external interface, AcpiLogError, to improve ACPICA 1976portability. This allows the host to redirect error messages from the 1977ACPICA utilities. Lv Zheng. 1978 1979Added and deployed new OSL file I/O interfaces to improve ACPICA 1980portability: 1981 AcpiOsOpenFile 1982 AcpiOsCloseFile 1983 AcpiOsReadFile 1984 AcpiOsWriteFile 1985 AcpiOsGetFileOffset 1986 AcpiOsSetFileOffset 1987There are C library implementations of these functions in the new file 1988service_layers/oslibcfs.c -- however, the functions can be implemented by 1989the local host in any way necessary. Lv Zheng. 1990 1991Implemented a mechanism to disable/enable ACPI table checksum validation 1992at runtime. This can be useful when loading tables very early during OS 1993initialization when it may not be possible to map the entire table in 1994order to compute the checksum. Lv Zheng. 1995 1996Fixed a buffer allocation issue for the Generic Serial Bus support. 1997Originally, a fixed buffer length was used. This change allows for 1998variable-length buffers based upon the protocol indicated by the field 1999access attributes. Reported by Lan Tianyu. Lv Zheng. 2000 2001Fixed a problem where an object detached from a namespace node was not 2002properly terminated/cleared and could cause a circular list problem if 2003reattached. ACPICA BZ 1063. David Box. 2004 2005Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 2006 2007Fixed a possible memory leak in an error return path within the function 2008AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 2009 2010Example Code and Data Size: These are the sizes for the OS-independent 2011acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2012debug version of the code includes the debug output trace mechanism and 2013has a much larger code and data size. 2014 2015 Current Release: 2016 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 2017 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 2018 Previous Release: 2019 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 2020 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 2021 2022 20232) iASL Compiler/Disassembler and Tools: 2024 2025Disassembler: Add dump of ASCII equivalent text within a comment at the 2026end of each line of the output for the Buffer() ASL operator. 2027 2028AcpiDump: Miscellaneous changes: 2029 Fixed repetitive table dump in -n mode. 2030 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 2031the ACPI 2.0 GUID fails. 2032 2033iASL: Fixed a problem where the compiler could fault if incorrectly given 2034an acpidump output file as input. ACPICA BZ 1088. David Box. 2035 2036AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 2037they are invoked without any arguments. 2038 2039Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 20401086. Colin Ian King. 2041 2042Disassembler: Cleaned up a block of code that extracts a parent Op 2043object. Added a comment that explains that the parent is guaranteed to be 2044valid in this case. ACPICA BZ 1069. 2045 2046 2047---------------------------------------- 204824 April 2014. Summary of changes for version 20140424: 2049 20501) ACPICA kernel-resident subsystem: 2051 2052Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 2053Some of these tables are known to contain a trailing NULL entry. Lv 2054Zheng. 2055 2056Removed an extraneous error message for the case where there are a large 2057number of system GPEs (> 124). This was the "32-bit FADT register is too 2058long to convert to GAS struct" message, which is irrelevant for GPEs 2059since the GPEx_BLK_LEN fields of the FADT are always used instead of the 2060(limited capacity) GAS bit length. Also, several changes to ensure proper 2061support for GPE numbers > 255, where some "GPE number" fields were 8-bits 2062internally. 2063 2064Implemented and deployed additional configuration support for the public 2065ACPICA external interfaces. Entire classes of interfaces can now be 2066easily modified or configured out, replaced by stubbed inline functions 2067by default. Lv Zheng. 2068 2069Moved all public ACPICA runtime configuration globals to the public 2070ACPICA external interface file for convenience. Also, removed some 2071obsolete/unused globals. See the file acpixf.h. Lv Zheng. 2072 2073Documentation: Added a new section to the ACPICA reference describing the 2074maximum number of GPEs that can be supported by the FADT-defined GPEs in 2075block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 2076reference. 2077 2078Example Code and Data Size: These are the sizes for the OS-independent 2079acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2080debug version of the code includes the debug output trace mechanism and 2081has a much larger code and data size. 2082 2083 Current Release: 2084 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 2085 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 2086 Previous Release: 2087 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 2088 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 2089 2090 20912) iASL Compiler/Disassembler and Tools: 2092 2093iASL and disassembler: Add full support for the LPIT table (Low Power 2094Idle Table). Includes support in the disassembler, data table compiler, 2095and template generator. 2096 2097AcpiDump utility: 20981) Add option to force the use of the RSDT (over the XSDT). 20992) Improve validation of the RSDP signature (use 8 chars instead of 4). 2100 2101iASL: Add check for predefined packages that are too large. For 2102predefined names that contain subpackages, check if each subpackage is 2103too large. (Check for too small already exists.) 2104 2105Debugger: Updated the GPE command (which simulates a GPE by executing the 2106GPE code paths in ACPICA). The GPE device is now optional, and defaults 2107to the GPE 0/1 FADT-defined blocks. 2108 2109Unix application OSL: Update line-editing support. Add additional error 2110checking and take care not to reset terminal attributes on exit if they 2111were never set. This should help guarantee that the terminal is always 2112left in the previous state on program exit. 2113 2114 2115---------------------------------------- 211625 March 2014. Summary of changes for version 20140325: 2117 21181) ACPICA kernel-resident subsystem: 2119 2120Updated the auto-serialize feature for control methods. This feature 2121automatically serializes all methods that create named objects in order 2122to prevent runtime errors. The update adds support to ignore the 2123currently executing AML SyncLevel when invoking such a method, in order 2124to prevent disruption of any existing SyncLevel priorities that may exist 2125in the AML code. Although the use of SyncLevels is relatively rare, this 2126change fixes a regression where an AE_AML_MUTEX_ORDER exception can 2127appear on some machines starting with the 20140214 release. 2128 2129Added a new external interface to allow the host to install ACPI tables 2130very early, before the namespace is even created. AcpiInstallTable gives 2131the host additional flexibility for ACPI table management. Tables can be 2132installed directly by the host as if they had originally appeared in the 2133XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 2134(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 2135with additional internal restructuring and cleanup. See the ACPICA 2136Reference for interface details. Lv Zheng. 2137 2138Added validation of the checksum for all incoming dynamically loaded 2139tables (via external interfaces or via AML Load/LoadTable operators). Lv 2140Zheng. 2141 2142Updated the use of the AcpiOsWaitEventsComplete interface during Notify 2143and GPE handler removal. Restructured calls to eliminate possible race 2144conditions. Lv Zheng. 2145 2146Added a warning for the use/execution of the ASL/AML Unload (table) 2147operator. This will help detect and identify machines that use this 2148operator if and when it is ever used. This operator has never been seen 2149in the field and the usage model and possible side-effects of the drastic 2150runtime action of a full table removal are unknown. 2151 2152Reverted the use of #pragma push/pop which was introduced in the 20140214 2153release. It appears that push and pop are not implemented by enough 2154compilers to make the use of this feature feasible for ACPICA at this 2155time. However, these operators may be deployed in a future ACPICA 2156release. 2157 2158Added the missing EXPORT_SYMBOL macros for the install and remove SCI 2159handler interfaces. 2160 2161Source code generation: 21621) Disabled the use of the "strchr" macro for the gcc-specific 2163generation. For some versions of gcc, this macro can periodically expose 2164a compiler bug which in turn causes compile-time error(s). 21652) Added support for PPC64 compilation. Colin Ian King. 2166 2167Example Code and Data Size: These are the sizes for the OS-independent 2168acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2169debug version of the code includes the debug output trace mechanism and 2170has a much larger code and data size. 2171 2172 Current Release: 2173 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 2174 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 2175 Previous Release: 2176 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 2177 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 2178 2179 21802) iASL Compiler/Disassembler and Tools: 2181 2182Disassembler: Added several new features to improve the readability of 2183the resulting ASL code. Extra information is emitted within comment 2184fields in the ASL code: 21851) Known _HID/_CID values are decoded to descriptive text. 21862) Standard values for the Notify() operator are decoded to descriptive 2187text. 21883) Target operands are expanded to full pathnames (in a comment) when 2189possible. 2190 2191Disassembler: Miscellaneous updates for extern() handling: 21921) Abort compiler if file specified by -fe option does not exist. 21932) Silence unnecessary warnings about argument count mismatches. 21943) Update warning messages concerning unresolved method externals. 21954) Emit "UnknownObj" keyword for externals whose type cannot be 2196determined. 2197 2198AcpiHelp utility: 21991) Added the -a option to display both the ASL syntax and the AML 2200encoding for an input ASL operator. This effectively displays all known 2201information about an ASL operator with one AcpiHelp invocation. 22022) Added substring match support (similar to a wildcard) for the -i 2203(_HID/PNP IDs) option. 2204 2205iASL/Disassembler: Since this tool does not yet support execution on big- 2206endian machines, added detection of endianness and an error message if 2207execution is attempted on big-endian. Support for big-endian within iASL 2208is a feature that is on the ACPICA to-be-done list. 2209 2210AcpiBin utility: 22111) Remove option to extract binary files from an acpidump; this function 2212is made obsolete by the AcpiXtract utility. 22132) General cleanup of open files and allocated buffers. 2214 2215 2216---------------------------------------- 221714 February 2014. Summary of changes for version 20140214: 2218 22191) ACPICA kernel-resident subsystem: 2220 2221Implemented a new mechanism to proactively prevent problems with ill- 2222behaved reentrant control methods that create named ACPI objects. This 2223behavior is illegal as per the ACPI specification, but is nonetheless 2224frequently seen in the field. Previously, this could lead to an 2225AE_ALREADY_EXISTS exception if the method was actually entered by more 2226than one thread. This new mechanism detects such methods at table load 2227time and marks them "serialized" to prevent reentrancy. A new global 2228option, AcpiGbl_AutoSerializeMethods, has been added to disable this 2229feature if desired. This mechanism and global option obsoletes and 2230supersedes the previous AcpiGbl_SerializeAllMethods option. 2231 2232Added the "Windows 2013" string to the _OSI support. ACPICA will now 2233respond TRUE to _OSI queries with this string. It is the stated policy of 2234ACPICA to add new strings to the _OSI support as soon as possible after 2235they are defined. See the full ACPICA _OSI policy which has been added to 2236the utilities/utosi.c file. 2237 2238Hardened/updated the _PRT return value auto-repair code: 22391) Do not abort the repair on a single subpackage failure, continue to 2240check all subpackages. 22412) Add check for the minimum subpackage length (4). 22423) Properly handle extraneous NULL package elements. 2243 2244Added support to avoid the possibility of infinite loops when traversing 2245object linked lists. Never allow an infinite loop, even in the face of 2246corrupted object lists. 2247 2248ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 2249pack(pop) directives to ensure that the ACPICA headers are independent of 2250compiler settings or other host headers. 2251 2252Example Code and Data Size: These are the sizes for the OS-independent 2253acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2254debug version of the code includes the debug output trace mechanism and 2255has a much larger code and data size. 2256 2257 Current Release: 2258 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 2259 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 2260 Previous Release: 2261 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 2262 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 2263 2264 22652) iASL Compiler/Disassembler and Tools: 2266 2267iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 2268first reserved field was incorrectly forced to have a value of zero. This 2269change correctly forces the field to have a value of one. ACPICA BZ 1081. 2270 2271Debugger: Added missing support for the "Extra" and "Data" subobjects 2272when displaying object data. 2273 2274Debugger: Added support to display entire object linked lists when 2275displaying object data. 2276 2277iASL: Removed the obsolete -g option to obtain ACPI tables from the 2278Windows registry. This feature has been superseded by the acpidump 2279utility. 2280 2281 2282---------------------------------------- 228314 January 2014. Summary of changes for version 20140114: 2284 22851) ACPICA kernel-resident subsystem: 2286 2287Updated all ACPICA copyrights and signons to 2014. Added the 2014 2288copyright to all module headers and signons, including the standard Linux 2289header. This affects virtually every file in the ACPICA core subsystem, 2290iASL compiler, all ACPICA utilities, and the test suites. 2291 2292Improved parameter validation for AcpiInstallGpeBlock. Added the 2293following checks: 22941) The incoming device handle refers to type ACPI_TYPE_DEVICE. 22952) There is not already a GPE block attached to the device. 2296Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 2297device. 2298 2299Correctly support "references" in the ACPI_OBJECT. This change fixes the 2300support to allow references (namespace nodes) to be passed as arguments 2301to control methods via the evaluate object interface. This is probably 2302most useful for testing purposes, however. 2303 2304Improved support for 32/64 bit physical addresses in printf()-like 2305output. This change improves the support for physical addresses in printf 2306debug statements and other output on both 32-bit and 64-bit hosts. It 2307consistently outputs the appropriate number of bytes for each host. The 2308%p specifier is unsatisfactory since it does not emit uniform output on 2309all hosts/clib implementations (on some, leading zeros are not supported, 2310leading to difficult-to-read output). 2311 2312Example Code and Data Size: These are the sizes for the OS-independent 2313acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2314debug version of the code includes the debug output trace mechanism and 2315has a much larger code and data size. 2316 2317 Current Release: 2318 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 2319 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 2320 Previous Release: 2321 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 2322 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 2323 2324 23252) iASL Compiler/Disassembler and Tools: 2326 2327iASL: Fix a possible fault when using the Connection() operator. Fixes a 2328problem if the parent Field definition for the Connection operator refers 2329to an operation region that does not exist. ACPICA BZ 1064. 2330 2331AcpiExec: Load of local test tables is now optional. The utility has the 2332capability to load some various tables to test features of ACPICA. 2333However, there are enough of them that the output of the utility became 2334confusing. With this change, only the required local tables are displayed 2335(RSDP, XSDT, etc.) along with the actual tables loaded via the command 2336line specification. This makes the default output simler and easier to 2337understand. The -el command line option restores the original behavior 2338for testing purposes. 2339 2340AcpiExec: Added support for overlapping operation regions. This change 2341expands the simulation of operation regions by supporting regions that 2342overlap within the given address space. Supports SystemMemory and 2343SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 2344 2345AcpiExec: Added region handler support for PCI_Config and EC spaces. This 2346allows AcpiExec to simulate these address spaces, similar to the current 2347support for SystemMemory and SystemIO. 2348 2349Debugger: Added new command to read/write/compare all namespace objects. 2350The command "test objects" will exercise the entire namespace by writing 2351new values to each data object, and ensuring that the write was 2352successful. The original value is then restored and verified. 2353 2354Debugger: Added the "test predefined" command. This change makes this 2355test public and puts it under the new "test" command. The test executes 2356each and every predefined name within the current namespace. 2357 2358 2359---------------------------------------- 236018 December 2013. Summary of changes for version 20131218: 2361 2362Global note: The ACPI 5.0A specification was released this month. There 2363are no changes needed for ACPICA since this release of ACPI is an 2364errata/clarification release. The specification is available at 2365acpi.info. 2366 2367 23681) ACPICA kernel-resident subsystem: 2369 2370Added validation of the XSDT root table if it is present. Some older 2371platforms contain an XSDT that is ill-formed or otherwise invalid (such 2372as containing some or all entries that are NULL pointers). This change 2373adds a new function to validate the XSDT before actually using it. If the 2374XSDT is found to be invalid, ACPICA will now automatically fall back to 2375using the RSDT instead. Original implementation by Zhao Yakui. Ported to 2376ACPICA and enhanced by Lv Zheng and Bob Moore. 2377 2378Added a runtime option to ignore the XSDT and force the use of the RSDT. 2379This change adds a runtime option that will force ACPICA to use the RSDT 2380instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 2381requires that an XSDT be used instead of the RSDT, the XSDT has been 2382found to be corrupt or ill-formed on some machines. Lv Zheng. 2383 2384Added a runtime option to favor 32-bit FADT register addresses over the 238564-bit addresses. This change adds an option to favor 32-bit FADT 2386addresses when there is a conflict between the 32-bit and 64-bit versions 2387of the same register. The default behavior is to use the 64-bit version 2388in accordance with the ACPI specification. This can now be overridden via 2389the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 2390 2391During the change above, the internal "Convert FADT" and "Verify FADT" 2392functions have been merged to simplify the code, making it easier to 2393understand and maintain. ACPICA BZ 933. 2394 2395Improve exception reporting and handling for GPE block installation. 2396Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 2397status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 2398 2399Added helper macros to extract bus/segment numbers from the HEST table. 2400This change adds two macros to extract the encoded bus and segment 2401numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 2402Betty Dall <betty.dall@hp.com> 2403 2404Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 2405by ACPICA. It is not a public macro, so it should have no effect on 2406existing OSV code. Lv Zheng. 2407 2408Example Code and Data Size: These are the sizes for the OS-independent 2409acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2410debug version of the code includes the debug output trace mechanism and 2411has a much larger code and data size. 2412 2413 Current Release: 2414 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 2415 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 2416 Previous Release: 2417 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 2418 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 2419 2420 24212) iASL Compiler/Disassembler and Tools: 2422 2423Disassembler: Improved pathname support for emitted External() 2424statements. This change adds full pathname support for external names 2425that have been resolved internally by the inclusion of additional ACPI 2426tables (via the iASL -e option). Without this change, the disassembler 2427can emit multiple externals for the same object, or it become confused 2428when the Scope() operator is used on an external object. Overall, greatly 2429improves the ability to actually recompile the emitted ASL code when 2430objects a referenced across multiple ACPI tables. Reported by Michael 2431Tsirkin (mst@redhat.com). 2432 2433Tests/ASLTS: Updated functional control suite to execute with no errors. 2434David Box. Fixed several errors related to the testing of the interpreter 2435slack mode. Lv Zheng. 2436 2437iASL: Added support to detect names that are declared within a control 2438method, but are unused (these are temporary names that are only valid 2439during the time the method is executing). A remark is issued for these 2440cases. ACPICA BZ 1022. 2441 2442iASL: Added full support for the DBG2 table. Adds full disassembler, 2443table compiler, and template generator support for the DBG2 table (Debug 2444Port 2 table). 2445 2446iASL: Added full support for the PCCT table, update the table definition. 2447Updates the PCCT table definition in the actbl3.h header and adds table 2448compiler and template generator support. 2449 2450iASL: Added an option to emit only error messages (no warnings/remarks). 2451The -ve option will enable only error messages, warnings and remarks are 2452suppressed. This can simplify debugging when only the errors are 2453important, such as when an ACPI table is disassembled and there are many 2454warnings and remarks -- but only the actual errors are of real interest. 2455 2456Example ACPICA code (source/tools/examples): Updated the example code so 2457that it builds to an actual working program, not just example code. Added 2458ACPI tables and execution of an example control method in the DSDT. Added 2459makefile support for Unix generation. 2460 2461 2462---------------------------------------- 246315 November 2013. Summary of changes for version 20131115: 2464 2465This release is available at https://acpica.org/downloads 2466 2467 24681) ACPICA kernel-resident subsystem: 2469 2470Resource Manager: Fixed loop termination for the "get AML length" 2471function. The loop previously had an error termination on a NULL resource 2472pointer, which can never happen since the loop simply increments a valid 2473resource pointer. This fix changes the loop to terminate with an error on 2474an invalid end-of-buffer condition. The problem can be seen as an 2475infinite loop by callers to AcpiSetCurrentResources with an invalid or 2476corrupted resource descriptor, or a resource descriptor that is missing 2477an END_TAG descriptor. Reported by Dan Carpenter 2478<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 2479 2480Table unload and ACPICA termination: Delete all attached data objects 2481during namespace node deletion. This fix updates namespace node deletion 2482to delete the entire list of attached objects (attached via 2483AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 24841024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 2485 2486ACPICA termination: Added support to delete all objects attached to the 2487root namespace node. This fix deletes any and all objects that have been 2488attached to the root node via AcpiAttachData. Previously, none of these 2489objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 2490 2491Debug output: Do not emit the function nesting level for the in-kernel 2492build. The nesting level is really only useful during a single-thread 2493execution. Therefore, only enable this output for the AcpiExec utility. 2494Also, only emit the thread ID when executing under AcpiExec (Context 2495switches are still always detected and a message is emitted). ACPICA BZ 2496972. 2497 2498Example Code and Data Size: These are the sizes for the OS-independent 2499acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2500debug version of the code includes the debug output trace mechanism and 2501has a much larger code and data size. 2502 2503 Current Release: 2504 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 2505 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 2506 Previous Release: 2507 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 2508 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 2509 2510 25112) iASL Compiler/Disassembler and Tools: 2512 2513AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 2514correct portable POSIX header for terminal control functions. 2515 2516Disassembler: Fixed control method invocation issues related to the use 2517of the CondRefOf() operator. The problem is seen in the disassembly where 2518control method invocations may not be disassembled properly if the 2519control method name has been used previously as an argument to CondRefOf. 2520The solution is to not attempt to emit an external declaration for the 2521CondRefOf target (it is not necessary in the first place). This prevents 2522disassembler object type confusion. ACPICA BZ 988. 2523 2524Unix Makefiles: Added an option to disable compiler optimizations and the 2525_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 2526with optimizations (reportedly, gcc 4.4 for example). This change adds a 2527command line option for make (NOOPT) that disables all compiler 2528optimizations and the _FORTIFY_SOURCE compiler flag. The default 2529optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 25301034. Lv Zheng, Bob Moore. 2531 2532Tests/ASLTS: Added options to specify individual test cases and modes. 2533This allows testers running aslts.sh to optionally specify individual 2534test modes and test cases. Also added an option to disable the forced 2535generation of the ACPICA tools from source if desired. Lv Zheng. 2536 2537---------------------------------------- 253827 September 2013. Summary of changes for version 20130927: 2539 2540This release is available at https://acpica.org/downloads 2541 2542 25431) ACPICA kernel-resident subsystem: 2544 2545Fixed a problem with store operations to reference objects. This change 2546fixes a problem where a Store operation to an ArgX object that contained 2547a 2548reference to a field object did not complete the automatic dereference 2549and 2550then write to the actual field object. Instead, the object type of the 2551field object was inadvertently changed to match the type of the source 2552operand. The new behavior will actually write to the field object (buffer 2553field or field unit), thus matching the correct ACPI-defined behavior. 2554 2555Implemented support to allow the host to redefine individual OSL 2556prototypes. This change enables the host to redefine OSL prototypes found 2557in the acpiosxf.h file. This allows the host to implement OSL interfaces 2558with a macro or inlined function. Further, it allows the host to add any 2559additional required modifiers such as __iomem, __init, __exit, etc., as 2560necessary on a per-interface basis. Enables maximum flexibility for the 2561OSL interfaces. Lv Zheng. 2562 2563Hardcoded the access width for the FADT-defined reset register. The ACPI 2564specification requires the reset register width to be 8 bits. ACPICA now 2565hardcodes the width to 8 and ignores the FADT width value. This provides 2566compatibility with other ACPI implementations that have allowed BIOS code 2567with bad register width values to go unnoticed. Matthew Garett, Bob 2568Moore, 2569Lv Zheng. 2570 2571Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 2572used 2573in the OSL header (acpiosxf). The change modifies the position of this 2574macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 2575build issues if the OSL defines the implementation of the interface to be 2576an inline stub function. Lv Zheng. 2577 2578Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 2579initialization interfaces. This change adds a new macro for the main init 2580and terminate external interfaces in order to support hosts that require 2581additional or different processing for these functions. Changed from 2582ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 2583Zheng, Bob Moore. 2584 2585Cleaned up the memory allocation macros for configurability. In the 2586common 2587case, the ACPI_ALLOCATE and related macros now resolve directly to their 2588respective AcpiOs* OSL interfaces. Two options: 25891) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 2590default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 25912) For AcpiExec (and for debugging), the macros can optionally be 2592resolved 2593to the local ACPICA interfaces that track each allocation (local tracking 2594is used to immediately detect memory leaks). 2595Lv Zheng. 2596 2597Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 2598to predefine this macro to either TRUE or FALSE during the system build. 2599 2600Replaced __FUNCTION_ with __func__ in the gcc-specific header. 2601 2602Example Code and Data Size: These are the sizes for the OS-independent 2603acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2604debug version of the code includes the debug output trace mechanism and 2605has a much larger code and data size. 2606 2607 Current Release: 2608 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 2609 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 2610 Previous Release: 2611 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 2612 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2613 2614 26152) iASL Compiler/Disassembler and Tools: 2616 2617iASL: Implemented wildcard support for the -e option. This simplifies use 2618when there are many SSDTs that must be included to resolve external 2619method 2620declarations. ACPICA BZ 1041. Example: 2621 iasl -e ssdt*.dat -d dsdt.dat 2622 2623AcpiExec: Add history/line-editing for Unix/Linux systems. This change 2624adds a portable module that implements full history and limited line 2625editing for Unix and Linux systems. It does not use readline() due to 2626portability issues. Instead it uses the POSIX termio interface to put the 2627terminal in raw input mode so that the various special keys can be 2628trapped 2629(such as up/down-arrow for history support and left/right-arrow for line 2630editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 2631 2632AcpiXtract: Add support to handle (ignore) "empty" lines containing only 2633one or more spaces. This provides compatible with early or different 2634versions of the AcpiDump utility. ACPICA BZ 1044. 2635 2636AcpiDump: Do not ignore tables that contain only an ACPI table header. 2637Apparently, some BIOSs create SSDTs that contain an ACPI table header but 2638no other data. This change adds support to dump these tables. Any tables 2639shorter than the length of an ACPI table header remain in error (an error 2640message is emitted). Reported by Yi Li. 2641 2642Debugger: Echo actual command along with the "unknown command" message. 2643 2644---------------------------------------- 264523 August 2013. Summary of changes for version 20130823: 2646 26471) ACPICA kernel-resident subsystem: 2648 2649Implemented support for host-installed System Control Interrupt (SCI) 2650handlers. Certain ACPI functionality requires the host to handle raw 2651SCIs. For example, the "SCI Doorbell" that is defined for memory power 2652state support requires the host device driver to handle SCIs to examine 2653if the doorbell has been activated. Multiple SCI handlers can be 2654installed to allow for future expansion. New external interfaces are 2655AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 2656details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 2657 2658Operation region support: Never locally free the handler "context" 2659pointer. This change removes some dangerous code that attempts to free 2660the handler context pointer in some (rare) circumstances. The owner of 2661the handler owns this pointer and the ACPICA code should never touch it. 2662Although not seen to be an issue in any kernel, it did show up as a 2663problem (fault) under AcpiExec. Also, set the internal storage field for 2664the context pointer to zero when the region is deactivated, simply for 2665sanity. David Box. ACPICA BZ 1039. 2666 2667AcpiRead: On error, do not modify the return value target location. If an 2668error happens in the middle of a split 32/32 64-bit I/O operation, do not 2669modify the target of the return value pointer. Makes the code consistent 2670with the rest of ACPICA. Bjorn Helgaas. 2671 2672Example Code and Data Size: These are the sizes for the OS-independent 2673acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2674debug version of the code includes the debug output trace mechanism and 2675has a much larger code and data size. 2676 2677 Current Release: 2678 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 2679 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2680 Previous Release: 2681 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 2682 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 2683 2684 26852) iASL Compiler/Disassembler and Tools: 2686 2687AcpiDump: Implemented several new features and fixed some problems: 26881) Added support to dump the RSDP, RSDT, and XSDT tables. 26892) Added support for multiple table instances (SSDT, UEFI). 26903) Added option to dump "customized" (overridden) tables (-c). 26914) Fixed a problem where some table filenames were improperly 2692constructed. 26935) Improved some error messages, removed some unnecessary messages. 2694 2695iASL: Implemented additional support for disassembly of ACPI tables that 2696contain invocations of external control methods. The -fe<file> option 2697allows the import of a file that specifies the external methods along 2698with the required number of arguments for each -- allowing for the 2699correct disassembly of the table. This is a workaround for a limitation 2700of AML code where the disassembler often cannot determine the number of 2701arguments required for an external control method and generates incorrect 2702ASL code. See the iASL reference for details. ACPICA BZ 1030. 2703 2704Debugger: Implemented a new command (paths) that displays the full 2705pathnames (namepaths) and object types of all objects in the namespace. 2706This is an alternative to the namespace command. 2707 2708Debugger: Implemented a new command (sci) that invokes the SCI dispatch 2709mechanism and any installed handlers. 2710 2711iASL: Fixed a possible segfault for "too many parent prefixes" condition. 2712This can occur if there are too many parent prefixes in a namepath (for 2713example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 2714 2715Application OSLs: Set the return value for the PCI read functions. These 2716functions simply return AE_OK, but should set the return value to zero 2717also. This change implements this. ACPICA BZ 1038. 2718 2719Debugger: Prevent possible command line buffer overflow. Increase the 2720size of a couple of the debugger line buffers, and ensure that overflow 2721cannot happen. ACPICA BZ 1037. 2722 2723iASL: Changed to abort immediately on serious errors during the parsing 2724phase. Due to the nature of ASL, there is no point in attempting to 2725compile these types of errors, and they typically end up causing a 2726cascade of hundreds of errors which obscure the original problem. 2727 2728---------------------------------------- 272925 July 2013. Summary of changes for version 20130725: 2730 27311) ACPICA kernel-resident subsystem: 2732 2733Fixed a problem with the DerefOf operator where references to FieldUnits 2734and BufferFields incorrectly returned the parent object, not the actual 2735value of the object. After this change, a dereference of a FieldUnit 2736reference results in a read operation on the field to get the value, and 2737likewise, the appropriate BufferField value is extracted from the target 2738buffer. 2739 2740Fixed a problem where the _WAK method could cause a fault under these 2741circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 2742method returned no value. The problem is rarely seen because most kernels 2743run ACPICA in slack mode. 2744 2745For the DerefOf operator, a fatal error now results if an attempt is made 2746to dereference a reference (created by the Index operator) to a NULL 2747package element. Provides compatibility with other ACPI implementations, 2748and this behavior will be added to a future version of the ACPI 2749specification. 2750 2751The ACPI Power Management Timer (defined in the FADT) is now optional. 2752This provides compatibility with other ACPI implementations and will 2753appear in the next version of the ACPI specification. If there is no PM 2754Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 2755zero in the FADT indicates no PM timer. 2756 2757Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 2758allows the host to globally enable/disable all vendor strings, all 2759feature strings, or both. Intended to be primarily used for debugging 2760purposes only. Lv Zheng. 2761 2762Expose the collected _OSI data to the host via a global variable. This 2763data tracks the highest level vendor ID that has been invoked by the BIOS 2764so that the host (and potentially ACPICA itself) can change behaviors 2765based upon the age of the BIOS. 2766 2767Example Code and Data Size: These are the sizes for the OS-independent 2768acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2769debug version of the code includes the debug output trace mechanism and 2770has a much larger code and data size. 2771 2772 Current Release: 2773 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 2774 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2775 Previous Release: 2776 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 2777 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 2778 2779 27802) iASL Compiler/Disassembler and Tools: 2781 2782iASL: Created the following enhancements for the -so option (create 2783offset table): 27841)Add offsets for the last nameseg in each namepath for every supported 2785object type 27862)Add support for Processor, Device, Thermal Zone, and Scope objects 27873)Add the actual AML opcode for the parent object of every supported 2788object type 27894)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 2790 2791Disassembler: Emit all unresolved external symbols in a single block. 2792These are external references to control methods that could not be 2793resolved, and thus, the disassembler had to make a guess at the number of 2794arguments to parse. 2795 2796iASL: The argument to the -T option (create table template) is now 2797optional. If not specified, the default table is a DSDT, typically the 2798most common case. 2799 2800---------------------------------------- 280126 June 2013. Summary of changes for version 20130626: 2802 28031) ACPICA kernel-resident subsystem: 2804 2805Fixed an issue with runtime repair of the _CST object. Null or invalid 2806elements were not always removed properly. Lv Zheng. 2807 2808Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 2809FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 2810the maximum number of GPEs is 1016. Use of multiple GPE block devices 2811makes the system-wide number of GPEs essentially unlimited. 2812 2813Example Code and Data Size: These are the sizes for the OS-independent 2814acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2815debug version of the code includes the debug output trace mechanism and 2816has a much larger code and data size. 2817 2818 Current Release: 2819 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 2820 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 2821 Previous Release: 2822 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 2823 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 2824 2825 28262) iASL Compiler/Disassembler and Tools: 2827 2828Portable AcpiDump: Implemented full support for the Linux and FreeBSD 2829hosts. Now supports Linux, FreeBSD, and Windows. 2830 2831Disassembler: Added some missing types for the HEST and EINJ tables: "Set 2832Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 2833 2834iASL/Preprocessor: Implemented full support for nested 2835#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 2836 2837Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 2838max. The original purpose of this constraint was to limit the amount of 2839debug output. However, the string function in question (UtPrintString) is 2840now used for the disassembler also, where 256 bytes is insufficient. 2841Reported by RehabMan@GitHub. 2842 2843iASL/DataTables: Fixed some problems and issues with compilation of DMAR 2844tables. ACPICA BZ 999. Lv Zheng. 2845 2846iASL: Fixed a couple of error exit issues that could result in a "Could 2847not delete <file>" message during ASL compilation. 2848 2849AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 2850the actual signatures for these tables are "FACP" and "APIC", 2851respectively. 2852 2853AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 2854tables are allowed to have multiple instances. 2855 2856---------------------------------------- 285717 May 2013. Summary of changes for version 20130517: 2858 28591) ACPICA kernel-resident subsystem: 2860 2861Fixed a regression introduced in version 20130328 for _INI methods. This 2862change fixes a problem introduced in 20130328 where _INI methods are no 2863longer executed properly because of a memory block that was not 2864initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 2865<tomasz.nowicki@linaro.org>. 2866 2867Fixed a possible problem with the new extended sleep registers in the 2868ACPI 28695.0 FADT. Do not use these registers (even if populated) unless the HW- 2870reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 28711020. Lv Zheng. 2872 2873Implemented return value repair code for _CST predefined objects: Sort 2874the 2875list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 2876 2877Implemented a debug-only option to disable loading of SSDTs from the 2878RSDT/XSDT during ACPICA initialization. This can be useful for debugging 2879ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 2880acglobal.h - ACPICA BZ 1005. Lv Zheng. 2881 2882Fixed some issues in the ACPICA initialization and termination code: 2883Tomasz Nowicki <tomasz.nowicki@linaro.org> 28841) Clear events initialized flag upon event component termination. ACPICA 2885BZ 1013. 28862) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 28873) Delete global lock pending lock during termination. ACPICA BZ 1012. 28884) Clear debug buffer global on termination to prevent possible multiple 2889delete. ACPICA BZ 1010. 2890 2891Standardized all switch() blocks across the entire source base. After 2892many 2893years, different formatting for switch() had crept in. This change makes 2894the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 2895 2896Split some files to enhance ACPICA modularity and configurability: 28971) Split buffer dump routines into utilities/utbuffer.c 28982) Split internal error message routines into utilities/uterror.c 28993) Split table print utilities into tables/tbprint.c 29004) Split iASL command-line option processing into asloptions.c 2901 2902Makefile enhancements: 29031) Support for all new files above. 29042) Abort make on errors from any subcomponent. Chao Guan. 29053) Add build support for Apple Mac OS X. Liang Qi. 2906 2907Example Code and Data Size: These are the sizes for the OS-independent 2908acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2909debug version of the code includes the debug output trace mechanism and 2910has a much larger code and data size. 2911 2912 Current Release: 2913 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 2914 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 2915 Previous Release: 2916 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 2917 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 2918 2919 29202) iASL Compiler/Disassembler and Tools: 2921 2922New utility: Implemented an easily portable version of the acpidump 2923utility to extract ACPI tables from the system (or a file) in an ASCII 2924hex 2925dump format. The top-level code implements the various command line 2926options, file I/O, and table dump routines. To port to a new host, only 2927three functions need to be implemented to get tables -- since this 2928functionality is OS-dependent. See the tools/acpidump/apmain.c module and 2929the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 29301) The Windows version obtains the ACPI tables from the Registry. 29312) The Linux version is under development. 29323) Other hosts - If an OS-dependent module is submitted, it will be 2933distributed with ACPICA. 2934 2935iASL: Fixed a regression for -D preprocessor option (define symbol). A 2936restructuring/change to the initialization sequence caused this option to 2937no longer work properly. 2938 2939iASL: Implemented a mechanism to disable specific warnings and remarks. 2940Adds a new command line option, "-vw <messageid> as well as "#pragma 2941disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 2942 2943iASL: Fix for too-strict package object validation. The package object 2944validation for return values from the predefined names is a bit too 2945strict, it does not allow names references within the package (which will 2946be resolved at runtime.) These types of references cannot be validated at 2947compile time. This change ignores named references within package objects 2948for names that return or define static packages. 2949 2950Debugger: Fixed the 80-character command line limitation for the History 2951command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 2952 2953iASL: Added control method and package support for the -so option 2954(generates AML offset table for BIOS support.) 2955 2956iASL: issue a remark if a non-serialized method creates named objects. If 2957a thread blocks within the method for any reason, and another thread 2958enters the method, the method will fail because an attempt will be made 2959to 2960create the same (named) object twice. In this case, issue a remark that 2961the method should be marked serialized. NOTE: may become a warning later. 2962ACPICA BZ 909. 2963 2964---------------------------------------- 296518 April 2013. Summary of changes for version 20130418: 2966 29671) ACPICA kernel-resident subsystem: 2968 2969Fixed a possible buffer overrun during some rare but specific field unit 2970read operations. This overrun can only happen if the DSDT version is 1 -- 2971meaning that all AML integers are 32 bits -- and the field length is 2972between 33 and 55 bits long. During the read, an internal buffer object 2973is 2974created for the field unit because the field is larger than an integer 2975(32 2976bits). However, in this case, the buffer will be incorrectly written 2977beyond the end because the buffer length is less than the internal 2978minimum 2979of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 2980long, but a full 8 bytes will be written. 2981 2982Updated the Embedded Controller "orphan" _REG method support. This refers 2983to _REG methods under the EC device that have no corresponding operation 2984region. This is allowed by the ACPI specification. This update removes a 2985dependency on the existence an ECDT table. It will execute an orphan _REG 2986method as long as the operation region handler for the EC is installed at 2987the EC device node and not the namespace root. Rui Zhang (original 2988update), Bob Moore (update/integrate). 2989 2990Implemented run-time argument typechecking for all predefined ACPI names 2991(_STA, _BIF, etc.) This change performs object typechecking on all 2992incoming arguments for all predefined names executed via 2993AcpiEvaluateObject. This ensures that ACPI-related device drivers are 2994passing correct object types as well as the correct number of arguments 2995(therefore identifying any issues immediately). Also, the ASL/namespace 2996definition of the predefined name is checked against the ACPI 2997specification for the proper argument count. Adds one new file, 2998nsarguments.c 2999 3000Changed an exception code for the ASL UnLoad() operator. Changed the 3001exception code for the case where the input DdbHandle is invalid, from 3002AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 3003 3004Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 3005global makefile. The use of this flag causes compiler errors on earlier 3006versions of GCC, so it has been removed for compatibility. 3007 3008Miscellaneous cleanup: 30091) Removed some unused/obsolete macros 30102) Fixed a possible memory leak in the _OSI support 30113) Removed an unused variable in the predefined name support 30124) Windows OSL: remove obsolete reference to a memory list field 3013 3014Example Code and Data Size: These are the sizes for the OS-independent 3015acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3016debug version of the code includes the debug output trace mechanism and 3017has a much larger code and data size. 3018 3019 Current Release: 3020 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 3021 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 3022 Previous Release: 3023 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 3024 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 3025 3026 30272) iASL Compiler/Disassembler and Tools: 3028 3029AcpiExec: Added installation of a handler for the SystemCMOS address 3030space. This prevents control method abort if a method accesses this 3031space. 3032 3033AcpiExec: Added support for multiple EC devices, and now install EC 3034operation region handler(s) at the actual EC device instead of the 3035namespace root. This reflects the typical behavior of host operating 3036systems. 3037 3038AcpiExec: Updated to ensure that all operation region handlers are 3039installed before the _REG methods are executed. This prevents a _REG 3040method from aborting if it accesses an address space has no handler. 3041AcpiExec installs a handler for every possible address space. 3042 3043Debugger: Enhanced the "handlers" command to display non-root handlers. 3044This change enhances the handlers command to display handlers associated 3045with individual devices throughout the namespace, in addition to the 3046currently supported display of handlers associated with the root 3047namespace 3048node. 3049 3050ASL Test Suite: Several test suite errors have been identified and 3051resolved, reducing the total error count during execution. Chao Guan. 3052 3053---------------------------------------- 305428 March 2013. Summary of changes for version 20130328: 3055 30561) ACPICA kernel-resident subsystem: 3057 3058Fixed several possible race conditions with the internal object reference 3059counting mechanism. Some of the external ACPICA interfaces update object 3060reference counts without holding the interpreter or namespace lock. This 3061change adds a spinlock to protect reference count updates on the internal 3062ACPICA objects. Reported by and with assistance from Andriy Gapon 3063(avg@FreeBSD.org). 3064 3065FADT support: Removed an extraneous warning for very large GPE register 3066sets. This change removes a size mismatch warning if the legacy length 3067field for a GPE register set is larger than the 64-bit GAS structure can 3068accommodate. GPE register sets can be larger than the 255-bit width 3069limitation of the GAS structure. Linn Crosetto (linn@hp.com). 3070 3071_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 3072return from this interface. Handles a possible timeout case if 3073ACPI_WAIT_FOREVER is modified by the host to be a value less than 3074"forever". Jung-uk Kim. 3075 3076Predefined name support: Add allowed/required argument type information 3077to 3078the master predefined info table. This change adds the infrastructure to 3079enable typechecking on incoming arguments for all predefined 3080methods/objects. It does not actually contain the code that will fully 3081utilize this information, this is still under development. Also condenses 3082some duplicate code for the predefined names into a new module, 3083utilities/utpredef.c 3084 3085Example Code and Data Size: These are the sizes for the OS-independent 3086acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3087debug version of the code includes the debug output trace mechanism and 3088has a much larger code and data size. 3089 3090 Previous Release: 3091 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 3092 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 3093 Current Release: 3094 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 3095 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 3096 3097 30982) iASL Compiler/Disassembler and Tools: 3099 3100iASL: Implemented a new option to simplify the development of ACPI- 3101related 3102BIOS code. Adds support for a new "offset table" output file. The -so 3103option will create a C table containing the AML table offsets of various 3104named objects in the namespace so that BIOS code can modify them easily 3105at 3106boot time. This can simplify BIOS runtime code by eliminating expensive 3107searches for "magic values", enhancing boot times and adding greater 3108reliability. With assistance from Lee Hamel. 3109 3110iASL: Allow additional predefined names to return zero-length packages. 3111Now, all predefined names that are defined by the ACPI specification to 3112return a "variable-length package of packages" are allowed to return a 3113zero length top-level package. This allows the BIOS to tell the host that 3114the requested feature is not supported, and supports existing BIOS/ASL 3115code and practices. 3116 3117iASL: Changed the "result not used" warning to an error. This is the case 3118where an ASL operator is effectively a NOOP because the result of the 3119operation is not stored anywhere. For example: 3120 Add (4, Local0) 3121There is no target (missing 3rd argument), nor is the function return 3122value used. This is potentially a very serious problem -- since the code 3123was probably intended to do something, but for whatever reason, the value 3124was not stored. Therefore, this issue has been upgraded from a warning to 3125an error. 3126 3127AcpiHelp: Added allowable/required argument types to the predefined names 3128info display. This feature utilizes the recent update to the predefined 3129names table (above). 3130 3131---------------------------------------- 313214 February 2013. Summary of changes for version 20130214: 3133 31341) ACPICA Kernel-resident Subsystem: 3135 3136Fixed a possible regression on some hosts: Reinstated the safe return 3137macros (return_ACPI_STATUS, etc.) that ensure that the argument is 3138evaluated only once. Although these macros are not needed for the ACPICA 3139code itself, they are often used by ACPI-related host device drivers 3140where 3141the safe feature may be necessary. 3142 3143Fixed several issues related to the ACPI 5.0 reduced hardware support 3144(SOC): Now ensure that if the platform declares itself as hardware- 3145reduced 3146via the FADT, the following functions become NOOPs (and always return 3147AE_OK) because ACPI is always enabled by definition on these machines: 3148 AcpiEnable 3149 AcpiDisable 3150 AcpiHwGetMode 3151 AcpiHwSetMode 3152 3153Dynamic Object Repair: Implemented additional runtime repairs for 3154predefined name return values. Both of these repairs can simplify code in 3155the related device drivers that invoke these methods: 31561) For the _STR and _MLS names, automatically repair/convert an ASCII 3157string to a Unicode buffer. 31582) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 3159a 3160lone end tag descriptor in the following cases: A Return(0) was executed, 3161a null buffer was returned, or no object at all was returned (non-slack 3162mode only). Adds a new file, nsconvert.c 3163ACPICA BZ 998. Bob Moore, Lv Zheng. 3164 3165Resource Manager: Added additional code to prevent possible infinite 3166loops 3167while traversing corrupted or ill-formed resource template buffers. Check 3168for zero-length resource descriptors in all code that loops through 3169resource templates (the length field is used to index through the 3170template). This change also hardens the external AcpiWalkResources and 3171AcpiWalkResourceBuffer interfaces. 3172 3173Local Cache Manager: Enhanced the main data structure to eliminate an 3174unnecessary mechanism to access the next object in the list. Actually 3175provides a small performance enhancement for hosts that use the local 3176ACPICA cache manager. Jung-uk Kim. 3177 3178Example Code and Data Size: These are the sizes for the OS-independent 3179acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3180debug version of the code includes the debug output trace mechanism and 3181has a much larger code and data size. 3182 3183 Previous Release: 3184 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 3185 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 3186 Current Release: 3187 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 3188 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 3189 3190 31912) iASL Compiler/Disassembler and Tools: 3192 3193iASL/Disassembler: Fixed several issues with the definition of the ACPI 31945.0 RASF table (RAS Feature Table). This change incorporates late changes 3195that were made to the ACPI 5.0 specification. 3196 3197iASL/Disassembler: Added full support for the following new ACPI tables: 3198 1) The MTMR table (MID Timer Table) 3199 2) The VRTC table (Virtual Real Time Clock Table). 3200Includes header file, disassembler, table compiler, and template support 3201for both tables. 3202 3203iASL: Implemented compile-time validation of package objects returned by 3204predefined names. This new feature validates static package objects 3205returned by the various predefined names defined to return packages. Both 3206object types and package lengths are validated, for both parent packages 3207and sub-packages, if any. The code is similar in structure and behavior 3208to 3209the runtime repair mechanism within the AML interpreter and uses the 3210existing predefined name information table. Adds a new file, aslprepkg.c. 3211ACPICA BZ 938. 3212 3213iASL: Implemented auto-detection of binary ACPI tables for disassembly. 3214This feature detects a binary file with a valid ACPI table header and 3215invokes the disassembler automatically. Eliminates the need to 3216specifically invoke the disassembler with the -d option. ACPICA BZ 862. 3217 3218iASL/Disassembler: Added several warnings for the case where there are 3219unresolved control methods during the disassembly. This can potentially 3220cause errors when the output file is compiled, because the disassembler 3221assumes zero method arguments in these cases (it cannot determine the 3222actual number of arguments without resolution/definition of the method). 3223 3224Debugger: Added support to display all resources with a single command. 3225Invocation of the resources command with no arguments will now display 3226all 3227resources within the current namespace. 3228 3229AcpiHelp: Added descriptive text for each ACPICA exception code displayed 3230via the -e option. 3231 3232---------------------------------------- 323317 January 2013. Summary of changes for version 20130117: 3234 32351) ACPICA Kernel-resident Subsystem: 3236 3237Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 3238return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 3239objects to return a package containing one integer, most BIOS code 3240returns 3241two integers and the previous code reflects that. However, we also need 3242to 3243support BIOS code that actually implements to the ACPI spec, and this 3244change reflects this. 3245 3246Fixed two issues with the ACPI_DEBUG_PRINT macros: 32471) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 3248C compilers that require this support. 32492) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 3250ACPI_DEBUG is already used by many of the various hosts. 3251 3252Updated all ACPICA copyrights and signons to 2013. Added the 2013 3253copyright to all module headers and signons, including the standard Linux 3254header. This affects virtually every file in the ACPICA core subsystem, 3255iASL compiler, all ACPICA utilities, and the test suites. 3256 3257Example Code and Data Size: These are the sizes for the OS-independent 3258acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3259debug version of the code includes the debug output trace mechanism and 3260has a much larger code and data size. 3261 3262 Previous Release: 3263 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 3264 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 3265 Current Release: 3266 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 3267 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 3268 3269 32702) iASL Compiler/Disassembler and Tools: 3271 3272Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 3273prevent a possible fault on some hosts. Some C libraries modify the arg 3274pointer parameter to vfprintf making it difficult to call it twice in the 3275AcpiOsVprintf function. Use a local buffer to workaround this issue. This 3276does not affect the Windows OSL since the Win C library does not modify 3277the arg pointer. Chao Guan, Bob Moore. 3278 3279iASL: Fixed a possible infinite loop when the maximum error count is 3280reached. If an output file other than the .AML file is specified (such as 3281a listing file), and the maximum number of errors is reached, do not 3282attempt to flush data to the output file(s) as the compiler is aborting. 3283This can cause an infinite loop as the max error count code essentially 3284keeps calling itself. 3285 3286iASL/Disassembler: Added an option (-in) to ignore NOOP 3287opcodes/operators. 3288Implemented for both the compiler and the disassembler. Often, the NOOP 3289opcode is used as padding for packages that are changed dynamically by 3290the 3291BIOS. When disassembled and recompiled, these NOOPs will cause syntax 3292errors. This option causes the disassembler to ignore all NOOP opcodes 3293(0xA3), and it also causes the compiler to ignore all ASL source code 3294NOOP 3295statements as well. 3296 3297Debugger: Enhanced the Sleep command to execute all sleep states. This 3298change allows Sleep to be invoked with no arguments and causes the 3299debugger to execute all of the sleep states, 0-5, automatically. 3300 3301---------------------------------------- 330220 December 2012. Summary of changes for version 20121220: 3303 33041) ACPICA Kernel-resident Subsystem: 3305 3306Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 3307alternate entry point for AcpiWalkResources and improves the usability of 3308the resource manager by accepting as input a buffer containing the output 3309of either a _CRS, _PRS, or _AEI method. The key functionality is that the 3310input buffer is not deleted by this interface so that it can be used by 3311the host later. See the ACPICA reference for details. 3312 3313Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 3314(DSDT version < 2). The constant will be truncated and this warning 3315reflects that behavior. 3316 3317Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 3318ExtendedInterrupt, and GpioInt descriptors. This change adds support to 3319both get and set the new wake bit in these descriptors, separately from 3320the existing share bit. Reported by Aaron Lu. 3321 3322Interpreter: Fix Store() when an implicit conversion is not possible. For 3323example, in the cases such as a store of a string to an existing package 3324object, implement the store as a CopyObject(). This is a small departure 3325from the ACPI specification which states that the control method should 3326be 3327aborted in this case. However, the ASLTS suite depends on this behavior. 3328 3329Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 3330macros: check if debug output is currently enabled as soon as possible to 3331minimize performance impact if debug is in fact not enabled. 3332 3333Source code restructuring: Cleanup to improve modularity. The following 3334new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 3335psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 3336Associated makefiles and project files have been updated. 3337 3338Changed an exception code for LoadTable operator. For the case where one 3339of the input strings is too long, change the returned exception code from 3340AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 3341 3342Fixed a possible memory leak in dispatcher error path. On error, delete 3343the mutex object created during method mutex creation. Reported by 3344tim.gardner@canonical.com. 3345 3346Example Code and Data Size: These are the sizes for the OS-independent 3347acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3348debug version of the code includes the debug output trace mechanism and 3349has a much larger code and data size. 3350 3351 Previous Release: 3352 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 3353 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3354 Current Release: 3355 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 3356 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 3357 3358 33592) iASL Compiler/Disassembler and Tools: 3360 3361iASL: Disallow a method call as argument to the ObjectType ASL operator. 3362This change tracks an errata to the ACPI 5.0 document. The AML grammar 3363will not allow the interpreter to differentiate between a method and a 3364method invocation when these are used as an argument to the ObjectType 3365operator. The ACPI specification change is to disallow a method 3366invocation 3367(UserTerm) for the ObjectType operator. 3368 3369Finish support for the TPM2 and CSRT tables in the headers, table 3370compiler, and disassembler. 3371 3372Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 3373always expires immediately if the semaphore is not available. The 3374original 3375code was using a relative-time timeout, but sem_timedwait requires the 3376use 3377of an absolute time. 3378 3379iASL: Added a remark if the Timer() operator is used within a 32-bit 3380table. This operator returns a 64-bit time value that will be truncated 3381within a 32-bit table. 3382 3383iASL Source code restructuring: Cleanup to improve modularity. The 3384following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 3385aslmethod.c, and aslfileio.c. Associated makefiles and project files have 3386been updated. 3387 3388 3389---------------------------------------- 339014 November 2012. Summary of changes for version 20121114: 3391 33921) ACPICA Kernel-resident Subsystem: 3393 3394Implemented a performance enhancement for ACPI/AML Package objects. This 3395change greatly increases the performance of Package objects within the 3396interpreter. It changes the processing of reference counts for packages 3397by 3398optimizing for the most common case where the package sub-objects are 3399either Integers, Strings, or Buffers. Increases the overall performance 3400of 3401the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 34022X.) 3403Chao Guan. ACPICA BZ 943. 3404 3405Implemented and deployed common macros to extract flag bits from resource 3406descriptors. Improves readability and maintainability of the code. Fixes 3407a 3408problem with the UART serial bus descriptor for the number of data bits 3409flags (was incorrectly 2 bits, should be 3). 3410 3411Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 3412of the macros and changed the SETx macros to the style of (destination, 3413source). Also added ACPI_CASTx companion macros. Lv Zheng. 3414 3415Example Code and Data Size: These are the sizes for the OS-independent 3416acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3417debug version of the code includes the debug output trace mechanism and 3418has a much larger code and data size. 3419 3420 Previous Release: 3421 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 3422 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3423 Current Release: 3424 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 3425 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3426 3427 34282) iASL Compiler/Disassembler and Tools: 3429 3430Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 3431adds the ShareAndWake and ExclusiveAndWake flags which were added to the 3432Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 3433 3434Disassembler: Fixed a problem with external declaration generation. Fixes 3435a problem where an incorrect pathname could be generated for an external 3436declaration if the original reference to the object includes leading 3437carats (^). ACPICA BZ 984. 3438 3439Debugger: Completed a major update for the Disassemble<method> command. 3440This command was out-of-date and did not properly disassemble control 3441methods that had any reasonable complexity. This fix brings the command 3442up 3443to the same level as the rest of the disassembler. Adds one new file, 3444dmdeferred.c, which is existing code that is now common with the main 3445disassembler and the debugger disassemble command. ACPICA MZ 978. 3446 3447iASL: Moved the parser entry prototype to avoid a duplicate declaration. 3448Newer versions of Bison emit this prototype, so moved the prototype out 3449of 3450the iASL header to where it is actually used in order to avoid a 3451duplicate 3452declaration. 3453 3454iASL/Tools: Standardized use of the stream I/O functions: 3455 1) Ensure check for I/O error after every fopen/fread/fwrite 3456 2) Ensure proper order of size/count arguments for fread/fwrite 3457 3) Use test of (Actual != Requested) after all fwrite, and most fread 3458 4) Standardize I/O error messages 3459Improves reliability and maintainability of the code. Bob Moore, Lv 3460Zheng. 3461ACPICA BZ 981. 3462 3463Disassembler: Prevent duplicate External() statements. During generation 3464of external statements, detect similar pathnames that are actually 3465duplicates such as these: 3466 External (\ABCD) 3467 External (ABCD) 3468Remove all leading '\' characters from pathnames during the external 3469statement generation so that duplicates will be detected and tossed. 3470ACPICA BZ 985. 3471 3472Tools: Replace low-level I/O with stream I/O functions. Replace 3473open/read/write/close with the stream I/O equivalents 3474fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 3475Moore. 3476 3477AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 3478name header so that AcpiXtract recognizes the output file/table. 3479 3480iASL: Remove obsolete -2 option flag. Originally intended to force the 3481compiler/disassembler into an ACPI 2.0 mode, this was never implemented 3482and the entire concept is now obsolete. 3483 3484---------------------------------------- 348518 October 2012. Summary of changes for version 20121018: 3486 3487 34881) ACPICA Kernel-resident Subsystem: 3489 3490Updated support for the ACPI 5.0 MPST table. Fixes some problems 3491introduced by late changes to the table as it was added to the ACPI 5.0 3492specification. Includes header, disassembler, and data table compiler 3493support as well as a new version of the MPST template. 3494 3495AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 34965.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 3497methods: _HID, _CID, and _UID. 3498 3499Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 3500ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 3501name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 3502names for their various drivers. Affects the AcpiGetObjectInfo external 3503interface, and other internal interfaces as well. 3504 3505Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 3506This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 3507on machines that support non-aligned transfers. Optimizes for this case 3508rather than using a strncpy. With assistance from Zheng Lv. 3509 3510Resource Manager: Small fix for buffer size calculation. Fixed a one byte 3511error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 3512 3513Added a new debug print message for AML mutex objects that are force- 3514released. At control method termination, any currently acquired mutex 3515objects are force-released. Adds a new debug-only message for each one 3516that is released. 3517 3518Audited/updated all ACPICA return macros and the function debug depth 3519counter: 1) Ensure that all functions that use the various TRACE macros 3520also use the appropriate ACPICA return macros. 2) Ensure that all normal 3521return statements surround the return expression (value) with parens to 3522ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 3523Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 3524 3525Global source code changes/maintenance: All extra lines at the start and 3526end of each source file have been removed for consistency. Also, within 3527comments, all new sentences start with a single space instead of a double 3528space, again for consistency across the code base. 3529 3530Example Code and Data Size: These are the sizes for the OS-independent 3531acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3532debug version of the code includes the debug output trace mechanism and 3533has a much larger code and data size. 3534 3535 Previous Release: 3536 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 3537 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 3538 Current Release: 3539 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 3540 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3541 3542 35432) iASL Compiler/Disassembler and Tools: 3544 3545AcpiExec: Improved the algorithm used for memory leak/corruption 3546detection. Added some intelligence to the code that maintains the global 3547list of allocated memory. The list is now ordered by allocated memory 3548address, significantly improving performance. When running AcpiExec on 3549the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 3550on the platform and/or the environment. Note, this performance 3551enhancement affects the AcpiExec utility only, not the kernel-resident 3552ACPICA code. 3553 3554Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 3555the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 3556incorrect table offset reported for invalid opcodes. Report the original 355732-bit value for bad ACPI_NAMEs (as well as the repaired name.) 3558 3559Disassembler: Enhanced the -vt option to emit the binary table data in 3560hex format to assist with debugging. 3561 3562Fixed a potential filename buffer overflow in osunixdir.c. Increased the 3563size of file structure. Colin Ian King. 3564 3565---------------------------------------- 356613 September 2012. Summary of changes for version 20120913: 3567 3568 35691) ACPICA Kernel-resident Subsystem: 3570 3571ACPI 5.0: Added two new notify types for the Hardware Error Notification 3572Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 3573and 3574MCE(6). 3575 3576Table Manager: Merged/removed duplicate code in the root table resize 3577functions. One function is external, the other is internal. Lv Zheng, 3578ACPICA 3579BZ 846. 3580 3581Makefiles: Completely removed the obsolete "Linux" makefiles under 3582acpica/generate/linux. These makefiles are obsolete and have been 3583replaced 3584by 3585the generic unix makefiles under acpica/generate/unix. 3586 3587Makefiles: Ensure that binary files always copied properly. Minor rule 3588change 3589to ensure that the final binary output files are always copied up to the 3590appropriate binary directory (bin32 or bin64.) 3591 3592Example Code and Data Size: These are the sizes for the OS-independent 3593acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3594debug 3595version of the code includes the debug output trace mechanism and has a 3596much 3597larger code and data size. 3598 3599 Previous Release: 3600 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 3601 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 3602 Current Release: 3603 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 3604 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 3605 3606 36072) iASL Compiler/Disassembler and Tools: 3608 3609Disassembler: Fixed a possible fault during the disassembly of resource 3610descriptors when a second parse is required because of the invocation of 3611external control methods within the table. With assistance from 3612adq@lidskialf.net. ACPICA BZ 976. 3613 3614iASL: Fixed a namepath optimization problem. An error can occur if the 3615parse 3616node that contains the namepath to be optimized does not have a parent 3617node 3618that is a named object. This change fixes the problem. 3619 3620iASL: Fixed a regression where the AML file is not deleted on errors. The 3621AML 3622output file should be deleted if there are any errors during the 3623compiler. 3624The 3625only exception is if the -f (force output) option is used. ACPICA BZ 974. 3626 3627iASL: Added a feature to automatically increase internal line buffer 3628sizes. 3629Via realloc(), automatically increase the internal line buffer sizes as 3630necessary to support very long source code lines. The current version of 3631the 3632preprocessor requires a buffer long enough to contain full source code 3633lines. 3634This change increases the line buffer(s) if the input lines go beyond the 3635current buffer size. This eliminates errors that occurred when a source 3636code 3637line was longer than the buffer. 3638 3639iASL: Fixed a problem with constant folding in method declarations. The 3640SyncLevel term is a ByteConstExpr, and incorrect code would be generated 3641if a 3642Type3 opcode was used. 3643 3644Debugger: Improved command help support. For incorrect argument count, 3645display 3646full help for the command. For help command itself, allow an argument to 3647specify a command. 3648 3649Test Suites: Several bug fixes for the ASLTS suite reduces the number of 3650errors during execution of the suite. Guan Chao. 3651 3652---------------------------------------- 365316 August 2012. Summary of changes for version 20120816: 3654 3655 36561) ACPICA Kernel-resident Subsystem: 3657 3658Removed all use of the deprecated _GTS and _BFS predefined methods. The 3659_GTS 3660(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 3661deprecated and will probably be removed from the ACPI specification. 3662Windows 3663does not invoke them, and reportedly never will. The final nail in the 3664coffin 3665is that the ACPI specification states that these methods must be run with 3666interrupts off, which is not going to happen in a kernel interpreter. 3667Note: 3668Linux has removed all use of the methods also. It was discovered that 3669invoking these functions caused failures on some machines, probably 3670because 3671they were never tested since Windows does not call them. Affects two 3672external 3673interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 3674ACPICA BZ 969. 3675 3676Implemented support for complex bit-packed buffers returned from the _PLD 3677(Physical Location of Device) predefined method. Adds a new external 3678interface, AcpiDecodePldBuffer that parses the buffer into a more usable 3679C 3680structure. Note: C Bitfields cannot be used for this type of predefined 3681structure since the memory layout of individual bitfields is not defined 3682by 3683the C language. In addition, there are endian concerns where a compiler 3684will 3685change the bitfield ordering based on the machine type. The new ACPICA 3686interface eliminates these issues, and should be called after _PLD is 3687executed. ACPICA BZ 954. 3688 3689Implemented a change to allow a scope change to root (via "Scope (\)") 3690during 3691execution of module-level ASL code (code that is executed at table load 3692time.) Lin Ming. 3693 3694Added the Windows8/Server2012 string for the _OSI method. This change 3695adds 3696a 3697new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 36982012. 3699 3700Added header support for the new ACPI tables DBG2 (Debug Port Table Type 37012) 3702and CSRT (Core System Resource Table). 3703 3704Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 3705names. This simplifies access to the buffers returned by these predefined 3706names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 3707 3708GPE support: Removed an extraneous parameter from the various low-level 3709internal GPE functions. Tang Feng. 3710 3711Removed the linux makefiles from the unix packages. The generate/linux 3712makefiles are obsolete and have been removed from the unix tarball 3713release 3714packages. The replacement makefiles are under generate/unix, and there is 3715a 3716top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 3717 3718Updates for Unix makefiles: 37191) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 37202) Update linker flags (move to end of command line) for AcpiExec 3721utility. 3722Guan Chao. 3723 3724Split ACPICA initialization functions to new file, utxfinit.c. Split from 3725utxface.c to improve modularity and reduce file size. 3726 3727Example Code and Data Size: These are the sizes for the OS-independent 3728acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3729debug version of the code includes the debug output trace mechanism and 3730has a 3731much larger code and data size. 3732 3733 Previous Release: 3734 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 3735 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 3736 Current Release: 3737 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 3738 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 3739 3740 37412) iASL Compiler/Disassembler and Tools: 3742 3743iASL: Fixed a problem with constant folding for fixed-length constant 3744expressions. The constant-folding code was not being invoked for constant 3745expressions that allow the use of type 3/4/5 opcodes to generate 3746constants 3747for expressions such as ByteConstExpr, WordConstExpr, etc. This could 3748result 3749in the generation of invalid AML bytecode. ACPICA BZ 970. 3750 3751iASL: Fixed a generation issue on newer versions of Bison. Newer versions 3752apparently automatically emit some of the necessary externals. This 3753change 3754handles these versions in order to eliminate generation warnings. 3755 3756Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 3757 3758Disassembler: Add support to decode _PLD buffers. The decoded buffer 3759appears 3760within comments in the output file. 3761 3762Debugger: Fixed a regression with the "Threads" command where 3763AE_BAD_PARAMETER was always returned. 3764 3765---------------------------------------- 376611 July 2012. Summary of changes for version 20120711: 3767 37681) ACPICA Kernel-resident Subsystem: 3769 3770Fixed a possible fault in the return package object repair code. Fixes a 3771problem that can occur when a lone package object is wrapped with an 3772outer 3773package object in order to force conformance to the ACPI specification. 3774Can 3775affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 3776_DLM, 3777_CSD, _PSD, _TSD. 3778 3779Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 3780PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 3781ARB_DIS bit must be implemented in the host-dependent C3 processor power 3782state 3783support. Note, ARB_DIS is obsolete and only applies to older chipsets, 3784both 3785Intel and other vendors. (for Intel: ICH4-M and earlier) 3786 3787This change removes the code to disable/enable bus master arbitration 3788during 3789suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 3790causes 3791resume problems on some machines. The change has been in use for over 3792seven 3793years within Linux. 3794 3795Implemented two new external interfaces to support host-directed dynamic 3796ACPI 3797table load and unload. They are intended to simplify the host 3798implementation 3799of hot-plug support: 3800 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 3801 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 3802table. 3803See the ACPICA reference for additional details. Adds one new file, 3804components/tables/tbxfload.c 3805 3806Implemented and deployed two new interfaces for errors and warnings that 3807are 3808known to be caused by BIOS/firmware issues: 3809 AcpiBiosError: Prints "ACPI Firmware Error" message. 3810 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 3811Deployed these new interfaces in the ACPICA Table Manager code for ACPI 3812table 3813and FADT errors. Additional deployment to be completed as appropriate in 3814the 3815future. The associated conditional macros are ACPI_BIOS_ERROR and 3816ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 3817ACPICA 3818BZ 3819843. 3820 3821Implicit notify support: ensure that no memory allocation occurs within a 3822critical region. This fix moves a memory allocation outside of the time 3823that a 3824spinlock is held. Fixes issues on systems that do not allow this 3825behavior. 3826Jung-uk Kim. 3827 3828Split exception code utilities and tables into a new file, 3829utilities/utexcep.c 3830 3831Example Code and Data Size: These are the sizes for the OS-independent 3832acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3833debug 3834version of the code includes the debug output trace mechanism and has a 3835much 3836larger code and data size. 3837 3838 Previous Release: 3839 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 3840 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 3841 Current Release: 3842 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 3843 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 3844 3845 38462) iASL Compiler/Disassembler and Tools: 3847 3848iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 3849of 38500. Jung-uk Kim. 3851 3852Debugger: Enhanced the "tables" command to emit additional information 3853about 3854the current set of ACPI tables, including the owner ID and flags decode. 3855 3856Debugger: Reimplemented the "unload" command to use the new 3857AcpiUnloadParentTable external interface. This command was disable 3858previously 3859due to need for an unload interface. 3860 3861AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 3862option 3863will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 3864 3865---------------------------------------- 386620 June 2012. Summary of changes for version 20120620: 3867 3868 38691) ACPICA Kernel-resident Subsystem: 3870 3871Implemented support to expand the "implicit notify" feature to allow 3872multiple 3873devices to be notified by a single GPE. This feature automatically 3874generates a 3875runtime device notification in the absence of a BIOS-provided GPE control 3876method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 3877notify is 3878provided by ACPICA for Windows compatibility, and is a workaround for 3879BIOS 3880AML 3881code errors. See the description of the AcpiSetupGpeForWake interface in 3882the 3883APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 3884 3885Changed some comments and internal function names to simplify and ensure 3886correctness of the Linux code translation. No functional changes. 3887 3888Example Code and Data Size: These are the sizes for the OS-independent 3889acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3890debug 3891version of the code includes the debug output trace mechanism and has a 3892much 3893larger code and data size. 3894 3895 Previous Release: 3896 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 3897 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 3898 Current Release: 3899 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 3900 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 3901 3902 39032) iASL Compiler/Disassembler and Tools: 3904 3905Disassembler: Added support to emit short, commented descriptions for the 3906ACPI 3907predefined names in order to improve the readability of the disassembled 3908output. ACPICA BZ 959. Changes include: 3909 1) Emit descriptions for all standard predefined names (_INI, _STA, 3910_PRW, 3911etc.) 3912 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 3913 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 3914etc.) 3915 3916AcpiSrc: Fixed several long-standing Linux code translation issues. 3917Argument 3918descriptions in function headers are now translated properly to lower 3919case 3920and 3921underscores. ACPICA BZ 961. Also fixes translation problems such as 3922these: 3923(old -> new) 3924 i_aSL -> iASL 3925 00-7_f -> 00-7F 3926 16_k -> 16K 3927 local_fADT -> local_FADT 3928 execute_oSI -> execute_OSI 3929 3930iASL: Fixed a problem where null bytes were inadvertently emitted into 3931some 3932listing files. 3933 3934iASL: Added the existing debug options to the standard help screen. There 3935are 3936no longer two different help screens. ACPICA BZ 957. 3937 3938AcpiHelp: Fixed some typos in the various predefined name descriptions. 3939Also 3940expand some of the descriptions where appropriate. 3941 3942iASL: Fixed the -ot option (display compile times/statistics). Was not 3943working 3944properly for standard output; only worked for the debug file case. 3945 3946---------------------------------------- 394718 May 2012. Summary of changes for version 20120518: 3948 3949 39501) ACPICA Core Subsystem: 3951 3952Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 3953defined 3954to block until asynchronous events such as notifies and GPEs have 3955completed. 3956Within ACPICA, it is only called before a notify or GPE handler is 3957removed/uninstalled. It also may be useful for the host OS within related 3958drivers such as the Embedded Controller driver. See the ACPICA reference 3959for 3960additional information. ACPICA BZ 868. 3961 3962ACPI Tables: Added a new error message for a possible overflow failure 3963during 3964the conversion of FADT 32-bit legacy register addresses to internal 3965common 396664- 3967bit GAS structure representation. The GAS has a one-byte "bit length" 3968field, 3969thus limiting the register length to 255 bits. ACPICA BZ 953. 3970 3971Example Code and Data Size: These are the sizes for the OS-independent 3972acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3973debug 3974version of the code includes the debug output trace mechanism and has a 3975much 3976larger code and data size. 3977 3978 Previous Release: 3979 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 3980 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 3981 Current Release: 3982 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 3983 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 3984 3985 39862) iASL Compiler/Disassembler and Tools: 3987 3988iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 3989macro. 3990This keyword was added late in the ACPI 5.0 release cycle and was not 3991implemented until now. 3992 3993Disassembler: Added support for Operation Region externals. Adds missing 3994support for operation regions that are defined in another table, and 3995referenced locally via a Field or BankField ASL operator. Now generates 3996the 3997correct External statement. 3998 3999Disassembler: Several additional fixes for the External() statement 4000generation 4001related to some ASL operators. Also, order the External() statements 4002alphabetically in the disassembler output. Fixes the External() 4003generation 4004for 4005the Create* field, Alias, and Scope operators: 4006 1) Create* buffer field operators - fix type mismatch warning on 4007disassembly 4008 2) Alias - implement missing External support 4009 3) Scope - fix to make sure all necessary externals are emitted. 4010 4011iASL: Improved pathname support. For include files, merge the prefix 4012pathname 4013with the file pathname and eliminate unnecessary components. Convert 4014backslashes in all pathnames to forward slashes, for readability. Include 4015file 4016pathname changes affect both #include and Include() type operators. 4017 4018iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 4019end 4020of a valid line by inserting a newline and then returning the EOF during 4021the 4022next call to GetNextLine. Prevents the line from being ignored due to EOF 4023condition. 4024 4025iASL: Implemented some changes to enhance the IDE support (-vi option.) 4026Error 4027and Warning messages are now correctly recognized for both the source 4028code 4029browser and the global error and warning counts. 4030 4031---------------------------------------- 403220 April 2012. Summary of changes for version 20120420: 4033 4034 40351) ACPICA Core Subsystem: 4036 4037Implemented support for multiple notify handlers. This change adds 4038support 4039to 4040allow multiple system and device notify handlers on Device, Thermal Zone, 4041and 4042Processor objects. This can simplify the host OS notification 4043implementation. 4044Also re-worked and restructured the entire notify support code to 4045simplify 4046handler installation, handler removal, notify event queuing, and notify 4047dispatch to handler(s). Note: there can still only be two global notify 4048handlers - one for system notifies and one for device notifies. There are 4049no 4050changes to the existing handler install/remove interfaces. Lin Ming, Bob 4051Moore, Rafael Wysocki. 4052 4053Fixed a regression in the package repair code where the object reference 4054count was calculated incorrectly. Regression was introduced in the commit 4055"Support to add Package wrappers". 4056 4057Fixed a couple possible memory leaks in the AML parser, in the error 4058recovery 4059path. Jesper Juhl, Lin Ming. 4060 4061Example Code and Data Size: These are the sizes for the OS-independent 4062acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4063debug version of the code includes the debug output trace mechanism and 4064has a 4065much larger code and data size. 4066 4067 Previous Release: 4068 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4069 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4070 Current Release: 4071 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4072 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 4073 4074 40752) iASL Compiler/Disassembler and Tools: 4076 4077iASL: Fixed a problem with the resource descriptor support where the 4078length 4079of the StartDependentFn and StartDependentFnNoPrio descriptors were not 4080included in cumulative descriptor offset, resulting in incorrect values 4081for 4082resource tags within resource descriptors appearing after a 4083StartDependent* 4084descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 4085 4086iASL and Preprocessor: Implemented full support for the #line directive 4087to 4088correctly track original source file line numbers through the .i 4089preprocessor 4090output file - for error and warning messages. 4091 4092iASL: Expand the allowable byte constants for address space IDs. 4093Previously, 4094the allowable range was 0x80-0xFF (user-defined spaces), now the range is 40950x0A-0xFF to allow for custom and new IDs without changing the compiler. 4096 4097iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 4098 4099iASL: Add option to completely disable the preprocessor (-Pn). 4100 4101iASL: Now emit all error/warning messages to standard error (stderr) by 4102default (instead of the previous stdout). 4103 4104ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 4105Update 4106for resource descriptor offset fix above. Update/cleanup error output 4107routines. Enable and send iASL errors/warnings to an error logfile 4108(error.txt). Send all other iASL output to a logfile (compiler.txt). 4109Fixed 4110several extraneous "unrecognized operator" messages. 4111 4112---------------------------------------- 411320 March 2012. Summary of changes for version 20120320: 4114 4115 41161) ACPICA Core Subsystem: 4117 4118Enhanced the sleep/wake interfaces to optionally execute the _GTS method 4119(Going To Sleep) and the _BFS method (Back From Sleep). Windows 4120apparently 4121does not execute these methods, and therefore these methods are often 4122untested. It has been seen on some systems where the execution of these 4123methods causes errors and also prevents the machine from entering S5. It 4124is 4125therefore suggested that host operating systems do not execute these 4126methods 4127by default. In the future, perhaps these methods can be optionally 4128executed 4129based on the age of the system and/or what is the newest version of 4130Windows 4131that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 4132and 4133AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 4134Ming. 4135 4136Fixed a problem where the length of the local/common FADT was set too 4137early. 4138The local FADT table length cannot be set to the common length until the 4139original length has been examined. There is code that checks the table 4140length 4141and sets various fields appropriately. This can affect older machines 4142with 4143early FADT versions. For example, this can cause inadvertent writes to 4144the 4145CST_CNT register. Julian Anastasov. 4146 4147Fixed a mapping issue related to a physical table override. Use the 4148deferred 4149mapping mechanism for tables loaded via the physical override OSL 4150interface. 4151This allows for early mapping before the virtual memory manager is 4152available. 4153Thomas Renninger, Bob Moore. 4154 4155Enhanced the automatic return-object repair code: Repair a common problem 4156with 4157predefined methods that are defined to return a variable-length Package 4158of 4159sub-objects. If there is only one sub-object, some BIOS ASL code 4160mistakenly 4161simply returns the single object instead of a Package with one sub- 4162object. 4163This new support will repair this error by wrapping a Package object 4164around 4165the original object, creating the correct and expected Package with one 4166sub- 4167object. Names that can be repaired in this manner include: _ALR, _CSD, 4168_HPX, 4169_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 4170939. 4171 4172Changed the exception code returned for invalid ACPI paths passed as 4173parameters to external interfaces such as AcpiEvaluateObject. Was 4174AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 4175 4176Example Code and Data Size: These are the sizes for the OS-independent 4177acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4178debug 4179version of the code includes the debug output trace mechanism and has a 4180much 4181larger code and data size. 4182 4183 Previous Release: 4184 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 4185 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4186 Current Release: 4187 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4188 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4189 4190 41912) iASL Compiler/Disassembler and Tools: 4192 4193iASL: Added the infrastructure and initial implementation of a integrated 4194C- 4195like preprocessor. This will simplify BIOS development process by 4196eliminating 4197the need for a separate preprocessing step during builds. On Windows, it 4198also 4199eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 4200features including full #define() macro support are still under 4201development. 4202These preprocessor directives are supported: 4203 #define 4204 #elif 4205 #else 4206 #endif 4207 #error 4208 #if 4209 #ifdef 4210 #ifndef 4211 #include 4212 #pragma message 4213 #undef 4214 #warning 4215In addition, these new command line options are supported: 4216 -D <symbol> Define symbol for preprocessor use 4217 -li Create preprocessed output file (*.i) 4218 -P Preprocess only and create preprocessor output file (*.i) 4219 4220Table Compiler: Fixed a problem where the equals operator within an 4221expression 4222did not work properly. 4223 4224Updated iASL to use the current versions of Bison/Flex. Updated the 4225Windows 4226project file to invoke these tools from the standard location. ACPICA BZ 4227904. 4228Versions supported: 4229 Flex for Windows: V2.5.4 4230 Bison for Windows: V2.4.1 4231 4232---------------------------------------- 423315 February 2012. Summary of changes for version 20120215: 4234 4235 42361) ACPICA Core Subsystem: 4237 4238There have been some major changes to the sleep/wake support code, as 4239described below (a - e). 4240 4241a) The AcpiLeaveSleepState has been split into two interfaces, similar to 4242AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 4243AcpiLeaveSleepStatePrep. This allows the host to perform actions between 4244the 4245time the _BFS method is called and the _WAK method is called. NOTE: all 4246hosts 4247must update their wake/resume code or else sleep/wake will not work 4248properly. 4249Rafael Wysocki. 4250 4251b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 4252_WAK 4253method. Some machines require that the GPEs are enabled before the _WAK 4254method 4255is executed. Thomas Renninger. 4256 4257c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 4258bit. 4259Some BIOS code assumes that WAK_STS will be cleared on resume and use it 4260to 4261determine whether the system is rebooting or resuming. Matthew Garrett. 4262 4263d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 4264Sleep) to 4265match the ACPI specification requirement. Rafael Wysocki. 4266 4267e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 4268registers within the V5 FADT. This support adds two new files: 4269hardware/hwesleep.c implements the support for the new registers. Moved 4270all 4271sleep/wake external interfaces to hardware/hwxfsleep.c. 4272 4273 4274Added a new OSL interface for ACPI table overrides, 4275AcpiOsPhysicalTableOverride. This interface allows the host to override a 4276table via a physical address, instead of the logical address required by 4277AcpiOsTableOverride. This simplifies the host implementation. Initial 4278implementation by Thomas Renninger. The ACPICA implementation creates a 4279single 4280shared function for table overrides that attempts both a logical and a 4281physical override. 4282 4283Expanded the OSL memory read/write interfaces to 64-bit data 4284(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 4285transfer support for GAS register structures passed to AcpiRead and 4286AcpiWrite. 4287 4288Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 4289custom 4290build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 4291model. 4292See the ACPICA reference for details. ACPICA BZ 942. This option removes 4293about 429410% of the code and 5% of the static data, and the following hardware 4295ACPI 4296features become unavailable: 4297 PM Event and Control registers 4298 SCI interrupt (and handler) 4299 Fixed Events 4300 General Purpose Events (GPEs) 4301 Global Lock 4302 ACPI PM timer 4303 FACS table (Waking vectors and Global Lock) 4304 4305Updated the unix tarball directory structure to match the ACPICA git 4306source 4307tree. This ensures that the generic unix makefiles work properly (in 4308generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 4309867. 4310 4311Updated the return value of the _REV predefined method to integer value 5 4312to 4313reflect ACPI 5.0 support. 4314 4315Moved the external ACPI PM timer interface prototypes to the public 4316acpixf.h 4317file where they belong. 4318 4319Example Code and Data Size: These are the sizes for the OS-independent 4320acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4321debug 4322version of the code includes the debug output trace mechanism and has a 4323much 4324larger code and data size. 4325 4326 Previous Release: 4327 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 4328 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 4329 Current Release: 4330 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 4331 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4332 4333 43342) iASL Compiler/Disassembler and Tools: 4335 4336Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 4337descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 4338incorrectly displayed. 4339 4340AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 4341specification. 4342 4343---------------------------------------- 434411 January 2012. Summary of changes for version 20120111: 4345 4346 43471) ACPICA Core Subsystem: 4348 4349Implemented a new mechanism to allow host device drivers to check for 4350address 4351range conflicts with ACPI Operation Regions. Both SystemMemory and 4352SystemIO 4353address spaces are supported. A new external interface, 4354AcpiCheckAddressRange, 4355allows drivers to check an address range against the ACPI namespace. See 4356the 4357ACPICA reference for additional details. Adds one new file, 4358utilities/utaddress.c. Lin Ming, Bob Moore. 4359 4360Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 4361Control 4362and 4363Status registers, update the ACPI 5.0 flags, and update internal data 4364structures to handle an FADT larger than 256 bytes. The size of the ACPI 43655.0 4366FADT is 268 bytes. 4367 4368Updated all ACPICA copyrights and signons to 2012. Added the 2012 4369copyright to 4370all module headers and signons, including the standard Linux header. This 4371affects virtually every file in the ACPICA core subsystem, iASL compiler, 4372and 4373all ACPICA utilities. 4374 4375Example Code and Data Size: These are the sizes for the OS-independent 4376acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4377debug 4378version of the code includes the debug output trace mechanism and has a 4379much 4380larger code and data size. 4381 4382 Previous Release: 4383 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 4384 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 4385 Current Release: 4386 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 4387 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 4388 4389 43902) iASL Compiler/Disassembler and Tools: 4391 4392Disassembler: fixed a problem with the automatic resource tag generation 4393support. Fixes a problem where the resource tags are inadvertently not 4394constructed if the table being disassembled contains external references 4395to 4396control methods. Moved the actual construction of the tags to after the 4397final 4398namespace is constructed (after 2nd parse is invoked due to external 4399control 4400method references.) ACPICA BZ 941. 4401 4402Table Compiler: Make all "generic" operators caseless. These are the 4403operators 4404like UINT8, String, etc. Making these caseless improves ease-of-use. 4405ACPICA BZ 4406934. 4407 4408---------------------------------------- 440923 November 2011. Summary of changes for version 20111123: 4410 44110) ACPI 5.0 Support: 4412 4413This release contains full support for the ACPI 5.0 specification, as 4414summarized below. 4415 4416Reduced Hardware Support: 4417------------------------- 4418 4419This support allows for ACPI systems without the usual ACPI hardware. 4420This 4421support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 4422will 4423not attempt to initialize or use any of the usual ACPI hardware. Note, 4424when 4425this flag is set, all of the following ACPI hardware is assumed to be not 4426present and is not initialized or accessed: 4427 4428 General Purpose Events (GPEs) 4429 Fixed Events (PM1a/PM1b and PM Control) 4430 Power Management Timer and Console Buttons (power/sleep) 4431 Real-time Clock Alarm 4432 Global Lock 4433 System Control Interrupt (SCI) 4434 The FACS is assumed to be non-existent 4435 4436ACPI Tables: 4437------------ 4438 4439All new tables and updates to existing tables are fully supported in the 4440ACPICA headers (for use by device drivers), the disassembler, and the 4441iASL 4442Data Table Compiler. ACPI 5.0 defines these new tables: 4443 4444 BGRT /* Boot Graphics Resource Table */ 4445 DRTM /* Dynamic Root of Trust for Measurement table */ 4446 FPDT /* Firmware Performance Data Table */ 4447 GTDT /* Generic Timer Description Table */ 4448 MPST /* Memory Power State Table */ 4449 PCCT /* Platform Communications Channel Table */ 4450 PMTT /* Platform Memory Topology Table */ 4451 RASF /* RAS Feature table */ 4452 4453Operation Regions/SpaceIDs: 4454--------------------------- 4455 4456All new operation regions are fully supported by the iASL compiler, the 4457disassembler, and the ACPICA runtime code (for dispatch to region 4458handlers.) 4459The new operation region Space IDs are: 4460 4461 GeneralPurposeIo 4462 GenericSerialBus 4463 4464Resource Descriptors: 4465--------------------- 4466 4467All new ASL resource descriptors are fully supported by the iASL 4468compiler, 4469the 4470ASL/AML disassembler, and the ACPICA runtime Resource Manager code 4471(including 4472all new predefined resource tags). New descriptors are: 4473 4474 FixedDma 4475 GpioIo 4476 GpioInt 4477 I2cSerialBus 4478 SpiSerialBus 4479 UartSerialBus 4480 4481ASL/AML Operators, New and Modified: 4482------------------------------------ 4483 4484One new operator is added, the Connection operator, which is used to 4485associate 4486a GeneralPurposeIo or GenericSerialBus resource descriptor with 4487individual 4488field objects within an operation region. Several new protocols are 4489associated 4490with the AccessAs operator. All are fully supported by the iASL compiler, 4491disassembler, and runtime ACPICA AML interpreter: 4492 4493 Connection // Declare Field Connection 4494attributes 4495 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 4496 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 4497Protocol 4498 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 4499 RawDataBuffer // Data type for Vendor Data 4500fields 4501 4502Predefined ASL/AML Objects: 4503--------------------------- 4504 4505All new predefined objects/control-methods are supported by the iASL 4506compiler 4507and the ACPICA runtime validation/repair (arguments and return values.) 4508New 4509predefined names include the following: 4510 4511Standard Predefined Names (Objects or Control Methods): 4512 _AEI, _CLS, _CPC, _CWS, _DEP, 4513 _DLM, _EVT, _GCP, _CRT, _GWS, 4514 _HRV, _PRE, _PSE, _SRT, _SUB. 4515 4516Resource Tags (Names used to access individual fields within resource 4517descriptors): 4518 _DBT, _DPL, _DRS, _END, _FLC, 4519 _IOR, _LIN, _MOD, _PAR, _PHA, 4520 _PIN, _PPI, _POL, _RXL, _SLV, 4521 _SPE, _STB, _TXL, _VEN. 4522 4523ACPICA External Interfaces: 4524--------------------------- 4525 4526Several new interfaces have been defined for use by ACPI-related device 4527drivers and other host OS services: 4528 4529AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 4530to 4531acquire and release AML mutexes that are defined in the DSDT/SSDT tables 4532provided by the BIOS. They are intended to be used in conjunction with 4533the 4534ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 4535mutual exclusion with the AML code/interpreter. 4536 4537AcpiGetEventResources: Returns the (formatted) resource descriptors as 4538defined 4539by the ACPI 5.0 _AEI object (ACPI Event Information). This object 4540provides 4541resource descriptors associated with hardware-reduced platform events, 4542similar 4543to the AcpiGetCurrentResources interface. 4544 4545Operation Region Handlers: For General Purpose IO and Generic Serial Bus 4546operation regions, information about the Connection() object and any 4547optional 4548length information is passed to the region handler within the Context 4549parameter. 4550 4551AcpiBufferToResource: This interface converts a raw AML buffer containing 4552a 4553resource template or resource descriptor to the ACPI_RESOURCE internal 4554format 4555suitable for use by device drivers. Can be used by an operation region 4556handler 4557to convert the Connection() buffer object into a ACPI_RESOURCE. 4558 4559Miscellaneous/Tools/TestSuites: 4560------------------------------- 4561 4562Support for extended _HID names (Four alpha characters instead of three). 4563Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 4564Support for ACPI 5.0 features in the ASLTS test suite. 4565Fully updated documentation (ACPICA and iASL reference documents.) 4566 4567ACPI Table Definition Language: 4568------------------------------- 4569 4570Support for this language was implemented and released as a subsystem of 4571the 4572iASL compiler in 2010. (See the iASL compiler User Guide.) 4573 4574 4575Non-ACPI 5.0 changes for this release: 4576-------------------------------------- 4577 45781) ACPICA Core Subsystem: 4579 4580Fix a problem with operation region declarations where a failure can 4581occur 4582if 4583the region name and an argument that evaluates to an object (such as the 4584region address) are in different namespace scopes. Lin Ming, ACPICA BZ 4585937. 4586 4587Do not abort an ACPI table load if an invalid space ID is found within. 4588This 4589will be caught later if the offending method is executed. ACPICA BZ 925. 4590 4591Fixed an issue with the FFixedHW space ID where the ID was not always 4592recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 4593 4594Fixed a problem with the 32-bit generation of the unix-specific OSL 4595(osunixxf.c). Lin Ming, ACPICA BZ 936. 4596 4597Several changes made to enable generation with the GCC 4.6 compiler. 4598ACPICA BZ 4599935. 4600 4601New error messages: Unsupported I/O requests (not 8/16/32 bit), and 4602Index/Bank 4603field registers out-of-range. 4604 46052) iASL Compiler/Disassembler and Tools: 4606 4607iASL: Implemented the __PATH__ operator, which returns the full pathname 4608of 4609the current source file. 4610 4611AcpiHelp: Automatically display expanded keyword information for all ASL 4612operators. 4613 4614Debugger: Add "Template" command to disassemble/dump resource template 4615buffers. 4616 4617Added a new master script to generate and execute the ASLTS test suite. 4618Automatically handles 32- and 64-bit generation. See tests/aslts.sh 4619 4620iASL: Fix problem with listing generation during processing of the 4621Switch() 4622operator where AML listing was disabled until the entire Switch block was 4623completed. 4624 4625iASL: Improve support for semicolon statement terminators. Fix "invalid 4626character" message for some cases when the semicolon is used. Semicolons 4627are 4628now allowed after every <Term> grammar element. ACPICA BZ 927. 4629 4630iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 4631923. 4632 4633Disassembler: Fix problem with disassembly of the DataTableRegion 4634operator 4635where an inadvertent "Unhandled deferred opcode" message could be 4636generated. 4637 46383) Example Code and Data Size 4639 4640These are the sizes for the OS-independent acpica.lib produced by the 4641Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 4642includes the debug output trace mechanism and has a much larger code and 4643data 4644size. 4645 4646 Previous Release: 4647 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4648 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4649 Current Release: 4650 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 4651 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 4652 4653---------------------------------------- 465422 September 2011. Summary of changes for version 20110922: 4655 46560) ACPI 5.0 News: 4657 4658Support for ACPI 5.0 in ACPICA has been underway for several months and 4659will 4660be released at the same time that ACPI 5.0 is officially released. 4661 4662The ACPI 5.0 specification is on track for release in the next few 4663months. 4664 46651) ACPICA Core Subsystem: 4666 4667Fixed a problem where the maximum sleep time for the Sleep() operator was 4668intended to be limited to two seconds, but was inadvertently limited to 466920 4670seconds instead. 4671 4672Linux and Unix makefiles: Added header file dependencies to ensure 4673correct 4674generation of ACPICA core code and utilities. Also simplified the 4675makefiles 4676considerably through the use of the vpath variable to specify search 4677paths. 4678ACPICA BZ 924. 4679 46802) iASL Compiler/Disassembler and Tools: 4681 4682iASL: Implemented support to check the access length for all fields 4683created to 4684access named Resource Descriptor fields. For example, if a resource field 4685is 4686defined to be two bits, a warning is issued if a CreateXxxxField() is 4687used 4688with an incorrect bit length. This is implemented for all current 4689resource 4690descriptor names. ACPICA BZ 930. 4691 4692Disassembler: Fixed a byte ordering problem with the output of 24-bit and 469356- 4694bit integers. 4695 4696iASL: Fixed a couple of issues associated with variable-length package 4697objects. 1) properly handle constants like One, Ones, Zero -- do not make 4698a 4699VAR_PACKAGE when these are used as a package length. 2) Allow the 4700VAR_PACKAGE 4701opcode (in addition to PACKAGE) when validating object types for 4702predefined 4703names. 4704 4705iASL: Emit statistics for all output files (instead of just the ASL input 4706and 4707AML output). Includes listings, hex files, etc. 4708 4709iASL: Added -G option to the table compiler to allow the compilation of 4710custom 4711ACPI tables. The only part of a table that is required is the standard 471236- 4713byte 4714ACPI header. 4715 4716AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 4717headers), 4718which also adds correct 64-bit support. Also, now all output filenames 4719are 4720completely lower case. 4721 4722AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 4723loading table files. A warning is issued for any such tables. The only 4724exception is an FADT. This also fixes a possible fault when attempting to 4725load 4726non-AML tables. ACPICA BZ 932. 4727 4728AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 4729a 4730missing table terminator could cause a fault when using the -p option. 4731 4732AcpiSrc: Fixed a possible divide-by-zero fault when generating file 4733statistics. 4734 47353) Example Code and Data Size 4736 4737These are the sizes for the OS-independent acpica.lib produced by the 4738Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 4739includes the debug output trace mechanism and has a much larger code and 4740data 4741size. 4742 4743 Previous Release (VC 9.0): 4744 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4745 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4746 Current Release (VC 9.0): 4747 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4748 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4749 4750 4751---------------------------------------- 475223 June 2011. Summary of changes for version 20110623: 4753 47541) ACPI CA Core Subsystem: 4755 4756Updated the predefined name repair mechanism to not attempt repair of a 4757_TSS 4758return object if a _PSS object is present. We can only sort the _TSS 4759return 4760package if there is no _PSS within the same scope. This is because if 4761_PSS 4762is 4763present, the ACPI specification dictates that the _TSS Power Dissipation 4764field 4765is to be ignored, and therefore some BIOSs leave garbage values in the 4766_TSS 4767Power field(s). In this case, it is best to just return the _TSS package 4768as- 4769is. Reported by, and fixed with assistance from Fenghua Yu. 4770 4771Added an option to globally disable the control method return value 4772validation 4773and repair. This runtime option can be used to disable return value 4774repair 4775if 4776this is causing a problem on a particular machine. Also added an option 4777to 4778AcpiExec (-dr) to set this disable flag. 4779 4780All makefiles and project files: Major changes to improve generation of 4781ACPICA 4782tools. ACPICA BZ 912: 4783 Reduce default optimization levels to improve compatibility 4784 For Linux, add strict-aliasing=0 for gcc 4 4785 Cleanup and simplify use of command line defines 4786 Cleanup multithread library support 4787 Improve usage messages 4788 4789Linux-specific header: update handling of THREAD_ID and pthread. For the 479032- 4791bit case, improve casting to eliminate possible warnings, especially with 4792the 4793acpica tools. 4794 4795Example Code and Data Size: These are the sizes for the OS-independent 4796acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4797debug 4798version of the code includes the debug output trace mechanism and has a 4799much 4800larger code and data size. 4801 4802 Previous Release (VC 9.0): 4803 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 4804 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4805 Current Release (VC 9.0): 4806 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4807 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4808 48092) iASL Compiler/Disassembler and Tools: 4810 4811With this release, a new utility named "acpihelp" has been added to the 4812ACPICA 4813package. This utility summarizes the ACPI specification chapters for the 4814ASL 4815and AML languages. It generates under Linux/Unix as well as Windows, and 4816provides the following functionality: 4817 Find/display ASL operator(s) -- with description and syntax. 4818 Find/display ASL keyword(s) -- with exact spelling and descriptions. 4819 Find/display ACPI predefined name(s) -- with description, number 4820 of arguments, and the return value data type. 4821 Find/display AML opcode name(s) -- with opcode, arguments, and 4822grammar. 4823 Decode/display AML opcode -- with opcode name, arguments, and 4824grammar. 4825 4826Service Layers: Make multi-thread support configurable. Conditionally 4827compile 4828the multi-thread support so that threading libraries will not be linked 4829if 4830not 4831necessary. The only tool that requires multi-thread support is AcpiExec. 4832 4833iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 4834of 4835Bison appear to want the interface to yyerror to be a const char * (or at 4836least this is a problem when generating iASL on some systems.) ACPICA BZ 4837923 4838Pierre Lejeune. 4839 4840Tools: Fix for systems where O_BINARY is not defined. Only used for 4841Windows 4842versions of the tools. 4843 4844---------------------------------------- 484527 May 2011. Summary of changes for version 20110527: 4846 48471) ACPI CA Core Subsystem: 4848 4849ASL Load() operator: Reinstate most restrictions on the incoming ACPI 4850table 4851signature. Now, only allow SSDT, OEMx, and a null signature. History: 4852 1) Originally, we checked the table signature for "SSDT" or "PSDT". 4853 (PSDT is now obsolete.) 4854 2) We added support for OEMx tables, signature "OEM" plus a fourth 4855 "don't care" character. 4856 3) Valid tables were encountered with a null signature, so we just 4857 gave up on validating the signature, (05/2008). 4858 4) We encountered non-AML tables such as the MADT, which caused 4859 interpreter errors and kernel faults. So now, we once again allow 4860 only SSDT, OEMx, and now, also a null signature. (05/2011). 4861 4862Added the missing _TDL predefined name to the global name list in order 4863to 4864enable validation. Affects both the core ACPICA code and the iASL 4865compiler. 4866 4867Example Code and Data Size: These are the sizes for the OS-independent 4868acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4869debug 4870version of the code includes the debug output trace mechanism and has a 4871much 4872larger code and data size. 4873 4874 Previous Release (VC 9.0): 4875 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 4876 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 4877 Current Release (VC 9.0): 4878 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 4879 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4880 48812) iASL Compiler/Disassembler and Tools: 4882 4883Debugger/AcpiExec: Implemented support for "complex" method arguments on 4884the 4885debugger command line. This adds support beyond simple integers -- 4886including 4887Strings, Buffers, and Packages. Includes support for nested packages. 4888Increased the default command line buffer size to accommodate these 4889arguments. 4890See the ACPICA reference for details and syntax. ACPICA BZ 917. 4891 4892Debugger/AcpiExec: Implemented support for "default" method arguments for 4893the 4894Execute/Debug command. Now, the debugger will always invoke a control 4895method 4896with the required number of arguments -- even if the command line 4897specifies 4898none or insufficient arguments. It uses default integer values for any 4899missing 4900arguments. Also fixes a bug where only six method arguments maximum were 4901supported instead of the required seven. 4902 4903Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 4904and 4905also return status in order to prevent buffer overruns. See the ACPICA 4906reference for details and syntax. ACPICA BZ 921 4907 4908iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 4909makefiles to simplify support for the two different but similar parser 4910generators, bison and yacc. 4911 4912Updated the generic unix makefile for gcc 4. The default gcc version is 4913now 4914expected to be 4 or greater, since options specific to gcc 4 are used. 4915 4916---------------------------------------- 491713 April 2011. Summary of changes for version 20110413: 4918 49191) ACPI CA Core Subsystem: 4920 4921Implemented support to execute a so-called "orphan" _REG method under the 4922EC 4923device. This change will force the execution of a _REG method underneath 4924the 4925EC 4926device even if there is no corresponding operation region of type 4927EmbeddedControl. Fixes a problem seen on some machines and apparently is 4928compatible with Windows behavior. ACPICA BZ 875. 4929 4930Added more predefined methods that are eligible for automatic NULL 4931package 4932element removal. This change adds another group of predefined names to 4933the 4934list 4935of names that can be repaired by having NULL package elements dynamically 4936removed. This group are those methods that return a single variable- 4937length 4938package containing simple data types such as integers, buffers, strings. 4939This 4940includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 4941_PSL, 4942_Sx, 4943and _TZD. ACPICA BZ 914. 4944 4945Split and segregated all internal global lock functions to a new file, 4946evglock.c. 4947 4948Updated internal address SpaceID for DataTable regions. Moved this 4949internal 4950space 4951id in preparation for ACPI 5.0 changes that will include some new space 4952IDs. 4953This 4954change should not affect user/host code. 4955 4956Example Code and Data Size: These are the sizes for the OS-independent 4957acpica.lib 4958produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 4959version of 4960the code includes the debug output trace mechanism and has a much larger 4961code 4962and 4963data size. 4964 4965 Previous Release (VC 9.0): 4966 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 4967 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 4968 Current Release (VC 9.0): 4969 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 4970 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 4971 49722) iASL Compiler/Disassembler and Tools: 4973 4974iASL/DTC: Major update for new grammar features. Allow generic data types 4975in 4976custom ACPI tables. Field names are now optional. Any line can be split 4977to 4978multiple lines using the continuation char (\). Large buffers now use 4979line- 4980continuation character(s) and no colon on the continuation lines. See the 4981grammar 4982update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 4983Moore. 4984 4985iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 4986statements. 4987Since the parser stuffs a "zero" as the return value for these statements 4988(due 4989to 4990the underlying AML grammar), they were seen as "return with value" by the 4991iASL 4992semantic checking. They are now seen correctly as "null" return 4993statements. 4994 4995iASL: Check if a_REG declaration has a corresponding Operation Region. 4996Adds a 4997check for each _REG to ensure that there is in fact a corresponding 4998operation 4999region declaration in the same scope. If not, the _REG method is not very 5000useful 5001since it probably won't be executed. ACPICA BZ 915. 5002 5003iASL/DTC: Finish support for expression evaluation. Added a new 5004expression 5005parser 5006that implements c-style operator precedence and parenthesization. ACPICA 5007bugzilla 5008908. 5009 5010Disassembler/DTC: Remove support for () and <> style comments in data 5011tables. 5012Now 5013that DTC has full expression support, we don't want to have comment 5014strings 5015that 5016start with a parentheses or a less-than symbol. Now, only the standard /* 5017and 5018// 5019comments are supported, as well as the bracket [] comments. 5020 5021AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 5022"unusual" 5023headers in the acpidump file. Update the header validation to support 5024these 5025tables. Problem introduced in previous AcpiXtract version in the change 5026to 5027support "wrong checksum" error messages emitted by acpidump utility. 5028 5029iASL: Add a * option to generate all template files (as a synonym for 5030ALL) 5031as 5032in 5033"iasl -T *" or "iasl -T ALL". 5034 5035iASL/DTC: Do not abort compiler on fatal errors. We do not want to 5036completely 5037abort the compiler on "fatal" errors, simply should abort the current 5038compile. 5039This allows multiple compiles with a single (possibly wildcard) compiler 5040invocation. 5041 5042---------------------------------------- 504316 March 2011. Summary of changes for version 20110316: 5044 50451) ACPI CA Core Subsystem: 5046 5047Fixed a problem caused by a _PRW method appearing at the namespace root 5048scope 5049during the setup of wake GPEs. A fault could occur if a _PRW directly 5050under 5051the 5052root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 5053 5054Implemented support for "spurious" Global Lock interrupts. On some 5055systems, a 5056global lock interrupt can occur without the pending flag being set. Upon 5057a 5058GL 5059interrupt, we now ensure that a thread is actually waiting for the lock 5060before 5061signaling GL availability. Rafael Wysocki, Bob Moore. 5062 5063Example Code and Data Size: These are the sizes for the OS-independent 5064acpica.lib 5065produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 5066version of 5067the code includes the debug output trace mechanism and has a much larger 5068code 5069and 5070data size. 5071 5072 Previous Release (VC 9.0): 5073 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5074 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5075 Current Release (VC 9.0): 5076 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 5077 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 5078 50792) iASL Compiler/Disassembler and Tools: 5080 5081Implemented full support for the "SLIC" ACPI table. Includes support in 5082the 5083header files, disassembler, table compiler, and template generator. Bob 5084Moore, 5085Lin Ming. 5086 5087AcpiXtract: Correctly handle embedded comments and messages from 5088AcpiDump. 5089Apparently some or all versions of acpidump will occasionally emit a 5090comment 5091like 5092"Wrong checksum", etc., into the dump file. This was causing problems for 5093AcpiXtract. ACPICA BZ 905. 5094 5095iASL: Fix the Linux makefile by removing an inadvertent double file 5096inclusion. 5097ACPICA BZ 913. 5098 5099AcpiExec: Update installation of operation region handlers. Install one 5100handler 5101for a user-defined address space. This is used by the ASL test suite 5102(ASLTS). 5103 5104---------------------------------------- 510511 February 2011. Summary of changes for version 20110211: 5106 51071) ACPI CA Core Subsystem: 5108 5109Added a mechanism to defer _REG methods for some early-installed 5110handlers. 5111Most user handlers should be installed before call to 5112AcpiEnableSubsystem. 5113However, Event handlers and region handlers should be installed after 5114AcpiInitializeObjects. Override handlers for the "default" regions should 5115be 5116installed early, however. This change executes all _REG methods for the 5117default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 5118chicken/egg issues between them. ACPICA BZ 848. 5119 5120Implemented an optimization for GPE detection. This optimization will 5121simply 5122ignore GPE registers that contain no enabled GPEs -- there is no need to 5123read the register since this information is available internally. This 5124becomes more important on machines with a large GPE space. ACPICA 5125bugzilla 5126884. Lin Ming. Suggestion from Joe Liu. 5127 5128Removed all use of the highly unreliable FADT revision field. The 5129revision 5130number in the FADT has been found to be completely unreliable and cannot 5131be 5132trusted. Only the actual table length can be used to infer the version. 5133This 5134change updates the ACPICA core and the disassembler so that both no 5135longer 5136even look at the FADT version and instead depend solely upon the FADT 5137length. 5138 5139Fix an unresolved name issue for the no-debug and no-error-message source 5140generation cases. The _AcpiModuleName was left undefined in these cases, 5141but 5142it is actually needed as a parameter to some interfaces. Define 5143_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 5144 5145Split several large files (makefiles and project files updated) 5146 utglobal.c -> utdecode.c 5147 dbcomds.c -> dbmethod.c dbnames.c 5148 dsopcode.c -> dsargs.c dscontrol.c 5149 dsload.c -> dsload2.c 5150 aslanalyze.c -> aslbtypes.c aslwalks.c 5151 5152Example Code and Data Size: These are the sizes for the OS-independent 5153acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5154debug version of the code includes the debug output trace mechanism and 5155has 5156a much larger code and data size. 5157 5158 Previous Release (VC 9.0): 5159 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5160 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5161 Current Release (VC 9.0): 5162 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5163 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5164 51652) iASL Compiler/Disassembler and Tools: 5166 5167iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 5168These are useful C-style macros with the standard definitions. ACPICA 5169bugzilla 898. 5170 5171iASL/DTC: Added support for integer expressions and labels. Support for 5172full 5173expressions for all integer fields in all ACPI tables. Support for labels 5174in 5175"generic" portions of tables such as UEFI. See the iASL reference manual. 5176 5177Debugger: Added a command to display the status of global handlers. The 5178"handlers" command will display op region, fixed event, and miscellaneous 5179global handlers. installation status -- and for op regions, whether 5180default 5181or user-installed handler will be used. 5182 5183iASL: Warn if reserved method incorrectly returns a value. Many 5184predefined 5185names are defined such that they do not return a value. If implemented as 5186a 5187method, issue a warning if such a name explicitly returns a value. ACPICA 5188Bugzilla 855. 5189 5190iASL: Added detection of GPE method name conflicts. Detects a conflict 5191where 5192there are two GPE methods of the form _Lxy and _Exy in the same scope. 5193(For 5194example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 5195 5196iASL/DTC: Fixed a couple input scanner issues with comments and line 5197numbers. Comment remover could get confused and miss a comment ending. 5198Fixed 5199a problem with line counter maintenance. 5200 5201iASL/DTC: Reduced the severity of some errors from fatal to error. There 5202is 5203no need to abort on simple errors within a field definition. 5204 5205Debugger: Simplified the output of the help command. All help output now 5206in 5207a single screen, instead of help subcommands. ACPICA Bugzilla 897. 5208 5209---------------------------------------- 521012 January 2011. Summary of changes for version 20110112: 5211 52121) ACPI CA Core Subsystem: 5213 5214Fixed a race condition between method execution and namespace walks that 5215can 5216possibly cause a fault. The problem was apparently introduced in version 521720100528 as a result of a performance optimization that reduces the 5218number 5219of 5220namespace walks upon method exit by using the delete_namespace_subtree 5221function instead of the delete_namespace_by_owner function used 5222previously. 5223Bug is a missing namespace lock in the delete_namespace_subtree function. 5224dana.myers@oracle.com 5225 5226Fixed several issues and a possible fault with the automatic "serialized" 5227method support. History: This support changes a method to "serialized" on 5228the 5229fly if the method generates an AE_ALREADY_EXISTS error, indicating the 5230possibility that it cannot handle reentrancy. This fix repairs a couple 5231of 5232issues seen in the field, especially on machines with many cores: 5233 5234 1) Delete method children only upon the exit of the last thread, 5235 so as to not delete objects out from under other running threads 5236 (and possibly causing a fault.) 5237 2) Set the "serialized" bit for the method only upon the exit of the 5238 Last thread, so as to not cause deadlock when running threads 5239 attempt to exit. 5240 3) Cleanup the use of the AML "MethodFlags" and internal method flags 5241 so that there is no longer any confusion between the two. 5242 5243 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 5244 5245Debugger: Now lock the namespace for duration of a namespace dump. 5246Prevents 5247issues if the namespace is changing dynamically underneath the debugger. 5248Especially affects temporary namespace nodes, since the debugger displays 5249these also. 5250 5251Updated the ordering of include files. The ACPICA headers should appear 5252before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 5253set 5254any necessary compiler-specific defines, etc. Affects the ACPI-related 5255tools 5256and utilities. 5257 5258Updated all ACPICA copyrights and signons to 2011. Added the 2011 5259copyright 5260to all module headers and signons, including the Linux header. This 5261affects 5262virtually every file in the ACPICA core subsystem, iASL compiler, and all 5263utilities. 5264 5265Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 5266project files for VC++ 6.0 are now obsolete. New project files can be 5267found 5268under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 5269details. 5270 5271Example Code and Data Size: These are the sizes for the OS-independent 5272acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5273debug version of the code includes the debug output trace mechanism and 5274has a 5275much larger code and data size. 5276 5277 Previous Release (VC 6.0): 5278 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 5279 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 5280 Current Release (VC 9.0): 5281 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5282 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5283 52842) iASL Compiler/Disassembler and Tools: 5285 5286iASL: Added generic data types to the Data Table compiler. Add "generic" 5287data 5288types such as UINT32, String, Unicode, etc., to simplify the generation 5289of 5290platform-defined tables such as UEFI. Lin Ming. 5291 5292iASL: Added listing support for the Data Table Compiler. Adds listing 5293support 5294(-l) to display actual binary output for each line of input code. 5295 5296---------------------------------------- 529709 December 2010. Summary of changes for version 20101209: 5298 52991) ACPI CA Core Subsystem: 5300 5301Completed the major overhaul of the GPE support code that was begun in 5302July 53032010. Major features include: removal of _PRW execution in ACPICA (host 5304executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 5305changes to existing interfaces, simplification of GPE handler operation, 5306and 5307a handful of new interfaces: 5308 5309 AcpiUpdateAllGpes 5310 AcpiFinishGpe 5311 AcpiSetupGpeForWake 5312 AcpiSetGpeWakeMask 5313 One new file, evxfgpe.c to consolidate all external GPE interfaces. 5314 5315See the ACPICA Programmer Reference for full details and programming 5316information. See the new section 4.4 "General Purpose Event (GPE) 5317Support" 5318for a full overview, and section 8.7 "ACPI General Purpose Event 5319Management" 5320for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 5321Ming, 5322Bob Moore, Rafael Wysocki. 5323 5324Implemented a new GPE feature for Windows compatibility, the "Implicit 5325Wake 5326GPE Notify". This feature will automatically issue a Notify(2) on a 5327device 5328when a Wake GPE is received if there is no corresponding GPE method or 5329handler. ACPICA BZ 870. 5330 5331Fixed a problem with the Scope() operator during table parse and load 5332phase. 5333During load phase (table load or method execution), the scope operator 5334should 5335not enter the target into the namespace. Instead, it should open a new 5336scope 5337at the target location. Linux BZ 19462, ACPICA BZ 882. 5338 5339Example Code and Data Size: These are the sizes for the OS-independent 5340acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5341debug version of the code includes the debug output trace mechanism and 5342has a 5343much larger code and data size. 5344 5345 Previous Release: 5346 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 5347 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 5348 Current Release: 5349 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5350 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5351 53522) iASL Compiler/Disassembler and Tools: 5353 5354iASL: Relax the alphanumeric restriction on _CID strings. These strings 5355are 5356"bus-specific" per the ACPI specification, and therefore any characters 5357are 5358acceptable. The only checks that can be performed are for a null string 5359and 5360perhaps for a leading asterisk. ACPICA BZ 886. 5361 5362iASL: Fixed a problem where a syntax error that caused a premature EOF 5363condition on the source file emitted a very confusing error message. The 5364premature EOF is now detected correctly. ACPICA BZ 891. 5365 5366Disassembler: Decode the AccessSize within a Generic Address Structure 5367(byte 5368access, word access, etc.) Note, this field does not allow arbitrary bit 5369access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 5370 5371New: AcpiNames utility - Example namespace dump utility. Shows an example 5372of 5373ACPICA configuration for a minimal namespace dump utility. Uses table and 5374namespace managers, but no AML interpreter. Does not add any 5375functionality 5376over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 5377partition and configure ACPICA. ACPICA BZ 883. 5378 5379AML Debugger: Increased the debugger buffer size for method return 5380objects. 5381Was 4K, increased to 16K. Also enhanced error messages for debugger 5382method 5383execution, including the buffer overflow case. 5384 5385---------------------------------------- 538613 October 2010. Summary of changes for version 20101013: 5387 53881) ACPI CA Core Subsystem: 5389 5390Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 5391now 5392clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 5393HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 5394 5395Changed the type of the predefined namespace object _TZ from ThermalZone 5396to 5397Device. This was found to be confusing to the host software that 5398processes 5399the various thermal zones, since _TZ is not really a ThermalZone. 5400However, 5401a 5402Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 5403Zhang. 5404 5405Added Windows Vista SP2 to the list of supported _OSI strings. The actual 5406string is "Windows 2006 SP2". 5407 5408Eliminated duplicate code in AcpiUtExecute* functions. Now that the 5409nsrepair 5410code automatically repairs _HID-related strings, this type of code is no 5411longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 5412878. 5413 5414Example Code and Data Size: These are the sizes for the OS-independent 5415acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5416debug version of the code includes the debug output trace mechanism and 5417has a 5418much larger code and data size. 5419 5420 Previous Release: 5421 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5422 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5423 Current Release: 5424 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5425 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5426 54272) iASL Compiler/Disassembler and Tools: 5428 5429iASL: Implemented additional compile-time validation for _HID strings. 5430The 5431non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 5432length 5433of 5434the string must be exactly seven or eight characters. For both _HID and 5435_CID 5436strings, all characters must be alphanumeric. ACPICA BZ 874. 5437 5438iASL: Allow certain "null" resource descriptors. Some BIOS code creates 5439descriptors that are mostly or all zeros, with the expectation that they 5440will 5441be filled in at runtime. iASL now allows this as long as there is a 5442"resource 5443tag" (name) associated with the descriptor, which gives the ASL a handle 5444needed to modify the descriptor. ACPICA BZ 873. 5445 5446Added single-thread support to the generic Unix application OSL. 5447Primarily 5448for iASL support, this change removes the use of semaphores in the 5449single- 5450threaded ACPICA tools/applications - increasing performance. The 5451_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 5452option. ACPICA BZ 879. 5453 5454AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 5455support 5456for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 5457 5458iASL: Moved all compiler messages to a new file, aslmessages.h. 5459 5460---------------------------------------- 546115 September 2010. Summary of changes for version 20100915: 5462 54631) ACPI CA Core Subsystem: 5464 5465Removed the AcpiOsDerivePciId OSL interface. The various host 5466implementations 5467of this function were not OS-dependent and are now obsolete and can be 5468removed from all host OSLs. This function has been replaced by 5469AcpiHwDerivePciId, which is now part of the ACPICA core code. 5470AcpiHwDerivePciId has been implemented without recursion. Adds one new 5471module, hwpci.c. ACPICA BZ 857. 5472 5473Implemented a dynamic repair for _HID and _CID strings. The following 5474problems are now repaired at runtime: 1) Remove a leading asterisk in the 5475string, and 2) the entire string is uppercased. Both repairs are in 5476accordance with the ACPI specification and will simplify host driver 5477code. 5478ACPICA BZ 871. 5479 5480The ACPI_THREAD_ID type is no longer configurable, internally it is now 5481always UINT64. This simplifies the ACPICA code, especially any printf 5482output. 5483UINT64 is the only common data type for all thread_id types across all 5484operating systems. It is now up to the host OSL to cast the native 5485thread_id 5486type to UINT64 before returning the value to ACPICA (via 5487AcpiOsGetThreadId). 5488Lin Ming, Bob Moore. 5489 5490Added the ACPI_INLINE type to enhance the ACPICA configuration. The 5491"inline" 5492keyword is not standard across compilers, and this type allows inline to 5493be 5494configured on a per-compiler basis. Lin Ming. 5495 5496Made the system global AcpiGbl_SystemAwakeAndRunning publically 5497available. 5498Added an extern for this boolean in acpixf.h. Some hosts utilize this 5499value 5500during suspend/restore operations. ACPICA BZ 869. 5501 5502All code that implements error/warning messages with the "ACPI:" prefix 5503has 5504been moved to a new module, utxferror.c. 5505 5506The UINT64_OVERLAY was moved to utmath.c, which is the only module where 5507it 5508is used. ACPICA BZ 829. Lin Ming, Bob Moore. 5509 5510Example Code and Data Size: These are the sizes for the OS-independent 5511acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5512debug version of the code includes the debug output trace mechanism and 5513has a 5514much larger code and data size. 5515 5516 Previous Release: 5517 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 5518 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 5519 Current Release: 5520 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5521 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5522 55232) iASL Compiler/Disassembler and Tools: 5524 5525iASL/Disassembler: Write ACPI errors to stderr instead of the output 5526file. 5527This keeps the output files free of random error messages that may 5528originate 5529from within the namespace/interpreter code. Used this opportunity to 5530merge 5531all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 5532866. Lin Ming, Bob Moore. 5533 5534Tools: update some printfs for ansi warnings on size_t. Handle width 5535change 5536of size_t on 32-bit versus 64-bit generations. Lin Ming. 5537 5538---------------------------------------- 553906 August 2010. Summary of changes for version 20100806: 5540 55411) ACPI CA Core Subsystem: 5542 5543Designed and implemented a new host interface to the _OSI support code. 5544This 5545will allow the host to dynamically add or remove multiple _OSI strings, 5546as 5547well as install an optional handler that is called for each _OSI 5548invocation. 5549Also added a new AML debugger command, 'osi' to display and modify the 5550global 5551_OSI string table, and test support in the AcpiExec utility. See the 5552ACPICA 5553reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 5554New Functions: 5555 AcpiInstallInterface - Add an _OSI string. 5556 AcpiRemoveInterface - Delete an _OSI string. 5557 AcpiInstallInterfaceHandler - Install optional _OSI handler. 5558Obsolete Functions: 5559 AcpiOsValidateInterface - no longer used. 5560New Files: 5561 source/components/utilities/utosi.c 5562 5563Re-introduced the support to enable multi-byte transfers for Embedded 5564Controller (EC) operation regions. A reported problem was found to be a 5565bug 5566in the host OS, not in the multi-byte support. Previously, the maximum 5567data 5568size passed to the EC operation region handler was a single byte. There 5569are 5570often EC Fields larger than one byte that need to be transferred, and it 5571is 5572useful for the EC driver to lock these as a single transaction. This 5573change 5574enables single transfers larger than 8 bits. This effectively changes the 5575access to the EC space from ByteAcc to AnyAcc, and will probably require 5576changes to the host OS Embedded Controller driver to enable 16/32/64/256- 5577bit 5578transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 5579 5580Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 5581prototype in acpiosxf.h had the output value pointer as a (void *). 5582It should be a (UINT64 *). This may affect some host OSL code. 5583 5584Fixed a couple problems with the recently modified Linux makefiles for 5585iASL 5586and AcpiExec. These new makefiles place the generated object files in the 5587local directory so that there can be no collisions between the files that 5588are 5589shared between them that are compiled with different options. 5590 5591Example Code and Data Size: These are the sizes for the OS-independent 5592acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5593debug version of the code includes the debug output trace mechanism and 5594has a 5595much larger code and data size. 5596 5597 Previous Release: 5598 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5599 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 5600 Current Release: 5601 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 5602 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 5603 56042) iASL Compiler/Disassembler and Tools: 5605 5606iASL/Disassembler: Added a new option (-da, "disassemble all") to load 5607the 5608namespace from and disassemble an entire group of AML files. Useful for 5609loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 5610and 5611disassembling with one simple command. ACPICA BZ 865. Lin Ming. 5612 5613iASL: Allow multiple invocations of -e option. This change allows 5614multiple 5615uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 5616834. 5617Lin Ming. 5618 5619---------------------------------------- 562002 July 2010. Summary of changes for version 20100702: 5621 56221) ACPI CA Core Subsystem: 5623 5624Implemented several updates to the recently added GPE reference count 5625support. The model for "wake" GPEs is changing to give the host OS 5626complete 5627control of these GPEs. Eventually, the ACPICA core will not execute any 5628_PRW 5629methods, since the host already must execute them. Also, additional 5630changes 5631were made to help ensure that the reference counts are kept in proper 5632synchronization with reality. Rafael J. Wysocki. 5633 56341) Ensure that GPEs are not enabled twice during initialization. 56352) Ensure that GPE enable masks stay in sync with the reference count. 56363) Do not inadvertently enable GPEs when writing GPE registers. 56374) Remove the internal wake reference counter and add new AcpiGpeWakeup 5638interface. This interface will set or clear individual GPEs for wakeup. 56395) Remove GpeType argument from AcpiEnable and AcpiDisable. These 5640interfaces 5641are now used for "runtime" GPEs only. 5642 5643Changed the behavior of the GPE install/remove handler interfaces. The 5644GPE 5645is 5646no longer disabled during this process, as it was found to cause problems 5647on 5648some machines. Rafael J. Wysocki. 5649 5650Reverted a change introduced in version 20100528 to enable Embedded 5651Controller multi-byte transfers. This change was found to cause problems 5652with 5653Index Fields and possibly Bank Fields. It will be reintroduced when these 5654problems have been resolved. 5655 5656Fixed a problem with references to Alias objects within Package Objects. 5657A 5658reference to an Alias within the definition of a Package was not always 5659resolved properly. Aliases to objects like Processors, Thermal zones, 5660etc. 5661were resolved to the actual object instead of a reference to the object 5662as 5663it 5664should be. Package objects are only allowed to contain integer, string, 5665buffer, package, and reference objects. Redhat bugzilla 608648. 5666 5667Example Code and Data Size: These are the sizes for the OS-independent 5668acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5669debug version of the code includes the debug output trace mechanism and 5670has a 5671much larger code and data size. 5672 5673 Previous Release: 5674 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5675 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 5676 Current Release: 5677 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5678 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 5679 56802) iASL Compiler/Disassembler and Tools: 5681 5682iASL: Implemented a new compiler subsystem to allow definition and 5683compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 5684These 5685are called "ACPI Data Tables", and the new compiler is the "Data Table 5686Compiler". This compiler is intended to simplify the existing error-prone 5687process of creating these tables for the BIOS, as well as allowing the 5688disassembly, modification, recompilation, and override of existing ACPI 5689data 5690tables. See the iASL User Guide for detailed information. 5691 5692iASL: Implemented a new Template Generator option in support of the new 5693Data 5694Table Compiler. This option will create examples of all known ACPI tables 5695that can be used as the basis for table development. See the iASL 5696documentation and the -T option. 5697 5698Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 5699Descriptor Table). 5700 5701Updated the Linux makefiles for iASL and AcpiExec to place the generated 5702object files in the local directory so that there can be no collisions 5703between the shared files between them that are generated with different 5704options. 5705 5706Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 5707Use 5708the #define __APPLE__ to enable this support. 5709 5710---------------------------------------- 571128 May 2010. Summary of changes for version 20100528: 5712 5713Note: The ACPI 4.0a specification was released on April 5, 2010 and is 5714available at www.acpi.info. This is primarily an errata release. 5715 57161) ACPI CA Core Subsystem: 5717 5718Undefined ACPI tables: We are looking for the definitions for the 5719following 5720ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 5721 5722Implemented support to enable multi-byte transfers for Embedded 5723Controller 5724(EC) operation regions. Previously, the maximum data size passed to the 5725EC 5726operation region handler was a single byte. There are often EC Fields 5727larger 5728than one byte that need to be transferred, and it is useful for the EC 5729driver 5730to lock these as a single transaction. This change enables single 5731transfers 5732larger than 8 bits. This effectively changes the access to the EC space 5733from 5734ByteAcc to AnyAcc, and will probably require changes to the host OS 5735Embedded 5736Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 5737bit 5738transfers. Alexey Starikovskiy, Lin Ming 5739 5740Implemented a performance enhancement for namespace search and access. 5741This 5742change enhances the performance of namespace searches and walks by adding 5743a 5744backpointer to the parent in each namespace node. On large namespaces, 5745this 5746change can improve overall ACPI performance by up to 9X. Adding a pointer 5747to 5748each namespace node increases the overall size of the internal namespace 5749by 5750about 5%, since each namespace entry usually consists of both a namespace 5751node and an ACPI operand object. However, this is the first growth of the 5752namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 5753 5754Implemented a performance optimization that reduces the number of 5755namespace 5756walks. On control method exit, only walk the namespace if the method is 5757known 5758to have created namespace objects outside of its local scope. Previously, 5759the 5760entire namespace was traversed on each control method exit. This change 5761can 5762improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 5763Moore. 5764 5765Added support to truncate I/O addresses to 16 bits for Windows 5766compatibility. 5767Some ASL code has been seen in the field that inadvertently has bits set 5768above bit 15. This feature is optional and is enabled if the BIOS 5769requests 5770any Windows OSI strings. It can also be enabled by the host OS. Matthew 5771Garrett, Bob Moore. 5772 5773Added support to limit the maximum time for the ASL Sleep() operator. To 5774prevent accidental deep sleeps, limit the maximum time that Sleep() will 5775actually sleep. Configurable, the default maximum is two seconds. ACPICA 5776bugzilla 854. 5777 5778Added run-time validation support for the _WDG and_WED Microsoft 5779predefined 5780methods. These objects are defined by "Windows Instrumentation", and are 5781not 5782part of the ACPI spec. ACPICA BZ 860. 5783 5784Expanded all statistic counters used during namespace and device 5785initialization from 16 to 32 bits in order to support very large 5786namespaces. 5787 5788Replaced all instances of %d in printf format specifiers with %u since 5789nearly 5790all integers in ACPICA are unsigned. 5791 5792Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 5793returned 5794as AE_NO_HANDLER. 5795 5796Example Code and Data Size: These are the sizes for the OS-independent 5797acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5798debug version of the code includes the debug output trace mechanism and 5799has a 5800much larger code and data size. 5801 5802 Previous Release: 5803 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 5804 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 5805 Current Release: 5806 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5807 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 5808 58092) iASL Compiler/Disassembler and Tools: 5810 5811iASL: Added compiler support for the _WDG and_WED Microsoft predefined 5812methods. These objects are defined by "Windows Instrumentation", and are 5813not 5814part of the ACPI spec. ACPICA BZ 860. 5815 5816AcpiExec: added option to disable the memory tracking mechanism. The -dt 5817option will disable the tracking mechanism, which improves performance 5818considerably. 5819 5820AcpiExec: Restructured the command line options into -d (disable) and -e 5821(enable) options. 5822 5823---------------------------------------- 582428 April 2010. Summary of changes for version 20100428: 5825 58261) ACPI CA Core Subsystem: 5827 5828Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 5829including FADT-based and GPE Block Devices, execute any _PRW methods in 5830the 5831new table, and process any _Lxx/_Exx GPE methods in the new table. Any 5832runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 5833immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 5834Devices. Provides compatibility with other ACPI implementations. Two new 5835files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 5836Moore. 5837 5838Fixed a regression introduced in version 20100331 within the table 5839manager 5840where initial table loading could fail. This was introduced in the fix 5841for 5842AcpiReallocateRootTable. Also, renamed some of fields in the table 5843manager 5844data structures to clarify their meaning and use. 5845 5846Fixed a possible allocation overrun during internal object copy in 5847AcpiUtCopySimpleObject. The original code did not correctly handle the 5848case 5849where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 5850847. 5851 5852Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 5853possible access beyond end-of-allocation. Also, now fully validate 5854descriptor 5855(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 5856 5857Example Code and Data Size: These are the sizes for the OS-independent 5858acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5859debug version of the code includes the debug output trace mechanism and 5860has a 5861much larger code and data size. 5862 5863 Previous Release: 5864 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 5865 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 5866 Current Release: 5867 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 5868 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 5869 58702) iASL Compiler/Disassembler and Tools: 5871 5872iASL: Implemented Min/Max/Len/Gran validation for address resource 5873descriptors. This change implements validation for the address fields 5874that 5875are common to all address-type resource descriptors. These checks are 5876implemented: Checks for valid Min/Max, length within the Min/Max window, 5877valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 5878per 5879table 6-40 in the ACPI 4.0a specification. Also split the large 5880aslrestype1.c 5881and aslrestype2.c files into five new files. ACPICA BZ 840. 5882 5883iASL: Added support for the _Wxx predefined names. This support was 5884missing 5885and these names were not recognized by the compiler as valid predefined 5886names. ACPICA BZ 851. 5887 5888iASL: Added an error for all predefined names that are defined to return 5889no 5890value and thus must be implemented as Control Methods. These include all 5891of 5892the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 5893names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 5894 5895iASL: Implemented the -ts option to emit hex AML data in ASL format, as 5896an 5897ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 5898be 5899dynamically loaded via the Load() operator. Also cleaned up output for 5900the 5901- 5902ta and -tc options. ACPICA BZ 853. 5903 5904Tests: Added a new file with examples of extended iASL error checking. 5905Demonstrates the advanced error checking ability of the iASL compiler. 5906Available at tests/misc/badcode.asl. 5907 5908---------------------------------------- 590931 March 2010. Summary of changes for version 20100331: 5910 59111) ACPI CA Core Subsystem: 5912 5913Completed a major update for the GPE support in order to improve support 5914for 5915shared GPEs and to simplify both host OS and ACPICA code. Added a 5916reference 5917count mechanism to support shared GPEs that require multiple device 5918drivers. 5919Several external interfaces have changed. One external interface has been 5920removed. One new external interface was added. Most of the GPE external 5921interfaces now use the GPE spinlock instead of the events mutex (and the 5922Flags parameter for many GPE interfaces has been removed.) See the 5923updated 5924ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 5925Rafael 5926Wysocki. ACPICA BZ 831. 5927 5928Changed: 5929 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 5930Removed: 5931 AcpiSetGpeType 5932New: 5933 AcpiSetGpe 5934 5935Implemented write support for DataTable operation regions. These regions 5936are 5937defined via the DataTableRegion() operator. Previously, only read support 5938was 5939implemented. The ACPI specification allows DataTableRegions to be 5940read/write, 5941however. 5942 5943Implemented a new subsystem option to force a copy of the DSDT to local 5944memory. Optionally copy the entire DSDT to local memory (instead of 5945simply 5946mapping it.) There are some (albeit very rare) BIOSs that corrupt or 5947replace 5948the original DSDT, creating the need for this option. Default is FALSE, 5949do 5950not copy the DSDT. 5951 5952Implemented detection of a corrupted or replaced DSDT. This change adds 5953support to detect a DSDT that has been corrupted and/or replaced from 5954outside 5955the OS (by firmware). This is typically catastrophic for the system, but 5956has 5957been seen on some machines. Once this problem has been detected, the DSDT 5958copy option can be enabled via system configuration. Lin Ming, Bob Moore. 5959 5960Fixed two problems with AcpiReallocateRootTable during the root table 5961copy. 5962When copying the root table to the new allocation, the length used was 5963incorrect. The new size was used instead of the current table size, 5964meaning 5965too much data was copied. Also, the count of available slots for ACPI 5966tables 5967was not set correctly. Alexey Starikovskiy, Bob Moore. 5968 5969Example Code and Data Size: These are the sizes for the OS-independent 5970acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5971debug version of the code includes the debug output trace mechanism and 5972has a 5973much larger code and data size. 5974 5975 Previous Release: 5976 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 5977 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 5978 Current Release: 5979 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 5980 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 5981 59822) iASL Compiler/Disassembler and Tools: 5983 5984iASL: Implement limited typechecking for values returned from predefined 5985control methods. The type of any returned static (unnamed) object is now 5986validated. For example, Return(1). ACPICA BZ 786. 5987 5988iASL: Fixed a predefined name object verification regression. Fixes a 5989problem 5990introduced in version 20100304. An error is incorrectly generated if a 5991predefined name is declared as a static named object with a value defined 5992using the keywords "Zero", "One", or "Ones". Lin Ming. 5993 5994iASL: Added Windows 7 support for the -g option (get local ACPI tables) 5995by 5996reducing the requested registry access rights. ACPICA BZ 842. 5997 5998Disassembler: fixed a possible fault when generating External() 5999statements. 6000Introduced in commit ae7d6fd: Properly handle externals with parent- 6001prefix 6002(carat). Fixes a string length allocation calculation. Lin Ming. 6003 6004---------------------------------------- 600504 March 2010. Summary of changes for version 20100304: 6006 60071) ACPI CA Core Subsystem: 6008 6009Fixed a possible problem with the AML Mutex handling function 6010AcpiExReleaseMutex where the function could fault under the very rare 6011condition when the interpreter has blocked, the interpreter lock is 6012released, 6013the interpreter is then reentered via the same thread, and attempts to 6014acquire an AML mutex that was previously acquired. FreeBSD report 140979. 6015Lin 6016Ming. 6017 6018Implemented additional configuration support for the AML "Debug Object". 6019Output from the debug object can now be enabled via a global variable, 6020AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 6021debugging. 6022This debug output is now available in the release version of ACPICA 6023instead 6024of just the debug version. Also, the entire debug output module can now 6025be 6026configured out of the ACPICA build if desired. One new file added, 6027executer/exdebug.c. Lin Ming, Bob Moore. 6028 6029Added header support for the ACPI MCHI table (Management Controller Host 6030Interface Table). This table was added in ACPI 4.0, but the defining 6031document 6032has only recently become available. 6033 6034Standardized output of integer values for ACPICA warnings/errors. Always 6035use 60360x prefix for hex output, always use %u for unsigned integer decimal 6037output. 6038Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 6039400 6040invocations.) These invocations were converted from the original 6041ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 6042 6043Example Code and Data Size: These are the sizes for the OS-independent 6044acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6045debug version of the code includes the debug output trace mechanism and 6046has a 6047much larger code and data size. 6048 6049 Previous Release: 6050 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 6051 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 6052 Current Release: 6053 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 6054 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 6055 60562) iASL Compiler/Disassembler and Tools: 6057 6058iASL: Implemented typechecking support for static (non-control method) 6059predefined named objects that are declared with the Name() operator. For 6060example, the type of this object is now validated to be of type Integer: 6061Name(_BBN, 1). This change migrates the compiler to using the core 6062predefined 6063name table instead of maintaining a local version. Added a new file, 6064aslpredef.c. ACPICA BZ 832. 6065 6066Disassembler: Added support for the ACPI 4.0 MCHI table. 6067 6068---------------------------------------- 606921 January 2010. Summary of changes for version 20100121: 6070 60711) ACPI CA Core Subsystem: 6072 6073Added the 2010 copyright to all module headers and signons. This affects 6074virtually every file in the ACPICA core subsystem, the iASL compiler, the 6075tools/utilities, and the test suites. 6076 6077Implemented a change to the AcpiGetDevices interface to eliminate 6078unnecessary 6079invocations of the _STA method. In the case where a specific _HID is 6080requested, do not run _STA until a _HID match is found. This eliminates 6081potentially dozens of _STA calls during a search for a particular 6082device/HID, 6083which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 6084 6085Implemented an additional repair for predefined method return values. 6086Attempt 6087to repair unexpected NULL elements within returned Package objects. 6088Create 6089an 6090Integer of value zero, a NULL String, or a zero-length Buffer as 6091appropriate. 6092ACPICA BZ 818. Lin Ming, Bob Moore. 6093 6094Removed the obsolete ACPI_INTEGER data type. This type was introduced as 6095the 6096code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 6097(with 609864-bit AML integers). It is now obsolete and this change removes it from 6099the 6100ACPICA code base, replaced by UINT64. The original typedef has been 6101retained 6102for now for compatibility with existing device driver code. ACPICA BZ 6103824. 6104 6105Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 6106in 6107the parse tree object. 6108 6109Added additional warning options for the gcc-4 generation. Updated the 6110source 6111accordingly. This includes some code restructuring to eliminate 6112unreachable 6113code, elimination of some gotos, elimination of unused return values, 6114some 6115additional casting, and removal of redundant declarations. 6116 6117Example Code and Data Size: These are the sizes for the OS-independent 6118acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6119debug version of the code includes the debug output trace mechanism and 6120has a 6121much larger code and data size. 6122 6123 Previous Release: 6124 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 6125 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 6126 Current Release: 6127 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 6128 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 6129 61302) iASL Compiler/Disassembler and Tools: 6131 6132No functional changes for this release. 6133 6134---------------------------------------- 613514 December 2009. Summary of changes for version 20091214: 6136 61371) ACPI CA Core Subsystem: 6138 6139Enhanced automatic data type conversions for predefined name repairs. 6140This 6141change expands the automatic repairs/conversions for predefined name 6142return 6143values to make Integers, Strings, and Buffers fully interchangeable. 6144Also, 6145a 6146Buffer can be converted to a Package of Integers if necessary. The 6147nsrepair.c 6148module was completely restructured. Lin Ming, Bob Moore. 6149 6150Implemented automatic removal of null package elements during predefined 6151name 6152repairs. This change will automatically remove embedded and trailing NULL 6153package elements from returned package objects that are defined to 6154contain 6155a 6156variable number of sub-packages. The driver is then presented with a 6157package 6158with no null elements to deal with. ACPICA BZ 819. 6159 6160Implemented a repair for the predefined _FDE and _GTM names. The expected 6161return value for both names is a Buffer of 5 DWORDs. This repair fixes 6162two 6163possible problems (both seen in the field), where a package of integers 6164is 6165returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 6166Kim. 6167 6168Implemented additional module-level code support. This change will 6169properly 6170execute module-level code that is not at the root of the namespace (under 6171a 6172Device object, etc.). Now executes the code within the current scope 6173instead 6174of the root. ACPICA BZ 762. Lin Ming. 6175 6176Fixed possible mutex acquisition errors when running _REG methods. Fixes 6177a 6178problem where mutex errors can occur when running a _REG method that is 6179in 6180the same scope as a method-defined operation region or an operation 6181region 6182under a module-level IF block. This type of code is rare, so the problem 6183has 6184not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 6185 6186Fixed a possible memory leak during module-level code execution. An 6187object 6188could be leaked for each block of executed module-level code if the 6189interpreter slack mode is enabled This change deletes any implicitly 6190returned 6191object from the module-level code block. Lin Ming. 6192 6193Removed messages for successful predefined repair(s). The repair 6194mechanism 6195was considered too wordy. Now, messages are only unconditionally emitted 6196if 6197the return object cannot be repaired. Existing messages for successful 6198repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 6199827. 6200 6201Example Code and Data Size: These are the sizes for the OS-independent 6202acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6203debug version of the code includes the debug output trace mechanism and 6204has a 6205much larger code and data size. 6206 6207 Previous Release: 6208 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 6209 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 6210 Current Release: 6211 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 6212 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 6213 62142) iASL Compiler/Disassembler and Tools: 6215 6216iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 6217files 6218were no longer automatically removed at the termination of the compile. 6219 6220acpiexec: Implemented the -f option to specify default region fill value. 6221This option specifies the value used to initialize buffers that simulate 6222operation regions. Default value is zero. Useful for debugging problems 6223that 6224depend on a specific initial value for a region or field. 6225 6226---------------------------------------- 622712 November 2009. Summary of changes for version 20091112: 6228 62291) ACPI CA Core Subsystem: 6230 6231Implemented a post-order callback to AcpiWalkNamespace. The existing 6232interface only has a pre-order callback. This change adds an additional 6233parameter for a post-order callback which will be more useful for bus 6234scans. 6235ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 6236 6237Modified the behavior of the operation region memory mapping cache for 6238SystemMemory. Ensure that the memory mappings created for operation 6239regions 6240do not cross 4K page boundaries. Crossing a page boundary while mapping 6241regions can cause kernel warnings on some hosts if the pages have 6242different 6243attributes. Such regions are probably BIOS bugs, and this is the 6244workaround. 6245Linux BZ 14445. Lin Ming. 6246 6247Implemented an automatic repair for predefined methods that must return 6248sorted lists. This change will repair (by sorting) packages returned by 6249_ALR, 6250_PSS, and _TSS. Drivers can now assume that the packages are correctly 6251sorted 6252and do not contain NULL package elements. Adds one new file, 6253namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 6254 6255Fixed a possible fault during predefined name validation if a return 6256Package 6257object contains NULL elements. Also adds a warning if a NULL element is 6258followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 6259may 6260include repair or removal of all such NULL elements where possible. 6261 6262Implemented additional module-level executable AML code support. This 6263change 6264will execute module-level code that is not at the root of the namespace 6265(under a Device object, etc.) at table load time. Module-level executable 6266AML 6267code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 6268 6269Implemented a new internal function to create Integer objects. This 6270function 6271simplifies miscellaneous object creation code. ACPICA BZ 823. 6272 6273Reduced the severity of predefined repair messages, Warning to Info. 6274Since 6275the object was successfully repaired, a warning is too severe. Reduced to 6276an 6277info message for now. These messages may eventually be changed to debug- 6278only. 6279ACPICA BZ 812. 6280 6281Example Code and Data Size: These are the sizes for the OS-independent 6282acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6283debug version of the code includes the debug output trace mechanism and 6284has a 6285much larger code and data size. 6286 6287 Previous Release: 6288 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 6289 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 6290 Current Release: 6291 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 6292 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 6293 62942) iASL Compiler/Disassembler and Tools: 6295 6296iASL: Implemented Switch() with While(1) so that Break works correctly. 6297This 6298change correctly implements the Switch operator with a surrounding 6299While(1) 6300so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 6301 6302iASL: Added a message if a package initializer list is shorter than 6303package 6304length. Adds a new remark for a Package() declaration if an initializer 6305list 6306exists, but is shorter than the declared length of the package. Although 6307technically legal, this is probably a coding error and it is seen in the 6308field. ACPICA BZ 815. Lin Ming, Bob Moore. 6309 6310iASL: Fixed a problem where the compiler could fault after the maximum 6311number 6312of errors was reached (200). 6313 6314acpixtract: Fixed a possible warning for pointer cast if the compiler 6315warning 6316level set very high. 6317 6318---------------------------------------- 631913 October 2009. Summary of changes for version 20091013: 6320 63211) ACPI CA Core Subsystem: 6322 6323Fixed a problem where an Operation Region _REG method could be executed 6324more 6325than once. If a custom address space handler is installed by the host 6326before 6327the "initialize operation regions" phase of the ACPICA initialization, 6328any 6329_REG methods for that address space could be executed twice. This change 6330fixes the problem. ACPICA BZ 427. Lin Ming. 6331 6332Fixed a possible memory leak for the Scope() ASL operator. When the exact 6333invocation of "Scope(\)" is executed (change scope to root), one internal 6334operand object was leaked. Lin Ming. 6335 6336Implemented a run-time repair for the _MAT predefined method. If the _MAT 6337return value is defined as a Field object in the AML, and the field 6338size is less than or equal to the default width of an integer (32 or 633964),_MAT 6340can incorrectly return an Integer instead of a Buffer. ACPICA now 6341automatically repairs this problem. ACPICA BZ 810. 6342 6343Implemented a run-time repair for the _BIF and _BIX predefined methods. 6344The 6345"OEM Information" field is often incorrectly returned as an Integer with 6346value zero if the field is not supported by the platform. This is due to 6347an 6348ambiguity in the ACPI specification. The field should always be a string. 6349ACPICA now automatically repairs this problem by returning a NULL string 6350within the returned Package. ACPICA BZ 807. 6351 6352Example Code and Data Size: These are the sizes for the OS-independent 6353acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6354debug version of the code includes the debug output trace mechanism and 6355has a 6356much larger code and data size. 6357 6358 Previous Release: 6359 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 6360 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 6361 Current Release: 6362 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 6363 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 6364 63652) iASL Compiler/Disassembler and Tools: 6366 6367Disassembler: Fixed a problem where references to external symbols that 6368contained one or more parent-prefixes (carats) were not handled 6369correctly, 6370possibly causing a fault. ACPICA BZ 806. Lin Ming. 6371 6372Disassembler: Restructured the code so that all functions that handle 6373external symbols are in a single module. One new file is added, 6374common/dmextern.c. 6375 6376AML Debugger: Added a max count argument for the Batch command (which 6377executes multiple predefined methods within the namespace.) 6378 6379iASL: Updated the compiler documentation (User Reference.) Available at 6380http://www.acpica.org/documentation/. ACPICA BZ 750. 6381 6382AcpiXtract: Updated for Lint and other formatting changes. Close all open 6383files. 6384 6385---------------------------------------- 638603 September 2009. Summary of changes for version 20090903: 6387 63881) ACPI CA Core Subsystem: 6389 6390For Windows Vista compatibility, added the automatic execution of an _INI 6391method located at the namespace root (\_INI). This method is executed at 6392table load time. This support is in addition to the automatic execution 6393of 6394\_SB._INI. Lin Ming. 6395 6396Fixed a possible memory leak in the interpreter for AML package objects 6397if 6398the package initializer list is longer than the defined size of the 6399package. 6400This apparently can only happen if the BIOS changes the package size on 6401the 6402fly (seen in a _PSS object), as ASL compilers do not allow this. The 6403interpreter will truncate the package to the defined size (and issue an 6404error 6405message), but previously could leave the extra objects undeleted if they 6406were 6407pre-created during the argument processing (such is the case if the 6408package 6409consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 6410 6411Fixed a problem seen when a Buffer or String is stored to itself via ASL. 6412This has been reported in the field. Previously, ACPICA would zero out 6413the 6414buffer/string. Now, the operation is treated as a noop. Provides Windows 6415compatibility. ACPICA BZ 803. Lin Ming. 6416 6417Removed an extraneous error message for ASL constructs of the form 6418Store(LocalX,LocalX) when LocalX is uninitialized. These curious 6419statements 6420are seen in many BIOSs and are once again treated as NOOPs and no error 6421is 6422emitted when they are encountered. ACPICA BZ 785. 6423 6424Fixed an extraneous warning message if a _DSM reserved method returns a 6425Package object. _DSM can return any type of object, so validation on the 6426return type cannot be performed. ACPICA BZ 802. 6427 6428Example Code and Data Size: These are the sizes for the OS-independent 6429acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6430debug version of the code includes the debug output trace mechanism and 6431has a 6432much larger code and data size. 6433 6434 Previous Release: 6435 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 6436 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 6437 Current Release: 6438 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 6439 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 6440 64412) iASL Compiler/Disassembler and Tools: 6442 6443iASL: Fixed a problem with the use of the Alias operator and Resource 6444Templates. The correct alias is now constructed and no error is emitted. 6445ACPICA BZ 738. 6446 6447iASL: Implemented the -I option to specify additional search directories 6448for 6449include files. Allows multiple additional search paths for include files. 6450Directories are searched in the order specified on the command line 6451(after 6452the local directory is searched.) ACPICA BZ 800. 6453 6454iASL: Fixed a problem where the full pathname for include files was not 6455emitted for warnings/errors. This caused the IDE support to not work 6456properly. ACPICA BZ 765. 6457 6458iASL: Implemented the -@ option to specify a Windows-style response file 6459containing additional command line options. ACPICA BZ 801. 6460 6461AcpiExec: Added support to load multiple AML files simultaneously (such 6462as 6463a 6464DSDT and multiple SSDTs). Also added support for wildcards within the AML 6465pathname. These features allow all machine tables to be easily loaded and 6466debugged together. ACPICA BZ 804. 6467 6468Disassembler: Added missing support for disassembly of HEST table Error 6469Bank 6470subtables. 6471 6472---------------------------------------- 647330 July 2009. Summary of changes for version 20090730: 6474 6475The ACPI 4.0 implementation for ACPICA is complete with this release. 6476 64771) ACPI CA Core Subsystem: 6478 6479ACPI 4.0: Added header file support for all new and changed ACPI tables. 6480Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 6481new 6482for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 6483BERT, 6484EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 6485There 6486have been some ACPI 4.0 changes to other existing tables. Split the large 6487actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 6488 6489ACPI 4.0: Implemented predefined name validation for all new names. There 6490are 649131 new names in ACPI 4.0. The predefined validation module was split into 6492two 6493files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 6494 6495Implemented support for so-called "module-level executable code". This is 6496executable AML code that exists outside of any control method and is 6497intended 6498to be executed at table load time. Although illegal since ACPI 2.0, this 6499type 6500of code still exists and is apparently still being created. Blocks of 6501this 6502code are now detected and executed as intended. Currently, the code 6503blocks 6504must exist under either an If, Else, or While construct; these are the 6505typical cases seen in the field. ACPICA BZ 762. Lin Ming. 6506 6507Implemented an automatic dynamic repair for predefined names that return 6508nested Package objects. This applies to predefined names that are defined 6509to 6510return a variable-length Package of sub-packages. If the number of sub- 6511packages is one, BIOS code is occasionally seen that creates a simple 6512single 6513package with no sub-packages. This code attempts to fix the problem by 6514wrapping a new package object around the existing package. These methods 6515can 6516be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 6517BZ 6518790. 6519 6520Fixed a regression introduced in 20090625 for the AcpiGetDevices 6521interface. 6522The _HID/_CID matching was broken and no longer matched IDs correctly. 6523ACPICA 6524BZ 793. 6525 6526Fixed a problem with AcpiReset where the reset would silently fail if the 6527register was one of the protected I/O ports. AcpiReset now bypasses the 6528port 6529validation mechanism. This may eventually be driven into the 6530AcpiRead/Write 6531interfaces. 6532 6533Fixed a regression related to the recent update of the AcpiRead/Write 6534interfaces. A sleep/suspend could fail if the optional PM2 Control 6535register 6536does not exist during an attempt to write the Bus Master Arbitration bit. 6537(However, some hosts already delete the code that writes this bit, and 6538the 6539code may in fact be obsolete at this date.) ACPICA BZ 799. 6540 6541Fixed a problem where AcpiTerminate could fault if inadvertently called 6542twice 6543in succession. ACPICA BZ 795. 6544 6545Example Code and Data Size: These are the sizes for the OS-independent 6546acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6547debug version of the code includes the debug output trace mechanism and 6548has a 6549much larger code and data size. 6550 6551 Previous Release: 6552 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 6553 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 6554 Current Release: 6555 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 6556 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 6557 65582) iASL Compiler/Disassembler and Tools: 6559 6560ACPI 4.0: Implemented disassembler support for all new ACPI tables and 6561changes to existing tables. ACPICA BZ 775. 6562 6563---------------------------------------- 656425 June 2009. Summary of changes for version 20090625: 6565 6566The ACPI 4.0 Specification was released on June 16 and is available at 6567www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 6568continue for the next few releases. 6569 65701) ACPI CA Core Subsystem: 6571 6572ACPI 4.0: Implemented interpreter support for the IPMI operation region 6573address space. Includes support for bi-directional data buffers and an 6574IPMI 6575address space handler (to be installed by an IPMI device driver.) ACPICA 6576BZ 6577773. Lin Ming. 6578 6579ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 6580Includes 6581support in both the header files and the disassembler. 6582 6583Completed a major update for the AcpiGetObjectInfo external interface. 6584Changes include: 6585 - Support for variable, unlimited length HID, UID, and CID strings. 6586 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 6587etc.) 6588 - Call the _SxW power methods on behalf of a device object. 6589 - Determine if a device is a PCI root bridge. 6590 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 6591These changes will require an update to all callers of this interface. 6592See 6593the updated ACPICA Programmer Reference for details. One new source file 6594has 6595been added - utilities/utids.c. ACPICA BZ 368, 780. 6596 6597Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 6598transfers. The Value parameter has been extended from 32 bits to 64 bits 6599in 6600order to support new ACPI 4.0 tables. These changes will require an 6601update 6602to 6603all callers of these interfaces. See the ACPICA Programmer Reference for 6604details. ACPICA BZ 768. 6605 6606Fixed several problems with AcpiAttachData. The handler was not invoked 6607when 6608the host node was deleted. The data sub-object was not automatically 6609deleted 6610when the host node was deleted. The interface to the handler had an 6611unused 6612parameter, this was removed. ACPICA BZ 778. 6613 6614Enhanced the function that dumps ACPI table headers. All non-printable 6615characters in the string fields are now replaced with '?' (Signature, 6616OemId, 6617OemTableId, and CompilerId.) ACPI tables with non-printable characters in 6618these fields are occasionally seen in the field. ACPICA BZ 788. 6619 6620Fixed a problem with predefined method repair code where the code that 6621attempts to repair/convert an object of incorrect type is only executed 6622on 6623the first time the predefined method is called. The mechanism that 6624disables 6625warnings on subsequent calls was interfering with the repair mechanism. 6626ACPICA BZ 781. 6627 6628Fixed a possible memory leak in the predefined validation/repair code 6629when 6630a 6631buffer is automatically converted to an expected string object. 6632 6633Removed obsolete 16-bit files from the distribution and from the current 6634git 6635tree head. ACPICA BZ 776. 6636 6637Example Code and Data Size: These are the sizes for the OS-independent 6638acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6639debug version of the code includes the debug output trace mechanism and 6640has a 6641much larger code and data size. 6642 6643 Previous Release: 6644 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 6645 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 6646 Current Release: 6647 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 6648 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 6649 66502) iASL Compiler/Disassembler and Tools: 6651 6652ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 6653operation region keyword. ACPICA BZ 771, 772. Lin Ming. 6654 6655ACPI 4.0: iASL - implemented compile-time validation support for all new 6656predefined names and control methods (31 total). ACPICA BZ 769. 6657 6658---------------------------------------- 665921 May 2009. Summary of changes for version 20090521: 6660 66611) ACPI CA Core Subsystem: 6662 6663Disabled the preservation of the SCI enable bit in the PM1 control 6664register. 6665The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 6666to 6667be 6668a "preserved" bit - "OSPM always preserves this bit position", section 66694.7.3.2.1. However, some machines fail if this bit is in fact preserved 6670because the bit needs to be explicitly set by the OS as a workaround. No 6671machines fail if the bit is not preserved. Therefore, ACPICA no longer 6672attempts to preserve this bit. 6673 6674Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 6675incorrectly formed _PRT package could cause a fault. Added validation to 6676ensure that each package element is actually a sub-package. 6677 6678Implemented a new interface to install or override a single control 6679method, 6680AcpiInstallMethod. This interface is useful when debugging in order to 6681repair 6682an existing method or to install a missing method without having to 6683override 6684the entire ACPI table. See the ACPICA Programmer Reference for use and 6685examples. Lin Ming, Bob Moore. 6686 6687Fixed several reference count issues with the DdbHandle object that is 6688created from a Load or LoadTable operator. Prevent premature deletion of 6689the 6690object. Also, mark the object as invalid once the table has been 6691unloaded. 6692This is needed because the handle itself may not be deleted after the 6693table 6694unload, depending on whether it has been stored in a named object by the 6695caller. Lin Ming. 6696 6697Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 6698mutexes of the same sync level are acquired but then not released in 6699strict 6700opposite order, the internally maintained Current Sync Level becomes 6701confused 6702and can cause subsequent execution errors. ACPICA BZ 471. 6703 6704Changed the allowable release order for ASL mutex objects. The ACPI 4.0 6705specification has been changed to make the SyncLevel for mutex objects 6706more 6707useful. When releasing a mutex, the SyncLevel of the mutex must now be 6708the 6709same as the current sync level. This makes more sense than the previous 6710rule 6711(SyncLevel less than or equal). This change updates the code to match the 6712specification. 6713 6714Fixed a problem with the local version of the AcpiOsPurgeCache function. 6715The 6716(local) cache must be locked during all cache object deletions. Andrew 6717Baumann. 6718 6719Updated the Load operator to use operation region interfaces. This 6720replaces 6721direct memory mapping with region access calls. Now, all region accesses 6722go 6723through the installed region handler as they should. 6724 6725Simplified and optimized the NsGetNextNode function. Reduced parameter 6726count 6727and reduced code for this frequently used function. 6728 6729Example Code and Data Size: These are the sizes for the OS-independent 6730acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6731debug version of the code includes the debug output trace mechanism and 6732has a 6733much larger code and data size. 6734 6735 Previous Release: 6736 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 6737 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 6738 Current Release: 6739 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 6740 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 6741 67422) iASL Compiler/Disassembler and Tools: 6743 6744Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 6745problems 6746with sub-table disassembly and handling invalid sub-tables. Attempt 6747recovery 6748after an invalid sub-table ID. 6749 6750---------------------------------------- 675122 April 2009. Summary of changes for version 20090422: 6752 67531) ACPI CA Core Subsystem: 6754 6755Fixed a compatibility issue with the recently released I/O port 6756protection 6757mechanism. For windows compatibility, 1) On a port protection violation, 6758simply ignore the request and do not return an exception (allow the 6759control 6760method to continue execution.) 2) If only part of the request overlaps a 6761protected port, read/write the individual ports that are not protected. 6762Linux 6763BZ 13036. Lin Ming 6764 6765Enhanced the execution of the ASL/AML BreakPoint operator so that it 6766actually 6767breaks into the AML debugger if the debugger is present. This matches the 6768ACPI-defined behavior. 6769 6770Fixed several possible warnings related to the use of the configurable 6771ACPI_THREAD_ID. This type can now be configured as either an integer or a 6772pointer with no warnings. Also fixes several warnings in printf-like 6773statements for the 64-bit build when the type is configured as a pointer. 6774ACPICA BZ 766, 767. 6775 6776Fixed a number of possible warnings when compiling with gcc 4+ (depending 6777on 6778warning options.) Examples include printf formats, aliasing, unused 6779globals, 6780missing prototypes, missing switch default statements, use of non-ANSI 6781library functions, use of non-ANSI constructs. See generate/unix/Makefile 6782for 6783a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 6784 6785Example Code and Data Size: These are the sizes for the OS-independent 6786acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6787debug version of the code includes the debug output trace mechanism and 6788has a 6789much larger code and data size. 6790 6791 Previous Release: 6792 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 6793 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 6794 Current Release: 6795 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 6796 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 6797 67982) iASL Compiler/Disassembler and Tools: 6799 6800iASL: Fixed a generation warning from Bison 2.3 and fixed several 6801warnings 6802on 6803the 64-bit build. 6804 6805iASL: Fixed a problem where the Unix/Linux versions of the compiler could 6806not 6807correctly digest Windows/DOS formatted files (with CR/LF). 6808 6809iASL: Added a new option for "quiet mode" (-va) that produces only the 6810compilation summary, not individual errors and warnings. Useful for large 6811batch compilations. 6812 6813AcpiExec: Implemented a new option (-z) to enable a forced 6814semaphore/mutex 6815timeout that can be used to detect hang conditions during execution of 6816AML 6817code (includes both internal semaphores and AML-defined mutexes and 6818events.) 6819 6820Added new makefiles for the generation of acpica in a generic unix-like 6821environment. These makefiles are intended to generate the acpica tools 6822and 6823utilities from the original acpica git source tree structure. 6824 6825Test Suites: Updated and cleaned up the documentation files. Updated the 6826copyrights to 2009, affecting all source files. Use the new version of 6827iASL 6828with quiet mode. Increased the number of available semaphores in the 6829Windows 6830OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 6831added 6832an alternate implementation of the semaphore timeout to allow aslts to 6833execute fully on Cygwin. 6834 6835---------------------------------------- 683620 March 2009. Summary of changes for version 20090320: 6837 68381) ACPI CA Core Subsystem: 6839 6840Fixed a possible race condition between AcpiWalkNamespace and dynamic 6841table 6842unloads. Added a reader/writer locking mechanism to allow multiple 6843concurrent 6844namespace walks (readers), but block a dynamic table unload until it can 6845gain 6846exclusive write access to the namespace. This fixes a problem where a 6847table 6848unload could (possibly catastrophically) delete the portion of the 6849namespace 6850that is currently being examined by a walk. Adds a new file, utlock.c, 6851that 6852implements the reader/writer lock mechanism. ACPICA BZ 749. 6853 6854Fixed a regression introduced in version 20090220 where a change to the 6855FADT 6856handling could cause the ACPICA subsystem to access non-existent I/O 6857ports. 6858 6859Modified the handling of FADT register and table (FACS/DSDT) addresses. 6860The 6861FADT can contain both 32-bit and 64-bit versions of these addresses. 6862Previously, the 64-bit versions were favored, meaning that if both 32 and 686364 6864versions were valid, but not equal, the 64-bit version was used. This was 6865found to cause some machines to fail. Now, in this case, the 32-bit 6866version 6867is used instead. This now matches the Windows behavior. 6868 6869Implemented a new mechanism to protect certain I/O ports. Provides 6870Microsoft 6871compatibility and protects the standard PC I/O ports from access via AML 6872code. Adds a new file, hwvalid.c 6873 6874Fixed a possible extraneous warning message from the FADT support. The 6875message warns of a 32/64 length mismatch between the legacy and GAS 6876definitions for a register. 6877 6878Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 6879is 6880made obsolete by the port protection mechanism above. It was previously 6881used 6882to validate the entire address range of an operation region, which could 6883be 6884incorrect if the range included illegal ports, but fields within the 6885operation region did not actually access those ports. Validation is now 6886performed on a per-field basis instead of the entire region. 6887 6888Modified the handling of the PM1 Status Register ignored bit (bit 11.) 6889Ignored bits must be "preserved" according to the ACPI spec. Usually, 6890this 6891means a read/modify/write when writing to the register. However, for 6892status 6893registers, writing a one means clear the event. Writing a zero means 6894preserve 6895the event (do not clear.) This behavior is clarified in the ACPI 4.0 6896spec, 6897and the ACPICA code now simply always writes a zero to the ignored bit. 6898 6899Modified the handling of ignored bits for the PM1 A/B Control Registers. 6900As 6901per the ACPI specification, for the control registers, preserve 6902(read/modify/write) all bits that are defined as either reserved or 6903ignored. 6904 6905Updated the handling of write-only bits in the PM1 A/B Control Registers. 6906When reading the register, zero the write-only bits as per the ACPI spec. 6907ACPICA BZ 443. Lin Ming. 6908 6909Removed "Linux" from the list of supported _OSI strings. Linux no longer 6910wants to reply true to this request. The Windows strings are the only 6911paths 6912through the AML that are tested and known to work properly. 6913 6914 Previous Release: 6915 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 6916 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 6917 Current Release: 6918 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 6919 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 6920 69212) iASL Compiler/Disassembler and Tools: 6922 6923Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 6924and 6925aetables.c 6926 6927---------------------------------------- 692820 February 2009. Summary of changes for version 20090220: 6929 69301) ACPI CA Core Subsystem: 6931 6932Optimized the ACPI register locking. Removed locking for reads from the 6933ACPI 6934bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 6935is 6936not required when reading the single-bit registers. The 6937AcpiGetRegisterUnlocked function is no longer needed and has been 6938removed. 6939This will improve performance for reads on these registers. ACPICA BZ 6940760. 6941 6942Fixed the parameter validation for AcpiRead/Write. Now return 6943AE_BAD_PARAMETER if the input register pointer is null, and 6944AE_BAD_ADDRESS 6945if 6946the register has an address of zero. Previously, these cases simply 6947returned 6948AE_OK. For optional registers such as PM1B status/enable/control, the 6949caller 6950should check for a valid register address before calling. ACPICA BZ 748. 6951 6952Renamed the external ACPI bit register access functions. Renamed 6953AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 6954functions. The new names are AcpiReadBitRegister and 6955AcpiWriteBitRegister. 6956Also, restructured the code for these functions by simplifying the code 6957path 6958and condensing duplicate code to reduce code size. 6959 6960Added new functions to transparently handle the possibly split PM1 A/B 6961registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 6962functions 6963now handle the split registers for PM1 Status, Enable, and Control. 6964ACPICA 6965BZ 6966746. 6967 6968Added a function to handle the PM1 control registers, 6969AcpiHwWritePm1Control. 6970This function writes both of the PM1 control registers (A/B). These 6971registers 6972are different than the PM1 A/B status and enable registers in that 6973different 6974values can be written to the A/B registers. Most notably, the SLP_TYP 6975bits 6976can be different, as per the values returned from the _Sx predefined 6977methods. 6978 6979Removed an extra register write within AcpiHwClearAcpiStatus. This 6980function 6981was writing an optional PM1B status register twice. The existing call to 6982the 6983low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 6984A/B 6985register. ACPICA BZ 751. 6986 6987Split out the PM1 Status registers from the FADT. Added new globals for 6988these 6989registers (A/B), similar to the way the PM1 Enable registers are handled. 6990Instead of overloading the FADT Event Register blocks. This makes the 6991code 6992clearer and less prone to error. 6993 6994Fixed the warning message for when the platform contains too many ACPI 6995tables 6996for the default size of the global root table data structure. The 6997calculation 6998for the truncation value was incorrect. 6999 7000Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 7001obsolete macro, since it is now a simple reference to ->common.type. 7002There 7003were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 7004 7005Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 7006TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 7007simply SLEEP_TYPE. ACPICA BZ 754. 7008 7009Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 7010function is only needed on 64-bit host operating systems and is thus not 7011included for 32-bit hosts. 7012 7013Debug output: print the input and result for invocations of the _OSI 7014reserved 7015control method via the ACPI_LV_INFO debug level. Also, reduced some of 7016the 7017verbosity of this debug level. Len Brown. 7018 7019Example Code and Data Size: These are the sizes for the OS-independent 7020acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7021debug version of the code includes the debug output trace mechanism and 7022has a 7023much larger code and data size. 7024 7025 Previous Release: 7026 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 7027 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 7028 Current Release: 7029 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 7030 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 7031 70322) iASL Compiler/Disassembler and Tools: 7033 7034Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 7035various legal performance profiles. 7036 7037---------------------------------------- 703823 January 2009. Summary of changes for version 20090123: 7039 70401) ACPI CA Core Subsystem: 7041 7042Added the 2009 copyright to all module headers and signons. This affects 7043virtually every file in the ACPICA core subsystem, the iASL compiler, and 7044the tools/utilities. 7045 7046Implemented a change to allow the host to override any ACPI table, 7047including 7048dynamically loaded tables. Previously, only the DSDT could be replaced by 7049the 7050host. With this change, the AcpiOsTableOverride interface is called for 7051each 7052table found in the RSDT/XSDT during ACPICA initialization, and also 7053whenever 7054a table is dynamically loaded via the AML Load operator. 7055 7056Updated FADT flag definitions, especially the Boot Architecture flags. 7057 7058Debugger: For the Find command, automatically pad the input ACPI name 7059with 7060underscores if the name is shorter than 4 characters. This enables a 7061match 7062with the actual namespace entry which is itself padded with underscores. 7063 7064Example Code and Data Size: These are the sizes for the OS-independent 7065acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7066debug version of the code includes the debug output trace mechanism and 7067has a 7068much larger code and data size. 7069 7070 Previous Release: 7071 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 7072 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 7073 Current Release: 7074 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 7075 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 7076 70772) iASL Compiler/Disassembler and Tools: 7078 7079Fix build error under Bison-2.4. 7080 7081Dissasembler: Enhanced FADT support. Added decoding of the Boot 7082Architecture 7083flags. Now decode all flags, regardless of the FADT version. Flag output 7084includes the FADT version which first defined each flag. 7085 7086The iASL -g option now dumps the RSDT to a file (in addition to the FADT 7087and 7088DSDT). Windows only. 7089 7090---------------------------------------- 709104 December 2008. Summary of changes for version 20081204: 7092 70931) ACPI CA Core Subsystem: 7094 7095The ACPICA Programmer Reference has been completely updated and revamped 7096for 7097this release. This includes updates to the external interfaces, OSL 7098interfaces, the overview sections, and the debugger reference. 7099 7100Several new ACPICA interfaces have been implemented and documented in the 7101programmer reference: 7102AcpiReset - Writes the reset value to the FADT-defined reset register. 7103AcpiDisableAllGpes - Disable all available GPEs. 7104AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 7105AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 7106AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 7107AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 7108AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 7109 7110Most of the public ACPI hardware-related interfaces have been moved to a 7111new 7112file, components/hardware/hwxface.c 7113 7114Enhanced the FADT parsing and low-level ACPI register access: The ACPI 7115register lengths within the FADT are now used, and the low level ACPI 7116register access no longer hardcodes the ACPI register lengths. Given that 7117there may be some risk in actually trusting the FADT register lengths, a 7118run- 7119time option was added to fall back to the default hardcoded lengths if 7120the 7121FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 7122option is set to true for now, and a warning is issued if a suspicious 7123FADT 7124register length is overridden with the default value. 7125 7126Fixed a reference count issue in NsRepairObject. This problem was 7127introduced 7128in version 20081031 as part of a fix to repair Buffer objects within 7129Packages. Lin Ming. 7130 7131Added semaphore support to the Linux/Unix application OS-services layer 7132(OSL). ACPICA BZ 448. Lin Ming. 7133 7134Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 7135will 7136be implemented in the OSL, or will binary semaphores be used instead. 7137 7138Example Code and Data Size: These are the sizes for the OS-independent 7139acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7140debug version of the code includes the debug output trace mechanism and 7141has a 7142much larger code and data size. 7143 7144 Previous Release: 7145 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 7146 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 7147 Current Release: 7148 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 7149 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 7150 71512) iASL Compiler/Disassembler and Tools: 7152 7153iASL: Completed the '-e' option to include additional ACPI tables in 7154order 7155to 7156aid with disassembly and External statement generation. ACPICA BZ 742. 7157Lin 7158Ming. 7159 7160iASL: Removed the "named object in while loop" error. The compiler cannot 7161determine how many times a loop will execute. ACPICA BZ 730. 7162 7163Disassembler: Implemented support for FADT revision 2 (MS extension). 7164ACPICA 7165BZ 743. 7166 7167Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 7168MCFG). 7169 7170---------------------------------------- 717131 October 2008. Summary of changes for version 20081031: 7172 71731) ACPI CA Core Subsystem: 7174 7175Restructured the ACPICA header files into public/private. acpi.h now 7176includes 7177only the "public" acpica headers. All other acpica headers are "private" 7178and 7179should not be included by acpica users. One new file, accommon.h is used 7180to 7181include the commonly used private headers for acpica code generation. 7182Future 7183plans include moving all private headers to a new subdirectory. 7184 7185Implemented an automatic Buffer->String return value conversion for 7186predefined ACPI methods. For these methods (such as _BIF), added 7187automatic 7188conversion for return objects that are required to be a String, but a 7189Buffer 7190was found instead. This can happen when reading string battery data from 7191an 7192operation region, because it used to be difficult to convert the data 7193from 7194buffer to string from within the ASL. Ensures that the host OS is 7195provided 7196with a valid null-terminated string. Linux BZ 11822. 7197 7198Updated the FACS waking vector interfaces. Split 7199AcpiSetFirmwareWakingVector 7200into two: one for the 32-bit vector, another for the 64-bit vector. This 7201is 7202required because the host OS must setup the wake much differently for 7203each 7204vector (real vs. protected mode, etc.) and the interface itself should 7205not 7206be 7207deciding which vector to use. Also, eliminated the 7208GetFirmwareWakingVector 7209interface, as it served no purpose (only the firmware reads the vector, 7210OS 7211only writes the vector.) ACPICA BZ 731. 7212 7213Implemented a mechanism to escape infinite AML While() loops. Added a 7214loop 7215counter to force exit from AML While loops if the count becomes too 7216large. 7217This can occur in poorly written AML when the hardware does not respond 7218within a while loop and the loop does not implement a timeout. The 7219maximum 7220loop count is configurable. A new exception code is returned when a loop 7221is 7222broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 7223 7224Optimized the execution of AML While loops. Previously, a control state 7225object was allocated and freed for each execution of the loop. The 7226optimization is to simply reuse the control state for each iteration. 7227This 7228speeds up the raw loop execution time by about 5%. 7229 7230Enhanced the implicit return mechanism. For Windows compatibility, return 7231an 7232implicit integer of value zero for methods that contain no executable 7233code. 7234Such methods are seen in the field as stubs (presumably), and can cause 7235drivers to fail if they expect a return value. Lin Ming. 7236 7237Allow multiple backslashes as root prefixes in namepaths. In a fully 7238qualified namepath, allow multiple backslash prefixes. This can happen 7239(and 7240is seen in the field) because of the use of a double-backslash in strings 7241(since backslash is the escape character) causing confusion. ACPICA BZ 7242739 7243Lin Ming. 7244 7245Emit a warning if two different FACS or DSDT tables are discovered in the 7246FADT. Checks if there are two valid but different addresses for the FACS 7247and 7248DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 7249 7250Consolidated the method argument count validation code. Merged the code 7251that 7252validates control method argument counts into the predefined validation 7253module. Eliminates possible multiple warnings for incorrect argument 7254counts. 7255 7256Implemented ACPICA example code. Includes code for ACPICA initialization, 7257handler installation, and calling a control method. Available at 7258source/tools/examples. 7259 7260Added a global pointer for FACS table to simplify internal FACS access. 7261Use 7262the global pointer instead of using AcpiGetTableByIndex for each FACS 7263access. 7264This simplifies the code for the Global Lock and the Firmware Waking 7265Vector(s). 7266 7267Example Code and Data Size: These are the sizes for the OS-independent 7268acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7269debug version of the code includes the debug output trace mechanism and 7270has a 7271much larger code and data size. 7272 7273 Previous Release: 7274 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 7275 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 7276 Current Release: 7277 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 7278 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 7279 72802) iASL Compiler/Disassembler and Tools: 7281 7282iASL: Improved disassembly of external method calls. Added the -e option 7283to 7284allow the inclusion of additional ACPI tables to help with the 7285disassembly 7286of 7287method invocations and the generation of external declarations during the 7288disassembly. Certain external method invocations cannot be disassembled 7289properly without the actual declaration of the method. Use the -e option 7290to 7291include the table where the external method(s) are actually declared. 7292Most 7293useful for disassembling SSDTs that make method calls back to the master 7294DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 7295-d 7296-e dsdt.aml ssdt1.aml 7297 7298iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 7299problem where the use of an alias within a namepath would result in a not 7300found error or cause the compiler to fault. Also now allows forward 7301references from the Alias operator itself. ACPICA BZ 738. 7302 7303---------------------------------------- 730426 September 2008. Summary of changes for version 20080926: 7305 73061) ACPI CA Core Subsystem: 7307 7308Designed and implemented a mechanism to validate predefined ACPI methods 7309and 7310objects. This code validates the predefined ACPI objects (objects whose 7311names 7312start with underscore) that appear in the namespace, at the time they are 7313evaluated. The argument count and the type of the returned object are 7314validated against the ACPI specification. The purpose of this validation 7315is 7316to detect problems with the BIOS-implemented predefined ACPI objects 7317before 7318the results are returned to the ACPI-related drivers. Future enhancements 7319may 7320include actual repair of incorrect return objects where possible. Two new 7321files are nspredef.c and acpredef.h. 7322 7323Fixed a fault in the AML parser if a memory allocation fails during the 7324Op 7325completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 7326 7327Fixed an issue with implicit return compatibility. This change improves 7328the 7329implicit return mechanism to be more compatible with the MS interpreter. 7330Lin 7331Ming, ACPICA BZ 349. 7332 7333Implemented support for zero-length buffer-to-string conversions. Allow 7334zero 7335length strings during interpreter buffer-to-string conversions. For 7336example, 7337during the ToDecimalString and ToHexString operators, as well as implicit 7338conversions. Fiodor Suietov, ACPICA BZ 585. 7339 7340Fixed two possible memory leaks in the error exit paths of 7341AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 7342are 7343similar in that they use a stack of state objects in order to eliminate 7344recursion. The stack must be fully unwound and deallocated if an error 7345occurs. Lin Ming. ACPICA BZ 383. 7346 7347Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 7348global 7349ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 7350Moore ACPICA BZ 442. 7351 7352Removed the obsolete version number in module headers. Removed the 7353"$Revision" number that appeared in each module header. This version 7354number 7355was useful under SourceSafe and CVS, but has no meaning under git. It is 7356not 7357only incorrect, it could also be misleading. 7358 7359Example Code and Data Size: These are the sizes for the OS-independent 7360acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7361debug version of the code includes the debug output trace mechanism and 7362has a 7363much larger code and data size. 7364 7365 Previous Release: 7366 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7367 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 7368 Current Release: 7369 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 7370 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 7371 7372---------------------------------------- 737329 August 2008. Summary of changes for version 20080829: 7374 73751) ACPI CA Core Subsystem: 7376 7377Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 7378Reference. Changes include the elimination of cheating on the Object 7379field 7380for the DdbHandle subtype, addition of a reference class field to 7381differentiate the various reference types (instead of an AML opcode), and 7382the 7383cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 7384 7385Reduce an error to a warning for an incorrect method argument count. 7386Previously aborted with an error if too few arguments were passed to a 7387control method via the external ACPICA interface. Now issue a warning 7388instead 7389and continue. Handles the case where the method inadvertently declares 7390too 7391many arguments, but does not actually use the extra ones. Applies mainly 7392to 7393the predefined methods. Lin Ming. Linux BZ 11032. 7394 7395Disallow the evaluation of named object types with no intrinsic value. 7396Return 7397AE_TYPE for objects that have no value and therefore evaluation is 7398undefined: 7399Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 7400of 7401these types were allowed, but an exception would be generated at some 7402point 7403during the evaluation. Now, the error is generated up front. 7404 7405Fixed a possible memory leak in the AcpiNsGetExternalPathname function 7406(nsnames.c). Fixes a leak in the error exit path. 7407 7408Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 7409debug 7410levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 7411ACPI_EXCEPTION 7412interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 7413ACPI_LV_EVENTS. 7414 7415Removed obsolete and/or unused exception codes from the acexcep.h header. 7416There is the possibility that certain device drivers may be affected if 7417they 7418use any of these exceptions. 7419 7420The ACPICA documentation has been added to the public git source tree, 7421under 7422acpica/documents. Included are the ACPICA programmer reference, the iASL 7423compiler reference, and the changes.txt release logfile. 7424 7425Example Code and Data Size: These are the sizes for the OS-independent 7426acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7427debug version of the code includes the debug output trace mechanism and 7428has a 7429much larger code and data size. 7430 7431 Previous Release: 7432 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7433 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 7434 Current Release: 7435 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7436 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 7437 74382) iASL Compiler/Disassembler and Tools: 7439 7440Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 7441defines _SCP with 3 arguments. Previous versions defined it with only 1 7442argument. iASL now allows both definitions. 7443 7444iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 7445zero- 7446length subtables when disassembling ACPI tables. Also fixed a couple of 7447errors where a full 16-bit table type field was not extracted from the 7448input 7449properly. 7450 7451acpisrc: Improve comment counting mechanism for generating source code 7452statistics. Count first and last lines of multi-line comments as 7453whitespace, 7454not comment lines. Handle Linux legal header in addition to standard 7455acpica 7456header. 7457 7458---------------------------------------- 7459 746029 July 2008. Summary of changes for version 20080729: 7461 74621) ACPI CA Core Subsystem: 7463 7464Fix a possible deadlock in the GPE dispatch. Remove call to 7465AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 7466attempt 7467to acquire the GPE lock but can deadlock since the GPE lock is already 7468held 7469at dispatch time. This code was introduced in version 20060831 as a 7470response 7471to Linux BZ 6881 and has since been removed from Linux. 7472 7473Add a function to dereference returned reference objects. Examines the 7474return 7475object from a call to AcpiEvaluateObject. Any Index or RefOf references 7476are 7477automatically dereferenced in an attempt to return something useful 7478(these 7479reference types cannot be converted into an external ACPI_OBJECT.) 7480Provides 7481MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 7482 7483x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 7484subtables for the MADT and one new subtable for the SRAT. Includes 7485disassembler and AcpiSrc support. Data from the Intel 64 Architecture 7486x2APIC 7487Specification, June 2008. 7488 7489Additional error checking for pathname utilities. Add error check after 7490all 7491calls to AcpiNsGetPathnameLength. Add status return from 7492AcpiNsBuildExternalPath and check after all calls. Add parameter 7493validation 7494to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 7495 7496Return status from the global init function AcpiUtGlobalInitialize. This 7497is 7498used by both the kernel subsystem and the utilities such as iASL 7499compiler. 7500The function could possibly fail when the caches are initialized. Yang 7501Yi. 7502 7503Add a function to decode reference object types to strings. Created for 7504improved error messages. 7505 7506Improve object conversion error messages. Better error messages during 7507object 7508conversion from internal to the external ACPI_OBJECT. Used for external 7509calls 7510to AcpiEvaluateObject. 7511 7512Example Code and Data Size: These are the sizes for the OS-independent 7513acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7514debug version of the code includes the debug output trace mechanism and 7515has a 7516much larger code and data size. 7517 7518 Previous Release: 7519 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 7520 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 7521 Current Release: 7522 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7523 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 7524 75252) iASL Compiler/Disassembler and Tools: 7526 7527Debugger: fix a possible hang when evaluating non-methods. Fixes a 7528problem 7529introduced in version 20080701. If the object being evaluated (via 7530execute 7531command) is not a method, the debugger can hang while trying to obtain 7532non- 7533existent parameters. 7534 7535iASL: relax error for using reserved "_T_x" identifiers. These names can 7536appear in a disassembled ASL file if they were emitted by the original 7537compiler. Instead of issuing an error or warning and forcing the user to 7538manually change these names, issue a remark instead. 7539 7540iASL: error if named object created in while loop. Emit an error if any 7541named 7542object is created within a While loop. If allowed, this code will 7543generate 7544a 7545run-time error on the second iteration of the loop when an attempt is 7546made 7547to 7548create the same named object twice. ACPICA bugzilla 730. 7549 7550iASL: Support absolute pathnames for include files. Add support for 7551absolute 7552pathnames within the Include operator. previously, only relative 7553pathnames 7554were supported. 7555 7556iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 7557Descriptor. 7558The ACPI spec requires one interrupt minimum. BZ 423 7559 7560iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 7561Handles the case for the Interrupt Resource Descriptor where 7562the ResourceSource argument is omitted but ResourceSourceIndex 7563is present. Now leave room for the Index. BZ 426 7564 7565iASL: Prevent error message if CondRefOf target does not exist. Fixes 7566cases 7567where an error message is emitted if the target does not exist. BZ 516 7568 7569iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 7570(get ACPI tables on Windows). This was apparently broken in version 757120070919. 7572 7573AcpiXtract: Handle EOF while extracting data. Correctly handle the case 7574where 7575the EOF happens immediately after the last table in the input file. Print 7576completion message. Previously, no message was displayed in this case. 7577 7578---------------------------------------- 757901 July 2008. Summary of changes for version 20080701: 7580 75810) Git source tree / acpica.org 7582 7583Fixed a problem where a git-clone from http would not transfer the entire 7584source tree. 7585 75861) ACPI CA Core Subsystem: 7587 7588Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 7589enable bit. Now performs a read-change-write of the enable register 7590instead 7591of simply writing out the cached enable mask. This will prevent 7592inadvertent 7593enabling of GPEs if a rogue GPE is received during initialization (before 7594GPE 7595handlers are installed.) 7596 7597Implemented a copy for dynamically loaded tables. Previously, dynamically 7598loaded tables were simply mapped - but on some machines this memory is 7599corrupted after suspend. Now copy the table to a local buffer. For the 7600OpRegion case, added checksum verify. Use the table length from the table 7601header, not the region length. For the Buffer case, use the table length 7602also. Dennis Noordsij, Bob Moore. BZ 10734 7603 7604Fixed a problem where the same ACPI table could not be dynamically loaded 7605and 7606unloaded more than once. Without this change, a table cannot be loaded 7607again 7608once it has been loaded/unloaded one time. The current mechanism does not 7609unregister a table upon an unload. During a load, if the same table is 7610found, 7611this no longer returns an exception. BZ 722 7612 7613Fixed a problem where the wrong descriptor length was calculated for the 7614EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 7615EndTag 7616are calculated as 12 bytes long, but the actual length in the internal 7617descriptor is 16 because of the round-up to 8 on the 64-bit build. 7618Reported 7619by Linn Crosetto. BZ 728 7620 7621Fixed a possible memory leak in the Unload operator. The DdbHandle 7622returned 7623by Load() did not have its reference count decremented during unload, 7624leading 7625to a memory leak. Lin Ming. BZ 727 7626 7627Fixed a possible memory leak when deleting thermal/processor objects. Any 7628associated notify handlers (and objects) were not being deleted. Fiodor 7629Suietov. BZ 506 7630 7631Fixed the ordering of the ASCII names in the global mutex table to match 7632the 7633actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 7634only. 7635Vegard Nossum. BZ 726 7636 7637Enhanced the AcpiGetObjectInfo interface to return the number of required 7638arguments if the object is a control method. Added this call to the 7639debugger 7640so the proper number of default arguments are passed to a method. This 7641prevents a warning when executing methods from AcpiExec. 7642 7643Added a check for an invalid handle in AcpiGetObjectInfo. Return 7644AE_BAD_PARAMETER if input handle is invalid. BZ 474 7645 7646Fixed an extraneous warning from exconfig.c on the 64-bit build. 7647 7648Example Code and Data Size: These are the sizes for the OS-independent 7649acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7650debug version of the code includes the debug output trace mechanism and 7651has a 7652much larger code and data size. 7653 7654 Previous Release: 7655 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 7656 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 7657 Current Release: 7658 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 7659 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 7660 76612) iASL Compiler/Disassembler and Tools: 7662 7663iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 7664resource descriptor names. 7665 7666iASL: Detect invalid ASCII characters in input (windows version). Removed 7667the 7668"-CF" flag from the flex compile, enables correct detection of non-ASCII 7669characters in the input. BZ 441 7670 7671iASL: Eliminate warning when result of LoadTable is not used. Eliminate 7672the 7673"result of operation not used" warning when the DDB handle returned from 7674LoadTable is not used. The warning is not needed. BZ 590 7675 7676AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 7677method 7678to 7679pass address of table to the AML. Added option to disable OpRegion 7680simulation 7681to allow creation of an OpRegion with a real address that was passed to 7682_CFG. 7683All of this allows testing of the Load and Unload operators from 7684AcpiExec. 7685 7686Debugger: update tables command for unloaded tables. Handle unloaded 7687tables 7688and use the standard table header output routine. 7689 7690---------------------------------------- 769109 June 2008. Summary of changes for version 20080609: 7692 76931) ACPI CA Core Subsystem: 7694 7695Implemented a workaround for reversed _PRT entries. A significant number 7696of 7697BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 7698change dynamically detects and repairs this problem. Provides 7699compatibility 7700with MS ACPI. BZ 6859 7701 7702Simplified the internal ACPI hardware interfaces to eliminate the locking 7703flag parameter from Register Read/Write. Added a new external interface, 7704AcpiGetRegisterUnlocked. 7705 7706Fixed a problem where the invocation of a GPE control method could hang. 7707This 7708was a regression introduced in 20080514. The new method argument count 7709validation mechanism can enter an infinite loop when a GPE method is 7710dispatched. Problem fixed by removing the obsolete code that passed GPE 7711block 7712information to the notify handler via the control method parameter 7713pointer. 7714 7715Fixed a problem where the _SST execution status was incorrectly returned 7716to 7717the caller of AcpiEnterSleepStatePrep. This was a regression introduced 7718in 771920080514. _SST is optional and a NOT_FOUND exception should never be 7720returned. BZ 716 7721 7722Fixed a problem where a deleted object could be accessed from within the 7723AML 7724parser. This was a regression introduced in version 20080123 as a fix for 7725the 7726Unload operator. Lin Ming. BZ 10669 7727 7728Cleaned up the debug operand dump mechanism. Eliminated unnecessary 7729operands 7730and eliminated the use of a negative index in a loop. Operands are now 7731displayed in the correct order, not backwards. This also fixes a 7732regression 7733introduced in 20080514 on 64-bit systems where the elimination of 7734ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 7735715 7736 7737Fixed a possible memory leak in EvPciConfigRegionSetup where the error 7738exit 7739path did not delete a locally allocated structure. 7740 7741Updated definitions for the DMAR and SRAT tables to synchronize with the 7742current specifications. Includes disassembler support. 7743 7744Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 7745loop termination value was used. Loop terminated on iteration early, 7746missing 7747one mutex. Linn Crosetto 7748 7749Example Code and Data Size: These are the sizes for the OS-independent 7750acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7751debug version of the code includes the debug output trace mechanism and 7752has a 7753much larger code and data size. 7754 7755 Previous Release: 7756 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 7757 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 7758 Current Release: 7759 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 7760 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 7761 77622) iASL Compiler/Disassembler and Tools: 7763 7764Disassembler: Implemented support for EisaId() within _CID objects. Now 7765disassemble integer _CID objects back to EisaId invocations, including 7766multiple integers within _CID packages. Includes single-step support for 7767debugger also. 7768 7769Disassembler: Added support for DMAR and SRAT table definition changes. 7770 7771---------------------------------------- 777214 May 2008. Summary of changes for version 20080514: 7773 77741) ACPI CA Core Subsystem: 7775 7776Fixed a problem where GPEs were enabled too early during the ACPICA 7777initialization. This could lead to "handler not installed" errors on some 7778machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 7779This 7780ensures that all operation regions and devices throughout the namespace 7781have 7782been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 7783 7784Implemented a change to the enter sleep code. Moved execution of the _GTS 7785method to just before setting sleep enable bit. The execution was moved 7786from 7787AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 7788immediately before the SLP_EN bit is set, as per the ACPI specification. 7789Luming Yu, BZ 1653. 7790 7791Implemented a fix to disable unknown GPEs (2nd version). Now always 7792disable 7793the GPE, even if ACPICA thinks that that it is already disabled. It is 7794possible that the AML or some other code has enabled the GPE unbeknownst 7795to 7796the ACPICA code. 7797 7798Fixed a problem with the Field operator where zero-length fields would 7799return 7800an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 7801ASL 7802field declarations in Field(), BankField(), and IndexField(). BZ 10606. 7803 7804Implemented a fix for the Load operator, now load the table at the 7805namespace 7806root. This reverts a change introduced in version 20071019. The table is 7807now 7808loaded at the namespace root even though this goes against the ACPI 7809specification. This provides compatibility with other ACPI 7810implementations. 7811The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 7812Ming. 7813 7814Fixed a problem where ACPICA would not Load() tables with unusual 7815signatures. 7816Now ignore ACPI table signature for Load() operator. Only "SSDT" is 7817acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 7818Therefore, signature validation is worthless. Apparently MS ACPI accepts 7819such 7820signatures, ACPICA must be compatible. BZ 10454. 7821 7822Fixed a possible negative array index in AcpiUtValidateException. Added 7823NULL 7824fields to the exception string arrays to eliminate a -1 subtraction on 7825the 7826SubStatus field. 7827 7828Updated the debug tracking macros to reduce overall code and data size. 7829Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 7830instead of pointers to static strings. Jan Beulich and Bob Moore. 7831 7832Implemented argument count checking in control method invocation via 7833AcpiEvaluateObject. Now emit an error if too few arguments, warning if 7834too 7835many. This applies only to extern programmatic control method execution, 7836not 7837method-to-method calls within the AML. Lin Ming. 7838 7839Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 7840no 7841longer needed, especially with the removal of 16-bit support. It was 7842replaced 7843mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 7844bit 7845on 784632/64-bit platforms is required. 7847 7848Added the C const qualifier for appropriate string constants -- mostly 7849MODULE_NAME and printf format strings. Jan Beulich. 7850 7851Example Code and Data Size: These are the sizes for the OS-independent 7852acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7853debug version of the code includes the debug output trace mechanism and 7854has a 7855much larger code and data size. 7856 7857 Previous Release: 7858 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 7859 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 7860 Current Release: 7861 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 7862 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 7863 78642) iASL Compiler/Disassembler and Tools: 7865 7866Implemented ACPI table revision ID validation in the disassembler. Zero 7867is 7868always invalid. For DSDTs, the ID controls the interpreter integer width. 78691 7870means 32-bit and this is unusual. 2 or greater is 64-bit. 7871 7872---------------------------------------- 787321 March 2008. Summary of changes for version 20080321: 7874 78751) ACPI CA Core Subsystem: 7876 7877Implemented an additional change to the GPE support in order to suppress 7878spurious or stray GPEs. The AcpiEvDisableGpe function will now 7879permanently 7880disable incoming GPEs that are neither enabled nor disabled -- meaning 7881that 7882the GPE is unknown to the system. This should prevent future interrupt 7883floods 7884from that GPE. BZ 6217 (Zhang Rui) 7885 7886Fixed a problem where NULL package elements were not returned to the 7887AcpiEvaluateObject interface correctly. The element was simply ignored 7888instead of returning a NULL ACPI_OBJECT package element, potentially 7889causing 7890a buffer overflow and/or confusing the caller who expected a fixed number 7891of 7892elements. BZ 10132 (Lin Ming, Bob Moore) 7893 7894Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 7895Dword, 7896Qword), Field, BankField, and IndexField operators when invoked from 7897inside 7898an executing control method. In this case, these operators created 7899namespace 7900nodes that were incorrectly left marked as permanent nodes instead of 7901temporary nodes. This could cause a problem if there is race condition 7902between an exiting control method and a running namespace walk. (Reported 7903by 7904Linn Crosetto) 7905 7906Fixed a problem where the CreateField and CreateXXXField operators would 7907incorrectly allow duplicate names (the name of the field) with no 7908exception 7909generated. 7910 7911Implemented several changes for Notify handling. Added support for new 7912Notify 7913values (ACPI 2.0+) and improved the Notify debug output. Notify on 7914PowerResource objects is no longer allowed, as per the ACPI 7915specification. 7916(Bob Moore, Zhang Rui) 7917 7918All Reference Objects returned via the AcpiEvaluateObject interface are 7919now 7920marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 7921for 7922NULL objects - either NULL package elements or unresolved named 7923references. 7924 7925Fixed a problem where an extraneous debug message was produced for 7926package 7927objects (when debugging enabled). The message "Package List length larger 7928than NumElements count" is now produced in the correct case, and is now 7929an 7930error message rather than a debug message. Added a debug message for the 7931opposite case, where NumElements is larger than the Package List (the 7932package 7933will be padded out with NULL elements as per the ACPI spec.) 7934 7935Implemented several improvements for the output of the ASL "Debug" object 7936to 7937clarify and keep all data for a given object on one output line. 7938 7939Fixed two size calculation issues with the variable-length Start 7940Dependent 7941resource descriptor. 7942 7943Example Code and Data Size: These are the sizes for the OS-independent 7944acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7945debug version of the code includes the debug output trace mechanism and 7946has 7947a much larger code and data size. 7948 7949 Previous Release: 7950 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 7951 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 7952 Current Release: 7953 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 7954 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 7955 79562) iASL Compiler/Disassembler and Tools: 7957 7958Fixed a problem with the use of the Switch operator where execution of 7959the 7960containing method by multiple concurrent threads could cause an 7961AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 7962actual Switch opcode, it must be simulated with local named temporary 7963variables and if/else pairs. The solution chosen was to mark any method 7964that 7965uses Switch as Serialized, thus preventing multiple thread entries. BZ 7966469. 7967 7968---------------------------------------- 796913 February 2008. Summary of changes for version 20080213: 7970 79711) ACPI CA Core Subsystem: 7972 7973Implemented another MS compatibility design change for GPE/Notify 7974handling. 7975GPEs are now cleared/enabled asynchronously to allow all pending notifies 7976to 7977complete first. It is expected that the OSL will queue the enable request 7978behind all pending notify requests (may require changes to the local host 7979OSL 7980in AcpiOsExecute). Alexey Starikovskiy. 7981 7982Fixed a problem where buffer and package objects passed as arguments to a 7983control method via the external AcpiEvaluateObject interface could cause 7984an 7985AE_AML_INTERNAL exception depending on the order and type of operators 7986executed by the target control method. 7987 7988Fixed a problem where resource descriptor size optimization could cause a 7989problem when a _CRS resource template is passed to a _SRS method. The 7990_SRS 7991resource template must use the same descriptors (with the same size) as 7992returned from _CRS. This change affects the following resource 7993descriptors: 7994IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 79959487) 7996 7997Fixed a problem where a CopyObject to RegionField, BankField, and 7998IndexField 7999objects did not perform an implicit conversion as it should. These types 8000must 8001retain their initial type permanently as per the ACPI specification. 8002However, 8003a CopyObject to all other object types should not perform an implicit 8004conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 8005 8006Fixed a problem with the AcpiGetDevices interface where the mechanism to 8007match device CIDs did not examine the entire list of available CIDs, but 8008instead aborted on the first non-matching CID. Andrew Patterson. 8009 8010Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 8011was 8012inadvertently changed to return a 16-bit value instead of a 32-bit value, 8013truncating the upper dword of a 64-bit value. This macro is only used to 8014display debug output, so no incorrect calculations were made. Also, 8015reimplemented the macro so that a 64-bit shift is not performed by 8016inefficient compilers. 8017 8018Added missing va_end statements that should correspond with each va_start 8019statement. 8020 8021Example Code and Data Size: These are the sizes for the OS-independent 8022acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8023debug version of the code includes the debug output trace mechanism and 8024has 8025a much larger code and data size. 8026 8027 Previous Release: 8028 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 8029 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 8030 Current Release: 8031 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 8032 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 8033 80342) iASL Compiler/Disassembler and Tools: 8035 8036Implemented full disassembler support for the following new ACPI tables: 8037BERT, EINJ, and ERST. Implemented partial disassembler support for the 8038complicated HEST table. These tables support the Windows Hardware Error 8039Architecture (WHEA). 8040 8041---------------------------------------- 804223 January 2008. Summary of changes for version 20080123: 8043 80441) ACPI CA Core Subsystem: 8045 8046Added the 2008 copyright to all module headers and signons. This affects 8047virtually every file in the ACPICA core subsystem, the iASL compiler, and 8048the tools/utilities. 8049 8050Fixed a problem with the SizeOf operator when used with Package and 8051Buffer 8052objects. These objects have deferred execution for some arguments, and 8053the 8054execution is now completed before the SizeOf is executed. This problem 8055caused 8056unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 8057BZ 80589558 8059 8060Implemented an enhancement to the interpreter "slack mode". In the 8061absence 8062of 8063an explicit return or an implicitly returned object from the last 8064executed 8065opcode, a control method will now implicitly return an integer of value 0 8066for 8067Microsoft compatibility. (Lin Ming) BZ 392 8068 8069Fixed a problem with the Load operator where an exception was not 8070returned 8071in 8072the case where the table is already loaded. (Lin Ming) BZ 463 8073 8074Implemented support for the use of DDBHandles as an Indexed Reference, as 8075per 8076the ACPI spec. (Lin Ming) BZ 486 8077 8078Implemented support for UserTerm (Method invocation) for the Unload 8079operator 8080as per the ACPI spec. (Lin Ming) BZ 580 8081 8082Fixed a problem with the LoadTable operator where the OemId and 8083OemTableId 8084input strings could cause unexpected failures if they were shorter than 8085the 8086maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 8087 8088Implemented support for UserTerm (Method invocation) for the Unload 8089operator 8090as per the ACPI spec. (Lin Ming) BZ 580 8091 8092Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 8093HEST, 8094IBFT, UEFI, WDAT. Disassembler support is forthcoming. 8095 8096Example Code and Data Size: These are the sizes for the OS-independent 8097acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8098debug version of the code includes the debug output trace mechanism and 8099has 8100a much larger code and data size. 8101 8102 Previous Release: 8103 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 8104 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 8105 Current Release: 8106 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 8107 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 8108 81092) iASL Compiler/Disassembler and Tools: 8110 8111Implemented support in the disassembler for checksum validation on 8112incoming 8113binary DSDTs and SSDTs. If incorrect, a message is displayed within the 8114table 8115header dump at the start of the disassembly. 8116 8117Implemented additional debugging information in the namespace listing 8118file 8119created during compilation. In addition to the namespace hierarchy, the 8120full 8121pathname to each namespace object is displayed. 8122 8123Fixed a problem with the disassembler where invalid ACPI tables could 8124cause 8125faults or infinite loops. 8126 8127Fixed an unexpected parse error when using the optional "parameter types" 8128list in a control method declaration. (Lin Ming) BZ 397 8129 8130Fixed a problem where two External declarations with the same name did 8131not 8132cause an error (Lin Ming) BZ 509 8133 8134Implemented support for full TermArgs (adding Argx, Localx and method 8135invocation) for the ParameterData parameter to the LoadTable operator. 8136(Lin 8137Ming) BZ 583,587 8138 8139---------------------------------------- 814019 December 2007. Summary of changes for version 20071219: 8141 81421) ACPI CA Core Subsystem: 8143 8144Implemented full support for deferred execution for the TermArg string 8145arguments for DataTableRegion. This enables forward references and full 8146operand resolution for the three string arguments. Similar to 8147OperationRegion 8148deferred argument execution.) Lin Ming. BZ 430 8149 8150Implemented full argument resolution support for the BankValue argument 8151to 8152BankField. Previously, only constants were supported, now any TermArg may 8153be 8154used. Lin Ming BZ 387, 393 8155 8156Fixed a problem with AcpiGetDevices where the search of a branch of the 8157device tree could be terminated prematurely. In accordance with the ACPI 8158specification, the search down the current branch is terminated if a 8159device 8160is both not present and not functional (instead of just not present.) 8161Yakui 8162Zhao. 8163 8164Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 8165if 8166the underlying AML code changed the GPE enable registers. Now, any 8167unknown 8168incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 8169disabled 8170instead of simply ignored. Rui Zhang. 8171 8172Fixed a problem with Index Fields where the Index register was 8173incorrectly 8174limited to a maximum of 32 bits. Now any size may be used. 8175 8176Fixed a couple memory leaks associated with "implicit return" objects 8177when 8178the AML Interpreter slack mode is enabled. Lin Ming BZ 349 8179 8180Example Code and Data Size: These are the sizes for the OS-independent 8181acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8182debug version of the code includes the debug output trace mechanism and 8183has 8184a much larger code and data size. 8185 8186 Previous Release: 8187 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 8188 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 8189 Current Release: 8190 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 8191 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 8192 8193---------------------------------------- 819414 November 2007. Summary of changes for version 20071114: 8195 81961) ACPI CA Core Subsystem: 8197 8198Implemented event counters for each of the Fixed Events, the ACPI SCI 8199(interrupt) itself, and control methods executed. Named 8200AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 8201These 8202should be useful for debugging and statistics. 8203 8204Implemented a new external interface, AcpiGetStatistics, to retrieve the 8205contents of the various event counters. Returns the current values for 8206AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 8207AcpiMethodCount. The interface can be expanded in the future if new 8208counters 8209are added. Device drivers should use this interface rather than access 8210the 8211counters directly. 8212 8213Fixed a problem with the FromBCD and ToBCD operators. With some 8214compilers, 8215the ShortDivide function worked incorrectly, causing problems with the 8216BCD 8217functions with large input values. A truncation from 64-bit to 32-bit 8218inadvertently occurred. Internal BZ 435. Lin Ming 8219 8220Fixed a problem with Index references passed as method arguments. 8221References 8222passed as arguments to control methods were dereferenced immediately 8223(before 8224control was passed to the called method). The references are now 8225correctly 8226passed directly to the called method. BZ 5389. Lin Ming 8227 8228Fixed a problem with CopyObject used in conjunction with the Index 8229operator. 8230The reference was incorrectly dereferenced before the copy. The reference 8231is 8232now correctly copied. BZ 5391. Lin Ming 8233 8234Fixed a problem with Control Method references within Package objects. 8235These 8236references are now correctly generated. This completes the package 8237construction overhaul that began in version 20071019. 8238 8239Example Code and Data Size: These are the sizes for the OS-independent 8240acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8241debug version of the code includes the debug output trace mechanism and 8242has 8243a much larger code and data size. 8244 8245 Previous Release: 8246 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 8247 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 8248 Current Release: 8249 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 8250 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 8251 8252 82532) iASL Compiler/Disassembler and Tools: 8254 8255The AcpiExec utility now installs handlers for all of the predefined 8256Operation Region types. New types supported are: PCI_Config, CMOS, and 8257PCIBARTarget. 8258 8259Fixed a problem with the 64-bit version of AcpiExec where the extended 8260(64- 8261bit) address fields for the DSDT and FACS within the FADT were not being 8262used, causing truncation of the upper 32-bits of these addresses. Lin 8263Ming 8264and Bob Moore 8265 8266---------------------------------------- 826719 October 2007. Summary of changes for version 20071019: 8268 82691) ACPI CA Core Subsystem: 8270 8271Fixed a problem with the Alias operator when the target of the alias is a 8272named ASL operator that opens a new scope -- Scope, Device, 8273PowerResource, 8274Processor, and ThermalZone. In these cases, any children of the original 8275operator could not be accessed via the alias, potentially causing 8276unexpected 8277AE_NOT_FOUND exceptions. (BZ 9067) 8278 8279Fixed a problem with the Package operator where all named references were 8280created as object references and left otherwise unresolved. According to 8281the 8282ACPI specification, a Package can only contain Data Objects or references 8283to 8284control methods. The implication is that named references to Data Objects 8285(Integer, Buffer, String, Package, BufferField, Field) should be resolved 8286immediately upon package creation. This is the approach taken with this 8287change. References to all other named objects (Methods, Devices, Scopes, 8288etc.) are all now properly created as reference objects. (BZ 5328) 8289 8290Reverted a change to Notify handling that was introduced in version 829120070508. This version changed the Notify handling from asynchronous to 8292fully synchronous (Device driver Notify handling with respect to the 8293Notify 8294ASL operator). It was found that this change caused more problems than it 8295solved and was removed by most users. 8296 8297Fixed a problem with the Increment and Decrement operators where the type 8298of 8299the target object could be unexpectedly and incorrectly changed. (BZ 353) 8300Lin Ming. 8301 8302Fixed a problem with the Load and LoadTable operators where the table 8303location within the namespace was ignored. Instead, the table was always 8304loaded into the root or current scope. Lin Ming. 8305 8306Fixed a problem with the Load operator when loading a table from a buffer 8307object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 8308 8309Fixed a problem with the Debug object where a store of a DdbHandle 8310reference 8311object to the Debug object could cause a fault. 8312 8313Added a table checksum verification for the Load operator, in the case 8314where 8315the load is from a buffer. (BZ 578). 8316 8317Implemented additional parameter validation for the LoadTable operator. 8318The 8319length of the input strings SignatureString, OemIdString, and OemTableId 8320are 8321now checked for maximum lengths. (BZ 582) Lin Ming. 8322 8323Example Code and Data Size: These are the sizes for the OS-independent 8324acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8325debug version of the code includes the debug output trace mechanism and 8326has 8327a much larger code and data size. 8328 8329 Previous Release: 8330 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 8331 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 8332 Current Release: 8333 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 8334 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 8335 8336 83372) iASL Compiler/Disassembler: 8338 8339Fixed a problem where if a single file was specified and the file did not 8340exist, no error message was emitted. (Introduced with wildcard support in 8341version 20070917.) 8342 8343---------------------------------------- 834419 September 2007. Summary of changes for version 20070919: 8345 83461) ACPI CA Core Subsystem: 8347 8348Designed and implemented new external interfaces to install and remove 8349handlers for ACPI table-related events. Current events that are defined 8350are 8351LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 8352they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 8353AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 8354 8355Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 8356(acpi_serialized option on Linux) could cause some systems to hang during 8357initialization. (Bob Moore) BZ 8171 8358 8359Fixed a problem where objects of certain types (Device, ThermalZone, 8360Processor, PowerResource) can be not found if they are declared and 8361referenced from within the same control method (Lin Ming) BZ 341 8362 8363Example Code and Data Size: These are the sizes for the OS-independent 8364acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8365debug version of the code includes the debug output trace mechanism and 8366has 8367a much larger code and data size. 8368 8369 Previous Release: 8370 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 8371 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 8372 Current Release: 8373 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 8374 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 8375 8376 83772) iASL Compiler/Disassembler: 8378 8379Implemented support to allow multiple files to be compiled/disassembled 8380in 8381a 8382single invocation. This includes command line wildcard support for both 8383the 8384Windows and Unix versions of the compiler. This feature simplifies the 8385disassembly and compilation of multiple ACPI tables in a single 8386directory. 8387 8388---------------------------------------- 838908 May 2007. Summary of changes for version 20070508: 8390 83911) ACPI CA Core Subsystem: 8392 8393Implemented a Microsoft compatibility design change for the handling of 8394the 8395Notify AML operator. Previously, notify handlers were dispatched and 8396executed completely asynchronously in a deferred thread. The new design 8397still executes the notify handlers in a different thread, but the 8398original 8399thread that executed the Notify() now waits at a synchronization point 8400for 8401the notify handler to complete. Some machines depend on a synchronous 8402Notify 8403operator in order to operate correctly. 8404 8405Implemented support to allow Package objects to be passed as method 8406arguments to the external AcpiEvaluateObject interface. Previously, this 8407would return the AE_NOT_IMPLEMENTED exception. This feature had not been 8408implemented since there were no reserved control methods that required it 8409until recently. 8410 8411Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 8412that 8413contained invalid non-zero values in reserved fields could cause later 8414failures because these fields have meaning in later revisions of the 8415FADT. 8416For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 8417fields 8418are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 8419 8420Fixed a problem where the Global Lock handle was not properly updated if 8421a 8422thread that acquired the Global Lock via executing AML code then 8423attempted 8424to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 8425Joe 8426Liu. 8427 8428Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 8429could be corrupted if the interrupt being removed was at the head of the 8430list. Reported by Linn Crosetto. 8431 8432Example Code and Data Size: These are the sizes for the OS-independent 8433acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8434debug version of the code includes the debug output trace mechanism and 8435has 8436a much larger code and data size. 8437 8438 Previous Release: 8439 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8440 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 8441 Current Release: 8442 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 8443 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 8444 8445---------------------------------------- 844620 March 2007. Summary of changes for version 20070320: 8447 84481) ACPI CA Core Subsystem: 8449 8450Implemented a change to the order of interpretation and evaluation of AML 8451operand objects within the AML interpreter. The interpreter now evaluates 8452operands in the order that they appear in the AML stream (and the 8453corresponding ASL code), instead of in the reverse order (after the 8454entire 8455operand list has been parsed). The previous behavior caused several 8456subtle 8457incompatibilities with the Microsoft AML interpreter as well as being 8458somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 8459 8460Implemented a change to the ACPI Global Lock support. All interfaces to 8461the 8462global lock now allow the same thread to acquire the lock multiple times. 8463This affects the AcpiAcquireGlobalLock external interface to the global 8464lock 8465as well as the internal use of the global lock to support AML fields -- a 8466control method that is holding the global lock can now simultaneously 8467access 8468AML fields that require global lock protection. Previously, in both 8469cases, 8470this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 8471to 8472AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 8473Controller. There is no change to the behavior of the AML Acquire 8474operator, 8475as this can already be used to acquire a mutex multiple times by the same 8476thread. BZ 8066. With assistance from Alexey Starikovskiy. 8477 8478Fixed a problem where invalid objects could be referenced in the AML 8479Interpreter after error conditions. During operand evaluation, ensure 8480that 8481the internal "Return Object" field is cleared on error and only valid 8482pointers are stored there. Caused occasional access to deleted objects 8483that 8484resulted in "large reference count" warning messages. Valery Podrezov. 8485 8486Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 8487on 8488deeply nested control method invocations. BZ 7873, local BZ 487. Valery 8489Podrezov. 8490 8491Fixed an internal problem with the handling of result objects on the 8492interpreter result stack. BZ 7872. Valery Podrezov. 8493 8494Removed obsolete code that handled the case where AML_NAME_OP is the 8495target 8496of a reference (Reference.Opcode). This code was no longer necessary. BZ 84977874. Valery Podrezov. 8498 8499Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 8500was 8501a 8502remnant from the previously discontinued 16-bit support. 8503 8504Example Code and Data Size: These are the sizes for the OS-independent 8505acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8506debug version of the code includes the debug output trace mechanism and 8507has 8508a much larger code and data size. 8509 8510 Previous Release: 8511 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8512 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8513 Current Release: 8514 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8515 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 8516 8517---------------------------------------- 851826 January 2007. Summary of changes for version 20070126: 8519 85201) ACPI CA Core Subsystem: 8521 8522Added the 2007 copyright to all module headers and signons. This affects 8523virtually every file in the ACPICA core subsystem, the iASL compiler, and 8524the utilities. 8525 8526Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 8527during a table load. A bad pointer was passed in the case where the DSDT 8528is 8529overridden, causing a fault in this case. 8530 8531Example Code and Data Size: These are the sizes for the OS-independent 8532acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8533debug version of the code includes the debug output trace mechanism and 8534has 8535a much larger code and data size. 8536 8537 Previous Release: 8538 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8539 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8540 Current Release: 8541 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8542 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8543 8544---------------------------------------- 854515 December 2006. Summary of changes for version 20061215: 8546 85471) ACPI CA Core Subsystem: 8548 8549Support for 16-bit ACPICA has been completely removed since it is no 8550longer 8551necessary and it clutters the code. All 16-bit macros, types, and 8552conditional compiles have been removed, cleaning up and simplifying the 8553code 8554across the entire subsystem. DOS support is no longer needed since the 8555bootable Linux firmware kit is now available. 8556 8557The handler for the Global Lock is now removed during AcpiTerminate to 8558enable a clean subsystem restart, via the implementation of the 8559AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 8560HP) 8561 8562Implemented enhancements to the multithreading support within the 8563debugger 8564to enable improved multithreading debugging and evaluation of the 8565subsystem. 8566(Valery Podrezov) 8567 8568Debugger: Enhanced the Statistics/Memory command to emit the total 8569(maximum) 8570memory used during the execution, as well as the maximum memory consumed 8571by 8572each of the various object types. (Valery Podrezov) 8573 8574Example Code and Data Size: These are the sizes for the OS-independent 8575acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8576debug version of the code includes the debug output trace mechanism and 8577has 8578a much larger code and data size. 8579 8580 Previous Release: 8581 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 8582 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 8583 Current Release: 8584 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8585 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8586 8587 85882) iASL Compiler/Disassembler and Tools: 8589 8590AcpiExec: Implemented a new option (-m) to display full memory use 8591statistics upon subsystem/program termination. (Valery Podrezov) 8592 8593---------------------------------------- 859409 November 2006. Summary of changes for version 20061109: 8595 85961) ACPI CA Core Subsystem: 8597 8598Optimized the Load ASL operator in the case where the source operand is 8599an 8600operation region. Simply map the operation region memory, instead of 8601performing a bytewise read. (Region must be of type SystemMemory, see 8602below.) 8603 8604Fixed the Load ASL operator for the case where the source operand is a 8605region field. A buffer object is also allowed as the source operand. BZ 8606480 8607 8608Fixed a problem where the Load ASL operator allowed the source operand to 8609be 8610an operation region of any type. It is now restricted to regions of type 8611SystemMemory, as per the ACPI specification. BZ 481 8612 8613Additional cleanup and optimizations for the new Table Manager code. 8614 8615AcpiEnable will now fail if all of the required ACPI tables are not 8616loaded 8617(FADT, FACS, DSDT). BZ 477 8618 8619Added #pragma pack(8/4) to acobject.h to ensure that the structures in 8620this 8621header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 8622manually optimized to be aligned and will not work if it is byte-packed. 8623 8624Example Code and Data Size: These are the sizes for the OS-independent 8625acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8626debug version of the code includes the debug output trace mechanism and 8627has 8628a much larger code and data size. 8629 8630 Previous Release: 8631 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 8632 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 8633 Current Release: 8634 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 8635 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 8636 8637 86382) iASL Compiler/Disassembler and Tools: 8639 8640Fixed a problem where the presence of the _OSI predefined control method 8641within complex expressions could cause an internal compiler error. 8642 8643AcpiExec: Implemented full region support for multiple address spaces. 8644SpaceId is now part of the REGION object. BZ 429 8645 8646---------------------------------------- 864711 October 2006. Summary of changes for version 20061011: 8648 86491) ACPI CA Core Subsystem: 8650 8651Completed an AML interpreter performance enhancement for control method 8652execution. Previously a 2-pass parse/execution, control methods are now 8653completely parsed and executed in a single pass. This improves overall 8654interpreter performance by ~25%, reduces code size, and reduces CPU stack 8655use. (Valery Podrezov + interpreter changes in version 20051202 that 8656eliminated namespace loading during the pass one parse.) 8657 8658Implemented _CID support for PCI Root Bridge detection. If the _HID does 8659not 8660match the predefined PCI Root Bridge IDs, the _CID list (if present) is 8661now 8662obtained and also checked for an ID match. 8663 8664Implemented additional support for the PCI _ADR execution: upsearch until 8665a 8666device scope is found before executing _ADR. This allows PCI_Config 8667operation regions to be declared locally within control methods 8668underneath 8669PCI device objects. 8670 8671Fixed a problem with a possible race condition between threads executing 8672AcpiWalkNamespace and the AML interpreter. This condition was removed by 8673modifying AcpiWalkNamespace to (by default) ignore all temporary 8674namespace 8675entries created during any concurrent control method execution. An 8676additional namespace race condition is known to exist between 8677AcpiWalkNamespace and the Load/Unload ASL operators and is still under 8678investigation. 8679 8680Restructured the AML ParseLoop function, breaking it into several 8681subfunctions in order to reduce CPU stack use and improve 8682maintainability. 8683(Mikhail Kouzmich) 8684 8685AcpiGetHandle: Fix for parameter validation to detect invalid 8686combinations 8687of prefix handle and pathname. BZ 478 8688 8689Example Code and Data Size: These are the sizes for the OS-independent 8690acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8691debug version of the code includes the debug output trace mechanism and 8692has 8693a much larger code and data size. 8694 8695 Previous Release: 8696 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8697 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 8698 Current Release: 8699 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 8700 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 8701 87022) iASL Compiler/Disassembler and Tools: 8703 8704Ported the -g option (get local ACPI tables) to the new ACPICA Table 8705Manager 8706to restore original behavior. 8707 8708---------------------------------------- 870927 September 2006. Summary of changes for version 20060927: 8710 87111) ACPI CA Core Subsystem: 8712 8713Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 8714These functions now use a spinlock for mutual exclusion and the interrupt 8715level indication flag is not needed. 8716 8717Fixed a problem with the Global Lock where the lock could appear to be 8718obtained before it is actually obtained. The global lock semaphore was 8719inadvertently created with one unit instead of zero units. (BZ 464) 8720Fiodor 8721Suietov. 8722 8723Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 8724during 8725a read from a buffer or region field. (BZ 458) Fiodor Suietov. 8726 8727Example Code and Data Size: These are the sizes for the OS-independent 8728acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8729debug version of the code includes the debug output trace mechanism and 8730has 8731a much larger code and data size. 8732 8733 Previous Release: 8734 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8735 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 8736 Current Release: 8737 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8738 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 8739 8740 87412) iASL Compiler/Disassembler and Tools: 8742 8743Fixed a compilation problem with the pre-defined Resource Descriptor 8744field 8745names where an "object does not exist" error could be incorrectly 8746generated 8747if the parent ResourceTemplate pathname places the template within a 8748different namespace scope than the current scope. (BZ 7212) 8749 8750Fixed a problem where the compiler could hang after syntax errors 8751detected 8752in an ElseIf construct. (BZ 453) 8753 8754Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 8755operator. An incorrect output filename was produced when this parameter 8756was 8757a null string (""). Now, the original input filename is used as the AML 8758output filename, with an ".aml" extension. 8759 8760Implemented a generic batch command mode for the AcpiExec utility 8761(execute 8762any AML debugger command) (Valery Podrezov). 8763 8764---------------------------------------- 876512 September 2006. Summary of changes for version 20060912: 8766 87671) ACPI CA Core Subsystem: 8768 8769Enhanced the implementation of the "serialized mode" of the interpreter 8770(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 8771specified, instead of creating a serialization semaphore per control 8772method, 8773the interpreter lock is simply no longer released before a blocking 8774operation during control method execution. This effectively makes the AML 8775Interpreter single-threaded. The overhead of a semaphore per-method is 8776eliminated. 8777 8778Fixed a regression where an error was no longer emitted if a control 8779method 8780attempts to create 2 objects of the same name. This once again returns 8781AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 8782that 8783will dynamically serialize the control method to possible prevent future 8784errors. (BZ 440) 8785 8786Integrated a fix for a problem with PCI Express HID detection in the PCI 8787Config Space setup procedure. (BZ 7145) 8788 8789Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 8790AcpiHwInitialize function - the FADT registers are now validated when the 8791table is loaded. 8792 8793Added two new warnings during FADT verification - 1) if the FADT is 8794larger 8795than the largest known FADT version, and 2) if there is a mismatch 8796between 8797a 879832-bit block address and the 64-bit X counterpart (when both are non- 8799zero.) 8800 8801Example Code and Data Size: These are the sizes for the OS-independent 8802acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8803debug version of the code includes the debug output trace mechanism and 8804has 8805a much larger code and data size. 8806 8807 Previous Release: 8808 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 8809 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 8810 Current Release: 8811 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8812 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 8813 8814 88152) iASL Compiler/Disassembler and Tools: 8816 8817Fixed a problem with the implementation of the Switch() operator where 8818the 8819temporary variable was declared too close to the actual Switch, instead 8820of 8821at method level. This could cause a problem if the Switch() operator is 8822within a while loop, causing an error on the second iteration. (BZ 460) 8823 8824Disassembler - fix for error emitted for unknown type for target of scope 8825operator. Now, ignore it and continue. 8826 8827Disassembly of an FADT now verifies the input FADT and reports any errors 8828found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 8829 8830Disassembly of raw data buffers with byte initialization data now 8831prefixes 8832each output line with the current buffer offset. 8833 8834Disassembly of ASF! table now includes all variable-length data fields at 8835the end of some of the subtables. 8836 8837The disassembler now emits a comment if a buffer appears to be a 8838ResourceTemplate, but cannot be disassembled as such because the EndTag 8839does 8840not appear at the very end of the buffer. 8841 8842AcpiExec - Added the "-t" command line option to enable the serialized 8843mode 8844of the AML interpreter. 8845 8846---------------------------------------- 884731 August 2006. Summary of changes for version 20060831: 8848 88491) ACPI CA Core Subsystem: 8850 8851Miscellaneous fixes for the Table Manager: 8852- Correctly initialize internal common FADT for all 64-bit "X" fields 8853- Fixed a couple table mapping issues during table load 8854- Fixed a couple alignment issues for IA64 8855- Initialize input array to zero in AcpiInitializeTables 8856- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 8857AcpiGetTableByIndex 8858 8859Change for GPE support: when a "wake" GPE is received, all wake GPEs are 8860now 8861immediately disabled to prevent the waking GPE from firing again and to 8862prevent other wake GPEs from interrupting the wake process. 8863 8864Added the AcpiGpeCount global that tracks the number of processed GPEs, 8865to 8866be used for debugging systems with a large number of ACPI interrupts. 8867 8868Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 8869both the ACPICA headers and the disassembler. 8870 8871Example Code and Data Size: These are the sizes for the OS-independent 8872acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8873debug version of the code includes the debug output trace mechanism and 8874has 8875a much larger code and data size. 8876 8877 Previous Release: 8878 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 8879 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 8880 Current Release: 8881 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 8882 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 8883 8884 88852) iASL Compiler/Disassembler and Tools: 8886 8887Disassembler support for the DMAR ACPI table. 8888 8889---------------------------------------- 889023 August 2006. Summary of changes for version 20060823: 8891 88921) ACPI CA Core Subsystem: 8893 8894The Table Manager component has been completely redesigned and 8895reimplemented. The new design is much simpler, and reduces the overall 8896code 8897and data size of the kernel-resident ACPICA by approximately 5%. Also, it 8898is 8899now possible to obtain the ACPI tables very early during kernel 8900initialization, even before dynamic memory management is initialized. 8901(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 8902 8903Obsolete ACPICA interfaces: 8904 8905- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 8906init 8907time). 8908- AcpiLoadTable: Not needed. 8909- AcpiUnloadTable: Not needed. 8910 8911New ACPICA interfaces: 8912 8913- AcpiInitializeTables: Must be called before the table manager can be 8914used. 8915- AcpiReallocateRootTable: Used to transfer the root table to dynamically 8916allocated memory after it becomes available. 8917- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 8918tables 8919in the RSDT/XSDT. 8920 8921Other ACPICA changes: 8922 8923- AcpiGetTableHeader returns the actual mapped table header, not a copy. 8924Use 8925AcpiOsUnmapMemory to free this mapping. 8926- AcpiGetTable returns the actual mapped table. The mapping is managed 8927internally and must not be deleted by the caller. Use of this interface 8928causes no additional dynamic memory allocation. 8929- AcpiFindRootPointer: Support for physical addressing has been 8930eliminated, 8931it appeared to be unused. 8932- The interface to AcpiOsMapMemory has changed to be consistent with the 8933other allocation interfaces. 8934- The interface to AcpiOsGetRootPointer has changed to eliminate 8935unnecessary 8936parameters. 8937- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 893864- 8939bit platforms. Was previously 64 bits on all platforms. 8940- The interface to the ACPI Global Lock acquire/release macros have 8941changed 8942slightly since ACPICA no longer keeps a local copy of the FACS with a 8943constructed pointer to the actual global lock. 8944 8945Porting to the new table manager: 8946 8947- AcpiInitializeTables: Must be called once, and can be called anytime 8948during the OS initialization process. It allows the host to specify an 8949area 8950of memory to be used to store the internal version of the RSDT/XSDT (root 8951table). This allows the host to access ACPI tables before memory 8952management 8953is initialized and running. 8954- AcpiReallocateRootTable: Can be called after memory management is 8955running 8956to copy the root table to a dynamically allocated array, freeing up the 8957scratch memory specified in the call to AcpiInitializeTables. 8958- AcpiSubsystemInitialize: This existing interface is independent of the 8959Table Manager, and does not have to be called before the Table Manager 8960can 8961be used, it only must be called before the rest of ACPICA can be used. 8962- ACPI Tables: Some changes have been made to the names and structure of 8963the 8964actbl.h and actbl1.h header files and may require changes to existing 8965code. 8966For example, bitfields have been completely removed because of their lack 8967of 8968portability across C compilers. 8969- Update interfaces to the Global Lock acquire/release macros if local 8970versions are used. (see acwin.h) 8971 8972Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 8973 8974New files: tbfind.c 8975 8976Example Code and Data Size: These are the sizes for the OS-independent 8977acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8978debug version of the code includes the debug output trace mechanism and 8979has 8980a much larger code and data size. 8981 8982 Previous Release: 8983 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 8984 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 8985 Current Release: 8986 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 8987 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 8988 8989 89902) iASL Compiler/Disassembler and Tools: 8991 8992No changes for this release. 8993 8994---------------------------------------- 899521 July 2006. Summary of changes for version 20060721: 8996 89971) ACPI CA Core Subsystem: 8998 8999The full source code for the ASL test suite used to validate the iASL 9000compiler and the ACPICA core subsystem is being released with the ACPICA 9001source for the first time. The source is contained in a separate package 9002and 9003consists of over 1100 files that exercise all ASL/AML operators. The 9004package 9005should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 9006Fiodor 9007Suietov) 9008 9009Completed a new design and implementation for support of the ACPI Global 9010Lock. On the OS side, the global lock is now treated as a standard AML 9011mutex. Previously, multiple OS threads could "acquire" the global lock 9012simultaneously. However, this could cause the BIOS to be starved out of 9013the 9014lock - especially in cases such as the Embedded Controller driver where 9015there is a tight coupling between the OS and the BIOS. 9016 9017Implemented an optimization for the ACPI Global Lock interrupt mechanism. 9018The Global Lock interrupt handler no longer queues the execution of a 9019separate thread to signal the global lock semaphore. Instead, the 9020semaphore 9021is signaled directly from the interrupt handler. 9022 9023Implemented support within the AML interpreter for package objects that 9024contain a larger AML length (package list length) than the package 9025element 9026count. In this case, the length of the package is truncated to match the 9027package element count. Some BIOS code apparently modifies the package 9028length 9029on the fly, and this change supports this behavior. Provides 9030compatibility 9031with the MS AML interpreter. (With assistance from Fiodor Suietov) 9032 9033Implemented a temporary fix for the BankValue parameter of a Bank Field 9034to 9035support all constant values, now including the Zero and One opcodes. 9036Evaluation of this parameter must eventually be converted to a full 9037TermArg 9038evaluation. A not-implemented error is now returned (temporarily) for 9039non- 9040constant values for this parameter. 9041 9042Fixed problem reports (Fiodor Suietov) integrated: 9043- Fix for premature object deletion after CopyObject on Operation Region 9044(BZ 9045350) 9046 9047Example Code and Data Size: These are the sizes for the OS-independent 9048acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9049debug version of the code includes the debug output trace mechanism and 9050has 9051a much larger code and data size. 9052 9053 Previous Release: 9054 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 9055 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 9056 Current Release: 9057 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 9058 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 9059 9060 90612) iASL Compiler/Disassembler and Tools: 9062 9063No changes for this release. 9064 9065---------------------------------------- 906607 July 2006. Summary of changes for version 20060707: 9067 90681) ACPI CA Core Subsystem: 9069 9070Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 9071that do not allow the initialization of address pointers within packed 9072structures - even though the hardware itself may support misaligned 9073transfers. Some of the debug data structures are packed by default to 9074minimize size. 9075 9076Added an error message for the case where AcpiOsGetThreadId() returns 9077zero. 9078A non-zero value is required by the core ACPICA code to ensure the proper 9079operation of AML mutexes and recursive control methods. 9080 9081The DSDT is now the only ACPI table that determines whether the AML 9082interpreter is in 32-bit or 64-bit mode. Not really a functional change, 9083but 9084the hooks for per-table 32/64 switching have been removed from the code. 9085A 9086clarification to the ACPI specification is forthcoming in ACPI 3.0B. 9087 9088Fixed a possible leak of an OwnerID in the error path of 9089AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 9090deletion to a single place in AcpiTbUninstallTable to correct possible 9091leaks 9092when using the AcpiTbDeleteTablesByType interface (with assistance from 9093Lance Ortiz.) 9094 9095Fixed a problem with Serialized control methods where the semaphore 9096associated with the method could be over-signaled after multiple method 9097invocations. 9098 9099Fixed two issues with the locking of the internal namespace data 9100structure. 9101Both the Unload() operator and AcpiUnloadTable interface now lock the 9102namespace during the namespace deletion associated with the table unload 9103(with assistance from Linn Crosetto.) 9104 9105Fixed problem reports (Valery Podrezov) integrated: 9106- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 9107 9108Fixed problem reports (Fiodor Suietov) integrated: 9109- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 9110- On Address Space handler deletion, needless deactivation call (BZ 374) 9111- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 9112375) 9113- Possible memory leak, Notify sub-objects of Processor, Power, 9114ThermalZone 9115(BZ 376) 9116- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 9117- Minimum Length of RSDT should be validated (BZ 379) 9118- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 9119Handler (BZ (380) 9120- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 9121loaded 9122(BZ 381) 9123 9124Example Code and Data Size: These are the sizes for the OS-independent 9125acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9126debug version of the code includes the debug output trace mechanism and 9127has 9128a much larger code and data size. 9129 9130 Previous Release: 9131 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 9132 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 9133 Current Release: 9134 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 9135 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 9136 9137 91382) iASL Compiler/Disassembler and Tools: 9139 9140Fixed problem reports: 9141Compiler segfault when ASL contains a long (>1024) String declaration (BZ 9142436) 9143 9144---------------------------------------- 914523 June 2006. Summary of changes for version 20060623: 9146 91471) ACPI CA Core Subsystem: 9148 9149Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 9150allows the type to be customized to the host OS for improved efficiency 9151(since a spinlock is usually a very small object.) 9152 9153Implemented support for "ignored" bits in the ACPI registers. According 9154to 9155the ACPI specification, these bits should be preserved when writing the 9156registers via a read/modify/write cycle. There are 3 bits preserved in 9157this 9158manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 9159 9160Implemented the initial deployment of new OSL mutex interfaces. Since 9161some 9162host operating systems have separate mutex and semaphore objects, this 9163feature was requested. The base code now uses mutexes (and the new mutex 9164interfaces) wherever a binary semaphore was used previously. However, for 9165the current release, the mutex interfaces are defined as macros to map 9166them 9167to the existing semaphore interfaces. Therefore, no OSL changes are 9168required 9169at this time. (See acpiosxf.h) 9170 9171Fixed several problems with the support for the control method SyncLevel 9172parameter. The SyncLevel now works according to the ACPI specification 9173and 9174in concert with the Mutex SyncLevel parameter, since the current 9175SyncLevel 9176is a property of the executing thread. Mutual exclusion for control 9177methods 9178is now implemented with a mutex instead of a semaphore. 9179 9180Fixed three instances of the use of the C shift operator in the bitfield 9181support code (exfldio.c) to avoid the use of a shift value larger than 9182the 9183target data width. The behavior of C compilers is undefined in this case 9184and 9185can cause unpredictable results, and therefore the case must be detected 9186and 9187avoided. (Fiodor Suietov) 9188 9189Added an info message whenever an SSDT or OEM table is loaded dynamically 9190via the Load() or LoadTable() ASL operators. This should improve 9191debugging 9192capability since it will show exactly what tables have been loaded 9193(beyond 9194the tables present in the RSDT/XSDT.) 9195 9196Example Code and Data Size: These are the sizes for the OS-independent 9197acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9198debug version of the code includes the debug output trace mechanism and 9199has 9200a much larger code and data size. 9201 9202 Previous Release: 9203 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 9204 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 9205 Current Release: 9206 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 9207 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 9208 9209 92102) iASL Compiler/Disassembler and Tools: 9211 9212No changes for this release. 9213 9214---------------------------------------- 921508 June 2006. Summary of changes for version 20060608: 9216 92171) ACPI CA Core Subsystem: 9218 9219Converted the locking mutex used for the ACPI hardware to a spinlock. 9220This 9221change should eliminate all problems caused by attempting to acquire a 9222semaphore at interrupt level, and it means that all ACPICA external 9223interfaces that directly access the ACPI hardware can be safely called 9224from 9225interrupt level. OSL code that implements the semaphore interfaces should 9226be 9227able to eliminate any workarounds for being called at interrupt level. 9228 9229Fixed a regression introduced in 20060526 where the ACPI device 9230initialization could be prematurely aborted with an AE_NOT_FOUND if a 9231device 9232did not have an optional _INI method. 9233 9234Fixed an IndexField issue where a write to the Data Register should be 9235limited in size to the AccessSize (width) of the IndexField itself. (BZ 9236433, 9237Fiodor Suietov) 9238 9239Fixed problem reports (Valery Podrezov) integrated: 9240- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 9241 9242Fixed problem reports (Fiodor Suietov) integrated: 9243- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 9244 9245Removed four global mutexes that were obsolete and were no longer being 9246used. 9247 9248Example Code and Data Size: These are the sizes for the OS-independent 9249acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9250debug version of the code includes the debug output trace mechanism and 9251has 9252a much larger code and data size. 9253 9254 Previous Release: 9255 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 9256 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 9257 Current Release: 9258 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 9259 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 9260 9261 92622) iASL Compiler/Disassembler and Tools: 9263 9264Fixed a fault when using -g option (get tables from registry) on Windows 9265machines. 9266 9267Fixed problem reports integrated: 9268- Generate error if CreateField NumBits parameter is zero. (BZ 405) 9269- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 9270Suietov) 9271- Global table revision override (-r) is ignored (BZ 413) 9272 9273---------------------------------------- 927426 May 2006. Summary of changes for version 20060526: 9275 92761) ACPI CA Core Subsystem: 9277 9278Restructured, flattened, and simplified the internal interfaces for 9279namespace object evaluation - resulting in smaller code, less CPU stack 9280use, 9281and fewer interfaces. (With assistance from Mikhail Kouzmich) 9282 9283Fixed a problem with the CopyObject operator where the first parameter 9284was 9285not typed correctly for the parser, interpreter, compiler, and 9286disassembler. 9287Caused various errors and unexpected behavior. 9288 9289Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 9290produced incorrect results with some C compilers. Since the behavior of C 9291compilers when the shift value is larger than the datatype width is 9292apparently not well defined, the interpreter now detects this condition 9293and 9294simply returns zero as expected in all such cases. (BZ 395) 9295 9296Fixed problem reports (Valery Podrezov) integrated: 9297- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 9298- Allow interpreter to handle nested method declarations (BZ 5361) 9299 9300Fixed problem reports (Fiodor Suietov) integrated: 9301- AcpiTerminate doesn't free debug memory allocation list objects (BZ 9302355) 9303- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 9304356) 9305- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 9306- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 9307- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 9308- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 9309- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 9310- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 9311- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 9312365) 9313- Status of the Global Initialization Handler call not used (BZ 366) 9314- Incorrect object parameter to Global Initialization Handler (BZ 367) 9315 9316Example Code and Data Size: These are the sizes for the OS-independent 9317acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9318debug version of the code includes the debug output trace mechanism and 9319has 9320a much larger code and data size. 9321 9322 Previous Release: 9323 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 9324 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 9325 Current Release: 9326 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 9327 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 9328 9329 93302) iASL Compiler/Disassembler and Tools: 9331 9332Modified the parser to allow the names IO, DMA, and IRQ to be used as 9333namespace identifiers with no collision with existing resource descriptor 9334macro names. This provides compatibility with other ASL compilers and is 9335most useful for disassembly/recompilation of existing tables without 9336parse 9337errors. (With assistance from Thomas Renninger) 9338 9339Disassembler: fixed an incorrect disassembly problem with the 9340DataTableRegion and CopyObject operators. Fixed a possible fault during 9341disassembly of some Alias operators. 9342 9343---------------------------------------- 934412 May 2006. Summary of changes for version 20060512: 9345 93461) ACPI CA Core Subsystem: 9347 9348Replaced the AcpiOsQueueForExecution interface with a new interface named 9349AcpiOsExecute. The major difference is that the new interface does not 9350have 9351a Priority parameter, this appeared to be useless and has been replaced 9352by 9353a 9354Type parameter. The Type tells the host what type of execution is being 9355requested, such as global lock handler, notify handler, GPE handler, etc. 9356This allows the host to queue and execute the request as appropriate for 9357the 9358request type, possibly using different work queues and different 9359priorities 9360for the various request types. This enables fixes for multithreading 9361deadlock problems such as BZ #5534, and will require changes to all 9362existing 9363OS interface layers. (Alexey Starikovskiy and Bob Moore) 9364 9365Fixed a possible memory leak associated with the support for the so- 9366called 9367"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 9368Suietov) 9369 9370Fixed a problem with the Load() operator where a table load from an 9371operation region could overwrite an internal table buffer by up to 7 9372bytes 9373and cause alignment faults on IPF systems. (With assistance from Luming 9374Yu) 9375 9376Example Code and Data Size: These are the sizes for the OS-independent 9377acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9378debug version of the code includes the debug output trace mechanism and 9379has 9380a much larger code and data size. 9381 9382 Previous Release: 9383 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 9384 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 9385 Current Release: 9386 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 9387 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 9388 9389 9390 93912) iASL Compiler/Disassembler and Tools: 9392 9393Disassembler: Implemented support to cross reference the internal 9394namespace 9395and automatically generate ASL External() statements for symbols not 9396defined 9397within the current table being disassembled. This will simplify the 9398disassembly and recompilation of interdependent tables such as SSDTs 9399since 9400these statements will no longer have to be added manually. 9401 9402Disassembler: Implemented experimental support to automatically detect 9403invocations of external control methods and generate appropriate 9404External() 9405statements. This is problematic because the AML cannot be correctly 9406parsed 9407until the number of arguments for each control method is known. 9408Currently, 9409standalone method invocations and invocations as the source operand of a 9410Store() statement are supported. 9411 9412Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 9413LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 9414LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 9415more readable and likely closer to the original ASL source. 9416 9417---------------------------------------- 941821 April 2006. Summary of changes for version 20060421: 9419 94201) ACPI CA Core Subsystem: 9421 9422Removed a device initialization optimization introduced in 20051216 where 9423the _STA method was not run unless an _INI was also present for the same 9424device. This optimization could cause problems because it could allow 9425_INI 9426methods to be run within a not-present device subtree. (If a not-present 9427device had no _INI, _STA would not be run, the not-present status would 9428not 9429be discovered, and the children of the device would be incorrectly 9430traversed.) 9431 9432Implemented a new _STA optimization where namespace subtrees that do not 9433contain _INI are identified and ignored during device initialization. 9434Selectively running _STA can significantly improve boot time on large 9435machines (with assistance from Len Brown.) 9436 9437Implemented support for the device initialization case where the returned 9438_STA flags indicate a device not-present but functioning. In this case, 9439_INI 9440is not run, but the device children are examined for presence, as per the 9441ACPI specification. 9442 9443Implemented an additional change to the IndexField support in order to 9444conform to MS behavior. The value written to the Index Register is not 9445simply a byte offset, it is a byte offset in units of the access width of 9446the parent Index Field. (Fiodor Suietov) 9447 9448Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 9449interface is called during the creation of all AML operation regions, and 9450allows the host OS to exert control over what addresses it will allow the 9451AML code to access. Operation Regions whose addresses are disallowed will 9452cause a runtime exception when they are actually accessed (will not 9453affect 9454or abort table loading.) See oswinxf or osunixxf for an example 9455implementation. 9456 9457Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 9458interface allows the host OS to match the various "optional" 9459interface/behavior strings for the _OSI predefined control method as 9460appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 9461for an example implementation. 9462 9463Restructured and corrected various problems in the exception handling 9464code 9465paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 9466(with assistance from Takayoshi Kochi.) 9467 9468Modified the Linux source converter to ignore quoted string literals 9469while 9470converting identifiers from mixed to lower case. This will correct 9471problems 9472with the disassembler and other areas where such strings must not be 9473modified. 9474 9475The ACPI_FUNCTION_* macros no longer require quotes around the function 9476name. This allows the Linux source converter to convert the names, now 9477that 9478the converter ignores quoted strings. 9479 9480Example Code and Data Size: These are the sizes for the OS-independent 9481acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9482debug version of the code includes the debug output trace mechanism and 9483has 9484a much larger code and data size. 9485 9486 Previous Release: 9487 9488 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 9489 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 9490 Current Release: 9491 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 9492 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 9493 9494 94952) iASL Compiler/Disassembler and Tools: 9496 9497Implemented 3 new warnings for iASL, and implemented multiple warning 9498levels 9499(w2 flag). 9500 95011) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 9502not 9503WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 9504check for the possible timeout, a warning is issued. 9505 95062) Useless operators: If an ASL operator does not specify an optional 9507target 9508operand and it also does not use the function return value from the 9509operator, a warning is issued since the operator effectively does 9510nothing. 9511 95123) Unreferenced objects: If a namespace object is created, but never 9513referenced, a warning is issued. This is a warning level 2 since there 9514are 9515cases where this is ok, such as when a secondary table is loaded that 9516uses 9517the unreferenced objects. Even so, care is taken to only flag objects 9518that 9519don't look like they will ever be used. For example, the reserved methods 9520(starting with an underscore) are usually not referenced because it is 9521expected that the OS will invoke them. 9522 9523---------------------------------------- 952431 March 2006. Summary of changes for version 20060331: 9525 95261) ACPI CA Core Subsystem: 9527 9528Implemented header file support for the following additional ACPI tables: 9529ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 9530support, 9531all current and known ACPI tables are now defined in the ACPICA headers 9532and 9533are available for use by device drivers and other software. 9534 9535Implemented support to allow tables that contain ACPI names with invalid 9536characters to be loaded. Previously, this would cause the table load to 9537fail, but since there are several known cases of such tables on existing 9538machines, this change was made to enable ACPI support for them. Also, 9539this 9540matches the behavior of the Microsoft ACPI implementation. 9541 9542Fixed a couple regressions introduced during the memory optimization in 9543the 954420060317 release. The namespace node definition required additional 9545reorganization and an internal datatype that had been changed to 8-bit 9546was 9547restored to 32-bit. (Valery Podrezov) 9548 9549Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 9550could be passed through to AcpiOsReleaseObject which is unexpected. Such 9551null pointers are now trapped and ignored, matching the behavior of the 9552previous implementation before the deployment of AcpiOsReleaseObject. 9553(Valery Podrezov, Fiodor Suietov) 9554 9555Fixed a memory mapping leak during the deletion of a SystemMemory 9556operation 9557region where a cached memory mapping was not deleted. This became a 9558noticeable problem for operation regions that are defined within 9559frequently 9560used control methods. (Dana Meyers) 9561 9562Reorganized the ACPI table header files into two main files: one for the 9563ACPI tables consumed by the ACPICA core, and another for the 9564miscellaneous 9565ACPI tables that are consumed by the drivers and other software. The 9566various 9567FADT definitions were merged into one common section and three different 9568tables (ACPI 1.0, 1.0+, and 2.0) 9569 9570Example Code and Data Size: These are the sizes for the OS-independent 9571acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9572debug version of the code includes the debug output trace mechanism and 9573has 9574a much larger code and data size. 9575 9576 Previous Release: 9577 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 9578 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 9579 Current Release: 9580 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 9581 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 9582 9583 95842) iASL Compiler/Disassembler and Tools: 9585 9586Disassembler: Implemented support to decode and format all non-AML ACPI 9587tables (tables other than DSDTs and SSDTs.) This includes the new tables 9588added to the ACPICA headers, therefore all current and known ACPI tables 9589are 9590supported. 9591 9592Disassembler: The change to allow ACPI names with invalid characters also 9593enables the disassembly of such tables. Invalid characters within names 9594are 9595changed to '*' to make the name printable; the iASL compiler will still 9596generate an error for such names, however, since this is an invalid ACPI 9597character. 9598 9599Implemented an option for AcpiXtract (-a) to extract all tables found in 9600the 9601input file. The default invocation extracts only the DSDTs and SSDTs. 9602 9603Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 9604makefile for the AcpiXtract utility. 9605 9606---------------------------------------- 960717 March 2006. Summary of changes for version 20060317: 9608 96091) ACPI CA Core Subsystem: 9610 9611Implemented the use of a cache object for all internal namespace nodes. 9612Since there are about 1000 static nodes in a typical system, this will 9613decrease memory use for cache implementations that minimize per- 9614allocation 9615overhead (such as a slab allocator.) 9616 9617Removed the reference count mechanism for internal namespace nodes, since 9618it 9619was deemed unnecessary. This reduces the size of each namespace node by 9620about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 9621case, 9622and 32 bytes for the 64-bit case. 9623 9624Optimized several internal data structures to reduce object size on 64- 9625bit 9626platforms by packing data within the 64-bit alignment. This includes the 9627frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 9628instances corresponding to the namespace objects. 9629 9630Added two new strings for the predefined _OSI method: "Windows 2001.1 9631SP1" 9632and "Windows 2006". 9633 9634Split the allocation tracking mechanism out to a separate file, from 9635utalloc.c to uttrack.c. This mechanism appears to be only useful for 9636application-level code. Kernels may wish to not include uttrack.c in 9637distributions. 9638 9639Removed all remnants of the obsolete ACPI_REPORT_* macros and the 9640associated 9641code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 9642macros.) 9643 9644Code and Data Size: These are the sizes for the acpica.lib produced by 9645the 9646Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 9647ACPI 9648driver or OSPM code. The debug version of the code includes the debug 9649output 9650trace mechanism and has a much larger code and data size. Note that these 9651values will vary depending on the efficiency of the compiler and the 9652compiler options used during generation. 9653 9654 Previous Release: 9655 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9656 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 9657 Current Release: 9658 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 9659 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 9660 9661 96622) iASL Compiler/Disassembler and Tools: 9663 9664Implemented an ANSI C version of the acpixtract utility. This version 9665will 9666automatically extract the DSDT and all SSDTs from the input acpidump text 9667file and dump the binary output to separate files. It can also display a 9668summary of the input file including the headers for each table found and 9669will extract any single ACPI table, with any signature. (See 9670source/tools/acpixtract) 9671 9672---------------------------------------- 967310 March 2006. Summary of changes for version 20060310: 9674 96751) ACPI CA Core Subsystem: 9676 9677Tagged all external interfaces to the subsystem with the new 9678ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 9679assist 9680kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 9681macro. The default definition is NULL. 9682 9683Added the ACPI_THREAD_ID type for the return value from 9684AcpiOsGetThreadId. 9685This allows the host to define this as necessary to simplify kernel 9686integration. The default definition is ACPI_NATIVE_UINT. 9687 9688Fixed two interpreter problems related to error processing, the deletion 9689of 9690objects, and placing invalid pointers onto the internal operator result 9691stack. BZ 6028, 6151 (Valery Podrezov) 9692 9693Increased the reference count threshold where a warning is emitted for 9694large 9695reference counts in order to eliminate unnecessary warnings on systems 9696with 9697large namespaces (especially 64-bit.) Increased the value from 0x400 to 96980x800. 9699 9700Due to universal disagreement as to the meaning of the 'c' in the 9701calloc() 9702function, the ACPI_MEM_CALLOCATE macro has been renamed to 9703ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 9704ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 9705ACPI_FREE. 9706 9707Code and Data Size: These are the sizes for the acpica.lib produced by 9708the 9709Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 9710ACPI 9711driver or OSPM code. The debug version of the code includes the debug 9712output 9713trace mechanism and has a much larger code and data size. Note that these 9714values will vary depending on the efficiency of the compiler and the 9715compiler options used during generation. 9716 9717 Previous Release: 9718 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 9719 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 9720 Current Release: 9721 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9722 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 9723 9724 97252) iASL Compiler/Disassembler: 9726 9727Disassembler: implemented support for symbolic resource descriptor 9728references. If a CreateXxxxField operator references a fixed offset 9729within 9730a 9731resource descriptor, a name is assigned to the descriptor and the offset 9732is 9733translated to the appropriate resource tag and pathname. The addition of 9734this support brings the disassembled code very close to the original ASL 9735source code and helps eliminate run-time errors when the disassembled 9736code 9737is modified (and recompiled) in such a way as to invalidate the original 9738fixed offsets. 9739 9740Implemented support for a Descriptor Name as the last parameter to the 9741ASL 9742Register() macro. This parameter was inadvertently left out of the ACPI 9743specification, and will be added for ACPI 3.0b. 9744 9745Fixed a problem where the use of the "_OSI" string (versus the full path 9746"\_OSI") caused an internal compiler error. ("No back ptr to op") 9747 9748Fixed a problem with the error message that occurs when an invalid string 9749is 9750used for a _HID object (such as one with an embedded asterisk: 9751"*PNP010A".) 9752The correct message is now displayed. 9753 9754---------------------------------------- 975517 February 2006. Summary of changes for version 20060217: 9756 97571) ACPI CA Core Subsystem: 9758 9759Implemented a change to the IndexField support to match the behavior of 9760the 9761Microsoft AML interpreter. The value written to the Index register is now 9762a 9763byte offset, no longer an index based upon the width of the Data 9764register. 9765This should fix IndexField problems seen on some machines where the Data 9766register is not exactly one byte wide. The ACPI specification will be 9767clarified on this point. 9768 9769Fixed a problem where several resource descriptor types could overrun the 9770internal descriptor buffer due to size miscalculation: VendorShort, 9771VendorLong, and Interrupt. This was noticed on IA64 machines, but could 9772affect all platforms. 9773 9774Fixed a problem where individual resource descriptors were misaligned 9775within 9776the internal buffer, causing alignment faults on IA64 platforms. 9777 9778Code and Data Size: These are the sizes for the acpica.lib produced by 9779the 9780Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 9781ACPI 9782driver or OSPM code. The debug version of the code includes the debug 9783output 9784trace mechanism and has a much larger code and data size. Note that these 9785values will vary depending on the efficiency of the compiler and the 9786compiler options used during generation. 9787 9788 Previous Release: 9789 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9790 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 9791 Current Release: 9792 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 9793 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 9794 9795 97962) iASL Compiler/Disassembler: 9797 9798Implemented support for new reserved names: _WDG and _WED are Microsoft 9799extensions for Windows Instrumentation Management, _TDL is a new ACPI- 9800defined method (Throttling Depth Limit.) 9801 9802Fixed a problem where a zero-length VendorShort or VendorLong resource 9803descriptor was incorrectly emitted as a descriptor of length one. 9804 9805---------------------------------------- 980610 February 2006. Summary of changes for version 20060210: 9807 98081) ACPI CA Core Subsystem: 9809 9810Removed a couple of extraneous ACPI_ERROR messages that appeared during 9811normal execution. These became apparent after the conversion from 9812ACPI_DEBUG_PRINT. 9813 9814Fixed a problem where the CreateField operator could hang if the BitIndex 9815or 9816NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 9817 9818Fixed a problem where a DeRefOf operation on a buffer object incorrectly 9819failed with an exception. This also fixes a couple of related RefOf and 9820DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 9821 9822Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 9823of 9824AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 9825BZ 98265480) 9827 9828Implemented a memory cleanup at the end of the execution of each 9829iteration 9830of an AML While() loop, preventing the accumulation of outstanding 9831objects. 9832(Valery Podrezov, BZ 5427) 9833 9834Eliminated a chunk of duplicate code in the object resolution code. 9835(Valery 9836Podrezov, BZ 5336) 9837 9838Fixed several warnings during the 64-bit code generation. 9839 9840The AcpiSrc source code conversion tool now inserts one line of 9841whitespace 9842after an if() statement that is followed immediately by a comment, 9843improving 9844readability of the Linux code. 9845 9846Code and Data Size: The current and previous library sizes for the core 9847subsystem are shown below. These are the code and data sizes for the 9848acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9849These 9850values do not include any ACPI driver or OSPM code. The debug version of 9851the 9852code includes the debug output trace mechanism and has a much larger code 9853and data size. Note that these values will vary depending on the 9854efficiency 9855of the compiler and the compiler options used during generation. 9856 9857 Previous Release: 9858 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 9859 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 9860 Current Release: 9861 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9862 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 9863 9864 98652) iASL Compiler/Disassembler: 9866 9867Fixed a problem with the disassembly of a BankField operator with a 9868complex 9869expression for the BankValue parameter. 9870 9871---------------------------------------- 987227 January 2006. Summary of changes for version 20060127: 9873 98741) ACPI CA Core Subsystem: 9875 9876Implemented support in the Resource Manager to allow unresolved 9877namestring 9878references within resource package objects for the _PRT method. This 9879support 9880is in addition to the previously implemented unresolved reference support 9881within the AML parser. If the interpreter slack mode is enabled, these 9882unresolved references will be passed through to the caller as a NULL 9883package 9884entry. 9885 9886Implemented and deployed new macros and functions for error and warning 9887messages across the subsystem. These macros are simpler and generate less 9888code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 9889ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 9890macros remain defined to allow ACPI drivers time to migrate to the new 9891macros. 9892 9893Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 9894the 9895Acquire/Release Lock OSL interfaces. 9896 9897Fixed a problem where Alias ASL operators are sometimes not correctly 9898resolved, in both the interpreter and the iASL compiler. 9899 9900Fixed several problems with the implementation of the 9901ConcatenateResTemplate 9902ASL operator. As per the ACPI specification, zero length buffers are now 9903treated as a single EndTag. One-length buffers always cause a fatal 9904exception. Non-zero length buffers that do not end with a full 2-byte 9905EndTag 9906cause a fatal exception. 9907 9908Fixed a possible structure overwrite in the AcpiGetObjectInfo external 9909interface. (With assistance from Thomas Renninger) 9910 9911Code and Data Size: The current and previous library sizes for the core 9912subsystem are shown below. These are the code and data sizes for the 9913acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9914These 9915values do not include any ACPI driver or OSPM code. The debug version of 9916the 9917code includes the debug output trace mechanism and has a much larger code 9918and data size. Note that these values will vary depending on the 9919efficiency 9920of the compiler and the compiler options used during generation. 9921 9922 Previous Release: 9923 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 9924 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 9925 Current Release: 9926 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 9927 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 9928 9929 99302) iASL Compiler/Disassembler: 9931 9932Fixed an internal error that was generated for any forward references to 9933ASL 9934Alias objects. 9935 9936---------------------------------------- 993713 January 2006. Summary of changes for version 20060113: 9938 99391) ACPI CA Core Subsystem: 9940 9941Added 2006 copyright to all module headers and signons. This affects 9942virtually every file in the ACPICA core subsystem, iASL compiler, and the 9943utilities. 9944 9945Enhanced the ACPICA error reporting in order to simplify user migration 9946to 9947the non-debug version of ACPICA. Replaced all instances of the 9948ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 9949debug 9950levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 9951respectively. This preserves all error and warning messages in the non- 9952debug 9953version of the ACPICA code (this has been referred to as the "debug lite" 9954option.) Over 200 cases were converted to create a total of over 380 9955error/warning messages across the ACPICA code. This increases the code 9956and 9957data size of the default non-debug version of the code somewhat (about 995813K), 9959but all error/warning reporting may be disabled if desired (and code 9960eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 9961configuration option. The size of the debug version of ACPICA remains 9962about 9963the same. 9964 9965Fixed a memory leak within the AML Debugger "Set" command. One object was 9966not properly deleted for every successful invocation of the command. 9967 9968Code and Data Size: The current and previous library sizes for the core 9969subsystem are shown below. These are the code and data sizes for the 9970acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9971These 9972values do not include any ACPI driver or OSPM code. The debug version of 9973the 9974code includes the debug output trace mechanism and has a much larger code 9975and data size. Note that these values will vary depending on the 9976efficiency 9977of the compiler and the compiler options used during generation. 9978 9979 Previous Release: 9980 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 9981 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 9982 Current Release: 9983 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 9984 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 9985 9986 99872) iASL Compiler/Disassembler: 9988 9989The compiler now officially supports the ACPI 3.0a specification that was 9990released on December 30, 2005. (Specification is available at 9991www.acpi.info) 9992 9993---------------------------------------- 999416 December 2005. Summary of changes for version 20051216: 9995 99961) ACPI CA Core Subsystem: 9997 9998Implemented optional support to allow unresolved names within ASL Package 9999objects. A null object is inserted in the package when a named reference 10000cannot be located in the current namespace. Enabled via the interpreter 10001slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 10002machines 10003that contain such code. 10004 10005Implemented an optimization to the initialization sequence that can 10006improve 10007boot time. During ACPI device initialization, the _STA method is now run 10008if 10009and only if the _INI method exists. The _STA method is used to determine 10010if 10011the device is present; An _INI can only be run if _STA returns present, 10012but 10013it is a waste of time to run the _STA method if the _INI does not exist. 10014(Prototype and assistance from Dong Wei) 10015 10016Implemented use of the C99 uintptr_t for the pointer casting macros if it 10017is 10018available in the current compiler. Otherwise, the default (void *) cast 10019is 10020used as before. 10021 10022Fixed some possible memory leaks found within the execution path of the 10023Break, Continue, If, and CreateField operators. (Valery Podrezov) 10024 10025Fixed a problem introduced in the 20051202 release where an exception is 10026generated during method execution if a control method attempts to declare 10027another method. 10028 10029Moved resource descriptor string constants that are used by both the AML 10030disassembler and AML debugger to the common utilities directory so that 10031these components are independent. 10032 10033Implemented support in the AcpiExec utility (-e switch) to globally 10034ignore 10035exceptions during control method execution (method is not aborted.) 10036 10037Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 10038generation. 10039 10040Code and Data Size: The current and previous library sizes for the core 10041subsystem are shown below. These are the code and data sizes for the 10042acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10043These 10044values do not include any ACPI driver or OSPM code. The debug version of 10045the 10046code includes the debug output trace mechanism and has a much larger code 10047and data size. Note that these values will vary depending on the 10048efficiency 10049of the compiler and the compiler options used during generation. 10050 10051 Previous Release: 10052 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10053 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 10054 Current Release: 10055 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 10056 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 10057 10058 100592) iASL Compiler/Disassembler: 10060 10061Fixed a problem where a CPU stack overflow fault could occur if a 10062recursive 10063method call was made from within a Return statement. 10064 10065---------------------------------------- 1006602 December 2005. Summary of changes for version 20051202: 10067 100681) ACPI CA Core Subsystem: 10069 10070Modified the parsing of control methods to no longer create namespace 10071objects during the first pass of the parse. Objects are now created only 10072during the execute phase, at the moment the namespace creation operator 10073is 10074encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 10075This 10076should eliminate ALREADY_EXISTS exceptions seen on some machines where 10077reentrant control methods are protected by an AML mutex. The mutex will 10078now 10079correctly block multiple threads from attempting to create the same 10080object 10081more than once. 10082 10083Increased the number of available Owner Ids for namespace object tracking 10084from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 10085on 10086some machines with a large number of ACPI tables (either static or 10087dynamic). 10088 10089Fixed a problem with the AcpiExec utility where a fault could occur when 10090the 10091-b switch (batch mode) is used. 10092 10093Enhanced the namespace dump routine to output the owner ID for each 10094namespace object. 10095 10096Code and Data Size: The current and previous library sizes for the core 10097subsystem are shown below. These are the code and data sizes for the 10098acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10099These 10100values do not include any ACPI driver or OSPM code. The debug version of 10101the 10102code includes the debug output trace mechanism and has a much larger code 10103and data size. Note that these values will vary depending on the 10104efficiency 10105of the compiler and the compiler options used during generation. 10106 10107 Previous Release: 10108 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10109 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 10110 Current Release: 10111 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10112 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 10113 10114 101152) iASL Compiler/Disassembler: 10116 10117Fixed a parse error during compilation of certain Switch/Case constructs. 10118To 10119simplify the parse, the grammar now allows for multiple Default 10120statements 10121and this error is now detected and flagged during the analysis phase. 10122 10123Disassembler: The disassembly now includes the contents of the original 10124table header within a comment at the start of the file. This includes the 10125name and version of the original ASL compiler. 10126 10127---------------------------------------- 1012817 November 2005. Summary of changes for version 20051117: 10129 101301) ACPI CA Core Subsystem: 10131 10132Fixed a problem in the AML parser where the method thread count could be 10133decremented below zero if any errors occurred during the method parse 10134phase. 10135This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 10136machines. 10137This also fixed a related regression with the mechanism that detects and 10138corrects methods that cannot properly handle reentrancy (related to the 10139deployment of the new OwnerId mechanism.) 10140 10141Eliminated the pre-parsing of control methods (to detect errors) during 10142table load. Related to the problem above, this was causing unwind issues 10143if 10144any errors occurred during the parse, and it seemed to be overkill. A 10145table 10146load should not be aborted if there are problems with any single control 10147method, thus rendering this feature rather pointless. 10148 10149Fixed a problem with the new table-driven resource manager where an 10150internal 10151buffer overflow could occur for small resource templates. 10152 10153Implemented a new external interface, AcpiGetVendorResource. This 10154interface 10155will find and return a vendor-defined resource descriptor within a _CRS 10156or 10157_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 10158Helgaas. 10159 10160Removed the length limit (200) on string objects as per the upcoming ACPI 101613.0A specification. This affects the following areas of the interpreter: 101621) 10163any implicit conversion of a Buffer to a String, 2) a String object 10164result 10165of the ASL Concatentate operator, 3) the String object result of the ASL 10166ToString operator. 10167 10168Fixed a problem in the Windows OS interface layer (OSL) where a 10169WAIT_FOREVER 10170on a semaphore object would incorrectly timeout. This allows the 10171multithreading features of the AcpiExec utility to work properly under 10172Windows. 10173 10174Updated the Linux makefiles for the iASL compiler and AcpiExec to include 10175the recently added file named "utresrc.c". 10176 10177Code and Data Size: The current and previous library sizes for the core 10178subsystem are shown below. These are the code and data sizes for the 10179acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10180These 10181values do not include any ACPI driver or OSPM code. The debug version of 10182the 10183code includes the debug output trace mechanism and has a much larger code 10184and data size. Note that these values will vary depending on the 10185efficiency 10186of the compiler and the compiler options used during generation. 10187 10188 Previous Release: 10189 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 10190 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 10191 Current Release: 10192 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10193 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 10194 10195 101962) iASL Compiler/Disassembler: 10197 10198Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 10199specification. For the iASL compiler, this means that string literals 10200within 10201the source ASL can be of any length. 10202 10203Enhanced the listing output to dump the AML code for resource descriptors 10204immediately after the ASL code for each descriptor, instead of in a block 10205at 10206the end of the entire resource template. 10207 10208Enhanced the compiler debug output to dump the entire original parse tree 10209constructed during the parse phase, before any transforms are applied to 10210the 10211tree. The transformed tree is dumped also. 10212 10213---------------------------------------- 1021402 November 2005. Summary of changes for version 20051102: 10215 102161) ACPI CA Core Subsystem: 10217 10218Modified the subsystem initialization sequence to improve GPE support. 10219The 10220GPE initialization has been split into two parts in order to defer 10221execution 10222of the _PRW methods (Power Resources for Wake) until after the hardware 10223is 10224fully initialized and the SCI handler is installed. This allows the _PRW 10225methods to access fields protected by the Global Lock. This will fix 10226systems 10227where a NO_GLOBAL_LOCK exception has been seen during initialization. 10228 10229Converted the ACPI internal object disassemble and display code within 10230the 10231AML debugger to fully table-driven operation, reducing code size and 10232increasing maintainability. 10233 10234Fixed a regression with the ConcatenateResTemplate() ASL operator 10235introduced 10236in the 20051021 release. 10237 10238Implemented support for "local" internal ACPI object types within the 10239debugger "Object" command and the AcpiWalkNamespace external interfaces. 10240These local types include RegionFields, BankFields, IndexFields, Alias, 10241and 10242reference objects. 10243 10244Moved common AML resource handling code into a new file, "utresrc.c". 10245This 10246code is shared by both the Resource Manager and the AML Debugger. 10247 10248Code and Data Size: The current and previous library sizes for the core 10249subsystem are shown below. These are the code and data sizes for the 10250acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10251These 10252values do not include any ACPI driver or OSPM code. The debug version of 10253the 10254code includes the debug output trace mechanism and has a much larger code 10255and data size. Note that these values will vary depending on the 10256efficiency 10257of the compiler and the compiler options used during generation. 10258 10259 Previous Release: 10260 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 10261 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 10262 Current Release: 10263 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 10264 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 10265 10266 102672) iASL Compiler/Disassembler: 10268 10269Fixed a problem with very large initializer lists (more than 4000 10270elements) 10271for both Buffer and Package objects where the parse stack could overflow. 10272 10273Enhanced the pre-compile source code scan for non-ASCII characters to 10274ignore 10275characters within comment fields. The scan is now always performed and is 10276no 10277longer optional, detecting invalid characters within a source file 10278immediately rather than during the parse phase or later. 10279 10280Enhanced the ASL grammar definition to force early reductions on all 10281list- 10282style grammar elements so that the overall parse stack usage is greatly 10283reduced. This should improve performance and reduce the possibility of 10284parse 10285stack overflow. 10286 10287Eliminated all reduce/reduce conflicts in the iASL parser generation. 10288Also, 10289with the addition of a %expected statement, the compiler generates from 10290source with no warnings. 10291 10292Fixed a possible segment fault in the disassembler if the input filename 10293does not contain a "dot" extension (Thomas Renninger). 10294 10295---------------------------------------- 1029621 October 2005. Summary of changes for version 20051021: 10297 102981) ACPI CA Core Subsystem: 10299 10300Implemented support for the EM64T and other x86-64 processors. This 10301essentially entails recognizing that these processors support non-aligned 10302memory transfers. Previously, all 64-bit processors were assumed to lack 10303hardware support for non-aligned transfers. 10304 10305Completed conversion of the Resource Manager to nearly full table-driven 10306operation. Specifically, the resource conversion code (convert AML to 10307internal format and the reverse) and the debug code to dump internal 10308resource descriptors are fully table-driven, reducing code and data size 10309and 10310improving maintainability. 10311 10312The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 10313word 10314on 64-bit processors instead of a fixed 32-bit word. (With assistance 10315from 10316Alexey Starikovskiy) 10317 10318Implemented support within the resource conversion code for the Type- 10319Specific byte within the various ACPI 3.0 *WordSpace macros. 10320 10321Fixed some issues within the resource conversion code for the type- 10322specific 10323flags for both Memory and I/O address resource descriptors. For Memory, 10324implemented support for the MTP and TTP flags. For I/O, split the TRS and 10325TTP flags into two separate fields. 10326 10327Code and Data Size: The current and previous library sizes for the core 10328subsystem are shown below. These are the code and data sizes for the 10329acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10330These 10331values do not include any ACPI driver or OSPM code. The debug version of 10332the 10333code includes the debug output trace mechanism and has a much larger code 10334and data size. Note that these values will vary depending on the 10335efficiency 10336of the compiler and the compiler options used during generation. 10337 10338 Previous Release: 10339 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 10340 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 10341 Current Release: 10342 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 10343 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 10344 10345 10346 103472) iASL Compiler/Disassembler: 10348 10349Relaxed a compiler restriction that disallowed a ResourceIndex byte if 10350the 10351corresponding ResourceSource string was not also present in a resource 10352descriptor declaration. This restriction caused problems with existing 10353AML/ASL code that includes the Index byte without the string. When such 10354AML 10355was disassembled, it could not be compiled without modification. Further, 10356the modified code created a resource template with a different size than 10357the 10358original, breaking code that used fixed offsets into the resource 10359template 10360buffer. 10361 10362Removed a recent feature of the disassembler to ignore a lone 10363ResourceIndex 10364byte. This byte is now emitted if present so that the exact AML can be 10365reproduced when the disassembled code is recompiled. 10366 10367Improved comments and text alignment for the resource descriptor code 10368emitted by the disassembler. 10369 10370Implemented disassembler support for the ACPI 3.0 AccessSize field within 10371a 10372Register() resource descriptor. 10373 10374---------------------------------------- 1037530 September 2005. Summary of changes for version 20050930: 10376 103771) ACPI CA Core Subsystem: 10378 10379Completed a major overhaul of the Resource Manager code - specifically, 10380optimizations in the area of the AML/internal resource conversion code. 10381The 10382code has been optimized to simplify and eliminate duplicated code, CPU 10383stack 10384use has been decreased by optimizing function parameters and local 10385variables, and naming conventions across the manager have been 10386standardized 10387for clarity and ease of maintenance (this includes function, parameter, 10388variable, and struct/typedef names.) The update may force changes in some 10389driver code, depending on how resources are handled by the host OS. 10390 10391All Resource Manager dispatch and information tables have been moved to a 10392single location for clarity and ease of maintenance. One new file was 10393created, named "rsinfo.c". 10394 10395The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 10396guarantee that the argument is not evaluated twice, making them less 10397prone 10398to macro side-effects. However, since there exists the possibility of 10399additional stack use if a particular compiler cannot optimize them (such 10400as 10401in the debug generation case), the original macros are optionally 10402available. 10403Note that some invocations of the return_VALUE macro may now cause size 10404mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 10405to 10406eliminate these. (From Randy Dunlap) 10407 10408Implemented a new mechanism to enable debug tracing for individual 10409control 10410methods. A new external interface, AcpiDebugTrace, is provided to enable 10411this mechanism. The intent is to allow the host OS to easily enable and 10412disable tracing for problematic control methods. This interface can be 10413easily exposed to a user or debugger interface if desired. See the file 10414psxface.c for details. 10415 10416AcpiUtCallocate will now return a valid pointer if a length of zero is 10417specified - a length of one is used and a warning is issued. This matches 10418the behavior of AcpiUtAllocate. 10419 10420Code and Data Size: The current and previous library sizes for the core 10421subsystem are shown below. These are the code and data sizes for the 10422acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10423These 10424values do not include any ACPI driver or OSPM code. The debug version of 10425the 10426code includes the debug output trace mechanism and has a much larger code 10427and data size. Note that these values will vary depending on the 10428efficiency 10429of the compiler and the compiler options used during generation. 10430 10431 Previous Release: 10432 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 10433 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 10434 Current Release: 10435 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 10436 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 10437 10438 104392) iASL Compiler/Disassembler: 10440 10441A remark is issued if the effective compile-time length of a package or 10442buffer is zero. Previously, this was a warning. 10443 10444---------------------------------------- 1044516 September 2005. Summary of changes for version 20050916: 10446 104471) ACPI CA Core Subsystem: 10448 10449Fixed a problem within the Resource Manager where support for the Generic 10450Register descriptor was not fully implemented. This descriptor is now 10451fully 10452recognized, parsed, disassembled, and displayed. 10453 10454Completely restructured the Resource Manager code to utilize table-driven 10455dispatch and lookup, eliminating many of the large switch() statements. 10456This 10457reduces overall subsystem code size and code complexity. Affects the 10458resource parsing and construction, disassembly, and debug dump output. 10459 10460Cleaned up and restructured the debug dump output for all resource 10461descriptors. Improved readability of the output and reduced code size. 10462 10463Fixed a problem where changes to internal data structures caused the 10464optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 10465 10466Code and Data Size: The current and previous library sizes for the core 10467subsystem are shown below. These are the code and data sizes for the 10468acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10469These 10470values do not include any ACPI driver or OSPM code. The debug version of 10471the 10472code includes the debug output trace mechanism and has a much larger code 10473and data size. Note that these values will vary depending on the 10474efficiency 10475of the compiler and the compiler options used during generation. 10476 10477 Previous Release: 10478 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 10479 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 10480 Current Release: 10481 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 10482 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 10483 10484 104852) iASL Compiler/Disassembler: 10486 10487Updated the disassembler to automatically insert an EndDependentFn() 10488macro 10489into the ASL stream if this macro is missing in the original AML code, 10490simplifying compilation of the resulting ASL module. 10491 10492Fixed a problem in the disassembler where a disassembled ResourceSource 10493string (within a large resource descriptor) was not surrounded by quotes 10494and 10495not followed by a comma, causing errors when the resulting ASL module was 10496compiled. Also, escape sequences within a ResourceSource string are now 10497handled correctly (especially "\\") 10498 10499---------------------------------------- 1050002 September 2005. Summary of changes for version 20050902: 10501 105021) ACPI CA Core Subsystem: 10503 10504Fixed a problem with the internal Owner ID allocation and deallocation 10505mechanisms for control method execution and recursive method invocation. 10506This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 10507messages seen on some systems. Recursive method invocation depth is 10508currently limited to 255. (Alexey Starikovskiy) 10509 10510Completely eliminated all vestiges of support for the "module-level 10511executable code" until this support is fully implemented and debugged. 10512This 10513should eliminate the NO_RETURN_VALUE exceptions seen during table load on 10514some systems that invoke this support. 10515 10516Fixed a problem within the resource manager code where the transaction 10517flags 10518for a 64-bit address descriptor were handled incorrectly in the type- 10519specific flag byte. 10520 10521Consolidated duplicate code within the address descriptor resource 10522manager 10523code, reducing overall subsystem code size. 10524 10525Fixed a fault when using the AML debugger "disassemble" command to 10526disassemble individual control methods. 10527 10528Removed references to the "release_current" directory within the Unix 10529release package. 10530 10531Code and Data Size: The current and previous core subsystem library sizes 10532are shown below. These are the code and data sizes for the acpica.lib 10533produced by the Microsoft Visual C++ 6.0 compiler. These values do not 10534include any ACPI driver or OSPM code. The debug version of the code 10535includes 10536the debug output trace mechanism and has a much larger code and data 10537size. 10538Note that these values will vary depending on the efficiency of the 10539compiler 10540and the compiler options used during generation. 10541 10542 Previous Release: 10543 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10544 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 10545 Current Release: 10546 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 10547 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 10548 10549 105502) iASL Compiler/Disassembler: 10551 10552Implemented an error check for illegal duplicate values in the interrupt 10553and 10554dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 10555Interrupt(). 10556 10557Implemented error checking for the Irq() and IrqNoFlags() macros to 10558detect 10559too many values in the interrupt list (16 max) and invalid values in the 10560list (range 0 - 15) 10561 10562The maximum length string literal within an ASL file is now restricted to 10563200 characters as per the ACPI specification. 10564 10565Fixed a fault when using the -ln option (generate namespace listing). 10566 10567Implemented an error check to determine if a DescriptorName within a 10568resource descriptor has already been used within the current scope. 10569 10570---------------------------------------- 1057115 August 2005. Summary of changes for version 20050815: 10572 105731) ACPI CA Core Subsystem: 10574 10575Implemented a full bytewise compare to determine if a table load request 10576is 10577attempting to load a duplicate table. The compare is performed if the 10578table 10579signatures and table lengths match. This will allow different tables with 10580the same OEM Table ID and revision to be loaded - probably against the 10581ACPI 10582specification, but discovered in the field nonetheless. 10583 10584Added the changes.txt logfile to each of the zipped release packages. 10585 10586Code and Data Size: Current and previous core subsystem library sizes are 10587shown below. These are the code and data sizes for the acpica.lib 10588produced 10589by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10590any ACPI driver or OSPM code. The debug version of the code includes the 10591debug output trace mechanism and has a much larger code and data size. 10592Note 10593that these values will vary depending on the efficiency of the compiler 10594and 10595the compiler options used during generation. 10596 10597 Previous Release: 10598 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10599 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 10600 Current Release: 10601 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10602 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 10603 10604 106052) iASL Compiler/Disassembler: 10606 10607Fixed a problem where incorrect AML code could be generated for Package 10608objects if optimization is disabled (via the -oa switch). 10609 10610Fixed a problem with where incorrect AML code is generated for variable- 10611length packages when the package length is not specified and the number 10612of 10613initializer values is greater than 255. 10614 10615 10616---------------------------------------- 1061729 July 2005. Summary of changes for version 20050729: 10618 106191) ACPI CA Core Subsystem: 10620 10621Implemented support to ignore an attempt to install/load a particular 10622ACPI 10623table more than once. Apparently there exists BIOS code that repeatedly 10624attempts to load the same SSDT upon certain events. With assistance from 10625Venkatesh Pallipadi. 10626 10627Restructured the main interface to the AML parser in order to correctly 10628handle all exceptional conditions. This will prevent leakage of the 10629OwnerId 10630resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 10631some 10632machines. With assistance from Alexey Starikovskiy. 10633 10634Support for "module level code" has been disabled in this version due to 10635a 10636number of issues that have appeared on various machines. The support can 10637be 10638enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 10639compilation. When the issues are fully resolved, the code will be enabled 10640by 10641default again. 10642 10643Modified the internal functions for debug print support to define the 10644FunctionName parameter as a (const char *) for compatibility with 10645compiler 10646built-in macros such as __FUNCTION__, etc. 10647 10648Linted the entire ACPICA source tree for both 32-bit and 64-bit. 10649 10650Implemented support to display an object count summary for the AML 10651Debugger 10652commands Object and Methods. 10653 10654Code and Data Size: Current and previous core subsystem library sizes are 10655shown below. These are the code and data sizes for the acpica.lib 10656produced 10657by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10658any ACPI driver or OSPM code. The debug version of the code includes the 10659debug output trace mechanism and has a much larger code and data size. 10660Note 10661that these values will vary depending on the efficiency of the compiler 10662and 10663the compiler options used during generation. 10664 10665 Previous Release: 10666 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 10667 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 10668 Current Release: 10669 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10670 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 10671 10672 106732) iASL Compiler/Disassembler: 10674 10675Fixed a regression that appeared in the 20050708 version of the compiler 10676where an error message was inadvertently emitted for invocations of the 10677_OSI 10678reserved control method. 10679 10680---------------------------------------- 1068108 July 2005. Summary of changes for version 20050708: 10682 106831) ACPI CA Core Subsystem: 10684 10685The use of the CPU stack in the debug version of the subsystem has been 10686considerably reduced. Previously, a debug structure was declared in every 10687function that used the debug macros. This structure has been removed in 10688favor of declaring the individual elements as parameters to the debug 10689functions. This reduces the cumulative stack use during nested execution 10690of 10691ACPI function calls at the cost of a small increase in the code size of 10692the 10693debug version of the subsystem. With assistance from Alexey Starikovskiy 10694and 10695Len Brown. 10696 10697Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 10698headers to define a macro that will return the current function name at 10699runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 10700by 10701the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 10702compiler-dependent header, the function name is saved on the CPU stack 10703(one 10704pointer per function.) This mechanism is used because apparently there 10705exists no standard ANSI-C defined macro that that returns the function 10706name. 10707 10708Redesigned and reimplemented the "Owner ID" mechanism used to track 10709namespace objects created/deleted by ACPI tables and control method 10710execution. A bitmap is now used to allocate and free the IDs, thus 10711solving 10712the wraparound problem present in the previous implementation. The size 10713of 10714the namespace node descriptor was reduced by 2 bytes as a result (Alexey 10715Starikovskiy). 10716 10717Removed the UINT32_BIT and UINT16_BIT types that were used for the 10718bitfield 10719flag definitions within the headers for the predefined ACPI tables. These 10720have been replaced by UINT8_BIT in order to increase the code portability 10721of 10722the subsystem. If the use of UINT8 remains a problem, we may be forced to 10723eliminate bitfields entirely because of a lack of portability. 10724 10725Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 10726This 10727is a frequently used function and this improvement increases the 10728performance 10729of the entire subsystem (Alexey Starikovskiy). 10730 10731Fixed several possible memory leaks and the inverse - premature object 10732deletion (Alexey Starikovskiy). 10733 10734Code and Data Size: Current and previous core subsystem library sizes are 10735shown below. These are the code and data sizes for the acpica.lib 10736produced 10737by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10738any ACPI driver or OSPM code. The debug version of the code includes the 10739debug output trace mechanism and has a much larger code and data size. 10740Note 10741that these values will vary depending on the efficiency of the compiler 10742and 10743the compiler options used during generation. 10744 10745 Previous Release: 10746 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 10747 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 10748 Current Release: 10749 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 10750 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 10751 10752---------------------------------------- 1075324 June 2005. Summary of changes for version 20050624: 10754 107551) ACPI CA Core Subsystem: 10756 10757Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 10758the host-defined cache object. This allows the OSL implementation to 10759define 10760and type this object in any manner desired, simplifying the OSL 10761implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 10762Linux, and should be defined in the OS-specific header file for other 10763operating systems as required. 10764 10765Changed the interface to AcpiOsAcquireObject to directly return the 10766requested object as the function return (instead of ACPI_STATUS.) This 10767change was made for performance reasons, since this is the purpose of the 10768interface in the first place. AcpiOsAcquireObject is now similar to the 10769AcpiOsAllocate interface. 10770 10771Implemented a new AML debugger command named Businfo. This command 10772displays 10773information about all devices that have an associate _PRT object. The 10774_ADR, 10775_HID, _UID, and _CID are displayed for these devices. 10776 10777Modified the initialization sequence in AcpiInitializeSubsystem to call 10778the 10779OSL interface AcpiOslInitialize first, before any local initialization. 10780This 10781change was required because the global initialization now calls OSL 10782interfaces. 10783 10784Enhanced the Dump command to display the entire contents of Package 10785objects 10786(including all sub-objects and their values.) 10787 10788Restructured the code base to split some files because of size and/or 10789because the code logically belonged in a separate file. New files are 10790listed 10791below. All makefiles and project files included in the ACPI CA release 10792have 10793been updated. 10794 utilities/utcache.c /* Local cache interfaces */ 10795 utilities/utmutex.c /* Local mutex support */ 10796 utilities/utstate.c /* State object support */ 10797 interpreter/parser/psloop.c /* Main AML parse loop */ 10798 10799Code and Data Size: Current and previous core subsystem library sizes are 10800shown below. These are the code and data sizes for the acpica.lib 10801produced 10802by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10803any ACPI driver or OSPM code. The debug version of the code includes the 10804debug output trace mechanism and has a much larger code and data size. 10805Note 10806that these values will vary depending on the efficiency of the compiler 10807and 10808the compiler options used during generation. 10809 10810 Previous Release: 10811 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 10812 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 10813 Current Release: 10814 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 10815 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 10816 10817 108182) iASL Compiler/Disassembler: 10819 10820Fixed a regression introduced in version 20050513 where the use of a 10821Package 10822object within a Case() statement caused a compile time exception. The 10823original behavior has been restored (a Match() operator is emitted.) 10824 10825---------------------------------------- 1082617 June 2005. Summary of changes for version 20050617: 10827 108281) ACPI CA Core Subsystem: 10829 10830Moved the object cache operations into the OS interface layer (OSL) to 10831allow 10832the host OS to handle these operations if desired (for example, the Linux 10833OSL will invoke the slab allocator). This support is optional; the 10834compile 10835time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 10836cache 10837code in the ACPI CA core. The new OSL interfaces are shown below. See 10838utalloc.c for an example implementation, and acpiosxf.h for the exact 10839interface definitions. With assistance from Alexey Starikovskiy. 10840 AcpiOsCreateCache 10841 AcpiOsDeleteCache 10842 AcpiOsPurgeCache 10843 AcpiOsAcquireObject 10844 AcpiOsReleaseObject 10845 10846Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 10847return 10848and restore a flags parameter. This fits better with many OS lock models. 10849Note: the current execution state (interrupt handler or not) is no longer 10850passed to these interfaces. If necessary, the OSL must determine this 10851state 10852by itself, a simple and fast operation. With assistance from Alexey 10853Starikovskiy. 10854 10855Fixed a problem in the ACPI table handling where a valid XSDT was assumed 10856present if the revision of the RSDP was 2 or greater. According to the 10857ACPI 10858specification, the XSDT is optional in all cases, and the table manager 10859therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 10860Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 10861contain 10862only the RSDT. 10863 10864Fixed an interpreter problem with the Mid() operator in the case of an 10865input 10866string where the resulting output string is of zero length. It now 10867correctly 10868returns a valid, null terminated string object instead of a string object 10869with a null pointer. 10870 10871Fixed a problem with the control method argument handling to allow a 10872store 10873to an Arg object that already contains an object of type Device. The 10874Device 10875object is now correctly overwritten. Previously, an error was returned. 10876 10877 10878Enhanced the debugger Find command to emit object values in addition to 10879the 10880found object pathnames. The output format is the same as the dump 10881namespace 10882command. 10883 10884Enhanced the debugger Set command. It now has the ability to set the 10885value 10886of any Named integer object in the namespace (Previously, only method 10887locals 10888and args could be set.) 10889 10890Code and Data Size: Current and previous core subsystem library sizes are 10891shown below. These are the code and data sizes for the acpica.lib 10892produced 10893by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10894any ACPI driver or OSPM code. The debug version of the code includes the 10895debug output trace mechanism and has a much larger code and data size. 10896Note 10897that these values will vary depending on the efficiency of the compiler 10898and 10899the compiler options used during generation. 10900 10901 Previous Release: 10902 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 10903 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 10904 Current Release: 10905 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 10906 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 10907 10908 109092) iASL Compiler/Disassembler: 10910 10911Fixed a regression in the disassembler where if/else/while constructs 10912were 10913output incorrectly. This problem was introduced in the previous release 10914(20050526). This problem also affected the single-step disassembly in the 10915debugger. 10916 10917Fixed a problem where compiling the reserved _OSI method would randomly 10918(but 10919rarely) produce compile errors. 10920 10921Enhanced the disassembler to emit compilable code in the face of 10922incorrect 10923AML resource descriptors. If the optional ResourceSourceIndex is present, 10924but the ResourceSource is not, do not emit the ResourceSourceIndex in the 10925disassembly. Otherwise, the resulting code cannot be compiled without 10926errors. 10927 10928---------------------------------------- 1092926 May 2005. Summary of changes for version 20050526: 10930 109311) ACPI CA Core Subsystem: 10932 10933Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 10934the module level (not within a control method.) These opcodes are 10935executed 10936exactly once at the time the table is loaded. This type of code was legal 10937up 10938until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 10939in 10940order to provide backwards compatibility with earlier BIOS 10941implementations. 10942This eliminates the "Encountered executable code at module level" warning 10943that was previously generated upon detection of such code. 10944 10945Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 10946inadvertently be generated during the lookup of namespace objects in the 10947second pass parse of ACPI tables and control methods. It appears that 10948this 10949problem could occur during the resolution of forward references to 10950namespace 10951objects. 10952 10953Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 10954corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 10955allows the deadlock detection debug code to be compiled out in the normal 10956case, improving mutex performance (and overall subsystem performance) 10957considerably. 10958 10959Implemented a handful of miscellaneous fixes for possible memory leaks on 10960error conditions and error handling control paths. These fixes were 10961suggested by FreeBSD and the Coverity Prevent source code analysis tool. 10962 10963Added a check for a null RSDT pointer in AcpiGetFirmwareTable 10964(tbxfroot.c) 10965to prevent a fault in this error case. 10966 10967Code and Data Size: Current and previous core subsystem library sizes are 10968shown below. These are the code and data sizes for the acpica.lib 10969produced 10970by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10971any ACPI driver or OSPM code. The debug version of the code includes the 10972debug output trace mechanism and has a much larger code and data size. 10973Note 10974that these values will vary depending on the efficiency of the compiler 10975and 10976the compiler options used during generation. 10977 10978 Previous Release: 10979 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 10980 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 10981 Current Release: 10982 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 10983 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 10984 10985 109862) iASL Compiler/Disassembler: 10987 10988Implemented support to allow Type 1 and Type 2 ASL operators to appear at 10989the module level (not within a control method.) These operators will be 10990executed once at the time the table is loaded. This type of code was 10991legal 10992up until the release of ACPI 2.0B (2002) and is now supported by the iASL 10993compiler in order to provide backwards compatibility with earlier BIOS 10994ASL 10995code. 10996 10997The ACPI integer width (specified via the table revision ID or the -r 10998override, 32 or 64 bits) is now used internally during compile-time 10999constant 11000folding to ensure that constants are truncated to 32 bits if necessary. 11001Previously, the revision ID value was only emitted in the AML table 11002header. 11003 11004An error message is now generated for the Mutex and Method operators if 11005the 11006SyncLevel parameter is outside the legal range of 0 through 15. 11007 11008Fixed a problem with the Method operator ParameterTypes list handling 11009(ACPI 110103.0). Previously, more than 2 types or 2 arguments generated a syntax 11011error. 11012The actual underlying implementation of method argument typechecking is 11013still under development, however. 11014 11015---------------------------------------- 1101613 May 2005. Summary of changes for version 20050513: 11017 110181) ACPI CA Core Subsystem: 11019 11020Implemented support for PCI Express root bridges -- added support for 11021device 11022PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 11023 11024The interpreter now automatically truncates incoming 64-bit constants to 1102532 11026bits if currently executing out of a 32-bit ACPI table (Revision < 2). 11027This 11028also affects the iASL compiler constant folding. (Note: as per below, the 11029iASL compiler no longer allows 64-bit constants within 32-bit tables.) 11030 11031Fixed a problem where string and buffer objects with "static" pointers 11032(pointers to initialization data within an ACPI table) were not handled 11033consistently. The internal object copy operation now always copies the 11034data 11035to a newly allocated buffer, regardless of whether the source object is 11036static or not. 11037 11038Fixed a problem with the FromBCD operator where an implicit result 11039conversion was improperly performed while storing the result to the 11040target 11041operand. Since this is an "explicit conversion" operator, the implicit 11042conversion should never be performed on the output. 11043 11044Fixed a problem with the CopyObject operator where a copy to an existing 11045named object did not always completely overwrite the existing object 11046stored 11047at name. Specifically, a buffer-to-buffer copy did not delete the 11048existing 11049buffer. 11050 11051Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 11052and 11053structs for consistency. 11054 11055Code and Data Size: Current and previous core subsystem library sizes are 11056shown below. These are the code and data sizes for the acpica.lib 11057produced 11058by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11059any ACPI driver or OSPM code. The debug version of the code includes the 11060debug output trace mechanism and has a much larger code and data size. 11061Note 11062that these values will vary depending on the efficiency of the compiler 11063and 11064the compiler options used during generation. 11065 11066 Previous Release: 11067 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11068 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11069 Current Release: (Same sizes) 11070 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11071 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11072 11073 110742) iASL Compiler/Disassembler: 11075 11076The compiler now emits a warning if an attempt is made to generate a 64- 11077bit 11078integer constant from within a 32-bit ACPI table (Revision < 2). The 11079integer 11080is truncated to 32 bits. 11081 11082Fixed a problem with large package objects: if the static length of the 11083package is greater than 255, the "variable length package" opcode is 11084emitted. Previously, this caused an error. This requires an update to the 11085ACPI spec, since it currently (incorrectly) states that packages larger 11086than 11087255 elements are not allowed. 11088 11089The disassembler now correctly handles variable length packages and 11090packages 11091larger than 255 elements. 11092 11093---------------------------------------- 1109408 April 2005. Summary of changes for version 20050408: 11095 110961) ACPI CA Core Subsystem: 11097 11098Fixed three cases in the interpreter where an "index" argument to an ASL 11099function was still (internally) 32 bits instead of the required 64 bits. 11100This was the Index argument to the Index, Mid, and Match operators. 11101 11102The "strupr" function is now permanently local (AcpiUtStrupr), since this 11103is 11104not a POSIX-defined function and not present in most kernel-level C 11105libraries. All references to the C library strupr function have been 11106removed 11107from the headers. 11108 11109Completed the deployment of static functions/prototypes. All prototypes 11110with 11111the static attribute have been moved from the headers to the owning C 11112file. 11113 11114Implemented an extract option (-e) for the AcpiBin utility (AML binary 11115utility). This option allows the utility to extract individual ACPI 11116tables 11117from the output of AcpiDmp. It provides the same functionality of the 11118acpixtract.pl perl script without the worry of setting the correct perl 11119options. AcpiBin runs on Windows and has not yet been generated/validated 11120in 11121the Linux/Unix environment (but should be soon). 11122 11123Updated and fixed the table dump option for AcpiBin (-d). This option 11124converts a single ACPI table to a hex/ascii file, similar to the output 11125of 11126AcpiDmp. 11127 11128Code and Data Size: Current and previous core subsystem library sizes are 11129shown below. These are the code and data sizes for the acpica.lib 11130produced 11131by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11132any ACPI driver or OSPM code. The debug version of the code includes the 11133debug output trace mechanism and has a much larger code and data size. 11134Note 11135that these values will vary depending on the efficiency of the compiler 11136and 11137the compiler options used during generation. 11138 11139 Previous Release: 11140 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 11141 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 11142 Current Release: 11143 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11144 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11145 11146 111472) iASL Compiler/Disassembler: 11148 11149Disassembler fix: Added a check to ensure that the table length found in 11150the 11151ACPI table header within the input file is not longer than the actual 11152input 11153file size. This indicates some kind of file or table corruption. 11154 11155---------------------------------------- 1115629 March 2005. Summary of changes for version 20050329: 11157 111581) ACPI CA Core Subsystem: 11159 11160An error is now generated if an attempt is made to create a Buffer Field 11161of 11162length zero (A CreateField with a length operand of zero.) 11163 11164The interpreter now issues a warning whenever executable code at the 11165module 11166level is detected during ACPI table load. This will give some idea of the 11167prevalence of this type of code. 11168 11169Implemented support for references to named objects (other than control 11170methods) within package objects. 11171 11172Enhanced package object output for the debug object. Package objects are 11173now 11174completely dumped, showing all elements. 11175 11176Enhanced miscellaneous object output for the debug object. Any object can 11177now be written to the debug object (for example, a device object can be 11178written, and the type of the object will be displayed.) 11179 11180The "static" qualifier has been added to all local functions across both 11181the 11182core subsystem and the iASL compiler. 11183 11184The number of "long" lines (> 80 chars) within the source has been 11185significantly reduced, by about 1/3. 11186 11187Cleaned up all header files to ensure that all CA/iASL functions are 11188prototyped (even static functions) and the formatting is consistent. 11189 11190Two new header files have been added, acopcode.h and acnames.h. 11191 11192Removed several obsolete functions that were no longer used. 11193 11194Code and Data Size: Current and previous core subsystem library sizes are 11195shown below. These are the code and data sizes for the acpica.lib 11196produced 11197by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11198any ACPI driver or OSPM code. The debug version of the code includes the 11199debug output trace mechanism and has a much larger code and data size. 11200Note 11201that these values will vary depending on the efficiency of the compiler 11202and 11203the compiler options used during generation. 11204 11205 Previous Release: 11206 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11207 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 11208 Current Release: 11209 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 11210 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 11211 11212 11213 112142) iASL Compiler/Disassembler: 11215 11216Fixed a problem with the resource descriptor generation/support. For the 11217ResourceSourceIndex and the ResourceSource fields, both must be present, 11218or 11219both must be not present - can't have one without the other. 11220 11221The compiler now returns non-zero from the main procedure if any errors 11222have 11223occurred during the compilation. 11224 11225 11226---------------------------------------- 1122709 March 2005. Summary of changes for version 20050309: 11228 112291) ACPI CA Core Subsystem: 11230 11231The string-to-buffer implicit conversion code has been modified again 11232after 11233a change to the ACPI specification. In order to match the behavior of 11234the 11235other major ACPI implementation, the target buffer is no longer truncated 11236if 11237the source string is smaller than an existing target buffer. This change 11238requires an update to the ACPI spec, and should eliminate the recent 11239AE_AML_BUFFER_LIMIT issues. 11240 11241The "implicit return" support was rewritten to a new algorithm that 11242solves 11243the general case. Rather than attempt to determine when a method is about 11244to 11245exit, the result of every ASL operator is saved momentarily until the 11246very 11247next ASL operator is executed. Therefore, no matter how the method exits, 11248there will always be a saved implicit return value. This feature is only 11249enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 11250eliminate 11251AE_AML_NO_RETURN_VALUE errors when enabled. 11252 11253Implemented implicit conversion support for the predicate (operand) of 11254the 11255If, Else, and While operators. String and Buffer arguments are 11256automatically 11257converted to Integers. 11258 11259Changed the string-to-integer conversion behavior to match the new ACPI 11260errata: "If no integer object exists, a new integer is created. The ASCII 11261string is interpreted as a hexadecimal constant. Each string character is 11262interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 11263with the first character as the most significant digit, and ending with 11264the 11265first non-hexadecimal character or end-of-string." This means that the 11266first 11267non-hex character terminates the conversion and this is the code that was 11268changed. 11269 11270Fixed a problem where the ObjectType operator would fail (fault) when 11271used 11272on an Index of a Package which pointed to a null package element. The 11273operator now properly returns zero (Uninitialized) in this case. 11274 11275Fixed a problem where the While operator used excessive memory by not 11276properly popping the result stack during execution. There was no memory 11277leak 11278after execution, however. (Code provided by Valery Podrezov.) 11279 11280Fixed a problem where references to control methods within Package 11281objects 11282caused the method to be invoked, instead of producing a reference object 11283pointing to the method. 11284 11285Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 11286to 11287improve performance and reduce code size. (Code provided by Alexey 11288Starikovskiy.) 11289 11290Code and Data Size: Current and previous core subsystem library sizes are 11291shown below. These are the code and data sizes for the acpica.lib 11292produced 11293by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11294any ACPI driver or OSPM code. The debug version of the code includes the 11295debug output trace mechanism and has a much larger code and data size. 11296Note 11297that these values will vary depending on the efficiency of the compiler 11298and 11299the compiler options used during generation. 11300 11301 Previous Release: 11302 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11303 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 11304 Current Release: 11305 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11306 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 11307 11308 113092) iASL Compiler/Disassembler: 11310 11311Fixed a problem with the Return operator with no arguments. Since the AML 11312grammar for the byte encoding requires an operand for the Return opcode, 11313the 11314compiler now emits a Return(Zero) for this case. An ACPI specification 11315update has been written for this case. 11316 11317For tables other than the DSDT, namepath optimization is automatically 11318disabled. This is because SSDTs can be loaded anywhere in the namespace, 11319the 11320compiler has no knowledge of where, and thus cannot optimize namepaths. 11321 11322Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 11323inadvertently omitted from the ACPI specification, and will require an 11324update to the spec. 11325 11326The source file scan for ASCII characters is now optional (-a). This 11327change 11328was made because some vendors place non-ascii characters within comments. 11329However, the scan is simply a brute-force byte compare to ensure all 11330characters in the file are in the range 0x00 to 0x7F. 11331 11332Fixed a problem with the CondRefOf operator where the compiler was 11333inappropriately checking for the existence of the target. Since the point 11334of 11335the operator is to check for the existence of the target at run-time, the 11336compiler no longer checks for the target existence. 11337 11338Fixed a problem where errors generated from the internal AML interpreter 11339during constant folding were not handled properly, causing a fault. 11340 11341Fixed a problem with overly aggressive range checking for the Stall 11342operator. The valid range (max 255) is now only checked if the operand is 11343of 11344type Integer. All other operand types cannot be statically checked. 11345 11346Fixed a problem where control method references within the RefOf, 11347DeRefOf, 11348and ObjectType operators were not treated properly. They are now treated 11349as 11350actual references, not method invocations. 11351 11352Fixed and enhanced the "list namespace" option (-ln). This option was 11353broken 11354a number of releases ago. 11355 11356Improved error handling for the Field, IndexField, and BankField 11357operators. 11358The compiler now cleanly reports and recovers from errors in the field 11359component (FieldUnit) list. 11360 11361Fixed a disassembler problem where the optional ResourceDescriptor fields 11362TRS and TTP were not always handled correctly. 11363 11364Disassembler - Comments in output now use "//" instead of "/*" 11365 11366---------------------------------------- 1136728 February 2005. Summary of changes for version 20050228: 11368 113691) ACPI CA Core Subsystem: 11370 11371Fixed a problem where the result of an Index() operator (an object 11372reference) must increment the reference count on the target object for 11373the 11374life of the object reference. 11375 11376Implemented AML Interpreter and Debugger support for the new ACPI 3.0 11377Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 11378WordSpace 11379resource descriptors. 11380 11381Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 11382Space Descriptor" string, indicating interpreter support for the 11383descriptors 11384above. 11385 11386Implemented header support for the new ACPI 3.0 FADT flag bits. 11387 11388Implemented header support for the new ACPI 3.0 PCI Express bits for the 11389PM1 11390status/enable registers. 11391 11392Updated header support for the MADT processor local Apic struct and MADT 11393platform interrupt source struct for new ACPI 3.0 fields. 11394 11395Implemented header support for the SRAT and SLIT ACPI tables. 11396 11397Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 11398flag 11399at runtime. 11400 11401Code and Data Size: Current and previous core subsystem library sizes are 11402shown below. These are the code and data sizes for the acpica.lib 11403produced 11404by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11405any ACPI driver or OSPM code. The debug version of the code includes the 11406debug output trace mechanism and has a much larger code and data size. 11407Note 11408that these values will vary depending on the efficiency of the compiler 11409and 11410the compiler options used during generation. 11411 11412 Previous Release: 11413 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 11414 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 11415 Current Release: 11416 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11417 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 11418 11419 114202) iASL Compiler/Disassembler: 11421 11422Fixed a problem with the internal 64-bit String-to-integer conversion 11423with 11424strings less than two characters long. 11425 11426Fixed a problem with constant folding where the result of the Index() 11427operator can not be considered a constant. This means that Index() cannot 11428be 11429a type3 opcode and this will require an update to the ACPI specification. 11430 11431Disassembler: Implemented support for the TTP, MTP, and TRS resource 11432descriptor fields. These fields were inadvertently ignored and not output 11433in 11434the disassembly of the resource descriptor. 11435 11436 11437 ---------------------------------------- 1143811 February 2005. Summary of changes for version 20050211: 11439 114401) ACPI CA Core Subsystem: 11441 11442Implemented ACPI 3.0 support for implicit conversion within the Match() 11443operator. MatchObjects can now be of type integer, buffer, or string 11444instead 11445of just type integer. Package elements are implicitly converted to the 11446type 11447of the MatchObject. This change aligns the behavior of Match() with the 11448behavior of the other logical operators (LLess(), etc.) It also requires 11449an 11450errata change to the ACPI specification as this support was intended for 11451ACPI 3.0, but was inadvertently omitted. 11452 11453Fixed a problem with the internal implicit "to buffer" conversion. 11454Strings 11455that are converted to buffers will cause buffer truncation if the string 11456is 11457smaller than the target buffer. Integers that are converted to buffers 11458will 11459not cause buffer truncation, only zero extension (both as per the ACPI 11460spec.) The problem was introduced when code was added to truncate the 11461buffer, but this should not be performed in all cases, only the string 11462case. 11463 11464Fixed a problem with the Buffer and Package operators where the 11465interpreter 11466would get confused if two such operators were used as operands to an ASL 11467operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 11468stack was not being popped after the execution of these operators, 11469resulting 11470in an AE_NO_RETURN_VALUE exception. 11471 11472Fixed a problem with constructs of the form Store(Index(...),...). The 11473reference object returned from Index was inadvertently resolved to an 11474actual 11475value. This problem was introduced in version 20050114 when the behavior 11476of 11477Store() was modified to restrict the object types that can be used as the 11478source operand (to match the ACPI specification.) 11479 11480Reduced excessive stack use within the AcpiGetObjectInfo procedure. 11481 11482Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 11483 11484Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 11485 11486Code and Data Size: Current and previous core subsystem library sizes are 11487shown below. These are the code and data sizes for the acpica.lib 11488produced 11489by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11490any ACPI driver or OSPM code. The debug version of the code includes the 11491debug output trace mechanism and has a much larger code and data size. 11492Note 11493that these values will vary depending on the efficiency of the compiler 11494and 11495the compiler options used during generation. 11496 11497 Previous Release: 11498 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 11499 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 11500 Current Release: 11501 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 11502 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 11503 11504 115052) iASL Compiler/Disassembler: 11506 11507Fixed a code generation problem in the constant folding optimization code 11508where incorrect code was generated if a constant was reduced to a buffer 11509object (i.e., a reduced type 5 opcode.) 11510 11511Fixed a typechecking problem for the ToBuffer operator. Caused by an 11512incorrect return type in the internal opcode information table. 11513 11514---------------------------------------- 1151525 January 2005. Summary of changes for version 20050125: 11516 115171) ACPI CA Core Subsystem: 11518 11519Fixed a recently introduced problem with the Global Lock where the 11520underlying semaphore was not created. This problem was introduced in 11521version 20050114, and caused an AE_AML_NO_OPERAND exception during an 11522Acquire() operation on _GL. 11523 11524The local object cache is now optional, and is disabled by default. Both 11525AcpiExec and the iASL compiler enable the cache because they run in user 11526mode and this enhances their performance. #define 11527ACPI_ENABLE_OBJECT_CACHE 11528to enable the local cache. 11529 11530Fixed an issue in the internal function AcpiUtEvaluateObject concerning 11531the 11532optional "implicit return" support where an error was returned if no 11533return 11534object was expected, but one was implicitly returned. AE_OK is now 11535returned 11536in this case and the implicitly returned object is deleted. 11537AcpiUtEvaluateObject is only occasionally used, and only to execute 11538reserved 11539methods such as _STA and _INI where the return type is known up front. 11540 11541Fixed a few issues with the internal convert-to-integer code. It now 11542returns 11543an error if an attempt is made to convert a null string, a string of only 11544blanks/tabs, or a zero-length buffer. This affects both implicit 11545conversion 11546and explicit conversion via the ToInteger() operator. 11547 11548The internal debug code in AcpiUtAcquireMutex has been commented out. It 11549is 11550not needed for normal operation and should increase the performance of 11551the 11552entire subsystem. The code remains in case it is needed for debug 11553purposes 11554again. 11555 11556The AcpiExec source and makefile are included in the Unix/Linux package 11557for 11558the first time. 11559 11560Code and Data Size: Current and previous core subsystem library sizes are 11561shown below. These are the code and data sizes for the acpica.lib 11562produced 11563by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11564any ACPI driver or OSPM code. The debug version of the code includes the 11565debug output trace mechanism and has a much larger code and data size. 11566Note 11567that these values will vary depending on the efficiency of the compiler 11568and 11569the compiler options used during generation. 11570 11571 Previous Release: 11572 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 11573 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 11574 Current Release: 11575 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 11576 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 11577 115782) iASL Compiler/Disassembler: 11579 11580Switch/Case support: A warning is now issued if the type of the Switch 11581value 11582cannot be determined at compile time. For example, Switch(Arg0) will 11583generate the warning, and the type is assumed to be an integer. As per 11584the 11585ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 11586the 11587warning. 11588 11589Switch/Case support: Implemented support for buffer and string objects as 11590the switch value. This is an ACPI 3.0 feature, now that LEqual supports 11591buffers and strings. 11592 11593Switch/Case support: The emitted code for the LEqual() comparisons now 11594uses 11595the switch value as the first operand, not the second. The case value is 11596now 11597the second operand, and this allows the case value to be implicitly 11598converted to the type of the switch value, not the other way around. 11599 11600Switch/Case support: Temporary variables are now emitted immediately 11601within 11602the control method, not at the global level. This means that there are 11603now 1160436 temps available per-method, not 36 temps per-module as was the case 11605with 11606the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 11607 11608---------------------------------------- 1160914 January 2005. Summary of changes for version 20050114: 11610 11611Added 2005 copyright to all module headers. This affects every module in 11612the core subsystem, iASL compiler, and the utilities. 11613 116141) ACPI CA Core Subsystem: 11615 11616Fixed an issue with the String-to-Buffer conversion code where the string 11617null terminator was not included in the buffer after conversion, but 11618there 11619is existing ASL that assumes the string null terminator is included. This 11620is 11621the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 11622introduced in the previous version when the code was updated to correctly 11623set the converted buffer size as per the ACPI specification. The ACPI 11624spec 11625is ambiguous and will be updated to specify that the null terminator must 11626be 11627included in the converted buffer. This also affects the ToBuffer() ASL 11628operator. 11629 11630Fixed a problem with the Mid() ASL/AML operator where it did not work 11631correctly on Buffer objects. Newly created sub-buffers were not being 11632marked 11633as initialized. 11634 11635 11636Fixed a problem in AcpiTbFindTable where incorrect string compares were 11637performed on the OemId and OemTableId table header fields. These fields 11638are 11639not null terminated, so strncmp is now used instead of strcmp. 11640 11641Implemented a restriction on the Store() ASL/AML operator to align the 11642behavior with the ACPI specification. Previously, any object could be 11643used 11644as the source operand. Now, the only objects that may be used are 11645Integers, 11646Buffers, Strings, Packages, Object References, and DDB Handles. If 11647necessary, the original behavior can be restored by enabling the 11648EnableInterpreterSlack flag. 11649 11650Enhanced the optional "implicit return" support to allow an implicit 11651return 11652value from methods that are invoked externally via the AcpiEvaluateObject 11653interface. This enables implicit returns from the _STA and _INI methods, 11654for example. 11655 11656Changed the Revision() ASL/AML operator to return the current version of 11657the 11658AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 11659returned 11660the supported ACPI version (This is the function of the _REV method). 11661 11662Updated the _REV predefined method to return the currently supported 11663version 11664of ACPI, now 3. 11665 11666Implemented batch mode option for the AcpiExec utility (-b). 11667 11668Code and Data Size: Current and previous core subsystem library sizes are 11669shown below. These are the code and data sizes for the acpica.lib 11670produced 11671by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11672any ACPI driver or OSPM code. The debug version of the code includes the 11673debug output trace mechanism and has a much larger code and data size. 11674Note 11675that these values will vary depending on the efficiency of the compiler 11676and 11677the compiler options used during generation. 11678 11679 Previous Release: 11680 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11681 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 11682 Current Release: 11683 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 11684 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 11685 11686---------------------------------------- 1168710 December 2004. Summary of changes for version 20041210: 11688 11689ACPI 3.0 support is nearing completion in both the iASL compiler and the 11690ACPI CA core subsystem. 11691 116921) ACPI CA Core Subsystem: 11693 11694Fixed a problem in the ToDecimalString operator where the resulting 11695string 11696length was incorrectly calculated. The length is now calculated exactly, 11697eliminating incorrect AE_STRING_LIMIT exceptions. 11698 11699Fixed a problem in the ToHexString operator to allow a maximum 200 11700character 11701string to be produced. 11702 11703Fixed a problem in the internal string-to-buffer and buffer-to-buffer 11704copy 11705routine where the length of the resulting buffer was not truncated to the 11706new size (if the target buffer already existed). 11707 11708Code and Data Size: Current and previous core subsystem library sizes are 11709shown below. These are the code and data sizes for the acpica.lib 11710produced 11711by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11712any ACPI driver or OSPM code. The debug version of the code includes the 11713debug output trace mechanism and has a much larger code and data size. 11714Note 11715that these values will vary depending on the efficiency of the compiler 11716and 11717the compiler options used during generation. 11718 11719 Previous Release: 11720 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11721 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 11722 Current Release: 11723 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11724 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 11725 11726 117272) iASL Compiler/Disassembler: 11728 11729Implemented the new ACPI 3.0 resource template macros - DWordSpace, 11730ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 11731Includes support in the disassembler. 11732 11733Implemented support for the new (ACPI 3.0) parameter to the Register 11734macro, 11735AccessSize. 11736 11737Fixed a problem where the _HE resource name for the Interrupt macro was 11738referencing bit 0 instead of bit 1. 11739 11740Implemented check for maximum 255 interrupts in the Interrupt macro. 11741 11742Fixed a problem with the predefined resource descriptor names where 11743incorrect AML code was generated if the offset within the resource buffer 11744was 0 or 1. The optimizer shortened the AML code to a single byte opcode 11745but did not update the surrounding package lengths. 11746 11747Changes to the Dma macro: All channels within the channel list must be 11748in 11749the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 11750optional (default is BusMaster). 11751 11752Implemented check for maximum 7 data bytes for the VendorShort macro. 11753 11754The ReadWrite parameter is now optional for the Memory32 and similar 11755macros. 11756 11757---------------------------------------- 1175803 December 2004. Summary of changes for version 20041203: 11759 117601) ACPI CA Core Subsystem: 11761 11762The low-level field insertion/extraction code (exfldio) has been 11763completely 11764rewritten to eliminate unnecessary complexity, bugs, and boundary 11765conditions. 11766 11767Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 11768ToDecimalString 11769operators where the input operand could be inadvertently deleted if no 11770conversion was necessary (e.g., if the input to ToInteger was an Integer 11771object.) 11772 11773Fixed a problem with the ToDecimalString and ToHexString where an 11774incorrect 11775exception code was returned if the resulting string would be > 200 chars. 11776AE_STRING_LIMIT is now returned. 11777 11778Fixed a problem with the Concatenate operator where AE_OK was always 11779returned, even if the operation failed. 11780 11781Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 11782semaphores to be allocated. 11783 11784Code and Data Size: Current and previous core subsystem library sizes are 11785shown below. These are the code and data sizes for the acpica.lib 11786produced 11787by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11788any ACPI driver or OSPM code. The debug version of the code includes the 11789debug output trace mechanism and has a much larger code and data size. 11790Note 11791that these values will vary depending on the efficiency of the compiler 11792and 11793the compiler options used during generation. 11794 11795 Previous Release: 11796 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11797 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11798 Current Release: 11799 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11800 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 11801 11802 118032) iASL Compiler/Disassembler: 11804 11805Fixed typechecking for the ObjectType and SizeOf operators. Problem was 11806recently introduced in 20041119. 11807 11808Fixed a problem with the ToUUID macro where the upper nybble of each 11809buffer 11810byte was inadvertently set to zero. 11811 11812---------------------------------------- 1181319 November 2004. Summary of changes for version 20041119: 11814 118151) ACPI CA Core Subsystem: 11816 11817Fixed a problem in the internal ConvertToInteger routine where new 11818integers 11819were not truncated to 32 bits for 32-bit ACPI tables. This routine 11820converts 11821buffers and strings to integers. 11822 11823Implemented support to store a value to an Index() on a String object. 11824This 11825is an ACPI 2.0 feature that had not yet been implemented. 11826 11827Implemented new behavior for storing objects to individual package 11828elements 11829(via the Index() operator). The previous behavior was to invoke the 11830implicit 11831conversion rules if an object was already present at the index. The new 11832behavior is to simply delete any existing object and directly store the 11833new 11834object. Although the ACPI specification seems unclear on this subject, 11835other 11836ACPI implementations behave in this manner. (This is the root of the 11837AE_BAD_HEX_CONSTANT issue.) 11838 11839Modified the RSDP memory scan mechanism to support the extended checksum 11840for 11841ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 11842RSDP signature is found with a valid checksum. 11843 11844Code and Data Size: Current and previous core subsystem library sizes are 11845shown below. These are the code and data sizes for the acpica.lib 11846produced 11847by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11848any ACPI driver or OSPM code. The debug version of the code includes the 11849debug output trace mechanism and has a much larger code and data size. 11850Note 11851that these values will vary depending on the efficiency of the compiler 11852and 11853the compiler options used during generation. 11854 11855 Previous Release: 11856 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11857 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11858 Current Release: 11859 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11860 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11861 11862 118632) iASL Compiler/Disassembler: 11864 11865Fixed a missing semicolon in the aslcompiler.y file. 11866 11867---------------------------------------- 1186805 November 2004. Summary of changes for version 20041105: 11869 118701) ACPI CA Core Subsystem: 11871 11872Implemented support for FADT revision 2. This was an interim table 11873(between 11874ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 11875 11876Implemented optional support to allow uninitialized LocalX and ArgX 11877variables in a control method. The variables are initialized to an 11878Integer 11879object with a value of zero. This support is enabled by setting the 11880AcpiGbl_EnableInterpreterSlack flag to TRUE. 11881 11882Implemented support for Integer objects for the SizeOf operator. Either 118834 11884or 8 is returned, depending on the current integer size (32-bit or 64- 11885bit, 11886depending on the parent table revision). 11887 11888Fixed a problem in the implementation of the SizeOf and ObjectType 11889operators 11890where the operand was resolved to a value too early, causing incorrect 11891return values for some objects. 11892 11893Fixed some possible memory leaks during exceptional conditions. 11894 11895Code and Data Size: Current and previous core subsystem library sizes are 11896shown below. These are the code and data sizes for the acpica.lib 11897produced 11898by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11899any ACPI driver or OSPM code. The debug version of the code includes the 11900debug output trace mechanism and has a much larger code and data size. 11901Note 11902that these values will vary depending on the efficiency of the compiler 11903and 11904the compiler options used during generation. 11905 11906 Previous Release: 11907 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11908 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 11909 Current Release: 11910 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11911 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11912 11913 119142) iASL Compiler/Disassembler: 11915 11916Implemented support for all ACPI 3.0 reserved names and methods. 11917 11918Implemented all ACPI 3.0 grammar elements in the front-end, including 11919support for semicolons. 11920 11921Implemented the ACPI 3.0 Function() and ToUUID() macros 11922 11923Fixed a problem in the disassembler where a Scope() operator would not be 11924emitted properly if the target of the scope was in another table. 11925 11926---------------------------------------- 1192715 October 2004. Summary of changes for version 20041015: 11928 11929Note: ACPI CA is currently undergoing an in-depth and complete formal 11930evaluation to test/verify the following areas. Other suggestions are 11931welcome. This will result in an increase in the frequency of releases and 11932the number of bug fixes in the next few months. 11933 - Functional tests for all ASL/AML operators 11934 - All implicit/explicit type conversions 11935 - Bit fields and operation regions 11936 - 64-bit math support and 32-bit-only "truncated" math support 11937 - Exceptional conditions, both compiler and interpreter 11938 - Dynamic object deletion and memory leaks 11939 - ACPI 3.0 support when implemented 11940 - External interfaces to the ACPI subsystem 11941 11942 119431) ACPI CA Core Subsystem: 11944 11945Fixed two alignment issues on 64-bit platforms - within debug statements 11946in 11947AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 11948Address 11949field within the non-aligned ACPI generic address structure. 11950 11951Fixed a problem in the Increment and Decrement operators where incorrect 11952operand resolution could result in the inadvertent modification of the 11953original integer when the integer is passed into another method as an 11954argument and the arg is then incremented/decremented. 11955 11956Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 11957bit 11958BCD number were truncated during conversion. 11959 11960Fixed a problem in the ToDecimal operator where the length of the 11961resulting 11962string could be set incorrectly too long if the input operand was a 11963Buffer 11964object. 11965 11966Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 11967(0) 11968within a buffer would prematurely terminate a compare between buffer 11969objects. 11970 11971Added a check for string overflow (>200 characters as per the ACPI 11972specification) during the Concatenate operator with two string operands. 11973 11974Code and Data Size: Current and previous core subsystem library sizes are 11975shown below. These are the code and data sizes for the acpica.lib 11976produced 11977by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11978any ACPI driver or OSPM code. The debug version of the code includes the 11979debug output trace mechanism and has a much larger code and data size. 11980Note 11981that these values will vary depending on the efficiency of the compiler 11982and 11983the compiler options used during generation. 11984 11985 Previous Release: 11986 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 11987 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 11988 Current Release: 11989 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 11990 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 11991 11992 11993 119942) iASL Compiler/Disassembler: 11995 11996Allow the use of the ObjectType operator on uninitialized Locals and Args 11997(returns 0 as per the ACPI specification). 11998 11999Fixed a problem where the compiler would fault if there was a syntax 12000error 12001in the FieldName of all of the various CreateXXXField operators. 12002 12003Disallow the use of lower case letters within the EISAID macro, as per 12004the 12005ACPI specification. All EISAID strings must be of the form "UUUNNNN" 12006Where 12007U is an uppercase letter and N is a hex digit. 12008 12009 12010---------------------------------------- 1201106 October 2004. Summary of changes for version 20041006: 12012 120131) ACPI CA Core Subsystem: 12014 12015Implemented support for the ACPI 3.0 Timer operator. This ASL function 12016implements a 64-bit timer with 100 nanosecond granularity. 12017 12018Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 12019implement the ACPI 3.0 Timer operator. This allows the host OS to 12020implement 12021the timer with the best clock available. Also, it keeps the core 12022subsystem 12023out of the clock handling business, since the host OS (usually) performs 12024this function. 12025 12026Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 12027functions use a 64-bit address which is part of the packed ACPI Generic 12028Address Structure. Since the structure is non-aligned, the alignment 12029macros 12030are now used to extract the address to a local variable before use. 12031 12032Fixed a problem where the ToInteger operator assumed all input strings 12033were 12034hexadecimal. The operator now handles both decimal strings and hex 12035strings 12036(prefixed with "0x"). 12037 12038Fixed a problem where the string length in the string object created as a 12039result of the internal ConvertToString procedure could be incorrect. This 12040potentially affected all implicit conversions and also the 12041ToDecimalString 12042and ToHexString operators. 12043 12044Fixed two problems in the ToString operator. If the length parameter was 12045zero, an incorrect string object was created and the value of the input 12046length parameter was inadvertently changed from zero to Ones. 12047 12048Fixed a problem where the optional ResourceSource string in the 12049ExtendedIRQ 12050resource macro was ignored. 12051 12052Simplified the interfaces to the internal division functions, reducing 12053code 12054size and complexity. 12055 12056Code and Data Size: Current and previous core subsystem library sizes are 12057shown below. These are the code and data sizes for the acpica.lib 12058produced 12059by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12060any ACPI driver or OSPM code. The debug version of the code includes the 12061debug output trace mechanism and has a much larger code and data size. 12062Note 12063that these values will vary depending on the efficiency of the compiler 12064and 12065the compiler options used during generation. 12066 12067 Previous Release: 12068 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 12069 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 12070 Current Release: 12071 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12072 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 12073 12074 120752) iASL Compiler/Disassembler: 12076 12077Implemented support for the ACPI 3.0 Timer operator. 12078 12079Fixed a problem where the Default() operator was inadvertently ignored in 12080a 12081Switch/Case block. This was a problem in the translation of the Switch 12082statement to If...Else pairs. 12083 12084Added support to allow a standalone Return operator, with no parentheses 12085(or 12086operands). 12087 12088Fixed a problem with code generation for the ElseIf operator where the 12089translated Else...If parse tree was improperly constructed leading to the 12090loss of some code. 12091 12092---------------------------------------- 1209322 September 2004. Summary of changes for version 20040922: 12094 120951) ACPI CA Core Subsystem: 12096 12097Fixed a problem with the implementation of the LNot() operator where 12098"Ones" 12099was not returned for the TRUE case. Changed the code to return Ones 12100instead 12101of (!Arg) which was usually 1. This change affects iASL constant folding 12102for 12103this operator also. 12104 12105Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 12106not 12107initialized properly -- Now zero the entire buffer in this case where the 12108buffer already exists. 12109 12110Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 12111Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 12112related code considerably. This will require changes/updates to all OS 12113interface layers (OSLs.) 12114 12115Implemented a new external interface, AcpiInstallExceptionHandler, to 12116allow 12117a system exception handler to be installed. This handler is invoked upon 12118any 12119run-time exception that occurs during control method execution. 12120 12121Added support for the DSDT in AcpiTbFindTable. This allows the 12122DataTableRegion() operator to access the local copy of the DSDT. 12123 12124Code and Data Size: Current and previous core subsystem library sizes are 12125shown below. These are the code and data sizes for the acpica.lib 12126produced 12127by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12128any ACPI driver or OSPM code. The debug version of the code includes the 12129debug output trace mechanism and has a much larger code and data size. 12130Note 12131that these values will vary depending on the efficiency of the compiler 12132and 12133the compiler options used during generation. 12134 12135 Previous Release: 12136 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 12137 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 12138 Current Release: 12139 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 12140 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 12141 12142 121432) iASL Compiler/Disassembler: 12144 12145Fixed a problem with constant folding and the LNot operator. LNot was 12146returning 1 in the TRUE case, not Ones as per the ACPI specification. 12147This 12148could result in the generation of an incorrect folded/reduced constant. 12149 12150End-Of-File is now allowed within a "//"-style comment. A parse error no 12151longer occurs if such a comment is at the very end of the input ASL 12152source 12153file. 12154 12155Implemented the "-r" option to override the Revision in the table header. 12156The initial use of this option will be to simplify the evaluation of the 12157AML 12158interpreter by allowing a single ASL source module to be compiled for 12159either 1216032-bit or 64-bit integers. 12161 12162 12163---------------------------------------- 1216427 August 2004. Summary of changes for version 20040827: 12165 121661) ACPI CA Core Subsystem: 12167 12168- Implemented support for implicit object conversion in the non-numeric 12169logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 12170and 12171LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 12172the second operand is implicitly converted on the fly to match the type 12173of 12174the first operand. For example: 12175 12176 LEqual (Source1, Source2) 12177 12178Source1 and Source2 must each evaluate to an integer, a string, or a 12179buffer. 12180The data type of Source1 dictates the required type of Source2. Source2 12181is 12182implicitly converted if necessary to match the type of Source1. 12183 12184- Updated and corrected the behavior of the string conversion support. 12185The 12186rules concerning conversion of buffers to strings (according to the ACPI 12187specification) are as follows: 12188 12189ToDecimalString - explicit byte-wise conversion of buffer to string of 12190decimal values (0-255) separated by commas. ToHexString - explicit byte- 12191wise 12192conversion of buffer to string of hex values (0-FF) separated by commas. 12193ToString - explicit byte-wise conversion of buffer to string. Byte-by- 12194byte 12195copy with no transform except NULL terminated. Any other implicit buffer- 12196to- 12197string conversion - byte-wise conversion of buffer to string of hex 12198values 12199(0-FF) separated by spaces. 12200 12201- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 12202 12203- Fixed a problem in AcpiNsGetPathnameLength where the returned length 12204was 12205one byte too short in the case of a node in the root scope. This could 12206cause a fault during debug output. 12207 12208- Code and Data Size: Current and previous core subsystem library sizes 12209are 12210shown below. These are the code and data sizes for the acpica.lib 12211produced 12212by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12213any ACPI driver or OSPM code. The debug version of the code includes the 12214debug output trace mechanism and has a much larger code and data size. 12215Note 12216that these values will vary depending on the efficiency of the compiler 12217and 12218the compiler options used during generation. 12219 12220 Previous Release: 12221 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 12222 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 12223 Current Release: 12224 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 12225 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 12226 12227 122282) iASL Compiler/Disassembler: 12229 12230- Fixed a Linux generation error. 12231 12232 12233---------------------------------------- 1223416 August 2004. Summary of changes for version 20040816: 12235 122361) ACPI CA Core Subsystem: 12237 12238Designed and implemented support within the AML interpreter for the so- 12239called "implicit return". This support returns the result of the last 12240ASL 12241operation within a control method, in the absence of an explicit Return() 12242operator. A few machines depend on this behavior, even though it is not 12243explicitly supported by the ASL language. It is optional support that 12244can 12245be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 12246 12247Removed support for the PCI_Config address space from the internal low 12248level 12249hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 12250support was not used internally, and would not work correctly anyway 12251because 12252the PCI bus number and segment number were not supported. There are 12253separate interfaces for PCI configuration space access because of the 12254unique 12255interface. 12256 12257Code and Data Size: Current and previous core subsystem library sizes are 12258shown below. These are the code and data sizes for the acpica.lib 12259produced 12260by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12261any ACPI driver or OSPM code. The debug version of the code includes the 12262debug output trace mechanism and has a much larger code and data size. 12263Note 12264that these values will vary depending on the efficiency of the compiler 12265and 12266the compiler options used during generation. 12267 12268 Previous Release: 12269 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12270 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 12271 Current Release: 12272 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 12273 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 12274 12275 122762) iASL Compiler/Disassembler: 12277 12278Fixed a problem where constants in ASL expressions at the root level (not 12279within a control method) could be inadvertently truncated during code 12280generation. This problem was introduced in the 20040715 release. 12281 12282 12283---------------------------------------- 1228415 July 2004. Summary of changes for version 20040715: 12285 122861) ACPI CA Core Subsystem: 12287 12288Restructured the internal HW GPE interfaces to pass/track the current 12289state 12290of interrupts (enabled/disabled) in order to avoid possible deadlock and 12291increase flexibility of the interfaces. 12292 12293Implemented a "lexicographical compare" for String and Buffer objects 12294within 12295the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 12296- 12297as per further clarification to the ACPI specification. Behavior is 12298similar 12299to C library "strcmp". 12300 12301Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 12302external function. In the 32-bit non-debug case, the stack use has been 12303reduced from 168 bytes to 32 bytes. 12304 12305Deployed a new run-time configuration flag, 12306AcpiGbl_EnableInterpreterSlack, 12307whose purpose is to allow the AML interpreter to forgive certain bad AML 12308constructs. Default setting is FALSE. 12309 12310Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 12311IO 12312support code. If enabled, it allows field access to go beyond the end of 12313a 12314region definition if the field is within the region length rounded up to 12315the 12316next access width boundary (a common coding error.) 12317 12318Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 12319ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 12320these 12321symbols are lowercased by the latest version of the AcpiSrc tool. 12322 12323The prototypes for the PCI interfaces in acpiosxf.h have been updated to 12324rename "Register" to simply "Reg" to prevent certain compilers from 12325complaining. 12326 12327Code and Data Size: Current and previous core subsystem library sizes are 12328shown below. These are the code and data sizes for the acpica.lib 12329produced 12330by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12331any ACPI driver or OSPM code. The debug version of the code includes the 12332debug output trace mechanism and has a much larger code and data size. 12333Note 12334that these values will vary depending on the efficiency of the compiler 12335and 12336the compiler options used during generation. 12337 12338 Previous Release: 12339 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12340 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 12341 Current Release: 12342 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12343 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 12344 12345 123462) iASL Compiler/Disassembler: 12347 12348Implemented full support for Package objects within the Case() operator. 12349Note: The Break() operator is currently not supported within Case blocks 12350(TermLists) as there is some question about backward compatibility with 12351ACPI 123521.0 interpreters. 12353 12354 12355Fixed a problem where complex terms were not supported properly within 12356the 12357Switch() operator. 12358 12359Eliminated extraneous warning for compiler-emitted reserved names of the 12360form "_T_x". (Used in Switch/Case operators.) 12361 12362Eliminated optimization messages for "_T_x" objects and small constants 12363within the DefinitionBlock operator. 12364 12365 12366---------------------------------------- 1236715 June 2004. Summary of changes for version 20040615: 12368 123691) ACPI CA Core Subsystem: 12370 12371Implemented support for Buffer and String objects (as per ACPI 2.0) for 12372the 12373following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 12374LLessEqual. 12375 12376All directory names in the entire source package are lower case, as they 12377were in earlier releases. 12378 12379Implemented "Disassemble" command in the AML debugger that will 12380disassemble 12381a single control method. 12382 12383Code and Data Size: Current and previous core subsystem library sizes are 12384shown below. These are the code and data sizes for the acpica.lib 12385produced 12386by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12387any ACPI driver or OSPM code. The debug version of the code includes the 12388debug output trace mechanism and has a much larger code and data size. 12389Note 12390that these values will vary depending on the efficiency of the compiler 12391and 12392the compiler options used during generation. 12393 12394 Previous Release: 12395 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 12396 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 12397 12398 Current Release: 12399 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12400 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 12401 12402 124032) iASL Compiler/Disassembler: 12404 12405Implemented support for Buffer and String objects (as per ACPI 2.0) for 12406the 12407following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 12408LLessEqual. 12409 12410All directory names in the entire source package are lower case, as they 12411were in earlier releases. 12412 12413Fixed a fault when using the -g or -d<nofilename> options if the FADT was 12414not found. 12415 12416Fixed an issue with the Windows version of the compiler where later 12417versions 12418of Windows place the FADT in the registry under the name "FADT" and not 12419"FACP" as earlier versions did. This applies when using the -g or - 12420d<nofilename> options. The compiler now looks for both strings as 12421necessary. 12422 12423Fixed a problem with compiler namepath optimization where a namepath 12424within 12425the Scope() operator could not be optimized if the namepath was a subpath 12426of 12427the current scope path. 12428 12429---------------------------------------- 1243027 May 2004. Summary of changes for version 20040527: 12431 124321) ACPI CA Core Subsystem: 12433 12434Completed a new design and implementation for EBDA (Extended BIOS Data 12435Area) 12436support in the RSDP scan code. The original code improperly scanned for 12437the 12438EBDA by simply scanning from memory location 0 to 0x400. The correct 12439method 12440is to first obtain the EBDA pointer from within the BIOS data area, then 12441scan 1K of memory starting at the EBDA pointer. There appear to be few 12442if 12443any machines that place the RSDP in the EBDA, however. 12444 12445Integrated a fix for a possible fault during evaluation of BufferField 12446arguments. Obsolete code that was causing the problem was removed. 12447 12448Found and fixed a problem in the Field Support Code where data could be 12449corrupted on a bit field read that starts on an aligned boundary but does 12450not end on an aligned boundary. Merged the read/write "datum length" 12451calculation code into a common procedure. 12452 12453Rolled in a couple of changes to the FreeBSD-specific header. 12454 12455 12456Code and Data Size: Current and previous core subsystem library sizes are 12457shown below. These are the code and data sizes for the acpica.lib 12458produced 12459by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12460any ACPI driver or OSPM code. The debug version of the code includes the 12461debug output trace mechanism and has a much larger code and data size. 12462Note 12463that these values will vary depending on the efficiency of the compiler 12464and 12465the compiler options used during generation. 12466 12467 Previous Release: 12468 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12469 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 12470 Current Release: 12471 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 12472 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 12473 12474 124752) iASL Compiler/Disassembler: 12476 12477Fixed a generation warning produced by some overly-verbose compilers for 12478a 1247964-bit constant. 12480 12481---------------------------------------- 1248214 May 2004. Summary of changes for version 20040514: 12483 124841) ACPI CA Core Subsystem: 12485 12486Fixed a problem where hardware GPE enable bits sometimes not set properly 12487during and after GPE method execution. Result of 04/27 changes. 12488 12489Removed extra "clear all GPEs" when sleeping/waking. 12490 12491Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 12492AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 12493to 12494the new AcpiEv* calls as appropriate. 12495 12496ACPI_OS_NAME was removed from the OS-specific headers. The default name 12497is 12498now "Microsoft Windows NT" for maximum compatibility. However this can 12499be 12500changed by modifying the acconfig.h file. 12501 12502Allow a single invocation of AcpiInstallNotifyHandler for a handler that 12503traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 12504 12505Run _INI methods on ThermalZone objects. This is against the ACPI 12506specification, but there is apparently ASL code in the field that has 12507these 12508_INI methods, and apparently "other" AML interpreters execute them. 12509 12510Performed a full 16/32/64 bit lint that resulted in some small changes. 12511 12512Added a sleep simulation command to the AML debugger to test sleep code. 12513 12514Code and Data Size: Current and previous core subsystem library sizes are 12515shown below. These are the code and data sizes for the acpica.lib 12516produced 12517by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12518any ACPI driver or OSPM code. The debug version of the code includes the 12519debug output trace mechanism and has a much larger code and data size. 12520Note 12521that these values will vary depending on the efficiency of the compiler 12522and 12523the compiler options used during generation. 12524 12525 Previous Release: 12526 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12527 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 12528 Current Release: 12529 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12530 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 12531 12532---------------------------------------- 1253327 April 2004. Summary of changes for version 20040427: 12534 125351) ACPI CA Core Subsystem: 12536 12537Completed a major overhaul of the GPE handling within ACPI CA. There are 12538now three types of GPEs: wake-only, runtime-only, and combination 12539wake/run. 12540The only GPEs allowed to be combination wake/run are for button-style 12541devices such as a control-method power button, control-method sleep 12542button, 12543or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 12544not 12545referenced by any _PRW methods are marked for "runtime" and hardware 12546enabled. Any GPE that is referenced by a _PRW method is marked for 12547"wake" 12548(and disabled at runtime). However, at sleep time, only those GPEs that 12549have been specifically enabled for wake via the AcpiEnableGpe interface 12550will 12551actually be hardware enabled. 12552 12553A new external interface has been added, AcpiSetGpeType(), that is meant 12554to 12555be used by device drivers to force a GPE to a particular type. It will 12556be 12557especially useful for the drivers for the button devices mentioned above. 12558 12559Completed restructuring of the ACPI CA initialization sequence so that 12560default operation region handlers are installed before GPEs are 12561initialized 12562and the _PRW methods are executed. This will prevent errors when the 12563_PRW 12564methods attempt to access system memory or I/O space. 12565 12566GPE enable/disable no longer reads the GPE enable register. We now keep 12567the 12568enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 12569thus no longer depend on the hardware to maintain these bits. 12570 12571Always clear the wake status and fixed/GPE status bits before sleep, even 12572for state S5. 12573 12574Improved the AML debugger output for displaying the GPE blocks and their 12575current status. 12576 12577Added new strings for the _OSI method, of the form "Windows 2001 SPx" 12578where 12579x = 0,1,2,3,4. 12580 12581Fixed a problem where the physical address was incorrectly calculated 12582when 12583the Load() operator was used to directly load from an Operation Region 12584(vs. 12585loading from a Field object.) Also added check for minimum table length 12586for 12587this case. 12588 12589Fix for multiple mutex acquisition. Restore original thread SyncLevel on 12590mutex release. 12591 12592Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 12593consistency with the other fields returned. 12594 12595Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 12596structure for each GPE in the system, so the size of this structure is 12597important. 12598 12599CPU stack requirement reduction: Cleaned up the method execution and 12600object 12601evaluation paths so that now a parameter structure is passed, instead of 12602copying the various method parameters over and over again. 12603 12604In evregion.c: Correctly exit and reenter the interpreter region if and 12605only if dispatching an operation region request to a user-installed 12606handler. 12607Do not exit/reenter when dispatching to a default handler (e.g., default 12608system memory or I/O handlers) 12609 12610 12611Notes for updating drivers for the new GPE support. The following 12612changes 12613must be made to ACPI-related device drivers that are attached to one or 12614more 12615GPEs: (This information will be added to the ACPI CA Programmer 12616Reference.) 12617 126181) AcpiInstallGpeHandler no longer automatically enables the GPE, you 12619must 12620explicitly call AcpiEnableGpe. 126212) There is a new interface called AcpiSetGpeType. This should be called 12622before enabling the GPE. Also, this interface will automatically disable 12623the GPE if it is currently enabled. 126243) AcpiEnableGpe no longer supports a GPE type flag. 12625 12626Specific drivers that must be changed: 126271) EC driver: 12628 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 12629AeGpeHandler, NULL); 12630 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 12631 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 12632 126332) Button Drivers (Power, Lid, Sleep): 12634Run _PRW method under parent device 12635If _PRW exists: /* This is a control-method button */ 12636 Extract GPE number and possibly GpeDevice 12637 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 12638 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 12639 12640For all other devices that have _PRWs, we automatically set the GPE type 12641to 12642ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 12643This 12644must be done on a selective basis, usually requiring some kind of user 12645app 12646to allow the user to pick the wake devices. 12647 12648 12649Code and Data Size: Current and previous core subsystem library sizes are 12650shown below. These are the code and data sizes for the acpica.lib 12651produced 12652by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12653any ACPI driver or OSPM code. The debug version of the code includes the 12654debug output trace mechanism and has a much larger code and data size. 12655Note 12656that these values will vary depending on the efficiency of the compiler 12657and 12658the compiler options used during generation. 12659 12660 Previous Release: 12661 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 12662 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 12663 Current Release: 12664 12665 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12666 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 12667 12668 12669 12670---------------------------------------- 1267102 April 2004. Summary of changes for version 20040402: 12672 126731) ACPI CA Core Subsystem: 12674 12675Fixed an interpreter problem where an indirect store through an ArgX 12676parameter was incorrectly applying the "implicit conversion rules" during 12677the store. From the ACPI specification: "If the target is a method local 12678or 12679argument (LocalX or ArgX), no conversion is performed and the result is 12680stored directly to the target". The new behavior is to disable implicit 12681conversion during ALL stores to an ArgX. 12682 12683Changed the behavior of the _PRW method scan to ignore any and all errors 12684returned by a given _PRW. This prevents the scan from aborting from the 12685failure of any single _PRW. 12686 12687Moved the runtime configuration parameters from the global init procedure 12688to 12689static variables in acglobal.h. This will allow the host to override the 12690default values easily. 12691 12692Code and Data Size: Current and previous core subsystem library sizes are 12693shown below. These are the code and data sizes for the acpica.lib 12694produced 12695by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12696any ACPI driver or OSPM code. The debug version of the code includes the 12697debug output trace mechanism and has a much larger code and data size. 12698Note 12699that these values will vary depending on the efficiency of the compiler 12700and 12701the compiler options used during generation. 12702 12703 Previous Release: 12704 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 12705 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 12706 Current Release: 12707 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 12708 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 12709 12710 127112) iASL Compiler/Disassembler: 12712 12713iASL now fully disassembles SSDTs. However, External() statements are 12714not 12715generated automatically for unresolved symbols at this time. This is a 12716planned feature for future implementation. 12717 12718Fixed a scoping problem in the disassembler that occurs when the type of 12719the 12720target of a Scope() operator is overridden. This problem caused an 12721incorrectly nested internal namespace to be constructed. 12722 12723Any warnings or errors that are emitted during disassembly are now 12724commented 12725out automatically so that the resulting file can be recompiled without 12726any 12727hand editing. 12728 12729---------------------------------------- 1273026 March 2004. Summary of changes for version 20040326: 12731 127321) ACPI CA Core Subsystem: 12733 12734Implemented support for "wake" GPEs via interaction between GPEs and the 12735_PRW methods. Every GPE that is pointed to by one or more _PRWs is 12736identified as a WAKE GPE and by default will no longer be enabled at 12737runtime. Previously, we were blindly enabling all GPEs with a 12738corresponding 12739_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 12740We 12741believe this has been the cause of thousands of "spurious" GPEs on some 12742systems. 12743 12744This new GPE behavior is can be reverted to the original behavior (enable 12745ALL GPEs at runtime) via a runtime flag. 12746 12747Fixed a problem where aliased control methods could not access objects 12748properly. The proper scope within the namespace was not initialized 12749(transferred to the target of the aliased method) before executing the 12750target method. 12751 12752Fixed a potential race condition on internal object deletion on the 12753return 12754object in AcpiEvaluateObject. 12755 12756Integrated a fix for resource descriptors where both _MEM and _MTP were 12757being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 12758wide, 0x0F instead of 0x03.) 12759 12760Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 12761preventing 12762a 12763fault in some cases. 12764 12765Updated Notify() values for debug statements in evmisc.c 12766 12767Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 12768 12769Code and Data Size: Current and previous core subsystem library sizes are 12770shown below. These are the code and data sizes for the acpica.lib 12771produced 12772by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12773any ACPI driver or OSPM code. The debug version of the code includes the 12774debug output trace mechanism and has a much larger code and data size. 12775Note 12776that these values will vary depending on the efficiency of the compiler 12777and 12778the compiler options used during generation. 12779 12780 Previous Release: 12781 12782 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 12783 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 12784 Current Release: 12785 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 12786 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 12787 12788---------------------------------------- 1278911 March 2004. Summary of changes for version 20040311: 12790 127911) ACPI CA Core Subsystem: 12792 12793Fixed a problem where errors occurring during the parse phase of control 12794method execution did not abort cleanly. For example, objects created and 12795installed in the namespace were not deleted. This caused all subsequent 12796invocations of the method to return the AE_ALREADY_EXISTS exception. 12797 12798Implemented a mechanism to force a control method to "Serialized" 12799execution 12800if the method attempts to create namespace objects. (The root of the 12801AE_ALREADY_EXISTS problem.) 12802 12803Implemented support for the predefined _OSI "internal" control method. 12804Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 12805and 12806"Windows 2001.1", and can be easily upgraded for new strings as 12807necessary. 12808This feature will allow "other" operating systems to execute the fully 12809tested, "Windows" code path through the ASL code 12810 12811Global Lock Support: Now allows multiple acquires and releases with any 12812internal thread. Removed concept of "owning thread" for this special 12813mutex. 12814 12815Fixed two functions that were inappropriately declaring large objects on 12816the 12817CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 12818during 12819method execution considerably. 12820 12821Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 12822S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 12823 12824Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 12825defined on the machine. 12826 12827Implemented two runtime options: One to force all control method 12828execution 12829to "Serialized" to mimic Windows behavior, another to disable _OSI 12830support 12831if it causes problems on a given machine. 12832 12833Code and Data Size: Current and previous core subsystem library sizes are 12834shown below. These are the code and data sizes for the acpica.lib 12835produced 12836by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12837any ACPI driver or OSPM code. The debug version of the code includes the 12838debug output trace mechanism and has a much larger code and data size. 12839Note 12840that these values will vary depending on the efficiency of the compiler 12841and 12842the compiler options used during generation. 12843 12844 Previous Release: 12845 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 12846 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 12847 Current Release: 12848 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 12849 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 12850 128512) iASL Compiler/Disassembler: 12852 12853Fixed an array size problem for FreeBSD that would cause the compiler to 12854fault. 12855 12856---------------------------------------- 1285720 February 2004. Summary of changes for version 20040220: 12858 12859 128601) ACPI CA Core Subsystem: 12861 12862Implemented execution of _SxD methods for Device objects in the 12863GetObjectInfo interface. 12864 12865Fixed calls to _SST method to pass the correct arguments. 12866 12867Added a call to _SST on wake to restore to "working" state. 12868 12869Check for End-Of-Buffer failure case in the WalkResources interface. 12870 12871Integrated fix for 64-bit alignment issue in acglobal.h by moving two 12872structures to the beginning of the file. 12873 12874After wake, clear GPE status register(s) before enabling GPEs. 12875 12876After wake, clear/enable power button. (Perhaps we should clear/enable 12877all 12878fixed events upon wake.) 12879 12880Fixed a couple of possible memory leaks in the Namespace manager. 12881 12882Integrated latest acnetbsd.h file. 12883 12884---------------------------------------- 1288511 February 2004. Summary of changes for version 20040211: 12886 12887 128881) ACPI CA Core Subsystem: 12889 12890Completed investigation and implementation of the call-by-reference 12891mechanism for control method arguments. 12892 12893Fixed a problem where a store of an object into an indexed package could 12894fail if the store occurs within a different method than the method that 12895created the package. 12896 12897Fixed a problem where the ToDecimal operator could return incorrect 12898results. 12899 12900Fixed a problem where the CopyObject operator could fail on some of the 12901more 12902obscure objects (e.g., Reference objects.) 12903 12904Improved the output of the Debug object to display buffer, package, and 12905index objects. 12906 12907Fixed a problem where constructs of the form "RefOf (ArgX)" did not 12908return 12909the expected result. 12910 12911Added permanent ACPI_REPORT_ERROR macros for all instances of the 12912ACPI_AML_INTERNAL exception. 12913 12914Integrated latest version of acfreebsd.h 12915 12916---------------------------------------- 1291716 January 2004. Summary of changes for version 20040116: 12918 12919The purpose of this release is primarily to update the copyright years in 12920each module, thus causing a huge number of diffs. There are a few small 12921functional changes, however. 12922 129231) ACPI CA Core Subsystem: 12924 12925Improved error messages when there is a problem finding one or more of 12926the 12927required base ACPI tables 12928 12929Reintroduced the definition of APIC_HEADER in actbl.h 12930 12931Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 12932 12933Removed extraneous reference to NewObj in dsmthdat.c 12934 129352) iASL compiler 12936 12937Fixed a problem introduced in December that disabled the correct 12938disassembly 12939of Resource Templates 12940 12941 12942---------------------------------------- 1294303 December 2003. Summary of changes for version 20031203: 12944 129451) ACPI CA Core Subsystem: 12946 12947Changed the initialization of Operation Regions during subsystem 12948init to perform two entire walks of the ACPI namespace; The first 12949to initialize the regions themselves, the second to execute the 12950_REG methods. This fixed some interdependencies across _REG 12951methods found on some machines. 12952 12953Fixed a problem where a Store(Local0, Local1) could simply update 12954the object reference count, and not create a new copy of the 12955object if the Local1 is uninitialized. 12956 12957Implemented support for the _SST reserved method during sleep 12958transitions. 12959 12960Implemented support to clear the SLP_TYP and SLP_EN bits when 12961waking up, this is apparently required by some machines. 12962 12963When sleeping, clear the wake status only if SleepState is not S5. 12964 12965Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 12966pointer arithmetic advanced a string pointer too far. 12967 12968Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 12969could be returned if the requested table has not been loaded. 12970 12971Within the support for IRQ resources, restructured the handling of 12972the active and edge/level bits. 12973 12974Fixed a few problems in AcpiPsxExecute() where memory could be 12975leaked under certain error conditions. 12976 12977Improved error messages for the cases where the ACPI mode could 12978not be entered. 12979 12980Code and Data Size: Current and previous core subsystem library 12981sizes are shown below. These are the code and data sizes for the 12982acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 12983these values do not include any ACPI driver or OSPM code. The 12984debug version of the code includes the debug output trace 12985mechanism and has a much larger code and data size. Note that 12986these values will vary depending on the efficiency of the compiler 12987and the compiler options used during generation. 12988 12989 Previous Release (20031029): 12990 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 12991 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 12992 Current Release: 12993 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 12994 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 12995 129962) iASL Compiler/Disassembler: 12997 12998Implemented a fix for the iASL disassembler where a bad index was 12999generated. This was most noticeable on 64-bit platforms 13000 13001 13002---------------------------------------- 1300329 October 2003. Summary of changes for version 20031029: 13004 130051) ACPI CA Core Subsystem: 13006 13007 13008Fixed a problem where a level-triggered GPE with an associated 13009_Lxx control method was incorrectly cleared twice. 13010 13011Fixed a problem with the Field support code where an access can 13012occur beyond the end-of-region if the field is non-aligned but 13013extends to the very end of the parent region (resulted in an 13014AE_AML_REGION_LIMIT exception.) 13015 13016Fixed a problem with ACPI Fixed Events where an RT Clock handler 13017would not get invoked on an RTC event. The RTC event bitmasks for 13018the PM1 registers were not being initialized properly. 13019 13020Implemented support for executing _STA and _INI methods for 13021Processor objects. Although this is currently not part of the 13022ACPI specification, there is existing ASL code that depends on the 13023init-time execution of these methods. 13024 13025Implemented and deployed a GetDescriptorName function to decode 13026the various types of internal descriptors. Guards against null 13027descriptors during debug output also. 13028 13029Implemented and deployed a GetNodeName function to extract the 4- 13030character namespace node name. This function simplifies the debug 13031and error output, as well as guarding against null pointers during 13032output. 13033 13034Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 13035simplify the debug and error output of 64-bit integers. This 13036macro replaces the HIDWORD and LODWORD macros for dumping these 13037integers. 13038 13039Updated the implementation of the Stall() operator to only call 13040AcpiOsStall(), and also return an error if the operand is larger 13041than 255. This preserves the required behavior of not 13042relinquishing the processor, as would happen if AcpiOsSleep() was 13043called for "long stalls". 13044 13045Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 13046initialized are now treated as NOOPs. 13047 13048Cleaned up a handful of warnings during 64-bit generation. 13049 13050Fixed a reported error where and incorrect GPE number was passed 13051to the GPE dispatch handler. This value is only used for error 13052output, however. Used this opportunity to clean up and streamline 13053the GPE dispatch code. 13054 13055Code and Data Size: Current and previous core subsystem library 13056sizes are shown below. These are the code and data sizes for the 13057acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13058these values do not include any ACPI driver or OSPM code. The 13059 13060debug version of the code includes the debug output trace 13061mechanism and has a much larger code and data size. Note that 13062these values will vary depending on the efficiency of the compiler 13063and the compiler options used during generation. 13064 13065 Previous Release (20031002): 13066 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 13067 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 13068 Current Release: 13069 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 13070 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 13071 13072 130732) iASL Compiler/Disassembler: 13074 13075Updated the iASL compiler to return an error if the operand to the 13076Stall() operator is larger than 255. 13077 13078 13079---------------------------------------- 1308002 October 2003. Summary of changes for version 20031002: 13081 13082 130831) ACPI CA Core Subsystem: 13084 13085Fixed a problem with Index Fields where the index was not 13086incremented for fields that require multiple writes to the 13087index/data registers (Fields that are wider than the data 13088register.) 13089 13090Fixed a problem with all Field objects where a write could go 13091beyond the end-of-field if the field was larger than the access 13092granularity and therefore required multiple writes to complete the 13093request. An extra write beyond the end of the field could happen 13094inadvertently. 13095 13096Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 13097would incorrectly be returned if the width of the Data Register 13098was larger than the specified field access width. 13099 13100Completed fixes for LoadTable() and Unload() and verified their 13101operation. Implemented full support for the "DdbHandle" object 13102throughout the ACPI CA subsystem. 13103 13104Implemented full support for the MADT and ECDT tables in the ACPI 13105CA header files. Even though these tables are not directly 13106consumed by ACPI CA, the header definitions are useful for ACPI 13107device drivers. 13108 13109Integrated resource descriptor fixes posted to the Linux ACPI 13110list. This included checks for minimum descriptor length, and 13111support for trailing NULL strings within descriptors that have 13112optional string elements. 13113 13114Code and Data Size: Current and previous core subsystem library 13115sizes are shown below. These are the code and data sizes for the 13116acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13117these values do not include any ACPI driver or OSPM code. The 13118debug version of the code includes the debug output trace 13119mechanism and has a much larger code and data size. Note that 13120these values will vary depending on the efficiency of the compiler 13121and the compiler options used during generation. 13122 13123 Previous Release (20030918): 13124 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 13125 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 13126 Current Release: 13127 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 13128 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 13129 13130 131312) iASL Compiler: 13132 13133Implemented detection of non-ASCII characters within the input 13134source ASL file. This catches attempts to compile binary (AML) 13135files early in the compile, with an informative error message. 13136 13137Fixed a problem where the disassembler would fault if the output 13138filename could not be generated or if the output file could not be 13139opened. 13140 13141---------------------------------------- 1314218 September 2003. Summary of changes for version 20030918: 13143 13144 131451) ACPI CA Core Subsystem: 13146 13147Found and fixed a longstanding problem with the late execution of 13148the various deferred AML opcodes (such as Operation Regions, 13149Buffer Fields, Buffers, and Packages). If the name string 13150specified for the name of the new object placed the object in a 13151scope other than the current scope, the initialization/execution 13152of the opcode failed. The solution to this problem was to 13153implement a mechanism where the late execution of such opcodes 13154does not attempt to lookup/create the name a second time in an 13155incorrect scope. This fixes the "region size computed 13156incorrectly" problem. 13157 13158Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 13159Global Lock AE_BAD_PARAMETER error. 13160 13161Fixed several 64-bit issues with prototypes, casting and data 13162types. 13163 13164Removed duplicate prototype from acdisasm.h 13165 13166Fixed an issue involving EC Operation Region Detach (Shaohua Li) 13167 13168Code and Data Size: Current and previous core subsystem library 13169sizes are shown below. These are the code and data sizes for the 13170acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13171these values do not include any ACPI driver or OSPM code. The 13172debug version of the code includes the debug output trace 13173mechanism and has a much larger code and data size. Note that 13174these values will vary depending on the efficiency of the compiler 13175and the compiler options used during generation. 13176 13177 Previous Release: 13178 13179 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 13180 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 13181 Current Release: 13182 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 13183 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 13184 13185 131862) Linux: 13187 13188Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 13189correct sleep time in seconds. 13190 13191---------------------------------------- 1319214 July 2003. Summary of changes for version 20030619: 13193 131941) ACPI CA Core Subsystem: 13195 13196Parse SSDTs in order discovered, as opposed to reverse order 13197(Hrvoje Habjanic) 13198 13199Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 13200Klausner, 13201 Nate Lawson) 13202 13203 132042) Linux: 13205 13206Dynamically allocate SDT list (suggested by Andi Kleen) 13207 13208proc function return value cleanups (Andi Kleen) 13209 13210Correctly handle NMI watchdog during long stalls (Andrew Morton) 13211 13212Make it so acpismp=force works (reported by Andrew Morton) 13213 13214 13215---------------------------------------- 1321619 June 2003. Summary of changes for version 20030619: 13217 132181) ACPI CA Core Subsystem: 13219 13220Fix To/FromBCD, eliminating the need for an arch-specific #define. 13221 13222Do not acquire a semaphore in the S5 shutdown path. 13223 13224Fix ex_digits_needed for 0. (Takayoshi Kochi) 13225 13226Fix sleep/stall code reversal. (Andi Kleen) 13227 13228Revert a change having to do with control method calling 13229semantics. 13230 132312) Linux: 13232 13233acpiphp update (Takayoshi Kochi) 13234 13235Export acpi_disabled for sonypi (Stelian Pop) 13236 13237Mention acpismp=force in config help 13238 13239Re-add acpitable.c and acpismp=force. This improves backwards 13240 13241compatibility and also cleans up the code to a significant degree. 13242 13243Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 13244 13245---------------------------------------- 1324622 May 2003. Summary of changes for version 20030522: 13247 132481) ACPI CA Core Subsystem: 13249 13250Found and fixed a reported problem where an AE_NOT_FOUND error 13251occurred occasionally during _BST evaluation. This turned out to 13252be an Owner ID allocation issue where a called method did not get 13253a new ID assigned to it. Eventually, (after 64k calls), the Owner 13254ID UINT16 would wraparound so that the ID would be the same as the 13255caller's and the called method would delete the caller's 13256namespace. 13257 13258Implemented extended error reporting for control methods that are 13259aborted due to a run-time exception. Output includes the exact 13260AML instruction that caused the method abort, a dump of the method 13261locals and arguments at the time of the abort, and a trace of all 13262nested control method calls. 13263 13264Modified the interpreter to allow the creation of buffers of zero 13265length from the AML code. Implemented new code to ensure that no 13266attempt is made to actually allocate a memory buffer (of length 13267zero) - instead, a simple buffer object with a NULL buffer pointer 13268and length zero is created. A warning is no longer issued when 13269the AML attempts to create a zero-length buffer. 13270 13271Implemented a workaround for the "leading asterisk issue" in 13272_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 13273asterisk is automatically removed if present in any HID, UID, or 13274CID strings. The iASL compiler will still flag this asterisk as 13275an error, however. 13276 13277Implemented full support for _CID methods that return a package of 13278multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 13279now additionally returns a device _CID list if present. This 13280required a change to the external interface in order to pass an 13281ACPI_BUFFER object as a parameter since the _CID list is of 13282variable length. 13283 13284Fixed a problem with the new AE_SAME_HANDLER exception where 13285handler initialization code did not know about this exception. 13286 13287Code and Data Size: Current and previous core subsystem library 13288sizes are shown below. These are the code and data sizes for the 13289acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13290these values do not include any ACPI driver or OSPM code. The 13291debug version of the code includes the debug output trace 13292mechanism and has a much larger code and data size. Note that 13293these values will vary depending on the efficiency of the compiler 13294and the compiler options used during generation. 13295 13296 Previous Release (20030509): 13297 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 13298 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 13299 Current Release: 13300 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 13301 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 13302 13303 133042) Linux: 13305 13306Fixed a bug in which we would reinitialize the ACPI interrupt 13307after it was already working, thus disabling all ACPI and the IRQs 13308for any other device sharing the interrupt. (Thanks to Stian 13309Jordet) 13310 13311Toshiba driver update (John Belmonte) 13312 13313Return only 0 or 1 for our interrupt handler status (Andrew 13314Morton) 13315 13316 133173) iASL Compiler: 13318 13319Fixed a reported problem where multiple (nested) ElseIf() 13320statements were not handled correctly by the compiler, resulting 13321in incorrect warnings and incorrect AML code. This was a problem 13322in both the ASL parser and the code generator. 13323 13324 133254) Documentation: 13326 13327Added changes to existing interfaces, new exception codes, and new 13328text concerning reference count object management versus garbage 13329collection. 13330 13331---------------------------------------- 1333209 May 2003. Summary of changes for version 20030509. 13333 13334 133351) ACPI CA Core Subsystem: 13336 13337Changed the subsystem initialization sequence to hold off 13338installation of address space handlers until the hardware has been 13339initialized and the system has entered ACPI mode. This is because 13340the installation of space handlers can cause _REG methods to be 13341run. Previously, the _REG methods could potentially be run before 13342ACPI mode was enabled. 13343 13344Fixed some memory leak issues related to address space handler and 13345notify handler installation. There were some problems with the 13346reference count mechanism caused by the fact that the handler 13347objects are shared across several namespace objects. 13348 13349Fixed a reported problem where reference counts within the 13350namespace were not properly updated when named objects created by 13351method execution were deleted. 13352 13353Fixed a reported problem where multiple SSDTs caused a deletion 13354issue during subsystem termination. Restructured the table data 13355structures to simplify the linked lists and the related code. 13356 13357Fixed a problem where the table ID associated with secondary 13358tables (SSDTs) was not being propagated into the namespace objects 13359created by those tables. This would only present a problem for 13360tables that are unloaded at run-time, however. 13361 13362Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 13363type as the length parameter (instead of UINT32). 13364 13365Solved a long-standing problem where an ALREADY_EXISTS error 13366appears on various systems. This problem could happen when there 13367are multiple PCI_Config operation regions under a single PCI root 13368bus. This doesn't happen very frequently, but there are some 13369systems that do this in the ASL. 13370 13371Fixed a reported problem where the internal DeleteNode function 13372was incorrectly handling the case where a namespace node was the 13373first in the parent's child list, and had additional peers (not 13374the only child, but first in the list of children.) 13375 13376Code and Data Size: Current core subsystem library sizes are shown 13377below. These are the code and data sizes for the acpica.lib 13378produced by the Microsoft Visual C++ 6.0 compiler, and these 13379values do not include any ACPI driver or OSPM code. The debug 13380version of the code includes the debug output trace mechanism and 13381has a much larger code and data size. Note that these values will 13382vary depending on the efficiency of the compiler and the compiler 13383options used during generation. 13384 13385 Previous Release 13386 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 13387 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 13388 Current Release: 13389 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 13390 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 13391 13392 133932) Linux: 13394 13395Allow ":" in OS override string (Ducrot Bruno) 13396 13397Kobject fix (Greg KH) 13398 13399 134003 iASL Compiler/Disassembler: 13401 13402Fixed a problem in the generation of the C source code files (AML 13403is emitted in C source statements for BIOS inclusion) where the 13404Ascii dump that appears within a C comment at the end of each line 13405could cause a compile time error if the AML sequence happens to 13406have an open comment or close comment sequence embedded. 13407 13408 13409---------------------------------------- 1341024 April 2003. Summary of changes for version 20030424. 13411 13412 134131) ACPI CA Core Subsystem: 13414 13415Support for big-endian systems has been implemented. Most of the 13416support has been invisibly added behind big-endian versions of the 13417ACPI_MOVE_* macros. 13418 13419Fixed a problem in AcpiHwDisableGpeBlock() and 13420AcpiHwClearGpeBlock() where an incorrect offset was passed to the 13421low level hardware write routine. The offset parameter was 13422actually eliminated from the low level read/write routines because 13423they had become obsolete. 13424 13425Fixed a problem where a handler object was deleted twice during 13426the removal of a fixed event handler. 13427 13428 134292) Linux: 13430 13431A fix for SMP systems with link devices was contributed by 13432 13433Compaq's Dan Zink. 13434 13435(2.5) Return whether we handled the interrupt in our IRQ handler. 13436(Linux ISRs no longer return void, so we can propagate the handler 13437return value from the ACPI CA core back to the OS.) 13438 13439 13440 134413) Documentation: 13442 13443The ACPI CA Programmer Reference has been updated to reflect new 13444interfaces and changes to existing interfaces. 13445 13446---------------------------------------- 1344728 March 2003. Summary of changes for version 20030328. 13448 134491) ACPI CA Core Subsystem: 13450 13451The GPE Block Device support has been completed. New interfaces 13452are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 13453interfaces (enable, disable, clear, getstatus) have been split 13454into separate interfaces for Fixed Events and General Purpose 13455Events (GPEs) in order to support GPE Block Devices properly. 13456 13457Fixed a problem where the error message "Failed to acquire 13458semaphore" would appear during operations on the embedded 13459controller (EC). 13460 13461Code and Data Size: Current core subsystem library sizes are shown 13462below. These are the code and data sizes for the acpica.lib 13463produced by the Microsoft Visual C++ 6.0 compiler, and these 13464values do not include any ACPI driver or OSPM code. The debug 13465version of the code includes the debug output trace mechanism and 13466has a much larger code and data size. Note that these values will 13467vary depending on the efficiency of the compiler and the compiler 13468options used during generation. 13469 13470 Previous Release 13471 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 13472 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 13473 Current Release: 13474 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 13475 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 13476 13477 13478---------------------------------------- 1347928 February 2003. Summary of changes for version 20030228. 13480 13481 134821) ACPI CA Core Subsystem: 13483 13484The GPE handling and dispatch code has been completely overhauled 13485in preparation for support of GPE Block Devices (ID ACPI0006). 13486This affects internal data structures and code only; there should 13487be no differences visible externally. One new file has been 13488added, evgpeblk.c 13489 13490The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 13491fields that are used to determine the GPE block lengths. The 13492REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 13493structures are ignored. This is per the ACPI specification but it 13494isn't very clear. The full 256 Block 0/1 GPEs are now supported 13495(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 13496 13497In the SCI interrupt handler, removed the read of the PM1_CONTROL 13498register to look at the SCI_EN bit. On some machines, this read 13499causes an SMI event and greatly slows down SCI events. (This may 13500in fact be the cause of slow battery status response on some 13501systems.) 13502 13503Fixed a problem where a store of a NULL string to a package object 13504could cause the premature deletion of the object. This was seen 13505during execution of the battery _BIF method on some systems, 13506resulting in no battery data being returned. 13507 13508Added AcpiWalkResources interface to simplify parsing of resource 13509lists. 13510 13511Code and Data Size: Current core subsystem library sizes are shown 13512below. These are the code and data sizes for the acpica.lib 13513produced by the Microsoft Visual C++ 6.0 compiler, and these 13514values do not include any ACPI driver or OSPM code. The debug 13515version of the code includes the debug output trace mechanism and 13516has a much larger code and data size. Note that these values will 13517vary depending on the efficiency of the compiler and the compiler 13518options used during generation. 13519 13520 Previous Release 13521 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13522 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13523 Current Release: 13524 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 13525 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 13526 13527 135282) Linux 13529 13530S3 fixes (Ole Rohne) 13531 13532Update ACPI PHP driver with to use new acpi_walk_resource API 13533(Bjorn Helgaas) 13534 13535Add S4BIOS support (Pavel Machek) 13536 13537Map in entire table before performing checksum (John Stultz) 13538 13539Expand the mem= cmdline to allow the specification of reserved and 13540ACPI DATA blocks (Pavel Machek) 13541 13542Never use ACPI on VISWS 13543 13544Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 13545 13546Revert a change that allowed P_BLK lengths to be 4 or 5. This is 13547causing us to think that some systems support C2 when they really 13548don't. 13549 13550Do not count processor objects for non-present CPUs (Thanks to 13551Dominik Brodowski) 13552 13553 135543) iASL Compiler: 13555 13556Fixed a problem where ASL include files could not be found and 13557opened. 13558 13559Added support for the _PDC reserved name. 13560 13561 13562---------------------------------------- 1356322 January 2003. Summary of changes for version 20030122. 13564 13565 135661) ACPI CA Core Subsystem: 13567 13568Added a check for constructs of the form: Store (Local0, Local0) 13569where Local0 is not initialized. Apparently, some BIOS 13570programmers believe that this is a NOOP. Since this store doesn't 13571do anything anyway, the new prototype behavior will ignore this 13572error. This is a case where we can relax the strict checking in 13573the interpreter in the name of compatibility. 13574 13575 135762) Linux 13577 13578The AcpiSrc Source Conversion Utility has been released with the 13579Linux package for the first time. This is the utility that is 13580used to convert the ACPI CA base source code to the Linux version. 13581 13582(Both) Handle P_BLK lengths shorter than 6 more gracefully 13583 13584(Both) Move more headers to include/acpi, and delete an unused 13585header. 13586 13587(Both) Move drivers/acpi/include directory to include/acpi 13588 13589(Both) Boot functions don't use cmdline, so don't pass it around 13590 13591(Both) Remove include of unused header (Adrian Bunk) 13592 13593(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 13594the 13595former now also includes the latter, acpiphp.h only needs the one, 13596now. 13597 13598(2.5) Make it possible to select method of bios restoring after S3 13599resume. [=> no more ugly ifdefs] (Pavel Machek) 13600 13601(2.5) Make proc write interfaces work (Pavel Machek) 13602 13603(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 13604 13605(2.5) Break out ACPI Perf code into its own module, under cpufreq 13606(Dominik Brodowski) 13607 13608(2.4) S4BIOS support (Ducrot Bruno) 13609 13610(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 13611Visinoni) 13612 13613 136143) iASL Compiler: 13615 13616Added support to disassemble SSDT and PSDTs. 13617 13618Implemented support to obtain SSDTs from the Windows registry if 13619available. 13620 13621 13622---------------------------------------- 1362309 January 2003. Summary of changes for version 20030109. 13624 136251) ACPI CA Core Subsystem: 13626 13627Changed the behavior of the internal Buffer-to-String conversion 13628function. The current ACPI specification states that the contents 13629of the buffer are "converted to a string of two-character 13630hexadecimal numbers, each separated by a space". Unfortunately, 13631this definition is not backwards compatible with existing ACPI 1.0 13632implementations (although the behavior was not defined in the ACPI 136331.0 specification). The new behavior simply copies data from the 13634buffer to the string until a null character is found or the end of 13635the buffer is reached. The new String object is always null 13636terminated. This problem was seen during the generation of _BIF 13637battery data where incorrect strings were returned for battery 13638type, etc. This will also require an errata to the ACPI 13639specification. 13640 13641Renamed all instances of NATIVE_UINT and NATIVE_INT to 13642ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 13643 13644Copyright in all module headers (both Linux and non-Linux) has be 13645updated to 2003. 13646 13647Code and Data Size: Current core subsystem library sizes are shown 13648below. These are the code and data sizes for the acpica.lib 13649produced by the Microsoft Visual C++ 6.0 compiler, and these 13650values do not include any ACPI driver or OSPM code. The debug 13651version of the code includes the debug output trace mechanism and 13652has a much larger code and data size. Note that these values will 13653vary depending on the efficiency of the compiler and the compiler 13654options used during generation. 13655 13656 Previous Release 13657 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13658 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13659 Current Release: 13660 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13661 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13662 13663 136642) Linux 13665 13666Fixed an oops on module insertion/removal (Matthew Tippett) 13667 13668(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 13669 13670(2.5) Replace pr_debug (Randy Dunlap) 13671 13672(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 13673 13674(Both) Eliminate spawning of thread from timer callback, in favor 13675of schedule_work() 13676 13677(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 13678 13679(Both) Added define for Fixed Function HW region (Matthew Wilcox) 13680 13681(Both) Add missing statics to button.c (Pavel Machek) 13682 13683Several changes have been made to the source code translation 13684utility that generates the Linux Code in order to make the code 13685more "Linux-like": 13686 13687All typedefs on structs and unions have been removed in keeping 13688with the Linux coding style. 13689 13690Removed the non-Linux SourceSafe module revision number from each 13691module header. 13692 13693Completed major overhaul of symbols to be lowercased for linux. 13694Doubled the number of symbols that are lowercased. 13695 13696Fixed a problem where identifiers within procedure headers and 13697within quotes were not fully lower cased (they were left with a 13698starting capital.) 13699 13700Some C macros whose only purpose is to allow the generation of 16- 13701bit code are now completely removed in the Linux code, increasing 13702readability and maintainability. 13703 13704---------------------------------------- 13705 1370612 December 2002. Summary of changes for version 20021212. 13707 13708 137091) ACPI CA Core Subsystem: 13710 13711Fixed a problem where the creation of a zero-length AML Buffer 13712would cause a fault. 13713 13714Fixed a problem where a Buffer object that pointed to a static AML 13715buffer (in an ACPI table) could inadvertently be deleted, causing 13716memory corruption. 13717 13718Fixed a problem where a user buffer (passed in to the external 13719ACPI CA interfaces) could be overwritten if the buffer was too 13720small to complete the operation, causing memory corruption. 13721 13722Fixed a problem in the Buffer-to-String conversion code where a 13723string of length one was always returned, regardless of the size 13724of the input Buffer object. 13725 13726Removed the NATIVE_CHAR data type across the entire source due to 13727lack of need and lack of consistent use. 13728 13729Code and Data Size: Current core subsystem library sizes are shown 13730below. These are the code and data sizes for the acpica.lib 13731produced by the Microsoft Visual C++ 6.0 compiler, and these 13732values do not include any ACPI driver or OSPM code. The debug 13733version of the code includes the debug output trace mechanism and 13734has a much larger code and data size. Note that these values will 13735vary depending on the efficiency of the compiler and the compiler 13736options used during generation. 13737 13738 Previous Release 13739 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 13740 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 13741 Current Release: 13742 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13743 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13744 13745 13746---------------------------------------- 1374705 December 2002. Summary of changes for version 20021205. 13748 137491) ACPI CA Core Subsystem: 13750 13751Fixed a problem where a store to a String or Buffer object could 13752cause corruption of the DSDT if the object type being stored was 13753the same as the target object type and the length of the object 13754being stored was equal to or smaller than the original (existing) 13755target object. This was seen to cause corruption of battery _BIF 13756buffers if the _BIF method modified the buffer on the fly. 13757 13758Fixed a problem where an internal error was generated if a control 13759method invocation was used in an OperationRegion, Buffer, or 13760Package declaration. This was caused by the deferred parsing of 13761the control method and thus the deferred creation of the internal 13762method object. The solution to this problem was to create the 13763internal method object at the moment the method is encountered in 13764the first pass - so that subsequent references to the method will 13765able to obtain the required parameter count and thus properly 13766parse the method invocation. This problem presented itself as an 13767AE_AML_INTERNAL during the pass 1 parse phase during table load. 13768 13769Fixed a problem where the internal String object copy routine did 13770not always allocate sufficient memory for the target String object 13771and caused memory corruption. This problem was seen to cause 13772"Allocation already present in list!" errors as memory allocation 13773became corrupted. 13774 13775Implemented a new function for the evaluation of namespace objects 13776that allows the specification of the allowable return object 13777types. This simplifies a lot of code that checks for a return 13778object of one or more specific objects returned from the 13779evaluation (such as _STA, etc.) This may become and external 13780function if it would be useful to ACPI-related drivers. 13781 13782Completed another round of prefixing #defines with "ACPI_" for 13783clarity. 13784 13785Completed additional code restructuring to allow more modular 13786linking for iASL compiler and AcpiExec. Several files were split 13787creating new files. New files: nsparse.c dsinit.c evgpe.c 13788 13789Implemented an abort mechanism to terminate an executing control 13790method via the AML debugger. This feature is useful for debugging 13791control methods that depend (wait) for specific hardware 13792responses. 13793 13794Code and Data Size: Current core subsystem library sizes are shown 13795below. These are the code and data sizes for the acpica.lib 13796produced by the Microsoft Visual C++ 6.0 compiler, and these 13797values do not include any ACPI driver or OSPM code. The debug 13798version of the code includes the debug output trace mechanism and 13799has a much larger code and data size. Note that these values will 13800vary depending on the efficiency of the compiler and the compiler 13801options used during generation. 13802 13803 Previous Release 13804 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13805 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 13806 Current Release: 13807 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 13808 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 13809 13810 138112) iASL Compiler/Disassembler 13812 13813Fixed a compiler code generation problem for "Interrupt" Resource 13814Descriptors. If specified in the ASL, the optional "Resource 13815Source Index" and "Resource Source" fields were not inserted into 13816the correct location within the AML resource descriptor, creating 13817an invalid descriptor. 13818 13819Fixed a disassembler problem for "Interrupt" resource descriptors. 13820The optional "Resource Source Index" and "Resource Source" fields 13821were ignored. 13822 13823 13824---------------------------------------- 1382522 November 2002. Summary of changes for version 20021122. 13826 13827 138281) ACPI CA Core Subsystem: 13829 13830Fixed a reported problem where an object stored to a Method Local 13831or Arg was not copied to a new object during the store - the 13832object pointer was simply copied to the Local/Arg. This caused 13833all subsequent operations on the Local/Arg to also affect the 13834original source of the store operation. 13835 13836Fixed a problem where a store operation to a Method Local or Arg 13837was not completed properly if the Local/Arg contained a reference 13838(from RefOf) to a named field. The general-purpose store-to- 13839namespace-node code is now used so that this case is handled 13840automatically. 13841 13842Fixed a problem where the internal object copy routine would cause 13843a protection fault if the object being copied was a Package and 13844contained either 1) a NULL package element or 2) a nested sub- 13845package. 13846 13847Fixed a problem with the GPE initialization that resulted from an 13848ambiguity in the ACPI specification. One section of the 13849specification states that both the address and length of the GPE 13850block must be zero if the block is not supported. Another section 13851implies that only the address need be zero if the block is not 13852supported. The code has been changed so that both the address and 13853the length must be non-zero to indicate a valid GPE block (i.e., 13854if either the address or the length is zero, the GPE block is 13855invalid.) 13856 13857Code and Data Size: Current core subsystem library sizes are shown 13858below. These are the code and data sizes for the acpica.lib 13859produced by the Microsoft Visual C++ 6.0 compiler, and these 13860values do not include any ACPI driver or OSPM code. The debug 13861version of the code includes the debug output trace mechanism and 13862has a much larger code and data size. Note that these values will 13863vary depending on the efficiency of the compiler and the compiler 13864options used during generation. 13865 13866 Previous Release 13867 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 13868 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 13869 Current Release: 13870 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13871 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 13872 13873 138742) Linux 13875 13876Cleaned up EC driver. Exported an external EC read/write 13877interface. By going through this, other drivers (most notably 13878sonypi) will be able to serialize access to the EC. 13879 13880 138813) iASL Compiler/Disassembler 13882 13883Implemented support to optionally generate include files for both 13884ASM and C (the -i switch). This simplifies BIOS development by 13885automatically creating include files that contain external 13886declarations for the symbols that are created within the 13887 13888(optionally generated) ASM and C AML source files. 13889 13890 13891---------------------------------------- 1389215 November 2002. Summary of changes for version 20021115. 13893 138941) ACPI CA Core Subsystem: 13895 13896Fixed a memory leak problem where an error during resolution of 13897 13898method arguments during a method invocation from another method 13899failed to cleanup properly by deleting all successfully resolved 13900argument objects. 13901 13902Fixed a problem where the target of the Index() operator was not 13903correctly constructed if the source object was a package. This 13904problem has not been detected because the use of a target operand 13905with Index() is very rare. 13906 13907Fixed a problem with the Index() operator where an attempt was 13908made to delete the operand objects twice. 13909 13910Fixed a problem where an attempt was made to delete an operand 13911twice during execution of the CondRefOf() operator if the target 13912did not exist. 13913 13914Implemented the first of perhaps several internal create object 13915functions that create and initialize a specific object type. This 13916consolidates duplicated code wherever the object is created, thus 13917shrinking the size of the subsystem. 13918 13919Implemented improved debug/error messages for errors that occur 13920during nested method invocations. All executing method pathnames 13921are displayed (with the error) as the call stack is unwound - thus 13922simplifying debug. 13923 13924Fixed a problem introduced in the 10/02 release that caused 13925premature deletion of a buffer object if a buffer was used as an 13926ASL operand where an integer operand is required (Thus causing an 13927implicit object conversion from Buffer to Integer.) The change in 13928the 10/02 release was attempting to fix a memory leak (albeit 13929incorrectly.) 13930 13931Code and Data Size: Current core subsystem library sizes are shown 13932below. These are the code and data sizes for the acpica.lib 13933produced by the Microsoft Visual C++ 6.0 compiler, and these 13934values do not include any ACPI driver or OSPM code. The debug 13935version of the code includes the debug output trace mechanism and 13936has a much larger code and data size. Note that these values will 13937vary depending on the efficiency of the compiler and the compiler 13938options used during generation. 13939 13940 Previous Release 13941 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 13942 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 13943 Current Release: 13944 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 13945 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 13946 13947 139482) Linux 13949 13950Changed the implementation of the ACPI semaphores to use down() 13951instead of down_interruptable(). It is important that the 13952execution of ACPI control methods not be interrupted by signals. 13953Methods must run to completion, or the system may be left in an 13954unknown/unstable state. 13955 13956Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 13957(Shawn Starr) 13958 13959 139603) iASL Compiler/Disassembler 13961 13962 13963Changed the default location of output files. All output files 13964are now placed in the current directory by default instead of in 13965the directory of the source file. This change may affect some 13966existing makefiles, but it brings the behavior of the compiler in 13967line with other similar tools. The location of the output files 13968can be overridden with the -p command line switch. 13969 13970 13971---------------------------------------- 1397211 November 2002. Summary of changes for version 20021111. 13973 13974 139750) ACPI Specification 2.0B is released and is now available at: 13976http://www.acpi.info/index.html 13977 13978 139791) ACPI CA Core Subsystem: 13980 13981Implemented support for the ACPI 2.0 SMBus Operation Regions. 13982This includes the early detection and handoff of the request to 13983the SMBus region handler (avoiding all of the complex field 13984support code), and support for the bidirectional return packet 13985from an SMBus write operation. This paves the way for the 13986development of SMBus drivers in each host operating system. 13987 13988Fixed a problem where the semaphore WAIT_FOREVER constant was 13989defined as 32 bits, but must be 16 bits according to the ACPI 13990specification. This had the side effect of causing ASL 13991Mutex/Event timeouts even though the ASL code requested a wait 13992forever. Changed all internal references to the ACPI timeout 13993parameter to 16 bits to prevent future problems. Changed the name 13994of WAIT_FOREVER to ACPI_WAIT_FOREVER. 13995 13996Code and Data Size: Current core subsystem library sizes are shown 13997below. These are the code and data sizes for the acpica.lib 13998produced by the Microsoft Visual C++ 6.0 compiler, and these 13999values do not include any ACPI driver or OSPM code. The debug 14000version of the code includes the debug output trace mechanism and 14001has a much larger code and data size. Note that these values will 14002vary depending on the efficiency of the compiler and the compiler 14003options used during generation. 14004 14005 Previous Release 14006 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14007 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 14008 Current Release: 14009 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 14010 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 14011 14012 140132) Linux 14014 14015Module loading/unloading fixes (John Cagle) 14016 14017 140183) iASL Compiler/Disassembler 14019 14020Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 14021 14022Implemented support for the disassembly of all SMBus protocol 14023keywords (SMBQuick, SMBWord, etc.) 14024 14025---------------------------------------- 1402601 November 2002. Summary of changes for version 20021101. 14027 14028 140291) ACPI CA Core Subsystem: 14030 14031Fixed a problem where platforms that have a GPE1 block but no GPE0 14032block were not handled correctly. This resulted in a "GPE 14033overlap" error message. GPE0 is no longer required. 14034 14035Removed code added in the previous release that inserted nodes 14036into the namespace in alphabetical order. This caused some side- 14037effects on various machines. The root cause of the problem is 14038still under investigation since in theory, the internal ordering 14039of the namespace nodes should not matter. 14040 14041 14042Enhanced error reporting for the case where a named object is not 14043found during control method execution. The full ACPI namepath 14044(name reference) of the object that was not found is displayed in 14045this case. 14046 14047Note: as a result of the overhaul of the namespace object types in 14048the previous release, the namespace nodes for the predefined 14049scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 14050instead of ACPI_TYPE_ANY. This simplifies the namespace 14051management code but may affect code that walks the namespace tree 14052looking for specific object types. 14053 14054Code and Data Size: Current core subsystem library sizes are shown 14055below. These are the code and data sizes for the acpica.lib 14056produced by the Microsoft Visual C++ 6.0 compiler, and these 14057values do not include any ACPI driver or OSPM code. The debug 14058version of the code includes the debug output trace mechanism and 14059has a much larger code and data size. Note that these values will 14060vary depending on the efficiency of the compiler and the compiler 14061options used during generation. 14062 14063 Previous Release 14064 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 14065 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 14066 Current Release: 14067 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14068 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 14069 14070 140712) Linux 14072 14073Fixed a problem introduced in the previous release where the 14074Processor and Thermal objects were not recognized and installed in 14075/proc. This was related to the scope type change described above. 14076 14077 140783) iASL Compiler/Disassembler 14079 14080Implemented the -g option to get all of the required ACPI tables 14081from the registry and save them to files (Windows version of the 14082compiler only.) The required tables are the FADT, FACS, and DSDT. 14083 14084Added ACPI table checksum validation during table disassembly in 14085order to catch corrupted tables. 14086 14087 14088---------------------------------------- 1408922 October 2002. Summary of changes for version 20021022. 14090 140911) ACPI CA Core Subsystem: 14092 14093Implemented a restriction on the Scope operator that the target 14094must already exist in the namespace at the time the operator is 14095encountered (during table load or method execution). In other 14096words, forward references are not allowed and Scope() cannot 14097create a new object. This changes the previous behavior where the 14098interpreter would create the name if not found. This new behavior 14099correctly enables the search-to-root algorithm during namespace 14100lookup of the target name. Because of this upsearch, this fixes 14101the known Compaq _SB_.OKEC problem and makes both the AML 14102interpreter and iASL compiler compatible with other ACPI 14103implementations. 14104 14105Completed a major overhaul of the internal ACPI object types for 14106the ACPI Namespace and the associated operand objects. Many of 14107these types had become obsolete with the introduction of the two- 14108pass namespace load. This cleanup simplifies the code and makes 14109the entire namespace load mechanism much clearer and easier to 14110understand. 14111 14112Improved debug output for tracking scope opening/closing to help 14113diagnose scoping issues. The old scope name as well as the new 14114scope name are displayed. Also improved error messages for 14115problems with ASL Mutex objects and error messages for GPE 14116problems. 14117 14118Cleaned up the namespace dump code, removed obsolete code. 14119 14120All string output (for all namespace/object dumps) now uses the 14121common ACPI string output procedure which handles escapes properly 14122and does not emit non-printable characters. 14123 14124Fixed some issues with constants in the 64-bit version of the 14125local C library (utclib.c) 14126 14127 141282) Linux 14129 14130EC Driver: No longer attempts to acquire the Global Lock at 14131interrupt level. 14132 14133 141343) iASL Compiler/Disassembler 14135 14136Implemented ACPI 2.0B grammar change that disallows all Type 1 and 141372 opcodes outside of a control method. This means that the 14138"executable" operators (versus the "namespace" operators) cannot 14139be used at the table level; they can only be used within a control 14140method. 14141 14142Implemented the restriction on the Scope() operator where the 14143target must already exist in the namespace at the time the 14144operator is encountered (during ASL compilation). In other words, 14145forward references are not allowed and Scope() cannot create a new 14146object. This makes the iASL compiler compatible with other ACPI 14147implementations and makes the Scope() implementation adhere to the 14148ACPI specification. 14149 14150Fixed a problem where namepath optimization for the Alias operator 14151was optimizing the wrong path (of the two namepaths.) This caused 14152a "Missing alias link" error message. 14153 14154Fixed a problem where an "unknown reserved name" warning could be 14155incorrectly generated for names like "_SB" when the trailing 14156underscore is not used in the original ASL. 14157 14158Fixed a problem where the reserved name check did not handle 14159NamePaths with multiple NameSegs correctly. The first nameseg of 14160the NamePath was examined instead of the last NameSeg. 14161 14162 14163---------------------------------------- 14164 1416502 October 2002. Summary of changes for this release. 14166 14167 141681) ACPI CA Core Subsystem version 20021002: 14169 14170Fixed a problem where a store/copy of a string to an existing 14171string did not always set the string length properly in the String 14172object. 14173 14174Fixed a reported problem with the ToString operator where the 14175behavior was identical to the ToHexString operator instead of just 14176simply converting a raw buffer to a string data type. 14177 14178Fixed a problem where CopyObject and the other "explicit" 14179conversion operators were not updating the internal namespace node 14180type as part of the store operation. 14181 14182Fixed a memory leak during implicit source operand conversion 14183where the original object was not deleted if it was converted to a 14184new object of a different type. 14185 14186Enhanced error messages for all problems associated with namespace 14187lookups. Common procedure generates and prints the lookup name as 14188well as the formatted status. 14189 14190Completed implementation of a new design for the Alias support 14191within the namespace. The existing design did not handle the case 14192where a new object was assigned to one of the two names due to the 14193use of an explicit conversion operator, resulting in the two names 14194pointing to two different objects. The new design simply points 14195the Alias name to the original name node - not to the object. 14196This results in a level of indirection that must be handled in the 14197name resolution mechanism. 14198 14199Code and Data Size: Current core subsystem library sizes are shown 14200below. These are the code and data sizes for the acpica.lib 14201produced by the Microsoft Visual C++ 6.0 compiler, and these 14202values do not include any ACPI driver or OSPM code. The debug 14203version of the code includes the debug output trace mechanism and 14204has a larger code and data size. Note that these values will vary 14205depending on the efficiency of the compiler and the compiler 14206options used during generation. 14207 14208 Previous Release 14209 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 14210 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 14211 Current Release: 14212 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 14213 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 14214 14215 142162) Linux 14217 14218Initialize thermal driver's timer before it is used. (Knut 14219Neumann) 14220 14221Allow handling negative celsius values. (Kochi Takayoshi) 14222 14223Fix thermal management and make trip points. R/W (Pavel Machek) 14224 14225Fix /proc/acpi/sleep. (P. Christeas) 14226 14227IA64 fixes. (David Mosberger) 14228 14229Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 14230 14231Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 14232Brodowski) 14233 14234 142353) iASL Compiler/Disassembler 14236 14237Clarified some warning/error messages. 14238 14239 14240---------------------------------------- 1424118 September 2002. Summary of changes for this release. 14242 14243 142441) ACPI CA Core Subsystem version 20020918: 14245 14246Fixed a reported problem with reference chaining (via the Index() 14247and RefOf() operators) in the ObjectType() and SizeOf() operators. 14248The definition of these operators includes the dereferencing of 14249all chained references to return information on the base object. 14250 14251Fixed a problem with stores to indexed package elements - the 14252existing code would not complete the store if an "implicit 14253conversion" was not performed. In other words, if the existing 14254object (package element) was to be replaced completely, the code 14255didn't handle this case. 14256 14257Relaxed typechecking on the ASL "Scope" operator to allow the 14258target name to refer to an object of type Integer, String, or 14259Buffer, in addition to the scoping object types (Device, 14260predefined Scopes, Processor, PowerResource, and ThermalZone.) 14261This allows existing AML code that has workarounds for a bug in 14262Windows to function properly. A warning is issued, however. This 14263affects both the AML interpreter and the iASL compiler. Below is 14264an example of this type of ASL code: 14265 14266 Name(DEB,0x00) 14267 Scope(DEB) 14268 { 14269 14270Fixed some reported problems with 64-bit integer support in the 14271local implementation of C library functions (clib.c) 14272 14273 142742) Linux 14275 14276Use ACPI fix map region instead of IOAPIC region, since it is 14277undefined in non-SMP. 14278 14279Ensure that the SCI has the proper polarity and trigger, even on 14280systems that do not have an interrupt override entry in the MADT. 14281 142822.5 big driver reorganization (Pat Mochel) 14283 14284Use early table mapping code from acpitable.c (Andi Kleen) 14285 14286New blacklist entries (Andi Kleen) 14287 14288Blacklist improvements. Split blacklist code out into a separate 14289file. Move checking the blacklist to very early. Previously, we 14290would use ACPI tables, and then halfway through init, check the 14291blacklist -- too late. Now, it's early enough to completely fall- 14292back to non-ACPI. 14293 14294 142953) iASL Compiler/Disassembler version 20020918: 14296 14297Fixed a problem where the typechecking code didn't know that an 14298alias could point to a method. In other words, aliases were not 14299being dereferenced during typechecking. 14300 14301 14302---------------------------------------- 1430329 August 2002. Summary of changes for this release. 14304 143051) ACPI CA Core Subsystem Version 20020829: 14306 14307If the target of a Scope() operator already exists, it must be an 14308object type that actually opens a scope -- such as a Device, 14309Method, Scope, etc. This is a fatal runtime error. Similar error 14310check has been added to the iASL compiler also. 14311 14312Tightened up the namespace load to disallow multiple names in the 14313same scope. This previously was allowed if both objects were of 14314the same type. (i.e., a lookup was the same as entering a new 14315name). 14316 14317 143182) Linux 14319 14320Ensure that the ACPI interrupt has the proper trigger and 14321polarity. 14322 14323local_irq_disable is extraneous. (Matthew Wilcox) 14324 14325Make "acpi=off" actually do what it says, and not use the ACPI 14326interpreter *or* the tables. 14327 14328Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 14329Takayoshi) 14330 14331 143323) iASL Compiler/Disassembler Version 20020829: 14333 14334Implemented namepath optimization for name declarations. For 14335example, a declaration like "Method (\_SB_.ABCD)" would get 14336optimized to "Method (ABCD)" if the declaration is within the 14337\_SB_ scope. This optimization is in addition to the named 14338reference path optimization first released in the previous 14339version. This would seem to complete all possible optimizations 14340for namepaths within the ASL/AML. 14341 14342If the target of a Scope() operator already exists, it must be an 14343object type that actually opens a scope -- such as a Device, 14344Method, Scope, etc. 14345 14346Implemented a check and warning for unreachable code in the same 14347block below a Return() statement. 14348 14349Fixed a problem where the listing file was not generated if the 14350compiler aborted if the maximum error count was exceeded (200). 14351 14352Fixed a problem where the typechecking of method return values was 14353broken. This includes the check for a return value when the 14354method is invoked as a TermArg (a return value is expected.) 14355 14356Fixed a reported problem where EOF conditions during a quoted 14357string or comment caused a fault. 14358 14359 14360---------------------------------------- 1436115 August 2002. Summary of changes for this release. 14362 143631) ACPI CA Core Subsystem Version 20020815: 14364 14365Fixed a reported problem where a Store to a method argument that 14366contains a reference did not perform the indirect store correctly. 14367This problem was created during the conversion to the new 14368reference object model - the indirect store to a method argument 14369code was not updated to reflect the new model. 14370 14371Reworked the ACPI mode change code to better conform to ACPI 2.0, 14372handle corner cases, and improve code legibility (Kochi Takayoshi) 14373 14374Fixed a problem with the pathname parsing for the carat (^) 14375prefix. The heavy use of the carat operator by the new namepath 14376optimization in the iASL compiler uncovered a problem with the AML 14377interpreter handling of this prefix. In the case where one or 14378more carats precede a single nameseg, the nameseg was treated as 14379standalone and the search rule (to root) was inadvertently 14380applied. This could cause both the iASL compiler and the 14381interpreter to find the wrong object or to miss the error that 14382should occur if the object does not exist at that exact pathname. 14383 14384Found and fixed the problem where the HP Pavilion DSDT would not 14385load. This was a relatively minor tweak to the table loading code 14386(a problem caused by the unexpected encounter with a method 14387invocation not within a control method), but it does not solve the 14388overall issue of the execution of AML code at the table level. 14389This investigation is still ongoing. 14390 14391Code and Data Size: Current core subsystem library sizes are shown 14392below. These are the code and data sizes for the acpica.lib 14393produced by the Microsoft Visual C++ 6.0 compiler, and these 14394values do not include any ACPI driver or OSPM code. The debug 14395version of the code includes the debug output trace mechanism and 14396has a larger code and data size. Note that these values will vary 14397depending on the efficiency of the compiler and the compiler 14398options used during generation. 14399 14400 Previous Release 14401 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 14402 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 14403 Current Release: 14404 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 14405 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 14406 14407 144082) Linux 14409 14410Remove redundant slab.h include (Brad Hards) 14411 14412Fix several bugs in thermal.c (Herbert Nachtnebel) 14413 14414Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 14415 14416Change acpi_system_suspend to use updated irq functions (Pavel 14417Machek) 14418 14419Export acpi_get_firmware_table (Matthew Wilcox) 14420 14421Use proper root proc entry for ACPI (Kochi Takayoshi) 14422 14423Fix early-boot table parsing (Bjorn Helgaas) 14424 14425 144263) iASL Compiler/Disassembler 14427 14428Reworked the compiler options to make them more consistent and to 14429use two-letter options where appropriate. We were running out of 14430sensible letters. This may break some makefiles, so check the 14431current options list by invoking the compiler with no parameters. 14432 14433Completed the design and implementation of the ASL namepath 14434optimization option for the compiler. This option optimizes all 14435references to named objects to the shortest possible path. The 14436first attempt tries to utilize a single nameseg (4 characters) and 14437the "search-to-root" algorithm used by the interpreter. If that 14438cannot be used (because either the name is not in the search path 14439or there is a conflict with another object with the same name), 14440the pathname is optimized using the carat prefix (usually a 14441shorter string than specifying the entire path from the root.) 14442 14443Implemented support to obtain the DSDT from the Windows registry 14444(when the disassembly option is specified with no input file). 14445Added this code as the implementation for AcpiOsTableOverride in 14446the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 14447utility) to scan memory for the DSDT to the AcpiOsTableOverride 14448function in the DOS OSL to make the disassembler truly OS 14449independent. 14450 14451Implemented a new option to disassemble and compile in one step. 14452When used without an input filename, this option will grab the 14453DSDT from the local machine, disassemble it, and compile it in one 14454step. 14455 14456Added a warning message for invalid escapes (a backslash followed 14457by any character other than the allowable escapes). This catches 14458the quoted string error "\_SB_" (which should be "\\_SB_" ). 14459 14460Also, there are numerous instances in the ACPI specification where 14461this error occurs. 14462 14463Added a compiler option to disable all optimizations. This is 14464basically the "compatibility mode" because by using this option, 14465the AML code will come out exactly the same as other ASL 14466compilers. 14467 14468Added error messages for incorrectly ordered dependent resource 14469functions. This includes: missing EndDependentFn macro at end of 14470dependent resource list, nested dependent function macros (both 14471start and end), and missing StartDependentFn macro. These are 14472common errors that should be caught at compile time. 14473 14474Implemented _OSI support for the disassembler and compiler. _OSI 14475must be included in the namespace for proper disassembly (because 14476the disassembler must know the number of arguments.) 14477 14478Added an "optimization" message type that is optional (off by 14479default). This message is used for all optimizations - including 14480constant folding, integer optimization, and namepath optimization. 14481 14482---------------------------------------- 1448325 July 2002. Summary of changes for this release. 14484 14485 144861) ACPI CA Core Subsystem Version 20020725: 14487 14488The AML Disassembler has been enhanced to produce compilable ASL 14489code and has been integrated into the iASL compiler (see below) as 14490well as the single-step disassembly for the AML debugger and the 14491disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 14492resource templates and macros are fully supported. The 14493disassembler has been tested on over 30 different AML files, 14494producing identical AML when the resulting disassembled ASL file 14495is recompiled with the same ASL compiler. 14496 14497Modified the Resource Manager to allow zero interrupts and zero 14498dma channels during the GetCurrentResources call. This was 14499causing problems on some platforms. 14500 14501Added the AcpiOsRedirectOutput interface to the OSL to simplify 14502output redirection for the AcpiOsPrintf and AcpiOsVprintf 14503interfaces. 14504 14505Code and Data Size: Current core subsystem library sizes are shown 14506below. These are the code and data sizes for the acpica.lib 14507produced by the Microsoft Visual C++ 6.0 compiler, and these 14508values do not include any ACPI driver or OSPM code. The debug 14509version of the code includes the debug output trace mechanism and 14510has a larger code and data size. Note that these values will vary 14511depending on the efficiency of the compiler and the compiler 14512options used during generation. 14513 14514 Previous Release 14515 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 14516 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 14517 Current Release: 14518 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 14519 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 14520 14521 145222) Linux 14523 14524Fixed a panic in the EC driver (Dominik Brodowski) 14525 14526Implemented checksum of the R/XSDT itself during Linux table scan 14527(Richard Schaal) 14528 14529 145303) iASL compiler 14531 14532The AML disassembler is integrated into the compiler. The "-d" 14533option invokes the disassembler to completely disassemble an 14534input AML file, producing as output a text ASL file with the 14535extension ".dsl" (to avoid name collisions with existing .asl 14536source files.) A future enhancement will allow the disassembler 14537to obtain the BIOS DSDT from the registry under Windows. 14538 14539Fixed a problem with the VendorShort and VendorLong resource 14540descriptors where an invalid AML sequence was created. 14541 14542Implemented a fix for BufferData term in the ASL parser. It was 14543inadvertently defined twice, allowing invalid syntax to pass and 14544causing reduction conflicts. 14545 14546Fixed a problem where the Ones opcode could get converted to a 14547value of zero if "Ones" was used where a byte, word or dword value 14548was expected. The 64-bit value is now truncated to the correct 14549size with the correct value. 14550 14551 14552 14553---------------------------------------- 1455402 July 2002. Summary of changes for this release. 14555 14556 145571) ACPI CA Core Subsystem Version 20020702: 14558 14559The Table Manager code has been restructured to add several new 14560features. Tables that are not required by the core subsystem 14561(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 14562validated in any way and are returned from AcpiGetFirmwareTable if 14563requested. The AcpiOsTableOverride interface is now called for 14564each table that is loaded by the subsystem in order to allow the 14565host to override any table it chooses. Previously, only the DSDT 14566could be overridden. Added one new files, tbrsdt.c and 14567tbgetall.c. 14568 14569Fixed a problem with the conversion of internal package objects to 14570external objects (when a package is returned from a control 14571method.) The return buffer length was set to zero instead of the 14572proper length of the package object. 14573 14574Fixed a reported problem with the use of the RefOf and DeRefOf 14575operators when passing reference arguments to control methods. A 14576new type of Reference object is used internally for references 14577produced by the RefOf operator. 14578 14579Added additional error messages in the Resource Manager to explain 14580AE_BAD_DATA errors when they occur during resource parsing. 14581 14582Split the AcpiEnableSubsystem into two primitives to enable a 14583finer granularity initialization sequence. These two calls should 14584be called in this order: AcpiEnableSubsystem (flags), 14585AcpiInitializeObjects (flags). The flags parameter remains the 14586same. 14587 14588 145892) Linux 14590 14591Updated the ACPI utilities module to understand the new style of 14592fully resolved package objects that are now returned from the core 14593subsystem. This eliminates errors of the form: 14594 14595 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 14596 acpi_utils-0430 [145] acpi_evaluate_reference: 14597 Invalid element in package (not a device reference) 14598 14599The method evaluation utility uses the new buffer allocation 14600scheme instead of calling AcpiEvaluate Object twice. 14601 14602Added support for ECDT. This allows the use of the Embedded 14603 14604Controller before the namespace has been fully initialized, which 14605is necessary for ACPI 2.0 support, and for some laptops to 14606initialize properly. (Laptops using ECDT are still rare, so only 14607limited testing was performed of the added functionality.) 14608 14609Fixed memory leaks in the EC driver. 14610 14611Eliminated a brittle code structure in acpi_bus_init(). 14612 14613Eliminated the acpi_evaluate() helper function in utils.c. It is 14614no longer needed since acpi_evaluate_object can optionally 14615allocate memory for the return object. 14616 14617Implemented fix for keyboard hang when getting battery readings on 14618some systems (Stephen White) 14619 14620PCI IRQ routing update (Dominik Brodowski) 14621 14622Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 14623support 14624 14625---------------------------------------- 1462611 June 2002. Summary of changes for this release. 14627 14628 146291) ACPI CA Core Subsystem Version 20020611: 14630 14631Fixed a reported problem where constants such as Zero and One 14632appearing within _PRT packages were not handled correctly within 14633the resource manager code. Originally reported against the ASL 14634compiler because the code generator now optimizes integers to 14635their minimal AML representation (i.e. AML constants if possible.) 14636The _PRT code now handles all AML constant opcodes correctly 14637(Zero, One, Ones, Revision). 14638 14639Fixed a problem with the Concatenate operator in the AML 14640interpreter where a buffer result object was incorrectly marked as 14641not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 14642 14643All package sub-objects are now fully resolved before they are 14644returned from the external ACPI interfaces. This means that name 14645strings are resolved to object handles, and constant operators 14646(Zero, One, Ones, Revision) are resolved to Integers. 14647 14648Implemented immediate resolution of the AML Constant opcodes 14649(Zero, One, Ones, Revision) to Integer objects upon detection 14650within the AML stream. This has simplified and reduced the 14651generated code size of the subsystem by eliminating about 10 14652switch statements for these constants (which previously were 14653contained in Reference objects.) The complicating issues are that 14654the Zero opcode is used as a "placeholder" for unspecified 14655optional target operands and stores to constants are defined to be 14656no-ops. 14657 14658Code and Data Size: Current core subsystem library sizes are shown 14659below. These are the code and data sizes for the acpica.lib 14660produced by the Microsoft Visual C++ 6.0 compiler, and these 14661values do not include any ACPI driver or OSPM code. The debug 14662version of the code includes the debug output trace mechanism and 14663has a larger code and data size. Note that these values will vary 14664depending on the efficiency of the compiler and the compiler 14665options used during generation. 14666 14667 Previous Release 14668 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 14669 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 14670 Current Release: 14671 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 14672 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 14673 14674 146752) Linux 14676 14677 14678Added preliminary support for obtaining _TRA data for PCI root 14679bridges (Bjorn Helgaas). 14680 14681 146823) iASL Compiler Version X2046: 14683 14684Fixed a problem where the "_DDN" reserved name was defined to be a 14685control method with one argument. There are no arguments, and 14686_DDN does not have to be a control method. 14687 14688Fixed a problem with the Linux version of the compiler where the 14689source lines printed with error messages were the wrong lines. 14690This turned out to be the "LF versus CR/LF" difference between 14691Windows and Unix. This appears to be the longstanding issue 14692concerning listing output and error messages. 14693 14694Fixed a problem with the Linux version of compiler where opcode 14695names within error messages were wrong. This was caused by a 14696slight difference in the output of the Flex tool on Linux versus 14697Windows. 14698 14699Fixed a problem with the Linux compiler where the hex output files 14700contained some garbage data caused by an internal buffer overrun. 14701 14702 14703---------------------------------------- 1470417 May 2002. Summary of changes for this release. 14705 14706 147071) ACPI CA Core Subsystem Version 20020517: 14708 14709Implemented a workaround to an BIOS bug discovered on the HP 14710OmniBook where the FADT revision number and the table size are 14711inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 14712behavior is to fallback to using only the ACPI 1.0 fields of the 14713FADT if the table is too small to be a ACPI 2.0 table as claimed 14714by the revision number. Although this is a BIOS bug, this is a 14715case where the workaround is simple enough and with no side 14716effects, so it seemed prudent to add it. A warning message is 14717issued, however. 14718 14719Implemented minimum size checks for the fixed-length ACPI tables - 14720- the FADT and FACS, as well as consistency checks between the 14721revision number and the table size. 14722 14723Fixed a reported problem in the table override support where the 14724new table pointer was incorrectly treated as a physical address 14725instead of a logical address. 14726 14727Eliminated the use of the AE_AML_ERROR exception and replaced it 14728with more descriptive codes. 14729 14730Fixed a problem where an exception would occur if an ASL Field was 14731defined with no named Field Units underneath it (used by some 14732index fields). 14733 14734Code and Data Size: Current core subsystem library sizes are shown 14735below. These are the code and data sizes for the acpica.lib 14736produced by the Microsoft Visual C++ 6.0 compiler, and these 14737values do not include any ACPI driver or OSPM code. The debug 14738version of the code includes the debug output trace mechanism and 14739has a larger code and data size. Note that these values will vary 14740depending on the efficiency of the compiler and the compiler 14741options used during generation. 14742 14743 Previous Release 14744 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 14745 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 14746 Current Release: 14747 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 14748 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 14749 14750 14751 147522) Linux 14753 14754Much work done on ACPI init (MADT and PCI IRQ routing support). 14755(Paul D. and Dominik Brodowski) 14756 14757Fix PCI IRQ-related panic on boot (Sam Revitch) 14758 14759Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 14760 14761Fix "MHz" typo (Dominik Brodowski) 14762 14763Fix RTC year 2000 issue (Dominik Brodowski) 14764 14765Preclude multiple button proc entries (Eric Brunet) 14766 14767Moved arch-specific code out of include/platform/aclinux.h 14768 147693) iASL Compiler Version X2044: 14770 14771Implemented error checking for the string used in the EISAID macro 14772(Usually used in the definition of the _HID object.) The code now 14773strictly enforces the PnP format - exactly 7 characters, 3 14774uppercase letters and 4 hex digits. 14775 14776If a raw string is used in the definition of the _HID object 14777(instead of the EISAID macro), the string must contain all 14778alphanumeric characters (e.g., "*PNP0011" is not allowed because 14779of the asterisk.) 14780 14781Implemented checking for invalid use of ACPI reserved names for 14782most of the name creation operators (Name, Device, Event, Mutex, 14783OperationRegion, PowerResource, Processor, and ThermalZone.) 14784Previously, this check was only performed for control methods. 14785 14786Implemented an additional check on the Name operator to emit an 14787error if a reserved name that must be implemented in ASL as a 14788control method is used. We know that a reserved name must be a 14789method if it is defined with input arguments. 14790 14791The warning emitted when a namespace object reference is not found 14792during the cross reference phase has been changed into an error. 14793The "External" directive should be used for names defined in other 14794modules. 14795 14796 147974) Tools and Utilities 14798 14799The 16-bit tools (adump16 and aexec16) have been regenerated and 14800tested. 14801 14802Fixed a problem with the output of both acpidump and adump16 where 14803the indentation of closing parentheses and brackets was not 14804 14805aligned properly with the parent block. 14806 14807 14808---------------------------------------- 1480903 May 2002. Summary of changes for this release. 14810 14811 148121) ACPI CA Core Subsystem Version 20020503: 14813 14814Added support a new OSL interface that allows the host operating 14815 14816system software to override the DSDT found in the firmware - 14817AcpiOsTableOverride. With this interface, the OSL can examine the 14818version of the firmware DSDT and replace it with a different one 14819if desired. 14820 14821Added new external interfaces for accessing ACPI registers from 14822device drivers and other system software - AcpiGetRegister and 14823AcpiSetRegister. This was simply an externalization of the 14824existing AcpiHwBitRegister interfaces. 14825 14826Fixed a regression introduced in the previous build where the 14827ASL/AML CreateField operator always returned an error, 14828"destination must be a NS Node". 14829 14830Extended the maximum time (before failure) to successfully enable 14831ACPI mode to 3 seconds. 14832 14833Code and Data Size: Current core subsystem library sizes are shown 14834below. These are the code and data sizes for the acpica.lib 14835produced by the Microsoft Visual C++ 6.0 compiler, and these 14836values do not include any ACPI driver or OSPM code. The debug 14837version of the code includes the debug output trace mechanism and 14838has a larger code and data size. Note that these values will vary 14839depending on the efficiency of the compiler and the compiler 14840options used during generation. 14841 14842 Previous Release 14843 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 14844 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 14845 Current Release: 14846 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 14847 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 14848 14849 148502) Linux 14851 14852Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 14853free. While 3 out of 4 of our in-house systems work fine, the last 14854one still hangs when testing the LAPIC timer. 14855 14856Renamed many files in 2.5 kernel release to omit "acpi_" from the 14857name. 14858 14859Added warning on boot for Presario 711FR. 14860 14861Sleep improvements (Pavel Machek) 14862 14863ACPI can now be built without CONFIG_PCI enabled. 14864 14865IA64: Fixed memory map functions (JI Lee) 14866 14867 148683) iASL Compiler Version X2043: 14869 14870Added support to allow the compiler to be integrated into the MS 14871VC++ development environment for one-button compilation of single 14872files or entire projects -- with error-to-source-line mapping. 14873 14874Implemented support for compile-time constant folding for the 14875Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 14876specification. This allows the ASL writer to use expressions 14877instead of Integer/Buffer/String constants in terms that must 14878evaluate to constants at compile time and will also simplify the 14879emitted AML in any such sub-expressions that can be folded 14880(evaluated at compile-time.) This increases the size of the 14881compiler significantly because a portion of the ACPI CA AML 14882interpreter is included within the compiler in order to pre- 14883evaluate constant expressions. 14884 14885 14886Fixed a problem with the "Unicode" ASL macro that caused the 14887compiler to fault. (This macro is used in conjunction with the 14888_STR reserved name.) 14889 14890Implemented an AML opcode optimization to use the Zero, One, and 14891Ones opcodes where possible to further reduce the size of integer 14892constants and thus reduce the overall size of the generated AML 14893code. 14894 14895Implemented error checking for new reserved terms for ACPI version 148962.0A. 14897 14898Implemented the -qr option to display the current list of ACPI 14899reserved names known to the compiler. 14900 14901Implemented the -qc option to display the current list of ASL 14902operators that are allowed within constant expressions and can 14903therefore be folded at compile time if the operands are constants. 14904 14905 149064) Documentation 14907 14908Updated the Programmer's Reference for new interfaces, data types, 14909and memory allocation model options. 14910 14911Updated the iASL Compiler User Reference to apply new format and 14912add information about new features and options. 14913 14914---------------------------------------- 1491519 April 2002. Summary of changes for this release. 14916 149171) ACPI CA Core Subsystem Version 20020419: 14918 14919The source code base for the Core Subsystem has been completely 14920cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 14921versions. The Lint option files used are included in the 14922/acpi/generate/lint directory. 14923 14924Implemented enhanced status/error checking across the entire 14925Hardware manager subsystem. Any hardware errors (reported from 14926the OSL) are now bubbled up and will abort a running control 14927method. 14928 14929 14930Fixed a problem where the per-ACPI-table integer width (32 or 64) 14931was stored only with control method nodes, causing a fault when 14932non-control method code was executed during table loading. The 14933solution implemented uses a global variable to indicate table 14934width across the entire ACPI subsystem. Therefore, ACPI CA does 14935not support mixed integer widths across different ACPI tables 14936(DSDT, SSDT). 14937 14938Fixed a problem where NULL extended fields (X fields) in an ACPI 149392.0 ACPI FADT caused the table load to fail. Although the 14940existing ACPI specification is a bit fuzzy on this topic, the new 14941behavior is to fall back on a ACPI 1.0 field if the corresponding 14942ACPI 2.0 X field is zero (even though the table revision indicates 14943a full ACPI 2.0 table.) The ACPI specification will be updated to 14944clarify this issue. 14945 14946Fixed a problem with the SystemMemory operation region handler 14947where memory was always accessed byte-wise even if the AML- 14948specified access width was larger than a byte. This caused 14949problems on systems with memory-mapped I/O. Memory is now 14950accessed with the width specified. On systems that do not support 14951non-aligned transfers, a check is made to guarantee proper address 14952alignment before proceeding in order to avoid an AML-caused 14953alignment fault within the kernel. 14954 14955 14956Fixed a problem with the ExtendedIrq resource where only one byte 14957of the 4-byte Irq field was extracted. 14958 14959Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 14960function was out of date and required a rewrite. 14961 14962Code and Data Size: Current core subsystem library sizes are shown 14963below. These are the code and data sizes for the acpica.lib 14964produced by the Microsoft Visual C++ 6.0 compiler, and these 14965values do not include any ACPI driver or OSPM code. The debug 14966version of the code includes the debug output trace mechanism and 14967has a larger code and data size. Note that these values will vary 14968depending on the efficiency of the compiler and the compiler 14969options used during generation. 14970 14971 Previous Release 14972 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 14973 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 14974 Current Release: 14975 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 14976 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 14977 14978 149792) Linux 14980 14981PCI IRQ routing fixes (Dominik Brodowski) 14982 14983 149843) iASL Compiler Version X2042: 14985 14986Implemented an additional compile-time error check for a field 14987unit whose size + minimum access width would cause a run-time 14988access beyond the end-of-region. Previously, only the field size 14989itself was checked. 14990 14991The Core subsystem and iASL compiler now share a common parse 14992object in preparation for compile-time evaluation of the type 149933/4/5 ASL operators. 14994 14995 14996---------------------------------------- 14997Summary of changes for this release: 03_29_02 14998 149991) ACPI CA Core Subsystem Version 20020329: 15000 15001Implemented support for late evaluation of TermArg operands to 15002Buffer and Package objects. This allows complex expressions to be 15003used in the declarations of these object types. 15004 15005Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 150061.0, if the field was larger than 32 bits, it was returned as a 15007buffer - otherwise it was returned as an integer. In ACPI 2.0, 15008the field is returned as a buffer only if the field is larger than 1500964 bits. The TableRevision is now considered when making this 15010conversion to avoid incompatibility with existing ASL code. 15011 15012Implemented logical addressing for AcpiOsGetRootPointer. This 15013allows an RSDP with either a logical or physical address. With 15014this support, the host OS can now override all ACPI tables with 15015one logical RSDP. Includes implementation of "typed" pointer 15016support to allow a common data type for both physical and logical 15017pointers internally. This required a change to the 15018AcpiOsGetRootPointer interface. 15019 15020Implemented the use of ACPI 2.0 Generic Address Structures for all 15021GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 15022mapped I/O for these ACPI features. 15023 15024Initialization now ignores not only non-required tables (All 15025tables other than the FADT, FACS, DSDT, and SSDTs), but also does 15026not validate the table headers of unrecognized tables. 15027 15028Fixed a problem where a notify handler could only be 15029installed/removed on an object of type Device. All "notify" 15030 15031objects are now supported -- Devices, Processor, Power, and 15032Thermal. 15033 15034Removed most verbosity from the ACPI_DB_INFO debug level. Only 15035critical information is returned when this debug level is enabled. 15036 15037Code and Data Size: Current core subsystem library sizes are shown 15038below. These are the code and data sizes for the acpica.lib 15039produced by the Microsoft Visual C++ 6.0 compiler, and these 15040values do not include any ACPI driver or OSPM code. The debug 15041version of the code includes the debug output trace mechanism and 15042has a larger code and data size. Note that these values will vary 15043depending on the efficiency of the compiler and the compiler 15044options used during generation. 15045 15046 Previous Release 15047 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 15048 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 15049 Current Release: 15050 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 15051 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 15052 15053 150542) Linux: 15055 15056The processor driver (acpi_processor.c) now fully supports ACPI 150572.0-based processor performance control (e.g. Intel(R) 15058SpeedStep(TM) technology) Note that older laptops that only have 15059the Intel "applet" interface are not supported through this. The 15060'limit' and 'performance' interface (/proc) are fully functional. 15061[Note that basic policy for controlling performance state 15062transitions will be included in the next version of ospmd.] The 15063idle handler was modified to more aggressively use C2, and PIIX4 15064errata handling underwent a complete overhaul (big thanks to 15065Dominik Brodowski). 15066 15067Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 15068based devices in the ACPI namespace are now dynamically bound 15069(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 15070This allows, among other things, ACPI to resolve bus numbers for 15071subordinate PCI bridges. 15072 15073Enhanced PCI IRQ routing to get the proper bus number for _PRT 15074entries defined underneath PCI bridges. 15075 15076Added IBM 600E to bad bios list due to invalid _ADR value for 15077PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 15078 15079In the process of adding full MADT support (e.g. IOAPIC) for IA32 15080(acpi.c, mpparse.c) -- stay tuned. 15081 15082Added back visual differentiation between fixed-feature and 15083control-method buttons in dmesg. Buttons are also subtyped (e.g. 15084button/power/PWRF) to simplify button identification. 15085 15086We no longer use -Wno-unused when compiling debug. Please ignore 15087any "_THIS_MODULE defined but not used" messages. 15088 15089Can now shut down the system using "magic sysrq" key. 15090 15091 150923) iASL Compiler version 2041: 15093 15094Fixed a problem where conversion errors for hex/octal/decimal 15095constants were not reported. 15096 15097Implemented a fix for the General Register template Address field. 15098This field was 8 bits when it should be 64. 15099 15100Fixed a problem where errors/warnings were no longer being emitted 15101within the listing output file. 15102 15103Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 15104exactly 4 characters, alphanumeric only. 15105 15106 15107 15108 15109---------------------------------------- 15110Summary of changes for this release: 03_08_02 15111 15112 151131) ACPI CA Core Subsystem Version 20020308: 15114 15115Fixed a problem with AML Fields where the use of the "AccessAny" 15116keyword could cause an interpreter error due to attempting to read 15117or write beyond the end of the parent Operation Region. 15118 15119Fixed a problem in the SystemMemory Operation Region handler where 15120an attempt was made to map memory beyond the end of the region. 15121This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 15122errors on some Linux systems. 15123 15124Fixed a problem where the interpreter/namespace "search to root" 15125algorithm was not functioning for some object types. Relaxed the 15126internal restriction on the search to allow upsearches for all 15127external object types as well as most internal types. 15128 15129 151302) Linux: 15131 15132We now use safe_halt() macro versus individual calls to sti | hlt. 15133 15134Writing to the processor limit interface should now work. "echo 1" 15135will increase the limit, 2 will decrease, and 0 will reset to the 15136 15137default. 15138 15139 151403) ASL compiler: 15141 15142Fixed segfault on Linux version. 15143 15144 15145---------------------------------------- 15146Summary of changes for this release: 02_25_02 15147 151481) ACPI CA Core Subsystem: 15149 15150 15151Fixed a problem where the GPE bit masks were not initialized 15152properly, causing erratic GPE behavior. 15153 15154Implemented limited support for multiple calling conventions. The 15155code can be generated with either the VPL (variable parameter 15156list, or "C") convention, or the FPL (fixed parameter list, or 15157"Pascal") convention. The core subsystem is about 3.4% smaller 15158when generated with FPL. 15159 15160 151612) Linux 15162 15163Re-add some /proc/acpi/event functionality that was lost during 15164the rewrite 15165 15166Resolved issue with /proc events for fixed-feature buttons showing 15167up as the system device. 15168 15169Fixed checks on C2/C3 latencies to be inclusive of maximum values. 15170 15171Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 15172 15173Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 15174 15175Fixed limit interface & usage to fix bugs with passive cooling 15176hysterisis. 15177 15178Restructured PRT support. 15179 15180 15181---------------------------------------- 15182Summary of changes for this label: 02_14_02 15183 15184 151851) ACPI CA Core Subsystem: 15186 15187Implemented support in AcpiLoadTable to allow loading of FACS and 15188FADT tables. 15189 15190Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 15191been removed. All 64-bit platforms should be migrated to the ACPI 151922.0 tables. The actbl71.h header has been removed from the source 15193tree. 15194 15195All C macros defined within the subsystem have been prefixed with 15196"ACPI_" to avoid collision with other system include files. 15197 15198Removed the return value for the two AcpiOsPrint interfaces, since 15199it is never used and causes lint warnings for ignoring the return 15200value. 15201 15202Added error checking to all internal mutex acquire and release 15203calls. Although a failure from one of these interfaces is 15204probably a fatal system error, these checks will cause the 15205immediate abort of the currently executing method or interface. 15206 15207Fixed a problem where the AcpiSetCurrentResources interface could 15208fault. This was a side effect of the deployment of the new memory 15209allocation model. 15210 15211Fixed a couple of problems with the Global Lock support introduced 15212in the last major build. The "common" (1.0/2.0) internal FACS was 15213being overwritten with the FACS signature and clobbering the 15214Global Lock pointer. Also, the actual firmware FACS was being 15215unmapped after construction of the "common" FACS, preventing 15216access to the actual Global Lock field within it. The "common" 15217internal FACS is no longer installed as an actual ACPI table; it 15218is used simply as a global. 15219 15220Code and Data Size: Current core subsystem library sizes are shown 15221below. These are the code and data sizes for the acpica.lib 15222produced by the Microsoft Visual C++ 6.0 compiler, and these 15223values do not include any ACPI driver or OSPM code. The debug 15224version of the code includes the debug output trace mechanism and 15225has a larger code and data size. Note that these values will vary 15226depending on the efficiency of the compiler and the compiler 15227options used during generation. 15228 15229 Previous Release (02_07_01) 15230 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 15231 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 15232 Current Release: 15233 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 15234 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 15235 15236 152372) Linux 15238 15239Updated Linux-specific code for core macro and OSL interface 15240changes described above. 15241 15242Improved /proc/acpi/event. It now can be opened only once and has 15243proper poll functionality. 15244 15245Fixed and restructured power management (acpi_bus). 15246 15247Only create /proc "view by type" when devices of that class exist. 15248 15249Fixed "charging/discharging" bug (and others) in acpi_battery. 15250 15251Improved thermal zone code. 15252 15253 152543) ASL Compiler, version X2039: 15255 15256 15257Implemented the new compiler restriction on ASL String hex/octal 15258escapes to non-null, ASCII values. An error results if an invalid 15259value is used. (This will require an ACPI 2.0 specification 15260change.) 15261 15262AML object labels that are output to the optional C and ASM source 15263are now prefixed with both the ACPI table signature and table ID 15264to help guarantee uniqueness within a large BIOS project. 15265 15266 15267---------------------------------------- 15268Summary of changes for this label: 02_01_02 15269 152701) ACPI CA Core Subsystem: 15271 15272ACPI 2.0 support is complete in the entire Core Subsystem and the 15273ASL compiler. All new ACPI 2.0 operators are implemented and all 15274other changes for ACPI 2.0 support are complete. With 15275simultaneous code and data optimizations throughout the subsystem, 15276ACPI 2.0 support has been implemented with almost no additional 15277cost in terms of code and data size. 15278 15279Implemented a new mechanism for allocation of return buffers. If 15280the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 15281be allocated on behalf of the caller. Consolidated all return 15282buffer validation and allocation to a common procedure. Return 15283buffers will be allocated via the primary OSL allocation interface 15284since it appears that a separate pool is not needed by most users. 15285If a separate pool is required for these buffers, the caller can 15286still use the original mechanism and pre-allocate the buffer(s). 15287 15288Implemented support for string operands within the DerefOf 15289operator. 15290 15291Restructured the Hardware and Event managers to be table driven, 15292simplifying the source code and reducing the amount of generated 15293code. 15294 15295Split the common read/write low-level ACPI register bitfield 15296procedure into a separate read and write, simplifying the code 15297considerably. 15298 15299Obsoleted the AcpiOsCallocate OSL interface. This interface was 15300used only a handful of times and didn't have enough critical mass 15301for a separate interface. Replaced with a common calloc procedure 15302in the core. 15303 15304Fixed a reported problem with the GPE number mapping mechanism 15305that allows GPE1 numbers to be non-contiguous with GPE0. 15306Reorganized the GPE information and shrunk a large array that was 15307originally large enough to hold info for all possible GPEs (256) 15308to simply large enough to hold all GPEs up to the largest GPE 15309number on the machine. 15310 15311Fixed a reported problem with resource structure alignment on 64- 15312bit platforms. 15313 15314Changed the AcpiEnableEvent and AcpiDisableEvent external 15315interfaces to not require any flags for the common case of 15316enabling/disabling a GPE. 15317 15318Implemented support to allow a "Notify" on a Processor object. 15319 15320Most TBDs in comments within the source code have been resolved 15321and eliminated. 15322 15323 15324Fixed a problem in the interpreter where a standalone parent 15325prefix (^) was not handled correctly in the interpreter and 15326debugger. 15327 15328Removed obsolete and unnecessary GPE save/restore code. 15329 15330Implemented Field support in the ASL Load operator. This allows a 15331table to be loaded from a named field, in addition to loading a 15332table directly from an Operation Region. 15333 15334Implemented timeout and handle support in the external Global Lock 15335interfaces. 15336 15337Fixed a problem in the AcpiDump utility where pathnames were no 15338longer being generated correctly during the dump of named objects. 15339 15340Modified the AML debugger to give a full display of if/while 15341predicates instead of just one AML opcode at a time. (The 15342predicate can have several nested ASL statements.) The old method 15343was confusing during single stepping. 15344 15345Code and Data Size: Current core subsystem library sizes are shown 15346below. These are the code and data sizes for the acpica.lib 15347produced by the Microsoft Visual C++ 6.0 compiler, and these 15348values do not include any ACPI driver or OSPM code. The debug 15349version of the code includes the debug output trace mechanism and 15350has a larger code and data size. Note that these values will vary 15351depending on the efficiency of the compiler and the compiler 15352options used during generation. 15353 15354 Previous Release (12_18_01) 15355 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 15356 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 15357 Current Release: 15358 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 15359 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 15360 153612) Linux 15362 15363 Implemented fix for PIIX reverse throttling errata (Processor 15364driver) 15365 15366Added new Limit interface (Processor and Thermal drivers) 15367 15368New thermal policy (Thermal driver) 15369 15370Many updates to /proc 15371 15372Battery "low" event support (Battery driver) 15373 15374Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 15375 15376IA32 - IA64 initialization unification, no longer experimental 15377 15378Menuconfig options redesigned 15379 153803) ASL Compiler, version X2037: 15381 15382Implemented several new output features to simplify integration of 15383AML code into firmware: 1) Output the AML in C source code with 15384labels for each named ASL object. The original ASL source code 15385is interleaved as C comments. 2) Output the AML in ASM source code 15386with labels and interleaved ASL source. 3) Output the AML in 15387raw hex table form, in either C or ASM. 15388 15389Implemented support for optional string parameters to the 15390LoadTable operator. 15391 15392Completed support for embedded escape sequences within string 15393literals. The compiler now supports all single character escapes 15394as well as the Octal and Hex escapes. Note: the insertion of a 15395null byte into a string literal (via the hex/octal escape) causes 15396the string to be immediately terminated. A warning is issued. 15397 15398Fixed a problem where incorrect AML was generated for the case 15399where an ASL namepath consists of a single parent prefix ( 15400 15401) with no trailing name segments. 15402 15403The compiler has been successfully generated with a 64-bit C 15404compiler. 15405 15406 15407 15408 15409---------------------------------------- 15410Summary of changes for this label: 12_18_01 15411 154121) Linux 15413 15414Enhanced blacklist with reason and severity fields. Any table's 15415signature may now be used to identify a blacklisted system. 15416 15417Call _PIC control method to inform the firmware which interrupt 15418model the OS is using. Turn on any disabled link devices. 15419 15420Cleaned up busmgr /proc error handling (Andreas Dilger) 15421 15422 2) ACPI CA Core Subsystem: 15423 15424Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 15425while loop) 15426 15427Completed implementation of the ACPI 2.0 "Continue", 15428"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 15429operators. All new ACPI 2.0 operators are now implemented in both 15430the ASL compiler and the AML interpreter. The only remaining ACPI 154312.0 task is support for the String data type in the DerefOf 15432operator. Fixed a problem with AcquireMutex where the status code 15433was lost if the caller had to actually wait for the mutex. 15434 15435Increased the maximum ASL Field size from 64K bits to 4G bits. 15436 15437Completed implementation of the external Global Lock interfaces -- 15438AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 15439Handler parameters were added. 15440 15441Completed another pass at removing warnings and issues when 15442compiling with 64-bit compilers. The code now compiles cleanly 15443with the Intel 64-bit C/C++ compiler. Most notably, the pointer 15444add and subtract (diff) macros have changed considerably. 15445 15446 15447Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1544864-bit platforms, 32-bits on all others. This type is used 15449wherever memory allocation and/or the C sizeof() operator is used, 15450and affects the OSL memory allocation interfaces AcpiOsAllocate 15451and AcpiOsCallocate. 15452 15453Implemented sticky user breakpoints in the AML debugger. 15454 15455Code and Data Size: Current core subsystem library sizes are shown 15456below. These are the code and data sizes for the acpica.lib 15457produced by the Microsoft Visual C++ 6.0 compiler, and these 15458values do not include any ACPI driver or OSPM code. The debug 15459version of the code includes the debug output trace mechanism and 15460has a larger code and data size. Note that these values will vary 15461depending on the efficiency of the compiler and the compiler 15462options used during generation. 15463 15464 Previous Release (12_05_01) 15465 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 15466 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 15467 Current Release: 15468 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 15469 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 15470 15471 3) ASL Compiler, version X2034: 15472 15473Now checks for (and generates an error if detected) the use of a 15474Break or Continue statement without an enclosing While statement. 15475 15476 15477Successfully generated the compiler with the Intel 64-bit C 15478compiler. 15479 15480 ---------------------------------------- 15481Summary of changes for this label: 12_05_01 15482 15483 1) ACPI CA Core Subsystem: 15484 15485The ACPI 2.0 CopyObject operator is fully implemented. This 15486operator creates a new copy of an object (and is also used to 15487bypass the "implicit conversion" mechanism of the Store operator.) 15488 15489The ACPI 2.0 semantics for the SizeOf operator are fully 15490implemented. The change is that performing a SizeOf on a 15491reference object causes an automatic dereference of the object to 15492tha actual value before the size is evaluated. This behavior was 15493undefined in ACPI 1.0. 15494 15495The ACPI 2.0 semantics for the Extended IRQ resource descriptor 15496have been implemented. The interrupt polarity and mode are now 15497independently set. 15498 15499Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 15500appearing in Package objects were not properly converted to 15501integers when the internal Package was converted to an external 15502object (via the AcpiEvaluateObject interface.) 15503 15504Fixed a problem with the namespace object deletion mechanism for 15505objects created by control methods. There were two parts to this 15506problem: 1) Objects created during the initialization phase method 15507parse were not being deleted, and 2) The object owner ID mechanism 15508to track objects was broken. 15509 15510Fixed a problem where the use of the ASL Scope operator within a 15511control method would result in an invalid opcode exception. 15512 15513Fixed a problem introduced in the previous label where the buffer 15514length required for the _PRT structure was not being returned 15515correctly. 15516 15517Code and Data Size: Current core subsystem library sizes are shown 15518below. These are the code and data sizes for the acpica.lib 15519produced by the Microsoft Visual C++ 6.0 compiler, and these 15520values do not include any ACPI driver or OSPM code. The debug 15521version of the code includes the debug output trace mechanism and 15522has a larger code and data size. Note that these values will vary 15523depending on the efficiency of the compiler and the compiler 15524options used during generation. 15525 15526 Previous Release (11_20_01) 15527 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 15528 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 15529 15530 Current Release: 15531 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 15532 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 15533 15534 2) Linux: 15535 15536Updated all files to apply cleanly against 2.4.16. 15537 15538Added basic PCI Interrupt Routing Table (PRT) support for IA32 15539(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 15540version supports both static and dyanmic PRT entries, but dynamic 15541entries are treated as if they were static (not yet 15542reconfigurable). Architecture- specific code to use this data is 15543absent on IA32 but should be available shortly. 15544 15545Changed the initialization sequence to start the ACPI interpreter 15546(acpi_init) prior to initialization of the PCI driver (pci_init) 15547in init/main.c. This ordering is required to support PRT and 15548facilitate other (future) enhancement. A side effect is that the 15549ACPI bus driver and certain device drivers can no longer be loaded 15550as modules. 15551 15552Modified the 'make menuconfig' options to allow PCI Interrupt 15553Routing support to be included without the ACPI Bus and other 15554device drivers. 15555 15556 3) ASL Compiler, version X2033: 15557 15558Fixed some issues with the use of the new CopyObject and 15559DataTableRegion operators. Both are fully functional. 15560 15561 ---------------------------------------- 15562Summary of changes for this label: 11_20_01 15563 15564 20 November 2001. Summary of changes for this release. 15565 15566 1) ACPI CA Core Subsystem: 15567 15568Updated Index support to match ACPI 2.0 semantics. Storing a 15569Integer, String, or Buffer to an Index of a Buffer will store only 15570the least-significant byte of the source to the Indexed buffer 15571byte. Multiple writes are not performed. 15572 15573Fixed a problem where the access type used in an AccessAs ASL 15574operator was not recorded correctly into the field object. 15575 15576Fixed a problem where ASL Event objects were created in a 15577signalled state. Events are now created in an unsignalled state. 15578 15579The internal object cache is now purged after table loading and 15580initialization to reduce the use of dynamic kernel memory -- on 15581the assumption that object use is greatest during the parse phase 15582of the entire table (versus the run-time use of individual control 15583methods.) 15584 15585ACPI 2.0 variable-length packages are now fully operational. 15586 15587Code and Data Size: Code and Data optimizations have permitted new 15588feature development with an actual reduction in the library size. 15589Current core subsystem library sizes are shown below. These are 15590the code and data sizes for the acpica.lib produced by the 15591Microsoft Visual C++ 6.0 compiler, and these values do not include 15592any ACPI driver or OSPM code. The debug version of the code 15593includes the debug output trace mechanism and has a larger code 15594and data size. Note that these values will vary depending on the 15595efficiency of the compiler and the compiler options used during 15596generation. 15597 15598 Previous Release (11_09_01): 15599 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 15600 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 15601 15602 Current Release: 15603 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 15604 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 15605 15606 2) Linux: 15607 15608Enhanced the ACPI boot-time initialization code to allow the use 15609of Local APIC tables for processor enumeration on IA-32, and to 15610pave the way for a fully MPS-free boot (on SMP systems) in the 15611near future. This functionality replaces 15612arch/i386/kernel/acpitables.c, which was introduced in an earlier 156132.4.15-preX release. To enable this feature you must add 15614"acpi_boot=on" to the kernel command line -- see the help entry 15615for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 15616the works... 15617 15618Restructured the configuration options to allow boot-time table 15619parsing support without inclusion of the ACPI Interpreter (and 15620other) code. 15621 15622NOTE: This release does not include fixes for the reported events, 15623power-down, and thermal passive cooling issues (coming soon). 15624 15625 3) ASL Compiler: 15626 15627Added additional typechecking for Fields within restricted access 15628Operation Regions. All fields within EC and CMOS regions must be 15629declared with ByteAcc. All fields withing SMBus regions must be 15630declared with the BufferAcc access type. 15631 15632Fixed a problem where the listing file output of control methods 15633no longer interleaved the actual AML code with the ASL source 15634code. 15635 15636 15637 15638 15639---------------------------------------- 15640Summary of changes for this label: 11_09_01 15641 156421) ACPI CA Core Subsystem: 15643 15644Implemented ACPI 2.0-defined support for writes to fields with a 15645Buffer, String, or Integer source operand that is smaller than the 15646target field. In these cases, the source operand is zero-extended 15647to fill the target field. 15648 15649Fixed a problem where a Field starting bit offset (within the 15650parent operation region) was calculated incorrectly if the 15651 15652alignment of the field differed from the access width. This 15653affected CreateWordField, CreateDwordField, CreateQwordField, and 15654possibly other fields that use the "AccessAny" keyword. 15655 15656Fixed a problem introduced in the 11_02_01 release where indirect 15657stores through method arguments did not operate correctly. 15658 156592) Linux: 15660 15661Implemented boot-time ACPI table parsing support 15662(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 15663facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 15664legacy BIOS interfaces (e.g. MPS) for the configuration of system 15665processors, memory, and interrupts during setup_arch(). Note that 15666this patch does not include the required architecture-specific 15667changes required to apply this information -- subsequent patches 15668will be posted for both IA32 and IA64 to achieve this. 15669 15670Added low-level sleep support for IA32 platforms, courtesy of Pat 15671Mochel. This allows IA32 systems to transition to/from various 15672sleeping states (e.g. S1, S3), although the lack of a centralized 15673driver model and power-manageable drivers will prevent its 15674(successful) use on most systems. 15675 15676Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 15677submenu, unified IA32 and IA64 options, added new "Boot using ACPI 15678tables" option, etc. 15679 15680Increased the default timeout for the EC driver from 1ms to 10ms 15681(1000 cycles of 10us) to try to address AE_TIME errors during EC 15682transactions. 15683 15684 ---------------------------------------- 15685Summary of changes for this label: 11_02_01 15686 156871) ACPI CA Core Subsystem: 15688 15689ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 15690(QWordAcc keyword). All ACPI 2.0 64-bit support is now 15691implemented. 15692 15693OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 15694changes to support ACPI 2.0 Qword field access. Read/Write 15695PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 15696accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 15697the value parameter for the address space handler interface is now 15698an ACPI_INTEGER. OSL implementations of these interfaces must now 15699handle the case where the Width parameter is 64. 15700 15701Index Fields: Fixed a problem where unaligned bit assembly and 15702disassembly for IndexFields was not supported correctly. 15703 15704Index and Bank Fields: Nested Index and Bank Fields are now 15705supported. During field access, a check is performed to ensure 15706that the value written to an Index or Bank register is not out of 15707the range of the register. The Index (or Bank) register is 15708written before each access to the field data. Future support will 15709include allowing individual IndexFields to be wider than the 15710DataRegister width. 15711 15712Fields: Fixed a problem where the AML interpreter was incorrectly 15713attempting to write beyond the end of a Field/OpRegion. This was 15714a boundary case that occurred when a DWORD field was written to a 15715BYTE access OpRegion, forcing multiple writes and causing the 15716interpreter to write one datum too many. 15717 15718Fields: Fixed a problem with Field/OpRegion access where the 15719starting bit address of a field was incorrectly calculated if the 15720current access type was wider than a byte (WordAcc, DwordAcc, or 15721QwordAcc). 15722 15723Fields: Fixed a problem where forward references to individual 15724FieldUnits (individual Field names within a Field definition) were 15725not resolved during the AML table load. 15726 15727Fields: Fixed a problem where forward references from a Field 15728definition to the parent Operation Region definition were not 15729resolved during the AML table load. 15730 15731Fields: Duplicate FieldUnit names within a scope are now detected 15732during AML table load. 15733 15734Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 15735returned an incorrect name for the root node. 15736 15737Code and Data Size: Code and Data optimizations have permitted new 15738feature development with an actual reduction in the library size. 15739Current core subsystem library sizes are shown below. These are 15740the code and data sizes for the acpica.lib produced by the 15741Microsoft Visual C++ 6.0 compiler, and these values do not include 15742any ACPI driver or OSPM code. The debug version of the code 15743includes the debug output trace mechanism and has a larger code 15744and data size. Note that these values will vary depending on the 15745efficiency of the compiler and the compiler options used during 15746generation. 15747 15748 Previous Release (10_18_01): 15749 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 15750 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 15751 15752 Current Release: 15753 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 15754 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 15755 15756 2) Linux: 15757 15758Improved /proc processor output (Pavel Machek) Re-added 15759MODULE_LICENSE("GPL") to all modules. 15760 15761 3) ASL Compiler version X2030: 15762 15763Duplicate FieldUnit names within a scope are now detected and 15764flagged as errors. 15765 15766 4) Documentation: 15767 15768Programmer Reference updated to reflect OSL and address space 15769handler interface changes described above. 15770 15771---------------------------------------- 15772Summary of changes for this label: 10_18_01 15773 15774ACPI CA Core Subsystem: 15775 15776Fixed a problem with the internal object reference count mechanism 15777that occasionally caused premature object deletion. This resolves 15778all of the outstanding problem reports where an object is deleted 15779in the middle of an interpreter evaluation. Although this problem 15780only showed up in rather obscure cases, the solution to the 15781problem involved an adjustment of all reference counts involving 15782objects attached to namespace nodes. 15783 15784Fixed a problem with Field support in the interpreter where 15785writing to an aligned field whose length is an exact multiple (2 15786or greater) of the field access granularity would cause an attempt 15787to write beyond the end of the field. 15788 15789The top level AML opcode execution functions within the 15790interpreter have been renamed with a more meaningful and 15791consistent naming convention. The modules exmonad.c and 15792exdyadic.c were eliminated. New modules are exoparg1.c, 15793exoparg2.c, exoparg3.c, and exoparg6.c. 15794 15795Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 15796 15797Fixed a problem where the AML debugger was causing some internal 15798objects to not be deleted during subsystem termination. 15799 15800Fixed a problem with the external AcpiEvaluateObject interface 15801where the subsystem would fault if the named object to be 15802evaluated refered to a constant such as Zero, Ones, etc. 15803 15804Fixed a problem with IndexFields and BankFields where the 15805subsystem would fault if the index, data, or bank registers were 15806not defined in the same scope as the field itself. 15807 15808Added printf format string checking for compilers that support 15809this feature. Corrected more than 50 instances of issues with 15810format specifiers within invocations of ACPI_DEBUG_PRINT 15811throughout the core subsystem code. 15812 15813The ASL "Revision" operator now returns the ACPI support level 15814implemented in the core - the value "2" since the ACPI 2.0 support 15815is more than 50% implemented. 15816 15817Enhanced the output of the AML debugger "dump namespace" command 15818to output in a more human-readable form. 15819 15820Current core subsystem library code sizes are shown below. These 15821 15822are the code and data sizes for the acpica.lib produced by the 15823Microsoft Visual C++ 6.0 compiler, and these values do not include 15824any ACPI driver or OSPM code. The debug version of the code 15825includes the full debug trace mechanism -- leading to a much 15826 15827larger code and data size. Note that these values will vary 15828depending on the efficiency of the compiler and the compiler 15829options used during generation. 15830 15831 Previous Label (09_20_01): 15832 Non-Debug Version: 65K Code, 5K Data, 70K Total 15833 Debug Version: 138K Code, 58K Data, 196K Total 15834 15835 This Label: 15836 15837 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 15838 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 15839 15840Linux: 15841 15842Implemented a "Bad BIOS Blacklist" to track machines that have 15843known ASL/AML problems. 15844 15845Enhanced the /proc interface for the thermal zone driver and added 15846support for _HOT (the critical suspend trip point). The 'info' 15847file now includes threshold/policy information, and allows setting 15848of _SCP (cooling preference) and _TZP (polling frequency) values 15849to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 15850frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 15851preference to the passive/quiet mode (if supported by the ASL). 15852 15853Implemented a workaround for a gcc bug that resuted in an OOPs 15854when loading the control method battery driver. 15855 15856 ---------------------------------------- 15857Summary of changes for this label: 09_20_01 15858 15859 ACPI CA Core Subsystem: 15860 15861The AcpiEnableEvent and AcpiDisableEvent interfaces have been 15862modified to allow individual GPE levels to be flagged as wake- 15863enabled (i.e., these GPEs are to remain enabled when the platform 15864sleeps.) 15865 15866The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 15867support wake-enabled GPEs. This means that upon entering the 15868sleep state, all GPEs that are not wake-enabled are disabled. 15869When leaving the sleep state, these GPEs are reenabled. 15870 15871A local double-precision divide/modulo module has been added to 15872enhance portability to OS kernels where a 64-bit math library is 15873not available. The new module is "utmath.c". 15874 15875Several optimizations have been made to reduce the use of CPU 15876stack. Originally over 2K, the maximum stack usage is now below 158772K at 1860 bytes (1.82k) 15878 15879Fixed a problem with the AcpiGetFirmwareTable interface where the 15880root table pointer was not mapped into a logical address properly. 15881 15882Fixed a problem where a NULL pointer was being dereferenced in the 15883interpreter code for the ASL Notify operator. 15884 15885Fixed a problem where the use of the ASL Revision operator 15886returned an error. This operator now returns the current version 15887of the ACPI CA core subsystem. 15888 15889Fixed a problem where objects passed as control method parameters 15890to AcpiEvaluateObject were always deleted at method termination. 15891However, these objects may end up being stored into the namespace 15892by the called method. The object reference count mechanism was 15893applied to these objects instead of a force delete. 15894 15895Fixed a problem where static strings or buffers (contained in the 15896AML code) that are declared as package elements within the ASL 15897code could cause a fault because the interpreter would attempt to 15898delete them. These objects are now marked with the "static 15899object" flag to prevent any attempt to delete them. 15900 15901Implemented an interpreter optimization to use operands directly 15902from the state object instead of extracting the operands to local 15903variables. This reduces stack use and code size, and improves 15904performance. 15905 15906The module exxface.c was eliminated as it was an unnecessary extra 15907layer of code. 15908 15909Current core subsystem library code sizes are shown below. These 15910are the code and data sizes for the acpica.lib produced by the 15911Microsoft Visual C++ 6.0 compiler, and these values do not include 15912any ACPI driver or OSPM code. The debug version of the code 15913includes the full debug trace mechanism -- leading to a much 15914larger code and data size. Note that these values will vary 15915depending on the efficiency of the compiler and the compiler 15916options used during generation. 15917 15918 Non-Debug Version: 65K Code, 5K Data, 70K Total 15919(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 15920Total (Previously 195K) 15921 15922Linux: 15923 15924Support for ACPI 2.0 64-bit integers has been added. All ACPI 15925Integer objects are now 64 bits wide 15926 15927All Acpi data types and structures are now in lower case. Only 15928Acpi macros are upper case for differentiation. 15929 15930 Documentation: 15931 15932Changes to the external interfaces as described above. 15933 15934 ---------------------------------------- 15935Summary of changes for this label: 08_31_01 15936 15937 ACPI CA Core Subsystem: 15938 15939A bug with interpreter implementation of the ASL Divide operator 15940was found and fixed. The implicit function return value (not the 15941explicit store operands) was returning the remainder instead of 15942the quotient. This was a longstanding bug and it fixes several 15943known outstanding issues on various platforms. 15944 15945The ACPI_DEBUG_PRINT and function trace entry/exit macros have 15946been further optimized for size. There are 700 invocations of the 15947DEBUG_PRINT macro alone, so each optimization reduces the size of 15948the debug version of the subsystem significantly. 15949 15950A stack trace mechanism has been implemented. The maximum stack 15951usage is about 2K on 32-bit platforms. The debugger command "stat 15952stack" will display the current maximum stack usage. 15953 15954All public symbols and global variables within the subsystem are 15955now prefixed with the string "Acpi". This keeps all of the 15956symbols grouped together in a kernel map, and avoids conflicts 15957with other kernel subsystems. 15958 15959Most of the internal fixed lookup tables have been moved into the 15960code segment via the const operator. 15961 15962Several enhancements have been made to the interpreter to both 15963reduce the code size and improve performance. 15964 15965Current core subsystem library code sizes are shown below. These 15966are the code and data sizes for the acpica.lib produced by the 15967Microsoft Visual C++ 6.0 compiler, and these values do not include 15968any ACPI driver or OSPM code. The debug version of the code 15969includes the full debug trace mechanism which contains over 700 15970invocations of the DEBUG_PRINT macro, 500 function entry macro 15971invocations, and over 900 function exit macro invocations -- 15972leading to a much larger code and data size. Note that these 15973values will vary depending on the efficiency of the compiler and 15974the compiler options used during generation. 15975 15976 Non-Debug Version: 64K Code, 5K Data, 69K Total 15977Debug Version: 137K Code, 58K Data, 195K Total 15978 15979 Linux: 15980 15981Implemented wbinvd() macro, pending a kernel-wide definition. 15982 15983Fixed /proc/acpi/event to handle poll() and short reads. 15984 15985 ASL Compiler, version X2026: 15986 15987Fixed a problem introduced in the previous label where the AML 15988 15989code emitted for package objects produced packages with zero 15990length. 15991 15992 ---------------------------------------- 15993Summary of changes for this label: 08_16_01 15994 15995ACPI CA Core Subsystem: 15996 15997The following ACPI 2.0 ASL operators have been implemented in the 15998AML interpreter (These are already supported by the Intel ASL 15999compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 16000ToBuffer. Support for 64-bit AML constants is implemented in the 16001AML parser, debugger, and disassembler. 16002 16003The internal memory tracking mechanism (leak detection code) has 16004been upgraded to reduce the memory overhead (a separate tracking 16005block is no longer allocated for each memory allocation), and now 16006supports all of the internal object caches. 16007 16008The data structures and code for the internal object caches have 16009been coelesced and optimized so that there is a single cache and 16010memory list data structure and a single group of functions that 16011implement generic cache management. This has reduced the code 16012size in both the debug and release versions of the subsystem. 16013 16014The DEBUG_PRINT macro(s) have been optimized for size and replaced 16015by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 16016different, because it generates a single call to an internal 16017function. This results in a savings of about 90 bytes per 16018invocation, resulting in an overall code and data savings of about 1601916% in the debug version of the subsystem. 16020 16021 Linux: 16022 16023Fixed C3 disk corruption problems and re-enabled C3 on supporting 16024machines. 16025 16026Integrated low-level sleep code by Patrick Mochel. 16027 16028Further tweaked source code Linuxization. 16029 16030Other minor fixes. 16031 16032 ASL Compiler: 16033 16034Support for ACPI 2.0 variable length packages is fixed/completed. 16035 16036Fixed a problem where the optional length parameter for the ACPI 160372.0 ToString operator. 16038 16039Fixed multiple extraneous error messages when a syntax error is 16040detected within the declaration line of a control method. 16041 16042 ---------------------------------------- 16043Summary of changes for this label: 07_17_01 16044 16045ACPI CA Core Subsystem: 16046 16047Added a new interface named AcpiGetFirmwareTable to obtain any 16048ACPI table via the ACPI signature. The interface can be called at 16049any time during kernel initialization, even before the kernel 16050virtual memory manager is initialized and paging is enabled. This 16051allows kernel subsystems to obtain ACPI tables very early, even 16052before the ACPI CA subsystem is initialized. 16053 16054Fixed a problem where Fields defined with the AnyAcc attribute 16055could be resolved to the incorrect address under the following 16056conditions: 1) the field width is larger than 8 bits and 2) the 16057parent operation region is not defined on a DWORD boundary. 16058 16059Fixed a problem where the interpreter is not being locked during 16060namespace initialization (during execution of the _INI control 16061methods), causing an error when an attempt is made to release it 16062later. 16063 16064ACPI 2.0 support in the AML Interpreter has begun and will be 16065ongoing throughout the rest of this year. In this label, The Mod 16066operator is implemented. 16067 16068Added a new data type to contain full PCI addresses named 16069ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 16070and Function values. 16071 16072 Linux: 16073 16074Enhanced the Linux version of the source code to change most 16075capitalized ACPI type names to lowercase. For example, all 16076instances of ACPI_STATUS are changed to acpi_status. This will 16077result in a large diff, but the change is strictly cosmetic and 16078aligns the CA code closer to the Linux coding standard. 16079 16080OSL Interfaces: 16081 16082The interfaces to the PCI configuration space have been changed to 16083add the PCI Segment number and to split the single 32-bit combined 16084DeviceFunction field into two 16-bit fields. This was 16085accomplished by moving the four values that define an address in 16086PCI configuration space (segment, bus, device, and function) to 16087the new ACPI_PCI_ID structure. 16088 16089The changes to the PCI configuration space interfaces led to a 16090reexamination of the complete set of address space access 16091interfaces for PCI, I/O, and Memory. The previously existing 18 16092interfaces have proven difficult to maintain (any small change 16093must be propagated across at least 6 interfaces) and do not easily 16094allow for future expansion to 64 bits if necessary. Also, on some 16095systems, it would not be appropriate to demultiplex the access 16096width (8, 16, 32,or 64) before calling the OSL if the 16097corresponding native OS interfaces contain a similar access width 16098parameter. For these reasons, the 18 address space interfaces 16099have been replaced by these 6 new ones: 16100 16101AcpiOsReadPciConfiguration 16102AcpiOsWritePciConfiguration 16103AcpiOsReadMemory 16104AcpiOsWriteMemory 16105AcpiOsReadPort 16106AcpiOsWritePort 16107 16108Added a new interface named AcpiOsGetRootPointer to allow the OSL 16109to perform the platform and/or OS-specific actions necessary to 16110obtain the ACPI RSDP table pointer. On IA-32 platforms, this 16111interface will simply call down to the CA core to perform the low- 16112memory search for the table. On IA-64, the RSDP is obtained from 16113EFI. Migrating this interface to the OSL allows the CA core to 16114 16115remain OS and platform independent. 16116 16117Added a new interface named AcpiOsSignal to provide a generic 16118"function code and pointer" interface for various miscellaneous 16119signals and notifications that must be made to the host OS. The 16120first such signals are intended to support the ASL Fatal and 16121Breakpoint operators. In the latter case, the AcpiOsBreakpoint 16122interface has been obsoleted. 16123 16124The definition of the AcpiFormatException interface has been 16125changed to simplify its use. The caller no longer must supply a 16126buffer to the call; A pointer to a const string is now returned 16127directly. This allows the call to be easily used in printf 16128statements, etc. since the caller does not have to manage a local 16129buffer. 16130 16131 16132 ASL Compiler, Version X2025: 16133 16134The ACPI 2.0 Switch/Case/Default operators have been implemented 16135and are fully functional. They will work with all ACPI 1.0 16136interpreters, since the operators are simply translated to If/Else 16137pairs. 16138 16139The ACPI 2.0 ElseIf operator is implemented and will also work 16140with 1.0 interpreters, for the same reason. 16141 16142Implemented support for ACPI 2.0 variable-length packages. These 16143packages have a separate opcode, and their size is determined by 16144the interpreter at run-time. 16145 16146Documentation The ACPI CA Programmer Reference has been updated to 16147reflect the new interfaces and changes to existing interfaces. 16148 16149 ------------------------------------------ 16150Summary of changes for this label: 06_15_01 16151 16152 ACPI CA Core Subsystem: 16153 16154Fixed a problem where a DWORD-accessed field within a Buffer 16155object would get its byte address inadvertently rounded down to 16156the nearest DWORD. Buffers are always Byte-accessible. 16157 16158 ASL Compiler, version X2024: 16159 16160Fixed a problem where the Switch() operator would either fault or 16161hang the compiler. Note however, that the AML code for this ACPI 161622.0 operator is not yet implemented. 16163 16164Compiler uses the new AcpiOsGetTimer interface to obtain compile 16165timings. 16166 16167Implementation of the CreateField operator automatically converts 16168a reference to a named field within a resource descriptor from a 16169byte offset to a bit offset if required. 16170 16171Added some missing named fields from the resource descriptor 16172support. These are the names that are automatically created by the 16173compiler to reference fields within a descriptor. They are only 16174valid at compile time and are not passed through to the AML 16175interpreter. 16176 16177Resource descriptor named fields are now typed as Integers and 16178subject to compile-time typechecking when used in expressions. 16179 16180 ------------------------------------------ 16181Summary of changes for this label: 05_18_01 16182 16183 ACPI CA Core Subsystem: 16184 16185Fixed a couple of problems in the Field support code where bits 16186from adjacent fields could be returned along with the proper field 16187bits. Restructured the field support code to improve performance, 16188readability and maintainability. 16189 16190New DEBUG_PRINTP macro automatically inserts the procedure name 16191into the output, saving hundreds of copies of procedure name 16192strings within the source, shrinking the memory footprint of the 16193debug version of the core subsystem. 16194 16195 Source Code Structure: 16196 16197The source code directory tree was restructured to reflect the 16198current organization of the component architecture. Some files 16199and directories have been moved and/or renamed. 16200 16201 Linux: 16202 16203Fixed leaking kacpidpc processes. 16204 16205Fixed queueing event data even when /proc/acpi/event is not 16206opened. 16207 16208 ASL Compiler, version X2020: 16209 16210Memory allocation performance enhancement - over 24X compile time 16211improvement on large ASL files. Parse nodes and namestring 16212buffers are now allocated from a large internal compiler buffer. 16213 16214The temporary .SRC file is deleted unless the "-s" option is 16215specified 16216 16217The "-d" debug output option now sends all output to the .DBG file 16218instead of the console. 16219 16220"External" second parameter is now optional 16221 16222"ElseIf" syntax now properly allows the predicate 16223 16224Last operand to "Load" now recognized as a Target operand 16225 16226Debug object can now be used anywhere as a normal object. 16227 16228ResourceTemplate now returns an object of type BUFFER 16229 16230EISAID now returns an object of type INTEGER 16231 16232"Index" now works with a STRING operand 16233 16234"LoadTable" now accepts optional parameters 16235 16236"ToString" length parameter is now optional 16237 16238"Interrupt (ResourceType," parse error fixed. 16239 16240"Register" with a user-defined region space parse error fixed 16241 16242Escaped backslash at the end of a string ("\\") scan/parse error 16243fixed 16244 16245"Revision" is now an object of type INTEGER. 16246 16247 16248 16249------------------------------------------ 16250Summary of changes for this label: 05_02_01 16251 16252Linux: 16253 16254/proc/acpi/event now blocks properly. 16255 16256Removed /proc/sys/acpi. You can still dump your DSDT from 16257/proc/acpi/dsdt. 16258 16259 ACPI CA Core Subsystem: 16260 16261Fixed a problem introduced in the previous label where some of the 16262"small" resource descriptor types were not recognized. 16263 16264Improved error messages for the case where an ASL Field is outside 16265the range of the parent operation region. 16266 16267 ASL Compiler, version X2018: 16268 16269 16270Added error detection for ASL Fields that extend beyond the length 16271of the parent operation region (only if the length of the region 16272is known at compile time.) This includes fields that have a 16273minimum access width that is smaller than the parent region, and 16274individual field units that are partially or entirely beyond the 16275extent of the parent. 16276 16277 16278 16279------------------------------------------ 16280Summary of changes for this label: 04_27_01 16281 16282 ACPI CA Core Subsystem: 16283 16284Fixed a problem where the namespace mutex could be released at the 16285wrong time during execution of AcpiRemoveAddressSpaceHandler. 16286 16287Added optional thread ID output for debug traces, to simplify 16288debugging of multiple threads. Added context switch notification 16289when the debug code realizes that a different thread is now 16290executing ACPI code. 16291 16292Some additional external data types have been prefixed with the 16293string "ACPI_" for consistency. This may effect existing code. 16294The data types affected are the external callback typedefs - e.g., 16295 16296WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 16297 16298 Linux: 16299 16300Fixed an issue with the OSL semaphore implementation where a 16301thread was waking up with an error from receiving a SIGCHLD 16302signal. 16303 16304Linux version of ACPI CA now uses the system C library for string 16305manipulation routines instead of a local implementation. 16306 16307Cleaned up comments and removed TBDs. 16308 16309 ASL Compiler, version X2017: 16310 16311Enhanced error detection and reporting for all file I/O 16312operations. 16313 16314 Documentation: 16315 16316Programmer Reference updated to version 1.06. 16317 16318 16319 16320------------------------------------------ 16321Summary of changes for this label: 04_13_01 16322 16323 ACPI CA Core Subsystem: 16324 16325Restructured support for BufferFields and RegionFields. 16326BankFields support is now fully operational. All known 32-bit 16327limitations on field sizes have been removed. Both BufferFields 16328and (Operation) RegionFields are now supported by the same field 16329management code. 16330 16331Resource support now supports QWORD address and IO resources. The 1633216/32/64 bit address structures and the Extended IRQ structure 16333have been changed to properly handle Source Resource strings. 16334 16335A ThreadId of -1 is now used to indicate a "mutex not acquired" 16336condition internally and must never be returned by AcpiOsThreadId. 16337This reserved value was changed from 0 since Unix systems allow a 16338thread ID of 0. 16339 16340Linux: 16341 16342Driver code reorganized to enhance portability 16343 16344Added a kernel configuration option to control ACPI_DEBUG 16345 16346Fixed the EC driver to honor _GLK. 16347 16348ASL Compiler, version X2016: 16349 16350Fixed support for the "FixedHw" keyword. Previously, the FixedHw 16351address space was set to 0, not 0x7f as it should be. 16352 16353 ------------------------------------------ 16354Summary of changes for this label: 03_13_01 16355 16356 ACPI CA Core Subsystem: 16357 16358During ACPI initialization, the _SB_._INI method is now run if 16359present. 16360 16361Notify handler fix - notifies are deferred until the parent method 16362completes execution. This fixes the "mutex already acquired" 16363issue seen occasionally. 16364 16365Part of the "implicit conversion" rules in ACPI 2.0 have been 16366found to cause compatibility problems with existing ASL/AML. The 16367convert "result-to-target-type" implementation has been removed 16368for stores to method Args and Locals. Source operand conversion 16369is still fully implemented. Possible changes to ACPI 2.0 16370specification pending. 16371 16372Fix to AcpiRsCalculatePciRoutingTableLength to return correct 16373length. 16374 16375Fix for compiler warnings for 64-bit compiles. 16376 16377 Linux: 16378 16379/proc output aligned for easier parsing. 16380 16381Release-version compile problem fixed. 16382 16383New kernel configuration options documented in Configure.help. 16384 16385IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 16386context" message. 16387 16388 OSPM: 16389 16390Power resource driver integrated with bus manager. 16391 16392Fixed kernel fault during active cooling for thermal zones. 16393 16394Source Code: 16395 16396The source code tree has been restructured. 16397 16398 16399 16400------------------------------------------ 16401Summary of changes for this label: 03_02_01 16402 16403 Linux OS Services Layer (OSL): 16404 16405Major revision of all Linux-specific code. 16406 16407Modularized all ACPI-specific drivers. 16408 16409Added new thermal zone and power resource drivers. 16410 16411Revamped /proc interface (new functionality is under /proc/acpi). 16412 16413New kernel configuration options. 16414 16415 Linux known issues: 16416 16417New kernel configuration options not documented in Configure.help 16418yet. 16419 16420 16421Module dependencies not currently implemented. If used, they 16422should be loaded in this order: busmgr, power, ec, system, 16423processor, battery, ac_adapter, button, thermal. 16424 16425Modules will not load if CONFIG_MODVERSION is set. 16426 16427IBM 600E - entering S5 may reboot instead of shutting down. 16428 16429IBM 600E - Sleep button may generate "Invalid <NULL> context" 16430message. 16431 16432Some systems may fail with "execution mutex already acquired" 16433message. 16434 16435 ACPI CA Core Subsystem: 16436 16437Added a new OSL Interface, AcpiOsGetThreadId. This was required 16438for the deadlock detection code. Defined to return a non-zero, 32- 16439bit thread ID for the currently executing thread. May be a non- 16440zero constant integer on single-thread systems. 16441 16442Implemented deadlock detection for internal subsystem mutexes. We 16443may add conditional compilation for this code (debug only) later. 16444 16445ASL/AML Mutex object semantics are now fully supported. This 16446includes multiple acquires/releases by owner and support for the 16447 16448Mutex SyncLevel parameter. 16449 16450A new "Force Release" mechanism automatically frees all ASL 16451Mutexes that have been acquired but not released when a thread 16452exits the interpreter. This forces conformance to the ACPI spec 16453("All mutexes must be released when an invocation exits") and 16454prevents deadlocked ASL threads. This mechanism can be expanded 16455(later) to monitor other resource acquisitions if OEM ASL code 16456continues to misbehave (which it will). 16457 16458Several new ACPI exception codes have been added for the Mutex 16459support. 16460 16461Recursive method calls are now allowed and supported (the ACPI 16462spec does in fact allow recursive method calls.) The number of 16463recursive calls is subject to the restrictions imposed by the 16464SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 16465parameter. 16466 16467Implemented support for the SyncLevel parameter for control 16468methods (ACPI 2.0 feature) 16469 16470Fixed a deadlock problem when multiple threads attempted to use 16471the interpreter. 16472 16473Fixed a problem where the string length of a String package 16474element was not always set in a package returned from 16475AcpiEvaluateObject. 16476 16477Fixed a problem where the length of a String package element was 16478not always included in the length of the overall package returned 16479from AcpiEvaluateObject. 16480 16481Added external interfaces (Acpi*) to the ACPI debug memory 16482manager. This manager keeps a list of all outstanding 16483allocations, and can therefore detect memory leaks and attempts to 16484free memory blocks more than once. Useful for code such as the 16485power manager, etc. May not be appropriate for device drivers. 16486Performance with the debug code enabled is slow. 16487 16488The ACPI Global Lock is now an optional hardware element. 16489 16490 ASL Compiler Version X2015: 16491 16492Integrated changes to allow the compiler to be generated on 16493multiple platforms. 16494 16495Linux makefile added to generate the compiler on Linux 16496 16497 Source Code: 16498 16499All platform-specific headers have been moved to their own 16500subdirectory, Include/Platform. 16501 16502New source file added, Interpreter/ammutex.c 16503 16504New header file, Include/acstruct.h 16505 16506 Documentation: 16507 16508The programmer reference has been updated for the following new 16509interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 16510 16511 ------------------------------------------ 16512Summary of changes for this label: 02_08_01 16513 16514Core ACPI CA Subsystem: Fixed a problem where an error was 16515incorrectly returned if the return resource buffer was larger than 16516the actual data (in the resource interfaces). 16517 16518References to named objects within packages are resolved to the 16519 16520full pathname string before packages are returned directly (via 16521the AcpiEvaluateObject interface) or indirectly via the resource 16522interfaces. 16523 16524Linux OS Services Layer (OSL): 16525 16526Improved /proc battery interface. 16527 16528 16529Added C-state debugging output and other miscellaneous fixes. 16530 16531ASL Compiler Version X2014: 16532 16533All defined method arguments can now be used as local variables, 16534including the ones that are not actually passed in as parameters. 16535The compiler tracks initialization of the arguments and issues an 16536exception if they are used without prior assignment (just like 16537locals). 16538 16539The -o option now specifies a filename prefix that is used for all 16540output files, including the AML output file. Otherwise, the 16541default behavior is as follows: 1) the AML goes to the file 16542specified in the DSDT. 2) all other output files use the input 16543source filename as the base. 16544 16545 ------------------------------------------ 16546Summary of changes for this label: 01_25_01 16547 16548Core ACPI CA Subsystem: Restructured the implementation of object 16549store support within the interpreter. This includes support for 16550the Store operator as well as any ASL operators that include a 16551target operand. 16552 16553Partially implemented support for Implicit Result-to-Target 16554conversion. This is when a result object is converted on the fly 16555to the type of an existing target object. Completion of this 16556support is pending further analysis of the ACPI specification 16557concerning this matter. 16558 16559CPU-specific code has been removed from the subsystem (hardware 16560directory). 16561 16562New Power Management Timer functions added 16563 16564Linux OS Services Layer (OSL): Moved system state transition code 16565to the core, fixed it, and modified Linux OSL accordingly. 16566 16567Fixed C2 and C3 latency calculations. 16568 16569 16570We no longer use the compilation date for the version message on 16571initialization, but retrieve the version from AcpiGetSystemInfo(). 16572 16573Incorporated for fix Sony VAIO machines. 16574 16575Documentation: The Programmer Reference has been updated and 16576reformatted. 16577 16578 16579ASL Compiler: Version X2013: Fixed a problem where the line 16580numbering and error reporting could get out of sync in the 16581presence of multiple include files. 16582 16583 ------------------------------------------ 16584Summary of changes for this label: 01_15_01 16585 16586Core ACPI CA Subsystem: 16587 16588Implemented support for type conversions in the execution of the 16589ASL Concatenate operator (The second operand is converted to 16590match the type of the first operand before concatenation.) 16591 16592Support for implicit source operand conversion is partially 16593implemented. The ASL source operand types Integer, Buffer, and 16594String are freely interchangeable for most ASL operators and are 16595converted by the interpreter on the fly as required. Implicit 16596Target operand conversion (where the result is converted to the 16597target type before storing) is not yet implemented. 16598 16599Support for 32-bit and 64-bit BCD integers is implemented. 16600 16601Problem fixed where a field read on an aligned field could cause a 16602read past the end of the field. 16603 16604New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 16605does not return a value, but the caller expects one. (The ASL 16606compiler flags this as a warning.) 16607 16608ASL Compiler: 16609 16610Version X2011: 166111. Static typechecking of all operands is implemented. This 16612prevents the use of invalid objects (such as using a Package where 16613an Integer is required) at compile time instead of at interpreter 16614run-time. 166152. The ASL source line is printed with ALL errors and warnings. 166163. Bug fix for source EOF without final linefeed. 166174. Debug option is split into a parse trace and a namespace trace. 166185. Namespace output option (-n) includes initial values for 16619integers and strings. 166206. Parse-only option added for quick syntax checking. 166217. Compiler checks for duplicate ACPI name declarations 16622 16623Version X2012: 166241. Relaxed typechecking to allow interchangeability between 16625strings, integers, and buffers. These types are now converted by 16626the interpreter at runtime. 166272. Compiler reports time taken by each internal subsystem in the 16628debug output file. 16629 16630 16631 ------------------------------------------ 16632Summary of changes for this label: 12_14_00 16633 16634ASL Compiler: 16635 16636This is the first official release of the compiler. Since the 16637compiler requires elements of the Core Subsystem, this label 16638synchronizes everything. 16639 16640------------------------------------------ 16641Summary of changes for this label: 12_08_00 16642 16643 16644Fixed a problem where named references within the ASL definition 16645of both OperationRegions and CreateXXXFields did not work 16646properly. The symptom was an AE_AML_OPERAND_TYPE during 16647initialization of the region/field. This is similar (but not 16648related internally) to the problem that was fixed in the last 16649label. 16650 16651Implemented both 32-bit and 64-bit support for the BCD ASL 16652functions ToBCD and FromBCD. 16653 16654Updated all legal headers to include "2000" in the copyright 16655years. 16656 16657 ------------------------------------------ 16658Summary of changes for this label: 12_01_00 16659 16660Fixed a problem where method invocations within the ASL definition 16661of both OperationRegions and CreateXXXFields did not work 16662properly. The symptom was an AE_AML_OPERAND_TYPE during 16663initialization of the region/field: 16664 16665 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 16666[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 16667(0x3005) 16668 16669Fixed a problem where operators with more than one nested 16670subexpression would fail. The symptoms were varied, by mostly 16671AE_AML_OPERAND_TYPE errors. This was actually a rather serious 16672problem that has gone unnoticed until now. 16673 16674 Subtract (Add (1,2), Multiply (3,4)) 16675 16676Fixed a problem where AcpiGetHandle didn't quite get fixed in the 16677previous build (The prefix part of a relative path was handled 16678incorrectly). 16679 16680Fixed a problem where Operation Region initialization failed if 16681the operation region name was a "namepath" instead of a simple 16682"nameseg". Symptom was an AE_NO_OPERAND error. 16683 16684Fixed a problem where an assignment to a local variable via the 16685indirect RefOf mechanism only worked for the first such 16686assignment. Subsequent assignments were ignored. 16687 16688 ------------------------------------------ 16689Summary of changes for this label: 11_15_00 16690 16691ACPI 2.0 table support with backwards support for ACPI 1.0 and the 166920.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 16693the AML interpreter does NOT have support for the new 2.0 ASL 16694grammar terms at this time. 16695 16696All ACPI hardware access is via the GAS structures in the ACPI 2.0 16697FADT. 16698 16699All physical memory addresses across all platforms are now 64 bits 16700wide. Logical address width remains dependent on the platform 16701(i.e., "void *"). 16702 16703AcpiOsMapMemory interface changed to a 64-bit physical address. 16704 16705The AML interpreter integer size is now 64 bits, as per the ACPI 167062.0 specification. 16707 16708For backwards compatibility with ACPI 1.0, ACPI tables with a 16709revision number less than 2 use 32-bit integers only. 16710 16711Fixed a problem where the evaluation of OpRegion operands did not 16712always resolve them to numbers properly. 16713 16714------------------------------------------ 16715Summary of changes for this label: 10_20_00 16716 16717Fix for CBN_._STA issue. This fix will allow correct access to 16718CBN_ OpRegions when the _STA returns 0x8. 16719 16720Support to convert ACPI constants (Ones, Zeros, One) to actual 16721values before a package object is returned 16722 16723Fix for method call as predicate to if/while construct causing 16724incorrect if/while behavior 16725 16726Fix for Else block package lengths sometimes calculated wrong (if 16727block > 63 bytes) 16728 16729Fix for Processor object length field, was always zero 16730 16731Table load abort if FACP sanity check fails 16732 16733Fix for problem with Scope(name) if name already exists 16734 16735Warning emitted if a named object referenced cannot be found 16736(resolved) during method execution. 16737 16738 16739 16740 16741 16742------------------------------------------ 16743Summary of changes for this label: 9_29_00 16744 16745New table initialization interfaces: AcpiInitializeSubsystem no 16746longer has any parameters AcpiFindRootPointer - Find the RSDP (if 16747necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 16748>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 16749AcpiLoadTables 16750 16751Note: These interface changes require changes to all existing OSDs 16752 16753The PCI_Config default address space handler is always installed 16754at the root namespace object. 16755 16756------------------------------------------- 16757Summary of changes for this label: 09_15_00 16758 16759The new initialization architecture is implemented. New 16760interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 16761AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 16762 16763(Namespace is automatically loaded when a table is loaded) 16764 16765The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1676652 bytes to 32 bytes. There is usually one of these for every 16767namespace object, so the memory savings is significant. 16768 16769Implemented just-in-time evaluation of the CreateField operators. 16770 16771Bug fixes for IA-64 support have been integrated. 16772 16773Additional code review comments have been implemented 16774 16775The so-called "third pass parse" has been replaced by a final walk 16776through the namespace to initialize all operation regions (address 16777spaces) and fields that have not yet been initialized during the 16778execution of the various _INI and REG methods. 16779 16780New file - namespace/nsinit.c 16781 16782------------------------------------------- 16783Summary of changes for this label: 09_01_00 16784 16785Namespace manager data structures have been reworked to change the 16786primary object from a table to a single object. This has 16787resulted in dynamic memory savings of 3X within the namespace and 167882X overall in the ACPI CA subsystem. 16789 16790Fixed problem where the call to AcpiEvFindPciRootBuses was 16791inadvertently left commented out. 16792 16793Reduced the warning count when generating the source with the GCC 16794compiler. 16795 16796Revision numbers added to each module header showing the 16797SourceSafe version of the file. Please refer to this version 16798number when giving us feedback or comments on individual modules. 16799 16800The main object types within the subsystem have been renamed to 16801clarify their purpose: 16802 16803ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 16804ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 16805ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 16806 16807NOTE: no changes to the initialization sequence are included in 16808this label. 16809 16810------------------------------------------- 16811Summary of changes for this label: 08_23_00 16812 16813Fixed problem where TerminateControlMethod was being called 16814multiple times per method 16815 16816Fixed debugger problem where single stepping caused a semaphore to 16817be oversignalled 16818 16819Improved performance through additional parse object caching - 16820added ACPI_EXTENDED_OP type 16821 16822------------------------------------------- 16823Summary of changes for this label: 08_10_00 16824 16825Parser/Interpreter integration: Eliminated the creation of 16826complete parse trees for ACPI tables and control methods. 16827Instead, parse subtrees are created and then deleted as soon as 16828they are processed (Either entered into the namespace or executed 16829by the interpreter). This reduces the use of dynamic kernel 16830memory significantly. (about 10X) 16831 16832Exception codes broken into classes and renumbered. Be sure to 16833recompile all code that includes acexcep.h. Hopefully we won't 16834have to renumber the codes again now that they are split into 16835classes (environment, programmer, AML code, ACPI table, and 16836internal). 16837 16838Fixed some additional alignment issues in the Resource Manager 16839subcomponent 16840 16841Implemented semaphore tracking in the AcpiExec utility, and fixed 16842several places where mutexes/semaphores were being unlocked 16843without a corresponding lock operation. There are no known 16844semaphore or mutex "leaks" at this time. 16845 16846Fixed the case where an ASL Return operator is used to return an 16847unnamed package. 16848 16849------------------------------------------- 16850Summary of changes for this label: 07_28_00 16851 16852Fixed a problem with the way addresses were calculated in 16853AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 16854manifested itself when a Field was created with WordAccess or 16855DwordAccess, but the field unit defined within the Field was less 16856 16857than a Word or Dword. 16858 16859Fixed a problem in AmlDumpOperands() module's loop to pull 16860operands off of the operand stack to display information. The 16861problem manifested itself as a TLB error on 64-bit systems when 16862accessing an operand stack with two or more operands. 16863 16864Fixed a problem with the PCI configuration space handlers where 16865context was getting confused between accesses. This required a 16866change to the generic address space handler and address space 16867setup definitions. Handlers now get both a global handler context 16868(this is the one passed in by the user when executing 16869AcpiInstallAddressSpaceHandler() and a specific region context 16870that is unique to each region (For example, the _ADR, _SEG and 16871_BBN values associated with a specific region). The generic 16872function definitions have changed to the following: 16873 16874typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 16875UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 16876*HandlerContext, // This used to be void *Context void 16877*RegionContext); // This is an additional parameter 16878 16879typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 16880RegionHandle, UINT32 Function, void *HandlerContext, void 16881**RegionContext); // This used to be **ReturnContext 16882 16883------------------------------------------- 16884Summary of changes for this label: 07_21_00 16885 16886Major file consolidation and rename. All files within the 16887interpreter have been renamed as well as most header files. This 16888was done to prevent collisions with existing files in the host 16889OSs -- filenames such as "config.h" and "global.h" seem to be 16890quite common. The VC project files have been updated. All 16891makefiles will require modification. 16892 16893The parser/interpreter integration continues in Phase 5 with the 16894implementation of a complete 2-pass parse (the AML is parsed 16895twice) for each table; This avoids the construction of a huge 16896parse tree and therefore reduces the amount of dynamic memory 16897required by the subsystem. Greater use of the parse object cache 16898means that performance is unaffected. 16899 16900Many comments from the two code reviews have been rolled in. 16901 16902The 64-bit alignment support is complete. 16903 16904------------------------------------------- 16905Summary of changes for this label: 06_30_00 16906 16907With a nod and a tip of the hat to the technology of yesteryear, 16908we've added support in the source code for 80 column output 16909devices. The code is now mostly constrained to 80 columns or 16910less to support environments and editors that 1) cannot display 16911or print more than 80 characters on a single line, and 2) cannot 16912disable line wrapping. 16913 16914A major restructuring of the namespace data structure has been 16915completed. The result is 1) cleaner and more 16916understandable/maintainable code, and 2) a significant reduction 16917in the dynamic memory requirement for each named ACPI object 16918(almost half). 16919 16920------------------------------------------- 16921Summary of changes for this label: 06_23_00 16922 16923Linux support has been added. In order to obtain approval to get 16924the ACPI CA subsystem into the Linux kernel, we've had to make 16925quite a few changes to the base subsystem that will affect all 16926users (all the changes are generic and OS- independent). The 16927effects of these global changes have been somewhat far reaching. 16928Files have been merged and/or renamed and interfaces have been 16929renamed. The major changes are described below. 16930 16931Osd* interfaces renamed to AcpiOs* to eliminate namespace 16932pollution/confusion within our target kernels. All OSD 16933interfaces must be modified to match the new naming convention. 16934 16935Files merged across the subsystem. A number of the smaller source 16936and header files have been merged to reduce the file count and 16937increase the density of the existing files. There are too many 16938to list here. In general, makefiles that call out individual 16939files will require rebuilding. 16940 16941Interpreter files renamed. All interpreter files now have the 16942prefix am* instead of ie* and is*. 16943 16944Header files renamed: The acapi.h file is now acpixf.h. The 16945acpiosd.h file is now acpiosxf.h. We are removing references to 16946the acronym "API" since it is somewhat windowsy. The new name is 16947"external interface" or xface or xf in the filenames.j 16948 16949 16950All manifest constants have been forced to upper case (some were 16951mixed case.) Also, the string "ACPI_" has been prepended to many 16952(not all) of the constants, typedefs, and structs. 16953 16954The globals "DebugLevel" and "DebugLayer" have been renamed 16955"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 16956 16957All other globals within the subsystem are now prefixed with 16958"AcpiGbl_" Internal procedures within the subsystem are now 16959prefixed with "Acpi" (with only a few exceptions). The original 16960two-letter abbreviation for the subcomponent remains after "Acpi" 16961- for example, CmCallocate became AcpiCmCallocate. 16962 16963Added a source code translation/conversion utility. Used to 16964generate the Linux source code, it can be modified to generate 16965other types of source as well. Can also be used to cleanup 16966existing source by removing extraneous spaces and blank lines. 16967Found in tools/acpisrc/* 16968 16969OsdUnMapMemory was renamed to OsdUnmapMemory and then 16970AcpiOsUnmapMemory. (UnMap became Unmap). 16971 16972A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 16973When set to one, this indicates that the caller wants to use the 16974 16975semaphore as a mutex, not a counting semaphore. ACPI CA uses 16976both types. However, implementers of this call may want to use 16977different OS primitives depending on the type of semaphore 16978requested. For example, some operating systems provide separate 16979 16980"mutex" and "semaphore" interfaces - where the mutex interface is 16981much faster because it doesn't have all the overhead of a full 16982semaphore implementation. 16983 16984Fixed a deadlock problem where a method that accesses the PCI 16985address space can block forever if it is the first access to the 16986space. 16987 16988------------------------------------------- 16989Summary of changes for this label: 06_02_00 16990 16991Support for environments that cannot handle unaligned data 16992accesses (e.g. firmware and OS environments devoid of alignment 16993handler technology namely SAL/EFI and the IA-64 Linux kernel) has 16994been added (via configurable macros) in these three areas: - 16995Transfer of data from the raw AML byte stream is done via byte 16996moves instead of word/dword/qword moves. - External objects are 16997aligned within the user buffer, including package elements (sub- 16998objects). - Conversion of name strings to UINT32 Acpi Names is now 16999done byte-wise. 17000 17001The Store operator was modified to mimic Microsoft's 17002implementation when storing to a Buffer Field. 17003 17004Added a check of the BM_STS bit before entering C3. 17005 17006The methods subdirectory has been obsoleted and removed. A new 17007file, cmeval.c subsumes the functionality. 17008 17009A 16-bit (DOS) version of AcpiExec has been developed. The 17010makefile is under the acpiexec directory. 17011