1---------------------------------------- 203 March 2017. Summary of changes for version 20170303: 3 4 50) ACPICA licensing: 6 7The licensing information at the start of each source code module has 8been updated. In addition to the Intel license, the dual GPLv2/BSD 9license has been added for completeness. Now, a single version of the 10source code should be suitable for all ACPICA customers. This is the 11major change for this release since it affects all source code modules. 12 13 141) ACPICA kernel-resident subsystem: 15 16Fixed two issues with the common asltypes.h header that could cause 17problems in some environments: (Kim Jung-uk) 18 Removed typedef for YY_BUFFER_STATE ? 19 Fixes an error with earlier versions of Flex. 20 Removed use of FILE typedef (which is only defined in stdio.h) 21 22 232) iASL Compiler/Disassembler and Tools: 24 25Disassembler: fixed a regression introduced in 20170224. A fix for a 26memory leak related to resource descriptor tags (names) could fault when 27the disassembler was generated with 64-bit compilers. 28 29The ASLTS test suite has been updated to implement a new testing 30architecture. During generation of the suite from ASL source, both the 31ASL and ASL+ compilers are now validated, as well as the disassembler 32itself (Erik Schmauss). The architecture executes as follows: 33 34 For every ASL source module: 35 Compile (legacy ASL compilation) 36 Disassemble the resulting AML to ASL+ source code 37 Compile the new ASL+ module 38 Perform a binary compare on the legacy AML and the new ASL+ AML 39 The ASLTS suite then executes normally using the AML binaries. 40 41---------------------------------------- 4224 February 2017. Summary of changes for version 20170224: 43 44 451) ACPICA kernel-resident subsystem: 46 47Interpreter: Fixed two issues with the control method return value auto- 48repair feature, where an attempt to double-delete an internal object 49could result in an ACPICA warning (for _CID repair and others). No fault 50occurs, however, because the attempted deletion (actually a release to an 51internal cache) is detected and ignored via object poisoning. 52 53Debugger: Fixed an AML interpreter mutex issue during the single stepping 54of control methods. If certain debugger commands are executed during 55stepping, a mutex aquire/release error could occur. Lv Zheng. 56 57Fixed some issues generating ACPICA with the Intel C compiler by 58restoring the original behavior and compiler-specific include file in 59acenv.h. Lv Zheng. 60 61Example Code and Data Size: These are the sizes for the OS-independent 62acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 63debug version of the code includes the debug output trace mechanism and 64has a much larger code and data size. 65 66 Current Release: 67 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 68 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 69 Previous Release: 70 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 71 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 72 73 742) iASL Compiler/Disassembler and Tools: 75 76iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 77tool has been designed, implemented, and included in this release. The 78key feature of this utility is that the original comments within the 79input ASL file are preserved during the conversion process, and included 80within the converted ASL+ file -- thus creating a transparent conversion 81of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 82 83 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 84converted code 85 86iASL/Disassembler: Improved the detection and correct disassembly of 87Switch/Case operators. This feature detects sequences of if/elseif/else 88operators that originated from ASL Switch/Case/Default operators and 89emits the original operators. David Box. 90 91iASL: Improved the IORT ACPI table support in the following areas. Lv 92Zheng: 93 Clear MappingOffset if the MappingCount is zero. 94 Fix the disassembly of the SMMU GSU interrupt offset. 95 Update the template file for the IORT table. 96 97Disassembler: Enhanced the detection and disassembly of resource 98template/descriptor within a Buffer object. An EndTag descriptor is now 99required to have a zero second byte, since all known ASL compilers emit 100this. This helps eliminate incorrect decisions when a buffer is 101disassembled (false positives on resource templates). 102 103---------------------------------------- 10419 January 2017. Summary of changes for version 20170119: 105 106 1071) General ACPICA software: 108 109Entire source code base: Added the 2017 copyright to all source code 110legal/licensing module headers and utility/tool signons. This includes 111the standard Linux dual-license header. This affects virtually every file 112in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 113the ACPICA test suite. 114 115 1162) iASL Compiler/Disassembler and Tools: 117 118iASL: Removed/fixed an inadvertent remark when a method argument 119containing a reference is used as a target operand within the method (and 120never used as a simple argument), as in the example below. Jeffrey Hugo. 121 122 dsdt.asl 1507: Store(0x1, Arg0) 123 Remark 2146 - ^ Method Argument is never used (Arg0) 124 125All tools: Removed the bit width of the compiler that generated the tool 126from the common signon for all user space tools. This proved to be 127confusing and unnecessary. This includes similar removal of HARDWARE_NAME 128from the generic makefiles (Thomas Petazzoni). Example below. 129 130 Old: 131 ASL+ Optimizing Compiler version 20170119-32 132 ASL+ Optimizing Compiler version 20170119-64 133 134 New: 135 ASL+ Optimizing Compiler version 20170119 136 137---------------------------------------- 13822 December 2016. Summary of changes for version 20161222: 139 140 1411) ACPICA kernel-resident subsystem: 142 143AML Debugger: Implemented a new mechanism to simplify and enhance 144debugger integration into all environments, including kernel debuggers 145and user-space utilities, as well as remote debug services. This 146mechanism essentially consists of new OSL interfaces to support debugger 147initialization/termination, as well as wait/notify interfaces to perform 148the debugger handshake with the host. Lv Zheng. 149 150 New OSL interfaces: 151 AcpiOsInitializeDebugger (void) 152 AcpiOsTerminateDebugger (void) 153 AcpiOsWaitCommandReady (void) 154 AcpiOsNotifyCommandComplete (void) 155 156 New OS services layer: 157 osgendbg.c -- Example implementation, and used for AcpiExec 158 159Update for Generic Address Space (GAS) support: Although the AccessWidth 160and/or BitOffset fields of the GAS are not often used, this change now 161fully supports these fields. This affects the internal support for FADT 162registers, registers in other ACPI data tables, and the AcpiRead and 163AcpiWrite public interfaces. Lv Zheng. 164 165Sleep support: In order to simplify integration of ACPI sleep for the 166various host operating systems, a new OSL interface has been introduced. 167AcpiOsEnterSleep allows the host to perform any required operations 168before the final write to the sleep control register(s) is performed by 169ACPICA. Lv Zheng. 170 171 New OSL interface: 172 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 173 174 Called from these internal interfaces: 175 AcpiHwLegacySleep 176 AcpiHwExtendedSleep 177 178EFI support: Added a very small EFI/ACPICA example application. Provides 179a simple demo for EFI integration, as well as assisting with resolution 180of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 181 182 source/tools/efihello/efihello.c 183 184Local C library: Implemented several new functions to enhance ACPICA 185portability, for environments where these clib functions are not 186available (such as EFI). Lv Zheng: 187 putchar 188 getchar 189 strpbrk 190 strtok 191 memmove 192 193Fixed a regression where occasionally a valid resource descriptor was 194incorrectly detected as invalid at runtime, and a 195AE_AML_NO_RESOURCE_END_TAG was returned. 196 197Fixed a problem with the recently implemented support that enables 198control method invocations as Target operands to many ASL operators. 199Warnings of this form: "Needed type [Reference], found [Processor]" were 200seen at runtime for some method invocations. 201 202Example Code and Data Size: These are the sizes for the OS-independent 203acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 204debug version of the code includes the debug output trace mechanism and 205has a much larger code and data size. 206 207 Current Release: 208 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 209 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 210 Previous Release: 211 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 212 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 213 214 2152) iASL Compiler/Disassembler and Tools: 216 217Disassembler: Enhanced output by adding the capability to detect and 218disassemble ASL Switch/Case statements back to the original ASL source 219code instead of if/else blocks. David Box. 220 221AcpiHelp: Split a large file into separate files based upon 222functionality/purpose. New files are: 223 ahaml.c 224 ahasl.c 225 226---------------------------------------- 22717 November 2016. Summary of changes for version 20161117: 228 229 2301) ACPICA kernel-resident subsystem: 231 232Table Manager: Fixed a regression introduced in 20160729, "FADT support 233cleanup". This was an attempt to remove all references in the source to 234the FADT version 2, which never was a legal version number. It was 235skipped because it was an early version of 64-bit support that was 236eventually abandoned for the current 64-bit support. 237 238Interpreter: Fixed a problem where runtime implicit conversion was 239incorrectly disabled for the ASL operators below. This brings the 240behavior into compliance with the ACPI specification: 241 FromBCD 242 ToBCD 243 ToDecimalString 244 ToHexString 245 ToInteger 246 ToBuffer 247 248Table Manager: Added a new public interface, AcpiPutTable, used to 249release and free an ACPI table returned by AcpiGetTable and related 250interfaces. Lv Zheng. 251 252Example Code and Data Size: These are the sizes for the OS-independent 253acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 254debug version of the code includes the debug output trace mechanism and 255has a much larger code and data size. 256 257 Current Release: 258 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 259 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 260 Previous Release: 261 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 262 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 263 264 2652) iASL Compiler/Disassembler and Tools: 266 267Disassembler: Fixed a regression for disassembly of Resource Template. 268Detection of templates in the AML stream missed some types of templates. 269 270iASL: Fixed a problem where an Access Size error was returned for the PCC 271address space when the AccessSize of the GAS register is greater than a 272DWORD. Hoan Tran. 273 274iASL: Implemented several grammar changes for the operators below. These 275changes are slated for the next version of the ACPI specification: 276 RefOf - Disallow method invocation as an operand 277 CondRefOf - Disallow method invocation as an operand 278 DerefOf - Disallow operands that use the result from operators 279that 280 do not return a reference (Changed TermArg to 281SuperName). 282 283iASL: Control method invocations are now allowed for Target operands, as 284per the ACPI specification. Removed error for using a control method 285invocation as a Target operand. 286 287Disassembler: Improved detection of Resource Templates, Unicode, and 288Strings within Buffer objects. These subtypes do not contain a specific 289opcode to indicate the originating ASL code, and they must be detected by 290other means within the disassembler. 291 292iASL: Implemented an optimization improvement for 32-bit ACPI tables 293(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 294only after 64-bit to 32-bit truncation. A truncation warning message is 295still emitted, however. 296 297AcpiXtract: Implemented handling for both types of line terminators (LF 298or CR/LF) so that it can accept AcpiDump output files from any system. 299Peter Wu. 300 301AcpiBin: Added two new options for comparing AML files: 302 -a: compare and display ALL mismatches 303 -o: start compare at this offset into the second file 304 305---------------------------------------- 30630 September 2016. Summary of changes for version 20160930: 307 308 3091) ACPICA kernel-resident subsystem: 310 311Fixed a regression in the internal AcpiTbFindTable function where a non 312AE_OK exception could inadvertently be returned even if the function did 313not fail. This problem affects the following operators: 314 DataTableRegion 315 LoadTable 316 317Fixed a regression in the LoadTable operator where a load to any 318namespace location other than the root no longer worked properly. 319 320Increased the maximum loop count value that will result in the 321AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 322prevent infinite loops within the AML interpreter and thus the host OS 323kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 3241,048,575). 325 326Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 327acpixf.h file. This allows hosts to easily configure the maximum loop 328count at runtime. 329 330Removed an illegal character in the strtoul64.c file. This character 331caused errors with some C compilers. 332 333Example Code and Data Size: These are the sizes for the OS-independent 334acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 335debug version of the code includes the debug output trace mechanism and 336has a much larger code and data size. 337 338 Current Release: 339 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 340 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 341 Previous Release: 342 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 343 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 344 345 3462) iASL Compiler/Disassembler and Tools: 347 348Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 349the simpler ASL ElseIf keyword. During the conversion, a trailing If 350block could be lost and missing from the disassembled output. 351 352iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 353the missing rule caused a parse error when using the Index operator as an 354operand to ObjectType. This construct now compiles properly. Example: 355 ObjectType(PKG1[4]). 356 357iASL: Correctly handle unresolved symbols in the hardware map file (-lm 358option). Previously, unresolved symbols could cause a protection fault. 359Such symbols are now marked as unresolved in the map file. 360 361iASL: Implemented support to allow control method invocations as an 362operand to the ASL DeRefOf operator. Example: 363 DeRefOf(MTH1(Local0)) 364 365Disassembler: Improved support for the ToPLD ASL macro. Detection of a 366possible _PLD buffer now includes examination of both the normal buffer 367length (16 or 20) as well as the surrounding AML package length. 368 369Disassembler: Fixed a problem with the decoding of complex expressions 370within the Divide operator for ASL+. For the case where both the quotient 371and remainder targets are specified, the entire statement cannot be 372disassembled. Previously, the output incorrectly contained a mix of ASL- 373and ASL+ operators. This mixed statement causes a syntax error when 374compiled. Example: 375 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 376disassembled to: 377 Divide (INT1 + 6, 128, RSLT, QUOT) 378 379iASL/Tools: Added support to process AML and non-AML ACPI tables 380consistently. For the disassembler and AcpiExec, allow all types of ACPI 381tables (AML and data tables). For the iASL -e option, allow only AML 382tables (DSDT/SSDT). 383 384---------------------------------------- 38531 August 2016. Summary of changes for version 20160831: 386 387 3881) ACPICA kernel-resident subsystem: 389 390Improve support for the so-called "module-level code", which is defined 391to be math, logical and control AML opcodes that appear outside of any 392control method. This change improves the support by adding more opcodes 393that can be executed in the manner. Some other issues have been solved, 394and the ASL grammar changes to support such code under all scope 395operators (Device, etc.) are complete. Lv Zheng. 396 397UEFI support: these OSL functions have been implemented. This is an 398additional step toward supporting the AcpiExec utility natively (with 399full hardware access) under UEFI. Marcelo Ferreira. 400 AcpiOsReadPciConfiguration 401 AcpiOsWritePciConfiguration 402 403Fixed a possible mutex error during control method auto-serialization. Lv 404Zheng. 405 406Updated support for the Generic Address Structure by fully implementing 407all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 408Zheng. 409 410Updated the return value for the internal _OSI method. Instead of 4110xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 412for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 413implementations, and will be reflected and clarified in the next version 414of the ACPI specification. 415 416Implemented two new table events that can be passed to an ACPICA table 417handler. These events are used to indicate a table installation or 418uninstallation. These events are used in addition to existed table load 419and unload events. Lv Zheng. 420 421Implemented a cleanup for all internal string-to-integer conversions. 422Consolidate multiple versions of this functionality and limit possible 423bases to either 10 or 16 to simplify the code. Adds a new file, 424utstrtoul64. 425 426Cleanup the inclusion order of the various compiler-specific headers. 427This simplifies build configuration management. The compiler-specific 428headers are now split out from the host-specific headers. Lv Zheng. 429 430Example Code and Data Size: These are the sizes for the OS-independent 431acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 432debug version of the code includes the debug output trace mechanism and 433has a much larger code and data size. 434 435 Current Release: 436 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 437 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 438 439 4402) iASL Compiler/Disassembler and Tools: 441 442iASL/AcpiExec: Added a command line option to display the build date/time 443of the tool (-vd). This can be useful to verify that the correct version 444of the tools are being used. 445 446AML Debugger: Implemented a new subcommand ("execute predef") to execute 447all predefined control methods and names within the current namespace. 448This can be useful for debugging problems with ACPI tables and the ACPI 449namespace. 450 451---------------------------------------- 45229 July 2016. Summary of changes for version 20160729: 453 454 4551) ACPICA kernel-resident subsystem: 456 457Implemented basic UEFI support for the various ACPICA tools. This 458includes: 4591) An OSL to implement the various AcpiOs* interfaces on UEFI. 4602) Support to obtain the ACPI tables on UEFI. 4613) Local implementation of required C library functions not available on 462UEFI. 4634) A front-end (main) function for the tools for UEFI-related 464initialization. 465 466The initial deployment of this support is the AcpiDump utility executing 467as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 468Current environments supported are Linux/Unix. MSVC generation is not 469supported at this time. See the generate/efi/README file for build 470instructions. Lv Zheng. 471 472Future plans include porting the AcpiExec utility to execute natively on 473the platform with I/O and memory access. This will allow viewing/dump of 474the platform namespace and native execution of ACPI control methods that 475access the actual hardware. To fully implement this support, the OSL 476functions below must be implemented with UEFI interfaces. Any community 477help in the implementation of these functions would be appreciated: 478 AcpiOsReadPort 479 AcpiOsWritePort 480 AcpiOsReadMemory 481 AcpiOsWriteMemory 482 AcpiOsReadPciConfiguration 483 AcpiOsWritePciConfiguration 484 485Restructured and standardized the C library configuration for ACPICA, 486resulting in the various configuration options below. This includes a 487global restructuring of the compiler-dependent and platform-dependent 488include files. These changes may affect the existing platform-dependent 489configuration files on some hosts. Lv Zheng. 490 491The current C library configuration options appear below. For any issues, 492it may be helpful to examine the existing compiler-dependent and 493platform-dependent files as examples. Lv Zheng. 494 4951) Linux kernel: 496 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 497library. 498 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 4992) Unix/Windows/BSD applications: 500 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 501library. 502 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 5033) UEFI applications: 504 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 505library. 506 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 5074) UEFI applications (EDK2/StdLib): 508 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 509 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 510 511 512AML interpreter: "module-level code" support. Allows for execution of so- 513called "executable" AML code (math/logical operations, etc.) outside of 514control methods not just at the module level (top level) but also within 515any scope declared outside of a control method - Scope{}, Device{}, 516Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 517 518Simplified the configuration of the "maximum AML loops" global option by 519adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 520modified at runtime. 521 522 523Example Code and Data Size: These are the sizes for the OS-independent 524acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 525debug version of the code includes the debug output trace mechanism and 526has a much larger code and data size. 527 528 Current Release: 529 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 530 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 531 532 5332) iASL Compiler/Disassembler and Tools: 534 535iASL: Add full support for the RASF ACPI table (RAS Features Table). 536Includes disassembler, data table compiler, and header support. 537 538iASL Expand "module-level code" support. Allows for 539compilation/disassembly of so-called "executable" AML code (math/logical 540operations, etc.) outside of control methods not just at the module level 541(top level) but also within any scope declared outside of a control 542method - Scope{}, Device{}, Processor{}, PowerResource{}, and 543ThermalZone{}. 544 545AcpiDump: Added support for dumping all SSDTs on newer versions of 546Windows. These tables are now easily available -- SSDTs are not available 547through the registry on older versions. 548 549---------------------------------------- 55027 May 2016. Summary of changes for version 20160527: 551 552 5531) ACPICA kernel-resident subsystem: 554 555Temporarily reverted the new arbitrary bit length/alignment support in 556AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 557a number of regressions with the new code that need to be fully resolved 558and tested before this support can be finally integrated into ACPICA. 559Apologies for any inconveniences these issues may have caused. 560 561The ACPI message macros are not configurable (ACPI_MSG_ERROR, 562ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 563and ACPI_MSG_BIOS_WARNING). Lv Zheng. 564 565Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 566option. Adds a new return macro, return_STR. Junk-uk Kim. 567 568Example Code and Data Size: These are the sizes for the OS-independent 569acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 570debug version of the code includes the debug output trace mechanism and 571has a much larger code and data size. 572 573 Current Release: 574 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 575 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 576 Previous Release: 577 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 578 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 579 580---------------------------------------- 58122 April 2016. Summary of changes for version 20160422: 582 5831) ACPICA kernel-resident subsystem: 584 585Fixed a regression in the GAS (generic address structure) arbitrary bit 586support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 587and incorrect return values. Lv Zheng. ACPICA BZ 1270. 588 589ACPI 6.0: Added support for new/renamed resource macros. One new argument 590was added to each of these macros, and the original name has been 591deprecated. The AML disassembler will always disassemble to the new 592names. Support for the new macros was added to iASL, disassembler, 593resource manager, and the acpihelp utility. ACPICA BZ 1274. 594 595 I2cSerialBus -> I2cSerialBusV2 596 SpiSerialBus -> SpiSerialBusV2 597 UartSerialBus -> UartSerialBusV2 598 599ACPI 6.0: Added support for a new integer field that was appended to the 600package object returned by the _BIX method. This adds iASL compile-time 601and AML runtime error checking. ACPICA BZ 1273. 602 603ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 604Subspace Type2" (Headers, Disassembler, and data table compiler). 605 606Example Code and Data Size: These are the sizes for the OS-independent 607acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 608debug version of the code includes the debug output trace mechanism and 609has a much larger code and data size. 610 611 Current Release: 612 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 613 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 614 Previous Release: 615 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 616 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 617 618 6192) iASL Compiler/Disassembler and Tools: 620 621iASL: Implemented an ASL grammar extension to allow/enable executable 622"module-level code" to be created and executed under the various 623operators that create new scopes. This type of AML code is already 624supported in all known AML interpreters, and the grammar change will 625appear in the next version of the ACPI specification. Simplifies the 626conditional runtime creation of named objects under these object types: 627 628 Device 629 PowerResource 630 Processor 631 Scope 632 ThermalZone 633 634iASL: Implemented a new ASL extension, a "For" loop macro to add greater 635ease-of-use to the ASL language. The syntax is similar to the 636corresponding C operator, and is implemented with the existing AML While 637opcode -- thus requiring no changes to existing AML interpreters. 638 639 For (Initialize, Predicate, Update) {TermList} 640 641Grammar: 642 ForTerm := 643 For ( 644 Initializer // Nothing | TermArg => ComputationalData 645 Predicate // Nothing | TermArg => ComputationalData 646 Update // Nothing | TermArg => ComputationalData 647 ) {TermList} 648 649 650iASL: The _HID/_ADR detection and validation has been enhanced to search 651under conditionals in order to allow these objects to be conditionally 652created at runtime. 653 654iASL: Fixed several issues with the constant folding feature. The 655improvement allows better detection and resolution of statements that can 656be folded at compile time. ACPICA BZ 1266. 657 658iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 659conversion to the ASL ElseIf operator where incorrect ASL code could be 660generated. 661 662iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 663sometimes an extra (and extraneous) set of parentheses were emitted for 664some combinations of operators. Although this did not cause any problems 665with recompilation of the disassembled code, it made the code more 666difficult to read. David Box. ACPICA BZ 1231. 667 668iASL: Changed to ignore the unreferenced detection for predefined names 669of resource descriptor elements, when the resource descriptor is 670created/defined within a control method. 671 672iASL: Disassembler: Fix a possible fault with externally declared Buffer 673objects. 674 675---------------------------------------- 67618 March 2016. Summary of changes for version 20160318: 677 6781) ACPICA kernel-resident subsystem: 679 680Added support for arbitrary bit lengths and bit offsets for registers 681defined by the Generic Address Structure. Previously, only aligned bit 682lengths of 8/16/32/64 were supported. This was sufficient for many years, 683but recently some machines have been seen that require arbitrary bit- 684level support. ACPICA BZ 1240. Lv Zheng. 685 686Fixed an issue where the \_SB._INI method sometimes must be evaluated 687before any _REG methods are evaluated. Lv Zheng. 688 689Implemented several changes related to ACPI table support 690(Headers/Disassembler/TableCompiler): 691NFIT: For ACPI 6.1, updated to add some additional new fields and 692constants. 693FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 6946). 695DMAR: Added new constants per the 10/2014 DMAR spec. 696IORT: Added new subtable per the 10/2015 IORT spec. 697HEST: For ACPI 6.1, added new constants and new subtable. 698DBG2: Added new constants per the 12/2015 DBG2 spec. 699FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 700ACPICA BZ 1249. 701ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 702 703Updated header support for the DMAR table to match the current version of 704the related spec. 705 706Added extensions to the ASL Concatenate operator to allow any ACPI object 707to be passed as an operand. Any object other than Integer/String/Buffer 708simply returns a string containing the object type. This extends the 709usefulness of the Printf macros. Previously, Concatenate would abort the 710control method if a non-data object was encountered. 711 712ACPICA source code: Deployed the C "const" keyword across the source code 713where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 714 715Example Code and Data Size: These are the sizes for the OS-independent 716acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 717debug version of the code includes the debug output trace mechanism and 718has a much larger code and data size. 719 720 Current Release: 721 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 722 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 723 Previous Release: 724 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 725 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 726 727 7282) iASL Compiler/Disassembler and Tools: 729 730iASL/Disassembler: Improved the heuristic used to determine the number of 731arguments for an externally defined control method (a method in another 732table). Although this is an improvement, there is no deterministic way to 733"guess" the number of method arguments. Only the ACPI 6.0 External opcode 734will completely solve this problem as it is deployed (automatically) in 735newer BIOS code. 736 737iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 738statements that could cause errors when the disassembled file is 739compiled. ACPICA BZ 1243. David Box. 740 741iASL: Fixed a regression caused by the merger of the two versions of the 742local strtoul64. Because of a dependency on a global variable, strtoul64 743could return an error for integers greater than a 32-bit value. ACPICA BZ 7441260. 745 746iASL: Fixed a regression where a fault could occur for an ASL Return 747statement if it invokes a control method that is not resolved. ACPICA BZ 7481264. 749 750AcpiXtract: Improved input file validation: detection of binary files and 751non-acpidump text files. 752 753---------------------------------------- 75412 February 2016. Summary of changes for version 20160212: 755 7561) ACPICA kernel-resident subsystem: 757 758Implemented full support for the ACPI 6.1 specification (released in 759January). This version of the specification is available at: 760http://www.uefi.org/specifications 761 762Only a relatively small number of changes were required in ACPICA to 763support ACPI 6.1, in these areas: 764- New predefined names 765- New _HID values 766- A new subtable for HEST 767- A few other header changes for new values 768 769Ensure \_SB_._INI is executed before any _REG methods are executed. There 770appears to be existing BIOS code that relies on this behavior. Lv Zheng. 771 772Reverted a change made in version 20151218 which enabled method 773invocations to be targets of various ASL operators (SuperName and Target 774grammar elements). While the new behavior is supported by the ACPI 775specification, other AML interpreters do not support this behavior and 776never will. The ACPI specification will be updated for ACPI 6.2 to remove 777this support. Therefore, the change was reverted to the original ACPICA 778behavior. 779 780ACPICA now supports the GCC 6 compiler. 781 782Current Release: (Note: build changes increased sizes) 783 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 784 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 785Previous Release: 786 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 787 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 788 789 7902) iASL Compiler/Disassembler and Tools: 791 792Completed full support for the ACPI 6.0 External() AML opcode. The 793compiler emits an external AML opcode for each ASL External statement. 794This opcode is used by the disassembler to assist with the disassembly of 795external control methods by specifying the required number of arguments 796for the method. AML interpreters do not use this opcode. To ensure that 797interpreters do not even see the opcode, a block of one or more external 798opcodes is surrounded by an "If(0)" construct. As this feature becomes 799commonly deployed in BIOS code, the ability of disassemblers to correctly 800disassemble AML code will be greatly improved. David Box. 801 802iASL: Implemented support for an optional cross-reference output file. 803The -lx option will create a the cross-reference file with the suffix 804"xrf". Three different types of cross-reference are created in this file: 805- List of object references made from within each control method 806- Invocation (caller) list for each user-defined control method 807- List of references to each non-method object in the namespace 808 809iASL: Method invocations as ASL Target operands are now disallowed and 810flagged as errors in preparation for ACPI 6.2 (see the description of the 811problem above). 812 813---------------------------------------- 8148 January 2016. Summary of changes for version 20160108: 815 8161) ACPICA kernel-resident subsystem: 817 818Updated all ACPICA copyrights and signons to 2016: Added the 2016 819copyright to all source code module headers and utility/tool signons. 820This includes the standard Linux dual-license header. This affects 821virtually every file in the ACPICA core subsystem, iASL compiler, all 822ACPICA utilities, and the ACPICA test suite. 823 824Fixed a regression introduced in version 20151218 concerning the 825execution of so-called module-level ASL/AML code. Namespace objects 826created under a module-level If() construct were not properly/fully 827entered into the namespace and could cause an interpreter fault when 828accessed. 829 830Example Code and Data Size: These are the sizes for the OS-independent 831acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 832debug version of the code includes the debug output trace mechanism and 833has a much larger code and data size. 834 835Current Release: 836 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 837 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 838 Previous Release: 839 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 840 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 841 842 8432) iASL Compiler/Disassembler and Tools: 844 845Fixed a problem with the compilation of the GpioIo and GpioInt resource 846descriptors. The _PIN field name was incorrectly defined to be an array 847of 32-bit values, but the _PIN values are in fact 16 bits each. This 848would cause incorrect bit width warnings when using Word (16-bit) fields 849to access the descriptors. 850 851 852---------------------------------------- 85318 December 2015. Summary of changes for version 20151218: 854 8551) ACPICA kernel-resident subsystem: 856 857Implemented per-AML-table execution of "module-level code" as individual 858ACPI tables are loaded into the namespace during ACPICA initialization. 859In other words, any module-level code within an AML table is executed 860immediately after the table is loaded, instead of batched and executed 861after all of the tables have been loaded. This provides compatibility 862with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 863David Box. 864 865To fully support the feature above, the default operation region handlers 866for the SystemMemory, SystemIO, and PCI_Config address spaces are now 867installed before any ACPI tables are loaded. This enables module-level 868code to access these address spaces during the table load and module- 869level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 870Box. 871 872Implemented several changes to the internal _REG support in conjunction 873with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 874utilities for the changes above. Although these tools were changed, host 875operating systems that simply use the default handlers for SystemMemory, 876SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 877 878For example, in the code below, DEV1 is conditionally added to the 879namespace by the DSDT via module-level code that accesses an operation 880region. The SSDT references DEV1 via the Scope operator. DEV1 must be 881created immediately after the DSDT is loaded in order for the SSDT to 882successfully reference DEV1. Previously, this code would cause an 883AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 884fully supported by ACPICA. 885 886 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 887 { 888 OperationRegion (OPR1, SystemMemory, 0x400, 32) 889 Field (OPR1, AnyAcc, NoLock, Preserve) 890 { 891 FLD1, 1 892 } 893 If (FLD1) 894 { 895 Device (\DEV1) 896 { 897 } 898 } 899 } 900 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 901 { 902 External (\DEV1, DeviceObj) 903 Scope (\DEV1) 904 { 905 } 906 } 907 908Fixed an AML interpreter problem where control method invocations were 909not handled correctly when the invocation was itself a SuperName argument 910to another ASL operator. In these cases, the method was not invoked. 911ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 912argument: 913 Store 914 Acquire, Wait 915 CondRefOf, RefOf 916 Decrement, Increment 917 Load, Unload 918 Notify 919 Signal, Release, Reset 920 SizeOf 921 922Implemented automatic String-to-ObjectReference conversion support for 923packages returned by predefined names (such as _DEP). A common BIOS error 924is to add double quotes around an ObjectReference namepath, which turns 925the reference into an unexpected string object. This support detects the 926problem and corrects it before the package is returned to the caller that 927invoked the method. Lv Zheng. 928 929Implemented extensions to the Concatenate operator. Concatenate now 930accepts any type of object, it is not restricted to simply 931Integer/String/Buffer. For objects other than these 3 basic data types, 932the argument is treated as a string containing the name of the object 933type. This expands the utility of Concatenate and the Printf/Fprintf 934macros. ACPICA BZ 1222. 935 936Cleaned up the output of the ASL Debug object. The timer() value is now 937optional and no longer emitted by default. Also, the basic data types of 938Integer/String/Buffer are simply emitted as their values, without a data 939type string -- since the data type is obvious from the output. ACPICA BZ 9401221. 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.6K Code, 28.4K Data, 131.0K Total 949 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 950 Previous Release: 951 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 952 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 953 954 9552) iASL Compiler/Disassembler and Tools: 956 957iASL: Fixed some issues with the ASL Include() operator. This operator 958was incorrectly defined in the iASL parser rules, causing a new scope to 959be opened for the code within the include file. This could lead to 960several issues, including allowing ASL code that is technically illegal 961and not supported by AML interpreters. Note, this does not affect the 962related #include preprocessor operator. ACPICA BZ 1212. 963 964iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 965operator is essentially an ASL macro since there is no AML opcode 966associated with it. The code emitted by the iASL compiler for ElseIf is 967an Else opcode followed immediately by an If opcode. The disassembler 968will now emit an ElseIf if it finds an Else immediately followed by an 969If. This simplifies the decoded ASL, especially for deeply nested 970If..Else and large Switch constructs. Thus, the disassembled code more 971closely follows the original source ASL. ACPICA BZ 1211. Example: 972 973 Old disassembly: 974 Else 975 { 976 If (Arg0 == 0x02) 977 { 978 Local0 = 0x05 979 } 980 } 981 982 New disassembly: 983 ElseIf (Arg0 == 0x02) 984 { 985 Local0 = 0x05 986 } 987 988AcpiExec: Added support for the new module level code behavior and the 989early region installation. This required a small change to the 990initialization, since AcpiExec must install its own operation region 991handlers. 992 993AcpiExec: Added support to make the debug object timer optional. Default 994is timer disabled. This cleans up the debug object output -- the timer 995data is rarely used. 996 997AcpiExec: Multiple ACPI tables are now loaded in the order that they 998appear on the command line. This can be important when there are 999interdependencies/references between the tables. 1000 1001iASL/Templates. Add support to generate template files with multiple 1002SSDTs within a single output file. Also added ommand line support to 1003specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 10041223, 1225. 1005 1006 1007---------------------------------------- 100824 November 2015. Summary of changes for version 20151124: 1009 10101) ACPICA kernel-resident subsystem: 1011 1012Fixed a possible regression for a previous update to FADT handling. The 1013FADT no longer has a fixed table ID, causing some issues with code that 1014was hardwired to a specific ID. Lv Zheng. 1015 1016Fixed a problem where the method auto-serialization could interfere with 1017the current SyncLevel. This change makes the auto-serialization support 1018transparent to the SyncLevel support and management. 1019 1020Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 1021interface is intended for early access to the namespace during the 1022initial namespace device discovery walk. The _SUB method has been seen to 1023access operation regions in some cases, causing errors because the 1024operation regions are not fully initialized. 1025 1026AML Debugger: Fixed some issues with the terminate/quit/exit commands 1027that can cause faults. Lv Zheng. 1028 1029AML Debugger: Add thread ID support so that single-step mode only applies 1030to the AML Debugger thread. This prevents runtime errors within some 1031kernels. Lv Zheng. 1032 1033Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 1034methods that are invoked by this interface are optional, removed warnings 1035emitted for the case where one or more of these methods do not exist. 1036ACPICA BZ 1208, original change by Prarit Bhargava. 1037 1038Made a major pass through the entire ACPICA source code base to 1039standardize formatting that has diverged a bit over time. There are no 1040functional changes, but this will of course cause quite a few code 1041differences from the previous ACPICA release. 1042 1043Example Code and Data Size: These are the sizes for the OS-independent 1044acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1045debug version of the code includes the debug output trace mechanism and 1046has a much larger code and data size. 1047 1048 Current Release: 1049 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 1050 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 1051 Previous Release: 1052 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1053 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 1054 1055 10562) iASL Compiler/Disassembler and Tools: 1057 1058iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 1059definition blocks within a single ASL file and the resulting AML file. 1060Support for this type of file was also added to the various tools that 1061use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 1062example code below shows two definition blocks within the same file: 1063 1064 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 10650x12345678) 1066 { 1067 } 1068 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 1069 { 1070 } 1071 1072iASL: Enhanced typechecking for the Name() operator. All expressions for 1073the value of the named object must be reduced/folded to a single constant 1074at compile time, as per the ACPI specification (the AML definition of 1075Name()). 1076 1077iASL: Fixed some code indentation issues for the -ic and -ia options (C 1078and assembly headers). Now all emitted code correctly begins in column 1. 1079 1080iASL: Added an error message for an attempt to open a Scope() on an 1081object defined in an SSDT. The DSDT is always loaded into the namespace 1082first, so any attempt to open a Scope on an SSDT object will fail at 1083runtime. 1084 1085 1086---------------------------------------- 108730 September 2015. Summary of changes for version 20150930: 1088 10891) ACPICA kernel-resident subsystem: 1090 1091Debugger: Implemented several changes and bug fixes to assist support for 1092the in-kernel version of the AML debugger. Lv Zheng. 1093- Fix the "predefined" command for in-kernel debugger. 1094- Do not enter debug command loop for the help and version commands. 1095- Disallow "execute" command during execution/single-step of a method. 1096 1097Interpreter: Updated runtime typechecking for all operators that have 1098target operands. The operand is resolved and validated that it is legal. 1099For example, the target cannot be a non-data object such as a Device, 1100Mutex, ThermalZone, etc., as per the ACPI specification. 1101 1102Debugger: Fixed the double-mutex user I/O handshake to work when local 1103deadlock detection is enabled. 1104 1105Debugger: limited display of method locals and arguments (LocalX and 1106ArgX) to only those that have actually been initialized. This prevents 1107lines of extraneous output. 1108 1109Updated the definition of the NFIT table to correct the bit polarity of 1110one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 1111 1112Example Code and Data Size: These are the sizes for the OS-independent 1113acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1114debug version of the code includes the debug output trace mechanism and 1115has a much larger code and data size. 1116 1117 Current Release: 1118 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1119 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 1120 Previous Release: 1121 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 1122 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 1123 1124 11252) iASL Compiler/Disassembler and Tools: 1126 1127iASL: Improved the compile-time typechecking for operands of many of the 1128ASL operators: 1129 1130-- Added an option to disable compiler operand/operator typechecking (- 1131ot). 1132 1133-- For the following operators, the TermArg operands are now validated 1134when possible to be Integer data objects: BankField, OperationRegion, 1135DataTableRegion, Buffer, and Package. 1136 1137-- Store (Source, Target): Both the source and target operands are 1138resolved and checked that the operands are both legal. For example, 1139neither operand can be a non-data object such as a Device, Mutex, 1140ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 1141operator can be used to store an object to any type of target object. 1142 1143-- Store (Source, Target): If the source is a Package object, the target 1144must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 1145is a Package, the source must also be a Package. 1146 1147-- Store (Source, Target): A warning is issued if the source and target 1148resolve to the identical named object. 1149 1150-- Store (Source, <method invocation>): An error is generated for the 1151target method invocation, as this construct is not supported by the AML 1152interpreter. 1153 1154-- For all ASL math and logic operators, the target operand must be a 1155data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 1156includes the function return value also. 1157 1158-- External declarations are also included in the typechecking where 1159possible. External objects defined using the UnknownObj keyword cannot be 1160typechecked, however. 1161 1162iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 1163operator: 1164- Legacy code: Index(PKG1, 3) 1165- New ASL+ code: PKG1[3] 1166This completes the ACPI 6.0 ASL+ support as it was the only operator not 1167supported. 1168 1169iASL: Fixed the file suffix for the preprocessor output file (.i). Two 1170spaces were inadvertently appended to the filename, causing file access 1171and deletion problems on some systems. 1172 1173ASL Test Suite (ASLTS): Updated the master makefile to generate all 1174possible compiler output files when building the test suite -- thus 1175exercising these features of the compiler. These files are automatically 1176deleted when the test suite exits. 1177 1178 1179---------------------------------------- 118018 August 2015. Summary of changes for version 20150818: 1181 11821) ACPICA kernel-resident subsystem: 1183 1184Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 1185Zheng. ACPICA BZ 1186. 1186 1187Completed development to ensure that the ACPICA Disassembler and Debugger 1188are fully standalone components of ACPICA. Removed cross-component 1189dependences. Lv Zheng. 1190 1191The max-number-of-AML-loops is now runtime configurable (previously was 1192compile-time only). This is essentially a loop timeout to force-abort 1193infinite AML loops. ACPCIA BZ 1192. 1194 1195Debugger: Cleanup output to dump ACPI names and namepaths without any 1196trailing underscores. Lv Zheng. ACPICA BZ 1135. 1197 1198Removed unnecessary conditional compilations across the Debugger and 1199Disassembler components where entire modules could be left uncompiled. 1200 1201The aapits test is deprecated and has been removed from the ACPICA git 1202tree. The test has never been completed and has not been maintained, thus 1203becoming rather useless. ACPICA BZ 1015, 794. 1204 1205A batch of small changes to close bugzilla and other reports: 1206- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 1207- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 1208- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 1209- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 1210Moore. 1211- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 1212ACPICA BZ 1184. 1213- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 1214operators. 1215- Debugger: Split debugger initialization/termination interfaces. Lv 1216Zheng. 1217- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 1218identification. 1219- AcpiExec: Add debug message during _REG method phase during table 1220load/init. 1221- AcpiNames: Fix a regression where some output was missing and no longer 1222emitted. 1223- Debugger: General cleanup and simplification. Lv Zheng. 1224- Disassembler: Cleanup use of several global option variables. Lv Zheng. 1225 1226Example Code and Data Size: These are the sizes for the OS-independent 1227acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1228debug version of the code includes the debug output trace mechanism and 1229has a much larger code and data size. 1230 1231 Current Release: 1232 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 1233 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 1234 Previous Release: 1235 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 1236 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 1237 1238 12392) iASL Compiler/Disassembler and Tools: 1240 1241AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 1242were not handled properly and caused load errors. Now, properly invoke 1243and use the ACPICA auto-reallocate mechanism for ACPI table data 1244structures. ACPICA BZ 1188 1245 1246AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 1247BZ 1190. 1248 1249AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 1250AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 1251executed during initialization. ACPICA BZ 1187, 1189. 1252 1253iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 1254that corresponds to each disassembled ASL statement, to simplify 1255debugging. ACPICA BZ 1191. 1256 1257Debugger: Add option to the "objects" command to display a summary of the 1258current namespace objects (Object type and count). This is displayed if 1259the command is entered with no arguments. 1260 1261AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 1262 1263 1264---------------------------------------- 126517 July 2015. Summary of changes for version 20150717: 1266 12671) ACPICA kernel-resident subsystem: 1268 1269Improved the partitioning between the Debugger and Disassembler 1270components. This allows the Debugger to be used standalone within kernel 1271code without the Disassembler (which is used for single stepping also). 1272This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 1273 1274Debugger: Implemented a new command to trace the execution of control 1275methods (Trace). This is especially useful for the in-kernel version of 1276the debugger when file I/O may not be available for method trace output. 1277See the ACPICA reference for more information. Lv Zheng. 1278 1279Moved all C library prototypes (used for the local versions of these 1280functions when requested) to a new header, acclib.h 1281Cleaned up the use of non-ANSI C library functions. These functions are 1282implemented locally in ACPICA. Moved all such functions to a common 1283source file, utnonansi.c 1284 1285Debugger: Fixed a problem with the "!!" command (get last command 1286executed) where the debugger could enter an infinite loop and eventually 1287crash. 1288 1289Removed the use of local macros that were used for some of the standard C 1290library functions to automatically cast input parameters. This mostly 1291affected the is* functions where the input parameter is defined to be an 1292int. This required a few modifications to the main ACPICA source code to 1293provide casting for these functions and eliminate possible compiler 1294warnings for these parameters. 1295 1296Across the source code, added additional status/error checking to resolve 1297issues discovered by static source code analysis tools such as Coverity. 1298 1299Example Code and Data Size: These are the sizes for the OS-independent 1300acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1301debug version of the code includes the debug output trace mechanism and 1302has a much larger code and data size. 1303 1304 Current Release: 1305 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 1306 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 1307 Previous Release: 1308 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 1309 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 1310 1311 13122) iASL Compiler/Disassembler and Tools: 1313 1314iASL: Fixed a regression where the device map file feature no longer 1315worked properly when used in conjunction with the disassembler. It only 1316worked properly with the compiler itself. 1317 1318iASL: Implemented a new warning for method LocalX variables that are set 1319but never used (similar to a C compiler such as gcc). This also applies 1320to ArgX variables that are not defined by the parent method, and are 1321instead (legally) used as local variables. 1322 1323iASL/Preprocessor: Finished the pass-through of line numbers from the 1324preprocessor to the compiler. This ensures that compiler errors/warnings 1325have the correct original line numbers and filenames, regardless of any 1326#include files. 1327 1328iASL/Preprocessor: Fixed a couple of issues with comment handling and the 1329pass-through of comments to the preprocessor output file (which becomes 1330the compiler input file). Also fixed a problem with // comments that 1331appear after a math expression. 1332 1333iASL: Added support for the TCPA server table to the table compiler and 1334template generator. (The client table was already previously supported) 1335 1336iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 1337identify the iASL compiler. 1338 1339Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 1340multiple times. The new names are ACPI_SIGN_NEGATIVE and 1341ACPI_SIGN_POSITIVE. 1342 1343AcpiHelp: Update to expand help messages for the iASL preprocessor 1344directives. 1345 1346 1347---------------------------------------- 134819 June 2015. Summary of changes for version 20150619: 1349 1350Two regressions in version 20150616 have been addressed: 1351 1352Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 1353etc.) This update changes ACPICA to only use the standard headers for 1354functions, or the prototypes for the local versions of the C library 1355functions. Across the source code, this required some additional casts 1356for some Clib invocations for portability. Moved all local prototypes to 1357a new file, acclib.h 1358 1359Fixes several problems with recent changes to the handling of the FACS 1360table that could cause some systems not to boot. 1361 1362 1363---------------------------------------- 136416 June 2015. Summary of changes for version 20150616: 1365 1366 13671) ACPICA kernel-resident subsystem: 1368 1369Across the entire ACPICA source code base, the various macros for the C 1370library functions (such as ACPI_STRLEN, etc.) have been removed and 1371replaced by the standard C library names (strlen, etc.) The original 1372purpose for these macros is no longer applicable. This simplification 1373reduces the number of macros used in the ACPICA source code 1374significantly, improving readability and maintainability. 1375 1376Implemented support for a new ACPI table, the OSDT. This table, the 1377"override" SDT, can be loaded directly by the host OS at boot time. It 1378enables the replacement of existing namespace objects that were installed 1379via the DSDT and/or SSDTs. The primary purpose for this is to replace 1380buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 1381for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 1382Moore. 1383 1384Added support for systems with (improperly) two FACS tables -- a "32-bit" 1385table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 1386X field). This change will support both automatically. There continues to 1387be systems found with this issue. This support requires a change to the 1388AcpiSetFirmwareWakingVector interface. Also, a public global variable has 1389been added to allow the host to select which FACS is desired 1390(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 1391details Lv Zheng. 1392 1393Added a new feature to allow for systems that do not contain an FACS. 1394Although this is already supported on hardware-reduced platforms, the 1395feature has been extended for all platforms. The reasoning is that we do 1396not want to abort the entire ACPICA initialization just because the 1397system is seriously buggy and has no FACS. 1398 1399Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 1400not correctly transcribed from the ACPI specification in ACPICA version 140120150515. 1402 1403Implemented support for the _CLS object in the AcpiGetObjectInfo external 1404interface. 1405 1406Updated the definitions of the TCPA and TPM2 ACPI tables to the more 1407recent TCG ACPI Specification, December 14, 2014. Table disassembler and 1408compiler also updated. Note: The TCPA "server" table is not supported by 1409the disassembler/table-compiler at this time. 1410 1411ACPI 6.0: Added definitions for the new GIC version field in the MADT. 1412 1413Example Code and Data Size: These are the sizes for the OS-independent 1414acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1415debug version of the code includes the debug output trace mechanism and 1416has a much larger code and data size. 1417 1418 Current Release: 1419 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 1420 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 1421 Previous Release: 1422 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 1423 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 1424 1425 14262) iASL Compiler/Disassembler and Tools: 1427 1428Disassembler: Fixed a problem with the new symbolic operator disassembler 1429where incorrect ASL code could be emitted in some cases for the "non- 1430commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 1431ShiftRight. The actual problem cases seem to be rather unusual in common 1432ASL code, however. David Box. 1433 1434Modified the linux version of acpidump to obtain ACPI tables from not 1435just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 1436Zheng. 1437 1438iASL: Fixed a problem where the user preprocessor output file (.i) 1439contained extra data that was not expected. The compiler was using this 1440file as a temporary file and passed through #line directives in order to 1441keep compiler error messages in sync with the input file and line number 1442across multiple include files. The (.i) is no longer a temporary file as 1443the compiler uses a new, different file for the original purpose. 1444 1445iASL: Fixed a problem where comments within the original ASL source code 1446file were not passed through to the preprocessor output file, nor any 1447listing files. 1448 1449iASL: Fixed some issues for the handling of the "#include" preprocessor 1450directive and the similar (but not the same) "Include" ASL operator. 1451 1452iASL: Add support for the new OSDT in both the disassembler and compiler. 1453 1454iASL: Fixed a problem with the constant folding support where a Buffer 1455object could be incorrectly generated (incorrectly formed) during a 1456conversion to a Store() operator. 1457 1458AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 1459description text for the _REV predefined name. _REV now permanently 1460returns 2, as per the ACPI 6.0 specification. 1461 1462Debugger: Enhanced the output of the Debug ASL object for references 1463produced by the Index operator. For Buffers and strings, only output the 1464actual byte pointed to by the index. For packages, only print the single 1465package element decoded by the index. Previously, the entire 1466buffer/string/package was emitted. 1467 1468iASL/Table-compiler: Fixed a regression where the "generic" data types 1469were no longer recognized, causing errors. 1470 1471 1472---------------------------------------- 147315 May 2015. Summary of changes for version 20150515: 1474 1475This release implements most of ACPI 6.0 as described below. 1476 14771) ACPICA kernel-resident subsystem: 1478 1479Implemented runtime argument checking and return value checking for all 1480new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 1481_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 1482 1483Example Code and Data Size: These are the sizes for the OS-independent 1484acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1485debug version of the code includes the debug output trace mechanism and 1486has a much larger code and data size. 1487 1488 Current Release: 1489 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 1490 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 1491 Previous Release: 1492 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 1493 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 1494 1495 14962) iASL Compiler/Disassembler and Tools: 1497 1498iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 1499names (argument count validation and return value typechecking.) 1500 1501iASL disassembler and table compiler: implemented support for all new 1502ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 1503 1504iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 1505tables: FADT, MADT. 1506 1507iASL preprocessor: Added a new directive to enable inclusion of binary 1508blobs into ASL code. The new directive is #includebuffer. It takes a 1509binary file as input and emits a named ascii buffer object into the ASL 1510code. 1511 1512AcpiHelp: Added support for all new ACPI 6.0 predefined names. 1513 1514AcpiHelp: Added a new option, -d, to display all iASL preprocessor 1515directives. 1516 1517AcpiHelp: Added a new option, -t, to display all known/supported ACPI 1518tables. 1519 1520 1521---------------------------------------- 152210 April 2015. Summary of changes for version 20150410: 1523 1524Reverted a change introduced in version 20150408 that caused 1525a regression in the disassembler where incorrect operator 1526symbols could be emitted. 1527 1528 1529---------------------------------------- 153008 April 2015. Summary of changes for version 20150408: 1531 1532 15331) ACPICA kernel-resident subsystem: 1534 1535Permanently set the return value for the _REV predefined name. It now 1536returns 2 (was 5). This matches other ACPI implementations. _REV will be 1537deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 1538for ACPI 2.0 and later. It should never be used to differentiate or 1539identify operating systems. 1540 1541Added the "Windows 2015" string to the _OSI support. ACPICA will now 1542return TRUE to a query with this string. 1543 1544Fixed several issues with the local version of the printf function. 1545 1546Added the C99 compiler option (-std=c99) to the Unix makefiles. 1547 1548 Current Release: 1549 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 1550 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 1551 Previous Release: 1552 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1553 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1554 1555 15562) iASL Compiler/Disassembler and Tools: 1557 1558iASL: Implemented an enhancement to the constant folding feature to 1559transform the parse tree to a simple Store operation whenever possible: 1560 Add (2, 3, X) ==> is converted to: Store (5, X) 1561 X = 2 + 3 ==> is converted to: Store (5, X) 1562 1563Updated support for the SLIC table (Software Licensing Description Table) 1564in both the Data Table compiler and the disassembler. The SLIC table 1565support now conforms to "Microsoft Software Licensing Tables (SLIC and 1566MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 1567following the ACPI header is now defined to be "Proprietary Data", and as 1568such, can only be entered or displayed as a hex data block. 1569 1570Implemented full support for the MSDM table as described in the document 1571above. Note: The format of MSDM is similar to SLIC. Any MSDM data 1572following the ACPI header is defined to be "Proprietary Data", and can 1573only be entered or displayed as a hex data block. 1574 1575Implemented the -Pn option for the iASL Table Compiler (was only 1576implemented for the ASL compiler). This option disables the iASL 1577preprocessor. 1578 1579Disassembler: For disassembly of Data Tables, added a comment field 1580around the Ascii equivalent data that is emitted as part of the "Raw 1581Table Data" block. This prevents the iASL Preprocessor from possible 1582confusion if/when the table is compiled. 1583 1584Disassembler: Added an option (-df) to force the disassembler to assume 1585that the table being disassembled contains valid AML. This feature is 1586useful for disassembling AML files that contain ACPI signatures other 1587than DSDT or SSDT (such as OEMx or other signatures). 1588 1589Changes for the EFI version of the tools: 15901) Fixed a build error/issue 15912) Fixed a cast warning 1592 1593iASL: Fixed a path issue with the __FILE__ operator by making the 1594directory prefix optional within the internal SplitInputFilename 1595function. 1596 1597Debugger: Removed some unused global variables. 1598 1599Tests: Updated the makefile for proper generation of the AAPITS suite. 1600 1601 1602---------------------------------------- 160304 February 2015. Summary of changes for version 20150204: 1604 1605ACPICA kernel-resident subsystem: 1606 1607Updated all ACPICA copyrights and signons to 2014. Added the 2014 1608copyright to all module headers and signons, including the standard Linux 1609header. This affects virtually every file in the ACPICA core subsystem, 1610iASL compiler, all ACPICA utilities, and the test suites. 1611 1612Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 1613A raw gpe handling mechanism was created to allow better handling of GPE 1614storms that aren't easily managed by the normal handler. The raw handler 1615allows disabling/renabling of the the GPE so that interrupt storms can be 1616avoided in cases where events cannot be timely serviced. In this 1617scenario, handlers should use the AcpiSetGpe() API to disable/enable the 1618GPE. This API will leave the reference counts undisturbed, thereby 1619preventing unintentional clearing of the GPE when the intent in only to 1620temporarily disable it. Raw handlers allow enabling and disabling of a 1621GPE by removing GPE register locking. As such, raw handlers much provide 1622their own locks while using GPE API's to protect access to GPE data 1623structures. 1624Lv Zheng 1625 1626Events: Always modify GPE registers under the GPE lock. 1627Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 1628values. Reported as bug by joe.liu@apple.com. 1629 1630Unix makefiles: Separate option to disable optimizations and 1631_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 1632NOOPT disable option and creates a separate flag (NOFORTIFY) for this 1633purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 1634errors when building ACPICA. This allows disabling the option without 1635also having to disable optimazations. 1636David Box 1637 1638 Current Release: 1639 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1640 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 1641 1642-- 1643-------------------------------------- 164407 November 2014. Summary of changes for version 20141107: 1645 1646This release is available at https://acpica.org/downloads 1647 1648This release introduces and implements language extensions to ASL that 1649provide support for symbolic ("C-style") operators and expressions. These 1650language extensions are known collectively as ASL+. 1651 1652 16531) iASL Compiler/Disassembler and Tools: 1654 1655Disassembler: Fixed a problem with disassembly of the UartSerialBus 1656macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 1657Box. 1658 1659Disassembler: Fixed the Unicode macro support to add escape sequences. 1660All non-printable ASCII values are emitted as escape sequences, as well 1661as the standard escapes for quote and backslash. Ensures that the 1662disassembled macro can be correctly recompiled. 1663 1664iASL: Added Printf/Fprintf macros for formatted output. These macros are 1665translated to existing AML Concatenate and Store operations. Printf 1666writes to the ASL Debug object. Fprintf allows the specification of an 1667ASL name as the target. Only a single format specifier is required, %o, 1668since the AML interpreter dynamically converts objects to the required 1669type. David E. Box. 1670 1671 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 1672 (Concatenate (Concatenate (Concatenate ("", Arg0), 1673 ": Unexpected value for "), Arg1), ", "), Arg2), 1674 " at line "), Arg3), Debug) 1675 1676 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 1677 Arg0, Arg1, Arg2, Arg3) 1678 1679 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 1680 ("", Arg1), ": "), Arg0), " Successful"), STR1) 1681 1682 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 1683 1684iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 1685ASL parse tree before the AML code is generated. This allows blocks of 1686ASL code to be removed in order to help locate and identify problem 1687devices and/or code. David E. Box. 1688 1689AcpiExec: Added support (-fi) for an optional namespace object 1690initialization file. This file specifies initial values for namespace 1691objects as necessary for debugging and testing different ASL code paths 1692that may be taken as a result of BIOS options. 1693 1694 16952) Overview of symbolic operator support for ASL (ASL+) 1696------------------------------------------------------- 1697 1698As an extension to the ASL language, iASL implements support for symbolic 1699(C-style) operators for math and logical expressions. This can greatly 1700simplify ASL code as well as improve both readability and 1701maintainability. These language extensions can exist concurrently with 1702all legacy ASL code and expressions. 1703 1704The symbolic extensions are 100% compatible with existing AML 1705interpreters, since no new AML opcodes are created. To implement the 1706extensions, the iASL compiler transforms the symbolic expressions into 1707the legacy ASL/AML equivalents at compile time. 1708 1709Full symbolic expressions are supported, along with the standard C 1710precedence and associativity rules. 1711 1712Full disassembler support for the symbolic expressions is provided, and 1713creates an automatic migration path for existing ASL code to ASL+ code 1714via the disassembly process. By default, the disassembler now emits ASL+ 1715code with symbolic expressions. An option (-dl) is provided to force the 1716disassembler to emit legacy ASL code if desired. 1717 1718Below is the complete list of the currently supported symbolic operators 1719with examples. See the iASL User Guide for additional information. 1720 1721 1722ASL+ Syntax Legacy ASL Equivalent 1723----------- --------------------- 1724 1725 // Math operators 1726 1727Z = X + Y Add (X, Y, Z) 1728Z = X - Y Subtract (X, Y, Z) 1729Z = X * Y Multiply (X, Y, Z) 1730Z = X / Y Divide (X, Y, , Z) 1731Z = X % Y Mod (X, Y, Z) 1732Z = X << Y ShiftLeft (X, Y, Z) 1733Z = X >> Y ShiftRight (X, Y, Z) 1734Z = X & Y And (X, Y, Z) 1735Z = X | Y Or (X, Y, Z) 1736Z = X ^ Y Xor (X, Y, Z) 1737Z = ~X Not (X, Z) 1738X++ Increment (X) 1739X-- Decrement (X) 1740 1741 // Logical operators 1742 1743(X == Y) LEqual (X, Y) 1744(X != Y) LNotEqual (X, Y) 1745(X < Y) LLess (X, Y) 1746(X > Y) LGreater (X, Y) 1747(X <= Y) LLessEqual (X, Y) 1748(X >= Y) LGreaterEqual (X, Y) 1749(X && Y) LAnd (X, Y) 1750(X || Y) LOr (X, Y) 1751(!X) LNot (X) 1752 1753 // Assignment and compound assignment operations 1754 1755X = Y Store (Y, X) 1756X += Y Add (X, Y, X) 1757X -= Y Subtract (X, Y, X) 1758X *= Y Multiply (X, Y, X) 1759X /= Y Divide (X, Y, , X) 1760X %= Y Mod (X, Y, X) 1761X <<= Y ShiftLeft (X, Y, X) 1762X >>= Y ShiftRight (X, Y, X) 1763X &= Y And (X, Y, X) 1764X |= Y Or (X, Y, X) 1765X ^= Y Xor (X, Y, X) 1766 1767 17683) ASL+ Examples: 1769----------------- 1770 1771Legacy ASL: 1772 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 1773 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 17740x03FB), 1775 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 1776 { 1777 And (MEMB, 0xFFFFFFF0, SRMB) 1778 Store (MEMB, Local2) 1779 Store (PDBM, Local1) 1780 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 1781 Store (SRMB, MEMB) 1782 Or (PDBM, 0x02, PDBM) 1783 } 1784 1785ASL+ version: 1786 If (((R510 & 0x03FB) == 0x02E0) || 1787 ((R520 & 0x03FB) == 0x02E0) || 1788 ((R530 & 0x03FB) == 0x02E0) || 1789 ((R540 & 0x03FB) == 0x02E0)) 1790 { 1791 SRMB = (MEMB & 0xFFFFFFF0) 1792 Local2 = MEMB 1793 Local1 = PDBM 1794 PDBM &= 0xFFFFFFFFFFFFFFF9 1795 MEMB = SRMB 1796 PDBM |= 0x02 1797 } 1798 1799Legacy ASL: 1800 Store (0x1234, Local1) 1801 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 1802 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 1803 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 1804 Store (Index (PKG1, 0x03), Local6) 1805 Store (Add (Local3, Local2), Debug) 1806 Add (Local1, 0x0F, Local2) 1807 Add (Local1, Multiply (Local2, Local3), Local2) 1808 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 1809 1810ASL+ version: 1811 Local1 = 0x1234 1812 Local3 = (((Local1 + TEST) + 0x20) * Local2) 1813 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 1814 Local3 = (Local1 + (TEST + (0x20 * Local2))) 1815 Local6 = Index (PKG1, 0x03) 1816 Debug = (Local3 + Local2) 1817 Local2 = (Local1 + 0x0F) 1818 Local2 = (Local1 + (Local2 * Local3)) 1819 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 1820 1821 1822---------------------------------------- 182326 September 2014. Summary of changes for version 20140926: 1824 18251) ACPICA kernel-resident subsystem: 1826 1827Updated the GPIO operation region handler interface (GeneralPurposeIo). 1828In order to support GPIO Connection objects with multiple pins, along 1829with the related Field objects, the following changes to the interface 1830have been made: The Address is now defined to be the offset in bits of 1831the field unit from the previous invocation of a Connection. It can be 1832viewed as a "Pin Number Index" into the connection resource descriptor. 1833The BitWidth is the exact bit width of the field. It is usually one bit, 1834but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 1835additional information and examples. 1836 1837GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 1838corresponding _Lxx/_Exx methods are disabled (they may have been enabled 1839by the firmware), so that they cannot fire until they are enabled via 1840AcpiUpdateAllGpes. Rafael J. Wysocki. 1841 1842Added a new return flag for the Event/GPE status interfaces -- 1843AcpiGetEventStatus and AcpiGetGpeStatus. The new 1844ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 1845GPE currently has a handler associated with it, and can thus actually 1846affect the system. Lv Zheng. 1847 1848Example Code and Data Size: These are the sizes for the OS-independent 1849acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1850debug version of the code includes the debug output trace mechanism and 1851has a much larger code and data size. 1852 1853 Current Release: 1854 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 1855 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 1856 Previous Release: 1857 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1858 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1859 18602) iASL Compiler/Disassembler and Tools: 1861 1862iASL: Fixed a memory allocation/free regression introduced in 20140828 1863that could cause the compiler to crash. This was introduced inadvertently 1864during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 18651113. 1866 1867iASL: Removed two error messages that have been found to create false 1868positives, until they can be fixed and fully validated (ACPICA BZ 1112): 18691) Illegal forward reference within a method 18702) Illegal reference across two methods 1871 1872iASL: Implemented a new option (-lm) to create a hardware mapping file 1873that summarizes all GPIO, I2C, SPI, and UART connections. This option 1874works for both the compiler and disassembler. See the iASL compiler user 1875guide for additional information and examples (section 6.4.6). 1876 1877AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 1878version 2. This corrects the AE_BAD_HEADER exception seen on systems with 1879a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 1880 1881AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 1882unless STDIN is actually a terminal. Assists with batch-mode processing. 1883ACPICA BZ 1114. 1884 1885Disassembler/AcpiHelp: Added another large group of recognized _HID 1886values. 1887 1888 1889---------------------------------------- 189028 August 2014. Summary of changes for version 20140828: 1891 18921) ACPICA kernel-resident subsystem: 1893 1894Fixed a problem related to the internal use of the Timer() operator where 1895a 64-bit divide could cause an attempted link to a double-precision math 1896library. This divide is not actually necessary, so the code was 1897restructured to eliminate it. Lv Zheng. 1898 1899ACPI 5.1: Added support for the runtime validation of the _DSD package 1900(similar to the iASL support). 1901 1902ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 1903SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 1904 1905Example Code and Data Size: These are the sizes for the OS-independent 1906acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1907debug version of the code includes the debug output trace mechanism and 1908has a much larger code and data size. 1909 1910 Current Release: 1911 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1912 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1913 Previous Release: 1914 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 1915 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 1916 19172) iASL Compiler/Disassembler and Tools: 1918 1919AcpiExec: Fixed a problem on unix systems where the original terminal 1920state was not always properly restored upon exit. Seen when using the -v 1921option. ACPICA BZ 1104. 1922 1923iASL: Fixed a problem with the validation of the ranges/length within the 1924Memory24 resource descriptor. There was a boundary condition when the 1925range was equal to the (length -1) caused by the fact that these values 1926are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 1927 1928Disassembler: Fixed a problem with the GpioInt descriptor interrupt 1929polarity 1930flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 1931is 1932now supported properly. 1933 1934ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 1935in the disassembler, data table compiler, and table template generator. 1936 1937iASL: Added a requirement for Device() objects that one of either a _HID 1938or _ADR must exist within the scope of a Device, as per the ACPI 1939specification. Remove a similar requirement that was incorrectly in place 1940for the _DSD object. 1941 1942iASL: Added error detection for illegal named references within control 1943methods that would cause runtime failures. Now trapped as errors are: 1) 1944References to objects within a non-parent control method. 2) Forward 1945references (within a method) -- for control methods, AML interpreters use 1946a one-pass parse of control methods. ACPICA BZ 1008. 1947 1948iASL: Added error checking for dependencies related to the _PSx power 1949methods. ACPICA BZ 1029. 19501) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 1951_PS3. 19522) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 1953scope. 1954 1955iASL and table compiler: Cleanup miscellaneous memory leaks by fully 1956deploying the existing object and string caches and adding new caches for 1957the table compiler. 1958 1959iASL: Split the huge parser source file into multiple subfiles to improve 1960manageability. Generation now requires the M4 macro preprocessor, which 1961is part of the Bison distribution on both unix and windows platforms. 1962 1963AcpiSrc: Fixed and removed all extraneous warnings generated during 1964entire ACPICA source code scan and/or conversion. 1965 1966 1967---------------------------------------- 1968 196924 July 2014. Summary of changes for version 20140724: 1970 1971The ACPI 5.1 specification has been released and is available at: 1972http://uefi.org/specs/access 1973 1974 19750) ACPI 5.1 support in ACPICA: 1976 1977ACPI 5.1 is fully supported in ACPICA as of this release. 1978 1979New predefined names. Support includes iASL and runtime ACPICA 1980validation. 1981 _CCA (Cache Coherency Attribute). 1982 _DSD (Device-Specific Data). David Box. 1983 1984Modifications to existing ACPI tables. Support includes headers, iASL 1985Data Table compiler, disassembler, and the template generator. 1986 FADT - New fields and flags. Graeme Gregory. 1987 GTDT - One new subtable and new fields. Tomasz Nowicki. 1988 MADT - Two new subtables. Tomasz Nowicki. 1989 PCCT - One new subtable. 1990 1991Miscellaneous. 1992 New notification type for System Resource Affinity change events. 1993 1994 19951) ACPICA kernel-resident subsystem: 1996 1997Fixed a regression introduced in 20140627 where a fault can happen during 1998the deletion of Alias AML namespace objects. The problem affected both 1999the core ACPICA and the ACPICA tools including iASL and AcpiExec. 2000 2001Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 2002simple mechanism to enable wake GPEs that have no associated handler or 2003control method. Rafael Wysocki. 2004 2005Updated the AcpiEnableGpe interface to disallow the enable if there is no 2006handler or control method associated with the particular GPE. This will 2007help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 2008 2009Updated GPE handling and dispatch by disabling the GPE before clearing 2010the status bit for edge-triggered GPEs. Lv Zheng. 2011 2012Added Timer() support to the AML Debug object. The current timer value is 2013now displayed with each invocation of (Store to) the debug object to 2014enable simple generation of execution times for AML code (method 2015execution for example.) ACPICA BZ 1093. 2016 2017Example Code and Data Size: These are the sizes for the OS-independent 2018acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2019debug version of the code includes the debug output trace mechanism and 2020has a much larger code and data size. 2021 2022 Current Release: 2023 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 2024 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 2025 Previous Release: 2026 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 2027 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 2028 2029 20302) iASL Compiler/Disassembler and Tools: 2031 2032Fixed an issue with the recently added local printf implementation, 2033concerning width/precision specifiers that could cause incorrect output. 2034Lv Zheng. ACPICA BZ 1094. 2035 2036Disassembler: Added support to detect buffers that contain UUIDs and 2037disassemble them to an invocation of the ToUUID operator. Also emit 2038commented descriptions of known ACPI-related UUIDs. 2039 2040AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 2041-u. Adds three new files. 2042 2043iASL: Update table compiler and disassembler for DMAR table changes that 2044were introduced in September 2013. With assistance by David Woodhouse. 2045 2046---------------------------------------- 204727 June 2014. Summary of changes for version 20140627: 2048 20491) ACPICA kernel-resident subsystem: 2050 2051Formatted Output: Implemented local versions of standard formatted output 2052utilities such as printf, etc. Over time, it has been discovered that 2053there are in fact many portability issues with printf, and the addition 2054of this feature will fix/prevent these issues once and for all. Some 2055known issues are summarized below: 2056 20571) Output of 64-bit values is not portable. For example, UINT64 is %ull 2058for the Linux kernel and is %uI64 for some MSVC versions. 20592) Invoking printf consistently in a manner that is portable across both 206032-bit and 64-bit platforms is difficult at best in many situations. 20613) The output format for pointers varies from system to system (leading 2062zeros especially), and leads to inconsistent output from ACPICA across 2063platforms. 20644) Certain platform-specific printf formats may conflict with ACPICA use. 20655) If there is no local C library available, ACPICA now has local support 2066for printf. 2067 2068-- To address these printf issues in a complete manner, ACPICA now 2069directly implements a small subset of printf format specifiers, only 2070those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 2071 2072Implemented support for ACPICA generation within the EFI environment. 2073Initially, the AcpiDump utility is supported in the UEFI shell 2074environment. Lv Zheng. 2075 2076Added a new external interface, AcpiLogError, to improve ACPICA 2077portability. This allows the host to redirect error messages from the 2078ACPICA utilities. Lv Zheng. 2079 2080Added and deployed new OSL file I/O interfaces to improve ACPICA 2081portability: 2082 AcpiOsOpenFile 2083 AcpiOsCloseFile 2084 AcpiOsReadFile 2085 AcpiOsWriteFile 2086 AcpiOsGetFileOffset 2087 AcpiOsSetFileOffset 2088There are C library implementations of these functions in the new file 2089service_layers/oslibcfs.c -- however, the functions can be implemented by 2090the local host in any way necessary. Lv Zheng. 2091 2092Implemented a mechanism to disable/enable ACPI table checksum validation 2093at runtime. This can be useful when loading tables very early during OS 2094initialization when it may not be possible to map the entire table in 2095order to compute the checksum. Lv Zheng. 2096 2097Fixed a buffer allocation issue for the Generic Serial Bus support. 2098Originally, a fixed buffer length was used. This change allows for 2099variable-length buffers based upon the protocol indicated by the field 2100access attributes. Reported by Lan Tianyu. Lv Zheng. 2101 2102Fixed a problem where an object detached from a namespace node was not 2103properly terminated/cleared and could cause a circular list problem if 2104reattached. ACPICA BZ 1063. David Box. 2105 2106Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 2107 2108Fixed a possible memory leak in an error return path within the function 2109AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 2110 2111Example Code and Data Size: These are the sizes for the OS-independent 2112acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2113debug version of the code includes the debug output trace mechanism and 2114has a much larger code and data size. 2115 2116 Current Release: 2117 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 2118 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 2119 Previous Release: 2120 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 2121 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 2122 2123 21242) iASL Compiler/Disassembler and Tools: 2125 2126Disassembler: Add dump of ASCII equivalent text within a comment at the 2127end of each line of the output for the Buffer() ASL operator. 2128 2129AcpiDump: Miscellaneous changes: 2130 Fixed repetitive table dump in -n mode. 2131 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 2132the ACPI 2.0 GUID fails. 2133 2134iASL: Fixed a problem where the compiler could fault if incorrectly given 2135an acpidump output file as input. ACPICA BZ 1088. David Box. 2136 2137AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 2138they are invoked without any arguments. 2139 2140Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 21411086. Colin Ian King. 2142 2143Disassembler: Cleaned up a block of code that extracts a parent Op 2144object. Added a comment that explains that the parent is guaranteed to be 2145valid in this case. ACPICA BZ 1069. 2146 2147 2148---------------------------------------- 214924 April 2014. Summary of changes for version 20140424: 2150 21511) ACPICA kernel-resident subsystem: 2152 2153Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 2154Some of these tables are known to contain a trailing NULL entry. Lv 2155Zheng. 2156 2157Removed an extraneous error message for the case where there are a large 2158number of system GPEs (> 124). This was the "32-bit FADT register is too 2159long to convert to GAS struct" message, which is irrelevant for GPEs 2160since the GPEx_BLK_LEN fields of the FADT are always used instead of the 2161(limited capacity) GAS bit length. Also, several changes to ensure proper 2162support for GPE numbers > 255, where some "GPE number" fields were 8-bits 2163internally. 2164 2165Implemented and deployed additional configuration support for the public 2166ACPICA external interfaces. Entire classes of interfaces can now be 2167easily modified or configured out, replaced by stubbed inline functions 2168by default. Lv Zheng. 2169 2170Moved all public ACPICA runtime configuration globals to the public 2171ACPICA external interface file for convenience. Also, removed some 2172obsolete/unused globals. See the file acpixf.h. Lv Zheng. 2173 2174Documentation: Added a new section to the ACPICA reference describing the 2175maximum number of GPEs that can be supported by the FADT-defined GPEs in 2176block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 2177reference. 2178 2179Example Code and Data Size: These are the sizes for the OS-independent 2180acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2181debug version of the code includes the debug output trace mechanism and 2182has a much larger code and data size. 2183 2184 Current Release: 2185 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 2186 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 2187 Previous Release: 2188 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 2189 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 2190 2191 21922) iASL Compiler/Disassembler and Tools: 2193 2194iASL and disassembler: Add full support for the LPIT table (Low Power 2195Idle Table). Includes support in the disassembler, data table compiler, 2196and template generator. 2197 2198AcpiDump utility: 21991) Add option to force the use of the RSDT (over the XSDT). 22002) Improve validation of the RSDP signature (use 8 chars instead of 4). 2201 2202iASL: Add check for predefined packages that are too large. For 2203predefined names that contain subpackages, check if each subpackage is 2204too large. (Check for too small already exists.) 2205 2206Debugger: Updated the GPE command (which simulates a GPE by executing the 2207GPE code paths in ACPICA). The GPE device is now optional, and defaults 2208to the GPE 0/1 FADT-defined blocks. 2209 2210Unix application OSL: Update line-editing support. Add additional error 2211checking and take care not to reset terminal attributes on exit if they 2212were never set. This should help guarantee that the terminal is always 2213left in the previous state on program exit. 2214 2215 2216---------------------------------------- 221725 March 2014. Summary of changes for version 20140325: 2218 22191) ACPICA kernel-resident subsystem: 2220 2221Updated the auto-serialize feature for control methods. This feature 2222automatically serializes all methods that create named objects in order 2223to prevent runtime errors. The update adds support to ignore the 2224currently executing AML SyncLevel when invoking such a method, in order 2225to prevent disruption of any existing SyncLevel priorities that may exist 2226in the AML code. Although the use of SyncLevels is relatively rare, this 2227change fixes a regression where an AE_AML_MUTEX_ORDER exception can 2228appear on some machines starting with the 20140214 release. 2229 2230Added a new external interface to allow the host to install ACPI tables 2231very early, before the namespace is even created. AcpiInstallTable gives 2232the host additional flexibility for ACPI table management. Tables can be 2233installed directly by the host as if they had originally appeared in the 2234XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 2235(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 2236with additional internal restructuring and cleanup. See the ACPICA 2237Reference for interface details. Lv Zheng. 2238 2239Added validation of the checksum for all incoming dynamically loaded 2240tables (via external interfaces or via AML Load/LoadTable operators). Lv 2241Zheng. 2242 2243Updated the use of the AcpiOsWaitEventsComplete interface during Notify 2244and GPE handler removal. Restructured calls to eliminate possible race 2245conditions. Lv Zheng. 2246 2247Added a warning for the use/execution of the ASL/AML Unload (table) 2248operator. This will help detect and identify machines that use this 2249operator if and when it is ever used. This operator has never been seen 2250in the field and the usage model and possible side-effects of the drastic 2251runtime action of a full table removal are unknown. 2252 2253Reverted the use of #pragma push/pop which was introduced in the 20140214 2254release. It appears that push and pop are not implemented by enough 2255compilers to make the use of this feature feasible for ACPICA at this 2256time. However, these operators may be deployed in a future ACPICA 2257release. 2258 2259Added the missing EXPORT_SYMBOL macros for the install and remove SCI 2260handler interfaces. 2261 2262Source code generation: 22631) Disabled the use of the "strchr" macro for the gcc-specific 2264generation. For some versions of gcc, this macro can periodically expose 2265a compiler bug which in turn causes compile-time error(s). 22662) Added support for PPC64 compilation. Colin Ian King. 2267 2268Example Code and Data Size: These are the sizes for the OS-independent 2269acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2270debug version of the code includes the debug output trace mechanism and 2271has a much larger code and data size. 2272 2273 Current Release: 2274 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 2275 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 2276 Previous Release: 2277 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 2278 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 2279 2280 22812) iASL Compiler/Disassembler and Tools: 2282 2283Disassembler: Added several new features to improve the readability of 2284the resulting ASL code. Extra information is emitted within comment 2285fields in the ASL code: 22861) Known _HID/_CID values are decoded to descriptive text. 22872) Standard values for the Notify() operator are decoded to descriptive 2288text. 22893) Target operands are expanded to full pathnames (in a comment) when 2290possible. 2291 2292Disassembler: Miscellaneous updates for extern() handling: 22931) Abort compiler if file specified by -fe option does not exist. 22942) Silence unnecessary warnings about argument count mismatches. 22953) Update warning messages concerning unresolved method externals. 22964) Emit "UnknownObj" keyword for externals whose type cannot be 2297determined. 2298 2299AcpiHelp utility: 23001) Added the -a option to display both the ASL syntax and the AML 2301encoding for an input ASL operator. This effectively displays all known 2302information about an ASL operator with one AcpiHelp invocation. 23032) Added substring match support (similar to a wildcard) for the -i 2304(_HID/PNP IDs) option. 2305 2306iASL/Disassembler: Since this tool does not yet support execution on big- 2307endian machines, added detection of endianness and an error message if 2308execution is attempted on big-endian. Support for big-endian within iASL 2309is a feature that is on the ACPICA to-be-done list. 2310 2311AcpiBin utility: 23121) Remove option to extract binary files from an acpidump; this function 2313is made obsolete by the AcpiXtract utility. 23142) General cleanup of open files and allocated buffers. 2315 2316 2317---------------------------------------- 231814 February 2014. Summary of changes for version 20140214: 2319 23201) ACPICA kernel-resident subsystem: 2321 2322Implemented a new mechanism to proactively prevent problems with ill- 2323behaved reentrant control methods that create named ACPI objects. This 2324behavior is illegal as per the ACPI specification, but is nonetheless 2325frequently seen in the field. Previously, this could lead to an 2326AE_ALREADY_EXISTS exception if the method was actually entered by more 2327than one thread. This new mechanism detects such methods at table load 2328time and marks them "serialized" to prevent reentrancy. A new global 2329option, AcpiGbl_AutoSerializeMethods, has been added to disable this 2330feature if desired. This mechanism and global option obsoletes and 2331supersedes the previous AcpiGbl_SerializeAllMethods option. 2332 2333Added the "Windows 2013" string to the _OSI support. ACPICA will now 2334respond TRUE to _OSI queries with this string. It is the stated policy of 2335ACPICA to add new strings to the _OSI support as soon as possible after 2336they are defined. See the full ACPICA _OSI policy which has been added to 2337the utilities/utosi.c file. 2338 2339Hardened/updated the _PRT return value auto-repair code: 23401) Do not abort the repair on a single subpackage failure, continue to 2341check all subpackages. 23422) Add check for the minimum subpackage length (4). 23433) Properly handle extraneous NULL package elements. 2344 2345Added support to avoid the possibility of infinite loops when traversing 2346object linked lists. Never allow an infinite loop, even in the face of 2347corrupted object lists. 2348 2349ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 2350pack(pop) directives to ensure that the ACPICA headers are independent of 2351compiler settings or other host headers. 2352 2353Example Code and Data Size: These are the sizes for the OS-independent 2354acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2355debug version of the code includes the debug output trace mechanism and 2356has a much larger code and data size. 2357 2358 Current Release: 2359 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 2360 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 2361 Previous Release: 2362 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 2363 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 2364 2365 23662) iASL Compiler/Disassembler and Tools: 2367 2368iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 2369first reserved field was incorrectly forced to have a value of zero. This 2370change correctly forces the field to have a value of one. ACPICA BZ 1081. 2371 2372Debugger: Added missing support for the "Extra" and "Data" subobjects 2373when displaying object data. 2374 2375Debugger: Added support to display entire object linked lists when 2376displaying object data. 2377 2378iASL: Removed the obsolete -g option to obtain ACPI tables from the 2379Windows registry. This feature has been superseded by the acpidump 2380utility. 2381 2382 2383---------------------------------------- 238414 January 2014. Summary of changes for version 20140114: 2385 23861) ACPICA kernel-resident subsystem: 2387 2388Updated all ACPICA copyrights and signons to 2014. Added the 2014 2389copyright to all module headers and signons, including the standard Linux 2390header. This affects virtually every file in the ACPICA core subsystem, 2391iASL compiler, all ACPICA utilities, and the test suites. 2392 2393Improved parameter validation for AcpiInstallGpeBlock. Added the 2394following checks: 23951) The incoming device handle refers to type ACPI_TYPE_DEVICE. 23962) There is not already a GPE block attached to the device. 2397Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 2398device. 2399 2400Correctly support "references" in the ACPI_OBJECT. This change fixes the 2401support to allow references (namespace nodes) to be passed as arguments 2402to control methods via the evaluate object interface. This is probably 2403most useful for testing purposes, however. 2404 2405Improved support for 32/64 bit physical addresses in printf()-like 2406output. This change improves the support for physical addresses in printf 2407debug statements and other output on both 32-bit and 64-bit hosts. It 2408consistently outputs the appropriate number of bytes for each host. The 2409%p specifier is unsatisfactory since it does not emit uniform output on 2410all hosts/clib implementations (on some, leading zeros are not supported, 2411leading to difficult-to-read output). 2412 2413Example Code and Data Size: These are the sizes for the OS-independent 2414acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2415debug version of the code includes the debug output trace mechanism and 2416has a much larger code and data size. 2417 2418 Current Release: 2419 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 2420 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 2421 Previous Release: 2422 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 2423 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 2424 2425 24262) iASL Compiler/Disassembler and Tools: 2427 2428iASL: Fix a possible fault when using the Connection() operator. Fixes a 2429problem if the parent Field definition for the Connection operator refers 2430to an operation region that does not exist. ACPICA BZ 1064. 2431 2432AcpiExec: Load of local test tables is now optional. The utility has the 2433capability to load some various tables to test features of ACPICA. 2434However, there are enough of them that the output of the utility became 2435confusing. With this change, only the required local tables are displayed 2436(RSDP, XSDT, etc.) along with the actual tables loaded via the command 2437line specification. This makes the default output simler and easier to 2438understand. The -el command line option restores the original behavior 2439for testing purposes. 2440 2441AcpiExec: Added support for overlapping operation regions. This change 2442expands the simulation of operation regions by supporting regions that 2443overlap within the given address space. Supports SystemMemory and 2444SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 2445 2446AcpiExec: Added region handler support for PCI_Config and EC spaces. This 2447allows AcpiExec to simulate these address spaces, similar to the current 2448support for SystemMemory and SystemIO. 2449 2450Debugger: Added new command to read/write/compare all namespace objects. 2451The command "test objects" will exercise the entire namespace by writing 2452new values to each data object, and ensuring that the write was 2453successful. The original value is then restored and verified. 2454 2455Debugger: Added the "test predefined" command. This change makes this 2456test public and puts it under the new "test" command. The test executes 2457each and every predefined name within the current namespace. 2458 2459 2460---------------------------------------- 246118 December 2013. Summary of changes for version 20131218: 2462 2463Global note: The ACPI 5.0A specification was released this month. There 2464are no changes needed for ACPICA since this release of ACPI is an 2465errata/clarification release. The specification is available at 2466acpi.info. 2467 2468 24691) ACPICA kernel-resident subsystem: 2470 2471Added validation of the XSDT root table if it is present. Some older 2472platforms contain an XSDT that is ill-formed or otherwise invalid (such 2473as containing some or all entries that are NULL pointers). This change 2474adds a new function to validate the XSDT before actually using it. If the 2475XSDT is found to be invalid, ACPICA will now automatically fall back to 2476using the RSDT instead. Original implementation by Zhao Yakui. Ported to 2477ACPICA and enhanced by Lv Zheng and Bob Moore. 2478 2479Added a runtime option to ignore the XSDT and force the use of the RSDT. 2480This change adds a runtime option that will force ACPICA to use the RSDT 2481instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 2482requires that an XSDT be used instead of the RSDT, the XSDT has been 2483found to be corrupt or ill-formed on some machines. Lv Zheng. 2484 2485Added a runtime option to favor 32-bit FADT register addresses over the 248664-bit addresses. This change adds an option to favor 32-bit FADT 2487addresses when there is a conflict between the 32-bit and 64-bit versions 2488of the same register. The default behavior is to use the 64-bit version 2489in accordance with the ACPI specification. This can now be overridden via 2490the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 2491 2492During the change above, the internal "Convert FADT" and "Verify FADT" 2493functions have been merged to simplify the code, making it easier to 2494understand and maintain. ACPICA BZ 933. 2495 2496Improve exception reporting and handling for GPE block installation. 2497Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 2498status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 2499 2500Added helper macros to extract bus/segment numbers from the HEST table. 2501This change adds two macros to extract the encoded bus and segment 2502numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 2503Betty Dall <betty.dall@hp.com> 2504 2505Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 2506by ACPICA. It is not a public macro, so it should have no effect on 2507existing OSV code. Lv Zheng. 2508 2509Example Code and Data Size: These are the sizes for the OS-independent 2510acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2511debug version of the code includes the debug output trace mechanism and 2512has a much larger code and data size. 2513 2514 Current Release: 2515 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 2516 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 2517 Previous Release: 2518 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 2519 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 2520 2521 25222) iASL Compiler/Disassembler and Tools: 2523 2524Disassembler: Improved pathname support for emitted External() 2525statements. This change adds full pathname support for external names 2526that have been resolved internally by the inclusion of additional ACPI 2527tables (via the iASL -e option). Without this change, the disassembler 2528can emit multiple externals for the same object, or it become confused 2529when the Scope() operator is used on an external object. Overall, greatly 2530improves the ability to actually recompile the emitted ASL code when 2531objects a referenced across multiple ACPI tables. Reported by Michael 2532Tsirkin (mst@redhat.com). 2533 2534Tests/ASLTS: Updated functional control suite to execute with no errors. 2535David Box. Fixed several errors related to the testing of the interpreter 2536slack mode. Lv Zheng. 2537 2538iASL: Added support to detect names that are declared within a control 2539method, but are unused (these are temporary names that are only valid 2540during the time the method is executing). A remark is issued for these 2541cases. ACPICA BZ 1022. 2542 2543iASL: Added full support for the DBG2 table. Adds full disassembler, 2544table compiler, and template generator support for the DBG2 table (Debug 2545Port 2 table). 2546 2547iASL: Added full support for the PCCT table, update the table definition. 2548Updates the PCCT table definition in the actbl3.h header and adds table 2549compiler and template generator support. 2550 2551iASL: Added an option to emit only error messages (no warnings/remarks). 2552The -ve option will enable only error messages, warnings and remarks are 2553suppressed. This can simplify debugging when only the errors are 2554important, such as when an ACPI table is disassembled and there are many 2555warnings and remarks -- but only the actual errors are of real interest. 2556 2557Example ACPICA code (source/tools/examples): Updated the example code so 2558that it builds to an actual working program, not just example code. Added 2559ACPI tables and execution of an example control method in the DSDT. Added 2560makefile support for Unix generation. 2561 2562 2563---------------------------------------- 256415 November 2013. Summary of changes for version 20131115: 2565 2566This release is available at https://acpica.org/downloads 2567 2568 25691) ACPICA kernel-resident subsystem: 2570 2571Resource Manager: Fixed loop termination for the "get AML length" 2572function. The loop previously had an error termination on a NULL resource 2573pointer, which can never happen since the loop simply increments a valid 2574resource pointer. This fix changes the loop to terminate with an error on 2575an invalid end-of-buffer condition. The problem can be seen as an 2576infinite loop by callers to AcpiSetCurrentResources with an invalid or 2577corrupted resource descriptor, or a resource descriptor that is missing 2578an END_TAG descriptor. Reported by Dan Carpenter 2579<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 2580 2581Table unload and ACPICA termination: Delete all attached data objects 2582during namespace node deletion. This fix updates namespace node deletion 2583to delete the entire list of attached objects (attached via 2584AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 25851024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 2586 2587ACPICA termination: Added support to delete all objects attached to the 2588root namespace node. This fix deletes any and all objects that have been 2589attached to the root node via AcpiAttachData. Previously, none of these 2590objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 2591 2592Debug output: Do not emit the function nesting level for the in-kernel 2593build. The nesting level is really only useful during a single-thread 2594execution. Therefore, only enable this output for the AcpiExec utility. 2595Also, only emit the thread ID when executing under AcpiExec (Context 2596switches are still always detected and a message is emitted). ACPICA BZ 2597972. 2598 2599Example Code and Data Size: These are the sizes for the OS-independent 2600acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2601debug version of the code includes the debug output trace mechanism and 2602has a much larger code and data size. 2603 2604 Current Release: 2605 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 2606 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 2607 Previous 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 2611 26122) iASL Compiler/Disassembler and Tools: 2613 2614AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 2615correct portable POSIX header for terminal control functions. 2616 2617Disassembler: Fixed control method invocation issues related to the use 2618of the CondRefOf() operator. The problem is seen in the disassembly where 2619control method invocations may not be disassembled properly if the 2620control method name has been used previously as an argument to CondRefOf. 2621The solution is to not attempt to emit an external declaration for the 2622CondRefOf target (it is not necessary in the first place). This prevents 2623disassembler object type confusion. ACPICA BZ 988. 2624 2625Unix Makefiles: Added an option to disable compiler optimizations and the 2626_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 2627with optimizations (reportedly, gcc 4.4 for example). This change adds a 2628command line option for make (NOOPT) that disables all compiler 2629optimizations and the _FORTIFY_SOURCE compiler flag. The default 2630optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 26311034. Lv Zheng, Bob Moore. 2632 2633Tests/ASLTS: Added options to specify individual test cases and modes. 2634This allows testers running aslts.sh to optionally specify individual 2635test modes and test cases. Also added an option to disable the forced 2636generation of the ACPICA tools from source if desired. Lv Zheng. 2637 2638---------------------------------------- 263927 September 2013. Summary of changes for version 20130927: 2640 2641This release is available at https://acpica.org/downloads 2642 2643 26441) ACPICA kernel-resident subsystem: 2645 2646Fixed a problem with store operations to reference objects. This change 2647fixes a problem where a Store operation to an ArgX object that contained 2648a 2649reference to a field object did not complete the automatic dereference 2650and 2651then write to the actual field object. Instead, the object type of the 2652field object was inadvertently changed to match the type of the source 2653operand. The new behavior will actually write to the field object (buffer 2654field or field unit), thus matching the correct ACPI-defined behavior. 2655 2656Implemented support to allow the host to redefine individual OSL 2657prototypes. This change enables the host to redefine OSL prototypes found 2658in the acpiosxf.h file. This allows the host to implement OSL interfaces 2659with a macro or inlined function. Further, it allows the host to add any 2660additional required modifiers such as __iomem, __init, __exit, etc., as 2661necessary on a per-interface basis. Enables maximum flexibility for the 2662OSL interfaces. Lv Zheng. 2663 2664Hardcoded the access width for the FADT-defined reset register. The ACPI 2665specification requires the reset register width to be 8 bits. ACPICA now 2666hardcodes the width to 8 and ignores the FADT width value. This provides 2667compatibility with other ACPI implementations that have allowed BIOS code 2668with bad register width values to go unnoticed. Matthew Garett, Bob 2669Moore, 2670Lv Zheng. 2671 2672Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 2673used 2674in the OSL header (acpiosxf). The change modifies the position of this 2675macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 2676build issues if the OSL defines the implementation of the interface to be 2677an inline stub function. Lv Zheng. 2678 2679Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 2680initialization interfaces. This change adds a new macro for the main init 2681and terminate external interfaces in order to support hosts that require 2682additional or different processing for these functions. Changed from 2683ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 2684Zheng, Bob Moore. 2685 2686Cleaned up the memory allocation macros for configurability. In the 2687common 2688case, the ACPI_ALLOCATE and related macros now resolve directly to their 2689respective AcpiOs* OSL interfaces. Two options: 26901) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 2691default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 26922) For AcpiExec (and for debugging), the macros can optionally be 2693resolved 2694to the local ACPICA interfaces that track each allocation (local tracking 2695is used to immediately detect memory leaks). 2696Lv Zheng. 2697 2698Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 2699to predefine this macro to either TRUE or FALSE during the system build. 2700 2701Replaced __FUNCTION_ with __func__ in the gcc-specific header. 2702 2703Example Code and Data Size: These are the sizes for the OS-independent 2704acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2705debug version of the code includes the debug output trace mechanism and 2706has a much larger code and data size. 2707 2708 Current Release: 2709 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 2710 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 2711 Previous Release: 2712 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 2713 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2714 2715 27162) iASL Compiler/Disassembler and Tools: 2717 2718iASL: Implemented wildcard support for the -e option. This simplifies use 2719when there are many SSDTs that must be included to resolve external 2720method 2721declarations. ACPICA BZ 1041. Example: 2722 iasl -e ssdt*.dat -d dsdt.dat 2723 2724AcpiExec: Add history/line-editing for Unix/Linux systems. This change 2725adds a portable module that implements full history and limited line 2726editing for Unix and Linux systems. It does not use readline() due to 2727portability issues. Instead it uses the POSIX termio interface to put the 2728terminal in raw input mode so that the various special keys can be 2729trapped 2730(such as up/down-arrow for history support and left/right-arrow for line 2731editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 2732 2733AcpiXtract: Add support to handle (ignore) "empty" lines containing only 2734one or more spaces. This provides compatible with early or different 2735versions of the AcpiDump utility. ACPICA BZ 1044. 2736 2737AcpiDump: Do not ignore tables that contain only an ACPI table header. 2738Apparently, some BIOSs create SSDTs that contain an ACPI table header but 2739no other data. This change adds support to dump these tables. Any tables 2740shorter than the length of an ACPI table header remain in error (an error 2741message is emitted). Reported by Yi Li. 2742 2743Debugger: Echo actual command along with the "unknown command" message. 2744 2745---------------------------------------- 274623 August 2013. Summary of changes for version 20130823: 2747 27481) ACPICA kernel-resident subsystem: 2749 2750Implemented support for host-installed System Control Interrupt (SCI) 2751handlers. Certain ACPI functionality requires the host to handle raw 2752SCIs. For example, the "SCI Doorbell" that is defined for memory power 2753state support requires the host device driver to handle SCIs to examine 2754if the doorbell has been activated. Multiple SCI handlers can be 2755installed to allow for future expansion. New external interfaces are 2756AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 2757details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 2758 2759Operation region support: Never locally free the handler "context" 2760pointer. This change removes some dangerous code that attempts to free 2761the handler context pointer in some (rare) circumstances. The owner of 2762the handler owns this pointer and the ACPICA code should never touch it. 2763Although not seen to be an issue in any kernel, it did show up as a 2764problem (fault) under AcpiExec. Also, set the internal storage field for 2765the context pointer to zero when the region is deactivated, simply for 2766sanity. David Box. ACPICA BZ 1039. 2767 2768AcpiRead: On error, do not modify the return value target location. If an 2769error happens in the middle of a split 32/32 64-bit I/O operation, do not 2770modify the target of the return value pointer. Makes the code consistent 2771with the rest of ACPICA. Bjorn Helgaas. 2772 2773Example Code and Data Size: These are the sizes for the OS-independent 2774acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2775debug version of the code includes the debug output trace mechanism and 2776has a much larger code and data size. 2777 2778 Current Release: 2779 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 2780 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2781 Previous Release: 2782 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 2783 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 2784 2785 27862) iASL Compiler/Disassembler and Tools: 2787 2788AcpiDump: Implemented several new features and fixed some problems: 27891) Added support to dump the RSDP, RSDT, and XSDT tables. 27902) Added support for multiple table instances (SSDT, UEFI). 27913) Added option to dump "customized" (overridden) tables (-c). 27924) Fixed a problem where some table filenames were improperly 2793constructed. 27945) Improved some error messages, removed some unnecessary messages. 2795 2796iASL: Implemented additional support for disassembly of ACPI tables that 2797contain invocations of external control methods. The -fe<file> option 2798allows the import of a file that specifies the external methods along 2799with the required number of arguments for each -- allowing for the 2800correct disassembly of the table. This is a workaround for a limitation 2801of AML code where the disassembler often cannot determine the number of 2802arguments required for an external control method and generates incorrect 2803ASL code. See the iASL reference for details. ACPICA BZ 1030. 2804 2805Debugger: Implemented a new command (paths) that displays the full 2806pathnames (namepaths) and object types of all objects in the namespace. 2807This is an alternative to the namespace command. 2808 2809Debugger: Implemented a new command (sci) that invokes the SCI dispatch 2810mechanism and any installed handlers. 2811 2812iASL: Fixed a possible segfault for "too many parent prefixes" condition. 2813This can occur if there are too many parent prefixes in a namepath (for 2814example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 2815 2816Application OSLs: Set the return value for the PCI read functions. These 2817functions simply return AE_OK, but should set the return value to zero 2818also. This change implements this. ACPICA BZ 1038. 2819 2820Debugger: Prevent possible command line buffer overflow. Increase the 2821size of a couple of the debugger line buffers, and ensure that overflow 2822cannot happen. ACPICA BZ 1037. 2823 2824iASL: Changed to abort immediately on serious errors during the parsing 2825phase. Due to the nature of ASL, there is no point in attempting to 2826compile these types of errors, and they typically end up causing a 2827cascade of hundreds of errors which obscure the original problem. 2828 2829---------------------------------------- 283025 July 2013. Summary of changes for version 20130725: 2831 28321) ACPICA kernel-resident subsystem: 2833 2834Fixed a problem with the DerefOf operator where references to FieldUnits 2835and BufferFields incorrectly returned the parent object, not the actual 2836value of the object. After this change, a dereference of a FieldUnit 2837reference results in a read operation on the field to get the value, and 2838likewise, the appropriate BufferField value is extracted from the target 2839buffer. 2840 2841Fixed a problem where the _WAK method could cause a fault under these 2842circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 2843method returned no value. The problem is rarely seen because most kernels 2844run ACPICA in slack mode. 2845 2846For the DerefOf operator, a fatal error now results if an attempt is made 2847to dereference a reference (created by the Index operator) to a NULL 2848package element. Provides compatibility with other ACPI implementations, 2849and this behavior will be added to a future version of the ACPI 2850specification. 2851 2852The ACPI Power Management Timer (defined in the FADT) is now optional. 2853This provides compatibility with other ACPI implementations and will 2854appear in the next version of the ACPI specification. If there is no PM 2855Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 2856zero in the FADT indicates no PM timer. 2857 2858Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 2859allows the host to globally enable/disable all vendor strings, all 2860feature strings, or both. Intended to be primarily used for debugging 2861purposes only. Lv Zheng. 2862 2863Expose the collected _OSI data to the host via a global variable. This 2864data tracks the highest level vendor ID that has been invoked by the BIOS 2865so that the host (and potentially ACPICA itself) can change behaviors 2866based upon the age of the BIOS. 2867 2868Example Code and Data Size: These are the sizes for the OS-independent 2869acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2870debug version of the code includes the debug output trace mechanism and 2871has a much larger code and data size. 2872 2873 Current Release: 2874 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 2875 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2876 Previous Release: 2877 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 2878 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 2879 2880 28812) iASL Compiler/Disassembler and Tools: 2882 2883iASL: Created the following enhancements for the -so option (create 2884offset table): 28851)Add offsets for the last nameseg in each namepath for every supported 2886object type 28872)Add support for Processor, Device, Thermal Zone, and Scope objects 28883)Add the actual AML opcode for the parent object of every supported 2889object type 28904)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 2891 2892Disassembler: Emit all unresolved external symbols in a single block. 2893These are external references to control methods that could not be 2894resolved, and thus, the disassembler had to make a guess at the number of 2895arguments to parse. 2896 2897iASL: The argument to the -T option (create table template) is now 2898optional. If not specified, the default table is a DSDT, typically the 2899most common case. 2900 2901---------------------------------------- 290226 June 2013. Summary of changes for version 20130626: 2903 29041) ACPICA kernel-resident subsystem: 2905 2906Fixed an issue with runtime repair of the _CST object. Null or invalid 2907elements were not always removed properly. Lv Zheng. 2908 2909Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 2910FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 2911the maximum number of GPEs is 1016. Use of multiple GPE block devices 2912makes the system-wide number of GPEs essentially unlimited. 2913 2914Example Code and Data Size: These are the sizes for the OS-independent 2915acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2916debug version of the code includes the debug output trace mechanism and 2917has a much larger code and data size. 2918 2919 Current Release: 2920 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 2921 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 2922 Previous Release: 2923 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 2924 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 2925 2926 29272) iASL Compiler/Disassembler and Tools: 2928 2929Portable AcpiDump: Implemented full support for the Linux and FreeBSD 2930hosts. Now supports Linux, FreeBSD, and Windows. 2931 2932Disassembler: Added some missing types for the HEST and EINJ tables: "Set 2933Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 2934 2935iASL/Preprocessor: Implemented full support for nested 2936#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 2937 2938Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 2939max. The original purpose of this constraint was to limit the amount of 2940debug output. However, the string function in question (UtPrintString) is 2941now used for the disassembler also, where 256 bytes is insufficient. 2942Reported by RehabMan@GitHub. 2943 2944iASL/DataTables: Fixed some problems and issues with compilation of DMAR 2945tables. ACPICA BZ 999. Lv Zheng. 2946 2947iASL: Fixed a couple of error exit issues that could result in a "Could 2948not delete <file>" message during ASL compilation. 2949 2950AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 2951the actual signatures for these tables are "FACP" and "APIC", 2952respectively. 2953 2954AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 2955tables are allowed to have multiple instances. 2956 2957---------------------------------------- 295817 May 2013. Summary of changes for version 20130517: 2959 29601) ACPICA kernel-resident subsystem: 2961 2962Fixed a regression introduced in version 20130328 for _INI methods. This 2963change fixes a problem introduced in 20130328 where _INI methods are no 2964longer executed properly because of a memory block that was not 2965initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 2966<tomasz.nowicki@linaro.org>. 2967 2968Fixed a possible problem with the new extended sleep registers in the 2969ACPI 29705.0 FADT. Do not use these registers (even if populated) unless the HW- 2971reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 29721020. Lv Zheng. 2973 2974Implemented return value repair code for _CST predefined objects: Sort 2975the 2976list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 2977 2978Implemented a debug-only option to disable loading of SSDTs from the 2979RSDT/XSDT during ACPICA initialization. This can be useful for debugging 2980ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 2981acglobal.h - ACPICA BZ 1005. Lv Zheng. 2982 2983Fixed some issues in the ACPICA initialization and termination code: 2984Tomasz Nowicki <tomasz.nowicki@linaro.org> 29851) Clear events initialized flag upon event component termination. ACPICA 2986BZ 1013. 29872) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 29883) Delete global lock pending lock during termination. ACPICA BZ 1012. 29894) Clear debug buffer global on termination to prevent possible multiple 2990delete. ACPICA BZ 1010. 2991 2992Standardized all switch() blocks across the entire source base. After 2993many 2994years, different formatting for switch() had crept in. This change makes 2995the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 2996 2997Split some files to enhance ACPICA modularity and configurability: 29981) Split buffer dump routines into utilities/utbuffer.c 29992) Split internal error message routines into utilities/uterror.c 30003) Split table print utilities into tables/tbprint.c 30014) Split iASL command-line option processing into asloptions.c 3002 3003Makefile enhancements: 30041) Support for all new files above. 30052) Abort make on errors from any subcomponent. Chao Guan. 30063) Add build support for Apple Mac OS X. Liang Qi. 3007 3008Example Code and Data Size: These are the sizes for the OS-independent 3009acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3010debug version of the code includes the debug output trace mechanism and 3011has a much larger code and data size. 3012 3013 Current Release: 3014 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 3015 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 3016 Previous Release: 3017 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 3018 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 3019 3020 30212) iASL Compiler/Disassembler and Tools: 3022 3023New utility: Implemented an easily portable version of the acpidump 3024utility to extract ACPI tables from the system (or a file) in an ASCII 3025hex 3026dump format. The top-level code implements the various command line 3027options, file I/O, and table dump routines. To port to a new host, only 3028three functions need to be implemented to get tables -- since this 3029functionality is OS-dependent. See the tools/acpidump/apmain.c module and 3030the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 30311) The Windows version obtains the ACPI tables from the Registry. 30322) The Linux version is under development. 30333) Other hosts - If an OS-dependent module is submitted, it will be 3034distributed with ACPICA. 3035 3036iASL: Fixed a regression for -D preprocessor option (define symbol). A 3037restructuring/change to the initialization sequence caused this option to 3038no longer work properly. 3039 3040iASL: Implemented a mechanism to disable specific warnings and remarks. 3041Adds a new command line option, "-vw <messageid> as well as "#pragma 3042disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 3043 3044iASL: Fix for too-strict package object validation. The package object 3045validation for return values from the predefined names is a bit too 3046strict, it does not allow names references within the package (which will 3047be resolved at runtime.) These types of references cannot be validated at 3048compile time. This change ignores named references within package objects 3049for names that return or define static packages. 3050 3051Debugger: Fixed the 80-character command line limitation for the History 3052command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 3053 3054iASL: Added control method and package support for the -so option 3055(generates AML offset table for BIOS support.) 3056 3057iASL: issue a remark if a non-serialized method creates named objects. If 3058a thread blocks within the method for any reason, and another thread 3059enters the method, the method will fail because an attempt will be made 3060to 3061create the same (named) object twice. In this case, issue a remark that 3062the method should be marked serialized. NOTE: may become a warning later. 3063ACPICA BZ 909. 3064 3065---------------------------------------- 306618 April 2013. Summary of changes for version 20130418: 3067 30681) ACPICA kernel-resident subsystem: 3069 3070Fixed a possible buffer overrun during some rare but specific field unit 3071read operations. This overrun can only happen if the DSDT version is 1 -- 3072meaning that all AML integers are 32 bits -- and the field length is 3073between 33 and 55 bits long. During the read, an internal buffer object 3074is 3075created for the field unit because the field is larger than an integer 3076(32 3077bits). However, in this case, the buffer will be incorrectly written 3078beyond the end because the buffer length is less than the internal 3079minimum 3080of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 3081long, but a full 8 bytes will be written. 3082 3083Updated the Embedded Controller "orphan" _REG method support. This refers 3084to _REG methods under the EC device that have no corresponding operation 3085region. This is allowed by the ACPI specification. This update removes a 3086dependency on the existence an ECDT table. It will execute an orphan _REG 3087method as long as the operation region handler for the EC is installed at 3088the EC device node and not the namespace root. Rui Zhang (original 3089update), Bob Moore (update/integrate). 3090 3091Implemented run-time argument typechecking for all predefined ACPI names 3092(_STA, _BIF, etc.) This change performs object typechecking on all 3093incoming arguments for all predefined names executed via 3094AcpiEvaluateObject. This ensures that ACPI-related device drivers are 3095passing correct object types as well as the correct number of arguments 3096(therefore identifying any issues immediately). Also, the ASL/namespace 3097definition of the predefined name is checked against the ACPI 3098specification for the proper argument count. Adds one new file, 3099nsarguments.c 3100 3101Changed an exception code for the ASL UnLoad() operator. Changed the 3102exception code for the case where the input DdbHandle is invalid, from 3103AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 3104 3105Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 3106global makefile. The use of this flag causes compiler errors on earlier 3107versions of GCC, so it has been removed for compatibility. 3108 3109Miscellaneous cleanup: 31101) Removed some unused/obsolete macros 31112) Fixed a possible memory leak in the _OSI support 31123) Removed an unused variable in the predefined name support 31134) Windows OSL: remove obsolete reference to a memory list field 3114 3115Example Code and Data Size: These are the sizes for the OS-independent 3116acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3117debug version of the code includes the debug output trace mechanism and 3118has a much larger code and data size. 3119 3120 Current Release: 3121 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 3122 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 3123 Previous Release: 3124 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 3125 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 3126 3127 31282) iASL Compiler/Disassembler and Tools: 3129 3130AcpiExec: Added installation of a handler for the SystemCMOS address 3131space. This prevents control method abort if a method accesses this 3132space. 3133 3134AcpiExec: Added support for multiple EC devices, and now install EC 3135operation region handler(s) at the actual EC device instead of the 3136namespace root. This reflects the typical behavior of host operating 3137systems. 3138 3139AcpiExec: Updated to ensure that all operation region handlers are 3140installed before the _REG methods are executed. This prevents a _REG 3141method from aborting if it accesses an address space has no handler. 3142AcpiExec installs a handler for every possible address space. 3143 3144Debugger: Enhanced the "handlers" command to display non-root handlers. 3145This change enhances the handlers command to display handlers associated 3146with individual devices throughout the namespace, in addition to the 3147currently supported display of handlers associated with the root 3148namespace 3149node. 3150 3151ASL Test Suite: Several test suite errors have been identified and 3152resolved, reducing the total error count during execution. Chao Guan. 3153 3154---------------------------------------- 315528 March 2013. Summary of changes for version 20130328: 3156 31571) ACPICA kernel-resident subsystem: 3158 3159Fixed several possible race conditions with the internal object reference 3160counting mechanism. Some of the external ACPICA interfaces update object 3161reference counts without holding the interpreter or namespace lock. This 3162change adds a spinlock to protect reference count updates on the internal 3163ACPICA objects. Reported by and with assistance from Andriy Gapon 3164(avg@FreeBSD.org). 3165 3166FADT support: Removed an extraneous warning for very large GPE register 3167sets. This change removes a size mismatch warning if the legacy length 3168field for a GPE register set is larger than the 64-bit GAS structure can 3169accommodate. GPE register sets can be larger than the 255-bit width 3170limitation of the GAS structure. Linn Crosetto (linn@hp.com). 3171 3172_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 3173return from this interface. Handles a possible timeout case if 3174ACPI_WAIT_FOREVER is modified by the host to be a value less than 3175"forever". Jung-uk Kim. 3176 3177Predefined name support: Add allowed/required argument type information 3178to 3179the master predefined info table. This change adds the infrastructure to 3180enable typechecking on incoming arguments for all predefined 3181methods/objects. It does not actually contain the code that will fully 3182utilize this information, this is still under development. Also condenses 3183some duplicate code for the predefined names into a new module, 3184utilities/utpredef.c 3185 3186Example Code and Data Size: These are the sizes for the OS-independent 3187acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3188debug version of the code includes the debug output trace mechanism and 3189has a much larger code and data size. 3190 3191 Previous Release: 3192 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 3193 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 3194 Current Release: 3195 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 3196 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 3197 3198 31992) iASL Compiler/Disassembler and Tools: 3200 3201iASL: Implemented a new option to simplify the development of ACPI- 3202related 3203BIOS code. Adds support for a new "offset table" output file. The -so 3204option will create a C table containing the AML table offsets of various 3205named objects in the namespace so that BIOS code can modify them easily 3206at 3207boot time. This can simplify BIOS runtime code by eliminating expensive 3208searches for "magic values", enhancing boot times and adding greater 3209reliability. With assistance from Lee Hamel. 3210 3211iASL: Allow additional predefined names to return zero-length packages. 3212Now, all predefined names that are defined by the ACPI specification to 3213return a "variable-length package of packages" are allowed to return a 3214zero length top-level package. This allows the BIOS to tell the host that 3215the requested feature is not supported, and supports existing BIOS/ASL 3216code and practices. 3217 3218iASL: Changed the "result not used" warning to an error. This is the case 3219where an ASL operator is effectively a NOOP because the result of the 3220operation is not stored anywhere. For example: 3221 Add (4, Local0) 3222There is no target (missing 3rd argument), nor is the function return 3223value used. This is potentially a very serious problem -- since the code 3224was probably intended to do something, but for whatever reason, the value 3225was not stored. Therefore, this issue has been upgraded from a warning to 3226an error. 3227 3228AcpiHelp: Added allowable/required argument types to the predefined names 3229info display. This feature utilizes the recent update to the predefined 3230names table (above). 3231 3232---------------------------------------- 323314 February 2013. Summary of changes for version 20130214: 3234 32351) ACPICA Kernel-resident Subsystem: 3236 3237Fixed a possible regression on some hosts: Reinstated the safe return 3238macros (return_ACPI_STATUS, etc.) that ensure that the argument is 3239evaluated only once. Although these macros are not needed for the ACPICA 3240code itself, they are often used by ACPI-related host device drivers 3241where 3242the safe feature may be necessary. 3243 3244Fixed several issues related to the ACPI 5.0 reduced hardware support 3245(SOC): Now ensure that if the platform declares itself as hardware- 3246reduced 3247via the FADT, the following functions become NOOPs (and always return 3248AE_OK) because ACPI is always enabled by definition on these machines: 3249 AcpiEnable 3250 AcpiDisable 3251 AcpiHwGetMode 3252 AcpiHwSetMode 3253 3254Dynamic Object Repair: Implemented additional runtime repairs for 3255predefined name return values. Both of these repairs can simplify code in 3256the related device drivers that invoke these methods: 32571) For the _STR and _MLS names, automatically repair/convert an ASCII 3258string to a Unicode buffer. 32592) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 3260a 3261lone end tag descriptor in the following cases: A Return(0) was executed, 3262a null buffer was returned, or no object at all was returned (non-slack 3263mode only). Adds a new file, nsconvert.c 3264ACPICA BZ 998. Bob Moore, Lv Zheng. 3265 3266Resource Manager: Added additional code to prevent possible infinite 3267loops 3268while traversing corrupted or ill-formed resource template buffers. Check 3269for zero-length resource descriptors in all code that loops through 3270resource templates (the length field is used to index through the 3271template). This change also hardens the external AcpiWalkResources and 3272AcpiWalkResourceBuffer interfaces. 3273 3274Local Cache Manager: Enhanced the main data structure to eliminate an 3275unnecessary mechanism to access the next object in the list. Actually 3276provides a small performance enhancement for hosts that use the local 3277ACPICA cache manager. Jung-uk Kim. 3278 3279Example Code and Data Size: These are the sizes for the OS-independent 3280acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3281debug version of the code includes the debug output trace mechanism and 3282has a much larger code and data size. 3283 3284 Previous Release: 3285 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 3286 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 3287 Current Release: 3288 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 3289 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 3290 3291 32922) iASL Compiler/Disassembler and Tools: 3293 3294iASL/Disassembler: Fixed several issues with the definition of the ACPI 32955.0 RASF table (RAS Feature Table). This change incorporates late changes 3296that were made to the ACPI 5.0 specification. 3297 3298iASL/Disassembler: Added full support for the following new ACPI tables: 3299 1) The MTMR table (MID Timer Table) 3300 2) The VRTC table (Virtual Real Time Clock Table). 3301Includes header file, disassembler, table compiler, and template support 3302for both tables. 3303 3304iASL: Implemented compile-time validation of package objects returned by 3305predefined names. This new feature validates static package objects 3306returned by the various predefined names defined to return packages. Both 3307object types and package lengths are validated, for both parent packages 3308and sub-packages, if any. The code is similar in structure and behavior 3309to 3310the runtime repair mechanism within the AML interpreter and uses the 3311existing predefined name information table. Adds a new file, aslprepkg.c. 3312ACPICA BZ 938. 3313 3314iASL: Implemented auto-detection of binary ACPI tables for disassembly. 3315This feature detects a binary file with a valid ACPI table header and 3316invokes the disassembler automatically. Eliminates the need to 3317specifically invoke the disassembler with the -d option. ACPICA BZ 862. 3318 3319iASL/Disassembler: Added several warnings for the case where there are 3320unresolved control methods during the disassembly. This can potentially 3321cause errors when the output file is compiled, because the disassembler 3322assumes zero method arguments in these cases (it cannot determine the 3323actual number of arguments without resolution/definition of the method). 3324 3325Debugger: Added support to display all resources with a single command. 3326Invocation of the resources command with no arguments will now display 3327all 3328resources within the current namespace. 3329 3330AcpiHelp: Added descriptive text for each ACPICA exception code displayed 3331via the -e option. 3332 3333---------------------------------------- 333417 January 2013. Summary of changes for version 20130117: 3335 33361) ACPICA Kernel-resident Subsystem: 3337 3338Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 3339return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 3340objects to return a package containing one integer, most BIOS code 3341returns 3342two integers and the previous code reflects that. However, we also need 3343to 3344support BIOS code that actually implements to the ACPI spec, and this 3345change reflects this. 3346 3347Fixed two issues with the ACPI_DEBUG_PRINT macros: 33481) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 3349C compilers that require this support. 33502) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 3351ACPI_DEBUG is already used by many of the various hosts. 3352 3353Updated all ACPICA copyrights and signons to 2013. Added the 2013 3354copyright to all module headers and signons, including the standard Linux 3355header. This affects virtually every file in the ACPICA core subsystem, 3356iASL compiler, all ACPICA utilities, and the test suites. 3357 3358Example Code and Data Size: These are the sizes for the OS-independent 3359acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3360debug version of the code includes the debug output trace mechanism and 3361has a much larger code and data size. 3362 3363 Previous Release: 3364 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 3365 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 3366 Current Release: 3367 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 3368 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 3369 3370 33712) iASL Compiler/Disassembler and Tools: 3372 3373Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 3374prevent a possible fault on some hosts. Some C libraries modify the arg 3375pointer parameter to vfprintf making it difficult to call it twice in the 3376AcpiOsVprintf function. Use a local buffer to workaround this issue. This 3377does not affect the Windows OSL since the Win C library does not modify 3378the arg pointer. Chao Guan, Bob Moore. 3379 3380iASL: Fixed a possible infinite loop when the maximum error count is 3381reached. If an output file other than the .AML file is specified (such as 3382a listing file), and the maximum number of errors is reached, do not 3383attempt to flush data to the output file(s) as the compiler is aborting. 3384This can cause an infinite loop as the max error count code essentially 3385keeps calling itself. 3386 3387iASL/Disassembler: Added an option (-in) to ignore NOOP 3388opcodes/operators. 3389Implemented for both the compiler and the disassembler. Often, the NOOP 3390opcode is used as padding for packages that are changed dynamically by 3391the 3392BIOS. When disassembled and recompiled, these NOOPs will cause syntax 3393errors. This option causes the disassembler to ignore all NOOP opcodes 3394(0xA3), and it also causes the compiler to ignore all ASL source code 3395NOOP 3396statements as well. 3397 3398Debugger: Enhanced the Sleep command to execute all sleep states. This 3399change allows Sleep to be invoked with no arguments and causes the 3400debugger to execute all of the sleep states, 0-5, automatically. 3401 3402---------------------------------------- 340320 December 2012. Summary of changes for version 20121220: 3404 34051) ACPICA Kernel-resident Subsystem: 3406 3407Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 3408alternate entry point for AcpiWalkResources and improves the usability of 3409the resource manager by accepting as input a buffer containing the output 3410of either a _CRS, _PRS, or _AEI method. The key functionality is that the 3411input buffer is not deleted by this interface so that it can be used by 3412the host later. See the ACPICA reference for details. 3413 3414Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 3415(DSDT version < 2). The constant will be truncated and this warning 3416reflects that behavior. 3417 3418Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 3419ExtendedInterrupt, and GpioInt descriptors. This change adds support to 3420both get and set the new wake bit in these descriptors, separately from 3421the existing share bit. Reported by Aaron Lu. 3422 3423Interpreter: Fix Store() when an implicit conversion is not possible. For 3424example, in the cases such as a store of a string to an existing package 3425object, implement the store as a CopyObject(). This is a small departure 3426from the ACPI specification which states that the control method should 3427be 3428aborted in this case. However, the ASLTS suite depends on this behavior. 3429 3430Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 3431macros: check if debug output is currently enabled as soon as possible to 3432minimize performance impact if debug is in fact not enabled. 3433 3434Source code restructuring: Cleanup to improve modularity. The following 3435new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 3436psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 3437Associated makefiles and project files have been updated. 3438 3439Changed an exception code for LoadTable operator. For the case where one 3440of the input strings is too long, change the returned exception code from 3441AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 3442 3443Fixed a possible memory leak in dispatcher error path. On error, delete 3444the mutex object created during method mutex creation. Reported by 3445tim.gardner@canonical.com. 3446 3447Example Code and Data Size: These are the sizes for the OS-independent 3448acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3449debug version of the code includes the debug output trace mechanism and 3450has a much larger code and data size. 3451 3452 Previous Release: 3453 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 3454 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3455 Current Release: 3456 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 3457 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 3458 3459 34602) iASL Compiler/Disassembler and Tools: 3461 3462iASL: Disallow a method call as argument to the ObjectType ASL operator. 3463This change tracks an errata to the ACPI 5.0 document. The AML grammar 3464will not allow the interpreter to differentiate between a method and a 3465method invocation when these are used as an argument to the ObjectType 3466operator. The ACPI specification change is to disallow a method 3467invocation 3468(UserTerm) for the ObjectType operator. 3469 3470Finish support for the TPM2 and CSRT tables in the headers, table 3471compiler, and disassembler. 3472 3473Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 3474always expires immediately if the semaphore is not available. The 3475original 3476code was using a relative-time timeout, but sem_timedwait requires the 3477use 3478of an absolute time. 3479 3480iASL: Added a remark if the Timer() operator is used within a 32-bit 3481table. This operator returns a 64-bit time value that will be truncated 3482within a 32-bit table. 3483 3484iASL Source code restructuring: Cleanup to improve modularity. The 3485following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 3486aslmethod.c, and aslfileio.c. Associated makefiles and project files have 3487been updated. 3488 3489 3490---------------------------------------- 349114 November 2012. Summary of changes for version 20121114: 3492 34931) ACPICA Kernel-resident Subsystem: 3494 3495Implemented a performance enhancement for ACPI/AML Package objects. This 3496change greatly increases the performance of Package objects within the 3497interpreter. It changes the processing of reference counts for packages 3498by 3499optimizing for the most common case where the package sub-objects are 3500either Integers, Strings, or Buffers. Increases the overall performance 3501of 3502the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 35032X.) 3504Chao Guan. ACPICA BZ 943. 3505 3506Implemented and deployed common macros to extract flag bits from resource 3507descriptors. Improves readability and maintainability of the code. Fixes 3508a 3509problem with the UART serial bus descriptor for the number of data bits 3510flags (was incorrectly 2 bits, should be 3). 3511 3512Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 3513of the macros and changed the SETx macros to the style of (destination, 3514source). Also added ACPI_CASTx companion macros. Lv Zheng. 3515 3516Example Code and Data Size: These are the sizes for the OS-independent 3517acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3518debug version of the code includes the debug output trace mechanism and 3519has a much larger code and data size. 3520 3521 Previous Release: 3522 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 3523 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3524 Current Release: 3525 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 3526 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3527 3528 35292) iASL Compiler/Disassembler and Tools: 3530 3531Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 3532adds the ShareAndWake and ExclusiveAndWake flags which were added to the 3533Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 3534 3535Disassembler: Fixed a problem with external declaration generation. Fixes 3536a problem where an incorrect pathname could be generated for an external 3537declaration if the original reference to the object includes leading 3538carats (^). ACPICA BZ 984. 3539 3540Debugger: Completed a major update for the Disassemble<method> command. 3541This command was out-of-date and did not properly disassemble control 3542methods that had any reasonable complexity. This fix brings the command 3543up 3544to the same level as the rest of the disassembler. Adds one new file, 3545dmdeferred.c, which is existing code that is now common with the main 3546disassembler and the debugger disassemble command. ACPICA MZ 978. 3547 3548iASL: Moved the parser entry prototype to avoid a duplicate declaration. 3549Newer versions of Bison emit this prototype, so moved the prototype out 3550of 3551the iASL header to where it is actually used in order to avoid a 3552duplicate 3553declaration. 3554 3555iASL/Tools: Standardized use of the stream I/O functions: 3556 1) Ensure check for I/O error after every fopen/fread/fwrite 3557 2) Ensure proper order of size/count arguments for fread/fwrite 3558 3) Use test of (Actual != Requested) after all fwrite, and most fread 3559 4) Standardize I/O error messages 3560Improves reliability and maintainability of the code. Bob Moore, Lv 3561Zheng. 3562ACPICA BZ 981. 3563 3564Disassembler: Prevent duplicate External() statements. During generation 3565of external statements, detect similar pathnames that are actually 3566duplicates such as these: 3567 External (\ABCD) 3568 External (ABCD) 3569Remove all leading '\' characters from pathnames during the external 3570statement generation so that duplicates will be detected and tossed. 3571ACPICA BZ 985. 3572 3573Tools: Replace low-level I/O with stream I/O functions. Replace 3574open/read/write/close with the stream I/O equivalents 3575fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 3576Moore. 3577 3578AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 3579name header so that AcpiXtract recognizes the output file/table. 3580 3581iASL: Remove obsolete -2 option flag. Originally intended to force the 3582compiler/disassembler into an ACPI 2.0 mode, this was never implemented 3583and the entire concept is now obsolete. 3584 3585---------------------------------------- 358618 October 2012. Summary of changes for version 20121018: 3587 3588 35891) ACPICA Kernel-resident Subsystem: 3590 3591Updated support for the ACPI 5.0 MPST table. Fixes some problems 3592introduced by late changes to the table as it was added to the ACPI 5.0 3593specification. Includes header, disassembler, and data table compiler 3594support as well as a new version of the MPST template. 3595 3596AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 35975.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 3598methods: _HID, _CID, and _UID. 3599 3600Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 3601ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 3602name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 3603names for their various drivers. Affects the AcpiGetObjectInfo external 3604interface, and other internal interfaces as well. 3605 3606Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 3607This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 3608on machines that support non-aligned transfers. Optimizes for this case 3609rather than using a strncpy. With assistance from Zheng Lv. 3610 3611Resource Manager: Small fix for buffer size calculation. Fixed a one byte 3612error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 3613 3614Added a new debug print message for AML mutex objects that are force- 3615released. At control method termination, any currently acquired mutex 3616objects are force-released. Adds a new debug-only message for each one 3617that is released. 3618 3619Audited/updated all ACPICA return macros and the function debug depth 3620counter: 1) Ensure that all functions that use the various TRACE macros 3621also use the appropriate ACPICA return macros. 2) Ensure that all normal 3622return statements surround the return expression (value) with parens to 3623ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 3624Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 3625 3626Global source code changes/maintenance: All extra lines at the start and 3627end of each source file have been removed for consistency. Also, within 3628comments, all new sentences start with a single space instead of a double 3629space, again for consistency across the code base. 3630 3631Example Code and Data Size: These are the sizes for the OS-independent 3632acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3633debug version of the code includes the debug output trace mechanism and 3634has a much larger code and data size. 3635 3636 Previous Release: 3637 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 3638 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 3639 Current Release: 3640 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 3641 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3642 3643 36442) iASL Compiler/Disassembler and Tools: 3645 3646AcpiExec: Improved the algorithm used for memory leak/corruption 3647detection. Added some intelligence to the code that maintains the global 3648list of allocated memory. The list is now ordered by allocated memory 3649address, significantly improving performance. When running AcpiExec on 3650the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 3651on the platform and/or the environment. Note, this performance 3652enhancement affects the AcpiExec utility only, not the kernel-resident 3653ACPICA code. 3654 3655Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 3656the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 3657incorrect table offset reported for invalid opcodes. Report the original 365832-bit value for bad ACPI_NAMEs (as well as the repaired name.) 3659 3660Disassembler: Enhanced the -vt option to emit the binary table data in 3661hex format to assist with debugging. 3662 3663Fixed a potential filename buffer overflow in osunixdir.c. Increased the 3664size of file structure. Colin Ian King. 3665 3666---------------------------------------- 366713 September 2012. Summary of changes for version 20120913: 3668 3669 36701) ACPICA Kernel-resident Subsystem: 3671 3672ACPI 5.0: Added two new notify types for the Hardware Error Notification 3673Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 3674and 3675MCE(6). 3676 3677Table Manager: Merged/removed duplicate code in the root table resize 3678functions. One function is external, the other is internal. Lv Zheng, 3679ACPICA 3680BZ 846. 3681 3682Makefiles: Completely removed the obsolete "Linux" makefiles under 3683acpica/generate/linux. These makefiles are obsolete and have been 3684replaced 3685by 3686the generic unix makefiles under acpica/generate/unix. 3687 3688Makefiles: Ensure that binary files always copied properly. Minor rule 3689change 3690to ensure that the final binary output files are always copied up to the 3691appropriate binary directory (bin32 or bin64.) 3692 3693Example Code and Data Size: These are the sizes for the OS-independent 3694acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3695debug 3696version of the code includes the debug output trace mechanism and has a 3697much 3698larger code and data size. 3699 3700 Previous Release: 3701 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 3702 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 3703 Current Release: 3704 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 3705 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 3706 3707 37082) iASL Compiler/Disassembler and Tools: 3709 3710Disassembler: Fixed a possible fault during the disassembly of resource 3711descriptors when a second parse is required because of the invocation of 3712external control methods within the table. With assistance from 3713adq@lidskialf.net. ACPICA BZ 976. 3714 3715iASL: Fixed a namepath optimization problem. An error can occur if the 3716parse 3717node that contains the namepath to be optimized does not have a parent 3718node 3719that is a named object. This change fixes the problem. 3720 3721iASL: Fixed a regression where the AML file is not deleted on errors. The 3722AML 3723output file should be deleted if there are any errors during the 3724compiler. 3725The 3726only exception is if the -f (force output) option is used. ACPICA BZ 974. 3727 3728iASL: Added a feature to automatically increase internal line buffer 3729sizes. 3730Via realloc(), automatically increase the internal line buffer sizes as 3731necessary to support very long source code lines. The current version of 3732the 3733preprocessor requires a buffer long enough to contain full source code 3734lines. 3735This change increases the line buffer(s) if the input lines go beyond the 3736current buffer size. This eliminates errors that occurred when a source 3737code 3738line was longer than the buffer. 3739 3740iASL: Fixed a problem with constant folding in method declarations. The 3741SyncLevel term is a ByteConstExpr, and incorrect code would be generated 3742if a 3743Type3 opcode was used. 3744 3745Debugger: Improved command help support. For incorrect argument count, 3746display 3747full help for the command. For help command itself, allow an argument to 3748specify a command. 3749 3750Test Suites: Several bug fixes for the ASLTS suite reduces the number of 3751errors during execution of the suite. Guan Chao. 3752 3753---------------------------------------- 375416 August 2012. Summary of changes for version 20120816: 3755 3756 37571) ACPICA Kernel-resident Subsystem: 3758 3759Removed all use of the deprecated _GTS and _BFS predefined methods. The 3760_GTS 3761(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 3762deprecated and will probably be removed from the ACPI specification. 3763Windows 3764does not invoke them, and reportedly never will. The final nail in the 3765coffin 3766is that the ACPI specification states that these methods must be run with 3767interrupts off, which is not going to happen in a kernel interpreter. 3768Note: 3769Linux has removed all use of the methods also. It was discovered that 3770invoking these functions caused failures on some machines, probably 3771because 3772they were never tested since Windows does not call them. Affects two 3773external 3774interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 3775ACPICA BZ 969. 3776 3777Implemented support for complex bit-packed buffers returned from the _PLD 3778(Physical Location of Device) predefined method. Adds a new external 3779interface, AcpiDecodePldBuffer that parses the buffer into a more usable 3780C 3781structure. Note: C Bitfields cannot be used for this type of predefined 3782structure since the memory layout of individual bitfields is not defined 3783by 3784the C language. In addition, there are endian concerns where a compiler 3785will 3786change the bitfield ordering based on the machine type. The new ACPICA 3787interface eliminates these issues, and should be called after _PLD is 3788executed. ACPICA BZ 954. 3789 3790Implemented a change to allow a scope change to root (via "Scope (\)") 3791during 3792execution of module-level ASL code (code that is executed at table load 3793time.) Lin Ming. 3794 3795Added the Windows8/Server2012 string for the _OSI method. This change 3796adds 3797a 3798new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 37992012. 3800 3801Added header support for the new ACPI tables DBG2 (Debug Port Table Type 38022) 3803and CSRT (Core System Resource Table). 3804 3805Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 3806names. This simplifies access to the buffers returned by these predefined 3807names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 3808 3809GPE support: Removed an extraneous parameter from the various low-level 3810internal GPE functions. Tang Feng. 3811 3812Removed the linux makefiles from the unix packages. The generate/linux 3813makefiles are obsolete and have been removed from the unix tarball 3814release 3815packages. The replacement makefiles are under generate/unix, and there is 3816a 3817top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 3818 3819Updates for Unix makefiles: 38201) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 38212) Update linker flags (move to end of command line) for AcpiExec 3822utility. 3823Guan Chao. 3824 3825Split ACPICA initialization functions to new file, utxfinit.c. Split from 3826utxface.c to improve modularity and reduce file size. 3827 3828Example Code and Data Size: These are the sizes for the OS-independent 3829acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3830debug version of the code includes the debug output trace mechanism and 3831has a 3832much larger code and data size. 3833 3834 Previous Release: 3835 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 3836 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 3837 Current Release: 3838 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 3839 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 3840 3841 38422) iASL Compiler/Disassembler and Tools: 3843 3844iASL: Fixed a problem with constant folding for fixed-length constant 3845expressions. The constant-folding code was not being invoked for constant 3846expressions that allow the use of type 3/4/5 opcodes to generate 3847constants 3848for expressions such as ByteConstExpr, WordConstExpr, etc. This could 3849result 3850in the generation of invalid AML bytecode. ACPICA BZ 970. 3851 3852iASL: Fixed a generation issue on newer versions of Bison. Newer versions 3853apparently automatically emit some of the necessary externals. This 3854change 3855handles these versions in order to eliminate generation warnings. 3856 3857Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 3858 3859Disassembler: Add support to decode _PLD buffers. The decoded buffer 3860appears 3861within comments in the output file. 3862 3863Debugger: Fixed a regression with the "Threads" command where 3864AE_BAD_PARAMETER was always returned. 3865 3866---------------------------------------- 386711 July 2012. Summary of changes for version 20120711: 3868 38691) ACPICA Kernel-resident Subsystem: 3870 3871Fixed a possible fault in the return package object repair code. Fixes a 3872problem that can occur when a lone package object is wrapped with an 3873outer 3874package object in order to force conformance to the ACPI specification. 3875Can 3876affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 3877_DLM, 3878_CSD, _PSD, _TSD. 3879 3880Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 3881PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 3882ARB_DIS bit must be implemented in the host-dependent C3 processor power 3883state 3884support. Note, ARB_DIS is obsolete and only applies to older chipsets, 3885both 3886Intel and other vendors. (for Intel: ICH4-M and earlier) 3887 3888This change removes the code to disable/enable bus master arbitration 3889during 3890suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 3891causes 3892resume problems on some machines. The change has been in use for over 3893seven 3894years within Linux. 3895 3896Implemented two new external interfaces to support host-directed dynamic 3897ACPI 3898table load and unload. They are intended to simplify the host 3899implementation 3900of hot-plug support: 3901 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 3902 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 3903table. 3904See the ACPICA reference for additional details. Adds one new file, 3905components/tables/tbxfload.c 3906 3907Implemented and deployed two new interfaces for errors and warnings that 3908are 3909known to be caused by BIOS/firmware issues: 3910 AcpiBiosError: Prints "ACPI Firmware Error" message. 3911 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 3912Deployed these new interfaces in the ACPICA Table Manager code for ACPI 3913table 3914and FADT errors. Additional deployment to be completed as appropriate in 3915the 3916future. The associated conditional macros are ACPI_BIOS_ERROR and 3917ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 3918ACPICA 3919BZ 3920843. 3921 3922Implicit notify support: ensure that no memory allocation occurs within a 3923critical region. This fix moves a memory allocation outside of the time 3924that a 3925spinlock is held. Fixes issues on systems that do not allow this 3926behavior. 3927Jung-uk Kim. 3928 3929Split exception code utilities and tables into a new file, 3930utilities/utexcep.c 3931 3932Example Code and Data Size: These are the sizes for the OS-independent 3933acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3934debug 3935version of the code includes the debug output trace mechanism and has a 3936much 3937larger code and data size. 3938 3939 Previous Release: 3940 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 3941 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 3942 Current Release: 3943 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 3944 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 3945 3946 39472) iASL Compiler/Disassembler and Tools: 3948 3949iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 3950of 39510. Jung-uk Kim. 3952 3953Debugger: Enhanced the "tables" command to emit additional information 3954about 3955the current set of ACPI tables, including the owner ID and flags decode. 3956 3957Debugger: Reimplemented the "unload" command to use the new 3958AcpiUnloadParentTable external interface. This command was disable 3959previously 3960due to need for an unload interface. 3961 3962AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 3963option 3964will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 3965 3966---------------------------------------- 396720 June 2012. Summary of changes for version 20120620: 3968 3969 39701) ACPICA Kernel-resident Subsystem: 3971 3972Implemented support to expand the "implicit notify" feature to allow 3973multiple 3974devices to be notified by a single GPE. This feature automatically 3975generates a 3976runtime device notification in the absence of a BIOS-provided GPE control 3977method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 3978notify is 3979provided by ACPICA for Windows compatibility, and is a workaround for 3980BIOS 3981AML 3982code errors. See the description of the AcpiSetupGpeForWake interface in 3983the 3984APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 3985 3986Changed some comments and internal function names to simplify and ensure 3987correctness of the Linux code translation. No functional changes. 3988 3989Example Code and Data Size: These are the sizes for the OS-independent 3990acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3991debug 3992version of the code includes the debug output trace mechanism and has a 3993much 3994larger code and data size. 3995 3996 Previous Release: 3997 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 3998 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 3999 Current Release: 4000 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 4001 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 4002 4003 40042) iASL Compiler/Disassembler and Tools: 4005 4006Disassembler: Added support to emit short, commented descriptions for the 4007ACPI 4008predefined names in order to improve the readability of the disassembled 4009output. ACPICA BZ 959. Changes include: 4010 1) Emit descriptions for all standard predefined names (_INI, _STA, 4011_PRW, 4012etc.) 4013 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 4014 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 4015etc.) 4016 4017AcpiSrc: Fixed several long-standing Linux code translation issues. 4018Argument 4019descriptions in function headers are now translated properly to lower 4020case 4021and 4022underscores. ACPICA BZ 961. Also fixes translation problems such as 4023these: 4024(old -> new) 4025 i_aSL -> iASL 4026 00-7_f -> 00-7F 4027 16_k -> 16K 4028 local_fADT -> local_FADT 4029 execute_oSI -> execute_OSI 4030 4031iASL: Fixed a problem where null bytes were inadvertently emitted into 4032some 4033listing files. 4034 4035iASL: Added the existing debug options to the standard help screen. There 4036are 4037no longer two different help screens. ACPICA BZ 957. 4038 4039AcpiHelp: Fixed some typos in the various predefined name descriptions. 4040Also 4041expand some of the descriptions where appropriate. 4042 4043iASL: Fixed the -ot option (display compile times/statistics). Was not 4044working 4045properly for standard output; only worked for the debug file case. 4046 4047---------------------------------------- 404818 May 2012. Summary of changes for version 20120518: 4049 4050 40511) ACPICA Core Subsystem: 4052 4053Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 4054defined 4055to block until asynchronous events such as notifies and GPEs have 4056completed. 4057Within ACPICA, it is only called before a notify or GPE handler is 4058removed/uninstalled. It also may be useful for the host OS within related 4059drivers such as the Embedded Controller driver. See the ACPICA reference 4060for 4061additional information. ACPICA BZ 868. 4062 4063ACPI Tables: Added a new error message for a possible overflow failure 4064during 4065the conversion of FADT 32-bit legacy register addresses to internal 4066common 406764- 4068bit GAS structure representation. The GAS has a one-byte "bit length" 4069field, 4070thus limiting the register length to 255 bits. ACPICA BZ 953. 4071 4072Example Code and Data Size: These are the sizes for the OS-independent 4073acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4074debug 4075version of the code includes the debug output trace mechanism and has a 4076much 4077larger code and data size. 4078 4079 Previous Release: 4080 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4081 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 4082 Current Release: 4083 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 4084 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 4085 4086 40872) iASL Compiler/Disassembler and Tools: 4088 4089iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 4090macro. 4091This keyword was added late in the ACPI 5.0 release cycle and was not 4092implemented until now. 4093 4094Disassembler: Added support for Operation Region externals. Adds missing 4095support for operation regions that are defined in another table, and 4096referenced locally via a Field or BankField ASL operator. Now generates 4097the 4098correct External statement. 4099 4100Disassembler: Several additional fixes for the External() statement 4101generation 4102related to some ASL operators. Also, order the External() statements 4103alphabetically in the disassembler output. Fixes the External() 4104generation 4105for 4106the Create* field, Alias, and Scope operators: 4107 1) Create* buffer field operators - fix type mismatch warning on 4108disassembly 4109 2) Alias - implement missing External support 4110 3) Scope - fix to make sure all necessary externals are emitted. 4111 4112iASL: Improved pathname support. For include files, merge the prefix 4113pathname 4114with the file pathname and eliminate unnecessary components. Convert 4115backslashes in all pathnames to forward slashes, for readability. Include 4116file 4117pathname changes affect both #include and Include() type operators. 4118 4119iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 4120end 4121of a valid line by inserting a newline and then returning the EOF during 4122the 4123next call to GetNextLine. Prevents the line from being ignored due to EOF 4124condition. 4125 4126iASL: Implemented some changes to enhance the IDE support (-vi option.) 4127Error 4128and Warning messages are now correctly recognized for both the source 4129code 4130browser and the global error and warning counts. 4131 4132---------------------------------------- 413320 April 2012. Summary of changes for version 20120420: 4134 4135 41361) ACPICA Core Subsystem: 4137 4138Implemented support for multiple notify handlers. This change adds 4139support 4140to 4141allow multiple system and device notify handlers on Device, Thermal Zone, 4142and 4143Processor objects. This can simplify the host OS notification 4144implementation. 4145Also re-worked and restructured the entire notify support code to 4146simplify 4147handler installation, handler removal, notify event queuing, and notify 4148dispatch to handler(s). Note: there can still only be two global notify 4149handlers - one for system notifies and one for device notifies. There are 4150no 4151changes to the existing handler install/remove interfaces. Lin Ming, Bob 4152Moore, Rafael Wysocki. 4153 4154Fixed a regression in the package repair code where the object reference 4155count was calculated incorrectly. Regression was introduced in the commit 4156"Support to add Package wrappers". 4157 4158Fixed a couple possible memory leaks in the AML parser, in the error 4159recovery 4160path. Jesper Juhl, Lin Ming. 4161 4162Example Code and Data Size: These are the sizes for the OS-independent 4163acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4164debug version of the code includes the debug output trace mechanism and 4165has a 4166much larger code and data size. 4167 4168 Previous Release: 4169 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4170 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4171 Current Release: 4172 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4173 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 4174 4175 41762) iASL Compiler/Disassembler and Tools: 4177 4178iASL: Fixed a problem with the resource descriptor support where the 4179length 4180of the StartDependentFn and StartDependentFnNoPrio descriptors were not 4181included in cumulative descriptor offset, resulting in incorrect values 4182for 4183resource tags within resource descriptors appearing after a 4184StartDependent* 4185descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 4186 4187iASL and Preprocessor: Implemented full support for the #line directive 4188to 4189correctly track original source file line numbers through the .i 4190preprocessor 4191output file - for error and warning messages. 4192 4193iASL: Expand the allowable byte constants for address space IDs. 4194Previously, 4195the allowable range was 0x80-0xFF (user-defined spaces), now the range is 41960x0A-0xFF to allow for custom and new IDs without changing the compiler. 4197 4198iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 4199 4200iASL: Add option to completely disable the preprocessor (-Pn). 4201 4202iASL: Now emit all error/warning messages to standard error (stderr) by 4203default (instead of the previous stdout). 4204 4205ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 4206Update 4207for resource descriptor offset fix above. Update/cleanup error output 4208routines. Enable and send iASL errors/warnings to an error logfile 4209(error.txt). Send all other iASL output to a logfile (compiler.txt). 4210Fixed 4211several extraneous "unrecognized operator" messages. 4212 4213---------------------------------------- 421420 March 2012. Summary of changes for version 20120320: 4215 4216 42171) ACPICA Core Subsystem: 4218 4219Enhanced the sleep/wake interfaces to optionally execute the _GTS method 4220(Going To Sleep) and the _BFS method (Back From Sleep). Windows 4221apparently 4222does not execute these methods, and therefore these methods are often 4223untested. It has been seen on some systems where the execution of these 4224methods causes errors and also prevents the machine from entering S5. It 4225is 4226therefore suggested that host operating systems do not execute these 4227methods 4228by default. In the future, perhaps these methods can be optionally 4229executed 4230based on the age of the system and/or what is the newest version of 4231Windows 4232that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 4233and 4234AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 4235Ming. 4236 4237Fixed a problem where the length of the local/common FADT was set too 4238early. 4239The local FADT table length cannot be set to the common length until the 4240original length has been examined. There is code that checks the table 4241length 4242and sets various fields appropriately. This can affect older machines 4243with 4244early FADT versions. For example, this can cause inadvertent writes to 4245the 4246CST_CNT register. Julian Anastasov. 4247 4248Fixed a mapping issue related to a physical table override. Use the 4249deferred 4250mapping mechanism for tables loaded via the physical override OSL 4251interface. 4252This allows for early mapping before the virtual memory manager is 4253available. 4254Thomas Renninger, Bob Moore. 4255 4256Enhanced the automatic return-object repair code: Repair a common problem 4257with 4258predefined methods that are defined to return a variable-length Package 4259of 4260sub-objects. If there is only one sub-object, some BIOS ASL code 4261mistakenly 4262simply returns the single object instead of a Package with one sub- 4263object. 4264This new support will repair this error by wrapping a Package object 4265around 4266the original object, creating the correct and expected Package with one 4267sub- 4268object. Names that can be repaired in this manner include: _ALR, _CSD, 4269_HPX, 4270_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 4271939. 4272 4273Changed the exception code returned for invalid ACPI paths passed as 4274parameters to external interfaces such as AcpiEvaluateObject. Was 4275AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 4276 4277Example Code and Data Size: These are the sizes for the OS-independent 4278acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4279debug 4280version of the code includes the debug output trace mechanism and has a 4281much 4282larger code and data size. 4283 4284 Previous Release: 4285 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 4286 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4287 Current Release: 4288 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4289 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4290 4291 42922) iASL Compiler/Disassembler and Tools: 4293 4294iASL: Added the infrastructure and initial implementation of a integrated 4295C- 4296like preprocessor. This will simplify BIOS development process by 4297eliminating 4298the need for a separate preprocessing step during builds. On Windows, it 4299also 4300eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 4301features including full #define() macro support are still under 4302development. 4303These preprocessor directives are supported: 4304 #define 4305 #elif 4306 #else 4307 #endif 4308 #error 4309 #if 4310 #ifdef 4311 #ifndef 4312 #include 4313 #pragma message 4314 #undef 4315 #warning 4316In addition, these new command line options are supported: 4317 -D <symbol> Define symbol for preprocessor use 4318 -li Create preprocessed output file (*.i) 4319 -P Preprocess only and create preprocessor output file (*.i) 4320 4321Table Compiler: Fixed a problem where the equals operator within an 4322expression 4323did not work properly. 4324 4325Updated iASL to use the current versions of Bison/Flex. Updated the 4326Windows 4327project file to invoke these tools from the standard location. ACPICA BZ 4328904. 4329Versions supported: 4330 Flex for Windows: V2.5.4 4331 Bison for Windows: V2.4.1 4332 4333---------------------------------------- 433415 February 2012. Summary of changes for version 20120215: 4335 4336 43371) ACPICA Core Subsystem: 4338 4339There have been some major changes to the sleep/wake support code, as 4340described below (a - e). 4341 4342a) The AcpiLeaveSleepState has been split into two interfaces, similar to 4343AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 4344AcpiLeaveSleepStatePrep. This allows the host to perform actions between 4345the 4346time the _BFS method is called and the _WAK method is called. NOTE: all 4347hosts 4348must update their wake/resume code or else sleep/wake will not work 4349properly. 4350Rafael Wysocki. 4351 4352b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 4353_WAK 4354method. Some machines require that the GPEs are enabled before the _WAK 4355method 4356is executed. Thomas Renninger. 4357 4358c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 4359bit. 4360Some BIOS code assumes that WAK_STS will be cleared on resume and use it 4361to 4362determine whether the system is rebooting or resuming. Matthew Garrett. 4363 4364d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 4365Sleep) to 4366match the ACPI specification requirement. Rafael Wysocki. 4367 4368e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 4369registers within the V5 FADT. This support adds two new files: 4370hardware/hwesleep.c implements the support for the new registers. Moved 4371all 4372sleep/wake external interfaces to hardware/hwxfsleep.c. 4373 4374 4375Added a new OSL interface for ACPI table overrides, 4376AcpiOsPhysicalTableOverride. This interface allows the host to override a 4377table via a physical address, instead of the logical address required by 4378AcpiOsTableOverride. This simplifies the host implementation. Initial 4379implementation by Thomas Renninger. The ACPICA implementation creates a 4380single 4381shared function for table overrides that attempts both a logical and a 4382physical override. 4383 4384Expanded the OSL memory read/write interfaces to 64-bit data 4385(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 4386transfer support for GAS register structures passed to AcpiRead and 4387AcpiWrite. 4388 4389Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 4390custom 4391build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 4392model. 4393See the ACPICA reference for details. ACPICA BZ 942. This option removes 4394about 439510% of the code and 5% of the static data, and the following hardware 4396ACPI 4397features become unavailable: 4398 PM Event and Control registers 4399 SCI interrupt (and handler) 4400 Fixed Events 4401 General Purpose Events (GPEs) 4402 Global Lock 4403 ACPI PM timer 4404 FACS table (Waking vectors and Global Lock) 4405 4406Updated the unix tarball directory structure to match the ACPICA git 4407source 4408tree. This ensures that the generic unix makefiles work properly (in 4409generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 4410867. 4411 4412Updated the return value of the _REV predefined method to integer value 5 4413to 4414reflect ACPI 5.0 support. 4415 4416Moved the external ACPI PM timer interface prototypes to the public 4417acpixf.h 4418file where they belong. 4419 4420Example Code and Data Size: These are the sizes for the OS-independent 4421acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4422debug 4423version of the code includes the debug output trace mechanism and has a 4424much 4425larger code and data size. 4426 4427 Previous Release: 4428 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 4429 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 4430 Current Release: 4431 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 4432 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4433 4434 44352) iASL Compiler/Disassembler and Tools: 4436 4437Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 4438descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 4439incorrectly displayed. 4440 4441AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 4442specification. 4443 4444---------------------------------------- 444511 January 2012. Summary of changes for version 20120111: 4446 4447 44481) ACPICA Core Subsystem: 4449 4450Implemented a new mechanism to allow host device drivers to check for 4451address 4452range conflicts with ACPI Operation Regions. Both SystemMemory and 4453SystemIO 4454address spaces are supported. A new external interface, 4455AcpiCheckAddressRange, 4456allows drivers to check an address range against the ACPI namespace. See 4457the 4458ACPICA reference for additional details. Adds one new file, 4459utilities/utaddress.c. Lin Ming, Bob Moore. 4460 4461Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 4462Control 4463and 4464Status registers, update the ACPI 5.0 flags, and update internal data 4465structures to handle an FADT larger than 256 bytes. The size of the ACPI 44665.0 4467FADT is 268 bytes. 4468 4469Updated all ACPICA copyrights and signons to 2012. Added the 2012 4470copyright to 4471all module headers and signons, including the standard Linux header. This 4472affects virtually every file in the ACPICA core subsystem, iASL compiler, 4473and 4474all ACPICA utilities. 4475 4476Example Code and Data Size: These are the sizes for the OS-independent 4477acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4478debug 4479version of the code includes the debug output trace mechanism and has a 4480much 4481larger code and data size. 4482 4483 Previous Release: 4484 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 4485 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 4486 Current Release: 4487 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 4488 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 4489 4490 44912) iASL Compiler/Disassembler and Tools: 4492 4493Disassembler: fixed a problem with the automatic resource tag generation 4494support. Fixes a problem where the resource tags are inadvertently not 4495constructed if the table being disassembled contains external references 4496to 4497control methods. Moved the actual construction of the tags to after the 4498final 4499namespace is constructed (after 2nd parse is invoked due to external 4500control 4501method references.) ACPICA BZ 941. 4502 4503Table Compiler: Make all "generic" operators caseless. These are the 4504operators 4505like UINT8, String, etc. Making these caseless improves ease-of-use. 4506ACPICA BZ 4507934. 4508 4509---------------------------------------- 451023 November 2011. Summary of changes for version 20111123: 4511 45120) ACPI 5.0 Support: 4513 4514This release contains full support for the ACPI 5.0 specification, as 4515summarized below. 4516 4517Reduced Hardware Support: 4518------------------------- 4519 4520This support allows for ACPI systems without the usual ACPI hardware. 4521This 4522support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 4523will 4524not attempt to initialize or use any of the usual ACPI hardware. Note, 4525when 4526this flag is set, all of the following ACPI hardware is assumed to be not 4527present and is not initialized or accessed: 4528 4529 General Purpose Events (GPEs) 4530 Fixed Events (PM1a/PM1b and PM Control) 4531 Power Management Timer and Console Buttons (power/sleep) 4532 Real-time Clock Alarm 4533 Global Lock 4534 System Control Interrupt (SCI) 4535 The FACS is assumed to be non-existent 4536 4537ACPI Tables: 4538------------ 4539 4540All new tables and updates to existing tables are fully supported in the 4541ACPICA headers (for use by device drivers), the disassembler, and the 4542iASL 4543Data Table Compiler. ACPI 5.0 defines these new tables: 4544 4545 BGRT /* Boot Graphics Resource Table */ 4546 DRTM /* Dynamic Root of Trust for Measurement table */ 4547 FPDT /* Firmware Performance Data Table */ 4548 GTDT /* Generic Timer Description Table */ 4549 MPST /* Memory Power State Table */ 4550 PCCT /* Platform Communications Channel Table */ 4551 PMTT /* Platform Memory Topology Table */ 4552 RASF /* RAS Feature table */ 4553 4554Operation Regions/SpaceIDs: 4555--------------------------- 4556 4557All new operation regions are fully supported by the iASL compiler, the 4558disassembler, and the ACPICA runtime code (for dispatch to region 4559handlers.) 4560The new operation region Space IDs are: 4561 4562 GeneralPurposeIo 4563 GenericSerialBus 4564 4565Resource Descriptors: 4566--------------------- 4567 4568All new ASL resource descriptors are fully supported by the iASL 4569compiler, 4570the 4571ASL/AML disassembler, and the ACPICA runtime Resource Manager code 4572(including 4573all new predefined resource tags). New descriptors are: 4574 4575 FixedDma 4576 GpioIo 4577 GpioInt 4578 I2cSerialBus 4579 SpiSerialBus 4580 UartSerialBus 4581 4582ASL/AML Operators, New and Modified: 4583------------------------------------ 4584 4585One new operator is added, the Connection operator, which is used to 4586associate 4587a GeneralPurposeIo or GenericSerialBus resource descriptor with 4588individual 4589field objects within an operation region. Several new protocols are 4590associated 4591with the AccessAs operator. All are fully supported by the iASL compiler, 4592disassembler, and runtime ACPICA AML interpreter: 4593 4594 Connection // Declare Field Connection 4595attributes 4596 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 4597 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 4598Protocol 4599 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 4600 RawDataBuffer // Data type for Vendor Data 4601fields 4602 4603Predefined ASL/AML Objects: 4604--------------------------- 4605 4606All new predefined objects/control-methods are supported by the iASL 4607compiler 4608and the ACPICA runtime validation/repair (arguments and return values.) 4609New 4610predefined names include the following: 4611 4612Standard Predefined Names (Objects or Control Methods): 4613 _AEI, _CLS, _CPC, _CWS, _DEP, 4614 _DLM, _EVT, _GCP, _CRT, _GWS, 4615 _HRV, _PRE, _PSE, _SRT, _SUB. 4616 4617Resource Tags (Names used to access individual fields within resource 4618descriptors): 4619 _DBT, _DPL, _DRS, _END, _FLC, 4620 _IOR, _LIN, _MOD, _PAR, _PHA, 4621 _PIN, _PPI, _POL, _RXL, _SLV, 4622 _SPE, _STB, _TXL, _VEN. 4623 4624ACPICA External Interfaces: 4625--------------------------- 4626 4627Several new interfaces have been defined for use by ACPI-related device 4628drivers and other host OS services: 4629 4630AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 4631to 4632acquire and release AML mutexes that are defined in the DSDT/SSDT tables 4633provided by the BIOS. They are intended to be used in conjunction with 4634the 4635ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 4636mutual exclusion with the AML code/interpreter. 4637 4638AcpiGetEventResources: Returns the (formatted) resource descriptors as 4639defined 4640by the ACPI 5.0 _AEI object (ACPI Event Information). This object 4641provides 4642resource descriptors associated with hardware-reduced platform events, 4643similar 4644to the AcpiGetCurrentResources interface. 4645 4646Operation Region Handlers: For General Purpose IO and Generic Serial Bus 4647operation regions, information about the Connection() object and any 4648optional 4649length information is passed to the region handler within the Context 4650parameter. 4651 4652AcpiBufferToResource: This interface converts a raw AML buffer containing 4653a 4654resource template or resource descriptor to the ACPI_RESOURCE internal 4655format 4656suitable for use by device drivers. Can be used by an operation region 4657handler 4658to convert the Connection() buffer object into a ACPI_RESOURCE. 4659 4660Miscellaneous/Tools/TestSuites: 4661------------------------------- 4662 4663Support for extended _HID names (Four alpha characters instead of three). 4664Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 4665Support for ACPI 5.0 features in the ASLTS test suite. 4666Fully updated documentation (ACPICA and iASL reference documents.) 4667 4668ACPI Table Definition Language: 4669------------------------------- 4670 4671Support for this language was implemented and released as a subsystem of 4672the 4673iASL compiler in 2010. (See the iASL compiler User Guide.) 4674 4675 4676Non-ACPI 5.0 changes for this release: 4677-------------------------------------- 4678 46791) ACPICA Core Subsystem: 4680 4681Fix a problem with operation region declarations where a failure can 4682occur 4683if 4684the region name and an argument that evaluates to an object (such as the 4685region address) are in different namespace scopes. Lin Ming, ACPICA BZ 4686937. 4687 4688Do not abort an ACPI table load if an invalid space ID is found within. 4689This 4690will be caught later if the offending method is executed. ACPICA BZ 925. 4691 4692Fixed an issue with the FFixedHW space ID where the ID was not always 4693recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 4694 4695Fixed a problem with the 32-bit generation of the unix-specific OSL 4696(osunixxf.c). Lin Ming, ACPICA BZ 936. 4697 4698Several changes made to enable generation with the GCC 4.6 compiler. 4699ACPICA BZ 4700935. 4701 4702New error messages: Unsupported I/O requests (not 8/16/32 bit), and 4703Index/Bank 4704field registers out-of-range. 4705 47062) iASL Compiler/Disassembler and Tools: 4707 4708iASL: Implemented the __PATH__ operator, which returns the full pathname 4709of 4710the current source file. 4711 4712AcpiHelp: Automatically display expanded keyword information for all ASL 4713operators. 4714 4715Debugger: Add "Template" command to disassemble/dump resource template 4716buffers. 4717 4718Added a new master script to generate and execute the ASLTS test suite. 4719Automatically handles 32- and 64-bit generation. See tests/aslts.sh 4720 4721iASL: Fix problem with listing generation during processing of the 4722Switch() 4723operator where AML listing was disabled until the entire Switch block was 4724completed. 4725 4726iASL: Improve support for semicolon statement terminators. Fix "invalid 4727character" message for some cases when the semicolon is used. Semicolons 4728are 4729now allowed after every <Term> grammar element. ACPICA BZ 927. 4730 4731iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 4732923. 4733 4734Disassembler: Fix problem with disassembly of the DataTableRegion 4735operator 4736where an inadvertent "Unhandled deferred opcode" message could be 4737generated. 4738 47393) Example Code and Data Size 4740 4741These are the sizes for the OS-independent acpica.lib produced by the 4742Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 4743includes the debug output trace mechanism and has a much larger code and 4744data 4745size. 4746 4747 Previous Release: 4748 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4749 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4750 Current Release: 4751 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 4752 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 4753 4754---------------------------------------- 475522 September 2011. Summary of changes for version 20110922: 4756 47570) ACPI 5.0 News: 4758 4759Support for ACPI 5.0 in ACPICA has been underway for several months and 4760will 4761be released at the same time that ACPI 5.0 is officially released. 4762 4763The ACPI 5.0 specification is on track for release in the next few 4764months. 4765 47661) ACPICA Core Subsystem: 4767 4768Fixed a problem where the maximum sleep time for the Sleep() operator was 4769intended to be limited to two seconds, but was inadvertently limited to 477020 4771seconds instead. 4772 4773Linux and Unix makefiles: Added header file dependencies to ensure 4774correct 4775generation of ACPICA core code and utilities. Also simplified the 4776makefiles 4777considerably through the use of the vpath variable to specify search 4778paths. 4779ACPICA BZ 924. 4780 47812) iASL Compiler/Disassembler and Tools: 4782 4783iASL: Implemented support to check the access length for all fields 4784created to 4785access named Resource Descriptor fields. For example, if a resource field 4786is 4787defined to be two bits, a warning is issued if a CreateXxxxField() is 4788used 4789with an incorrect bit length. This is implemented for all current 4790resource 4791descriptor names. ACPICA BZ 930. 4792 4793Disassembler: Fixed a byte ordering problem with the output of 24-bit and 479456- 4795bit integers. 4796 4797iASL: Fixed a couple of issues associated with variable-length package 4798objects. 1) properly handle constants like One, Ones, Zero -- do not make 4799a 4800VAR_PACKAGE when these are used as a package length. 2) Allow the 4801VAR_PACKAGE 4802opcode (in addition to PACKAGE) when validating object types for 4803predefined 4804names. 4805 4806iASL: Emit statistics for all output files (instead of just the ASL input 4807and 4808AML output). Includes listings, hex files, etc. 4809 4810iASL: Added -G option to the table compiler to allow the compilation of 4811custom 4812ACPI tables. The only part of a table that is required is the standard 481336- 4814byte 4815ACPI header. 4816 4817AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 4818headers), 4819which also adds correct 64-bit support. Also, now all output filenames 4820are 4821completely lower case. 4822 4823AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 4824loading table files. A warning is issued for any such tables. The only 4825exception is an FADT. This also fixes a possible fault when attempting to 4826load 4827non-AML tables. ACPICA BZ 932. 4828 4829AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 4830a 4831missing table terminator could cause a fault when using the -p option. 4832 4833AcpiSrc: Fixed a possible divide-by-zero fault when generating file 4834statistics. 4835 48363) Example Code and Data Size 4837 4838These are the sizes for the OS-independent acpica.lib produced by the 4839Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 4840includes the debug output trace mechanism and has a much larger code and 4841data 4842size. 4843 4844 Previous Release (VC 9.0): 4845 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4846 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4847 Current Release (VC 9.0): 4848 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4849 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4850 4851 4852---------------------------------------- 485323 June 2011. Summary of changes for version 20110623: 4854 48551) ACPI CA Core Subsystem: 4856 4857Updated the predefined name repair mechanism to not attempt repair of a 4858_TSS 4859return object if a _PSS object is present. We can only sort the _TSS 4860return 4861package if there is no _PSS within the same scope. This is because if 4862_PSS 4863is 4864present, the ACPI specification dictates that the _TSS Power Dissipation 4865field 4866is to be ignored, and therefore some BIOSs leave garbage values in the 4867_TSS 4868Power field(s). In this case, it is best to just return the _TSS package 4869as- 4870is. Reported by, and fixed with assistance from Fenghua Yu. 4871 4872Added an option to globally disable the control method return value 4873validation 4874and repair. This runtime option can be used to disable return value 4875repair 4876if 4877this is causing a problem on a particular machine. Also added an option 4878to 4879AcpiExec (-dr) to set this disable flag. 4880 4881All makefiles and project files: Major changes to improve generation of 4882ACPICA 4883tools. ACPICA BZ 912: 4884 Reduce default optimization levels to improve compatibility 4885 For Linux, add strict-aliasing=0 for gcc 4 4886 Cleanup and simplify use of command line defines 4887 Cleanup multithread library support 4888 Improve usage messages 4889 4890Linux-specific header: update handling of THREAD_ID and pthread. For the 489132- 4892bit case, improve casting to eliminate possible warnings, especially with 4893the 4894acpica tools. 4895 4896Example Code and Data Size: These are the sizes for the OS-independent 4897acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4898debug 4899version of the code includes the debug output trace mechanism and has a 4900much 4901larger code and data size. 4902 4903 Previous Release (VC 9.0): 4904 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 4905 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4906 Current Release (VC 9.0): 4907 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4908 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4909 49102) iASL Compiler/Disassembler and Tools: 4911 4912With this release, a new utility named "acpihelp" has been added to the 4913ACPICA 4914package. This utility summarizes the ACPI specification chapters for the 4915ASL 4916and AML languages. It generates under Linux/Unix as well as Windows, and 4917provides the following functionality: 4918 Find/display ASL operator(s) -- with description and syntax. 4919 Find/display ASL keyword(s) -- with exact spelling and descriptions. 4920 Find/display ACPI predefined name(s) -- with description, number 4921 of arguments, and the return value data type. 4922 Find/display AML opcode name(s) -- with opcode, arguments, and 4923grammar. 4924 Decode/display AML opcode -- with opcode name, arguments, and 4925grammar. 4926 4927Service Layers: Make multi-thread support configurable. Conditionally 4928compile 4929the multi-thread support so that threading libraries will not be linked 4930if 4931not 4932necessary. The only tool that requires multi-thread support is AcpiExec. 4933 4934iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 4935of 4936Bison appear to want the interface to yyerror to be a const char * (or at 4937least this is a problem when generating iASL on some systems.) ACPICA BZ 4938923 4939Pierre Lejeune. 4940 4941Tools: Fix for systems where O_BINARY is not defined. Only used for 4942Windows 4943versions of the tools. 4944 4945---------------------------------------- 494627 May 2011. Summary of changes for version 20110527: 4947 49481) ACPI CA Core Subsystem: 4949 4950ASL Load() operator: Reinstate most restrictions on the incoming ACPI 4951table 4952signature. Now, only allow SSDT, OEMx, and a null signature. History: 4953 1) Originally, we checked the table signature for "SSDT" or "PSDT". 4954 (PSDT is now obsolete.) 4955 2) We added support for OEMx tables, signature "OEM" plus a fourth 4956 "don't care" character. 4957 3) Valid tables were encountered with a null signature, so we just 4958 gave up on validating the signature, (05/2008). 4959 4) We encountered non-AML tables such as the MADT, which caused 4960 interpreter errors and kernel faults. So now, we once again allow 4961 only SSDT, OEMx, and now, also a null signature. (05/2011). 4962 4963Added the missing _TDL predefined name to the global name list in order 4964to 4965enable validation. Affects both the core ACPICA code and the iASL 4966compiler. 4967 4968Example Code and Data Size: These are the sizes for the OS-independent 4969acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4970debug 4971version of the code includes the debug output trace mechanism and has a 4972much 4973larger code and data size. 4974 4975 Previous Release (VC 9.0): 4976 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 4977 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 4978 Current Release (VC 9.0): 4979 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 4980 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4981 49822) iASL Compiler/Disassembler and Tools: 4983 4984Debugger/AcpiExec: Implemented support for "complex" method arguments on 4985the 4986debugger command line. This adds support beyond simple integers -- 4987including 4988Strings, Buffers, and Packages. Includes support for nested packages. 4989Increased the default command line buffer size to accommodate these 4990arguments. 4991See the ACPICA reference for details and syntax. ACPICA BZ 917. 4992 4993Debugger/AcpiExec: Implemented support for "default" method arguments for 4994the 4995Execute/Debug command. Now, the debugger will always invoke a control 4996method 4997with the required number of arguments -- even if the command line 4998specifies 4999none or insufficient arguments. It uses default integer values for any 5000missing 5001arguments. Also fixes a bug where only six method arguments maximum were 5002supported instead of the required seven. 5003 5004Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 5005and 5006also return status in order to prevent buffer overruns. See the ACPICA 5007reference for details and syntax. ACPICA BZ 921 5008 5009iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 5010makefiles to simplify support for the two different but similar parser 5011generators, bison and yacc. 5012 5013Updated the generic unix makefile for gcc 4. The default gcc version is 5014now 5015expected to be 4 or greater, since options specific to gcc 4 are used. 5016 5017---------------------------------------- 501813 April 2011. Summary of changes for version 20110413: 5019 50201) ACPI CA Core Subsystem: 5021 5022Implemented support to execute a so-called "orphan" _REG method under the 5023EC 5024device. This change will force the execution of a _REG method underneath 5025the 5026EC 5027device even if there is no corresponding operation region of type 5028EmbeddedControl. Fixes a problem seen on some machines and apparently is 5029compatible with Windows behavior. ACPICA BZ 875. 5030 5031Added more predefined methods that are eligible for automatic NULL 5032package 5033element removal. This change adds another group of predefined names to 5034the 5035list 5036of names that can be repaired by having NULL package elements dynamically 5037removed. This group are those methods that return a single variable- 5038length 5039package containing simple data types such as integers, buffers, strings. 5040This 5041includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 5042_PSL, 5043_Sx, 5044and _TZD. ACPICA BZ 914. 5045 5046Split and segregated all internal global lock functions to a new file, 5047evglock.c. 5048 5049Updated internal address SpaceID for DataTable regions. Moved this 5050internal 5051space 5052id in preparation for ACPI 5.0 changes that will include some new space 5053IDs. 5054This 5055change should not affect user/host code. 5056 5057Example Code and Data Size: These are the sizes for the OS-independent 5058acpica.lib 5059produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 5060version of 5061the code includes the debug output trace mechanism and has a much larger 5062code 5063and 5064data size. 5065 5066 Previous Release (VC 9.0): 5067 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 5068 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 5069 Current Release (VC 9.0): 5070 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 5071 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 5072 50732) iASL Compiler/Disassembler and Tools: 5074 5075iASL/DTC: Major update for new grammar features. Allow generic data types 5076in 5077custom ACPI tables. Field names are now optional. Any line can be split 5078to 5079multiple lines using the continuation char (\). Large buffers now use 5080line- 5081continuation character(s) and no colon on the continuation lines. See the 5082grammar 5083update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 5084Moore. 5085 5086iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 5087statements. 5088Since the parser stuffs a "zero" as the return value for these statements 5089(due 5090to 5091the underlying AML grammar), they were seen as "return with value" by the 5092iASL 5093semantic checking. They are now seen correctly as "null" return 5094statements. 5095 5096iASL: Check if a_REG declaration has a corresponding Operation Region. 5097Adds a 5098check for each _REG to ensure that there is in fact a corresponding 5099operation 5100region declaration in the same scope. If not, the _REG method is not very 5101useful 5102since it probably won't be executed. ACPICA BZ 915. 5103 5104iASL/DTC: Finish support for expression evaluation. Added a new 5105expression 5106parser 5107that implements c-style operator precedence and parenthesization. ACPICA 5108bugzilla 5109908. 5110 5111Disassembler/DTC: Remove support for () and <> style comments in data 5112tables. 5113Now 5114that DTC has full expression support, we don't want to have comment 5115strings 5116that 5117start with a parentheses or a less-than symbol. Now, only the standard /* 5118and 5119// 5120comments are supported, as well as the bracket [] comments. 5121 5122AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 5123"unusual" 5124headers in the acpidump file. Update the header validation to support 5125these 5126tables. Problem introduced in previous AcpiXtract version in the change 5127to 5128support "wrong checksum" error messages emitted by acpidump utility. 5129 5130iASL: Add a * option to generate all template files (as a synonym for 5131ALL) 5132as 5133in 5134"iasl -T *" or "iasl -T ALL". 5135 5136iASL/DTC: Do not abort compiler on fatal errors. We do not want to 5137completely 5138abort the compiler on "fatal" errors, simply should abort the current 5139compile. 5140This allows multiple compiles with a single (possibly wildcard) compiler 5141invocation. 5142 5143---------------------------------------- 514416 March 2011. Summary of changes for version 20110316: 5145 51461) ACPI CA Core Subsystem: 5147 5148Fixed a problem caused by a _PRW method appearing at the namespace root 5149scope 5150during the setup of wake GPEs. A fault could occur if a _PRW directly 5151under 5152the 5153root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 5154 5155Implemented support for "spurious" Global Lock interrupts. On some 5156systems, a 5157global lock interrupt can occur without the pending flag being set. Upon 5158a 5159GL 5160interrupt, we now ensure that a thread is actually waiting for the lock 5161before 5162signaling GL availability. Rafael Wysocki, Bob Moore. 5163 5164Example Code and Data Size: These are the sizes for the OS-independent 5165acpica.lib 5166produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 5167version of 5168the code includes the debug output trace mechanism and has a much larger 5169code 5170and 5171data size. 5172 5173 Previous Release (VC 9.0): 5174 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5175 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5176 Current Release (VC 9.0): 5177 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 5178 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 5179 51802) iASL Compiler/Disassembler and Tools: 5181 5182Implemented full support for the "SLIC" ACPI table. Includes support in 5183the 5184header files, disassembler, table compiler, and template generator. Bob 5185Moore, 5186Lin Ming. 5187 5188AcpiXtract: Correctly handle embedded comments and messages from 5189AcpiDump. 5190Apparently some or all versions of acpidump will occasionally emit a 5191comment 5192like 5193"Wrong checksum", etc., into the dump file. This was causing problems for 5194AcpiXtract. ACPICA BZ 905. 5195 5196iASL: Fix the Linux makefile by removing an inadvertent double file 5197inclusion. 5198ACPICA BZ 913. 5199 5200AcpiExec: Update installation of operation region handlers. Install one 5201handler 5202for a user-defined address space. This is used by the ASL test suite 5203(ASLTS). 5204 5205---------------------------------------- 520611 February 2011. Summary of changes for version 20110211: 5207 52081) ACPI CA Core Subsystem: 5209 5210Added a mechanism to defer _REG methods for some early-installed 5211handlers. 5212Most user handlers should be installed before call to 5213AcpiEnableSubsystem. 5214However, Event handlers and region handlers should be installed after 5215AcpiInitializeObjects. Override handlers for the "default" regions should 5216be 5217installed early, however. This change executes all _REG methods for the 5218default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 5219chicken/egg issues between them. ACPICA BZ 848. 5220 5221Implemented an optimization for GPE detection. This optimization will 5222simply 5223ignore GPE registers that contain no enabled GPEs -- there is no need to 5224read the register since this information is available internally. This 5225becomes more important on machines with a large GPE space. ACPICA 5226bugzilla 5227884. Lin Ming. Suggestion from Joe Liu. 5228 5229Removed all use of the highly unreliable FADT revision field. The 5230revision 5231number in the FADT has been found to be completely unreliable and cannot 5232be 5233trusted. Only the actual table length can be used to infer the version. 5234This 5235change updates the ACPICA core and the disassembler so that both no 5236longer 5237even look at the FADT version and instead depend solely upon the FADT 5238length. 5239 5240Fix an unresolved name issue for the no-debug and no-error-message source 5241generation cases. The _AcpiModuleName was left undefined in these cases, 5242but 5243it is actually needed as a parameter to some interfaces. Define 5244_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 5245 5246Split several large files (makefiles and project files updated) 5247 utglobal.c -> utdecode.c 5248 dbcomds.c -> dbmethod.c dbnames.c 5249 dsopcode.c -> dsargs.c dscontrol.c 5250 dsload.c -> dsload2.c 5251 aslanalyze.c -> aslbtypes.c aslwalks.c 5252 5253Example Code and Data Size: These are the sizes for the OS-independent 5254acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5255debug version of the code includes the debug output trace mechanism and 5256has 5257a much larger code and data size. 5258 5259 Previous Release (VC 9.0): 5260 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5261 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5262 Current Release (VC 9.0): 5263 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5264 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5265 52662) iASL Compiler/Disassembler and Tools: 5267 5268iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 5269These are useful C-style macros with the standard definitions. ACPICA 5270bugzilla 898. 5271 5272iASL/DTC: Added support for integer expressions and labels. Support for 5273full 5274expressions for all integer fields in all ACPI tables. Support for labels 5275in 5276"generic" portions of tables such as UEFI. See the iASL reference manual. 5277 5278Debugger: Added a command to display the status of global handlers. The 5279"handlers" command will display op region, fixed event, and miscellaneous 5280global handlers. installation status -- and for op regions, whether 5281default 5282or user-installed handler will be used. 5283 5284iASL: Warn if reserved method incorrectly returns a value. Many 5285predefined 5286names are defined such that they do not return a value. If implemented as 5287a 5288method, issue a warning if such a name explicitly returns a value. ACPICA 5289Bugzilla 855. 5290 5291iASL: Added detection of GPE method name conflicts. Detects a conflict 5292where 5293there are two GPE methods of the form _Lxy and _Exy in the same scope. 5294(For 5295example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 5296 5297iASL/DTC: Fixed a couple input scanner issues with comments and line 5298numbers. Comment remover could get confused and miss a comment ending. 5299Fixed 5300a problem with line counter maintenance. 5301 5302iASL/DTC: Reduced the severity of some errors from fatal to error. There 5303is 5304no need to abort on simple errors within a field definition. 5305 5306Debugger: Simplified the output of the help command. All help output now 5307in 5308a single screen, instead of help subcommands. ACPICA Bugzilla 897. 5309 5310---------------------------------------- 531112 January 2011. Summary of changes for version 20110112: 5312 53131) ACPI CA Core Subsystem: 5314 5315Fixed a race condition between method execution and namespace walks that 5316can 5317possibly cause a fault. The problem was apparently introduced in version 531820100528 as a result of a performance optimization that reduces the 5319number 5320of 5321namespace walks upon method exit by using the delete_namespace_subtree 5322function instead of the delete_namespace_by_owner function used 5323previously. 5324Bug is a missing namespace lock in the delete_namespace_subtree function. 5325dana.myers@oracle.com 5326 5327Fixed several issues and a possible fault with the automatic "serialized" 5328method support. History: This support changes a method to "serialized" on 5329the 5330fly if the method generates an AE_ALREADY_EXISTS error, indicating the 5331possibility that it cannot handle reentrancy. This fix repairs a couple 5332of 5333issues seen in the field, especially on machines with many cores: 5334 5335 1) Delete method children only upon the exit of the last thread, 5336 so as to not delete objects out from under other running threads 5337 (and possibly causing a fault.) 5338 2) Set the "serialized" bit for the method only upon the exit of the 5339 Last thread, so as to not cause deadlock when running threads 5340 attempt to exit. 5341 3) Cleanup the use of the AML "MethodFlags" and internal method flags 5342 so that there is no longer any confusion between the two. 5343 5344 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 5345 5346Debugger: Now lock the namespace for duration of a namespace dump. 5347Prevents 5348issues if the namespace is changing dynamically underneath the debugger. 5349Especially affects temporary namespace nodes, since the debugger displays 5350these also. 5351 5352Updated the ordering of include files. The ACPICA headers should appear 5353before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 5354set 5355any necessary compiler-specific defines, etc. Affects the ACPI-related 5356tools 5357and utilities. 5358 5359Updated all ACPICA copyrights and signons to 2011. Added the 2011 5360copyright 5361to all module headers and signons, including the Linux header. This 5362affects 5363virtually every file in the ACPICA core subsystem, iASL compiler, and all 5364utilities. 5365 5366Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 5367project files for VC++ 6.0 are now obsolete. New project files can be 5368found 5369under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 5370details. 5371 5372Example Code and Data Size: These are the sizes for the OS-independent 5373acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5374debug version of the code includes the debug output trace mechanism and 5375has a 5376much larger code and data size. 5377 5378 Previous Release (VC 6.0): 5379 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 5380 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 5381 Current Release (VC 9.0): 5382 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5383 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5384 53852) iASL Compiler/Disassembler and Tools: 5386 5387iASL: Added generic data types to the Data Table compiler. Add "generic" 5388data 5389types such as UINT32, String, Unicode, etc., to simplify the generation 5390of 5391platform-defined tables such as UEFI. Lin Ming. 5392 5393iASL: Added listing support for the Data Table Compiler. Adds listing 5394support 5395(-l) to display actual binary output for each line of input code. 5396 5397---------------------------------------- 539809 December 2010. Summary of changes for version 20101209: 5399 54001) ACPI CA Core Subsystem: 5401 5402Completed the major overhaul of the GPE support code that was begun in 5403July 54042010. Major features include: removal of _PRW execution in ACPICA (host 5405executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 5406changes to existing interfaces, simplification of GPE handler operation, 5407and 5408a handful of new interfaces: 5409 5410 AcpiUpdateAllGpes 5411 AcpiFinishGpe 5412 AcpiSetupGpeForWake 5413 AcpiSetGpeWakeMask 5414 One new file, evxfgpe.c to consolidate all external GPE interfaces. 5415 5416See the ACPICA Programmer Reference for full details and programming 5417information. See the new section 4.4 "General Purpose Event (GPE) 5418Support" 5419for a full overview, and section 8.7 "ACPI General Purpose Event 5420Management" 5421for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 5422Ming, 5423Bob Moore, Rafael Wysocki. 5424 5425Implemented a new GPE feature for Windows compatibility, the "Implicit 5426Wake 5427GPE Notify". This feature will automatically issue a Notify(2) on a 5428device 5429when a Wake GPE is received if there is no corresponding GPE method or 5430handler. ACPICA BZ 870. 5431 5432Fixed a problem with the Scope() operator during table parse and load 5433phase. 5434During load phase (table load or method execution), the scope operator 5435should 5436not enter the target into the namespace. Instead, it should open a new 5437scope 5438at the target location. Linux BZ 19462, ACPICA BZ 882. 5439 5440Example Code and Data Size: These are the sizes for the OS-independent 5441acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5442debug version of the code includes the debug output trace mechanism and 5443has a 5444much larger code and data size. 5445 5446 Previous Release: 5447 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 5448 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 5449 Current Release: 5450 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5451 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5452 54532) iASL Compiler/Disassembler and Tools: 5454 5455iASL: Relax the alphanumeric restriction on _CID strings. These strings 5456are 5457"bus-specific" per the ACPI specification, and therefore any characters 5458are 5459acceptable. The only checks that can be performed are for a null string 5460and 5461perhaps for a leading asterisk. ACPICA BZ 886. 5462 5463iASL: Fixed a problem where a syntax error that caused a premature EOF 5464condition on the source file emitted a very confusing error message. The 5465premature EOF is now detected correctly. ACPICA BZ 891. 5466 5467Disassembler: Decode the AccessSize within a Generic Address Structure 5468(byte 5469access, word access, etc.) Note, this field does not allow arbitrary bit 5470access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 5471 5472New: AcpiNames utility - Example namespace dump utility. Shows an example 5473of 5474ACPICA configuration for a minimal namespace dump utility. Uses table and 5475namespace managers, but no AML interpreter. Does not add any 5476functionality 5477over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 5478partition and configure ACPICA. ACPICA BZ 883. 5479 5480AML Debugger: Increased the debugger buffer size for method return 5481objects. 5482Was 4K, increased to 16K. Also enhanced error messages for debugger 5483method 5484execution, including the buffer overflow case. 5485 5486---------------------------------------- 548713 October 2010. Summary of changes for version 20101013: 5488 54891) ACPI CA Core Subsystem: 5490 5491Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 5492now 5493clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 5494HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 5495 5496Changed the type of the predefined namespace object _TZ from ThermalZone 5497to 5498Device. This was found to be confusing to the host software that 5499processes 5500the various thermal zones, since _TZ is not really a ThermalZone. 5501However, 5502a 5503Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 5504Zhang. 5505 5506Added Windows Vista SP2 to the list of supported _OSI strings. The actual 5507string is "Windows 2006 SP2". 5508 5509Eliminated duplicate code in AcpiUtExecute* functions. Now that the 5510nsrepair 5511code automatically repairs _HID-related strings, this type of code is no 5512longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 5513878. 5514 5515Example Code and Data Size: These are the sizes for the OS-independent 5516acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5517debug version of the code includes the debug output trace mechanism and 5518has a 5519much larger code and data size. 5520 5521 Previous Release: 5522 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5523 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5524 Current Release: 5525 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5526 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5527 55282) iASL Compiler/Disassembler and Tools: 5529 5530iASL: Implemented additional compile-time validation for _HID strings. 5531The 5532non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 5533length 5534of 5535the string must be exactly seven or eight characters. For both _HID and 5536_CID 5537strings, all characters must be alphanumeric. ACPICA BZ 874. 5538 5539iASL: Allow certain "null" resource descriptors. Some BIOS code creates 5540descriptors that are mostly or all zeros, with the expectation that they 5541will 5542be filled in at runtime. iASL now allows this as long as there is a 5543"resource 5544tag" (name) associated with the descriptor, which gives the ASL a handle 5545needed to modify the descriptor. ACPICA BZ 873. 5546 5547Added single-thread support to the generic Unix application OSL. 5548Primarily 5549for iASL support, this change removes the use of semaphores in the 5550single- 5551threaded ACPICA tools/applications - increasing performance. The 5552_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 5553option. ACPICA BZ 879. 5554 5555AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 5556support 5557for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 5558 5559iASL: Moved all compiler messages to a new file, aslmessages.h. 5560 5561---------------------------------------- 556215 September 2010. Summary of changes for version 20100915: 5563 55641) ACPI CA Core Subsystem: 5565 5566Removed the AcpiOsDerivePciId OSL interface. The various host 5567implementations 5568of this function were not OS-dependent and are now obsolete and can be 5569removed from all host OSLs. This function has been replaced by 5570AcpiHwDerivePciId, which is now part of the ACPICA core code. 5571AcpiHwDerivePciId has been implemented without recursion. Adds one new 5572module, hwpci.c. ACPICA BZ 857. 5573 5574Implemented a dynamic repair for _HID and _CID strings. The following 5575problems are now repaired at runtime: 1) Remove a leading asterisk in the 5576string, and 2) the entire string is uppercased. Both repairs are in 5577accordance with the ACPI specification and will simplify host driver 5578code. 5579ACPICA BZ 871. 5580 5581The ACPI_THREAD_ID type is no longer configurable, internally it is now 5582always UINT64. This simplifies the ACPICA code, especially any printf 5583output. 5584UINT64 is the only common data type for all thread_id types across all 5585operating systems. It is now up to the host OSL to cast the native 5586thread_id 5587type to UINT64 before returning the value to ACPICA (via 5588AcpiOsGetThreadId). 5589Lin Ming, Bob Moore. 5590 5591Added the ACPI_INLINE type to enhance the ACPICA configuration. The 5592"inline" 5593keyword is not standard across compilers, and this type allows inline to 5594be 5595configured on a per-compiler basis. Lin Ming. 5596 5597Made the system global AcpiGbl_SystemAwakeAndRunning publically 5598available. 5599Added an extern for this boolean in acpixf.h. Some hosts utilize this 5600value 5601during suspend/restore operations. ACPICA BZ 869. 5602 5603All code that implements error/warning messages with the "ACPI:" prefix 5604has 5605been moved to a new module, utxferror.c. 5606 5607The UINT64_OVERLAY was moved to utmath.c, which is the only module where 5608it 5609is used. ACPICA BZ 829. Lin Ming, Bob Moore. 5610 5611Example Code and Data Size: These are the sizes for the OS-independent 5612acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5613debug version of the code includes the debug output trace mechanism and 5614has a 5615much larger code and data size. 5616 5617 Previous Release: 5618 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 5619 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 5620 Current Release: 5621 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5622 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5623 56242) iASL Compiler/Disassembler and Tools: 5625 5626iASL/Disassembler: Write ACPI errors to stderr instead of the output 5627file. 5628This keeps the output files free of random error messages that may 5629originate 5630from within the namespace/interpreter code. Used this opportunity to 5631merge 5632all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 5633866. Lin Ming, Bob Moore. 5634 5635Tools: update some printfs for ansi warnings on size_t. Handle width 5636change 5637of size_t on 32-bit versus 64-bit generations. Lin Ming. 5638 5639---------------------------------------- 564006 August 2010. Summary of changes for version 20100806: 5641 56421) ACPI CA Core Subsystem: 5643 5644Designed and implemented a new host interface to the _OSI support code. 5645This 5646will allow the host to dynamically add or remove multiple _OSI strings, 5647as 5648well as install an optional handler that is called for each _OSI 5649invocation. 5650Also added a new AML debugger command, 'osi' to display and modify the 5651global 5652_OSI string table, and test support in the AcpiExec utility. See the 5653ACPICA 5654reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 5655New Functions: 5656 AcpiInstallInterface - Add an _OSI string. 5657 AcpiRemoveInterface - Delete an _OSI string. 5658 AcpiInstallInterfaceHandler - Install optional _OSI handler. 5659Obsolete Functions: 5660 AcpiOsValidateInterface - no longer used. 5661New Files: 5662 source/components/utilities/utosi.c 5663 5664Re-introduced the support to enable multi-byte transfers for Embedded 5665Controller (EC) operation regions. A reported problem was found to be a 5666bug 5667in the host OS, not in the multi-byte support. Previously, the maximum 5668data 5669size passed to the EC operation region handler was a single byte. There 5670are 5671often EC Fields larger than one byte that need to be transferred, and it 5672is 5673useful for the EC driver to lock these as a single transaction. This 5674change 5675enables single transfers larger than 8 bits. This effectively changes the 5676access to the EC space from ByteAcc to AnyAcc, and will probably require 5677changes to the host OS Embedded Controller driver to enable 16/32/64/256- 5678bit 5679transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 5680 5681Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 5682prototype in acpiosxf.h had the output value pointer as a (void *). 5683It should be a (UINT64 *). This may affect some host OSL code. 5684 5685Fixed a couple problems with the recently modified Linux makefiles for 5686iASL 5687and AcpiExec. These new makefiles place the generated object files in the 5688local directory so that there can be no collisions between the files that 5689are 5690shared between them that are compiled with different options. 5691 5692Example Code and Data Size: These are the sizes for the OS-independent 5693acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5694debug version of the code includes the debug output trace mechanism and 5695has a 5696much larger code and data size. 5697 5698 Previous Release: 5699 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5700 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 5701 Current Release: 5702 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 5703 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 5704 57052) iASL Compiler/Disassembler and Tools: 5706 5707iASL/Disassembler: Added a new option (-da, "disassemble all") to load 5708the 5709namespace from and disassemble an entire group of AML files. Useful for 5710loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 5711and 5712disassembling with one simple command. ACPICA BZ 865. Lin Ming. 5713 5714iASL: Allow multiple invocations of -e option. This change allows 5715multiple 5716uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 5717834. 5718Lin Ming. 5719 5720---------------------------------------- 572102 July 2010. Summary of changes for version 20100702: 5722 57231) ACPI CA Core Subsystem: 5724 5725Implemented several updates to the recently added GPE reference count 5726support. The model for "wake" GPEs is changing to give the host OS 5727complete 5728control of these GPEs. Eventually, the ACPICA core will not execute any 5729_PRW 5730methods, since the host already must execute them. Also, additional 5731changes 5732were made to help ensure that the reference counts are kept in proper 5733synchronization with reality. Rafael J. Wysocki. 5734 57351) Ensure that GPEs are not enabled twice during initialization. 57362) Ensure that GPE enable masks stay in sync with the reference count. 57373) Do not inadvertently enable GPEs when writing GPE registers. 57384) Remove the internal wake reference counter and add new AcpiGpeWakeup 5739interface. This interface will set or clear individual GPEs for wakeup. 57405) Remove GpeType argument from AcpiEnable and AcpiDisable. These 5741interfaces 5742are now used for "runtime" GPEs only. 5743 5744Changed the behavior of the GPE install/remove handler interfaces. The 5745GPE 5746is 5747no longer disabled during this process, as it was found to cause problems 5748on 5749some machines. Rafael J. Wysocki. 5750 5751Reverted a change introduced in version 20100528 to enable Embedded 5752Controller multi-byte transfers. This change was found to cause problems 5753with 5754Index Fields and possibly Bank Fields. It will be reintroduced when these 5755problems have been resolved. 5756 5757Fixed a problem with references to Alias objects within Package Objects. 5758A 5759reference to an Alias within the definition of a Package was not always 5760resolved properly. Aliases to objects like Processors, Thermal zones, 5761etc. 5762were resolved to the actual object instead of a reference to the object 5763as 5764it 5765should be. Package objects are only allowed to contain integer, string, 5766buffer, package, and reference objects. Redhat bugzilla 608648. 5767 5768Example Code and Data Size: These are the sizes for the OS-independent 5769acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5770debug version of the code includes the debug output trace mechanism and 5771has a 5772much larger code and data size. 5773 5774 Previous Release: 5775 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5776 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 5777 Current Release: 5778 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5779 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 5780 57812) iASL Compiler/Disassembler and Tools: 5782 5783iASL: Implemented a new compiler subsystem to allow definition and 5784compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 5785These 5786are called "ACPI Data Tables", and the new compiler is the "Data Table 5787Compiler". This compiler is intended to simplify the existing error-prone 5788process of creating these tables for the BIOS, as well as allowing the 5789disassembly, modification, recompilation, and override of existing ACPI 5790data 5791tables. See the iASL User Guide for detailed information. 5792 5793iASL: Implemented a new Template Generator option in support of the new 5794Data 5795Table Compiler. This option will create examples of all known ACPI tables 5796that can be used as the basis for table development. See the iASL 5797documentation and the -T option. 5798 5799Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 5800Descriptor Table). 5801 5802Updated the Linux makefiles for iASL and AcpiExec to place the generated 5803object files in the local directory so that there can be no collisions 5804between the shared files between them that are generated with different 5805options. 5806 5807Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 5808Use 5809the #define __APPLE__ to enable this support. 5810 5811---------------------------------------- 581228 May 2010. Summary of changes for version 20100528: 5813 5814Note: The ACPI 4.0a specification was released on April 5, 2010 and is 5815available at www.acpi.info. This is primarily an errata release. 5816 58171) ACPI CA Core Subsystem: 5818 5819Undefined ACPI tables: We are looking for the definitions for the 5820following 5821ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 5822 5823Implemented support to enable multi-byte transfers for Embedded 5824Controller 5825(EC) operation regions. Previously, the maximum data size passed to the 5826EC 5827operation region handler was a single byte. There are often EC Fields 5828larger 5829than one byte that need to be transferred, and it is useful for the EC 5830driver 5831to lock these as a single transaction. This change enables single 5832transfers 5833larger than 8 bits. This effectively changes the access to the EC space 5834from 5835ByteAcc to AnyAcc, and will probably require changes to the host OS 5836Embedded 5837Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 5838bit 5839transfers. Alexey Starikovskiy, Lin Ming 5840 5841Implemented a performance enhancement for namespace search and access. 5842This 5843change enhances the performance of namespace searches and walks by adding 5844a 5845backpointer to the parent in each namespace node. On large namespaces, 5846this 5847change can improve overall ACPI performance by up to 9X. Adding a pointer 5848to 5849each namespace node increases the overall size of the internal namespace 5850by 5851about 5%, since each namespace entry usually consists of both a namespace 5852node and an ACPI operand object. However, this is the first growth of the 5853namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 5854 5855Implemented a performance optimization that reduces the number of 5856namespace 5857walks. On control method exit, only walk the namespace if the method is 5858known 5859to have created namespace objects outside of its local scope. Previously, 5860the 5861entire namespace was traversed on each control method exit. This change 5862can 5863improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 5864Moore. 5865 5866Added support to truncate I/O addresses to 16 bits for Windows 5867compatibility. 5868Some ASL code has been seen in the field that inadvertently has bits set 5869above bit 15. This feature is optional and is enabled if the BIOS 5870requests 5871any Windows OSI strings. It can also be enabled by the host OS. Matthew 5872Garrett, Bob Moore. 5873 5874Added support to limit the maximum time for the ASL Sleep() operator. To 5875prevent accidental deep sleeps, limit the maximum time that Sleep() will 5876actually sleep. Configurable, the default maximum is two seconds. ACPICA 5877bugzilla 854. 5878 5879Added run-time validation support for the _WDG and_WED Microsoft 5880predefined 5881methods. These objects are defined by "Windows Instrumentation", and are 5882not 5883part of the ACPI spec. ACPICA BZ 860. 5884 5885Expanded all statistic counters used during namespace and device 5886initialization from 16 to 32 bits in order to support very large 5887namespaces. 5888 5889Replaced all instances of %d in printf format specifiers with %u since 5890nearly 5891all integers in ACPICA are unsigned. 5892 5893Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 5894returned 5895as AE_NO_HANDLER. 5896 5897Example Code and Data Size: These are the sizes for the OS-independent 5898acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5899debug version of the code includes the debug output trace mechanism and 5900has a 5901much larger code and data size. 5902 5903 Previous Release: 5904 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 5905 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 5906 Current Release: 5907 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5908 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 5909 59102) iASL Compiler/Disassembler and Tools: 5911 5912iASL: Added compiler support for the _WDG and_WED Microsoft predefined 5913methods. These objects are defined by "Windows Instrumentation", and are 5914not 5915part of the ACPI spec. ACPICA BZ 860. 5916 5917AcpiExec: added option to disable the memory tracking mechanism. The -dt 5918option will disable the tracking mechanism, which improves performance 5919considerably. 5920 5921AcpiExec: Restructured the command line options into -d (disable) and -e 5922(enable) options. 5923 5924---------------------------------------- 592528 April 2010. Summary of changes for version 20100428: 5926 59271) ACPI CA Core Subsystem: 5928 5929Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 5930including FADT-based and GPE Block Devices, execute any _PRW methods in 5931the 5932new table, and process any _Lxx/_Exx GPE methods in the new table. Any 5933runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 5934immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 5935Devices. Provides compatibility with other ACPI implementations. Two new 5936files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 5937Moore. 5938 5939Fixed a regression introduced in version 20100331 within the table 5940manager 5941where initial table loading could fail. This was introduced in the fix 5942for 5943AcpiReallocateRootTable. Also, renamed some of fields in the table 5944manager 5945data structures to clarify their meaning and use. 5946 5947Fixed a possible allocation overrun during internal object copy in 5948AcpiUtCopySimpleObject. The original code did not correctly handle the 5949case 5950where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 5951847. 5952 5953Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 5954possible access beyond end-of-allocation. Also, now fully validate 5955descriptor 5956(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 5957 5958Example Code and Data Size: These are the sizes for the OS-independent 5959acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5960debug version of the code includes the debug output trace mechanism and 5961has a 5962much larger code and data size. 5963 5964 Previous Release: 5965 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 5966 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 5967 Current Release: 5968 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 5969 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 5970 59712) iASL Compiler/Disassembler and Tools: 5972 5973iASL: Implemented Min/Max/Len/Gran validation for address resource 5974descriptors. This change implements validation for the address fields 5975that 5976are common to all address-type resource descriptors. These checks are 5977implemented: Checks for valid Min/Max, length within the Min/Max window, 5978valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 5979per 5980table 6-40 in the ACPI 4.0a specification. Also split the large 5981aslrestype1.c 5982and aslrestype2.c files into five new files. ACPICA BZ 840. 5983 5984iASL: Added support for the _Wxx predefined names. This support was 5985missing 5986and these names were not recognized by the compiler as valid predefined 5987names. ACPICA BZ 851. 5988 5989iASL: Added an error for all predefined names that are defined to return 5990no 5991value and thus must be implemented as Control Methods. These include all 5992of 5993the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 5994names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 5995 5996iASL: Implemented the -ts option to emit hex AML data in ASL format, as 5997an 5998ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 5999be 6000dynamically loaded via the Load() operator. Also cleaned up output for 6001the 6002- 6003ta and -tc options. ACPICA BZ 853. 6004 6005Tests: Added a new file with examples of extended iASL error checking. 6006Demonstrates the advanced error checking ability of the iASL compiler. 6007Available at tests/misc/badcode.asl. 6008 6009---------------------------------------- 601031 March 2010. Summary of changes for version 20100331: 6011 60121) ACPI CA Core Subsystem: 6013 6014Completed a major update for the GPE support in order to improve support 6015for 6016shared GPEs and to simplify both host OS and ACPICA code. Added a 6017reference 6018count mechanism to support shared GPEs that require multiple device 6019drivers. 6020Several external interfaces have changed. One external interface has been 6021removed. One new external interface was added. Most of the GPE external 6022interfaces now use the GPE spinlock instead of the events mutex (and the 6023Flags parameter for many GPE interfaces has been removed.) See the 6024updated 6025ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 6026Rafael 6027Wysocki. ACPICA BZ 831. 6028 6029Changed: 6030 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 6031Removed: 6032 AcpiSetGpeType 6033New: 6034 AcpiSetGpe 6035 6036Implemented write support for DataTable operation regions. These regions 6037are 6038defined via the DataTableRegion() operator. Previously, only read support 6039was 6040implemented. The ACPI specification allows DataTableRegions to be 6041read/write, 6042however. 6043 6044Implemented a new subsystem option to force a copy of the DSDT to local 6045memory. Optionally copy the entire DSDT to local memory (instead of 6046simply 6047mapping it.) There are some (albeit very rare) BIOSs that corrupt or 6048replace 6049the original DSDT, creating the need for this option. Default is FALSE, 6050do 6051not copy the DSDT. 6052 6053Implemented detection of a corrupted or replaced DSDT. This change adds 6054support to detect a DSDT that has been corrupted and/or replaced from 6055outside 6056the OS (by firmware). This is typically catastrophic for the system, but 6057has 6058been seen on some machines. Once this problem has been detected, the DSDT 6059copy option can be enabled via system configuration. Lin Ming, Bob Moore. 6060 6061Fixed two problems with AcpiReallocateRootTable during the root table 6062copy. 6063When copying the root table to the new allocation, the length used was 6064incorrect. The new size was used instead of the current table size, 6065meaning 6066too much data was copied. Also, the count of available slots for ACPI 6067tables 6068was not set correctly. Alexey Starikovskiy, Bob Moore. 6069 6070Example Code and Data Size: These are the sizes for the OS-independent 6071acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6072debug version of the code includes the debug output trace mechanism and 6073has a 6074much larger code and data size. 6075 6076 Previous Release: 6077 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 6078 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 6079 Current Release: 6080 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 6081 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 6082 60832) iASL Compiler/Disassembler and Tools: 6084 6085iASL: Implement limited typechecking for values returned from predefined 6086control methods. The type of any returned static (unnamed) object is now 6087validated. For example, Return(1). ACPICA BZ 786. 6088 6089iASL: Fixed a predefined name object verification regression. Fixes a 6090problem 6091introduced in version 20100304. An error is incorrectly generated if a 6092predefined name is declared as a static named object with a value defined 6093using the keywords "Zero", "One", or "Ones". Lin Ming. 6094 6095iASL: Added Windows 7 support for the -g option (get local ACPI tables) 6096by 6097reducing the requested registry access rights. ACPICA BZ 842. 6098 6099Disassembler: fixed a possible fault when generating External() 6100statements. 6101Introduced in commit ae7d6fd: Properly handle externals with parent- 6102prefix 6103(carat). Fixes a string length allocation calculation. Lin Ming. 6104 6105---------------------------------------- 610604 March 2010. Summary of changes for version 20100304: 6107 61081) ACPI CA Core Subsystem: 6109 6110Fixed a possible problem with the AML Mutex handling function 6111AcpiExReleaseMutex where the function could fault under the very rare 6112condition when the interpreter has blocked, the interpreter lock is 6113released, 6114the interpreter is then reentered via the same thread, and attempts to 6115acquire an AML mutex that was previously acquired. FreeBSD report 140979. 6116Lin 6117Ming. 6118 6119Implemented additional configuration support for the AML "Debug Object". 6120Output from the debug object can now be enabled via a global variable, 6121AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 6122debugging. 6123This debug output is now available in the release version of ACPICA 6124instead 6125of just the debug version. Also, the entire debug output module can now 6126be 6127configured out of the ACPICA build if desired. One new file added, 6128executer/exdebug.c. Lin Ming, Bob Moore. 6129 6130Added header support for the ACPI MCHI table (Management Controller Host 6131Interface Table). This table was added in ACPI 4.0, but the defining 6132document 6133has only recently become available. 6134 6135Standardized output of integer values for ACPICA warnings/errors. Always 6136use 61370x prefix for hex output, always use %u for unsigned integer decimal 6138output. 6139Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 6140400 6141invocations.) These invocations were converted from the original 6142ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 6143 6144Example Code and Data Size: These are the sizes for the OS-independent 6145acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6146debug version of the code includes the debug output trace mechanism and 6147has a 6148much larger code and data size. 6149 6150 Previous Release: 6151 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 6152 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 6153 Current Release: 6154 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 6155 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 6156 61572) iASL Compiler/Disassembler and Tools: 6158 6159iASL: Implemented typechecking support for static (non-control method) 6160predefined named objects that are declared with the Name() operator. For 6161example, the type of this object is now validated to be of type Integer: 6162Name(_BBN, 1). This change migrates the compiler to using the core 6163predefined 6164name table instead of maintaining a local version. Added a new file, 6165aslpredef.c. ACPICA BZ 832. 6166 6167Disassembler: Added support for the ACPI 4.0 MCHI table. 6168 6169---------------------------------------- 617021 January 2010. Summary of changes for version 20100121: 6171 61721) ACPI CA Core Subsystem: 6173 6174Added the 2010 copyright to all module headers and signons. This affects 6175virtually every file in the ACPICA core subsystem, the iASL compiler, the 6176tools/utilities, and the test suites. 6177 6178Implemented a change to the AcpiGetDevices interface to eliminate 6179unnecessary 6180invocations of the _STA method. In the case where a specific _HID is 6181requested, do not run _STA until a _HID match is found. This eliminates 6182potentially dozens of _STA calls during a search for a particular 6183device/HID, 6184which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 6185 6186Implemented an additional repair for predefined method return values. 6187Attempt 6188to repair unexpected NULL elements within returned Package objects. 6189Create 6190an 6191Integer of value zero, a NULL String, or a zero-length Buffer as 6192appropriate. 6193ACPICA BZ 818. Lin Ming, Bob Moore. 6194 6195Removed the obsolete ACPI_INTEGER data type. This type was introduced as 6196the 6197code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 6198(with 619964-bit AML integers). It is now obsolete and this change removes it from 6200the 6201ACPICA code base, replaced by UINT64. The original typedef has been 6202retained 6203for now for compatibility with existing device driver code. ACPICA BZ 6204824. 6205 6206Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 6207in 6208the parse tree object. 6209 6210Added additional warning options for the gcc-4 generation. Updated the 6211source 6212accordingly. This includes some code restructuring to eliminate 6213unreachable 6214code, elimination of some gotos, elimination of unused return values, 6215some 6216additional casting, and removal of redundant declarations. 6217 6218Example Code and Data Size: These are the sizes for the OS-independent 6219acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6220debug version of the code includes the debug output trace mechanism and 6221has a 6222much larger code and data size. 6223 6224 Previous Release: 6225 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 6226 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 6227 Current Release: 6228 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 6229 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 6230 62312) iASL Compiler/Disassembler and Tools: 6232 6233No functional changes for this release. 6234 6235---------------------------------------- 623614 December 2009. Summary of changes for version 20091214: 6237 62381) ACPI CA Core Subsystem: 6239 6240Enhanced automatic data type conversions for predefined name repairs. 6241This 6242change expands the automatic repairs/conversions for predefined name 6243return 6244values to make Integers, Strings, and Buffers fully interchangeable. 6245Also, 6246a 6247Buffer can be converted to a Package of Integers if necessary. The 6248nsrepair.c 6249module was completely restructured. Lin Ming, Bob Moore. 6250 6251Implemented automatic removal of null package elements during predefined 6252name 6253repairs. This change will automatically remove embedded and trailing NULL 6254package elements from returned package objects that are defined to 6255contain 6256a 6257variable number of sub-packages. The driver is then presented with a 6258package 6259with no null elements to deal with. ACPICA BZ 819. 6260 6261Implemented a repair for the predefined _FDE and _GTM names. The expected 6262return value for both names is a Buffer of 5 DWORDs. This repair fixes 6263two 6264possible problems (both seen in the field), where a package of integers 6265is 6266returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 6267Kim. 6268 6269Implemented additional module-level code support. This change will 6270properly 6271execute module-level code that is not at the root of the namespace (under 6272a 6273Device object, etc.). Now executes the code within the current scope 6274instead 6275of the root. ACPICA BZ 762. Lin Ming. 6276 6277Fixed possible mutex acquisition errors when running _REG methods. Fixes 6278a 6279problem where mutex errors can occur when running a _REG method that is 6280in 6281the same scope as a method-defined operation region or an operation 6282region 6283under a module-level IF block. This type of code is rare, so the problem 6284has 6285not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 6286 6287Fixed a possible memory leak during module-level code execution. An 6288object 6289could be leaked for each block of executed module-level code if the 6290interpreter slack mode is enabled This change deletes any implicitly 6291returned 6292object from the module-level code block. Lin Ming. 6293 6294Removed messages for successful predefined repair(s). The repair 6295mechanism 6296was considered too wordy. Now, messages are only unconditionally emitted 6297if 6298the return object cannot be repaired. Existing messages for successful 6299repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 6300827. 6301 6302Example Code and Data Size: These are the sizes for the OS-independent 6303acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6304debug version of the code includes the debug output trace mechanism and 6305has a 6306much larger code and data size. 6307 6308 Previous Release: 6309 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 6310 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 6311 Current Release: 6312 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 6313 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 6314 63152) iASL Compiler/Disassembler and Tools: 6316 6317iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 6318files 6319were no longer automatically removed at the termination of the compile. 6320 6321acpiexec: Implemented the -f option to specify default region fill value. 6322This option specifies the value used to initialize buffers that simulate 6323operation regions. Default value is zero. Useful for debugging problems 6324that 6325depend on a specific initial value for a region or field. 6326 6327---------------------------------------- 632812 November 2009. Summary of changes for version 20091112: 6329 63301) ACPI CA Core Subsystem: 6331 6332Implemented a post-order callback to AcpiWalkNamespace. The existing 6333interface only has a pre-order callback. This change adds an additional 6334parameter for a post-order callback which will be more useful for bus 6335scans. 6336ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 6337 6338Modified the behavior of the operation region memory mapping cache for 6339SystemMemory. Ensure that the memory mappings created for operation 6340regions 6341do not cross 4K page boundaries. Crossing a page boundary while mapping 6342regions can cause kernel warnings on some hosts if the pages have 6343different 6344attributes. Such regions are probably BIOS bugs, and this is the 6345workaround. 6346Linux BZ 14445. Lin Ming. 6347 6348Implemented an automatic repair for predefined methods that must return 6349sorted lists. This change will repair (by sorting) packages returned by 6350_ALR, 6351_PSS, and _TSS. Drivers can now assume that the packages are correctly 6352sorted 6353and do not contain NULL package elements. Adds one new file, 6354namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 6355 6356Fixed a possible fault during predefined name validation if a return 6357Package 6358object contains NULL elements. Also adds a warning if a NULL element is 6359followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 6360may 6361include repair or removal of all such NULL elements where possible. 6362 6363Implemented additional module-level executable AML code support. This 6364change 6365will execute module-level code that is not at the root of the namespace 6366(under a Device object, etc.) at table load time. Module-level executable 6367AML 6368code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 6369 6370Implemented a new internal function to create Integer objects. This 6371function 6372simplifies miscellaneous object creation code. ACPICA BZ 823. 6373 6374Reduced the severity of predefined repair messages, Warning to Info. 6375Since 6376the object was successfully repaired, a warning is too severe. Reduced to 6377an 6378info message for now. These messages may eventually be changed to debug- 6379only. 6380ACPICA BZ 812. 6381 6382Example Code and Data Size: These are the sizes for the OS-independent 6383acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6384debug version of the code includes the debug output trace mechanism and 6385has a 6386much larger code and data size. 6387 6388 Previous Release: 6389 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 6390 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 6391 Current Release: 6392 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 6393 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 6394 63952) iASL Compiler/Disassembler and Tools: 6396 6397iASL: Implemented Switch() with While(1) so that Break works correctly. 6398This 6399change correctly implements the Switch operator with a surrounding 6400While(1) 6401so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 6402 6403iASL: Added a message if a package initializer list is shorter than 6404package 6405length. Adds a new remark for a Package() declaration if an initializer 6406list 6407exists, but is shorter than the declared length of the package. Although 6408technically legal, this is probably a coding error and it is seen in the 6409field. ACPICA BZ 815. Lin Ming, Bob Moore. 6410 6411iASL: Fixed a problem where the compiler could fault after the maximum 6412number 6413of errors was reached (200). 6414 6415acpixtract: Fixed a possible warning for pointer cast if the compiler 6416warning 6417level set very high. 6418 6419---------------------------------------- 642013 October 2009. Summary of changes for version 20091013: 6421 64221) ACPI CA Core Subsystem: 6423 6424Fixed a problem where an Operation Region _REG method could be executed 6425more 6426than once. If a custom address space handler is installed by the host 6427before 6428the "initialize operation regions" phase of the ACPICA initialization, 6429any 6430_REG methods for that address space could be executed twice. This change 6431fixes the problem. ACPICA BZ 427. Lin Ming. 6432 6433Fixed a possible memory leak for the Scope() ASL operator. When the exact 6434invocation of "Scope(\)" is executed (change scope to root), one internal 6435operand object was leaked. Lin Ming. 6436 6437Implemented a run-time repair for the _MAT predefined method. If the _MAT 6438return value is defined as a Field object in the AML, and the field 6439size is less than or equal to the default width of an integer (32 or 644064),_MAT 6441can incorrectly return an Integer instead of a Buffer. ACPICA now 6442automatically repairs this problem. ACPICA BZ 810. 6443 6444Implemented a run-time repair for the _BIF and _BIX predefined methods. 6445The 6446"OEM Information" field is often incorrectly returned as an Integer with 6447value zero if the field is not supported by the platform. This is due to 6448an 6449ambiguity in the ACPI specification. The field should always be a string. 6450ACPICA now automatically repairs this problem by returning a NULL string 6451within the returned Package. ACPICA BZ 807. 6452 6453Example Code and Data Size: These are the sizes for the OS-independent 6454acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6455debug version of the code includes the debug output trace mechanism and 6456has a 6457much larger code and data size. 6458 6459 Previous Release: 6460 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 6461 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 6462 Current Release: 6463 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 6464 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 6465 64662) iASL Compiler/Disassembler and Tools: 6467 6468Disassembler: Fixed a problem where references to external symbols that 6469contained one or more parent-prefixes (carats) were not handled 6470correctly, 6471possibly causing a fault. ACPICA BZ 806. Lin Ming. 6472 6473Disassembler: Restructured the code so that all functions that handle 6474external symbols are in a single module. One new file is added, 6475common/dmextern.c. 6476 6477AML Debugger: Added a max count argument for the Batch command (which 6478executes multiple predefined methods within the namespace.) 6479 6480iASL: Updated the compiler documentation (User Reference.) Available at 6481http://www.acpica.org/documentation/. ACPICA BZ 750. 6482 6483AcpiXtract: Updated for Lint and other formatting changes. Close all open 6484files. 6485 6486---------------------------------------- 648703 September 2009. Summary of changes for version 20090903: 6488 64891) ACPI CA Core Subsystem: 6490 6491For Windows Vista compatibility, added the automatic execution of an _INI 6492method located at the namespace root (\_INI). This method is executed at 6493table load time. This support is in addition to the automatic execution 6494of 6495\_SB._INI. Lin Ming. 6496 6497Fixed a possible memory leak in the interpreter for AML package objects 6498if 6499the package initializer list is longer than the defined size of the 6500package. 6501This apparently can only happen if the BIOS changes the package size on 6502the 6503fly (seen in a _PSS object), as ASL compilers do not allow this. The 6504interpreter will truncate the package to the defined size (and issue an 6505error 6506message), but previously could leave the extra objects undeleted if they 6507were 6508pre-created during the argument processing (such is the case if the 6509package 6510consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 6511 6512Fixed a problem seen when a Buffer or String is stored to itself via ASL. 6513This has been reported in the field. Previously, ACPICA would zero out 6514the 6515buffer/string. Now, the operation is treated as a noop. Provides Windows 6516compatibility. ACPICA BZ 803. Lin Ming. 6517 6518Removed an extraneous error message for ASL constructs of the form 6519Store(LocalX,LocalX) when LocalX is uninitialized. These curious 6520statements 6521are seen in many BIOSs and are once again treated as NOOPs and no error 6522is 6523emitted when they are encountered. ACPICA BZ 785. 6524 6525Fixed an extraneous warning message if a _DSM reserved method returns a 6526Package object. _DSM can return any type of object, so validation on the 6527return type cannot be performed. ACPICA BZ 802. 6528 6529Example Code and Data Size: These are the sizes for the OS-independent 6530acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6531debug version of the code includes the debug output trace mechanism and 6532has a 6533much larger code and data size. 6534 6535 Previous Release: 6536 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 6537 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 6538 Current Release: 6539 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 6540 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 6541 65422) iASL Compiler/Disassembler and Tools: 6543 6544iASL: Fixed a problem with the use of the Alias operator and Resource 6545Templates. The correct alias is now constructed and no error is emitted. 6546ACPICA BZ 738. 6547 6548iASL: Implemented the -I option to specify additional search directories 6549for 6550include files. Allows multiple additional search paths for include files. 6551Directories are searched in the order specified on the command line 6552(after 6553the local directory is searched.) ACPICA BZ 800. 6554 6555iASL: Fixed a problem where the full pathname for include files was not 6556emitted for warnings/errors. This caused the IDE support to not work 6557properly. ACPICA BZ 765. 6558 6559iASL: Implemented the -@ option to specify a Windows-style response file 6560containing additional command line options. ACPICA BZ 801. 6561 6562AcpiExec: Added support to load multiple AML files simultaneously (such 6563as 6564a 6565DSDT and multiple SSDTs). Also added support for wildcards within the AML 6566pathname. These features allow all machine tables to be easily loaded and 6567debugged together. ACPICA BZ 804. 6568 6569Disassembler: Added missing support for disassembly of HEST table Error 6570Bank 6571subtables. 6572 6573---------------------------------------- 657430 July 2009. Summary of changes for version 20090730: 6575 6576The ACPI 4.0 implementation for ACPICA is complete with this release. 6577 65781) ACPI CA Core Subsystem: 6579 6580ACPI 4.0: Added header file support for all new and changed ACPI tables. 6581Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 6582new 6583for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 6584BERT, 6585EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 6586There 6587have been some ACPI 4.0 changes to other existing tables. Split the large 6588actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 6589 6590ACPI 4.0: Implemented predefined name validation for all new names. There 6591are 659231 new names in ACPI 4.0. The predefined validation module was split into 6593two 6594files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 6595 6596Implemented support for so-called "module-level executable code". This is 6597executable AML code that exists outside of any control method and is 6598intended 6599to be executed at table load time. Although illegal since ACPI 2.0, this 6600type 6601of code still exists and is apparently still being created. Blocks of 6602this 6603code are now detected and executed as intended. Currently, the code 6604blocks 6605must exist under either an If, Else, or While construct; these are the 6606typical cases seen in the field. ACPICA BZ 762. Lin Ming. 6607 6608Implemented an automatic dynamic repair for predefined names that return 6609nested Package objects. This applies to predefined names that are defined 6610to 6611return a variable-length Package of sub-packages. If the number of sub- 6612packages is one, BIOS code is occasionally seen that creates a simple 6613single 6614package with no sub-packages. This code attempts to fix the problem by 6615wrapping a new package object around the existing package. These methods 6616can 6617be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 6618BZ 6619790. 6620 6621Fixed a regression introduced in 20090625 for the AcpiGetDevices 6622interface. 6623The _HID/_CID matching was broken and no longer matched IDs correctly. 6624ACPICA 6625BZ 793. 6626 6627Fixed a problem with AcpiReset where the reset would silently fail if the 6628register was one of the protected I/O ports. AcpiReset now bypasses the 6629port 6630validation mechanism. This may eventually be driven into the 6631AcpiRead/Write 6632interfaces. 6633 6634Fixed a regression related to the recent update of the AcpiRead/Write 6635interfaces. A sleep/suspend could fail if the optional PM2 Control 6636register 6637does not exist during an attempt to write the Bus Master Arbitration bit. 6638(However, some hosts already delete the code that writes this bit, and 6639the 6640code may in fact be obsolete at this date.) ACPICA BZ 799. 6641 6642Fixed a problem where AcpiTerminate could fault if inadvertently called 6643twice 6644in succession. ACPICA BZ 795. 6645 6646Example Code and Data Size: These are the sizes for the OS-independent 6647acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6648debug version of the code includes the debug output trace mechanism and 6649has a 6650much larger code and data size. 6651 6652 Previous Release: 6653 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 6654 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 6655 Current Release: 6656 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 6657 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 6658 66592) iASL Compiler/Disassembler and Tools: 6660 6661ACPI 4.0: Implemented disassembler support for all new ACPI tables and 6662changes to existing tables. ACPICA BZ 775. 6663 6664---------------------------------------- 666525 June 2009. Summary of changes for version 20090625: 6666 6667The ACPI 4.0 Specification was released on June 16 and is available at 6668www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 6669continue for the next few releases. 6670 66711) ACPI CA Core Subsystem: 6672 6673ACPI 4.0: Implemented interpreter support for the IPMI operation region 6674address space. Includes support for bi-directional data buffers and an 6675IPMI 6676address space handler (to be installed by an IPMI device driver.) ACPICA 6677BZ 6678773. Lin Ming. 6679 6680ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 6681Includes 6682support in both the header files and the disassembler. 6683 6684Completed a major update for the AcpiGetObjectInfo external interface. 6685Changes include: 6686 - Support for variable, unlimited length HID, UID, and CID strings. 6687 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 6688etc.) 6689 - Call the _SxW power methods on behalf of a device object. 6690 - Determine if a device is a PCI root bridge. 6691 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 6692These changes will require an update to all callers of this interface. 6693See 6694the updated ACPICA Programmer Reference for details. One new source file 6695has 6696been added - utilities/utids.c. ACPICA BZ 368, 780. 6697 6698Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 6699transfers. The Value parameter has been extended from 32 bits to 64 bits 6700in 6701order to support new ACPI 4.0 tables. These changes will require an 6702update 6703to 6704all callers of these interfaces. See the ACPICA Programmer Reference for 6705details. ACPICA BZ 768. 6706 6707Fixed several problems with AcpiAttachData. The handler was not invoked 6708when 6709the host node was deleted. The data sub-object was not automatically 6710deleted 6711when the host node was deleted. The interface to the handler had an 6712unused 6713parameter, this was removed. ACPICA BZ 778. 6714 6715Enhanced the function that dumps ACPI table headers. All non-printable 6716characters in the string fields are now replaced with '?' (Signature, 6717OemId, 6718OemTableId, and CompilerId.) ACPI tables with non-printable characters in 6719these fields are occasionally seen in the field. ACPICA BZ 788. 6720 6721Fixed a problem with predefined method repair code where the code that 6722attempts to repair/convert an object of incorrect type is only executed 6723on 6724the first time the predefined method is called. The mechanism that 6725disables 6726warnings on subsequent calls was interfering with the repair mechanism. 6727ACPICA BZ 781. 6728 6729Fixed a possible memory leak in the predefined validation/repair code 6730when 6731a 6732buffer is automatically converted to an expected string object. 6733 6734Removed obsolete 16-bit files from the distribution and from the current 6735git 6736tree head. ACPICA BZ 776. 6737 6738Example Code and Data Size: These are the sizes for the OS-independent 6739acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6740debug version of the code includes the debug output trace mechanism and 6741has a 6742much larger code and data size. 6743 6744 Previous Release: 6745 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 6746 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 6747 Current Release: 6748 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 6749 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 6750 67512) iASL Compiler/Disassembler and Tools: 6752 6753ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 6754operation region keyword. ACPICA BZ 771, 772. Lin Ming. 6755 6756ACPI 4.0: iASL - implemented compile-time validation support for all new 6757predefined names and control methods (31 total). ACPICA BZ 769. 6758 6759---------------------------------------- 676021 May 2009. Summary of changes for version 20090521: 6761 67621) ACPI CA Core Subsystem: 6763 6764Disabled the preservation of the SCI enable bit in the PM1 control 6765register. 6766The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 6767to 6768be 6769a "preserved" bit - "OSPM always preserves this bit position", section 67704.7.3.2.1. However, some machines fail if this bit is in fact preserved 6771because the bit needs to be explicitly set by the OS as a workaround. No 6772machines fail if the bit is not preserved. Therefore, ACPICA no longer 6773attempts to preserve this bit. 6774 6775Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 6776incorrectly formed _PRT package could cause a fault. Added validation to 6777ensure that each package element is actually a sub-package. 6778 6779Implemented a new interface to install or override a single control 6780method, 6781AcpiInstallMethod. This interface is useful when debugging in order to 6782repair 6783an existing method or to install a missing method without having to 6784override 6785the entire ACPI table. See the ACPICA Programmer Reference for use and 6786examples. Lin Ming, Bob Moore. 6787 6788Fixed several reference count issues with the DdbHandle object that is 6789created from a Load or LoadTable operator. Prevent premature deletion of 6790the 6791object. Also, mark the object as invalid once the table has been 6792unloaded. 6793This is needed because the handle itself may not be deleted after the 6794table 6795unload, depending on whether it has been stored in a named object by the 6796caller. Lin Ming. 6797 6798Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 6799mutexes of the same sync level are acquired but then not released in 6800strict 6801opposite order, the internally maintained Current Sync Level becomes 6802confused 6803and can cause subsequent execution errors. ACPICA BZ 471. 6804 6805Changed the allowable release order for ASL mutex objects. The ACPI 4.0 6806specification has been changed to make the SyncLevel for mutex objects 6807more 6808useful. When releasing a mutex, the SyncLevel of the mutex must now be 6809the 6810same as the current sync level. This makes more sense than the previous 6811rule 6812(SyncLevel less than or equal). This change updates the code to match the 6813specification. 6814 6815Fixed a problem with the local version of the AcpiOsPurgeCache function. 6816The 6817(local) cache must be locked during all cache object deletions. Andrew 6818Baumann. 6819 6820Updated the Load operator to use operation region interfaces. This 6821replaces 6822direct memory mapping with region access calls. Now, all region accesses 6823go 6824through the installed region handler as they should. 6825 6826Simplified and optimized the NsGetNextNode function. Reduced parameter 6827count 6828and reduced code for this frequently used function. 6829 6830Example Code and Data Size: These are the sizes for the OS-independent 6831acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6832debug version of the code includes the debug output trace mechanism and 6833has a 6834much larger code and data size. 6835 6836 Previous Release: 6837 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 6838 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 6839 Current Release: 6840 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 6841 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 6842 68432) iASL Compiler/Disassembler and Tools: 6844 6845Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 6846problems 6847with sub-table disassembly and handling invalid sub-tables. Attempt 6848recovery 6849after an invalid sub-table ID. 6850 6851---------------------------------------- 685222 April 2009. Summary of changes for version 20090422: 6853 68541) ACPI CA Core Subsystem: 6855 6856Fixed a compatibility issue with the recently released I/O port 6857protection 6858mechanism. For windows compatibility, 1) On a port protection violation, 6859simply ignore the request and do not return an exception (allow the 6860control 6861method to continue execution.) 2) If only part of the request overlaps a 6862protected port, read/write the individual ports that are not protected. 6863Linux 6864BZ 13036. Lin Ming 6865 6866Enhanced the execution of the ASL/AML BreakPoint operator so that it 6867actually 6868breaks into the AML debugger if the debugger is present. This matches the 6869ACPI-defined behavior. 6870 6871Fixed several possible warnings related to the use of the configurable 6872ACPI_THREAD_ID. This type can now be configured as either an integer or a 6873pointer with no warnings. Also fixes several warnings in printf-like 6874statements for the 64-bit build when the type is configured as a pointer. 6875ACPICA BZ 766, 767. 6876 6877Fixed a number of possible warnings when compiling with gcc 4+ (depending 6878on 6879warning options.) Examples include printf formats, aliasing, unused 6880globals, 6881missing prototypes, missing switch default statements, use of non-ANSI 6882library functions, use of non-ANSI constructs. See generate/unix/Makefile 6883for 6884a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 6885 6886Example Code and Data Size: These are the sizes for the OS-independent 6887acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6888debug version of the code includes the debug output trace mechanism and 6889has a 6890much larger code and data size. 6891 6892 Previous Release: 6893 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 6894 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 6895 Current Release: 6896 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 6897 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 6898 68992) iASL Compiler/Disassembler and Tools: 6900 6901iASL: Fixed a generation warning from Bison 2.3 and fixed several 6902warnings 6903on 6904the 64-bit build. 6905 6906iASL: Fixed a problem where the Unix/Linux versions of the compiler could 6907not 6908correctly digest Windows/DOS formatted files (with CR/LF). 6909 6910iASL: Added a new option for "quiet mode" (-va) that produces only the 6911compilation summary, not individual errors and warnings. Useful for large 6912batch compilations. 6913 6914AcpiExec: Implemented a new option (-z) to enable a forced 6915semaphore/mutex 6916timeout that can be used to detect hang conditions during execution of 6917AML 6918code (includes both internal semaphores and AML-defined mutexes and 6919events.) 6920 6921Added new makefiles for the generation of acpica in a generic unix-like 6922environment. These makefiles are intended to generate the acpica tools 6923and 6924utilities from the original acpica git source tree structure. 6925 6926Test Suites: Updated and cleaned up the documentation files. Updated the 6927copyrights to 2009, affecting all source files. Use the new version of 6928iASL 6929with quiet mode. Increased the number of available semaphores in the 6930Windows 6931OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 6932added 6933an alternate implementation of the semaphore timeout to allow aslts to 6934execute fully on Cygwin. 6935 6936---------------------------------------- 693720 March 2009. Summary of changes for version 20090320: 6938 69391) ACPI CA Core Subsystem: 6940 6941Fixed a possible race condition between AcpiWalkNamespace and dynamic 6942table 6943unloads. Added a reader/writer locking mechanism to allow multiple 6944concurrent 6945namespace walks (readers), but block a dynamic table unload until it can 6946gain 6947exclusive write access to the namespace. This fixes a problem where a 6948table 6949unload could (possibly catastrophically) delete the portion of the 6950namespace 6951that is currently being examined by a walk. Adds a new file, utlock.c, 6952that 6953implements the reader/writer lock mechanism. ACPICA BZ 749. 6954 6955Fixed a regression introduced in version 20090220 where a change to the 6956FADT 6957handling could cause the ACPICA subsystem to access non-existent I/O 6958ports. 6959 6960Modified the handling of FADT register and table (FACS/DSDT) addresses. 6961The 6962FADT can contain both 32-bit and 64-bit versions of these addresses. 6963Previously, the 64-bit versions were favored, meaning that if both 32 and 696464 6965versions were valid, but not equal, the 64-bit version was used. This was 6966found to cause some machines to fail. Now, in this case, the 32-bit 6967version 6968is used instead. This now matches the Windows behavior. 6969 6970Implemented a new mechanism to protect certain I/O ports. Provides 6971Microsoft 6972compatibility and protects the standard PC I/O ports from access via AML 6973code. Adds a new file, hwvalid.c 6974 6975Fixed a possible extraneous warning message from the FADT support. The 6976message warns of a 32/64 length mismatch between the legacy and GAS 6977definitions for a register. 6978 6979Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 6980is 6981made obsolete by the port protection mechanism above. It was previously 6982used 6983to validate the entire address range of an operation region, which could 6984be 6985incorrect if the range included illegal ports, but fields within the 6986operation region did not actually access those ports. Validation is now 6987performed on a per-field basis instead of the entire region. 6988 6989Modified the handling of the PM1 Status Register ignored bit (bit 11.) 6990Ignored bits must be "preserved" according to the ACPI spec. Usually, 6991this 6992means a read/modify/write when writing to the register. However, for 6993status 6994registers, writing a one means clear the event. Writing a zero means 6995preserve 6996the event (do not clear.) This behavior is clarified in the ACPI 4.0 6997spec, 6998and the ACPICA code now simply always writes a zero to the ignored bit. 6999 7000Modified the handling of ignored bits for the PM1 A/B Control Registers. 7001As 7002per the ACPI specification, for the control registers, preserve 7003(read/modify/write) all bits that are defined as either reserved or 7004ignored. 7005 7006Updated the handling of write-only bits in the PM1 A/B Control Registers. 7007When reading the register, zero the write-only bits as per the ACPI spec. 7008ACPICA BZ 443. Lin Ming. 7009 7010Removed "Linux" from the list of supported _OSI strings. Linux no longer 7011wants to reply true to this request. The Windows strings are the only 7012paths 7013through the AML that are tested and known to work properly. 7014 7015 Previous Release: 7016 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 7017 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 7018 Current Release: 7019 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 7020 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 7021 70222) iASL Compiler/Disassembler and Tools: 7023 7024Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 7025and 7026aetables.c 7027 7028---------------------------------------- 702920 February 2009. Summary of changes for version 20090220: 7030 70311) ACPI CA Core Subsystem: 7032 7033Optimized the ACPI register locking. Removed locking for reads from the 7034ACPI 7035bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 7036is 7037not required when reading the single-bit registers. The 7038AcpiGetRegisterUnlocked function is no longer needed and has been 7039removed. 7040This will improve performance for reads on these registers. ACPICA BZ 7041760. 7042 7043Fixed the parameter validation for AcpiRead/Write. Now return 7044AE_BAD_PARAMETER if the input register pointer is null, and 7045AE_BAD_ADDRESS 7046if 7047the register has an address of zero. Previously, these cases simply 7048returned 7049AE_OK. For optional registers such as PM1B status/enable/control, the 7050caller 7051should check for a valid register address before calling. ACPICA BZ 748. 7052 7053Renamed the external ACPI bit register access functions. Renamed 7054AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 7055functions. The new names are AcpiReadBitRegister and 7056AcpiWriteBitRegister. 7057Also, restructured the code for these functions by simplifying the code 7058path 7059and condensing duplicate code to reduce code size. 7060 7061Added new functions to transparently handle the possibly split PM1 A/B 7062registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 7063functions 7064now handle the split registers for PM1 Status, Enable, and Control. 7065ACPICA 7066BZ 7067746. 7068 7069Added a function to handle the PM1 control registers, 7070AcpiHwWritePm1Control. 7071This function writes both of the PM1 control registers (A/B). These 7072registers 7073are different than the PM1 A/B status and enable registers in that 7074different 7075values can be written to the A/B registers. Most notably, the SLP_TYP 7076bits 7077can be different, as per the values returned from the _Sx predefined 7078methods. 7079 7080Removed an extra register write within AcpiHwClearAcpiStatus. This 7081function 7082was writing an optional PM1B status register twice. The existing call to 7083the 7084low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 7085A/B 7086register. ACPICA BZ 751. 7087 7088Split out the PM1 Status registers from the FADT. Added new globals for 7089these 7090registers (A/B), similar to the way the PM1 Enable registers are handled. 7091Instead of overloading the FADT Event Register blocks. This makes the 7092code 7093clearer and less prone to error. 7094 7095Fixed the warning message for when the platform contains too many ACPI 7096tables 7097for the default size of the global root table data structure. The 7098calculation 7099for the truncation value was incorrect. 7100 7101Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 7102obsolete macro, since it is now a simple reference to ->common.type. 7103There 7104were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 7105 7106Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 7107TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 7108simply SLEEP_TYPE. ACPICA BZ 754. 7109 7110Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 7111function is only needed on 64-bit host operating systems and is thus not 7112included for 32-bit hosts. 7113 7114Debug output: print the input and result for invocations of the _OSI 7115reserved 7116control method via the ACPI_LV_INFO debug level. Also, reduced some of 7117the 7118verbosity of this debug level. Len Brown. 7119 7120Example Code and Data Size: These are the sizes for the OS-independent 7121acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7122debug version of the code includes the debug output trace mechanism and 7123has a 7124much larger code and data size. 7125 7126 Previous Release: 7127 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 7128 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 7129 Current Release: 7130 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 7131 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 7132 71332) iASL Compiler/Disassembler and Tools: 7134 7135Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 7136various legal performance profiles. 7137 7138---------------------------------------- 713923 January 2009. Summary of changes for version 20090123: 7140 71411) ACPI CA Core Subsystem: 7142 7143Added the 2009 copyright to all module headers and signons. This affects 7144virtually every file in the ACPICA core subsystem, the iASL compiler, and 7145the tools/utilities. 7146 7147Implemented a change to allow the host to override any ACPI table, 7148including 7149dynamically loaded tables. Previously, only the DSDT could be replaced by 7150the 7151host. With this change, the AcpiOsTableOverride interface is called for 7152each 7153table found in the RSDT/XSDT during ACPICA initialization, and also 7154whenever 7155a table is dynamically loaded via the AML Load operator. 7156 7157Updated FADT flag definitions, especially the Boot Architecture flags. 7158 7159Debugger: For the Find command, automatically pad the input ACPI name 7160with 7161underscores if the name is shorter than 4 characters. This enables a 7162match 7163with the actual namespace entry which is itself padded with underscores. 7164 7165Example Code and Data Size: These are the sizes for the OS-independent 7166acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7167debug version of the code includes the debug output trace mechanism and 7168has a 7169much larger code and data size. 7170 7171 Previous Release: 7172 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 7173 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 7174 Current Release: 7175 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 7176 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 7177 71782) iASL Compiler/Disassembler and Tools: 7179 7180Fix build error under Bison-2.4. 7181 7182Dissasembler: Enhanced FADT support. Added decoding of the Boot 7183Architecture 7184flags. Now decode all flags, regardless of the FADT version. Flag output 7185includes the FADT version which first defined each flag. 7186 7187The iASL -g option now dumps the RSDT to a file (in addition to the FADT 7188and 7189DSDT). Windows only. 7190 7191---------------------------------------- 719204 December 2008. Summary of changes for version 20081204: 7193 71941) ACPI CA Core Subsystem: 7195 7196The ACPICA Programmer Reference has been completely updated and revamped 7197for 7198this release. This includes updates to the external interfaces, OSL 7199interfaces, the overview sections, and the debugger reference. 7200 7201Several new ACPICA interfaces have been implemented and documented in the 7202programmer reference: 7203AcpiReset - Writes the reset value to the FADT-defined reset register. 7204AcpiDisableAllGpes - Disable all available GPEs. 7205AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 7206AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 7207AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 7208AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 7209AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 7210 7211Most of the public ACPI hardware-related interfaces have been moved to a 7212new 7213file, components/hardware/hwxface.c 7214 7215Enhanced the FADT parsing and low-level ACPI register access: The ACPI 7216register lengths within the FADT are now used, and the low level ACPI 7217register access no longer hardcodes the ACPI register lengths. Given that 7218there may be some risk in actually trusting the FADT register lengths, a 7219run- 7220time option was added to fall back to the default hardcoded lengths if 7221the 7222FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 7223option is set to true for now, and a warning is issued if a suspicious 7224FADT 7225register length is overridden with the default value. 7226 7227Fixed a reference count issue in NsRepairObject. This problem was 7228introduced 7229in version 20081031 as part of a fix to repair Buffer objects within 7230Packages. Lin Ming. 7231 7232Added semaphore support to the Linux/Unix application OS-services layer 7233(OSL). ACPICA BZ 448. Lin Ming. 7234 7235Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 7236will 7237be implemented in the OSL, or will binary semaphores be used instead. 7238 7239Example Code and Data Size: These are the sizes for the OS-independent 7240acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7241debug version of the code includes the debug output trace mechanism and 7242has a 7243much larger code and data size. 7244 7245 Previous Release: 7246 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 7247 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 7248 Current Release: 7249 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 7250 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 7251 72522) iASL Compiler/Disassembler and Tools: 7253 7254iASL: Completed the '-e' option to include additional ACPI tables in 7255order 7256to 7257aid with disassembly and External statement generation. ACPICA BZ 742. 7258Lin 7259Ming. 7260 7261iASL: Removed the "named object in while loop" error. The compiler cannot 7262determine how many times a loop will execute. ACPICA BZ 730. 7263 7264Disassembler: Implemented support for FADT revision 2 (MS extension). 7265ACPICA 7266BZ 743. 7267 7268Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 7269MCFG). 7270 7271---------------------------------------- 727231 October 2008. Summary of changes for version 20081031: 7273 72741) ACPI CA Core Subsystem: 7275 7276Restructured the ACPICA header files into public/private. acpi.h now 7277includes 7278only the "public" acpica headers. All other acpica headers are "private" 7279and 7280should not be included by acpica users. One new file, accommon.h is used 7281to 7282include the commonly used private headers for acpica code generation. 7283Future 7284plans include moving all private headers to a new subdirectory. 7285 7286Implemented an automatic Buffer->String return value conversion for 7287predefined ACPI methods. For these methods (such as _BIF), added 7288automatic 7289conversion for return objects that are required to be a String, but a 7290Buffer 7291was found instead. This can happen when reading string battery data from 7292an 7293operation region, because it used to be difficult to convert the data 7294from 7295buffer to string from within the ASL. Ensures that the host OS is 7296provided 7297with a valid null-terminated string. Linux BZ 11822. 7298 7299Updated the FACS waking vector interfaces. Split 7300AcpiSetFirmwareWakingVector 7301into two: one for the 32-bit vector, another for the 64-bit vector. This 7302is 7303required because the host OS must setup the wake much differently for 7304each 7305vector (real vs. protected mode, etc.) and the interface itself should 7306not 7307be 7308deciding which vector to use. Also, eliminated the 7309GetFirmwareWakingVector 7310interface, as it served no purpose (only the firmware reads the vector, 7311OS 7312only writes the vector.) ACPICA BZ 731. 7313 7314Implemented a mechanism to escape infinite AML While() loops. Added a 7315loop 7316counter to force exit from AML While loops if the count becomes too 7317large. 7318This can occur in poorly written AML when the hardware does not respond 7319within a while loop and the loop does not implement a timeout. The 7320maximum 7321loop count is configurable. A new exception code is returned when a loop 7322is 7323broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 7324 7325Optimized the execution of AML While loops. Previously, a control state 7326object was allocated and freed for each execution of the loop. The 7327optimization is to simply reuse the control state for each iteration. 7328This 7329speeds up the raw loop execution time by about 5%. 7330 7331Enhanced the implicit return mechanism. For Windows compatibility, return 7332an 7333implicit integer of value zero for methods that contain no executable 7334code. 7335Such methods are seen in the field as stubs (presumably), and can cause 7336drivers to fail if they expect a return value. Lin Ming. 7337 7338Allow multiple backslashes as root prefixes in namepaths. In a fully 7339qualified namepath, allow multiple backslash prefixes. This can happen 7340(and 7341is seen in the field) because of the use of a double-backslash in strings 7342(since backslash is the escape character) causing confusion. ACPICA BZ 7343739 7344Lin Ming. 7345 7346Emit a warning if two different FACS or DSDT tables are discovered in the 7347FADT. Checks if there are two valid but different addresses for the FACS 7348and 7349DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 7350 7351Consolidated the method argument count validation code. Merged the code 7352that 7353validates control method argument counts into the predefined validation 7354module. Eliminates possible multiple warnings for incorrect argument 7355counts. 7356 7357Implemented ACPICA example code. Includes code for ACPICA initialization, 7358handler installation, and calling a control method. Available at 7359source/tools/examples. 7360 7361Added a global pointer for FACS table to simplify internal FACS access. 7362Use 7363the global pointer instead of using AcpiGetTableByIndex for each FACS 7364access. 7365This simplifies the code for the Global Lock and the Firmware Waking 7366Vector(s). 7367 7368Example Code and Data Size: These are the sizes for the OS-independent 7369acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7370debug version of the code includes the debug output trace mechanism and 7371has a 7372much larger code and data size. 7373 7374 Previous Release: 7375 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 7376 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 7377 Current Release: 7378 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 7379 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 7380 73812) iASL Compiler/Disassembler and Tools: 7382 7383iASL: Improved disassembly of external method calls. Added the -e option 7384to 7385allow the inclusion of additional ACPI tables to help with the 7386disassembly 7387of 7388method invocations and the generation of external declarations during the 7389disassembly. Certain external method invocations cannot be disassembled 7390properly without the actual declaration of the method. Use the -e option 7391to 7392include the table where the external method(s) are actually declared. 7393Most 7394useful for disassembling SSDTs that make method calls back to the master 7395DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 7396-d 7397-e dsdt.aml ssdt1.aml 7398 7399iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 7400problem where the use of an alias within a namepath would result in a not 7401found error or cause the compiler to fault. Also now allows forward 7402references from the Alias operator itself. ACPICA BZ 738. 7403 7404---------------------------------------- 740526 September 2008. Summary of changes for version 20080926: 7406 74071) ACPI CA Core Subsystem: 7408 7409Designed and implemented a mechanism to validate predefined ACPI methods 7410and 7411objects. This code validates the predefined ACPI objects (objects whose 7412names 7413start with underscore) that appear in the namespace, at the time they are 7414evaluated. The argument count and the type of the returned object are 7415validated against the ACPI specification. The purpose of this validation 7416is 7417to detect problems with the BIOS-implemented predefined ACPI objects 7418before 7419the results are returned to the ACPI-related drivers. Future enhancements 7420may 7421include actual repair of incorrect return objects where possible. Two new 7422files are nspredef.c and acpredef.h. 7423 7424Fixed a fault in the AML parser if a memory allocation fails during the 7425Op 7426completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 7427 7428Fixed an issue with implicit return compatibility. This change improves 7429the 7430implicit return mechanism to be more compatible with the MS interpreter. 7431Lin 7432Ming, ACPICA BZ 349. 7433 7434Implemented support for zero-length buffer-to-string conversions. Allow 7435zero 7436length strings during interpreter buffer-to-string conversions. For 7437example, 7438during the ToDecimalString and ToHexString operators, as well as implicit 7439conversions. Fiodor Suietov, ACPICA BZ 585. 7440 7441Fixed two possible memory leaks in the error exit paths of 7442AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 7443are 7444similar in that they use a stack of state objects in order to eliminate 7445recursion. The stack must be fully unwound and deallocated if an error 7446occurs. Lin Ming. ACPICA BZ 383. 7447 7448Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 7449global 7450ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 7451Moore ACPICA BZ 442. 7452 7453Removed the obsolete version number in module headers. Removed the 7454"$Revision" number that appeared in each module header. This version 7455number 7456was useful under SourceSafe and CVS, but has no meaning under git. It is 7457not 7458only incorrect, it could also be misleading. 7459 7460Example Code and Data Size: These are the sizes for the OS-independent 7461acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7462debug version of the code includes the debug output trace mechanism and 7463has a 7464much larger code and data size. 7465 7466 Previous Release: 7467 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7468 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 7469 Current Release: 7470 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 7471 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 7472 7473---------------------------------------- 747429 August 2008. Summary of changes for version 20080829: 7475 74761) ACPI CA Core Subsystem: 7477 7478Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 7479Reference. Changes include the elimination of cheating on the Object 7480field 7481for the DdbHandle subtype, addition of a reference class field to 7482differentiate the various reference types (instead of an AML opcode), and 7483the 7484cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 7485 7486Reduce an error to a warning for an incorrect method argument count. 7487Previously aborted with an error if too few arguments were passed to a 7488control method via the external ACPICA interface. Now issue a warning 7489instead 7490and continue. Handles the case where the method inadvertently declares 7491too 7492many arguments, but does not actually use the extra ones. Applies mainly 7493to 7494the predefined methods. Lin Ming. Linux BZ 11032. 7495 7496Disallow the evaluation of named object types with no intrinsic value. 7497Return 7498AE_TYPE for objects that have no value and therefore evaluation is 7499undefined: 7500Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 7501of 7502these types were allowed, but an exception would be generated at some 7503point 7504during the evaluation. Now, the error is generated up front. 7505 7506Fixed a possible memory leak in the AcpiNsGetExternalPathname function 7507(nsnames.c). Fixes a leak in the error exit path. 7508 7509Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 7510debug 7511levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 7512ACPI_EXCEPTION 7513interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 7514ACPI_LV_EVENTS. 7515 7516Removed obsolete and/or unused exception codes from the acexcep.h header. 7517There is the possibility that certain device drivers may be affected if 7518they 7519use any of these exceptions. 7520 7521The ACPICA documentation has been added to the public git source tree, 7522under 7523acpica/documents. Included are the ACPICA programmer reference, the iASL 7524compiler reference, and the changes.txt release logfile. 7525 7526Example Code and Data Size: These are the sizes for the OS-independent 7527acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7528debug version of the code includes the debug output trace mechanism and 7529has a 7530much larger code and data size. 7531 7532 Previous Release: 7533 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7534 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 7535 Current Release: 7536 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7537 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 7538 75392) iASL Compiler/Disassembler and Tools: 7540 7541Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 7542defines _SCP with 3 arguments. Previous versions defined it with only 1 7543argument. iASL now allows both definitions. 7544 7545iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 7546zero- 7547length subtables when disassembling ACPI tables. Also fixed a couple of 7548errors where a full 16-bit table type field was not extracted from the 7549input 7550properly. 7551 7552acpisrc: Improve comment counting mechanism for generating source code 7553statistics. Count first and last lines of multi-line comments as 7554whitespace, 7555not comment lines. Handle Linux legal header in addition to standard 7556acpica 7557header. 7558 7559---------------------------------------- 7560 756129 July 2008. Summary of changes for version 20080729: 7562 75631) ACPI CA Core Subsystem: 7564 7565Fix a possible deadlock in the GPE dispatch. Remove call to 7566AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 7567attempt 7568to acquire the GPE lock but can deadlock since the GPE lock is already 7569held 7570at dispatch time. This code was introduced in version 20060831 as a 7571response 7572to Linux BZ 6881 and has since been removed from Linux. 7573 7574Add a function to dereference returned reference objects. Examines the 7575return 7576object from a call to AcpiEvaluateObject. Any Index or RefOf references 7577are 7578automatically dereferenced in an attempt to return something useful 7579(these 7580reference types cannot be converted into an external ACPI_OBJECT.) 7581Provides 7582MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 7583 7584x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 7585subtables for the MADT and one new subtable for the SRAT. Includes 7586disassembler and AcpiSrc support. Data from the Intel 64 Architecture 7587x2APIC 7588Specification, June 2008. 7589 7590Additional error checking for pathname utilities. Add error check after 7591all 7592calls to AcpiNsGetPathnameLength. Add status return from 7593AcpiNsBuildExternalPath and check after all calls. Add parameter 7594validation 7595to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 7596 7597Return status from the global init function AcpiUtGlobalInitialize. This 7598is 7599used by both the kernel subsystem and the utilities such as iASL 7600compiler. 7601The function could possibly fail when the caches are initialized. Yang 7602Yi. 7603 7604Add a function to decode reference object types to strings. Created for 7605improved error messages. 7606 7607Improve object conversion error messages. Better error messages during 7608object 7609conversion from internal to the external ACPI_OBJECT. Used for external 7610calls 7611to AcpiEvaluateObject. 7612 7613Example Code and Data Size: These are the sizes for the OS-independent 7614acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7615debug version of the code includes the debug output trace mechanism and 7616has a 7617much larger code and data size. 7618 7619 Previous Release: 7620 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 7621 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 7622 Current Release: 7623 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7624 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 7625 76262) iASL Compiler/Disassembler and Tools: 7627 7628Debugger: fix a possible hang when evaluating non-methods. Fixes a 7629problem 7630introduced in version 20080701. If the object being evaluated (via 7631execute 7632command) is not a method, the debugger can hang while trying to obtain 7633non- 7634existent parameters. 7635 7636iASL: relax error for using reserved "_T_x" identifiers. These names can 7637appear in a disassembled ASL file if they were emitted by the original 7638compiler. Instead of issuing an error or warning and forcing the user to 7639manually change these names, issue a remark instead. 7640 7641iASL: error if named object created in while loop. Emit an error if any 7642named 7643object is created within a While loop. If allowed, this code will 7644generate 7645a 7646run-time error on the second iteration of the loop when an attempt is 7647made 7648to 7649create the same named object twice. ACPICA bugzilla 730. 7650 7651iASL: Support absolute pathnames for include files. Add support for 7652absolute 7653pathnames within the Include operator. previously, only relative 7654pathnames 7655were supported. 7656 7657iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 7658Descriptor. 7659The ACPI spec requires one interrupt minimum. BZ 423 7660 7661iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 7662Handles the case for the Interrupt Resource Descriptor where 7663the ResourceSource argument is omitted but ResourceSourceIndex 7664is present. Now leave room for the Index. BZ 426 7665 7666iASL: Prevent error message if CondRefOf target does not exist. Fixes 7667cases 7668where an error message is emitted if the target does not exist. BZ 516 7669 7670iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 7671(get ACPI tables on Windows). This was apparently broken in version 767220070919. 7673 7674AcpiXtract: Handle EOF while extracting data. Correctly handle the case 7675where 7676the EOF happens immediately after the last table in the input file. Print 7677completion message. Previously, no message was displayed in this case. 7678 7679---------------------------------------- 768001 July 2008. Summary of changes for version 20080701: 7681 76820) Git source tree / acpica.org 7683 7684Fixed a problem where a git-clone from http would not transfer the entire 7685source tree. 7686 76871) ACPI CA Core Subsystem: 7688 7689Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 7690enable bit. Now performs a read-change-write of the enable register 7691instead 7692of simply writing out the cached enable mask. This will prevent 7693inadvertent 7694enabling of GPEs if a rogue GPE is received during initialization (before 7695GPE 7696handlers are installed.) 7697 7698Implemented a copy for dynamically loaded tables. Previously, dynamically 7699loaded tables were simply mapped - but on some machines this memory is 7700corrupted after suspend. Now copy the table to a local buffer. For the 7701OpRegion case, added checksum verify. Use the table length from the table 7702header, not the region length. For the Buffer case, use the table length 7703also. Dennis Noordsij, Bob Moore. BZ 10734 7704 7705Fixed a problem where the same ACPI table could not be dynamically loaded 7706and 7707unloaded more than once. Without this change, a table cannot be loaded 7708again 7709once it has been loaded/unloaded one time. The current mechanism does not 7710unregister a table upon an unload. During a load, if the same table is 7711found, 7712this no longer returns an exception. BZ 722 7713 7714Fixed a problem where the wrong descriptor length was calculated for the 7715EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 7716EndTag 7717are calculated as 12 bytes long, but the actual length in the internal 7718descriptor is 16 because of the round-up to 8 on the 64-bit build. 7719Reported 7720by Linn Crosetto. BZ 728 7721 7722Fixed a possible memory leak in the Unload operator. The DdbHandle 7723returned 7724by Load() did not have its reference count decremented during unload, 7725leading 7726to a memory leak. Lin Ming. BZ 727 7727 7728Fixed a possible memory leak when deleting thermal/processor objects. Any 7729associated notify handlers (and objects) were not being deleted. Fiodor 7730Suietov. BZ 506 7731 7732Fixed the ordering of the ASCII names in the global mutex table to match 7733the 7734actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 7735only. 7736Vegard Nossum. BZ 726 7737 7738Enhanced the AcpiGetObjectInfo interface to return the number of required 7739arguments if the object is a control method. Added this call to the 7740debugger 7741so the proper number of default arguments are passed to a method. This 7742prevents a warning when executing methods from AcpiExec. 7743 7744Added a check for an invalid handle in AcpiGetObjectInfo. Return 7745AE_BAD_PARAMETER if input handle is invalid. BZ 474 7746 7747Fixed an extraneous warning from exconfig.c on the 64-bit build. 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.3K Code, 16.2K Data, 95.5K Total 7757 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 7758 Current Release: 7759 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 7760 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 7761 77622) iASL Compiler/Disassembler and Tools: 7763 7764iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 7765resource descriptor names. 7766 7767iASL: Detect invalid ASCII characters in input (windows version). Removed 7768the 7769"-CF" flag from the flex compile, enables correct detection of non-ASCII 7770characters in the input. BZ 441 7771 7772iASL: Eliminate warning when result of LoadTable is not used. Eliminate 7773the 7774"result of operation not used" warning when the DDB handle returned from 7775LoadTable is not used. The warning is not needed. BZ 590 7776 7777AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 7778method 7779to 7780pass address of table to the AML. Added option to disable OpRegion 7781simulation 7782to allow creation of an OpRegion with a real address that was passed to 7783_CFG. 7784All of this allows testing of the Load and Unload operators from 7785AcpiExec. 7786 7787Debugger: update tables command for unloaded tables. Handle unloaded 7788tables 7789and use the standard table header output routine. 7790 7791---------------------------------------- 779209 June 2008. Summary of changes for version 20080609: 7793 77941) ACPI CA Core Subsystem: 7795 7796Implemented a workaround for reversed _PRT entries. A significant number 7797of 7798BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 7799change dynamically detects and repairs this problem. Provides 7800compatibility 7801with MS ACPI. BZ 6859 7802 7803Simplified the internal ACPI hardware interfaces to eliminate the locking 7804flag parameter from Register Read/Write. Added a new external interface, 7805AcpiGetRegisterUnlocked. 7806 7807Fixed a problem where the invocation of a GPE control method could hang. 7808This 7809was a regression introduced in 20080514. The new method argument count 7810validation mechanism can enter an infinite loop when a GPE method is 7811dispatched. Problem fixed by removing the obsolete code that passed GPE 7812block 7813information to the notify handler via the control method parameter 7814pointer. 7815 7816Fixed a problem where the _SST execution status was incorrectly returned 7817to 7818the caller of AcpiEnterSleepStatePrep. This was a regression introduced 7819in 782020080514. _SST is optional and a NOT_FOUND exception should never be 7821returned. BZ 716 7822 7823Fixed a problem where a deleted object could be accessed from within the 7824AML 7825parser. This was a regression introduced in version 20080123 as a fix for 7826the 7827Unload operator. Lin Ming. BZ 10669 7828 7829Cleaned up the debug operand dump mechanism. Eliminated unnecessary 7830operands 7831and eliminated the use of a negative index in a loop. Operands are now 7832displayed in the correct order, not backwards. This also fixes a 7833regression 7834introduced in 20080514 on 64-bit systems where the elimination of 7835ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 7836715 7837 7838Fixed a possible memory leak in EvPciConfigRegionSetup where the error 7839exit 7840path did not delete a locally allocated structure. 7841 7842Updated definitions for the DMAR and SRAT tables to synchronize with the 7843current specifications. Includes disassembler support. 7844 7845Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 7846loop termination value was used. Loop terminated on iteration early, 7847missing 7848one mutex. Linn Crosetto 7849 7850Example Code and Data Size: These are the sizes for the OS-independent 7851acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7852debug version of the code includes the debug output trace mechanism and 7853has a 7854much larger code and data size. 7855 7856 Previous Release: 7857 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 7858 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 7859 Current Release: 7860 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 7861 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 7862 78632) iASL Compiler/Disassembler and Tools: 7864 7865Disassembler: Implemented support for EisaId() within _CID objects. Now 7866disassemble integer _CID objects back to EisaId invocations, including 7867multiple integers within _CID packages. Includes single-step support for 7868debugger also. 7869 7870Disassembler: Added support for DMAR and SRAT table definition changes. 7871 7872---------------------------------------- 787314 May 2008. Summary of changes for version 20080514: 7874 78751) ACPI CA Core Subsystem: 7876 7877Fixed a problem where GPEs were enabled too early during the ACPICA 7878initialization. This could lead to "handler not installed" errors on some 7879machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 7880This 7881ensures that all operation regions and devices throughout the namespace 7882have 7883been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 7884 7885Implemented a change to the enter sleep code. Moved execution of the _GTS 7886method to just before setting sleep enable bit. The execution was moved 7887from 7888AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 7889immediately before the SLP_EN bit is set, as per the ACPI specification. 7890Luming Yu, BZ 1653. 7891 7892Implemented a fix to disable unknown GPEs (2nd version). Now always 7893disable 7894the GPE, even if ACPICA thinks that that it is already disabled. It is 7895possible that the AML or some other code has enabled the GPE unbeknownst 7896to 7897the ACPICA code. 7898 7899Fixed a problem with the Field operator where zero-length fields would 7900return 7901an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 7902ASL 7903field declarations in Field(), BankField(), and IndexField(). BZ 10606. 7904 7905Implemented a fix for the Load operator, now load the table at the 7906namespace 7907root. This reverts a change introduced in version 20071019. The table is 7908now 7909loaded at the namespace root even though this goes against the ACPI 7910specification. This provides compatibility with other ACPI 7911implementations. 7912The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 7913Ming. 7914 7915Fixed a problem where ACPICA would not Load() tables with unusual 7916signatures. 7917Now ignore ACPI table signature for Load() operator. Only "SSDT" is 7918acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 7919Therefore, signature validation is worthless. Apparently MS ACPI accepts 7920such 7921signatures, ACPICA must be compatible. BZ 10454. 7922 7923Fixed a possible negative array index in AcpiUtValidateException. Added 7924NULL 7925fields to the exception string arrays to eliminate a -1 subtraction on 7926the 7927SubStatus field. 7928 7929Updated the debug tracking macros to reduce overall code and data size. 7930Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 7931instead of pointers to static strings. Jan Beulich and Bob Moore. 7932 7933Implemented argument count checking in control method invocation via 7934AcpiEvaluateObject. Now emit an error if too few arguments, warning if 7935too 7936many. This applies only to extern programmatic control method execution, 7937not 7938method-to-method calls within the AML. Lin Ming. 7939 7940Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 7941no 7942longer needed, especially with the removal of 16-bit support. It was 7943replaced 7944mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 7945bit 7946on 794732/64-bit platforms is required. 7948 7949Added the C const qualifier for appropriate string constants -- mostly 7950MODULE_NAME and printf format strings. Jan Beulich. 7951 7952Example Code and Data Size: These are the sizes for the OS-independent 7953acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7954debug version of the code includes the debug output trace mechanism and 7955has a 7956much larger code and data size. 7957 7958 Previous Release: 7959 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 7960 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 7961 Current Release: 7962 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 7963 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 7964 79652) iASL Compiler/Disassembler and Tools: 7966 7967Implemented ACPI table revision ID validation in the disassembler. Zero 7968is 7969always invalid. For DSDTs, the ID controls the interpreter integer width. 79701 7971means 32-bit and this is unusual. 2 or greater is 64-bit. 7972 7973---------------------------------------- 797421 March 2008. Summary of changes for version 20080321: 7975 79761) ACPI CA Core Subsystem: 7977 7978Implemented an additional change to the GPE support in order to suppress 7979spurious or stray GPEs. The AcpiEvDisableGpe function will now 7980permanently 7981disable incoming GPEs that are neither enabled nor disabled -- meaning 7982that 7983the GPE is unknown to the system. This should prevent future interrupt 7984floods 7985from that GPE. BZ 6217 (Zhang Rui) 7986 7987Fixed a problem where NULL package elements were not returned to the 7988AcpiEvaluateObject interface correctly. The element was simply ignored 7989instead of returning a NULL ACPI_OBJECT package element, potentially 7990causing 7991a buffer overflow and/or confusing the caller who expected a fixed number 7992of 7993elements. BZ 10132 (Lin Ming, Bob Moore) 7994 7995Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 7996Dword, 7997Qword), Field, BankField, and IndexField operators when invoked from 7998inside 7999an executing control method. In this case, these operators created 8000namespace 8001nodes that were incorrectly left marked as permanent nodes instead of 8002temporary nodes. This could cause a problem if there is race condition 8003between an exiting control method and a running namespace walk. (Reported 8004by 8005Linn Crosetto) 8006 8007Fixed a problem where the CreateField and CreateXXXField operators would 8008incorrectly allow duplicate names (the name of the field) with no 8009exception 8010generated. 8011 8012Implemented several changes for Notify handling. Added support for new 8013Notify 8014values (ACPI 2.0+) and improved the Notify debug output. Notify on 8015PowerResource objects is no longer allowed, as per the ACPI 8016specification. 8017(Bob Moore, Zhang Rui) 8018 8019All Reference Objects returned via the AcpiEvaluateObject interface are 8020now 8021marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 8022for 8023NULL objects - either NULL package elements or unresolved named 8024references. 8025 8026Fixed a problem where an extraneous debug message was produced for 8027package 8028objects (when debugging enabled). The message "Package List length larger 8029than NumElements count" is now produced in the correct case, and is now 8030an 8031error message rather than a debug message. Added a debug message for the 8032opposite case, where NumElements is larger than the Package List (the 8033package 8034will be padded out with NULL elements as per the ACPI spec.) 8035 8036Implemented several improvements for the output of the ASL "Debug" object 8037to 8038clarify and keep all data for a given object on one output line. 8039 8040Fixed two size calculation issues with the variable-length Start 8041Dependent 8042resource descriptor. 8043 8044Example Code and Data Size: These are the sizes for the OS-independent 8045acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8046debug version of the code includes the debug output trace mechanism and 8047has 8048a much larger code and data size. 8049 8050 Previous Release: 8051 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 8052 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 8053 Current Release: 8054 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 8055 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 8056 80572) iASL Compiler/Disassembler and Tools: 8058 8059Fixed a problem with the use of the Switch operator where execution of 8060the 8061containing method by multiple concurrent threads could cause an 8062AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 8063actual Switch opcode, it must be simulated with local named temporary 8064variables and if/else pairs. The solution chosen was to mark any method 8065that 8066uses Switch as Serialized, thus preventing multiple thread entries. BZ 8067469. 8068 8069---------------------------------------- 807013 February 2008. Summary of changes for version 20080213: 8071 80721) ACPI CA Core Subsystem: 8073 8074Implemented another MS compatibility design change for GPE/Notify 8075handling. 8076GPEs are now cleared/enabled asynchronously to allow all pending notifies 8077to 8078complete first. It is expected that the OSL will queue the enable request 8079behind all pending notify requests (may require changes to the local host 8080OSL 8081in AcpiOsExecute). Alexey Starikovskiy. 8082 8083Fixed a problem where buffer and package objects passed as arguments to a 8084control method via the external AcpiEvaluateObject interface could cause 8085an 8086AE_AML_INTERNAL exception depending on the order and type of operators 8087executed by the target control method. 8088 8089Fixed a problem where resource descriptor size optimization could cause a 8090problem when a _CRS resource template is passed to a _SRS method. The 8091_SRS 8092resource template must use the same descriptors (with the same size) as 8093returned from _CRS. This change affects the following resource 8094descriptors: 8095IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 80969487) 8097 8098Fixed a problem where a CopyObject to RegionField, BankField, and 8099IndexField 8100objects did not perform an implicit conversion as it should. These types 8101must 8102retain their initial type permanently as per the ACPI specification. 8103However, 8104a CopyObject to all other object types should not perform an implicit 8105conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 8106 8107Fixed a problem with the AcpiGetDevices interface where the mechanism to 8108match device CIDs did not examine the entire list of available CIDs, but 8109instead aborted on the first non-matching CID. Andrew Patterson. 8110 8111Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 8112was 8113inadvertently changed to return a 16-bit value instead of a 32-bit value, 8114truncating the upper dword of a 64-bit value. This macro is only used to 8115display debug output, so no incorrect calculations were made. Also, 8116reimplemented the macro so that a 64-bit shift is not performed by 8117inefficient compilers. 8118 8119Added missing va_end statements that should correspond with each va_start 8120statement. 8121 8122Example Code and Data Size: These are the sizes for the OS-independent 8123acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8124debug version of the code includes the debug output trace mechanism and 8125has 8126a much larger code and data size. 8127 8128 Previous Release: 8129 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 8130 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 8131 Current Release: 8132 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 8133 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 8134 81352) iASL Compiler/Disassembler and Tools: 8136 8137Implemented full disassembler support for the following new ACPI tables: 8138BERT, EINJ, and ERST. Implemented partial disassembler support for the 8139complicated HEST table. These tables support the Windows Hardware Error 8140Architecture (WHEA). 8141 8142---------------------------------------- 814323 January 2008. Summary of changes for version 20080123: 8144 81451) ACPI CA Core Subsystem: 8146 8147Added the 2008 copyright to all module headers and signons. This affects 8148virtually every file in the ACPICA core subsystem, the iASL compiler, and 8149the tools/utilities. 8150 8151Fixed a problem with the SizeOf operator when used with Package and 8152Buffer 8153objects. These objects have deferred execution for some arguments, and 8154the 8155execution is now completed before the SizeOf is executed. This problem 8156caused 8157unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 8158BZ 81599558 8160 8161Implemented an enhancement to the interpreter "slack mode". In the 8162absence 8163of 8164an explicit return or an implicitly returned object from the last 8165executed 8166opcode, a control method will now implicitly return an integer of value 0 8167for 8168Microsoft compatibility. (Lin Ming) BZ 392 8169 8170Fixed a problem with the Load operator where an exception was not 8171returned 8172in 8173the case where the table is already loaded. (Lin Ming) BZ 463 8174 8175Implemented support for the use of DDBHandles as an Indexed Reference, as 8176per 8177the ACPI spec. (Lin Ming) BZ 486 8178 8179Implemented support for UserTerm (Method invocation) for the Unload 8180operator 8181as per the ACPI spec. (Lin Ming) BZ 580 8182 8183Fixed a problem with the LoadTable operator where the OemId and 8184OemTableId 8185input strings could cause unexpected failures if they were shorter than 8186the 8187maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 8188 8189Implemented support for UserTerm (Method invocation) for the Unload 8190operator 8191as per the ACPI spec. (Lin Ming) BZ 580 8192 8193Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 8194HEST, 8195IBFT, UEFI, WDAT. Disassembler support is forthcoming. 8196 8197Example Code and Data Size: These are the sizes for the OS-independent 8198acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8199debug version of the code includes the debug output trace mechanism and 8200has 8201a much larger code and data size. 8202 8203 Previous Release: 8204 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 8205 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 8206 Current Release: 8207 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 8208 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 8209 82102) iASL Compiler/Disassembler and Tools: 8211 8212Implemented support in the disassembler for checksum validation on 8213incoming 8214binary DSDTs and SSDTs. If incorrect, a message is displayed within the 8215table 8216header dump at the start of the disassembly. 8217 8218Implemented additional debugging information in the namespace listing 8219file 8220created during compilation. In addition to the namespace hierarchy, the 8221full 8222pathname to each namespace object is displayed. 8223 8224Fixed a problem with the disassembler where invalid ACPI tables could 8225cause 8226faults or infinite loops. 8227 8228Fixed an unexpected parse error when using the optional "parameter types" 8229list in a control method declaration. (Lin Ming) BZ 397 8230 8231Fixed a problem where two External declarations with the same name did 8232not 8233cause an error (Lin Ming) BZ 509 8234 8235Implemented support for full TermArgs (adding Argx, Localx and method 8236invocation) for the ParameterData parameter to the LoadTable operator. 8237(Lin 8238Ming) BZ 583,587 8239 8240---------------------------------------- 824119 December 2007. Summary of changes for version 20071219: 8242 82431) ACPI CA Core Subsystem: 8244 8245Implemented full support for deferred execution for the TermArg string 8246arguments for DataTableRegion. This enables forward references and full 8247operand resolution for the three string arguments. Similar to 8248OperationRegion 8249deferred argument execution.) Lin Ming. BZ 430 8250 8251Implemented full argument resolution support for the BankValue argument 8252to 8253BankField. Previously, only constants were supported, now any TermArg may 8254be 8255used. Lin Ming BZ 387, 393 8256 8257Fixed a problem with AcpiGetDevices where the search of a branch of the 8258device tree could be terminated prematurely. In accordance with the ACPI 8259specification, the search down the current branch is terminated if a 8260device 8261is both not present and not functional (instead of just not present.) 8262Yakui 8263Zhao. 8264 8265Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 8266if 8267the underlying AML code changed the GPE enable registers. Now, any 8268unknown 8269incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 8270disabled 8271instead of simply ignored. Rui Zhang. 8272 8273Fixed a problem with Index Fields where the Index register was 8274incorrectly 8275limited to a maximum of 32 bits. Now any size may be used. 8276 8277Fixed a couple memory leaks associated with "implicit return" objects 8278when 8279the AML Interpreter slack mode is enabled. Lin Ming BZ 349 8280 8281Example Code and Data Size: These are the sizes for the OS-independent 8282acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8283debug version of the code includes the debug output trace mechanism and 8284has 8285a much larger code and data size. 8286 8287 Previous Release: 8288 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 8289 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 8290 Current Release: 8291 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 8292 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 8293 8294---------------------------------------- 829514 November 2007. Summary of changes for version 20071114: 8296 82971) ACPI CA Core Subsystem: 8298 8299Implemented event counters for each of the Fixed Events, the ACPI SCI 8300(interrupt) itself, and control methods executed. Named 8301AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 8302These 8303should be useful for debugging and statistics. 8304 8305Implemented a new external interface, AcpiGetStatistics, to retrieve the 8306contents of the various event counters. Returns the current values for 8307AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 8308AcpiMethodCount. The interface can be expanded in the future if new 8309counters 8310are added. Device drivers should use this interface rather than access 8311the 8312counters directly. 8313 8314Fixed a problem with the FromBCD and ToBCD operators. With some 8315compilers, 8316the ShortDivide function worked incorrectly, causing problems with the 8317BCD 8318functions with large input values. A truncation from 64-bit to 32-bit 8319inadvertently occurred. Internal BZ 435. Lin Ming 8320 8321Fixed a problem with Index references passed as method arguments. 8322References 8323passed as arguments to control methods were dereferenced immediately 8324(before 8325control was passed to the called method). The references are now 8326correctly 8327passed directly to the called method. BZ 5389. Lin Ming 8328 8329Fixed a problem with CopyObject used in conjunction with the Index 8330operator. 8331The reference was incorrectly dereferenced before the copy. The reference 8332is 8333now correctly copied. BZ 5391. Lin Ming 8334 8335Fixed a problem with Control Method references within Package objects. 8336These 8337references are now correctly generated. This completes the package 8338construction overhaul that began in version 20071019. 8339 8340Example Code and Data Size: These are the sizes for the OS-independent 8341acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8342debug version of the code includes the debug output trace mechanism and 8343has 8344a much larger code and data size. 8345 8346 Previous Release: 8347 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 8348 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 8349 Current Release: 8350 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 8351 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 8352 8353 83542) iASL Compiler/Disassembler and Tools: 8355 8356The AcpiExec utility now installs handlers for all of the predefined 8357Operation Region types. New types supported are: PCI_Config, CMOS, and 8358PCIBARTarget. 8359 8360Fixed a problem with the 64-bit version of AcpiExec where the extended 8361(64- 8362bit) address fields for the DSDT and FACS within the FADT were not being 8363used, causing truncation of the upper 32-bits of these addresses. Lin 8364Ming 8365and Bob Moore 8366 8367---------------------------------------- 836819 October 2007. Summary of changes for version 20071019: 8369 83701) ACPI CA Core Subsystem: 8371 8372Fixed a problem with the Alias operator when the target of the alias is a 8373named ASL operator that opens a new scope -- Scope, Device, 8374PowerResource, 8375Processor, and ThermalZone. In these cases, any children of the original 8376operator could not be accessed via the alias, potentially causing 8377unexpected 8378AE_NOT_FOUND exceptions. (BZ 9067) 8379 8380Fixed a problem with the Package operator where all named references were 8381created as object references and left otherwise unresolved. According to 8382the 8383ACPI specification, a Package can only contain Data Objects or references 8384to 8385control methods. The implication is that named references to Data Objects 8386(Integer, Buffer, String, Package, BufferField, Field) should be resolved 8387immediately upon package creation. This is the approach taken with this 8388change. References to all other named objects (Methods, Devices, Scopes, 8389etc.) are all now properly created as reference objects. (BZ 5328) 8390 8391Reverted a change to Notify handling that was introduced in version 839220070508. This version changed the Notify handling from asynchronous to 8393fully synchronous (Device driver Notify handling with respect to the 8394Notify 8395ASL operator). It was found that this change caused more problems than it 8396solved and was removed by most users. 8397 8398Fixed a problem with the Increment and Decrement operators where the type 8399of 8400the target object could be unexpectedly and incorrectly changed. (BZ 353) 8401Lin Ming. 8402 8403Fixed a problem with the Load and LoadTable operators where the table 8404location within the namespace was ignored. Instead, the table was always 8405loaded into the root or current scope. Lin Ming. 8406 8407Fixed a problem with the Load operator when loading a table from a buffer 8408object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 8409 8410Fixed a problem with the Debug object where a store of a DdbHandle 8411reference 8412object to the Debug object could cause a fault. 8413 8414Added a table checksum verification for the Load operator, in the case 8415where 8416the load is from a buffer. (BZ 578). 8417 8418Implemented additional parameter validation for the LoadTable operator. 8419The 8420length of the input strings SignatureString, OemIdString, and OemTableId 8421are 8422now checked for maximum lengths. (BZ 582) Lin Ming. 8423 8424Example Code and Data Size: These are the sizes for the OS-independent 8425acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8426debug version of the code includes the debug output trace mechanism and 8427has 8428a much larger code and data size. 8429 8430 Previous Release: 8431 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 8432 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 8433 Current Release: 8434 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 8435 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 8436 8437 84382) iASL Compiler/Disassembler: 8439 8440Fixed a problem where if a single file was specified and the file did not 8441exist, no error message was emitted. (Introduced with wildcard support in 8442version 20070917.) 8443 8444---------------------------------------- 844519 September 2007. Summary of changes for version 20070919: 8446 84471) ACPI CA Core Subsystem: 8448 8449Designed and implemented new external interfaces to install and remove 8450handlers for ACPI table-related events. Current events that are defined 8451are 8452LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 8453they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 8454AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 8455 8456Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 8457(acpi_serialized option on Linux) could cause some systems to hang during 8458initialization. (Bob Moore) BZ 8171 8459 8460Fixed a problem where objects of certain types (Device, ThermalZone, 8461Processor, PowerResource) can be not found if they are declared and 8462referenced from within the same control method (Lin Ming) BZ 341 8463 8464Example Code and Data Size: These are the sizes for the OS-independent 8465acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8466debug version of the code includes the debug output trace mechanism and 8467has 8468a much larger code and data size. 8469 8470 Previous Release: 8471 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 8472 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 8473 Current Release: 8474 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 8475 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 8476 8477 84782) iASL Compiler/Disassembler: 8479 8480Implemented support to allow multiple files to be compiled/disassembled 8481in 8482a 8483single invocation. This includes command line wildcard support for both 8484the 8485Windows and Unix versions of the compiler. This feature simplifies the 8486disassembly and compilation of multiple ACPI tables in a single 8487directory. 8488 8489---------------------------------------- 849008 May 2007. Summary of changes for version 20070508: 8491 84921) ACPI CA Core Subsystem: 8493 8494Implemented a Microsoft compatibility design change for the handling of 8495the 8496Notify AML operator. Previously, notify handlers were dispatched and 8497executed completely asynchronously in a deferred thread. The new design 8498still executes the notify handlers in a different thread, but the 8499original 8500thread that executed the Notify() now waits at a synchronization point 8501for 8502the notify handler to complete. Some machines depend on a synchronous 8503Notify 8504operator in order to operate correctly. 8505 8506Implemented support to allow Package objects to be passed as method 8507arguments to the external AcpiEvaluateObject interface. Previously, this 8508would return the AE_NOT_IMPLEMENTED exception. This feature had not been 8509implemented since there were no reserved control methods that required it 8510until recently. 8511 8512Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 8513that 8514contained invalid non-zero values in reserved fields could cause later 8515failures because these fields have meaning in later revisions of the 8516FADT. 8517For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 8518fields 8519are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 8520 8521Fixed a problem where the Global Lock handle was not properly updated if 8522a 8523thread that acquired the Global Lock via executing AML code then 8524attempted 8525to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 8526Joe 8527Liu. 8528 8529Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 8530could be corrupted if the interrupt being removed was at the head of the 8531list. Reported by Linn Crosetto. 8532 8533Example Code and Data Size: These are the sizes for the OS-independent 8534acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8535debug version of the code includes the debug output trace mechanism and 8536has 8537a much larger code and data size. 8538 8539 Previous Release: 8540 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8541 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 8542 Current Release: 8543 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 8544 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 8545 8546---------------------------------------- 854720 March 2007. Summary of changes for version 20070320: 8548 85491) ACPI CA Core Subsystem: 8550 8551Implemented a change to the order of interpretation and evaluation of AML 8552operand objects within the AML interpreter. The interpreter now evaluates 8553operands in the order that they appear in the AML stream (and the 8554corresponding ASL code), instead of in the reverse order (after the 8555entire 8556operand list has been parsed). The previous behavior caused several 8557subtle 8558incompatibilities with the Microsoft AML interpreter as well as being 8559somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 8560 8561Implemented a change to the ACPI Global Lock support. All interfaces to 8562the 8563global lock now allow the same thread to acquire the lock multiple times. 8564This affects the AcpiAcquireGlobalLock external interface to the global 8565lock 8566as well as the internal use of the global lock to support AML fields -- a 8567control method that is holding the global lock can now simultaneously 8568access 8569AML fields that require global lock protection. Previously, in both 8570cases, 8571this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 8572to 8573AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 8574Controller. There is no change to the behavior of the AML Acquire 8575operator, 8576as this can already be used to acquire a mutex multiple times by the same 8577thread. BZ 8066. With assistance from Alexey Starikovskiy. 8578 8579Fixed a problem where invalid objects could be referenced in the AML 8580Interpreter after error conditions. During operand evaluation, ensure 8581that 8582the internal "Return Object" field is cleared on error and only valid 8583pointers are stored there. Caused occasional access to deleted objects 8584that 8585resulted in "large reference count" warning messages. Valery Podrezov. 8586 8587Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 8588on 8589deeply nested control method invocations. BZ 7873, local BZ 487. Valery 8590Podrezov. 8591 8592Fixed an internal problem with the handling of result objects on the 8593interpreter result stack. BZ 7872. Valery Podrezov. 8594 8595Removed obsolete code that handled the case where AML_NAME_OP is the 8596target 8597of a reference (Reference.Opcode). This code was no longer necessary. BZ 85987874. Valery Podrezov. 8599 8600Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 8601was 8602a 8603remnant from the previously discontinued 16-bit support. 8604 8605Example Code and Data Size: These are the sizes for the OS-independent 8606acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8607debug version of the code includes the debug output trace mechanism and 8608has 8609a much larger code and data size. 8610 8611 Previous Release: 8612 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8613 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8614 Current Release: 8615 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8616 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 8617 8618---------------------------------------- 861926 January 2007. Summary of changes for version 20070126: 8620 86211) ACPI CA Core Subsystem: 8622 8623Added the 2007 copyright to all module headers and signons. This affects 8624virtually every file in the ACPICA core subsystem, the iASL compiler, and 8625the utilities. 8626 8627Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 8628during a table load. A bad pointer was passed in the case where the DSDT 8629is 8630overridden, causing a fault in this case. 8631 8632Example Code and Data Size: These are the sizes for the OS-independent 8633acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8634debug version of the code includes the debug output trace mechanism and 8635has 8636a much larger code and data size. 8637 8638 Previous Release: 8639 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8640 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8641 Current Release: 8642 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8643 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8644 8645---------------------------------------- 864615 December 2006. Summary of changes for version 20061215: 8647 86481) ACPI CA Core Subsystem: 8649 8650Support for 16-bit ACPICA has been completely removed since it is no 8651longer 8652necessary and it clutters the code. All 16-bit macros, types, and 8653conditional compiles have been removed, cleaning up and simplifying the 8654code 8655across the entire subsystem. DOS support is no longer needed since the 8656bootable Linux firmware kit is now available. 8657 8658The handler for the Global Lock is now removed during AcpiTerminate to 8659enable a clean subsystem restart, via the implementation of the 8660AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 8661HP) 8662 8663Implemented enhancements to the multithreading support within the 8664debugger 8665to enable improved multithreading debugging and evaluation of the 8666subsystem. 8667(Valery Podrezov) 8668 8669Debugger: Enhanced the Statistics/Memory command to emit the total 8670(maximum) 8671memory used during the execution, as well as the maximum memory consumed 8672by 8673each of the various object types. (Valery Podrezov) 8674 8675Example Code and Data Size: These are the sizes for the OS-independent 8676acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8677debug version of the code includes the debug output trace mechanism and 8678has 8679a much larger code and data size. 8680 8681 Previous Release: 8682 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 8683 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 8684 Current Release: 8685 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8686 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8687 8688 86892) iASL Compiler/Disassembler and Tools: 8690 8691AcpiExec: Implemented a new option (-m) to display full memory use 8692statistics upon subsystem/program termination. (Valery Podrezov) 8693 8694---------------------------------------- 869509 November 2006. Summary of changes for version 20061109: 8696 86971) ACPI CA Core Subsystem: 8698 8699Optimized the Load ASL operator in the case where the source operand is 8700an 8701operation region. Simply map the operation region memory, instead of 8702performing a bytewise read. (Region must be of type SystemMemory, see 8703below.) 8704 8705Fixed the Load ASL operator for the case where the source operand is a 8706region field. A buffer object is also allowed as the source operand. BZ 8707480 8708 8709Fixed a problem where the Load ASL operator allowed the source operand to 8710be 8711an operation region of any type. It is now restricted to regions of type 8712SystemMemory, as per the ACPI specification. BZ 481 8713 8714Additional cleanup and optimizations for the new Table Manager code. 8715 8716AcpiEnable will now fail if all of the required ACPI tables are not 8717loaded 8718(FADT, FACS, DSDT). BZ 477 8719 8720Added #pragma pack(8/4) to acobject.h to ensure that the structures in 8721this 8722header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 8723manually optimized to be aligned and will not work if it is byte-packed. 8724 8725Example Code and Data Size: These are the sizes for the OS-independent 8726acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8727debug version of the code includes the debug output trace mechanism and 8728has 8729a much larger code and data size. 8730 8731 Previous Release: 8732 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 8733 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 8734 Current Release: 8735 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 8736 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 8737 8738 87392) iASL Compiler/Disassembler and Tools: 8740 8741Fixed a problem where the presence of the _OSI predefined control method 8742within complex expressions could cause an internal compiler error. 8743 8744AcpiExec: Implemented full region support for multiple address spaces. 8745SpaceId is now part of the REGION object. BZ 429 8746 8747---------------------------------------- 874811 October 2006. Summary of changes for version 20061011: 8749 87501) ACPI CA Core Subsystem: 8751 8752Completed an AML interpreter performance enhancement for control method 8753execution. Previously a 2-pass parse/execution, control methods are now 8754completely parsed and executed in a single pass. This improves overall 8755interpreter performance by ~25%, reduces code size, and reduces CPU stack 8756use. (Valery Podrezov + interpreter changes in version 20051202 that 8757eliminated namespace loading during the pass one parse.) 8758 8759Implemented _CID support for PCI Root Bridge detection. If the _HID does 8760not 8761match the predefined PCI Root Bridge IDs, the _CID list (if present) is 8762now 8763obtained and also checked for an ID match. 8764 8765Implemented additional support for the PCI _ADR execution: upsearch until 8766a 8767device scope is found before executing _ADR. This allows PCI_Config 8768operation regions to be declared locally within control methods 8769underneath 8770PCI device objects. 8771 8772Fixed a problem with a possible race condition between threads executing 8773AcpiWalkNamespace and the AML interpreter. This condition was removed by 8774modifying AcpiWalkNamespace to (by default) ignore all temporary 8775namespace 8776entries created during any concurrent control method execution. An 8777additional namespace race condition is known to exist between 8778AcpiWalkNamespace and the Load/Unload ASL operators and is still under 8779investigation. 8780 8781Restructured the AML ParseLoop function, breaking it into several 8782subfunctions in order to reduce CPU stack use and improve 8783maintainability. 8784(Mikhail Kouzmich) 8785 8786AcpiGetHandle: Fix for parameter validation to detect invalid 8787combinations 8788of prefix handle and pathname. BZ 478 8789 8790Example Code and Data Size: These are the sizes for the OS-independent 8791acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8792debug version of the code includes the debug output trace mechanism and 8793has 8794a much larger code and data size. 8795 8796 Previous Release: 8797 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8798 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 8799 Current Release: 8800 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 8801 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 8802 88032) iASL Compiler/Disassembler and Tools: 8804 8805Ported the -g option (get local ACPI tables) to the new ACPICA Table 8806Manager 8807to restore original behavior. 8808 8809---------------------------------------- 881027 September 2006. Summary of changes for version 20060927: 8811 88121) ACPI CA Core Subsystem: 8813 8814Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 8815These functions now use a spinlock for mutual exclusion and the interrupt 8816level indication flag is not needed. 8817 8818Fixed a problem with the Global Lock where the lock could appear to be 8819obtained before it is actually obtained. The global lock semaphore was 8820inadvertently created with one unit instead of zero units. (BZ 464) 8821Fiodor 8822Suietov. 8823 8824Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 8825during 8826a read from a buffer or region field. (BZ 458) Fiodor Suietov. 8827 8828Example Code and Data Size: These are the sizes for the OS-independent 8829acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8830debug version of the code includes the debug output trace mechanism and 8831has 8832a much larger code and data size. 8833 8834 Previous Release: 8835 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8836 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 8837 Current Release: 8838 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8839 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 8840 8841 88422) iASL Compiler/Disassembler and Tools: 8843 8844Fixed a compilation problem with the pre-defined Resource Descriptor 8845field 8846names where an "object does not exist" error could be incorrectly 8847generated 8848if the parent ResourceTemplate pathname places the template within a 8849different namespace scope than the current scope. (BZ 7212) 8850 8851Fixed a problem where the compiler could hang after syntax errors 8852detected 8853in an ElseIf construct. (BZ 453) 8854 8855Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 8856operator. An incorrect output filename was produced when this parameter 8857was 8858a null string (""). Now, the original input filename is used as the AML 8859output filename, with an ".aml" extension. 8860 8861Implemented a generic batch command mode for the AcpiExec utility 8862(execute 8863any AML debugger command) (Valery Podrezov). 8864 8865---------------------------------------- 886612 September 2006. Summary of changes for version 20060912: 8867 88681) ACPI CA Core Subsystem: 8869 8870Enhanced the implementation of the "serialized mode" of the interpreter 8871(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 8872specified, instead of creating a serialization semaphore per control 8873method, 8874the interpreter lock is simply no longer released before a blocking 8875operation during control method execution. This effectively makes the AML 8876Interpreter single-threaded. The overhead of a semaphore per-method is 8877eliminated. 8878 8879Fixed a regression where an error was no longer emitted if a control 8880method 8881attempts to create 2 objects of the same name. This once again returns 8882AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 8883that 8884will dynamically serialize the control method to possible prevent future 8885errors. (BZ 440) 8886 8887Integrated a fix for a problem with PCI Express HID detection in the PCI 8888Config Space setup procedure. (BZ 7145) 8889 8890Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 8891AcpiHwInitialize function - the FADT registers are now validated when the 8892table is loaded. 8893 8894Added two new warnings during FADT verification - 1) if the FADT is 8895larger 8896than the largest known FADT version, and 2) if there is a mismatch 8897between 8898a 889932-bit block address and the 64-bit X counterpart (when both are non- 8900zero.) 8901 8902Example Code and Data Size: These are the sizes for the OS-independent 8903acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8904debug version of the code includes the debug output trace mechanism and 8905has 8906a much larger code and data size. 8907 8908 Previous Release: 8909 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 8910 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 8911 Current Release: 8912 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8913 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 8914 8915 89162) iASL Compiler/Disassembler and Tools: 8917 8918Fixed a problem with the implementation of the Switch() operator where 8919the 8920temporary variable was declared too close to the actual Switch, instead 8921of 8922at method level. This could cause a problem if the Switch() operator is 8923within a while loop, causing an error on the second iteration. (BZ 460) 8924 8925Disassembler - fix for error emitted for unknown type for target of scope 8926operator. Now, ignore it and continue. 8927 8928Disassembly of an FADT now verifies the input FADT and reports any errors 8929found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 8930 8931Disassembly of raw data buffers with byte initialization data now 8932prefixes 8933each output line with the current buffer offset. 8934 8935Disassembly of ASF! table now includes all variable-length data fields at 8936the end of some of the subtables. 8937 8938The disassembler now emits a comment if a buffer appears to be a 8939ResourceTemplate, but cannot be disassembled as such because the EndTag 8940does 8941not appear at the very end of the buffer. 8942 8943AcpiExec - Added the "-t" command line option to enable the serialized 8944mode 8945of the AML interpreter. 8946 8947---------------------------------------- 894831 August 2006. Summary of changes for version 20060831: 8949 89501) ACPI CA Core Subsystem: 8951 8952Miscellaneous fixes for the Table Manager: 8953- Correctly initialize internal common FADT for all 64-bit "X" fields 8954- Fixed a couple table mapping issues during table load 8955- Fixed a couple alignment issues for IA64 8956- Initialize input array to zero in AcpiInitializeTables 8957- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 8958AcpiGetTableByIndex 8959 8960Change for GPE support: when a "wake" GPE is received, all wake GPEs are 8961now 8962immediately disabled to prevent the waking GPE from firing again and to 8963prevent other wake GPEs from interrupting the wake process. 8964 8965Added the AcpiGpeCount global that tracks the number of processed GPEs, 8966to 8967be used for debugging systems with a large number of ACPI interrupts. 8968 8969Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 8970both the ACPICA headers and the disassembler. 8971 8972Example Code and Data Size: These are the sizes for the OS-independent 8973acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8974debug version of the code includes the debug output trace mechanism and 8975has 8976a much larger code and data size. 8977 8978 Previous Release: 8979 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 8980 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 8981 Current Release: 8982 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 8983 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 8984 8985 89862) iASL Compiler/Disassembler and Tools: 8987 8988Disassembler support for the DMAR ACPI table. 8989 8990---------------------------------------- 899123 August 2006. Summary of changes for version 20060823: 8992 89931) ACPI CA Core Subsystem: 8994 8995The Table Manager component has been completely redesigned and 8996reimplemented. The new design is much simpler, and reduces the overall 8997code 8998and data size of the kernel-resident ACPICA by approximately 5%. Also, it 8999is 9000now possible to obtain the ACPI tables very early during kernel 9001initialization, even before dynamic memory management is initialized. 9002(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 9003 9004Obsolete ACPICA interfaces: 9005 9006- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 9007init 9008time). 9009- AcpiLoadTable: Not needed. 9010- AcpiUnloadTable: Not needed. 9011 9012New ACPICA interfaces: 9013 9014- AcpiInitializeTables: Must be called before the table manager can be 9015used. 9016- AcpiReallocateRootTable: Used to transfer the root table to dynamically 9017allocated memory after it becomes available. 9018- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 9019tables 9020in the RSDT/XSDT. 9021 9022Other ACPICA changes: 9023 9024- AcpiGetTableHeader returns the actual mapped table header, not a copy. 9025Use 9026AcpiOsUnmapMemory to free this mapping. 9027- AcpiGetTable returns the actual mapped table. The mapping is managed 9028internally and must not be deleted by the caller. Use of this interface 9029causes no additional dynamic memory allocation. 9030- AcpiFindRootPointer: Support for physical addressing has been 9031eliminated, 9032it appeared to be unused. 9033- The interface to AcpiOsMapMemory has changed to be consistent with the 9034other allocation interfaces. 9035- The interface to AcpiOsGetRootPointer has changed to eliminate 9036unnecessary 9037parameters. 9038- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 903964- 9040bit platforms. Was previously 64 bits on all platforms. 9041- The interface to the ACPI Global Lock acquire/release macros have 9042changed 9043slightly since ACPICA no longer keeps a local copy of the FACS with a 9044constructed pointer to the actual global lock. 9045 9046Porting to the new table manager: 9047 9048- AcpiInitializeTables: Must be called once, and can be called anytime 9049during the OS initialization process. It allows the host to specify an 9050area 9051of memory to be used to store the internal version of the RSDT/XSDT (root 9052table). This allows the host to access ACPI tables before memory 9053management 9054is initialized and running. 9055- AcpiReallocateRootTable: Can be called after memory management is 9056running 9057to copy the root table to a dynamically allocated array, freeing up the 9058scratch memory specified in the call to AcpiInitializeTables. 9059- AcpiSubsystemInitialize: This existing interface is independent of the 9060Table Manager, and does not have to be called before the Table Manager 9061can 9062be used, it only must be called before the rest of ACPICA can be used. 9063- ACPI Tables: Some changes have been made to the names and structure of 9064the 9065actbl.h and actbl1.h header files and may require changes to existing 9066code. 9067For example, bitfields have been completely removed because of their lack 9068of 9069portability across C compilers. 9070- Update interfaces to the Global Lock acquire/release macros if local 9071versions are used. (see acwin.h) 9072 9073Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 9074 9075New files: tbfind.c 9076 9077Example Code and Data Size: These are the sizes for the OS-independent 9078acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9079debug version of the code includes the debug output trace mechanism and 9080has 9081a much larger code and data size. 9082 9083 Previous Release: 9084 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 9085 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 9086 Current Release: 9087 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 9088 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 9089 9090 90912) iASL Compiler/Disassembler and Tools: 9092 9093No changes for this release. 9094 9095---------------------------------------- 909621 July 2006. Summary of changes for version 20060721: 9097 90981) ACPI CA Core Subsystem: 9099 9100The full source code for the ASL test suite used to validate the iASL 9101compiler and the ACPICA core subsystem is being released with the ACPICA 9102source for the first time. The source is contained in a separate package 9103and 9104consists of over 1100 files that exercise all ASL/AML operators. The 9105package 9106should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 9107Fiodor 9108Suietov) 9109 9110Completed a new design and implementation for support of the ACPI Global 9111Lock. On the OS side, the global lock is now treated as a standard AML 9112mutex. Previously, multiple OS threads could "acquire" the global lock 9113simultaneously. However, this could cause the BIOS to be starved out of 9114the 9115lock - especially in cases such as the Embedded Controller driver where 9116there is a tight coupling between the OS and the BIOS. 9117 9118Implemented an optimization for the ACPI Global Lock interrupt mechanism. 9119The Global Lock interrupt handler no longer queues the execution of a 9120separate thread to signal the global lock semaphore. Instead, the 9121semaphore 9122is signaled directly from the interrupt handler. 9123 9124Implemented support within the AML interpreter for package objects that 9125contain a larger AML length (package list length) than the package 9126element 9127count. In this case, the length of the package is truncated to match the 9128package element count. Some BIOS code apparently modifies the package 9129length 9130on the fly, and this change supports this behavior. Provides 9131compatibility 9132with the MS AML interpreter. (With assistance from Fiodor Suietov) 9133 9134Implemented a temporary fix for the BankValue parameter of a Bank Field 9135to 9136support all constant values, now including the Zero and One opcodes. 9137Evaluation of this parameter must eventually be converted to a full 9138TermArg 9139evaluation. A not-implemented error is now returned (temporarily) for 9140non- 9141constant values for this parameter. 9142 9143Fixed problem reports (Fiodor Suietov) integrated: 9144- Fix for premature object deletion after CopyObject on Operation Region 9145(BZ 9146350) 9147 9148Example Code and Data Size: These are the sizes for the OS-independent 9149acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9150debug version of the code includes the debug output trace mechanism and 9151has 9152a much larger code and data size. 9153 9154 Previous Release: 9155 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 9156 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 9157 Current Release: 9158 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 9159 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 9160 9161 91622) iASL Compiler/Disassembler and Tools: 9163 9164No changes for this release. 9165 9166---------------------------------------- 916707 July 2006. Summary of changes for version 20060707: 9168 91691) ACPI CA Core Subsystem: 9170 9171Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 9172that do not allow the initialization of address pointers within packed 9173structures - even though the hardware itself may support misaligned 9174transfers. Some of the debug data structures are packed by default to 9175minimize size. 9176 9177Added an error message for the case where AcpiOsGetThreadId() returns 9178zero. 9179A non-zero value is required by the core ACPICA code to ensure the proper 9180operation of AML mutexes and recursive control methods. 9181 9182The DSDT is now the only ACPI table that determines whether the AML 9183interpreter is in 32-bit or 64-bit mode. Not really a functional change, 9184but 9185the hooks for per-table 32/64 switching have been removed from the code. 9186A 9187clarification to the ACPI specification is forthcoming in ACPI 3.0B. 9188 9189Fixed a possible leak of an OwnerID in the error path of 9190AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 9191deletion to a single place in AcpiTbUninstallTable to correct possible 9192leaks 9193when using the AcpiTbDeleteTablesByType interface (with assistance from 9194Lance Ortiz.) 9195 9196Fixed a problem with Serialized control methods where the semaphore 9197associated with the method could be over-signaled after multiple method 9198invocations. 9199 9200Fixed two issues with the locking of the internal namespace data 9201structure. 9202Both the Unload() operator and AcpiUnloadTable interface now lock the 9203namespace during the namespace deletion associated with the table unload 9204(with assistance from Linn Crosetto.) 9205 9206Fixed problem reports (Valery Podrezov) integrated: 9207- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 9208 9209Fixed problem reports (Fiodor Suietov) integrated: 9210- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 9211- On Address Space handler deletion, needless deactivation call (BZ 374) 9212- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 9213375) 9214- Possible memory leak, Notify sub-objects of Processor, Power, 9215ThermalZone 9216(BZ 376) 9217- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 9218- Minimum Length of RSDT should be validated (BZ 379) 9219- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 9220Handler (BZ (380) 9221- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 9222loaded 9223(BZ 381) 9224 9225Example Code and Data Size: These are the sizes for the OS-independent 9226acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9227debug version of the code includes the debug output trace mechanism and 9228has 9229a much larger code and data size. 9230 9231 Previous Release: 9232 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 9233 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 9234 Current Release: 9235 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 9236 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 9237 9238 92392) iASL Compiler/Disassembler and Tools: 9240 9241Fixed problem reports: 9242Compiler segfault when ASL contains a long (>1024) String declaration (BZ 9243436) 9244 9245---------------------------------------- 924623 June 2006. Summary of changes for version 20060623: 9247 92481) ACPI CA Core Subsystem: 9249 9250Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 9251allows the type to be customized to the host OS for improved efficiency 9252(since a spinlock is usually a very small object.) 9253 9254Implemented support for "ignored" bits in the ACPI registers. According 9255to 9256the ACPI specification, these bits should be preserved when writing the 9257registers via a read/modify/write cycle. There are 3 bits preserved in 9258this 9259manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 9260 9261Implemented the initial deployment of new OSL mutex interfaces. Since 9262some 9263host operating systems have separate mutex and semaphore objects, this 9264feature was requested. The base code now uses mutexes (and the new mutex 9265interfaces) wherever a binary semaphore was used previously. However, for 9266the current release, the mutex interfaces are defined as macros to map 9267them 9268to the existing semaphore interfaces. Therefore, no OSL changes are 9269required 9270at this time. (See acpiosxf.h) 9271 9272Fixed several problems with the support for the control method SyncLevel 9273parameter. The SyncLevel now works according to the ACPI specification 9274and 9275in concert with the Mutex SyncLevel parameter, since the current 9276SyncLevel 9277is a property of the executing thread. Mutual exclusion for control 9278methods 9279is now implemented with a mutex instead of a semaphore. 9280 9281Fixed three instances of the use of the C shift operator in the bitfield 9282support code (exfldio.c) to avoid the use of a shift value larger than 9283the 9284target data width. The behavior of C compilers is undefined in this case 9285and 9286can cause unpredictable results, and therefore the case must be detected 9287and 9288avoided. (Fiodor Suietov) 9289 9290Added an info message whenever an SSDT or OEM table is loaded dynamically 9291via the Load() or LoadTable() ASL operators. This should improve 9292debugging 9293capability since it will show exactly what tables have been loaded 9294(beyond 9295the tables present in the RSDT/XSDT.) 9296 9297Example Code and Data Size: These are the sizes for the OS-independent 9298acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9299debug version of the code includes the debug output trace mechanism and 9300has 9301a much larger code and data size. 9302 9303 Previous Release: 9304 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 9305 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 9306 Current Release: 9307 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 9308 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 9309 9310 93112) iASL Compiler/Disassembler and Tools: 9312 9313No changes for this release. 9314 9315---------------------------------------- 931608 June 2006. Summary of changes for version 20060608: 9317 93181) ACPI CA Core Subsystem: 9319 9320Converted the locking mutex used for the ACPI hardware to a spinlock. 9321This 9322change should eliminate all problems caused by attempting to acquire a 9323semaphore at interrupt level, and it means that all ACPICA external 9324interfaces that directly access the ACPI hardware can be safely called 9325from 9326interrupt level. OSL code that implements the semaphore interfaces should 9327be 9328able to eliminate any workarounds for being called at interrupt level. 9329 9330Fixed a regression introduced in 20060526 where the ACPI device 9331initialization could be prematurely aborted with an AE_NOT_FOUND if a 9332device 9333did not have an optional _INI method. 9334 9335Fixed an IndexField issue where a write to the Data Register should be 9336limited in size to the AccessSize (width) of the IndexField itself. (BZ 9337433, 9338Fiodor Suietov) 9339 9340Fixed problem reports (Valery Podrezov) integrated: 9341- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 9342 9343Fixed problem reports (Fiodor Suietov) integrated: 9344- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 9345 9346Removed four global mutexes that were obsolete and were no longer being 9347used. 9348 9349Example Code and Data Size: These are the sizes for the OS-independent 9350acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9351debug version of the code includes the debug output trace mechanism and 9352has 9353a much larger code and data size. 9354 9355 Previous Release: 9356 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 9357 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 9358 Current Release: 9359 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 9360 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 9361 9362 93632) iASL Compiler/Disassembler and Tools: 9364 9365Fixed a fault when using -g option (get tables from registry) on Windows 9366machines. 9367 9368Fixed problem reports integrated: 9369- Generate error if CreateField NumBits parameter is zero. (BZ 405) 9370- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 9371Suietov) 9372- Global table revision override (-r) is ignored (BZ 413) 9373 9374---------------------------------------- 937526 May 2006. Summary of changes for version 20060526: 9376 93771) ACPI CA Core Subsystem: 9378 9379Restructured, flattened, and simplified the internal interfaces for 9380namespace object evaluation - resulting in smaller code, less CPU stack 9381use, 9382and fewer interfaces. (With assistance from Mikhail Kouzmich) 9383 9384Fixed a problem with the CopyObject operator where the first parameter 9385was 9386not typed correctly for the parser, interpreter, compiler, and 9387disassembler. 9388Caused various errors and unexpected behavior. 9389 9390Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 9391produced incorrect results with some C compilers. Since the behavior of C 9392compilers when the shift value is larger than the datatype width is 9393apparently not well defined, the interpreter now detects this condition 9394and 9395simply returns zero as expected in all such cases. (BZ 395) 9396 9397Fixed problem reports (Valery Podrezov) integrated: 9398- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 9399- Allow interpreter to handle nested method declarations (BZ 5361) 9400 9401Fixed problem reports (Fiodor Suietov) integrated: 9402- AcpiTerminate doesn't free debug memory allocation list objects (BZ 9403355) 9404- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 9405356) 9406- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 9407- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 9408- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 9409- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 9410- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 9411- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 9412- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 9413365) 9414- Status of the Global Initialization Handler call not used (BZ 366) 9415- Incorrect object parameter to Global Initialization Handler (BZ 367) 9416 9417Example Code and Data Size: These are the sizes for the OS-independent 9418acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9419debug version of the code includes the debug output trace mechanism and 9420has 9421a much larger code and data size. 9422 9423 Previous Release: 9424 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 9425 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 9426 Current Release: 9427 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 9428 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 9429 9430 94312) iASL Compiler/Disassembler and Tools: 9432 9433Modified the parser to allow the names IO, DMA, and IRQ to be used as 9434namespace identifiers with no collision with existing resource descriptor 9435macro names. This provides compatibility with other ASL compilers and is 9436most useful for disassembly/recompilation of existing tables without 9437parse 9438errors. (With assistance from Thomas Renninger) 9439 9440Disassembler: fixed an incorrect disassembly problem with the 9441DataTableRegion and CopyObject operators. Fixed a possible fault during 9442disassembly of some Alias operators. 9443 9444---------------------------------------- 944512 May 2006. Summary of changes for version 20060512: 9446 94471) ACPI CA Core Subsystem: 9448 9449Replaced the AcpiOsQueueForExecution interface with a new interface named 9450AcpiOsExecute. The major difference is that the new interface does not 9451have 9452a Priority parameter, this appeared to be useless and has been replaced 9453by 9454a 9455Type parameter. The Type tells the host what type of execution is being 9456requested, such as global lock handler, notify handler, GPE handler, etc. 9457This allows the host to queue and execute the request as appropriate for 9458the 9459request type, possibly using different work queues and different 9460priorities 9461for the various request types. This enables fixes for multithreading 9462deadlock problems such as BZ #5534, and will require changes to all 9463existing 9464OS interface layers. (Alexey Starikovskiy and Bob Moore) 9465 9466Fixed a possible memory leak associated with the support for the so- 9467called 9468"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 9469Suietov) 9470 9471Fixed a problem with the Load() operator where a table load from an 9472operation region could overwrite an internal table buffer by up to 7 9473bytes 9474and cause alignment faults on IPF systems. (With assistance from Luming 9475Yu) 9476 9477Example Code and Data Size: These are the sizes for the OS-independent 9478acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9479debug version of the code includes the debug output trace mechanism and 9480has 9481a much larger code and data size. 9482 9483 Previous Release: 9484 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 9485 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 9486 Current Release: 9487 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 9488 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 9489 9490 9491 94922) iASL Compiler/Disassembler and Tools: 9493 9494Disassembler: Implemented support to cross reference the internal 9495namespace 9496and automatically generate ASL External() statements for symbols not 9497defined 9498within the current table being disassembled. This will simplify the 9499disassembly and recompilation of interdependent tables such as SSDTs 9500since 9501these statements will no longer have to be added manually. 9502 9503Disassembler: Implemented experimental support to automatically detect 9504invocations of external control methods and generate appropriate 9505External() 9506statements. This is problematic because the AML cannot be correctly 9507parsed 9508until the number of arguments for each control method is known. 9509Currently, 9510standalone method invocations and invocations as the source operand of a 9511Store() statement are supported. 9512 9513Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 9514LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 9515LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 9516more readable and likely closer to the original ASL source. 9517 9518---------------------------------------- 951921 April 2006. Summary of changes for version 20060421: 9520 95211) ACPI CA Core Subsystem: 9522 9523Removed a device initialization optimization introduced in 20051216 where 9524the _STA method was not run unless an _INI was also present for the same 9525device. This optimization could cause problems because it could allow 9526_INI 9527methods to be run within a not-present device subtree. (If a not-present 9528device had no _INI, _STA would not be run, the not-present status would 9529not 9530be discovered, and the children of the device would be incorrectly 9531traversed.) 9532 9533Implemented a new _STA optimization where namespace subtrees that do not 9534contain _INI are identified and ignored during device initialization. 9535Selectively running _STA can significantly improve boot time on large 9536machines (with assistance from Len Brown.) 9537 9538Implemented support for the device initialization case where the returned 9539_STA flags indicate a device not-present but functioning. In this case, 9540_INI 9541is not run, but the device children are examined for presence, as per the 9542ACPI specification. 9543 9544Implemented an additional change to the IndexField support in order to 9545conform to MS behavior. The value written to the Index Register is not 9546simply a byte offset, it is a byte offset in units of the access width of 9547the parent Index Field. (Fiodor Suietov) 9548 9549Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 9550interface is called during the creation of all AML operation regions, and 9551allows the host OS to exert control over what addresses it will allow the 9552AML code to access. Operation Regions whose addresses are disallowed will 9553cause a runtime exception when they are actually accessed (will not 9554affect 9555or abort table loading.) See oswinxf or osunixxf for an example 9556implementation. 9557 9558Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 9559interface allows the host OS to match the various "optional" 9560interface/behavior strings for the _OSI predefined control method as 9561appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 9562for an example implementation. 9563 9564Restructured and corrected various problems in the exception handling 9565code 9566paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 9567(with assistance from Takayoshi Kochi.) 9568 9569Modified the Linux source converter to ignore quoted string literals 9570while 9571converting identifiers from mixed to lower case. This will correct 9572problems 9573with the disassembler and other areas where such strings must not be 9574modified. 9575 9576The ACPI_FUNCTION_* macros no longer require quotes around the function 9577name. This allows the Linux source converter to convert the names, now 9578that 9579the converter ignores quoted strings. 9580 9581Example Code and Data Size: These are the sizes for the OS-independent 9582acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9583debug version of the code includes the debug output trace mechanism and 9584has 9585a much larger code and data size. 9586 9587 Previous Release: 9588 9589 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 9590 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 9591 Current Release: 9592 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 9593 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 9594 9595 95962) iASL Compiler/Disassembler and Tools: 9597 9598Implemented 3 new warnings for iASL, and implemented multiple warning 9599levels 9600(w2 flag). 9601 96021) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 9603not 9604WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 9605check for the possible timeout, a warning is issued. 9606 96072) Useless operators: If an ASL operator does not specify an optional 9608target 9609operand and it also does not use the function return value from the 9610operator, a warning is issued since the operator effectively does 9611nothing. 9612 96133) Unreferenced objects: If a namespace object is created, but never 9614referenced, a warning is issued. This is a warning level 2 since there 9615are 9616cases where this is ok, such as when a secondary table is loaded that 9617uses 9618the unreferenced objects. Even so, care is taken to only flag objects 9619that 9620don't look like they will ever be used. For example, the reserved methods 9621(starting with an underscore) are usually not referenced because it is 9622expected that the OS will invoke them. 9623 9624---------------------------------------- 962531 March 2006. Summary of changes for version 20060331: 9626 96271) ACPI CA Core Subsystem: 9628 9629Implemented header file support for the following additional ACPI tables: 9630ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 9631support, 9632all current and known ACPI tables are now defined in the ACPICA headers 9633and 9634are available for use by device drivers and other software. 9635 9636Implemented support to allow tables that contain ACPI names with invalid 9637characters to be loaded. Previously, this would cause the table load to 9638fail, but since there are several known cases of such tables on existing 9639machines, this change was made to enable ACPI support for them. Also, 9640this 9641matches the behavior of the Microsoft ACPI implementation. 9642 9643Fixed a couple regressions introduced during the memory optimization in 9644the 964520060317 release. The namespace node definition required additional 9646reorganization and an internal datatype that had been changed to 8-bit 9647was 9648restored to 32-bit. (Valery Podrezov) 9649 9650Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 9651could be passed through to AcpiOsReleaseObject which is unexpected. Such 9652null pointers are now trapped and ignored, matching the behavior of the 9653previous implementation before the deployment of AcpiOsReleaseObject. 9654(Valery Podrezov, Fiodor Suietov) 9655 9656Fixed a memory mapping leak during the deletion of a SystemMemory 9657operation 9658region where a cached memory mapping was not deleted. This became a 9659noticeable problem for operation regions that are defined within 9660frequently 9661used control methods. (Dana Meyers) 9662 9663Reorganized the ACPI table header files into two main files: one for the 9664ACPI tables consumed by the ACPICA core, and another for the 9665miscellaneous 9666ACPI tables that are consumed by the drivers and other software. The 9667various 9668FADT definitions were merged into one common section and three different 9669tables (ACPI 1.0, 1.0+, and 2.0) 9670 9671Example Code and Data Size: These are the sizes for the OS-independent 9672acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9673debug version of the code includes the debug output trace mechanism and 9674has 9675a much larger code and data size. 9676 9677 Previous Release: 9678 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 9679 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 9680 Current Release: 9681 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 9682 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 9683 9684 96852) iASL Compiler/Disassembler and Tools: 9686 9687Disassembler: Implemented support to decode and format all non-AML ACPI 9688tables (tables other than DSDTs and SSDTs.) This includes the new tables 9689added to the ACPICA headers, therefore all current and known ACPI tables 9690are 9691supported. 9692 9693Disassembler: The change to allow ACPI names with invalid characters also 9694enables the disassembly of such tables. Invalid characters within names 9695are 9696changed to '*' to make the name printable; the iASL compiler will still 9697generate an error for such names, however, since this is an invalid ACPI 9698character. 9699 9700Implemented an option for AcpiXtract (-a) to extract all tables found in 9701the 9702input file. The default invocation extracts only the DSDTs and SSDTs. 9703 9704Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 9705makefile for the AcpiXtract utility. 9706 9707---------------------------------------- 970817 March 2006. Summary of changes for version 20060317: 9709 97101) ACPI CA Core Subsystem: 9711 9712Implemented the use of a cache object for all internal namespace nodes. 9713Since there are about 1000 static nodes in a typical system, this will 9714decrease memory use for cache implementations that minimize per- 9715allocation 9716overhead (such as a slab allocator.) 9717 9718Removed the reference count mechanism for internal namespace nodes, since 9719it 9720was deemed unnecessary. This reduces the size of each namespace node by 9721about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 9722case, 9723and 32 bytes for the 64-bit case. 9724 9725Optimized several internal data structures to reduce object size on 64- 9726bit 9727platforms by packing data within the 64-bit alignment. This includes the 9728frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 9729instances corresponding to the namespace objects. 9730 9731Added two new strings for the predefined _OSI method: "Windows 2001.1 9732SP1" 9733and "Windows 2006". 9734 9735Split the allocation tracking mechanism out to a separate file, from 9736utalloc.c to uttrack.c. This mechanism appears to be only useful for 9737application-level code. Kernels may wish to not include uttrack.c in 9738distributions. 9739 9740Removed all remnants of the obsolete ACPI_REPORT_* macros and the 9741associated 9742code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 9743macros.) 9744 9745Code and Data Size: These are the sizes for the acpica.lib produced by 9746the 9747Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 9748ACPI 9749driver or OSPM code. The debug version of the code includes the debug 9750output 9751trace mechanism and has a much larger code and data size. Note that these 9752values will vary depending on the efficiency of the compiler and the 9753compiler options used during generation. 9754 9755 Previous Release: 9756 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9757 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 9758 Current Release: 9759 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 9760 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 9761 9762 97632) iASL Compiler/Disassembler and Tools: 9764 9765Implemented an ANSI C version of the acpixtract utility. This version 9766will 9767automatically extract the DSDT and all SSDTs from the input acpidump text 9768file and dump the binary output to separate files. It can also display a 9769summary of the input file including the headers for each table found and 9770will extract any single ACPI table, with any signature. (See 9771source/tools/acpixtract) 9772 9773---------------------------------------- 977410 March 2006. Summary of changes for version 20060310: 9775 97761) ACPI CA Core Subsystem: 9777 9778Tagged all external interfaces to the subsystem with the new 9779ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 9780assist 9781kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 9782macro. The default definition is NULL. 9783 9784Added the ACPI_THREAD_ID type for the return value from 9785AcpiOsGetThreadId. 9786This allows the host to define this as necessary to simplify kernel 9787integration. The default definition is ACPI_NATIVE_UINT. 9788 9789Fixed two interpreter problems related to error processing, the deletion 9790of 9791objects, and placing invalid pointers onto the internal operator result 9792stack. BZ 6028, 6151 (Valery Podrezov) 9793 9794Increased the reference count threshold where a warning is emitted for 9795large 9796reference counts in order to eliminate unnecessary warnings on systems 9797with 9798large namespaces (especially 64-bit.) Increased the value from 0x400 to 97990x800. 9800 9801Due to universal disagreement as to the meaning of the 'c' in the 9802calloc() 9803function, the ACPI_MEM_CALLOCATE macro has been renamed to 9804ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 9805ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 9806ACPI_FREE. 9807 9808Code and Data Size: These are the sizes for the acpica.lib produced by 9809the 9810Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 9811ACPI 9812driver or OSPM code. The debug version of the code includes the debug 9813output 9814trace mechanism and has a much larger code and data size. Note that these 9815values will vary depending on the efficiency of the compiler and the 9816compiler options used during generation. 9817 9818 Previous Release: 9819 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 9820 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 9821 Current Release: 9822 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9823 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 9824 9825 98262) iASL Compiler/Disassembler: 9827 9828Disassembler: implemented support for symbolic resource descriptor 9829references. If a CreateXxxxField operator references a fixed offset 9830within 9831a 9832resource descriptor, a name is assigned to the descriptor and the offset 9833is 9834translated to the appropriate resource tag and pathname. The addition of 9835this support brings the disassembled code very close to the original ASL 9836source code and helps eliminate run-time errors when the disassembled 9837code 9838is modified (and recompiled) in such a way as to invalidate the original 9839fixed offsets. 9840 9841Implemented support for a Descriptor Name as the last parameter to the 9842ASL 9843Register() macro. This parameter was inadvertently left out of the ACPI 9844specification, and will be added for ACPI 3.0b. 9845 9846Fixed a problem where the use of the "_OSI" string (versus the full path 9847"\_OSI") caused an internal compiler error. ("No back ptr to op") 9848 9849Fixed a problem with the error message that occurs when an invalid string 9850is 9851used for a _HID object (such as one with an embedded asterisk: 9852"*PNP010A".) 9853The correct message is now displayed. 9854 9855---------------------------------------- 985617 February 2006. Summary of changes for version 20060217: 9857 98581) ACPI CA Core Subsystem: 9859 9860Implemented a change to the IndexField support to match the behavior of 9861the 9862Microsoft AML interpreter. The value written to the Index register is now 9863a 9864byte offset, no longer an index based upon the width of the Data 9865register. 9866This should fix IndexField problems seen on some machines where the Data 9867register is not exactly one byte wide. The ACPI specification will be 9868clarified on this point. 9869 9870Fixed a problem where several resource descriptor types could overrun the 9871internal descriptor buffer due to size miscalculation: VendorShort, 9872VendorLong, and Interrupt. This was noticed on IA64 machines, but could 9873affect all platforms. 9874 9875Fixed a problem where individual resource descriptors were misaligned 9876within 9877the internal buffer, causing alignment faults on IA64 platforms. 9878 9879Code and Data Size: These are the sizes for the acpica.lib produced by 9880the 9881Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 9882ACPI 9883driver or OSPM code. The debug version of the code includes the debug 9884output 9885trace mechanism and has a much larger code and data size. Note that these 9886values will vary depending on the efficiency of the compiler and the 9887compiler options used during generation. 9888 9889 Previous Release: 9890 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9891 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 9892 Current Release: 9893 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 9894 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 9895 9896 98972) iASL Compiler/Disassembler: 9898 9899Implemented support for new reserved names: _WDG and _WED are Microsoft 9900extensions for Windows Instrumentation Management, _TDL is a new ACPI- 9901defined method (Throttling Depth Limit.) 9902 9903Fixed a problem where a zero-length VendorShort or VendorLong resource 9904descriptor was incorrectly emitted as a descriptor of length one. 9905 9906---------------------------------------- 990710 February 2006. Summary of changes for version 20060210: 9908 99091) ACPI CA Core Subsystem: 9910 9911Removed a couple of extraneous ACPI_ERROR messages that appeared during 9912normal execution. These became apparent after the conversion from 9913ACPI_DEBUG_PRINT. 9914 9915Fixed a problem where the CreateField operator could hang if the BitIndex 9916or 9917NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 9918 9919Fixed a problem where a DeRefOf operation on a buffer object incorrectly 9920failed with an exception. This also fixes a couple of related RefOf and 9921DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 9922 9923Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 9924of 9925AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 9926BZ 99275480) 9928 9929Implemented a memory cleanup at the end of the execution of each 9930iteration 9931of an AML While() loop, preventing the accumulation of outstanding 9932objects. 9933(Valery Podrezov, BZ 5427) 9934 9935Eliminated a chunk of duplicate code in the object resolution code. 9936(Valery 9937Podrezov, BZ 5336) 9938 9939Fixed several warnings during the 64-bit code generation. 9940 9941The AcpiSrc source code conversion tool now inserts one line of 9942whitespace 9943after an if() statement that is followed immediately by a comment, 9944improving 9945readability of the Linux code. 9946 9947Code and Data Size: The current and previous library sizes for the core 9948subsystem are shown below. These are the code and data sizes for the 9949acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 9950These 9951values do not include any ACPI driver or OSPM code. The debug version of 9952the 9953code includes the debug output trace mechanism and has a much larger code 9954and data size. Note that these values will vary depending on the 9955efficiency 9956of the compiler and the compiler options used during generation. 9957 9958 Previous Release: 9959 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 9960 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 9961 Current Release: 9962 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9963 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 9964 9965 99662) iASL Compiler/Disassembler: 9967 9968Fixed a problem with the disassembly of a BankField operator with a 9969complex 9970expression for the BankValue parameter. 9971 9972---------------------------------------- 997327 January 2006. Summary of changes for version 20060127: 9974 99751) ACPI CA Core Subsystem: 9976 9977Implemented support in the Resource Manager to allow unresolved 9978namestring 9979references within resource package objects for the _PRT method. This 9980support 9981is in addition to the previously implemented unresolved reference support 9982within the AML parser. If the interpreter slack mode is enabled, these 9983unresolved references will be passed through to the caller as a NULL 9984package 9985entry. 9986 9987Implemented and deployed new macros and functions for error and warning 9988messages across the subsystem. These macros are simpler and generate less 9989code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 9990ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 9991macros remain defined to allow ACPI drivers time to migrate to the new 9992macros. 9993 9994Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 9995the 9996Acquire/Release Lock OSL interfaces. 9997 9998Fixed a problem where Alias ASL operators are sometimes not correctly 9999resolved, in both the interpreter and the iASL compiler. 10000 10001Fixed several problems with the implementation of the 10002ConcatenateResTemplate 10003ASL operator. As per the ACPI specification, zero length buffers are now 10004treated as a single EndTag. One-length buffers always cause a fatal 10005exception. Non-zero length buffers that do not end with a full 2-byte 10006EndTag 10007cause a fatal exception. 10008 10009Fixed a possible structure overwrite in the AcpiGetObjectInfo external 10010interface. (With assistance from Thomas Renninger) 10011 10012Code and Data Size: The current and previous library sizes for the core 10013subsystem are shown below. These are the code and data sizes for the 10014acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10015These 10016values do not include any ACPI driver or OSPM code. The debug version of 10017the 10018code includes the debug output trace mechanism and has a much larger code 10019and data size. Note that these values will vary depending on the 10020efficiency 10021of the compiler and the compiler options used during generation. 10022 10023 Previous Release: 10024 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 10025 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 10026 Current Release: 10027 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 10028 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 10029 10030 100312) iASL Compiler/Disassembler: 10032 10033Fixed an internal error that was generated for any forward references to 10034ASL 10035Alias objects. 10036 10037---------------------------------------- 1003813 January 2006. Summary of changes for version 20060113: 10039 100401) ACPI CA Core Subsystem: 10041 10042Added 2006 copyright to all module headers and signons. This affects 10043virtually every file in the ACPICA core subsystem, iASL compiler, and the 10044utilities. 10045 10046Enhanced the ACPICA error reporting in order to simplify user migration 10047to 10048the non-debug version of ACPICA. Replaced all instances of the 10049ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 10050debug 10051levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 10052respectively. This preserves all error and warning messages in the non- 10053debug 10054version of the ACPICA code (this has been referred to as the "debug lite" 10055option.) Over 200 cases were converted to create a total of over 380 10056error/warning messages across the ACPICA code. This increases the code 10057and 10058data size of the default non-debug version of the code somewhat (about 1005913K), 10060but all error/warning reporting may be disabled if desired (and code 10061eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 10062configuration option. The size of the debug version of ACPICA remains 10063about 10064the same. 10065 10066Fixed a memory leak within the AML Debugger "Set" command. One object was 10067not properly deleted for every successful invocation of the command. 10068 10069Code and Data Size: The current and previous library sizes for the core 10070subsystem are shown below. These are the code and data sizes for the 10071acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10072These 10073values do not include any ACPI driver or OSPM code. The debug version of 10074the 10075code includes the debug output trace mechanism and has a much larger code 10076and data size. Note that these values will vary depending on the 10077efficiency 10078of the compiler and the compiler options used during generation. 10079 10080 Previous Release: 10081 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 10082 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 10083 Current Release: 10084 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 10085 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 10086 10087 100882) iASL Compiler/Disassembler: 10089 10090The compiler now officially supports the ACPI 3.0a specification that was 10091released on December 30, 2005. (Specification is available at 10092www.acpi.info) 10093 10094---------------------------------------- 1009516 December 2005. Summary of changes for version 20051216: 10096 100971) ACPI CA Core Subsystem: 10098 10099Implemented optional support to allow unresolved names within ASL Package 10100objects. A null object is inserted in the package when a named reference 10101cannot be located in the current namespace. Enabled via the interpreter 10102slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 10103machines 10104that contain such code. 10105 10106Implemented an optimization to the initialization sequence that can 10107improve 10108boot time. During ACPI device initialization, the _STA method is now run 10109if 10110and only if the _INI method exists. The _STA method is used to determine 10111if 10112the device is present; An _INI can only be run if _STA returns present, 10113but 10114it is a waste of time to run the _STA method if the _INI does not exist. 10115(Prototype and assistance from Dong Wei) 10116 10117Implemented use of the C99 uintptr_t for the pointer casting macros if it 10118is 10119available in the current compiler. Otherwise, the default (void *) cast 10120is 10121used as before. 10122 10123Fixed some possible memory leaks found within the execution path of the 10124Break, Continue, If, and CreateField operators. (Valery Podrezov) 10125 10126Fixed a problem introduced in the 20051202 release where an exception is 10127generated during method execution if a control method attempts to declare 10128another method. 10129 10130Moved resource descriptor string constants that are used by both the AML 10131disassembler and AML debugger to the common utilities directory so that 10132these components are independent. 10133 10134Implemented support in the AcpiExec utility (-e switch) to globally 10135ignore 10136exceptions during control method execution (method is not aborted.) 10137 10138Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 10139generation. 10140 10141Code and Data Size: The current and previous library sizes for the core 10142subsystem are shown below. These are the code and data sizes for the 10143acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10144These 10145values do not include any ACPI driver or OSPM code. The debug version of 10146the 10147code includes the debug output trace mechanism and has a much larger code 10148and data size. Note that these values will vary depending on the 10149efficiency 10150of the compiler and the compiler options used during generation. 10151 10152 Previous Release: 10153 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10154 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 10155 Current Release: 10156 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 10157 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 10158 10159 101602) iASL Compiler/Disassembler: 10161 10162Fixed a problem where a CPU stack overflow fault could occur if a 10163recursive 10164method call was made from within a Return statement. 10165 10166---------------------------------------- 1016702 December 2005. Summary of changes for version 20051202: 10168 101691) ACPI CA Core Subsystem: 10170 10171Modified the parsing of control methods to no longer create namespace 10172objects during the first pass of the parse. Objects are now created only 10173during the execute phase, at the moment the namespace creation operator 10174is 10175encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 10176This 10177should eliminate ALREADY_EXISTS exceptions seen on some machines where 10178reentrant control methods are protected by an AML mutex. The mutex will 10179now 10180correctly block multiple threads from attempting to create the same 10181object 10182more than once. 10183 10184Increased the number of available Owner Ids for namespace object tracking 10185from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 10186on 10187some machines with a large number of ACPI tables (either static or 10188dynamic). 10189 10190Fixed a problem with the AcpiExec utility where a fault could occur when 10191the 10192-b switch (batch mode) is used. 10193 10194Enhanced the namespace dump routine to output the owner ID for each 10195namespace object. 10196 10197Code and Data Size: The current and previous library sizes for the core 10198subsystem are shown below. These are the code and data sizes for the 10199acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10200These 10201values do not include any ACPI driver or OSPM code. The debug version of 10202the 10203code includes the debug output trace mechanism and has a much larger code 10204and data size. Note that these values will vary depending on the 10205efficiency 10206of the compiler and the compiler options used during generation. 10207 10208 Previous Release: 10209 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10210 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 10211 Current Release: 10212 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10213 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 10214 10215 102162) iASL Compiler/Disassembler: 10217 10218Fixed a parse error during compilation of certain Switch/Case constructs. 10219To 10220simplify the parse, the grammar now allows for multiple Default 10221statements 10222and this error is now detected and flagged during the analysis phase. 10223 10224Disassembler: The disassembly now includes the contents of the original 10225table header within a comment at the start of the file. This includes the 10226name and version of the original ASL compiler. 10227 10228---------------------------------------- 1022917 November 2005. Summary of changes for version 20051117: 10230 102311) ACPI CA Core Subsystem: 10232 10233Fixed a problem in the AML parser where the method thread count could be 10234decremented below zero if any errors occurred during the method parse 10235phase. 10236This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 10237machines. 10238This also fixed a related regression with the mechanism that detects and 10239corrects methods that cannot properly handle reentrancy (related to the 10240deployment of the new OwnerId mechanism.) 10241 10242Eliminated the pre-parsing of control methods (to detect errors) during 10243table load. Related to the problem above, this was causing unwind issues 10244if 10245any errors occurred during the parse, and it seemed to be overkill. A 10246table 10247load should not be aborted if there are problems with any single control 10248method, thus rendering this feature rather pointless. 10249 10250Fixed a problem with the new table-driven resource manager where an 10251internal 10252buffer overflow could occur for small resource templates. 10253 10254Implemented a new external interface, AcpiGetVendorResource. This 10255interface 10256will find and return a vendor-defined resource descriptor within a _CRS 10257or 10258_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 10259Helgaas. 10260 10261Removed the length limit (200) on string objects as per the upcoming ACPI 102623.0A specification. This affects the following areas of the interpreter: 102631) 10264any implicit conversion of a Buffer to a String, 2) a String object 10265result 10266of the ASL Concatentate operator, 3) the String object result of the ASL 10267ToString operator. 10268 10269Fixed a problem in the Windows OS interface layer (OSL) where a 10270WAIT_FOREVER 10271on a semaphore object would incorrectly timeout. This allows the 10272multithreading features of the AcpiExec utility to work properly under 10273Windows. 10274 10275Updated the Linux makefiles for the iASL compiler and AcpiExec to include 10276the recently added file named "utresrc.c". 10277 10278Code and Data Size: The current and previous library sizes for the core 10279subsystem are shown below. These are the code and data sizes for the 10280acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10281These 10282values do not include any ACPI driver or OSPM code. The debug version of 10283the 10284code includes the debug output trace mechanism and has a much larger code 10285and data size. Note that these values will vary depending on the 10286efficiency 10287of the compiler and the compiler options used during generation. 10288 10289 Previous Release: 10290 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 10291 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 10292 Current Release: 10293 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10294 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 10295 10296 102972) iASL Compiler/Disassembler: 10298 10299Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 10300specification. For the iASL compiler, this means that string literals 10301within 10302the source ASL can be of any length. 10303 10304Enhanced the listing output to dump the AML code for resource descriptors 10305immediately after the ASL code for each descriptor, instead of in a block 10306at 10307the end of the entire resource template. 10308 10309Enhanced the compiler debug output to dump the entire original parse tree 10310constructed during the parse phase, before any transforms are applied to 10311the 10312tree. The transformed tree is dumped also. 10313 10314---------------------------------------- 1031502 November 2005. Summary of changes for version 20051102: 10316 103171) ACPI CA Core Subsystem: 10318 10319Modified the subsystem initialization sequence to improve GPE support. 10320The 10321GPE initialization has been split into two parts in order to defer 10322execution 10323of the _PRW methods (Power Resources for Wake) until after the hardware 10324is 10325fully initialized and the SCI handler is installed. This allows the _PRW 10326methods to access fields protected by the Global Lock. This will fix 10327systems 10328where a NO_GLOBAL_LOCK exception has been seen during initialization. 10329 10330Converted the ACPI internal object disassemble and display code within 10331the 10332AML debugger to fully table-driven operation, reducing code size and 10333increasing maintainability. 10334 10335Fixed a regression with the ConcatenateResTemplate() ASL operator 10336introduced 10337in the 20051021 release. 10338 10339Implemented support for "local" internal ACPI object types within the 10340debugger "Object" command and the AcpiWalkNamespace external interfaces. 10341These local types include RegionFields, BankFields, IndexFields, Alias, 10342and 10343reference objects. 10344 10345Moved common AML resource handling code into a new file, "utresrc.c". 10346This 10347code is shared by both the Resource Manager and the AML Debugger. 10348 10349Code and Data Size: The current and previous library sizes for the core 10350subsystem are shown below. These are the code and data sizes for the 10351acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10352These 10353values do not include any ACPI driver or OSPM code. The debug version of 10354the 10355code includes the debug output trace mechanism and has a much larger code 10356and data size. Note that these values will vary depending on the 10357efficiency 10358of the compiler and the compiler options used during generation. 10359 10360 Previous Release: 10361 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 10362 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 10363 Current Release: 10364 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 10365 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 10366 10367 103682) iASL Compiler/Disassembler: 10369 10370Fixed a problem with very large initializer lists (more than 4000 10371elements) 10372for both Buffer and Package objects where the parse stack could overflow. 10373 10374Enhanced the pre-compile source code scan for non-ASCII characters to 10375ignore 10376characters within comment fields. The scan is now always performed and is 10377no 10378longer optional, detecting invalid characters within a source file 10379immediately rather than during the parse phase or later. 10380 10381Enhanced the ASL grammar definition to force early reductions on all 10382list- 10383style grammar elements so that the overall parse stack usage is greatly 10384reduced. This should improve performance and reduce the possibility of 10385parse 10386stack overflow. 10387 10388Eliminated all reduce/reduce conflicts in the iASL parser generation. 10389Also, 10390with the addition of a %expected statement, the compiler generates from 10391source with no warnings. 10392 10393Fixed a possible segment fault in the disassembler if the input filename 10394does not contain a "dot" extension (Thomas Renninger). 10395 10396---------------------------------------- 1039721 October 2005. Summary of changes for version 20051021: 10398 103991) ACPI CA Core Subsystem: 10400 10401Implemented support for the EM64T and other x86-64 processors. This 10402essentially entails recognizing that these processors support non-aligned 10403memory transfers. Previously, all 64-bit processors were assumed to lack 10404hardware support for non-aligned transfers. 10405 10406Completed conversion of the Resource Manager to nearly full table-driven 10407operation. Specifically, the resource conversion code (convert AML to 10408internal format and the reverse) and the debug code to dump internal 10409resource descriptors are fully table-driven, reducing code and data size 10410and 10411improving maintainability. 10412 10413The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 10414word 10415on 64-bit processors instead of a fixed 32-bit word. (With assistance 10416from 10417Alexey Starikovskiy) 10418 10419Implemented support within the resource conversion code for the Type- 10420Specific byte within the various ACPI 3.0 *WordSpace macros. 10421 10422Fixed some issues within the resource conversion code for the type- 10423specific 10424flags for both Memory and I/O address resource descriptors. For Memory, 10425implemented support for the MTP and TTP flags. For I/O, split the TRS and 10426TTP flags into two separate fields. 10427 10428Code and Data Size: The current and previous library sizes for the core 10429subsystem are shown below. These are the code and data sizes for the 10430acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10431These 10432values do not include any ACPI driver or OSPM code. The debug version of 10433the 10434code includes the debug output trace mechanism and has a much larger code 10435and data size. Note that these values will vary depending on the 10436efficiency 10437of the compiler and the compiler options used during generation. 10438 10439 Previous Release: 10440 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 10441 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 10442 Current Release: 10443 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 10444 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 10445 10446 10447 104482) iASL Compiler/Disassembler: 10449 10450Relaxed a compiler restriction that disallowed a ResourceIndex byte if 10451the 10452corresponding ResourceSource string was not also present in a resource 10453descriptor declaration. This restriction caused problems with existing 10454AML/ASL code that includes the Index byte without the string. When such 10455AML 10456was disassembled, it could not be compiled without modification. Further, 10457the modified code created a resource template with a different size than 10458the 10459original, breaking code that used fixed offsets into the resource 10460template 10461buffer. 10462 10463Removed a recent feature of the disassembler to ignore a lone 10464ResourceIndex 10465byte. This byte is now emitted if present so that the exact AML can be 10466reproduced when the disassembled code is recompiled. 10467 10468Improved comments and text alignment for the resource descriptor code 10469emitted by the disassembler. 10470 10471Implemented disassembler support for the ACPI 3.0 AccessSize field within 10472a 10473Register() resource descriptor. 10474 10475---------------------------------------- 1047630 September 2005. Summary of changes for version 20050930: 10477 104781) ACPI CA Core Subsystem: 10479 10480Completed a major overhaul of the Resource Manager code - specifically, 10481optimizations in the area of the AML/internal resource conversion code. 10482The 10483code has been optimized to simplify and eliminate duplicated code, CPU 10484stack 10485use has been decreased by optimizing function parameters and local 10486variables, and naming conventions across the manager have been 10487standardized 10488for clarity and ease of maintenance (this includes function, parameter, 10489variable, and struct/typedef names.) The update may force changes in some 10490driver code, depending on how resources are handled by the host OS. 10491 10492All Resource Manager dispatch and information tables have been moved to a 10493single location for clarity and ease of maintenance. One new file was 10494created, named "rsinfo.c". 10495 10496The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 10497guarantee that the argument is not evaluated twice, making them less 10498prone 10499to macro side-effects. However, since there exists the possibility of 10500additional stack use if a particular compiler cannot optimize them (such 10501as 10502in the debug generation case), the original macros are optionally 10503available. 10504Note that some invocations of the return_VALUE macro may now cause size 10505mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 10506to 10507eliminate these. (From Randy Dunlap) 10508 10509Implemented a new mechanism to enable debug tracing for individual 10510control 10511methods. A new external interface, AcpiDebugTrace, is provided to enable 10512this mechanism. The intent is to allow the host OS to easily enable and 10513disable tracing for problematic control methods. This interface can be 10514easily exposed to a user or debugger interface if desired. See the file 10515psxface.c for details. 10516 10517AcpiUtCallocate will now return a valid pointer if a length of zero is 10518specified - a length of one is used and a warning is issued. This matches 10519the behavior of AcpiUtAllocate. 10520 10521Code and Data Size: The current and previous library sizes for the core 10522subsystem are shown below. These are the code and data sizes for the 10523acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10524These 10525values do not include any ACPI driver or OSPM code. The debug version of 10526the 10527code includes the debug output trace mechanism and has a much larger code 10528and data size. Note that these values will vary depending on the 10529efficiency 10530of the compiler and the compiler options used during generation. 10531 10532 Previous Release: 10533 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 10534 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 10535 Current Release: 10536 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 10537 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 10538 10539 105402) iASL Compiler/Disassembler: 10541 10542A remark is issued if the effective compile-time length of a package or 10543buffer is zero. Previously, this was a warning. 10544 10545---------------------------------------- 1054616 September 2005. Summary of changes for version 20050916: 10547 105481) ACPI CA Core Subsystem: 10549 10550Fixed a problem within the Resource Manager where support for the Generic 10551Register descriptor was not fully implemented. This descriptor is now 10552fully 10553recognized, parsed, disassembled, and displayed. 10554 10555Completely restructured the Resource Manager code to utilize table-driven 10556dispatch and lookup, eliminating many of the large switch() statements. 10557This 10558reduces overall subsystem code size and code complexity. Affects the 10559resource parsing and construction, disassembly, and debug dump output. 10560 10561Cleaned up and restructured the debug dump output for all resource 10562descriptors. Improved readability of the output and reduced code size. 10563 10564Fixed a problem where changes to internal data structures caused the 10565optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 10566 10567Code and Data Size: The current and previous library sizes for the core 10568subsystem are shown below. These are the code and data sizes for the 10569acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10570These 10571values do not include any ACPI driver or OSPM code. The debug version of 10572the 10573code includes the debug output trace mechanism and has a much larger code 10574and data size. Note that these values will vary depending on the 10575efficiency 10576of the compiler and the compiler options used during generation. 10577 10578 Previous Release: 10579 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 10580 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 10581 Current Release: 10582 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 10583 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 10584 10585 105862) iASL Compiler/Disassembler: 10587 10588Updated the disassembler to automatically insert an EndDependentFn() 10589macro 10590into the ASL stream if this macro is missing in the original AML code, 10591simplifying compilation of the resulting ASL module. 10592 10593Fixed a problem in the disassembler where a disassembled ResourceSource 10594string (within a large resource descriptor) was not surrounded by quotes 10595and 10596not followed by a comma, causing errors when the resulting ASL module was 10597compiled. Also, escape sequences within a ResourceSource string are now 10598handled correctly (especially "\\") 10599 10600---------------------------------------- 1060102 September 2005. Summary of changes for version 20050902: 10602 106031) ACPI CA Core Subsystem: 10604 10605Fixed a problem with the internal Owner ID allocation and deallocation 10606mechanisms for control method execution and recursive method invocation. 10607This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 10608messages seen on some systems. Recursive method invocation depth is 10609currently limited to 255. (Alexey Starikovskiy) 10610 10611Completely eliminated all vestiges of support for the "module-level 10612executable code" until this support is fully implemented and debugged. 10613This 10614should eliminate the NO_RETURN_VALUE exceptions seen during table load on 10615some systems that invoke this support. 10616 10617Fixed a problem within the resource manager code where the transaction 10618flags 10619for a 64-bit address descriptor were handled incorrectly in the type- 10620specific flag byte. 10621 10622Consolidated duplicate code within the address descriptor resource 10623manager 10624code, reducing overall subsystem code size. 10625 10626Fixed a fault when using the AML debugger "disassemble" command to 10627disassemble individual control methods. 10628 10629Removed references to the "release_current" directory within the Unix 10630release package. 10631 10632Code and Data Size: The current and previous core subsystem library sizes 10633are shown below. These are the code and data sizes for the acpica.lib 10634produced by the Microsoft Visual C++ 6.0 compiler. These values do not 10635include any ACPI driver or OSPM code. The debug version of the code 10636includes 10637the debug output trace mechanism and has a much larger code and data 10638size. 10639Note that these values will vary depending on the efficiency of the 10640compiler 10641and the compiler options used during generation. 10642 10643 Previous Release: 10644 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10645 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 10646 Current Release: 10647 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 10648 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 10649 10650 106512) iASL Compiler/Disassembler: 10652 10653Implemented an error check for illegal duplicate values in the interrupt 10654and 10655dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 10656Interrupt(). 10657 10658Implemented error checking for the Irq() and IrqNoFlags() macros to 10659detect 10660too many values in the interrupt list (16 max) and invalid values in the 10661list (range 0 - 15) 10662 10663The maximum length string literal within an ASL file is now restricted to 10664200 characters as per the ACPI specification. 10665 10666Fixed a fault when using the -ln option (generate namespace listing). 10667 10668Implemented an error check to determine if a DescriptorName within a 10669resource descriptor has already been used within the current scope. 10670 10671---------------------------------------- 1067215 August 2005. Summary of changes for version 20050815: 10673 106741) ACPI CA Core Subsystem: 10675 10676Implemented a full bytewise compare to determine if a table load request 10677is 10678attempting to load a duplicate table. The compare is performed if the 10679table 10680signatures and table lengths match. This will allow different tables with 10681the same OEM Table ID and revision to be loaded - probably against the 10682ACPI 10683specification, but discovered in the field nonetheless. 10684 10685Added the changes.txt logfile to each of the zipped release packages. 10686 10687Code and Data Size: Current and previous core subsystem library sizes are 10688shown below. These are the code and data sizes for the acpica.lib 10689produced 10690by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10691any ACPI driver or OSPM code. The debug version of the code includes the 10692debug output trace mechanism and has a much larger code and data size. 10693Note 10694that these values will vary depending on the efficiency of the compiler 10695and 10696the compiler options used during generation. 10697 10698 Previous Release: 10699 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10700 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 10701 Current Release: 10702 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10703 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 10704 10705 107062) iASL Compiler/Disassembler: 10707 10708Fixed a problem where incorrect AML code could be generated for Package 10709objects if optimization is disabled (via the -oa switch). 10710 10711Fixed a problem with where incorrect AML code is generated for variable- 10712length packages when the package length is not specified and the number 10713of 10714initializer values is greater than 255. 10715 10716 10717---------------------------------------- 1071829 July 2005. Summary of changes for version 20050729: 10719 107201) ACPI CA Core Subsystem: 10721 10722Implemented support to ignore an attempt to install/load a particular 10723ACPI 10724table more than once. Apparently there exists BIOS code that repeatedly 10725attempts to load the same SSDT upon certain events. With assistance from 10726Venkatesh Pallipadi. 10727 10728Restructured the main interface to the AML parser in order to correctly 10729handle all exceptional conditions. This will prevent leakage of the 10730OwnerId 10731resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 10732some 10733machines. With assistance from Alexey Starikovskiy. 10734 10735Support for "module level code" has been disabled in this version due to 10736a 10737number of issues that have appeared on various machines. The support can 10738be 10739enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 10740compilation. When the issues are fully resolved, the code will be enabled 10741by 10742default again. 10743 10744Modified the internal functions for debug print support to define the 10745FunctionName parameter as a (const char *) for compatibility with 10746compiler 10747built-in macros such as __FUNCTION__, etc. 10748 10749Linted the entire ACPICA source tree for both 32-bit and 64-bit. 10750 10751Implemented support to display an object count summary for the AML 10752Debugger 10753commands Object and Methods. 10754 10755Code and Data Size: Current and previous core subsystem library sizes are 10756shown below. These are the code and data sizes for the acpica.lib 10757produced 10758by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10759any ACPI driver or OSPM code. The debug version of the code includes the 10760debug output trace mechanism and has a much larger code and data size. 10761Note 10762that these values will vary depending on the efficiency of the compiler 10763and 10764the compiler options used during generation. 10765 10766 Previous Release: 10767 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 10768 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 10769 Current Release: 10770 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10771 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 10772 10773 107742) iASL Compiler/Disassembler: 10775 10776Fixed a regression that appeared in the 20050708 version of the compiler 10777where an error message was inadvertently emitted for invocations of the 10778_OSI 10779reserved control method. 10780 10781---------------------------------------- 1078208 July 2005. Summary of changes for version 20050708: 10783 107841) ACPI CA Core Subsystem: 10785 10786The use of the CPU stack in the debug version of the subsystem has been 10787considerably reduced. Previously, a debug structure was declared in every 10788function that used the debug macros. This structure has been removed in 10789favor of declaring the individual elements as parameters to the debug 10790functions. This reduces the cumulative stack use during nested execution 10791of 10792ACPI function calls at the cost of a small increase in the code size of 10793the 10794debug version of the subsystem. With assistance from Alexey Starikovskiy 10795and 10796Len Brown. 10797 10798Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 10799headers to define a macro that will return the current function name at 10800runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 10801by 10802the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 10803compiler-dependent header, the function name is saved on the CPU stack 10804(one 10805pointer per function.) This mechanism is used because apparently there 10806exists no standard ANSI-C defined macro that that returns the function 10807name. 10808 10809Redesigned and reimplemented the "Owner ID" mechanism used to track 10810namespace objects created/deleted by ACPI tables and control method 10811execution. A bitmap is now used to allocate and free the IDs, thus 10812solving 10813the wraparound problem present in the previous implementation. The size 10814of 10815the namespace node descriptor was reduced by 2 bytes as a result (Alexey 10816Starikovskiy). 10817 10818Removed the UINT32_BIT and UINT16_BIT types that were used for the 10819bitfield 10820flag definitions within the headers for the predefined ACPI tables. These 10821have been replaced by UINT8_BIT in order to increase the code portability 10822of 10823the subsystem. If the use of UINT8 remains a problem, we may be forced to 10824eliminate bitfields entirely because of a lack of portability. 10825 10826Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 10827This 10828is a frequently used function and this improvement increases the 10829performance 10830of the entire subsystem (Alexey Starikovskiy). 10831 10832Fixed several possible memory leaks and the inverse - premature object 10833deletion (Alexey Starikovskiy). 10834 10835Code and Data Size: Current and previous core subsystem library sizes are 10836shown below. These are the code and data sizes for the acpica.lib 10837produced 10838by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10839any ACPI driver or OSPM code. The debug version of the code includes the 10840debug output trace mechanism and has a much larger code and data size. 10841Note 10842that these values will vary depending on the efficiency of the compiler 10843and 10844the compiler options used during generation. 10845 10846 Previous Release: 10847 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 10848 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 10849 Current Release: 10850 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 10851 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 10852 10853---------------------------------------- 1085424 June 2005. Summary of changes for version 20050624: 10855 108561) ACPI CA Core Subsystem: 10857 10858Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 10859the host-defined cache object. This allows the OSL implementation to 10860define 10861and type this object in any manner desired, simplifying the OSL 10862implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 10863Linux, and should be defined in the OS-specific header file for other 10864operating systems as required. 10865 10866Changed the interface to AcpiOsAcquireObject to directly return the 10867requested object as the function return (instead of ACPI_STATUS.) This 10868change was made for performance reasons, since this is the purpose of the 10869interface in the first place. AcpiOsAcquireObject is now similar to the 10870AcpiOsAllocate interface. 10871 10872Implemented a new AML debugger command named Businfo. This command 10873displays 10874information about all devices that have an associate _PRT object. The 10875_ADR, 10876_HID, _UID, and _CID are displayed for these devices. 10877 10878Modified the initialization sequence in AcpiInitializeSubsystem to call 10879the 10880OSL interface AcpiOslInitialize first, before any local initialization. 10881This 10882change was required because the global initialization now calls OSL 10883interfaces. 10884 10885Enhanced the Dump command to display the entire contents of Package 10886objects 10887(including all sub-objects and their values.) 10888 10889Restructured the code base to split some files because of size and/or 10890because the code logically belonged in a separate file. New files are 10891listed 10892below. All makefiles and project files included in the ACPI CA release 10893have 10894been updated. 10895 utilities/utcache.c /* Local cache interfaces */ 10896 utilities/utmutex.c /* Local mutex support */ 10897 utilities/utstate.c /* State object support */ 10898 interpreter/parser/psloop.c /* Main AML parse loop */ 10899 10900Code and Data Size: Current and previous core subsystem library sizes are 10901shown below. These are the code and data sizes for the acpica.lib 10902produced 10903by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10904any ACPI driver or OSPM code. The debug version of the code includes the 10905debug output trace mechanism and has a much larger code and data size. 10906Note 10907that these values will vary depending on the efficiency of the compiler 10908and 10909the compiler options used during generation. 10910 10911 Previous Release: 10912 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 10913 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 10914 Current Release: 10915 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 10916 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 10917 10918 109192) iASL Compiler/Disassembler: 10920 10921Fixed a regression introduced in version 20050513 where the use of a 10922Package 10923object within a Case() statement caused a compile time exception. The 10924original behavior has been restored (a Match() operator is emitted.) 10925 10926---------------------------------------- 1092717 June 2005. Summary of changes for version 20050617: 10928 109291) ACPI CA Core Subsystem: 10930 10931Moved the object cache operations into the OS interface layer (OSL) to 10932allow 10933the host OS to handle these operations if desired (for example, the Linux 10934OSL will invoke the slab allocator). This support is optional; the 10935compile 10936time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 10937cache 10938code in the ACPI CA core. The new OSL interfaces are shown below. See 10939utalloc.c for an example implementation, and acpiosxf.h for the exact 10940interface definitions. With assistance from Alexey Starikovskiy. 10941 AcpiOsCreateCache 10942 AcpiOsDeleteCache 10943 AcpiOsPurgeCache 10944 AcpiOsAcquireObject 10945 AcpiOsReleaseObject 10946 10947Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 10948return 10949and restore a flags parameter. This fits better with many OS lock models. 10950Note: the current execution state (interrupt handler or not) is no longer 10951passed to these interfaces. If necessary, the OSL must determine this 10952state 10953by itself, a simple and fast operation. With assistance from Alexey 10954Starikovskiy. 10955 10956Fixed a problem in the ACPI table handling where a valid XSDT was assumed 10957present if the revision of the RSDP was 2 or greater. According to the 10958ACPI 10959specification, the XSDT is optional in all cases, and the table manager 10960therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 10961Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 10962contain 10963only the RSDT. 10964 10965Fixed an interpreter problem with the Mid() operator in the case of an 10966input 10967string where the resulting output string is of zero length. It now 10968correctly 10969returns a valid, null terminated string object instead of a string object 10970with a null pointer. 10971 10972Fixed a problem with the control method argument handling to allow a 10973store 10974to an Arg object that already contains an object of type Device. The 10975Device 10976object is now correctly overwritten. Previously, an error was returned. 10977 10978 10979Enhanced the debugger Find command to emit object values in addition to 10980the 10981found object pathnames. The output format is the same as the dump 10982namespace 10983command. 10984 10985Enhanced the debugger Set command. It now has the ability to set the 10986value 10987of any Named integer object in the namespace (Previously, only method 10988locals 10989and args could be set.) 10990 10991Code and Data Size: Current and previous core subsystem library sizes are 10992shown below. These are the code and data sizes for the acpica.lib 10993produced 10994by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10995any ACPI driver or OSPM code. The debug version of the code includes the 10996debug output trace mechanism and has a much larger code and data size. 10997Note 10998that these values will vary depending on the efficiency of the compiler 10999and 11000the compiler options used during generation. 11001 11002 Previous Release: 11003 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 11004 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 11005 Current Release: 11006 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 11007 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 11008 11009 110102) iASL Compiler/Disassembler: 11011 11012Fixed a regression in the disassembler where if/else/while constructs 11013were 11014output incorrectly. This problem was introduced in the previous release 11015(20050526). This problem also affected the single-step disassembly in the 11016debugger. 11017 11018Fixed a problem where compiling the reserved _OSI method would randomly 11019(but 11020rarely) produce compile errors. 11021 11022Enhanced the disassembler to emit compilable code in the face of 11023incorrect 11024AML resource descriptors. If the optional ResourceSourceIndex is present, 11025but the ResourceSource is not, do not emit the ResourceSourceIndex in the 11026disassembly. Otherwise, the resulting code cannot be compiled without 11027errors. 11028 11029---------------------------------------- 1103026 May 2005. Summary of changes for version 20050526: 11031 110321) ACPI CA Core Subsystem: 11033 11034Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 11035the module level (not within a control method.) These opcodes are 11036executed 11037exactly once at the time the table is loaded. This type of code was legal 11038up 11039until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 11040in 11041order to provide backwards compatibility with earlier BIOS 11042implementations. 11043This eliminates the "Encountered executable code at module level" warning 11044that was previously generated upon detection of such code. 11045 11046Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 11047inadvertently be generated during the lookup of namespace objects in the 11048second pass parse of ACPI tables and control methods. It appears that 11049this 11050problem could occur during the resolution of forward references to 11051namespace 11052objects. 11053 11054Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 11055corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 11056allows the deadlock detection debug code to be compiled out in the normal 11057case, improving mutex performance (and overall subsystem performance) 11058considerably. 11059 11060Implemented a handful of miscellaneous fixes for possible memory leaks on 11061error conditions and error handling control paths. These fixes were 11062suggested by FreeBSD and the Coverity Prevent source code analysis tool. 11063 11064Added a check for a null RSDT pointer in AcpiGetFirmwareTable 11065(tbxfroot.c) 11066to prevent a fault in this error case. 11067 11068Code and Data Size: Current and previous core subsystem library sizes are 11069shown below. These are the code and data sizes for the acpica.lib 11070produced 11071by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11072any ACPI driver or OSPM code. The debug version of the code includes the 11073debug output trace mechanism and has a much larger code and data size. 11074Note 11075that these values will vary depending on the efficiency of the compiler 11076and 11077the compiler options used during generation. 11078 11079 Previous Release: 11080 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11081 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11082 Current Release: 11083 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 11084 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 11085 11086 110872) iASL Compiler/Disassembler: 11088 11089Implemented support to allow Type 1 and Type 2 ASL operators to appear at 11090the module level (not within a control method.) These operators will be 11091executed once at the time the table is loaded. This type of code was 11092legal 11093up until the release of ACPI 2.0B (2002) and is now supported by the iASL 11094compiler in order to provide backwards compatibility with earlier BIOS 11095ASL 11096code. 11097 11098The ACPI integer width (specified via the table revision ID or the -r 11099override, 32 or 64 bits) is now used internally during compile-time 11100constant 11101folding to ensure that constants are truncated to 32 bits if necessary. 11102Previously, the revision ID value was only emitted in the AML table 11103header. 11104 11105An error message is now generated for the Mutex and Method operators if 11106the 11107SyncLevel parameter is outside the legal range of 0 through 15. 11108 11109Fixed a problem with the Method operator ParameterTypes list handling 11110(ACPI 111113.0). Previously, more than 2 types or 2 arguments generated a syntax 11112error. 11113The actual underlying implementation of method argument typechecking is 11114still under development, however. 11115 11116---------------------------------------- 1111713 May 2005. Summary of changes for version 20050513: 11118 111191) ACPI CA Core Subsystem: 11120 11121Implemented support for PCI Express root bridges -- added support for 11122device 11123PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 11124 11125The interpreter now automatically truncates incoming 64-bit constants to 1112632 11127bits if currently executing out of a 32-bit ACPI table (Revision < 2). 11128This 11129also affects the iASL compiler constant folding. (Note: as per below, the 11130iASL compiler no longer allows 64-bit constants within 32-bit tables.) 11131 11132Fixed a problem where string and buffer objects with "static" pointers 11133(pointers to initialization data within an ACPI table) were not handled 11134consistently. The internal object copy operation now always copies the 11135data 11136to a newly allocated buffer, regardless of whether the source object is 11137static or not. 11138 11139Fixed a problem with the FromBCD operator where an implicit result 11140conversion was improperly performed while storing the result to the 11141target 11142operand. Since this is an "explicit conversion" operator, the implicit 11143conversion should never be performed on the output. 11144 11145Fixed a problem with the CopyObject operator where a copy to an existing 11146named object did not always completely overwrite the existing object 11147stored 11148at name. Specifically, a buffer-to-buffer copy did not delete the 11149existing 11150buffer. 11151 11152Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 11153and 11154structs for consistency. 11155 11156Code and Data Size: Current and previous core subsystem library sizes are 11157shown below. These are the code and data sizes for the acpica.lib 11158produced 11159by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11160any ACPI driver or OSPM code. The debug version of the code includes the 11161debug output trace mechanism and has a much larger code and data size. 11162Note 11163that these values will vary depending on the efficiency of the compiler 11164and 11165the compiler options used during generation. 11166 11167 Previous Release: 11168 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11169 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11170 Current Release: (Same sizes) 11171 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11172 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11173 11174 111752) iASL Compiler/Disassembler: 11176 11177The compiler now emits a warning if an attempt is made to generate a 64- 11178bit 11179integer constant from within a 32-bit ACPI table (Revision < 2). The 11180integer 11181is truncated to 32 bits. 11182 11183Fixed a problem with large package objects: if the static length of the 11184package is greater than 255, the "variable length package" opcode is 11185emitted. Previously, this caused an error. This requires an update to the 11186ACPI spec, since it currently (incorrectly) states that packages larger 11187than 11188255 elements are not allowed. 11189 11190The disassembler now correctly handles variable length packages and 11191packages 11192larger than 255 elements. 11193 11194---------------------------------------- 1119508 April 2005. Summary of changes for version 20050408: 11196 111971) ACPI CA Core Subsystem: 11198 11199Fixed three cases in the interpreter where an "index" argument to an ASL 11200function was still (internally) 32 bits instead of the required 64 bits. 11201This was the Index argument to the Index, Mid, and Match operators. 11202 11203The "strupr" function is now permanently local (AcpiUtStrupr), since this 11204is 11205not a POSIX-defined function and not present in most kernel-level C 11206libraries. All references to the C library strupr function have been 11207removed 11208from the headers. 11209 11210Completed the deployment of static functions/prototypes. All prototypes 11211with 11212the static attribute have been moved from the headers to the owning C 11213file. 11214 11215Implemented an extract option (-e) for the AcpiBin utility (AML binary 11216utility). This option allows the utility to extract individual ACPI 11217tables 11218from the output of AcpiDmp. It provides the same functionality of the 11219acpixtract.pl perl script without the worry of setting the correct perl 11220options. AcpiBin runs on Windows and has not yet been generated/validated 11221in 11222the Linux/Unix environment (but should be soon). 11223 11224Updated and fixed the table dump option for AcpiBin (-d). This option 11225converts a single ACPI table to a hex/ascii file, similar to the output 11226of 11227AcpiDmp. 11228 11229Code and Data Size: Current and previous core subsystem library sizes are 11230shown below. These are the code and data sizes for the acpica.lib 11231produced 11232by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11233any ACPI driver or OSPM code. The debug version of the code includes the 11234debug output trace mechanism and has a much larger code and data size. 11235Note 11236that these values will vary depending on the efficiency of the compiler 11237and 11238the compiler options used during generation. 11239 11240 Previous Release: 11241 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 11242 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 11243 Current Release: 11244 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11245 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11246 11247 112482) iASL Compiler/Disassembler: 11249 11250Disassembler fix: Added a check to ensure that the table length found in 11251the 11252ACPI table header within the input file is not longer than the actual 11253input 11254file size. This indicates some kind of file or table corruption. 11255 11256---------------------------------------- 1125729 March 2005. Summary of changes for version 20050329: 11258 112591) ACPI CA Core Subsystem: 11260 11261An error is now generated if an attempt is made to create a Buffer Field 11262of 11263length zero (A CreateField with a length operand of zero.) 11264 11265The interpreter now issues a warning whenever executable code at the 11266module 11267level is detected during ACPI table load. This will give some idea of the 11268prevalence of this type of code. 11269 11270Implemented support for references to named objects (other than control 11271methods) within package objects. 11272 11273Enhanced package object output for the debug object. Package objects are 11274now 11275completely dumped, showing all elements. 11276 11277Enhanced miscellaneous object output for the debug object. Any object can 11278now be written to the debug object (for example, a device object can be 11279written, and the type of the object will be displayed.) 11280 11281The "static" qualifier has been added to all local functions across both 11282the 11283core subsystem and the iASL compiler. 11284 11285The number of "long" lines (> 80 chars) within the source has been 11286significantly reduced, by about 1/3. 11287 11288Cleaned up all header files to ensure that all CA/iASL functions are 11289prototyped (even static functions) and the formatting is consistent. 11290 11291Two new header files have been added, acopcode.h and acnames.h. 11292 11293Removed several obsolete functions that were no longer used. 11294 11295Code and Data Size: Current and previous core subsystem library sizes are 11296shown below. These are the code and data sizes for the acpica.lib 11297produced 11298by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11299any ACPI driver or OSPM code. The debug version of the code includes the 11300debug output trace mechanism and has a much larger code and data size. 11301Note 11302that these values will vary depending on the efficiency of the compiler 11303and 11304the compiler options used during generation. 11305 11306 Previous Release: 11307 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11308 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 11309 Current Release: 11310 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 11311 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 11312 11313 11314 113152) iASL Compiler/Disassembler: 11316 11317Fixed a problem with the resource descriptor generation/support. For the 11318ResourceSourceIndex and the ResourceSource fields, both must be present, 11319or 11320both must be not present - can't have one without the other. 11321 11322The compiler now returns non-zero from the main procedure if any errors 11323have 11324occurred during the compilation. 11325 11326 11327---------------------------------------- 1132809 March 2005. Summary of changes for version 20050309: 11329 113301) ACPI CA Core Subsystem: 11331 11332The string-to-buffer implicit conversion code has been modified again 11333after 11334a change to the ACPI specification. In order to match the behavior of 11335the 11336other major ACPI implementation, the target buffer is no longer truncated 11337if 11338the source string is smaller than an existing target buffer. This change 11339requires an update to the ACPI spec, and should eliminate the recent 11340AE_AML_BUFFER_LIMIT issues. 11341 11342The "implicit return" support was rewritten to a new algorithm that 11343solves 11344the general case. Rather than attempt to determine when a method is about 11345to 11346exit, the result of every ASL operator is saved momentarily until the 11347very 11348next ASL operator is executed. Therefore, no matter how the method exits, 11349there will always be a saved implicit return value. This feature is only 11350enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 11351eliminate 11352AE_AML_NO_RETURN_VALUE errors when enabled. 11353 11354Implemented implicit conversion support for the predicate (operand) of 11355the 11356If, Else, and While operators. String and Buffer arguments are 11357automatically 11358converted to Integers. 11359 11360Changed the string-to-integer conversion behavior to match the new ACPI 11361errata: "If no integer object exists, a new integer is created. The ASCII 11362string is interpreted as a hexadecimal constant. Each string character is 11363interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 11364with the first character as the most significant digit, and ending with 11365the 11366first non-hexadecimal character or end-of-string." This means that the 11367first 11368non-hex character terminates the conversion and this is the code that was 11369changed. 11370 11371Fixed a problem where the ObjectType operator would fail (fault) when 11372used 11373on an Index of a Package which pointed to a null package element. The 11374operator now properly returns zero (Uninitialized) in this case. 11375 11376Fixed a problem where the While operator used excessive memory by not 11377properly popping the result stack during execution. There was no memory 11378leak 11379after execution, however. (Code provided by Valery Podrezov.) 11380 11381Fixed a problem where references to control methods within Package 11382objects 11383caused the method to be invoked, instead of producing a reference object 11384pointing to the method. 11385 11386Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 11387to 11388improve performance and reduce code size. (Code provided by Alexey 11389Starikovskiy.) 11390 11391Code and Data Size: Current and previous core subsystem library sizes are 11392shown below. These are the code and data sizes for the acpica.lib 11393produced 11394by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11395any ACPI driver or OSPM code. The debug version of the code includes the 11396debug output trace mechanism and has a much larger code and data size. 11397Note 11398that these values will vary depending on the efficiency of the compiler 11399and 11400the compiler options used during generation. 11401 11402 Previous Release: 11403 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11404 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 11405 Current Release: 11406 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11407 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 11408 11409 114102) iASL Compiler/Disassembler: 11411 11412Fixed a problem with the Return operator with no arguments. Since the AML 11413grammar for the byte encoding requires an operand for the Return opcode, 11414the 11415compiler now emits a Return(Zero) for this case. An ACPI specification 11416update has been written for this case. 11417 11418For tables other than the DSDT, namepath optimization is automatically 11419disabled. This is because SSDTs can be loaded anywhere in the namespace, 11420the 11421compiler has no knowledge of where, and thus cannot optimize namepaths. 11422 11423Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 11424inadvertently omitted from the ACPI specification, and will require an 11425update to the spec. 11426 11427The source file scan for ASCII characters is now optional (-a). This 11428change 11429was made because some vendors place non-ascii characters within comments. 11430However, the scan is simply a brute-force byte compare to ensure all 11431characters in the file are in the range 0x00 to 0x7F. 11432 11433Fixed a problem with the CondRefOf operator where the compiler was 11434inappropriately checking for the existence of the target. Since the point 11435of 11436the operator is to check for the existence of the target at run-time, the 11437compiler no longer checks for the target existence. 11438 11439Fixed a problem where errors generated from the internal AML interpreter 11440during constant folding were not handled properly, causing a fault. 11441 11442Fixed a problem with overly aggressive range checking for the Stall 11443operator. The valid range (max 255) is now only checked if the operand is 11444of 11445type Integer. All other operand types cannot be statically checked. 11446 11447Fixed a problem where control method references within the RefOf, 11448DeRefOf, 11449and ObjectType operators were not treated properly. They are now treated 11450as 11451actual references, not method invocations. 11452 11453Fixed and enhanced the "list namespace" option (-ln). This option was 11454broken 11455a number of releases ago. 11456 11457Improved error handling for the Field, IndexField, and BankField 11458operators. 11459The compiler now cleanly reports and recovers from errors in the field 11460component (FieldUnit) list. 11461 11462Fixed a disassembler problem where the optional ResourceDescriptor fields 11463TRS and TTP were not always handled correctly. 11464 11465Disassembler - Comments in output now use "//" instead of "/*" 11466 11467---------------------------------------- 1146828 February 2005. Summary of changes for version 20050228: 11469 114701) ACPI CA Core Subsystem: 11471 11472Fixed a problem where the result of an Index() operator (an object 11473reference) must increment the reference count on the target object for 11474the 11475life of the object reference. 11476 11477Implemented AML Interpreter and Debugger support for the new ACPI 3.0 11478Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 11479WordSpace 11480resource descriptors. 11481 11482Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 11483Space Descriptor" string, indicating interpreter support for the 11484descriptors 11485above. 11486 11487Implemented header support for the new ACPI 3.0 FADT flag bits. 11488 11489Implemented header support for the new ACPI 3.0 PCI Express bits for the 11490PM1 11491status/enable registers. 11492 11493Updated header support for the MADT processor local Apic struct and MADT 11494platform interrupt source struct for new ACPI 3.0 fields. 11495 11496Implemented header support for the SRAT and SLIT ACPI tables. 11497 11498Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 11499flag 11500at runtime. 11501 11502Code and Data Size: Current and previous core subsystem library sizes are 11503shown below. These are the code and data sizes for the acpica.lib 11504produced 11505by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11506any ACPI driver or OSPM code. The debug version of the code includes the 11507debug output trace mechanism and has a much larger code and data size. 11508Note 11509that these values will vary depending on the efficiency of the compiler 11510and 11511the compiler options used during generation. 11512 11513 Previous Release: 11514 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 11515 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 11516 Current Release: 11517 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11518 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 11519 11520 115212) iASL Compiler/Disassembler: 11522 11523Fixed a problem with the internal 64-bit String-to-integer conversion 11524with 11525strings less than two characters long. 11526 11527Fixed a problem with constant folding where the result of the Index() 11528operator can not be considered a constant. This means that Index() cannot 11529be 11530a type3 opcode and this will require an update to the ACPI specification. 11531 11532Disassembler: Implemented support for the TTP, MTP, and TRS resource 11533descriptor fields. These fields were inadvertently ignored and not output 11534in 11535the disassembly of the resource descriptor. 11536 11537 11538 ---------------------------------------- 1153911 February 2005. Summary of changes for version 20050211: 11540 115411) ACPI CA Core Subsystem: 11542 11543Implemented ACPI 3.0 support for implicit conversion within the Match() 11544operator. MatchObjects can now be of type integer, buffer, or string 11545instead 11546of just type integer. Package elements are implicitly converted to the 11547type 11548of the MatchObject. This change aligns the behavior of Match() with the 11549behavior of the other logical operators (LLess(), etc.) It also requires 11550an 11551errata change to the ACPI specification as this support was intended for 11552ACPI 3.0, but was inadvertently omitted. 11553 11554Fixed a problem with the internal implicit "to buffer" conversion. 11555Strings 11556that are converted to buffers will cause buffer truncation if the string 11557is 11558smaller than the target buffer. Integers that are converted to buffers 11559will 11560not cause buffer truncation, only zero extension (both as per the ACPI 11561spec.) The problem was introduced when code was added to truncate the 11562buffer, but this should not be performed in all cases, only the string 11563case. 11564 11565Fixed a problem with the Buffer and Package operators where the 11566interpreter 11567would get confused if two such operators were used as operands to an ASL 11568operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 11569stack was not being popped after the execution of these operators, 11570resulting 11571in an AE_NO_RETURN_VALUE exception. 11572 11573Fixed a problem with constructs of the form Store(Index(...),...). The 11574reference object returned from Index was inadvertently resolved to an 11575actual 11576value. This problem was introduced in version 20050114 when the behavior 11577of 11578Store() was modified to restrict the object types that can be used as the 11579source operand (to match the ACPI specification.) 11580 11581Reduced excessive stack use within the AcpiGetObjectInfo procedure. 11582 11583Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 11584 11585Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 11586 11587Code and Data Size: Current and previous core subsystem library sizes are 11588shown below. These are the code and data sizes for the acpica.lib 11589produced 11590by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11591any ACPI driver or OSPM code. The debug version of the code includes the 11592debug output trace mechanism and has a much larger code and data size. 11593Note 11594that these values will vary depending on the efficiency of the compiler 11595and 11596the compiler options used during generation. 11597 11598 Previous Release: 11599 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 11600 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 11601 Current Release: 11602 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 11603 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 11604 11605 116062) iASL Compiler/Disassembler: 11607 11608Fixed a code generation problem in the constant folding optimization code 11609where incorrect code was generated if a constant was reduced to a buffer 11610object (i.e., a reduced type 5 opcode.) 11611 11612Fixed a typechecking problem for the ToBuffer operator. Caused by an 11613incorrect return type in the internal opcode information table. 11614 11615---------------------------------------- 1161625 January 2005. Summary of changes for version 20050125: 11617 116181) ACPI CA Core Subsystem: 11619 11620Fixed a recently introduced problem with the Global Lock where the 11621underlying semaphore was not created. This problem was introduced in 11622version 20050114, and caused an AE_AML_NO_OPERAND exception during an 11623Acquire() operation on _GL. 11624 11625The local object cache is now optional, and is disabled by default. Both 11626AcpiExec and the iASL compiler enable the cache because they run in user 11627mode and this enhances their performance. #define 11628ACPI_ENABLE_OBJECT_CACHE 11629to enable the local cache. 11630 11631Fixed an issue in the internal function AcpiUtEvaluateObject concerning 11632the 11633optional "implicit return" support where an error was returned if no 11634return 11635object was expected, but one was implicitly returned. AE_OK is now 11636returned 11637in this case and the implicitly returned object is deleted. 11638AcpiUtEvaluateObject is only occasionally used, and only to execute 11639reserved 11640methods such as _STA and _INI where the return type is known up front. 11641 11642Fixed a few issues with the internal convert-to-integer code. It now 11643returns 11644an error if an attempt is made to convert a null string, a string of only 11645blanks/tabs, or a zero-length buffer. This affects both implicit 11646conversion 11647and explicit conversion via the ToInteger() operator. 11648 11649The internal debug code in AcpiUtAcquireMutex has been commented out. It 11650is 11651not needed for normal operation and should increase the performance of 11652the 11653entire subsystem. The code remains in case it is needed for debug 11654purposes 11655again. 11656 11657The AcpiExec source and makefile are included in the Unix/Linux package 11658for 11659the first time. 11660 11661Code and Data Size: Current and previous core subsystem library sizes are 11662shown below. These are the code and data sizes for the acpica.lib 11663produced 11664by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11665any ACPI driver or OSPM code. The debug version of the code includes the 11666debug output trace mechanism and has a much larger code and data size. 11667Note 11668that these values will vary depending on the efficiency of the compiler 11669and 11670the compiler options used during generation. 11671 11672 Previous Release: 11673 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 11674 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 11675 Current Release: 11676 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 11677 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 11678 116792) iASL Compiler/Disassembler: 11680 11681Switch/Case support: A warning is now issued if the type of the Switch 11682value 11683cannot be determined at compile time. For example, Switch(Arg0) will 11684generate the warning, and the type is assumed to be an integer. As per 11685the 11686ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 11687the 11688warning. 11689 11690Switch/Case support: Implemented support for buffer and string objects as 11691the switch value. This is an ACPI 3.0 feature, now that LEqual supports 11692buffers and strings. 11693 11694Switch/Case support: The emitted code for the LEqual() comparisons now 11695uses 11696the switch value as the first operand, not the second. The case value is 11697now 11698the second operand, and this allows the case value to be implicitly 11699converted to the type of the switch value, not the other way around. 11700 11701Switch/Case support: Temporary variables are now emitted immediately 11702within 11703the control method, not at the global level. This means that there are 11704now 1170536 temps available per-method, not 36 temps per-module as was the case 11706with 11707the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 11708 11709---------------------------------------- 1171014 January 2005. Summary of changes for version 20050114: 11711 11712Added 2005 copyright to all module headers. This affects every module in 11713the core subsystem, iASL compiler, and the utilities. 11714 117151) ACPI CA Core Subsystem: 11716 11717Fixed an issue with the String-to-Buffer conversion code where the string 11718null terminator was not included in the buffer after conversion, but 11719there 11720is existing ASL that assumes the string null terminator is included. This 11721is 11722the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 11723introduced in the previous version when the code was updated to correctly 11724set the converted buffer size as per the ACPI specification. The ACPI 11725spec 11726is ambiguous and will be updated to specify that the null terminator must 11727be 11728included in the converted buffer. This also affects the ToBuffer() ASL 11729operator. 11730 11731Fixed a problem with the Mid() ASL/AML operator where it did not work 11732correctly on Buffer objects. Newly created sub-buffers were not being 11733marked 11734as initialized. 11735 11736 11737Fixed a problem in AcpiTbFindTable where incorrect string compares were 11738performed on the OemId and OemTableId table header fields. These fields 11739are 11740not null terminated, so strncmp is now used instead of strcmp. 11741 11742Implemented a restriction on the Store() ASL/AML operator to align the 11743behavior with the ACPI specification. Previously, any object could be 11744used 11745as the source operand. Now, the only objects that may be used are 11746Integers, 11747Buffers, Strings, Packages, Object References, and DDB Handles. If 11748necessary, the original behavior can be restored by enabling the 11749EnableInterpreterSlack flag. 11750 11751Enhanced the optional "implicit return" support to allow an implicit 11752return 11753value from methods that are invoked externally via the AcpiEvaluateObject 11754interface. This enables implicit returns from the _STA and _INI methods, 11755for example. 11756 11757Changed the Revision() ASL/AML operator to return the current version of 11758the 11759AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 11760returned 11761the supported ACPI version (This is the function of the _REV method). 11762 11763Updated the _REV predefined method to return the currently supported 11764version 11765of ACPI, now 3. 11766 11767Implemented batch mode option for the AcpiExec utility (-b). 11768 11769Code and Data Size: Current and previous core subsystem library sizes are 11770shown below. These are the code and data sizes for the acpica.lib 11771produced 11772by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11773any ACPI driver or OSPM code. The debug version of the code includes the 11774debug output trace mechanism and has a much larger code and data size. 11775Note 11776that these values will vary depending on the efficiency of the compiler 11777and 11778the compiler options used during generation. 11779 11780 Previous Release: 11781 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11782 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 11783 Current Release: 11784 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 11785 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 11786 11787---------------------------------------- 1178810 December 2004. Summary of changes for version 20041210: 11789 11790ACPI 3.0 support is nearing completion in both the iASL compiler and the 11791ACPI CA core subsystem. 11792 117931) ACPI CA Core Subsystem: 11794 11795Fixed a problem in the ToDecimalString operator where the resulting 11796string 11797length was incorrectly calculated. The length is now calculated exactly, 11798eliminating incorrect AE_STRING_LIMIT exceptions. 11799 11800Fixed a problem in the ToHexString operator to allow a maximum 200 11801character 11802string to be produced. 11803 11804Fixed a problem in the internal string-to-buffer and buffer-to-buffer 11805copy 11806routine where the length of the resulting buffer was not truncated to the 11807new size (if the target buffer already existed). 11808 11809Code and Data Size: Current and previous core subsystem library sizes are 11810shown below. These are the code and data sizes for the acpica.lib 11811produced 11812by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11813any ACPI driver or OSPM code. The debug version of the code includes the 11814debug output trace mechanism and has a much larger code and data size. 11815Note 11816that these values will vary depending on the efficiency of the compiler 11817and 11818the compiler options used during generation. 11819 11820 Previous Release: 11821 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11822 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 11823 Current Release: 11824 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11825 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 11826 11827 118282) iASL Compiler/Disassembler: 11829 11830Implemented the new ACPI 3.0 resource template macros - DWordSpace, 11831ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 11832Includes support in the disassembler. 11833 11834Implemented support for the new (ACPI 3.0) parameter to the Register 11835macro, 11836AccessSize. 11837 11838Fixed a problem where the _HE resource name for the Interrupt macro was 11839referencing bit 0 instead of bit 1. 11840 11841Implemented check for maximum 255 interrupts in the Interrupt macro. 11842 11843Fixed a problem with the predefined resource descriptor names where 11844incorrect AML code was generated if the offset within the resource buffer 11845was 0 or 1. The optimizer shortened the AML code to a single byte opcode 11846but did not update the surrounding package lengths. 11847 11848Changes to the Dma macro: All channels within the channel list must be 11849in 11850the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 11851optional (default is BusMaster). 11852 11853Implemented check for maximum 7 data bytes for the VendorShort macro. 11854 11855The ReadWrite parameter is now optional for the Memory32 and similar 11856macros. 11857 11858---------------------------------------- 1185903 December 2004. Summary of changes for version 20041203: 11860 118611) ACPI CA Core Subsystem: 11862 11863The low-level field insertion/extraction code (exfldio) has been 11864completely 11865rewritten to eliminate unnecessary complexity, bugs, and boundary 11866conditions. 11867 11868Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 11869ToDecimalString 11870operators where the input operand could be inadvertently deleted if no 11871conversion was necessary (e.g., if the input to ToInteger was an Integer 11872object.) 11873 11874Fixed a problem with the ToDecimalString and ToHexString where an 11875incorrect 11876exception code was returned if the resulting string would be > 200 chars. 11877AE_STRING_LIMIT is now returned. 11878 11879Fixed a problem with the Concatenate operator where AE_OK was always 11880returned, even if the operation failed. 11881 11882Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 11883semaphores to be allocated. 11884 11885Code and Data Size: Current and previous core subsystem library sizes are 11886shown below. These are the code and data sizes for the acpica.lib 11887produced 11888by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11889any ACPI driver or OSPM code. The debug version of the code includes the 11890debug output trace mechanism and has a much larger code and data size. 11891Note 11892that these values will vary depending on the efficiency of the compiler 11893and 11894the compiler options used during generation. 11895 11896 Previous Release: 11897 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11898 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11899 Current Release: 11900 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11901 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 11902 11903 119042) iASL Compiler/Disassembler: 11905 11906Fixed typechecking for the ObjectType and SizeOf operators. Problem was 11907recently introduced in 20041119. 11908 11909Fixed a problem with the ToUUID macro where the upper nybble of each 11910buffer 11911byte was inadvertently set to zero. 11912 11913---------------------------------------- 1191419 November 2004. Summary of changes for version 20041119: 11915 119161) ACPI CA Core Subsystem: 11917 11918Fixed a problem in the internal ConvertToInteger routine where new 11919integers 11920were not truncated to 32 bits for 32-bit ACPI tables. This routine 11921converts 11922buffers and strings to integers. 11923 11924Implemented support to store a value to an Index() on a String object. 11925This 11926is an ACPI 2.0 feature that had not yet been implemented. 11927 11928Implemented new behavior for storing objects to individual package 11929elements 11930(via the Index() operator). The previous behavior was to invoke the 11931implicit 11932conversion rules if an object was already present at the index. The new 11933behavior is to simply delete any existing object and directly store the 11934new 11935object. Although the ACPI specification seems unclear on this subject, 11936other 11937ACPI implementations behave in this manner. (This is the root of the 11938AE_BAD_HEX_CONSTANT issue.) 11939 11940Modified the RSDP memory scan mechanism to support the extended checksum 11941for 11942ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 11943RSDP signature is found with a valid checksum. 11944 11945Code and Data Size: Current and previous core subsystem library sizes are 11946shown below. These are the code and data sizes for the acpica.lib 11947produced 11948by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11949any ACPI driver or OSPM code. The debug version of the code includes the 11950debug output trace mechanism and has a much larger code and data size. 11951Note 11952that these values will vary depending on the efficiency of the compiler 11953and 11954the compiler options used during generation. 11955 11956 Previous Release: 11957 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11958 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11959 Current Release: 11960 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 11961 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 11962 11963 119642) iASL Compiler/Disassembler: 11965 11966Fixed a missing semicolon in the aslcompiler.y file. 11967 11968---------------------------------------- 1196905 November 2004. Summary of changes for version 20041105: 11970 119711) ACPI CA Core Subsystem: 11972 11973Implemented support for FADT revision 2. This was an interim table 11974(between 11975ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 11976 11977Implemented optional support to allow uninitialized LocalX and ArgX 11978variables in a control method. The variables are initialized to an 11979Integer 11980object with a value of zero. This support is enabled by setting the 11981AcpiGbl_EnableInterpreterSlack flag to TRUE. 11982 11983Implemented support for Integer objects for the SizeOf operator. Either 119844 11985or 8 is returned, depending on the current integer size (32-bit or 64- 11986bit, 11987depending on the parent table revision). 11988 11989Fixed a problem in the implementation of the SizeOf and ObjectType 11990operators 11991where the operand was resolved to a value too early, causing incorrect 11992return values for some objects. 11993 11994Fixed some possible memory leaks during exceptional conditions. 11995 11996Code and Data Size: Current and previous core subsystem library sizes are 11997shown below. These are the code and data sizes for the acpica.lib 11998produced 11999by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12000any ACPI driver or OSPM code. The debug version of the code includes the 12001debug output trace mechanism and has a much larger code and data size. 12002Note 12003that these values will vary depending on the efficiency of the compiler 12004and 12005the compiler options used during generation. 12006 12007 Previous Release: 12008 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12009 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 12010 Current Release: 12011 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12012 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12013 12014 120152) iASL Compiler/Disassembler: 12016 12017Implemented support for all ACPI 3.0 reserved names and methods. 12018 12019Implemented all ACPI 3.0 grammar elements in the front-end, including 12020support for semicolons. 12021 12022Implemented the ACPI 3.0 Function() and ToUUID() macros 12023 12024Fixed a problem in the disassembler where a Scope() operator would not be 12025emitted properly if the target of the scope was in another table. 12026 12027---------------------------------------- 1202815 October 2004. Summary of changes for version 20041015: 12029 12030Note: ACPI CA is currently undergoing an in-depth and complete formal 12031evaluation to test/verify the following areas. Other suggestions are 12032welcome. This will result in an increase in the frequency of releases and 12033the number of bug fixes in the next few months. 12034 - Functional tests for all ASL/AML operators 12035 - All implicit/explicit type conversions 12036 - Bit fields and operation regions 12037 - 64-bit math support and 32-bit-only "truncated" math support 12038 - Exceptional conditions, both compiler and interpreter 12039 - Dynamic object deletion and memory leaks 12040 - ACPI 3.0 support when implemented 12041 - External interfaces to the ACPI subsystem 12042 12043 120441) ACPI CA Core Subsystem: 12045 12046Fixed two alignment issues on 64-bit platforms - within debug statements 12047in 12048AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 12049Address 12050field within the non-aligned ACPI generic address structure. 12051 12052Fixed a problem in the Increment and Decrement operators where incorrect 12053operand resolution could result in the inadvertent modification of the 12054original integer when the integer is passed into another method as an 12055argument and the arg is then incremented/decremented. 12056 12057Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 12058bit 12059BCD number were truncated during conversion. 12060 12061Fixed a problem in the ToDecimal operator where the length of the 12062resulting 12063string could be set incorrectly too long if the input operand was a 12064Buffer 12065object. 12066 12067Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 12068(0) 12069within a buffer would prematurely terminate a compare between buffer 12070objects. 12071 12072Added a check for string overflow (>200 characters as per the ACPI 12073specification) during the Concatenate operator with two string operands. 12074 12075Code and Data Size: Current and previous core subsystem library sizes are 12076shown below. These are the code and data sizes for the acpica.lib 12077produced 12078by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12079any ACPI driver or OSPM code. The debug version of the code includes the 12080debug output trace mechanism and has a much larger code and data size. 12081Note 12082that these values will vary depending on the efficiency of the compiler 12083and 12084the compiler options used during generation. 12085 12086 Previous Release: 12087 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12088 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 12089 Current Release: 12090 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12091 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 12092 12093 12094 120952) iASL Compiler/Disassembler: 12096 12097Allow the use of the ObjectType operator on uninitialized Locals and Args 12098(returns 0 as per the ACPI specification). 12099 12100Fixed a problem where the compiler would fault if there was a syntax 12101error 12102in the FieldName of all of the various CreateXXXField operators. 12103 12104Disallow the use of lower case letters within the EISAID macro, as per 12105the 12106ACPI specification. All EISAID strings must be of the form "UUUNNNN" 12107Where 12108U is an uppercase letter and N is a hex digit. 12109 12110 12111---------------------------------------- 1211206 October 2004. Summary of changes for version 20041006: 12113 121141) ACPI CA Core Subsystem: 12115 12116Implemented support for the ACPI 3.0 Timer operator. This ASL function 12117implements a 64-bit timer with 100 nanosecond granularity. 12118 12119Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 12120implement the ACPI 3.0 Timer operator. This allows the host OS to 12121implement 12122the timer with the best clock available. Also, it keeps the core 12123subsystem 12124out of the clock handling business, since the host OS (usually) performs 12125this function. 12126 12127Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 12128functions use a 64-bit address which is part of the packed ACPI Generic 12129Address Structure. Since the structure is non-aligned, the alignment 12130macros 12131are now used to extract the address to a local variable before use. 12132 12133Fixed a problem where the ToInteger operator assumed all input strings 12134were 12135hexadecimal. The operator now handles both decimal strings and hex 12136strings 12137(prefixed with "0x"). 12138 12139Fixed a problem where the string length in the string object created as a 12140result of the internal ConvertToString procedure could be incorrect. This 12141potentially affected all implicit conversions and also the 12142ToDecimalString 12143and ToHexString operators. 12144 12145Fixed two problems in the ToString operator. If the length parameter was 12146zero, an incorrect string object was created and the value of the input 12147length parameter was inadvertently changed from zero to Ones. 12148 12149Fixed a problem where the optional ResourceSource string in the 12150ExtendedIRQ 12151resource macro was ignored. 12152 12153Simplified the interfaces to the internal division functions, reducing 12154code 12155size and complexity. 12156 12157Code and Data Size: Current and previous core subsystem library sizes are 12158shown below. These are the code and data sizes for the acpica.lib 12159produced 12160by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12161any ACPI driver or OSPM code. The debug version of the code includes the 12162debug output trace mechanism and has a much larger code and data size. 12163Note 12164that these values will vary depending on the efficiency of the compiler 12165and 12166the compiler options used during generation. 12167 12168 Previous Release: 12169 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 12170 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 12171 Current Release: 12172 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12173 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 12174 12175 121762) iASL Compiler/Disassembler: 12177 12178Implemented support for the ACPI 3.0 Timer operator. 12179 12180Fixed a problem where the Default() operator was inadvertently ignored in 12181a 12182Switch/Case block. This was a problem in the translation of the Switch 12183statement to If...Else pairs. 12184 12185Added support to allow a standalone Return operator, with no parentheses 12186(or 12187operands). 12188 12189Fixed a problem with code generation for the ElseIf operator where the 12190translated Else...If parse tree was improperly constructed leading to the 12191loss of some code. 12192 12193---------------------------------------- 1219422 September 2004. Summary of changes for version 20040922: 12195 121961) ACPI CA Core Subsystem: 12197 12198Fixed a problem with the implementation of the LNot() operator where 12199"Ones" 12200was not returned for the TRUE case. Changed the code to return Ones 12201instead 12202of (!Arg) which was usually 1. This change affects iASL constant folding 12203for 12204this operator also. 12205 12206Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 12207not 12208initialized properly -- Now zero the entire buffer in this case where the 12209buffer already exists. 12210 12211Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 12212Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 12213related code considerably. This will require changes/updates to all OS 12214interface layers (OSLs.) 12215 12216Implemented a new external interface, AcpiInstallExceptionHandler, to 12217allow 12218a system exception handler to be installed. This handler is invoked upon 12219any 12220run-time exception that occurs during control method execution. 12221 12222Added support for the DSDT in AcpiTbFindTable. This allows the 12223DataTableRegion() operator to access the local copy of the DSDT. 12224 12225Code and Data Size: Current and previous core subsystem library sizes are 12226shown below. These are the code and data sizes for the acpica.lib 12227produced 12228by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12229any ACPI driver or OSPM code. The debug version of the code includes the 12230debug output trace mechanism and has a much larger code and data size. 12231Note 12232that these values will vary depending on the efficiency of the compiler 12233and 12234the compiler options used during generation. 12235 12236 Previous Release: 12237 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 12238 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 12239 Current Release: 12240 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 12241 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 12242 12243 122442) iASL Compiler/Disassembler: 12245 12246Fixed a problem with constant folding and the LNot operator. LNot was 12247returning 1 in the TRUE case, not Ones as per the ACPI specification. 12248This 12249could result in the generation of an incorrect folded/reduced constant. 12250 12251End-Of-File is now allowed within a "//"-style comment. A parse error no 12252longer occurs if such a comment is at the very end of the input ASL 12253source 12254file. 12255 12256Implemented the "-r" option to override the Revision in the table header. 12257The initial use of this option will be to simplify the evaluation of the 12258AML 12259interpreter by allowing a single ASL source module to be compiled for 12260either 1226132-bit or 64-bit integers. 12262 12263 12264---------------------------------------- 1226527 August 2004. Summary of changes for version 20040827: 12266 122671) ACPI CA Core Subsystem: 12268 12269- Implemented support for implicit object conversion in the non-numeric 12270logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 12271and 12272LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 12273the second operand is implicitly converted on the fly to match the type 12274of 12275the first operand. For example: 12276 12277 LEqual (Source1, Source2) 12278 12279Source1 and Source2 must each evaluate to an integer, a string, or a 12280buffer. 12281The data type of Source1 dictates the required type of Source2. Source2 12282is 12283implicitly converted if necessary to match the type of Source1. 12284 12285- Updated and corrected the behavior of the string conversion support. 12286The 12287rules concerning conversion of buffers to strings (according to the ACPI 12288specification) are as follows: 12289 12290ToDecimalString - explicit byte-wise conversion of buffer to string of 12291decimal values (0-255) separated by commas. ToHexString - explicit byte- 12292wise 12293conversion of buffer to string of hex values (0-FF) separated by commas. 12294ToString - explicit byte-wise conversion of buffer to string. Byte-by- 12295byte 12296copy with no transform except NULL terminated. Any other implicit buffer- 12297to- 12298string conversion - byte-wise conversion of buffer to string of hex 12299values 12300(0-FF) separated by spaces. 12301 12302- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 12303 12304- Fixed a problem in AcpiNsGetPathnameLength where the returned length 12305was 12306one byte too short in the case of a node in the root scope. This could 12307cause a fault during debug output. 12308 12309- Code and Data Size: Current and previous core subsystem library sizes 12310are 12311shown below. These are the code and data sizes for the acpica.lib 12312produced 12313by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12314any ACPI driver or OSPM code. The debug version of the code includes the 12315debug output trace mechanism and has a much larger code and data size. 12316Note 12317that these values will vary depending on the efficiency of the compiler 12318and 12319the compiler options used during generation. 12320 12321 Previous Release: 12322 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 12323 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 12324 Current Release: 12325 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 12326 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 12327 12328 123292) iASL Compiler/Disassembler: 12330 12331- Fixed a Linux generation error. 12332 12333 12334---------------------------------------- 1233516 August 2004. Summary of changes for version 20040816: 12336 123371) ACPI CA Core Subsystem: 12338 12339Designed and implemented support within the AML interpreter for the so- 12340called "implicit return". This support returns the result of the last 12341ASL 12342operation within a control method, in the absence of an explicit Return() 12343operator. A few machines depend on this behavior, even though it is not 12344explicitly supported by the ASL language. It is optional support that 12345can 12346be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 12347 12348Removed support for the PCI_Config address space from the internal low 12349level 12350hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 12351support was not used internally, and would not work correctly anyway 12352because 12353the PCI bus number and segment number were not supported. There are 12354separate interfaces for PCI configuration space access because of the 12355unique 12356interface. 12357 12358Code and Data Size: Current and previous core subsystem library sizes are 12359shown below. These are the code and data sizes for the acpica.lib 12360produced 12361by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12362any ACPI driver or OSPM code. The debug version of the code includes the 12363debug output trace mechanism and has a much larger code and data size. 12364Note 12365that these values will vary depending on the efficiency of the compiler 12366and 12367the compiler options used during generation. 12368 12369 Previous Release: 12370 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12371 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 12372 Current Release: 12373 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 12374 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 12375 12376 123772) iASL Compiler/Disassembler: 12378 12379Fixed a problem where constants in ASL expressions at the root level (not 12380within a control method) could be inadvertently truncated during code 12381generation. This problem was introduced in the 20040715 release. 12382 12383 12384---------------------------------------- 1238515 July 2004. Summary of changes for version 20040715: 12386 123871) ACPI CA Core Subsystem: 12388 12389Restructured the internal HW GPE interfaces to pass/track the current 12390state 12391of interrupts (enabled/disabled) in order to avoid possible deadlock and 12392increase flexibility of the interfaces. 12393 12394Implemented a "lexicographical compare" for String and Buffer objects 12395within 12396the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 12397- 12398as per further clarification to the ACPI specification. Behavior is 12399similar 12400to C library "strcmp". 12401 12402Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 12403external function. In the 32-bit non-debug case, the stack use has been 12404reduced from 168 bytes to 32 bytes. 12405 12406Deployed a new run-time configuration flag, 12407AcpiGbl_EnableInterpreterSlack, 12408whose purpose is to allow the AML interpreter to forgive certain bad AML 12409constructs. Default setting is FALSE. 12410 12411Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 12412IO 12413support code. If enabled, it allows field access to go beyond the end of 12414a 12415region definition if the field is within the region length rounded up to 12416the 12417next access width boundary (a common coding error.) 12418 12419Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 12420ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 12421these 12422symbols are lowercased by the latest version of the AcpiSrc tool. 12423 12424The prototypes for the PCI interfaces in acpiosxf.h have been updated to 12425rename "Register" to simply "Reg" to prevent certain compilers from 12426complaining. 12427 12428Code and Data Size: Current and previous core subsystem library sizes are 12429shown below. These are the code and data sizes for the acpica.lib 12430produced 12431by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12432any ACPI driver or OSPM code. The debug version of the code includes the 12433debug output trace mechanism and has a much larger code and data size. 12434Note 12435that these values will vary depending on the efficiency of the compiler 12436and 12437the compiler options used during generation. 12438 12439 Previous Release: 12440 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12441 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 12442 Current Release: 12443 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12444 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 12445 12446 124472) iASL Compiler/Disassembler: 12448 12449Implemented full support for Package objects within the Case() operator. 12450Note: The Break() operator is currently not supported within Case blocks 12451(TermLists) as there is some question about backward compatibility with 12452ACPI 124531.0 interpreters. 12454 12455 12456Fixed a problem where complex terms were not supported properly within 12457the 12458Switch() operator. 12459 12460Eliminated extraneous warning for compiler-emitted reserved names of the 12461form "_T_x". (Used in Switch/Case operators.) 12462 12463Eliminated optimization messages for "_T_x" objects and small constants 12464within the DefinitionBlock operator. 12465 12466 12467---------------------------------------- 1246815 June 2004. Summary of changes for version 20040615: 12469 124701) ACPI CA Core Subsystem: 12471 12472Implemented support for Buffer and String objects (as per ACPI 2.0) for 12473the 12474following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 12475LLessEqual. 12476 12477All directory names in the entire source package are lower case, as they 12478were in earlier releases. 12479 12480Implemented "Disassemble" command in the AML debugger that will 12481disassemble 12482a single control method. 12483 12484Code and Data Size: Current and previous core subsystem library sizes are 12485shown below. These are the code and data sizes for the acpica.lib 12486produced 12487by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12488any ACPI driver or OSPM code. The debug version of the code includes the 12489debug output trace mechanism and has a much larger code and data size. 12490Note 12491that these values will vary depending on the efficiency of the compiler 12492and 12493the compiler options used during generation. 12494 12495 Previous Release: 12496 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 12497 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 12498 12499 Current Release: 12500 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12501 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 12502 12503 125042) iASL Compiler/Disassembler: 12505 12506Implemented support for Buffer and String objects (as per ACPI 2.0) for 12507the 12508following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 12509LLessEqual. 12510 12511All directory names in the entire source package are lower case, as they 12512were in earlier releases. 12513 12514Fixed a fault when using the -g or -d<nofilename> options if the FADT was 12515not found. 12516 12517Fixed an issue with the Windows version of the compiler where later 12518versions 12519of Windows place the FADT in the registry under the name "FADT" and not 12520"FACP" as earlier versions did. This applies when using the -g or - 12521d<nofilename> options. The compiler now looks for both strings as 12522necessary. 12523 12524Fixed a problem with compiler namepath optimization where a namepath 12525within 12526the Scope() operator could not be optimized if the namepath was a subpath 12527of 12528the current scope path. 12529 12530---------------------------------------- 1253127 May 2004. Summary of changes for version 20040527: 12532 125331) ACPI CA Core Subsystem: 12534 12535Completed a new design and implementation for EBDA (Extended BIOS Data 12536Area) 12537support in the RSDP scan code. The original code improperly scanned for 12538the 12539EBDA by simply scanning from memory location 0 to 0x400. The correct 12540method 12541is to first obtain the EBDA pointer from within the BIOS data area, then 12542scan 1K of memory starting at the EBDA pointer. There appear to be few 12543if 12544any machines that place the RSDP in the EBDA, however. 12545 12546Integrated a fix for a possible fault during evaluation of BufferField 12547arguments. Obsolete code that was causing the problem was removed. 12548 12549Found and fixed a problem in the Field Support Code where data could be 12550corrupted on a bit field read that starts on an aligned boundary but does 12551not end on an aligned boundary. Merged the read/write "datum length" 12552calculation code into a common procedure. 12553 12554Rolled in a couple of changes to the FreeBSD-specific header. 12555 12556 12557Code and Data Size: Current and previous core subsystem library sizes are 12558shown below. These are the code and data sizes for the acpica.lib 12559produced 12560by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12561any ACPI driver or OSPM code. The debug version of the code includes the 12562debug output trace mechanism and has a much larger code and data size. 12563Note 12564that these values will vary depending on the efficiency of the compiler 12565and 12566the compiler options used during generation. 12567 12568 Previous Release: 12569 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12570 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 12571 Current Release: 12572 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 12573 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 12574 12575 125762) iASL Compiler/Disassembler: 12577 12578Fixed a generation warning produced by some overly-verbose compilers for 12579a 1258064-bit constant. 12581 12582---------------------------------------- 1258314 May 2004. Summary of changes for version 20040514: 12584 125851) ACPI CA Core Subsystem: 12586 12587Fixed a problem where hardware GPE enable bits sometimes not set properly 12588during and after GPE method execution. Result of 04/27 changes. 12589 12590Removed extra "clear all GPEs" when sleeping/waking. 12591 12592Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 12593AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 12594to 12595the new AcpiEv* calls as appropriate. 12596 12597ACPI_OS_NAME was removed from the OS-specific headers. The default name 12598is 12599now "Microsoft Windows NT" for maximum compatibility. However this can 12600be 12601changed by modifying the acconfig.h file. 12602 12603Allow a single invocation of AcpiInstallNotifyHandler for a handler that 12604traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 12605 12606Run _INI methods on ThermalZone objects. This is against the ACPI 12607specification, but there is apparently ASL code in the field that has 12608these 12609_INI methods, and apparently "other" AML interpreters execute them. 12610 12611Performed a full 16/32/64 bit lint that resulted in some small changes. 12612 12613Added a sleep simulation command to the AML debugger to test sleep code. 12614 12615Code and Data Size: Current and previous core subsystem library sizes are 12616shown below. These are the code and data sizes for the acpica.lib 12617produced 12618by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12619any ACPI driver or OSPM code. The debug version of the code includes the 12620debug output trace mechanism and has a much larger code and data size. 12621Note 12622that these values will vary depending on the efficiency of the compiler 12623and 12624the compiler options used during generation. 12625 12626 Previous Release: 12627 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12628 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 12629 Current Release: 12630 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12631 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 12632 12633---------------------------------------- 1263427 April 2004. Summary of changes for version 20040427: 12635 126361) ACPI CA Core Subsystem: 12637 12638Completed a major overhaul of the GPE handling within ACPI CA. There are 12639now three types of GPEs: wake-only, runtime-only, and combination 12640wake/run. 12641The only GPEs allowed to be combination wake/run are for button-style 12642devices such as a control-method power button, control-method sleep 12643button, 12644or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 12645not 12646referenced by any _PRW methods are marked for "runtime" and hardware 12647enabled. Any GPE that is referenced by a _PRW method is marked for 12648"wake" 12649(and disabled at runtime). However, at sleep time, only those GPEs that 12650have been specifically enabled for wake via the AcpiEnableGpe interface 12651will 12652actually be hardware enabled. 12653 12654A new external interface has been added, AcpiSetGpeType(), that is meant 12655to 12656be used by device drivers to force a GPE to a particular type. It will 12657be 12658especially useful for the drivers for the button devices mentioned above. 12659 12660Completed restructuring of the ACPI CA initialization sequence so that 12661default operation region handlers are installed before GPEs are 12662initialized 12663and the _PRW methods are executed. This will prevent errors when the 12664_PRW 12665methods attempt to access system memory or I/O space. 12666 12667GPE enable/disable no longer reads the GPE enable register. We now keep 12668the 12669enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 12670thus no longer depend on the hardware to maintain these bits. 12671 12672Always clear the wake status and fixed/GPE status bits before sleep, even 12673for state S5. 12674 12675Improved the AML debugger output for displaying the GPE blocks and their 12676current status. 12677 12678Added new strings for the _OSI method, of the form "Windows 2001 SPx" 12679where 12680x = 0,1,2,3,4. 12681 12682Fixed a problem where the physical address was incorrectly calculated 12683when 12684the Load() operator was used to directly load from an Operation Region 12685(vs. 12686loading from a Field object.) Also added check for minimum table length 12687for 12688this case. 12689 12690Fix for multiple mutex acquisition. Restore original thread SyncLevel on 12691mutex release. 12692 12693Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 12694consistency with the other fields returned. 12695 12696Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 12697structure for each GPE in the system, so the size of this structure is 12698important. 12699 12700CPU stack requirement reduction: Cleaned up the method execution and 12701object 12702evaluation paths so that now a parameter structure is passed, instead of 12703copying the various method parameters over and over again. 12704 12705In evregion.c: Correctly exit and reenter the interpreter region if and 12706only if dispatching an operation region request to a user-installed 12707handler. 12708Do not exit/reenter when dispatching to a default handler (e.g., default 12709system memory or I/O handlers) 12710 12711 12712Notes for updating drivers for the new GPE support. The following 12713changes 12714must be made to ACPI-related device drivers that are attached to one or 12715more 12716GPEs: (This information will be added to the ACPI CA Programmer 12717Reference.) 12718 127191) AcpiInstallGpeHandler no longer automatically enables the GPE, you 12720must 12721explicitly call AcpiEnableGpe. 127222) There is a new interface called AcpiSetGpeType. This should be called 12723before enabling the GPE. Also, this interface will automatically disable 12724the GPE if it is currently enabled. 127253) AcpiEnableGpe no longer supports a GPE type flag. 12726 12727Specific drivers that must be changed: 127281) EC driver: 12729 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 12730AeGpeHandler, NULL); 12731 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 12732 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 12733 127342) Button Drivers (Power, Lid, Sleep): 12735Run _PRW method under parent device 12736If _PRW exists: /* This is a control-method button */ 12737 Extract GPE number and possibly GpeDevice 12738 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 12739 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 12740 12741For all other devices that have _PRWs, we automatically set the GPE type 12742to 12743ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 12744This 12745must be done on a selective basis, usually requiring some kind of user 12746app 12747to allow the user to pick the wake devices. 12748 12749 12750Code and Data Size: Current and previous core subsystem library sizes are 12751shown below. These are the code and data sizes for the acpica.lib 12752produced 12753by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12754any ACPI driver or OSPM code. The debug version of the code includes the 12755debug output trace mechanism and has a much larger code and data size. 12756Note 12757that these values will vary depending on the efficiency of the compiler 12758and 12759the compiler options used during generation. 12760 12761 Previous Release: 12762 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 12763 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 12764 Current Release: 12765 12766 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12767 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 12768 12769 12770 12771---------------------------------------- 1277202 April 2004. Summary of changes for version 20040402: 12773 127741) ACPI CA Core Subsystem: 12775 12776Fixed an interpreter problem where an indirect store through an ArgX 12777parameter was incorrectly applying the "implicit conversion rules" during 12778the store. From the ACPI specification: "If the target is a method local 12779or 12780argument (LocalX or ArgX), no conversion is performed and the result is 12781stored directly to the target". The new behavior is to disable implicit 12782conversion during ALL stores to an ArgX. 12783 12784Changed the behavior of the _PRW method scan to ignore any and all errors 12785returned by a given _PRW. This prevents the scan from aborting from the 12786failure of any single _PRW. 12787 12788Moved the runtime configuration parameters from the global init procedure 12789to 12790static variables in acglobal.h. This will allow the host to override the 12791default values easily. 12792 12793Code and Data Size: Current and previous core subsystem library sizes are 12794shown below. These are the code and data sizes for the acpica.lib 12795produced 12796by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12797any ACPI driver or OSPM code. The debug version of the code includes the 12798debug output trace mechanism and has a much larger code and data size. 12799Note 12800that these values will vary depending on the efficiency of the compiler 12801and 12802the compiler options used during generation. 12803 12804 Previous Release: 12805 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 12806 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 12807 Current Release: 12808 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 12809 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 12810 12811 128122) iASL Compiler/Disassembler: 12813 12814iASL now fully disassembles SSDTs. However, External() statements are 12815not 12816generated automatically for unresolved symbols at this time. This is a 12817planned feature for future implementation. 12818 12819Fixed a scoping problem in the disassembler that occurs when the type of 12820the 12821target of a Scope() operator is overridden. This problem caused an 12822incorrectly nested internal namespace to be constructed. 12823 12824Any warnings or errors that are emitted during disassembly are now 12825commented 12826out automatically so that the resulting file can be recompiled without 12827any 12828hand editing. 12829 12830---------------------------------------- 1283126 March 2004. Summary of changes for version 20040326: 12832 128331) ACPI CA Core Subsystem: 12834 12835Implemented support for "wake" GPEs via interaction between GPEs and the 12836_PRW methods. Every GPE that is pointed to by one or more _PRWs is 12837identified as a WAKE GPE and by default will no longer be enabled at 12838runtime. Previously, we were blindly enabling all GPEs with a 12839corresponding 12840_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 12841We 12842believe this has been the cause of thousands of "spurious" GPEs on some 12843systems. 12844 12845This new GPE behavior is can be reverted to the original behavior (enable 12846ALL GPEs at runtime) via a runtime flag. 12847 12848Fixed a problem where aliased control methods could not access objects 12849properly. The proper scope within the namespace was not initialized 12850(transferred to the target of the aliased method) before executing the 12851target method. 12852 12853Fixed a potential race condition on internal object deletion on the 12854return 12855object in AcpiEvaluateObject. 12856 12857Integrated a fix for resource descriptors where both _MEM and _MTP were 12858being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 12859wide, 0x0F instead of 0x03.) 12860 12861Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 12862preventing 12863a 12864fault in some cases. 12865 12866Updated Notify() values for debug statements in evmisc.c 12867 12868Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 12869 12870Code and Data Size: Current and previous core subsystem library sizes are 12871shown below. These are the code and data sizes for the acpica.lib 12872produced 12873by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12874any ACPI driver or OSPM code. The debug version of the code includes the 12875debug output trace mechanism and has a much larger code and data size. 12876Note 12877that these values will vary depending on the efficiency of the compiler 12878and 12879the compiler options used during generation. 12880 12881 Previous Release: 12882 12883 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 12884 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 12885 Current Release: 12886 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 12887 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 12888 12889---------------------------------------- 1289011 March 2004. Summary of changes for version 20040311: 12891 128921) ACPI CA Core Subsystem: 12893 12894Fixed a problem where errors occurring during the parse phase of control 12895method execution did not abort cleanly. For example, objects created and 12896installed in the namespace were not deleted. This caused all subsequent 12897invocations of the method to return the AE_ALREADY_EXISTS exception. 12898 12899Implemented a mechanism to force a control method to "Serialized" 12900execution 12901if the method attempts to create namespace objects. (The root of the 12902AE_ALREADY_EXISTS problem.) 12903 12904Implemented support for the predefined _OSI "internal" control method. 12905Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 12906and 12907"Windows 2001.1", and can be easily upgraded for new strings as 12908necessary. 12909This feature will allow "other" operating systems to execute the fully 12910tested, "Windows" code path through the ASL code 12911 12912Global Lock Support: Now allows multiple acquires and releases with any 12913internal thread. Removed concept of "owning thread" for this special 12914mutex. 12915 12916Fixed two functions that were inappropriately declaring large objects on 12917the 12918CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 12919during 12920method execution considerably. 12921 12922Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 12923S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 12924 12925Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 12926defined on the machine. 12927 12928Implemented two runtime options: One to force all control method 12929execution 12930to "Serialized" to mimic Windows behavior, another to disable _OSI 12931support 12932if it causes problems on a given machine. 12933 12934Code and Data Size: Current and previous core subsystem library sizes are 12935shown below. These are the code and data sizes for the acpica.lib 12936produced 12937by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12938any ACPI driver or OSPM code. The debug version of the code includes the 12939debug output trace mechanism and has a much larger code and data size. 12940Note 12941that these values will vary depending on the efficiency of the compiler 12942and 12943the compiler options used during generation. 12944 12945 Previous Release: 12946 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 12947 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 12948 Current Release: 12949 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 12950 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 12951 129522) iASL Compiler/Disassembler: 12953 12954Fixed an array size problem for FreeBSD that would cause the compiler to 12955fault. 12956 12957---------------------------------------- 1295820 February 2004. Summary of changes for version 20040220: 12959 12960 129611) ACPI CA Core Subsystem: 12962 12963Implemented execution of _SxD methods for Device objects in the 12964GetObjectInfo interface. 12965 12966Fixed calls to _SST method to pass the correct arguments. 12967 12968Added a call to _SST on wake to restore to "working" state. 12969 12970Check for End-Of-Buffer failure case in the WalkResources interface. 12971 12972Integrated fix for 64-bit alignment issue in acglobal.h by moving two 12973structures to the beginning of the file. 12974 12975After wake, clear GPE status register(s) before enabling GPEs. 12976 12977After wake, clear/enable power button. (Perhaps we should clear/enable 12978all 12979fixed events upon wake.) 12980 12981Fixed a couple of possible memory leaks in the Namespace manager. 12982 12983Integrated latest acnetbsd.h file. 12984 12985---------------------------------------- 1298611 February 2004. Summary of changes for version 20040211: 12987 12988 129891) ACPI CA Core Subsystem: 12990 12991Completed investigation and implementation of the call-by-reference 12992mechanism for control method arguments. 12993 12994Fixed a problem where a store of an object into an indexed package could 12995fail if the store occurs within a different method than the method that 12996created the package. 12997 12998Fixed a problem where the ToDecimal operator could return incorrect 12999results. 13000 13001Fixed a problem where the CopyObject operator could fail on some of the 13002more 13003obscure objects (e.g., Reference objects.) 13004 13005Improved the output of the Debug object to display buffer, package, and 13006index objects. 13007 13008Fixed a problem where constructs of the form "RefOf (ArgX)" did not 13009return 13010the expected result. 13011 13012Added permanent ACPI_REPORT_ERROR macros for all instances of the 13013ACPI_AML_INTERNAL exception. 13014 13015Integrated latest version of acfreebsd.h 13016 13017---------------------------------------- 1301816 January 2004. Summary of changes for version 20040116: 13019 13020The purpose of this release is primarily to update the copyright years in 13021each module, thus causing a huge number of diffs. There are a few small 13022functional changes, however. 13023 130241) ACPI CA Core Subsystem: 13025 13026Improved error messages when there is a problem finding one or more of 13027the 13028required base ACPI tables 13029 13030Reintroduced the definition of APIC_HEADER in actbl.h 13031 13032Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 13033 13034Removed extraneous reference to NewObj in dsmthdat.c 13035 130362) iASL compiler 13037 13038Fixed a problem introduced in December that disabled the correct 13039disassembly 13040of Resource Templates 13041 13042 13043---------------------------------------- 1304403 December 2003. Summary of changes for version 20031203: 13045 130461) ACPI CA Core Subsystem: 13047 13048Changed the initialization of Operation Regions during subsystem 13049init to perform two entire walks of the ACPI namespace; The first 13050to initialize the regions themselves, the second to execute the 13051_REG methods. This fixed some interdependencies across _REG 13052methods found on some machines. 13053 13054Fixed a problem where a Store(Local0, Local1) could simply update 13055the object reference count, and not create a new copy of the 13056object if the Local1 is uninitialized. 13057 13058Implemented support for the _SST reserved method during sleep 13059transitions. 13060 13061Implemented support to clear the SLP_TYP and SLP_EN bits when 13062waking up, this is apparently required by some machines. 13063 13064When sleeping, clear the wake status only if SleepState is not S5. 13065 13066Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 13067pointer arithmetic advanced a string pointer too far. 13068 13069Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 13070could be returned if the requested table has not been loaded. 13071 13072Within the support for IRQ resources, restructured the handling of 13073the active and edge/level bits. 13074 13075Fixed a few problems in AcpiPsxExecute() where memory could be 13076leaked under certain error conditions. 13077 13078Improved error messages for the cases where the ACPI mode could 13079not be entered. 13080 13081Code and Data Size: Current and previous core subsystem library 13082sizes are shown below. These are the code and data sizes for the 13083acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13084these values do not include any ACPI driver or OSPM code. The 13085debug version of the code includes the debug output trace 13086mechanism and has a much larger code and data size. Note that 13087these values will vary depending on the efficiency of the compiler 13088and the compiler options used during generation. 13089 13090 Previous Release (20031029): 13091 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 13092 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 13093 Current Release: 13094 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 13095 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 13096 130972) iASL Compiler/Disassembler: 13098 13099Implemented a fix for the iASL disassembler where a bad index was 13100generated. This was most noticeable on 64-bit platforms 13101 13102 13103---------------------------------------- 1310429 October 2003. Summary of changes for version 20031029: 13105 131061) ACPI CA Core Subsystem: 13107 13108 13109Fixed a problem where a level-triggered GPE with an associated 13110_Lxx control method was incorrectly cleared twice. 13111 13112Fixed a problem with the Field support code where an access can 13113occur beyond the end-of-region if the field is non-aligned but 13114extends to the very end of the parent region (resulted in an 13115AE_AML_REGION_LIMIT exception.) 13116 13117Fixed a problem with ACPI Fixed Events where an RT Clock handler 13118would not get invoked on an RTC event. The RTC event bitmasks for 13119the PM1 registers were not being initialized properly. 13120 13121Implemented support for executing _STA and _INI methods for 13122Processor objects. Although this is currently not part of the 13123ACPI specification, there is existing ASL code that depends on the 13124init-time execution of these methods. 13125 13126Implemented and deployed a GetDescriptorName function to decode 13127the various types of internal descriptors. Guards against null 13128descriptors during debug output also. 13129 13130Implemented and deployed a GetNodeName function to extract the 4- 13131character namespace node name. This function simplifies the debug 13132and error output, as well as guarding against null pointers during 13133output. 13134 13135Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 13136simplify the debug and error output of 64-bit integers. This 13137macro replaces the HIDWORD and LODWORD macros for dumping these 13138integers. 13139 13140Updated the implementation of the Stall() operator to only call 13141AcpiOsStall(), and also return an error if the operand is larger 13142than 255. This preserves the required behavior of not 13143relinquishing the processor, as would happen if AcpiOsSleep() was 13144called for "long stalls". 13145 13146Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 13147initialized are now treated as NOOPs. 13148 13149Cleaned up a handful of warnings during 64-bit generation. 13150 13151Fixed a reported error where and incorrect GPE number was passed 13152to the GPE dispatch handler. This value is only used for error 13153output, however. Used this opportunity to clean up and streamline 13154the GPE dispatch code. 13155 13156Code and Data Size: Current and previous core subsystem library 13157sizes are shown below. These are the code and data sizes for the 13158acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13159these values do not include any ACPI driver or OSPM code. The 13160 13161debug version of the code includes the debug output trace 13162mechanism and has a much larger code and data size. Note that 13163these values will vary depending on the efficiency of the compiler 13164and the compiler options used during generation. 13165 13166 Previous Release (20031002): 13167 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 13168 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 13169 Current Release: 13170 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 13171 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 13172 13173 131742) iASL Compiler/Disassembler: 13175 13176Updated the iASL compiler to return an error if the operand to the 13177Stall() operator is larger than 255. 13178 13179 13180---------------------------------------- 1318102 October 2003. Summary of changes for version 20031002: 13182 13183 131841) ACPI CA Core Subsystem: 13185 13186Fixed a problem with Index Fields where the index was not 13187incremented for fields that require multiple writes to the 13188index/data registers (Fields that are wider than the data 13189register.) 13190 13191Fixed a problem with all Field objects where a write could go 13192beyond the end-of-field if the field was larger than the access 13193granularity and therefore required multiple writes to complete the 13194request. An extra write beyond the end of the field could happen 13195inadvertently. 13196 13197Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 13198would incorrectly be returned if the width of the Data Register 13199was larger than the specified field access width. 13200 13201Completed fixes for LoadTable() and Unload() and verified their 13202operation. Implemented full support for the "DdbHandle" object 13203throughout the ACPI CA subsystem. 13204 13205Implemented full support for the MADT and ECDT tables in the ACPI 13206CA header files. Even though these tables are not directly 13207consumed by ACPI CA, the header definitions are useful for ACPI 13208device drivers. 13209 13210Integrated resource descriptor fixes posted to the Linux ACPI 13211list. This included checks for minimum descriptor length, and 13212support for trailing NULL strings within descriptors that have 13213optional string elements. 13214 13215Code and Data Size: Current and previous core subsystem library 13216sizes are shown below. These are the code and data sizes for the 13217acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13218these values do not include any ACPI driver or OSPM code. The 13219debug version of the code includes the debug output trace 13220mechanism and has a much larger code and data size. Note that 13221these values will vary depending on the efficiency of the compiler 13222and the compiler options used during generation. 13223 13224 Previous Release (20030918): 13225 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 13226 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 13227 Current Release: 13228 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 13229 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 13230 13231 132322) iASL Compiler: 13233 13234Implemented detection of non-ASCII characters within the input 13235source ASL file. This catches attempts to compile binary (AML) 13236files early in the compile, with an informative error message. 13237 13238Fixed a problem where the disassembler would fault if the output 13239filename could not be generated or if the output file could not be 13240opened. 13241 13242---------------------------------------- 1324318 September 2003. Summary of changes for version 20030918: 13244 13245 132461) ACPI CA Core Subsystem: 13247 13248Found and fixed a longstanding problem with the late execution of 13249the various deferred AML opcodes (such as Operation Regions, 13250Buffer Fields, Buffers, and Packages). If the name string 13251specified for the name of the new object placed the object in a 13252scope other than the current scope, the initialization/execution 13253of the opcode failed. The solution to this problem was to 13254implement a mechanism where the late execution of such opcodes 13255does not attempt to lookup/create the name a second time in an 13256incorrect scope. This fixes the "region size computed 13257incorrectly" problem. 13258 13259Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 13260Global Lock AE_BAD_PARAMETER error. 13261 13262Fixed several 64-bit issues with prototypes, casting and data 13263types. 13264 13265Removed duplicate prototype from acdisasm.h 13266 13267Fixed an issue involving EC Operation Region Detach (Shaohua Li) 13268 13269Code and Data Size: Current and previous core subsystem library 13270sizes are shown below. These are the code and data sizes for the 13271acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13272these values do not include any ACPI driver or OSPM code. The 13273debug version of the code includes the debug output trace 13274mechanism and has a much larger code and data size. Note that 13275these values will vary depending on the efficiency of the compiler 13276and the compiler options used during generation. 13277 13278 Previous Release: 13279 13280 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 13281 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 13282 Current Release: 13283 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 13284 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 13285 13286 132872) Linux: 13288 13289Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 13290correct sleep time in seconds. 13291 13292---------------------------------------- 1329314 July 2003. Summary of changes for version 20030619: 13294 132951) ACPI CA Core Subsystem: 13296 13297Parse SSDTs in order discovered, as opposed to reverse order 13298(Hrvoje Habjanic) 13299 13300Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 13301Klausner, 13302 Nate Lawson) 13303 13304 133052) Linux: 13306 13307Dynamically allocate SDT list (suggested by Andi Kleen) 13308 13309proc function return value cleanups (Andi Kleen) 13310 13311Correctly handle NMI watchdog during long stalls (Andrew Morton) 13312 13313Make it so acpismp=force works (reported by Andrew Morton) 13314 13315 13316---------------------------------------- 1331719 June 2003. Summary of changes for version 20030619: 13318 133191) ACPI CA Core Subsystem: 13320 13321Fix To/FromBCD, eliminating the need for an arch-specific #define. 13322 13323Do not acquire a semaphore in the S5 shutdown path. 13324 13325Fix ex_digits_needed for 0. (Takayoshi Kochi) 13326 13327Fix sleep/stall code reversal. (Andi Kleen) 13328 13329Revert a change having to do with control method calling 13330semantics. 13331 133322) Linux: 13333 13334acpiphp update (Takayoshi Kochi) 13335 13336Export acpi_disabled for sonypi (Stelian Pop) 13337 13338Mention acpismp=force in config help 13339 13340Re-add acpitable.c and acpismp=force. This improves backwards 13341 13342compatibility and also cleans up the code to a significant degree. 13343 13344Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 13345 13346---------------------------------------- 1334722 May 2003. Summary of changes for version 20030522: 13348 133491) ACPI CA Core Subsystem: 13350 13351Found and fixed a reported problem where an AE_NOT_FOUND error 13352occurred occasionally during _BST evaluation. This turned out to 13353be an Owner ID allocation issue where a called method did not get 13354a new ID assigned to it. Eventually, (after 64k calls), the Owner 13355ID UINT16 would wraparound so that the ID would be the same as the 13356caller's and the called method would delete the caller's 13357namespace. 13358 13359Implemented extended error reporting for control methods that are 13360aborted due to a run-time exception. Output includes the exact 13361AML instruction that caused the method abort, a dump of the method 13362locals and arguments at the time of the abort, and a trace of all 13363nested control method calls. 13364 13365Modified the interpreter to allow the creation of buffers of zero 13366length from the AML code. Implemented new code to ensure that no 13367attempt is made to actually allocate a memory buffer (of length 13368zero) - instead, a simple buffer object with a NULL buffer pointer 13369and length zero is created. A warning is no longer issued when 13370the AML attempts to create a zero-length buffer. 13371 13372Implemented a workaround for the "leading asterisk issue" in 13373_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 13374asterisk is automatically removed if present in any HID, UID, or 13375CID strings. The iASL compiler will still flag this asterisk as 13376an error, however. 13377 13378Implemented full support for _CID methods that return a package of 13379multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 13380now additionally returns a device _CID list if present. This 13381required a change to the external interface in order to pass an 13382ACPI_BUFFER object as a parameter since the _CID list is of 13383variable length. 13384 13385Fixed a problem with the new AE_SAME_HANDLER exception where 13386handler initialization code did not know about this exception. 13387 13388Code and Data Size: Current and previous core subsystem library 13389sizes are shown below. These are the code and data sizes for the 13390acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13391these values do not include any ACPI driver or OSPM code. The 13392debug version of the code includes the debug output trace 13393mechanism and has a much larger code and data size. Note that 13394these values will vary depending on the efficiency of the compiler 13395and the compiler options used during generation. 13396 13397 Previous Release (20030509): 13398 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 13399 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 13400 Current Release: 13401 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 13402 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 13403 13404 134052) Linux: 13406 13407Fixed a bug in which we would reinitialize the ACPI interrupt 13408after it was already working, thus disabling all ACPI and the IRQs 13409for any other device sharing the interrupt. (Thanks to Stian 13410Jordet) 13411 13412Toshiba driver update (John Belmonte) 13413 13414Return only 0 or 1 for our interrupt handler status (Andrew 13415Morton) 13416 13417 134183) iASL Compiler: 13419 13420Fixed a reported problem where multiple (nested) ElseIf() 13421statements were not handled correctly by the compiler, resulting 13422in incorrect warnings and incorrect AML code. This was a problem 13423in both the ASL parser and the code generator. 13424 13425 134264) Documentation: 13427 13428Added changes to existing interfaces, new exception codes, and new 13429text concerning reference count object management versus garbage 13430collection. 13431 13432---------------------------------------- 1343309 May 2003. Summary of changes for version 20030509. 13434 13435 134361) ACPI CA Core Subsystem: 13437 13438Changed the subsystem initialization sequence to hold off 13439installation of address space handlers until the hardware has been 13440initialized and the system has entered ACPI mode. This is because 13441the installation of space handlers can cause _REG methods to be 13442run. Previously, the _REG methods could potentially be run before 13443ACPI mode was enabled. 13444 13445Fixed some memory leak issues related to address space handler and 13446notify handler installation. There were some problems with the 13447reference count mechanism caused by the fact that the handler 13448objects are shared across several namespace objects. 13449 13450Fixed a reported problem where reference counts within the 13451namespace were not properly updated when named objects created by 13452method execution were deleted. 13453 13454Fixed a reported problem where multiple SSDTs caused a deletion 13455issue during subsystem termination. Restructured the table data 13456structures to simplify the linked lists and the related code. 13457 13458Fixed a problem where the table ID associated with secondary 13459tables (SSDTs) was not being propagated into the namespace objects 13460created by those tables. This would only present a problem for 13461tables that are unloaded at run-time, however. 13462 13463Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 13464type as the length parameter (instead of UINT32). 13465 13466Solved a long-standing problem where an ALREADY_EXISTS error 13467appears on various systems. This problem could happen when there 13468are multiple PCI_Config operation regions under a single PCI root 13469bus. This doesn't happen very frequently, but there are some 13470systems that do this in the ASL. 13471 13472Fixed a reported problem where the internal DeleteNode function 13473was incorrectly handling the case where a namespace node was the 13474first in the parent's child list, and had additional peers (not 13475the only child, but first in the list of children.) 13476 13477Code and Data Size: Current core subsystem library sizes are shown 13478below. These are the code and data sizes for the acpica.lib 13479produced by the Microsoft Visual C++ 6.0 compiler, and these 13480values do not include any ACPI driver or OSPM code. The debug 13481version of the code includes the debug output trace mechanism and 13482has a much larger code and data size. Note that these values will 13483vary depending on the efficiency of the compiler and the compiler 13484options used during generation. 13485 13486 Previous Release 13487 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 13488 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 13489 Current Release: 13490 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 13491 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 13492 13493 134942) Linux: 13495 13496Allow ":" in OS override string (Ducrot Bruno) 13497 13498Kobject fix (Greg KH) 13499 13500 135013 iASL Compiler/Disassembler: 13502 13503Fixed a problem in the generation of the C source code files (AML 13504is emitted in C source statements for BIOS inclusion) where the 13505Ascii dump that appears within a C comment at the end of each line 13506could cause a compile time error if the AML sequence happens to 13507have an open comment or close comment sequence embedded. 13508 13509 13510---------------------------------------- 1351124 April 2003. Summary of changes for version 20030424. 13512 13513 135141) ACPI CA Core Subsystem: 13515 13516Support for big-endian systems has been implemented. Most of the 13517support has been invisibly added behind big-endian versions of the 13518ACPI_MOVE_* macros. 13519 13520Fixed a problem in AcpiHwDisableGpeBlock() and 13521AcpiHwClearGpeBlock() where an incorrect offset was passed to the 13522low level hardware write routine. The offset parameter was 13523actually eliminated from the low level read/write routines because 13524they had become obsolete. 13525 13526Fixed a problem where a handler object was deleted twice during 13527the removal of a fixed event handler. 13528 13529 135302) Linux: 13531 13532A fix for SMP systems with link devices was contributed by 13533 13534Compaq's Dan Zink. 13535 13536(2.5) Return whether we handled the interrupt in our IRQ handler. 13537(Linux ISRs no longer return void, so we can propagate the handler 13538return value from the ACPI CA core back to the OS.) 13539 13540 13541 135423) Documentation: 13543 13544The ACPI CA Programmer Reference has been updated to reflect new 13545interfaces and changes to existing interfaces. 13546 13547---------------------------------------- 1354828 March 2003. Summary of changes for version 20030328. 13549 135501) ACPI CA Core Subsystem: 13551 13552The GPE Block Device support has been completed. New interfaces 13553are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 13554interfaces (enable, disable, clear, getstatus) have been split 13555into separate interfaces for Fixed Events and General Purpose 13556Events (GPEs) in order to support GPE Block Devices properly. 13557 13558Fixed a problem where the error message "Failed to acquire 13559semaphore" would appear during operations on the embedded 13560controller (EC). 13561 13562Code and Data Size: Current core subsystem library sizes are shown 13563below. These are the code and data sizes for the acpica.lib 13564produced by the Microsoft Visual C++ 6.0 compiler, and these 13565values do not include any ACPI driver or OSPM code. The debug 13566version of the code includes the debug output trace mechanism and 13567has a much larger code and data size. Note that these values will 13568vary depending on the efficiency of the compiler and the compiler 13569options used during generation. 13570 13571 Previous Release 13572 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 13573 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 13574 Current Release: 13575 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 13576 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 13577 13578 13579---------------------------------------- 1358028 February 2003. Summary of changes for version 20030228. 13581 13582 135831) ACPI CA Core Subsystem: 13584 13585The GPE handling and dispatch code has been completely overhauled 13586in preparation for support of GPE Block Devices (ID ACPI0006). 13587This affects internal data structures and code only; there should 13588be no differences visible externally. One new file has been 13589added, evgpeblk.c 13590 13591The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 13592fields that are used to determine the GPE block lengths. The 13593REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 13594structures are ignored. This is per the ACPI specification but it 13595isn't very clear. The full 256 Block 0/1 GPEs are now supported 13596(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 13597 13598In the SCI interrupt handler, removed the read of the PM1_CONTROL 13599register to look at the SCI_EN bit. On some machines, this read 13600causes an SMI event and greatly slows down SCI events. (This may 13601in fact be the cause of slow battery status response on some 13602systems.) 13603 13604Fixed a problem where a store of a NULL string to a package object 13605could cause the premature deletion of the object. This was seen 13606during execution of the battery _BIF method on some systems, 13607resulting in no battery data being returned. 13608 13609Added AcpiWalkResources interface to simplify parsing of resource 13610lists. 13611 13612Code and Data Size: Current core subsystem library sizes are shown 13613below. These are the code and data sizes for the acpica.lib 13614produced by the Microsoft Visual C++ 6.0 compiler, and these 13615values do not include any ACPI driver or OSPM code. The debug 13616version of the code includes the debug output trace mechanism and 13617has a much larger code and data size. Note that these values will 13618vary depending on the efficiency of the compiler and the compiler 13619options used during generation. 13620 13621 Previous Release 13622 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13623 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13624 Current Release: 13625 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 13626 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 13627 13628 136292) Linux 13630 13631S3 fixes (Ole Rohne) 13632 13633Update ACPI PHP driver with to use new acpi_walk_resource API 13634(Bjorn Helgaas) 13635 13636Add S4BIOS support (Pavel Machek) 13637 13638Map in entire table before performing checksum (John Stultz) 13639 13640Expand the mem= cmdline to allow the specification of reserved and 13641ACPI DATA blocks (Pavel Machek) 13642 13643Never use ACPI on VISWS 13644 13645Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 13646 13647Revert a change that allowed P_BLK lengths to be 4 or 5. This is 13648causing us to think that some systems support C2 when they really 13649don't. 13650 13651Do not count processor objects for non-present CPUs (Thanks to 13652Dominik Brodowski) 13653 13654 136553) iASL Compiler: 13656 13657Fixed a problem where ASL include files could not be found and 13658opened. 13659 13660Added support for the _PDC reserved name. 13661 13662 13663---------------------------------------- 1366422 January 2003. Summary of changes for version 20030122. 13665 13666 136671) ACPI CA Core Subsystem: 13668 13669Added a check for constructs of the form: Store (Local0, Local0) 13670where Local0 is not initialized. Apparently, some BIOS 13671programmers believe that this is a NOOP. Since this store doesn't 13672do anything anyway, the new prototype behavior will ignore this 13673error. This is a case where we can relax the strict checking in 13674the interpreter in the name of compatibility. 13675 13676 136772) Linux 13678 13679The AcpiSrc Source Conversion Utility has been released with the 13680Linux package for the first time. This is the utility that is 13681used to convert the ACPI CA base source code to the Linux version. 13682 13683(Both) Handle P_BLK lengths shorter than 6 more gracefully 13684 13685(Both) Move more headers to include/acpi, and delete an unused 13686header. 13687 13688(Both) Move drivers/acpi/include directory to include/acpi 13689 13690(Both) Boot functions don't use cmdline, so don't pass it around 13691 13692(Both) Remove include of unused header (Adrian Bunk) 13693 13694(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 13695the 13696former now also includes the latter, acpiphp.h only needs the one, 13697now. 13698 13699(2.5) Make it possible to select method of bios restoring after S3 13700resume. [=> no more ugly ifdefs] (Pavel Machek) 13701 13702(2.5) Make proc write interfaces work (Pavel Machek) 13703 13704(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 13705 13706(2.5) Break out ACPI Perf code into its own module, under cpufreq 13707(Dominik Brodowski) 13708 13709(2.4) S4BIOS support (Ducrot Bruno) 13710 13711(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 13712Visinoni) 13713 13714 137153) iASL Compiler: 13716 13717Added support to disassemble SSDT and PSDTs. 13718 13719Implemented support to obtain SSDTs from the Windows registry if 13720available. 13721 13722 13723---------------------------------------- 1372409 January 2003. Summary of changes for version 20030109. 13725 137261) ACPI CA Core Subsystem: 13727 13728Changed the behavior of the internal Buffer-to-String conversion 13729function. The current ACPI specification states that the contents 13730of the buffer are "converted to a string of two-character 13731hexadecimal numbers, each separated by a space". Unfortunately, 13732this definition is not backwards compatible with existing ACPI 1.0 13733implementations (although the behavior was not defined in the ACPI 137341.0 specification). The new behavior simply copies data from the 13735buffer to the string until a null character is found or the end of 13736the buffer is reached. The new String object is always null 13737terminated. This problem was seen during the generation of _BIF 13738battery data where incorrect strings were returned for battery 13739type, etc. This will also require an errata to the ACPI 13740specification. 13741 13742Renamed all instances of NATIVE_UINT and NATIVE_INT to 13743ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 13744 13745Copyright in all module headers (both Linux and non-Linux) has be 13746updated to 2003. 13747 13748Code and Data Size: Current core subsystem library sizes are shown 13749below. These are the code and data sizes for the acpica.lib 13750produced by the Microsoft Visual C++ 6.0 compiler, and these 13751values do not include any ACPI driver or OSPM code. The debug 13752version of the code includes the debug output trace mechanism and 13753has a much larger code and data size. Note that these values will 13754vary depending on the efficiency of the compiler and the compiler 13755options used during generation. 13756 13757 Previous Release 13758 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13759 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13760 Current Release: 13761 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13762 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13763 13764 137652) Linux 13766 13767Fixed an oops on module insertion/removal (Matthew Tippett) 13768 13769(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 13770 13771(2.5) Replace pr_debug (Randy Dunlap) 13772 13773(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 13774 13775(Both) Eliminate spawning of thread from timer callback, in favor 13776of schedule_work() 13777 13778(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 13779 13780(Both) Added define for Fixed Function HW region (Matthew Wilcox) 13781 13782(Both) Add missing statics to button.c (Pavel Machek) 13783 13784Several changes have been made to the source code translation 13785utility that generates the Linux Code in order to make the code 13786more "Linux-like": 13787 13788All typedefs on structs and unions have been removed in keeping 13789with the Linux coding style. 13790 13791Removed the non-Linux SourceSafe module revision number from each 13792module header. 13793 13794Completed major overhaul of symbols to be lowercased for linux. 13795Doubled the number of symbols that are lowercased. 13796 13797Fixed a problem where identifiers within procedure headers and 13798within quotes were not fully lower cased (they were left with a 13799starting capital.) 13800 13801Some C macros whose only purpose is to allow the generation of 16- 13802bit code are now completely removed in the Linux code, increasing 13803readability and maintainability. 13804 13805---------------------------------------- 13806 1380712 December 2002. Summary of changes for version 20021212. 13808 13809 138101) ACPI CA Core Subsystem: 13811 13812Fixed a problem where the creation of a zero-length AML Buffer 13813would cause a fault. 13814 13815Fixed a problem where a Buffer object that pointed to a static AML 13816buffer (in an ACPI table) could inadvertently be deleted, causing 13817memory corruption. 13818 13819Fixed a problem where a user buffer (passed in to the external 13820ACPI CA interfaces) could be overwritten if the buffer was too 13821small to complete the operation, causing memory corruption. 13822 13823Fixed a problem in the Buffer-to-String conversion code where a 13824string of length one was always returned, regardless of the size 13825of the input Buffer object. 13826 13827Removed the NATIVE_CHAR data type across the entire source due to 13828lack of need and lack of consistent use. 13829 13830Code and Data Size: Current core subsystem library sizes are shown 13831below. These are the code and data sizes for the acpica.lib 13832produced by the Microsoft Visual C++ 6.0 compiler, and these 13833values do not include any ACPI driver or OSPM code. The debug 13834version of the code includes the debug output trace mechanism and 13835has a much larger code and data size. Note that these values will 13836vary depending on the efficiency of the compiler and the compiler 13837options used during generation. 13838 13839 Previous Release 13840 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 13841 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 13842 Current Release: 13843 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13844 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13845 13846 13847---------------------------------------- 1384805 December 2002. Summary of changes for version 20021205. 13849 138501) ACPI CA Core Subsystem: 13851 13852Fixed a problem where a store to a String or Buffer object could 13853cause corruption of the DSDT if the object type being stored was 13854the same as the target object type and the length of the object 13855being stored was equal to or smaller than the original (existing) 13856target object. This was seen to cause corruption of battery _BIF 13857buffers if the _BIF method modified the buffer on the fly. 13858 13859Fixed a problem where an internal error was generated if a control 13860method invocation was used in an OperationRegion, Buffer, or 13861Package declaration. This was caused by the deferred parsing of 13862the control method and thus the deferred creation of the internal 13863method object. The solution to this problem was to create the 13864internal method object at the moment the method is encountered in 13865the first pass - so that subsequent references to the method will 13866able to obtain the required parameter count and thus properly 13867parse the method invocation. This problem presented itself as an 13868AE_AML_INTERNAL during the pass 1 parse phase during table load. 13869 13870Fixed a problem where the internal String object copy routine did 13871not always allocate sufficient memory for the target String object 13872and caused memory corruption. This problem was seen to cause 13873"Allocation already present in list!" errors as memory allocation 13874became corrupted. 13875 13876Implemented a new function for the evaluation of namespace objects 13877that allows the specification of the allowable return object 13878types. This simplifies a lot of code that checks for a return 13879object of one or more specific objects returned from the 13880evaluation (such as _STA, etc.) This may become and external 13881function if it would be useful to ACPI-related drivers. 13882 13883Completed another round of prefixing #defines with "ACPI_" for 13884clarity. 13885 13886Completed additional code restructuring to allow more modular 13887linking for iASL compiler and AcpiExec. Several files were split 13888creating new files. New files: nsparse.c dsinit.c evgpe.c 13889 13890Implemented an abort mechanism to terminate an executing control 13891method via the AML debugger. This feature is useful for debugging 13892control methods that depend (wait) for specific hardware 13893responses. 13894 13895Code and Data Size: Current core subsystem library sizes are shown 13896below. These are the code and data sizes for the acpica.lib 13897produced by the Microsoft Visual C++ 6.0 compiler, and these 13898values do not include any ACPI driver or OSPM code. The debug 13899version of the code includes the debug output trace mechanism and 13900has a much larger code and data size. Note that these values will 13901vary depending on the efficiency of the compiler and the compiler 13902options used during generation. 13903 13904 Previous Release 13905 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13906 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 13907 Current Release: 13908 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 13909 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 13910 13911 139122) iASL Compiler/Disassembler 13913 13914Fixed a compiler code generation problem for "Interrupt" Resource 13915Descriptors. If specified in the ASL, the optional "Resource 13916Source Index" and "Resource Source" fields were not inserted into 13917the correct location within the AML resource descriptor, creating 13918an invalid descriptor. 13919 13920Fixed a disassembler problem for "Interrupt" resource descriptors. 13921The optional "Resource Source Index" and "Resource Source" fields 13922were ignored. 13923 13924 13925---------------------------------------- 1392622 November 2002. Summary of changes for version 20021122. 13927 13928 139291) ACPI CA Core Subsystem: 13930 13931Fixed a reported problem where an object stored to a Method Local 13932or Arg was not copied to a new object during the store - the 13933object pointer was simply copied to the Local/Arg. This caused 13934all subsequent operations on the Local/Arg to also affect the 13935original source of the store operation. 13936 13937Fixed a problem where a store operation to a Method Local or Arg 13938was not completed properly if the Local/Arg contained a reference 13939(from RefOf) to a named field. The general-purpose store-to- 13940namespace-node code is now used so that this case is handled 13941automatically. 13942 13943Fixed a problem where the internal object copy routine would cause 13944a protection fault if the object being copied was a Package and 13945contained either 1) a NULL package element or 2) a nested sub- 13946package. 13947 13948Fixed a problem with the GPE initialization that resulted from an 13949ambiguity in the ACPI specification. One section of the 13950specification states that both the address and length of the GPE 13951block must be zero if the block is not supported. Another section 13952implies that only the address need be zero if the block is not 13953supported. The code has been changed so that both the address and 13954the length must be non-zero to indicate a valid GPE block (i.e., 13955if either the address or the length is zero, the GPE block is 13956invalid.) 13957 13958Code and Data Size: Current core subsystem library sizes are shown 13959below. These are the code and data sizes for the acpica.lib 13960produced by the Microsoft Visual C++ 6.0 compiler, and these 13961values do not include any ACPI driver or OSPM code. The debug 13962version of the code includes the debug output trace mechanism and 13963has a much larger code and data size. Note that these values will 13964vary depending on the efficiency of the compiler and the compiler 13965options used during generation. 13966 13967 Previous Release 13968 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 13969 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 13970 Current Release: 13971 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 13972 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 13973 13974 139752) Linux 13976 13977Cleaned up EC driver. Exported an external EC read/write 13978interface. By going through this, other drivers (most notably 13979sonypi) will be able to serialize access to the EC. 13980 13981 139823) iASL Compiler/Disassembler 13983 13984Implemented support to optionally generate include files for both 13985ASM and C (the -i switch). This simplifies BIOS development by 13986automatically creating include files that contain external 13987declarations for the symbols that are created within the 13988 13989(optionally generated) ASM and C AML source files. 13990 13991 13992---------------------------------------- 1399315 November 2002. Summary of changes for version 20021115. 13994 139951) ACPI CA Core Subsystem: 13996 13997Fixed a memory leak problem where an error during resolution of 13998 13999method arguments during a method invocation from another method 14000failed to cleanup properly by deleting all successfully resolved 14001argument objects. 14002 14003Fixed a problem where the target of the Index() operator was not 14004correctly constructed if the source object was a package. This 14005problem has not been detected because the use of a target operand 14006with Index() is very rare. 14007 14008Fixed a problem with the Index() operator where an attempt was 14009made to delete the operand objects twice. 14010 14011Fixed a problem where an attempt was made to delete an operand 14012twice during execution of the CondRefOf() operator if the target 14013did not exist. 14014 14015Implemented the first of perhaps several internal create object 14016functions that create and initialize a specific object type. This 14017consolidates duplicated code wherever the object is created, thus 14018shrinking the size of the subsystem. 14019 14020Implemented improved debug/error messages for errors that occur 14021during nested method invocations. All executing method pathnames 14022are displayed (with the error) as the call stack is unwound - thus 14023simplifying debug. 14024 14025Fixed a problem introduced in the 10/02 release that caused 14026premature deletion of a buffer object if a buffer was used as an 14027ASL operand where an integer operand is required (Thus causing an 14028implicit object conversion from Buffer to Integer.) The change in 14029the 10/02 release was attempting to fix a memory leak (albeit 14030incorrectly.) 14031 14032Code and Data Size: Current core subsystem library sizes are shown 14033below. These are the code and data sizes for the acpica.lib 14034produced by the Microsoft Visual C++ 6.0 compiler, and these 14035values do not include any ACPI driver or OSPM code. The debug 14036version of the code includes the debug output trace mechanism and 14037has a much larger code and data size. Note that these values will 14038vary depending on the efficiency of the compiler and the compiler 14039options used during generation. 14040 14041 Previous Release 14042 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 14043 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 14044 Current Release: 14045 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 14046 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 14047 14048 140492) Linux 14050 14051Changed the implementation of the ACPI semaphores to use down() 14052instead of down_interruptable(). It is important that the 14053execution of ACPI control methods not be interrupted by signals. 14054Methods must run to completion, or the system may be left in an 14055unknown/unstable state. 14056 14057Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 14058(Shawn Starr) 14059 14060 140613) iASL Compiler/Disassembler 14062 14063 14064Changed the default location of output files. All output files 14065are now placed in the current directory by default instead of in 14066the directory of the source file. This change may affect some 14067existing makefiles, but it brings the behavior of the compiler in 14068line with other similar tools. The location of the output files 14069can be overridden with the -p command line switch. 14070 14071 14072---------------------------------------- 1407311 November 2002. Summary of changes for version 20021111. 14074 14075 140760) ACPI Specification 2.0B is released and is now available at: 14077http://www.acpi.info/index.html 14078 14079 140801) ACPI CA Core Subsystem: 14081 14082Implemented support for the ACPI 2.0 SMBus Operation Regions. 14083This includes the early detection and handoff of the request to 14084the SMBus region handler (avoiding all of the complex field 14085support code), and support for the bidirectional return packet 14086from an SMBus write operation. This paves the way for the 14087development of SMBus drivers in each host operating system. 14088 14089Fixed a problem where the semaphore WAIT_FOREVER constant was 14090defined as 32 bits, but must be 16 bits according to the ACPI 14091specification. This had the side effect of causing ASL 14092Mutex/Event timeouts even though the ASL code requested a wait 14093forever. Changed all internal references to the ACPI timeout 14094parameter to 16 bits to prevent future problems. Changed the name 14095of WAIT_FOREVER to ACPI_WAIT_FOREVER. 14096 14097Code and Data Size: Current core subsystem library sizes are shown 14098below. These are the code and data sizes for the acpica.lib 14099produced by the Microsoft Visual C++ 6.0 compiler, and these 14100values do not include any ACPI driver or OSPM code. The debug 14101version of the code includes the debug output trace mechanism and 14102has a much larger code and data size. Note that these values will 14103vary depending on the efficiency of the compiler and the compiler 14104options used during generation. 14105 14106 Previous Release 14107 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14108 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 14109 Current Release: 14110 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 14111 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 14112 14113 141142) Linux 14115 14116Module loading/unloading fixes (John Cagle) 14117 14118 141193) iASL Compiler/Disassembler 14120 14121Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 14122 14123Implemented support for the disassembly of all SMBus protocol 14124keywords (SMBQuick, SMBWord, etc.) 14125 14126---------------------------------------- 1412701 November 2002. Summary of changes for version 20021101. 14128 14129 141301) ACPI CA Core Subsystem: 14131 14132Fixed a problem where platforms that have a GPE1 block but no GPE0 14133block were not handled correctly. This resulted in a "GPE 14134overlap" error message. GPE0 is no longer required. 14135 14136Removed code added in the previous release that inserted nodes 14137into the namespace in alphabetical order. This caused some side- 14138effects on various machines. The root cause of the problem is 14139still under investigation since in theory, the internal ordering 14140of the namespace nodes should not matter. 14141 14142 14143Enhanced error reporting for the case where a named object is not 14144found during control method execution. The full ACPI namepath 14145(name reference) of the object that was not found is displayed in 14146this case. 14147 14148Note: as a result of the overhaul of the namespace object types in 14149the previous release, the namespace nodes for the predefined 14150scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 14151instead of ACPI_TYPE_ANY. This simplifies the namespace 14152management code but may affect code that walks the namespace tree 14153looking for specific object types. 14154 14155Code and Data Size: Current core subsystem library sizes are shown 14156below. These are the code and data sizes for the acpica.lib 14157produced by the Microsoft Visual C++ 6.0 compiler, and these 14158values do not include any ACPI driver or OSPM code. The debug 14159version of the code includes the debug output trace mechanism and 14160has a much larger code and data size. Note that these values will 14161vary depending on the efficiency of the compiler and the compiler 14162options used during generation. 14163 14164 Previous Release 14165 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 14166 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 14167 Current Release: 14168 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14169 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 14170 14171 141722) Linux 14173 14174Fixed a problem introduced in the previous release where the 14175Processor and Thermal objects were not recognized and installed in 14176/proc. This was related to the scope type change described above. 14177 14178 141793) iASL Compiler/Disassembler 14180 14181Implemented the -g option to get all of the required ACPI tables 14182from the registry and save them to files (Windows version of the 14183compiler only.) The required tables are the FADT, FACS, and DSDT. 14184 14185Added ACPI table checksum validation during table disassembly in 14186order to catch corrupted tables. 14187 14188 14189---------------------------------------- 1419022 October 2002. Summary of changes for version 20021022. 14191 141921) ACPI CA Core Subsystem: 14193 14194Implemented a restriction on the Scope operator that the target 14195must already exist in the namespace at the time the operator is 14196encountered (during table load or method execution). In other 14197words, forward references are not allowed and Scope() cannot 14198create a new object. This changes the previous behavior where the 14199interpreter would create the name if not found. This new behavior 14200correctly enables the search-to-root algorithm during namespace 14201lookup of the target name. Because of this upsearch, this fixes 14202the known Compaq _SB_.OKEC problem and makes both the AML 14203interpreter and iASL compiler compatible with other ACPI 14204implementations. 14205 14206Completed a major overhaul of the internal ACPI object types for 14207the ACPI Namespace and the associated operand objects. Many of 14208these types had become obsolete with the introduction of the two- 14209pass namespace load. This cleanup simplifies the code and makes 14210the entire namespace load mechanism much clearer and easier to 14211understand. 14212 14213Improved debug output for tracking scope opening/closing to help 14214diagnose scoping issues. The old scope name as well as the new 14215scope name are displayed. Also improved error messages for 14216problems with ASL Mutex objects and error messages for GPE 14217problems. 14218 14219Cleaned up the namespace dump code, removed obsolete code. 14220 14221All string output (for all namespace/object dumps) now uses the 14222common ACPI string output procedure which handles escapes properly 14223and does not emit non-printable characters. 14224 14225Fixed some issues with constants in the 64-bit version of the 14226local C library (utclib.c) 14227 14228 142292) Linux 14230 14231EC Driver: No longer attempts to acquire the Global Lock at 14232interrupt level. 14233 14234 142353) iASL Compiler/Disassembler 14236 14237Implemented ACPI 2.0B grammar change that disallows all Type 1 and 142382 opcodes outside of a control method. This means that the 14239"executable" operators (versus the "namespace" operators) cannot 14240be used at the table level; they can only be used within a control 14241method. 14242 14243Implemented the restriction on the Scope() operator where the 14244target must already exist in the namespace at the time the 14245operator is encountered (during ASL compilation). In other words, 14246forward references are not allowed and Scope() cannot create a new 14247object. This makes the iASL compiler compatible with other ACPI 14248implementations and makes the Scope() implementation adhere to the 14249ACPI specification. 14250 14251Fixed a problem where namepath optimization for the Alias operator 14252was optimizing the wrong path (of the two namepaths.) This caused 14253a "Missing alias link" error message. 14254 14255Fixed a problem where an "unknown reserved name" warning could be 14256incorrectly generated for names like "_SB" when the trailing 14257underscore is not used in the original ASL. 14258 14259Fixed a problem where the reserved name check did not handle 14260NamePaths with multiple NameSegs correctly. The first nameseg of 14261the NamePath was examined instead of the last NameSeg. 14262 14263 14264---------------------------------------- 14265 1426602 October 2002. Summary of changes for this release. 14267 14268 142691) ACPI CA Core Subsystem version 20021002: 14270 14271Fixed a problem where a store/copy of a string to an existing 14272string did not always set the string length properly in the String 14273object. 14274 14275Fixed a reported problem with the ToString operator where the 14276behavior was identical to the ToHexString operator instead of just 14277simply converting a raw buffer to a string data type. 14278 14279Fixed a problem where CopyObject and the other "explicit" 14280conversion operators were not updating the internal namespace node 14281type as part of the store operation. 14282 14283Fixed a memory leak during implicit source operand conversion 14284where the original object was not deleted if it was converted to a 14285new object of a different type. 14286 14287Enhanced error messages for all problems associated with namespace 14288lookups. Common procedure generates and prints the lookup name as 14289well as the formatted status. 14290 14291Completed implementation of a new design for the Alias support 14292within the namespace. The existing design did not handle the case 14293where a new object was assigned to one of the two names due to the 14294use of an explicit conversion operator, resulting in the two names 14295pointing to two different objects. The new design simply points 14296the Alias name to the original name node - not to the object. 14297This results in a level of indirection that must be handled in the 14298name resolution mechanism. 14299 14300Code and Data Size: Current core subsystem library sizes are shown 14301below. These are the code and data sizes for the acpica.lib 14302produced by the Microsoft Visual C++ 6.0 compiler, and these 14303values do not include any ACPI driver or OSPM code. The debug 14304version of the code includes the debug output trace mechanism and 14305has a larger code and data size. Note that these values will vary 14306depending on the efficiency of the compiler and the compiler 14307options used during generation. 14308 14309 Previous Release 14310 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 14311 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 14312 Current Release: 14313 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 14314 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 14315 14316 143172) Linux 14318 14319Initialize thermal driver's timer before it is used. (Knut 14320Neumann) 14321 14322Allow handling negative celsius values. (Kochi Takayoshi) 14323 14324Fix thermal management and make trip points. R/W (Pavel Machek) 14325 14326Fix /proc/acpi/sleep. (P. Christeas) 14327 14328IA64 fixes. (David Mosberger) 14329 14330Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 14331 14332Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 14333Brodowski) 14334 14335 143363) iASL Compiler/Disassembler 14337 14338Clarified some warning/error messages. 14339 14340 14341---------------------------------------- 1434218 September 2002. Summary of changes for this release. 14343 14344 143451) ACPI CA Core Subsystem version 20020918: 14346 14347Fixed a reported problem with reference chaining (via the Index() 14348and RefOf() operators) in the ObjectType() and SizeOf() operators. 14349The definition of these operators includes the dereferencing of 14350all chained references to return information on the base object. 14351 14352Fixed a problem with stores to indexed package elements - the 14353existing code would not complete the store if an "implicit 14354conversion" was not performed. In other words, if the existing 14355object (package element) was to be replaced completely, the code 14356didn't handle this case. 14357 14358Relaxed typechecking on the ASL "Scope" operator to allow the 14359target name to refer to an object of type Integer, String, or 14360Buffer, in addition to the scoping object types (Device, 14361predefined Scopes, Processor, PowerResource, and ThermalZone.) 14362This allows existing AML code that has workarounds for a bug in 14363Windows to function properly. A warning is issued, however. This 14364affects both the AML interpreter and the iASL compiler. Below is 14365an example of this type of ASL code: 14366 14367 Name(DEB,0x00) 14368 Scope(DEB) 14369 { 14370 14371Fixed some reported problems with 64-bit integer support in the 14372local implementation of C library functions (clib.c) 14373 14374 143752) Linux 14376 14377Use ACPI fix map region instead of IOAPIC region, since it is 14378undefined in non-SMP. 14379 14380Ensure that the SCI has the proper polarity and trigger, even on 14381systems that do not have an interrupt override entry in the MADT. 14382 143832.5 big driver reorganization (Pat Mochel) 14384 14385Use early table mapping code from acpitable.c (Andi Kleen) 14386 14387New blacklist entries (Andi Kleen) 14388 14389Blacklist improvements. Split blacklist code out into a separate 14390file. Move checking the blacklist to very early. Previously, we 14391would use ACPI tables, and then halfway through init, check the 14392blacklist -- too late. Now, it's early enough to completely fall- 14393back to non-ACPI. 14394 14395 143963) iASL Compiler/Disassembler version 20020918: 14397 14398Fixed a problem where the typechecking code didn't know that an 14399alias could point to a method. In other words, aliases were not 14400being dereferenced during typechecking. 14401 14402 14403---------------------------------------- 1440429 August 2002. Summary of changes for this release. 14405 144061) ACPI CA Core Subsystem Version 20020829: 14407 14408If the target of a Scope() operator already exists, it must be an 14409object type that actually opens a scope -- such as a Device, 14410Method, Scope, etc. This is a fatal runtime error. Similar error 14411check has been added to the iASL compiler also. 14412 14413Tightened up the namespace load to disallow multiple names in the 14414same scope. This previously was allowed if both objects were of 14415the same type. (i.e., a lookup was the same as entering a new 14416name). 14417 14418 144192) Linux 14420 14421Ensure that the ACPI interrupt has the proper trigger and 14422polarity. 14423 14424local_irq_disable is extraneous. (Matthew Wilcox) 14425 14426Make "acpi=off" actually do what it says, and not use the ACPI 14427interpreter *or* the tables. 14428 14429Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 14430Takayoshi) 14431 14432 144333) iASL Compiler/Disassembler Version 20020829: 14434 14435Implemented namepath optimization for name declarations. For 14436example, a declaration like "Method (\_SB_.ABCD)" would get 14437optimized to "Method (ABCD)" if the declaration is within the 14438\_SB_ scope. This optimization is in addition to the named 14439reference path optimization first released in the previous 14440version. This would seem to complete all possible optimizations 14441for namepaths within the ASL/AML. 14442 14443If the target of a Scope() operator already exists, it must be an 14444object type that actually opens a scope -- such as a Device, 14445Method, Scope, etc. 14446 14447Implemented a check and warning for unreachable code in the same 14448block below a Return() statement. 14449 14450Fixed a problem where the listing file was not generated if the 14451compiler aborted if the maximum error count was exceeded (200). 14452 14453Fixed a problem where the typechecking of method return values was 14454broken. This includes the check for a return value when the 14455method is invoked as a TermArg (a return value is expected.) 14456 14457Fixed a reported problem where EOF conditions during a quoted 14458string or comment caused a fault. 14459 14460 14461---------------------------------------- 1446215 August 2002. Summary of changes for this release. 14463 144641) ACPI CA Core Subsystem Version 20020815: 14465 14466Fixed a reported problem where a Store to a method argument that 14467contains a reference did not perform the indirect store correctly. 14468This problem was created during the conversion to the new 14469reference object model - the indirect store to a method argument 14470code was not updated to reflect the new model. 14471 14472Reworked the ACPI mode change code to better conform to ACPI 2.0, 14473handle corner cases, and improve code legibility (Kochi Takayoshi) 14474 14475Fixed a problem with the pathname parsing for the carat (^) 14476prefix. The heavy use of the carat operator by the new namepath 14477optimization in the iASL compiler uncovered a problem with the AML 14478interpreter handling of this prefix. In the case where one or 14479more carats precede a single nameseg, the nameseg was treated as 14480standalone and the search rule (to root) was inadvertently 14481applied. This could cause both the iASL compiler and the 14482interpreter to find the wrong object or to miss the error that 14483should occur if the object does not exist at that exact pathname. 14484 14485Found and fixed the problem where the HP Pavilion DSDT would not 14486load. This was a relatively minor tweak to the table loading code 14487(a problem caused by the unexpected encounter with a method 14488invocation not within a control method), but it does not solve the 14489overall issue of the execution of AML code at the table level. 14490This investigation is still ongoing. 14491 14492Code and Data Size: Current core subsystem library sizes are shown 14493below. These are the code and data sizes for the acpica.lib 14494produced by the Microsoft Visual C++ 6.0 compiler, and these 14495values do not include any ACPI driver or OSPM code. The debug 14496version of the code includes the debug output trace mechanism and 14497has a larger code and data size. Note that these values will vary 14498depending on the efficiency of the compiler and the compiler 14499options used during generation. 14500 14501 Previous Release 14502 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 14503 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 14504 Current Release: 14505 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 14506 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 14507 14508 145092) Linux 14510 14511Remove redundant slab.h include (Brad Hards) 14512 14513Fix several bugs in thermal.c (Herbert Nachtnebel) 14514 14515Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 14516 14517Change acpi_system_suspend to use updated irq functions (Pavel 14518Machek) 14519 14520Export acpi_get_firmware_table (Matthew Wilcox) 14521 14522Use proper root proc entry for ACPI (Kochi Takayoshi) 14523 14524Fix early-boot table parsing (Bjorn Helgaas) 14525 14526 145273) iASL Compiler/Disassembler 14528 14529Reworked the compiler options to make them more consistent and to 14530use two-letter options where appropriate. We were running out of 14531sensible letters. This may break some makefiles, so check the 14532current options list by invoking the compiler with no parameters. 14533 14534Completed the design and implementation of the ASL namepath 14535optimization option for the compiler. This option optimizes all 14536references to named objects to the shortest possible path. The 14537first attempt tries to utilize a single nameseg (4 characters) and 14538the "search-to-root" algorithm used by the interpreter. If that 14539cannot be used (because either the name is not in the search path 14540or there is a conflict with another object with the same name), 14541the pathname is optimized using the carat prefix (usually a 14542shorter string than specifying the entire path from the root.) 14543 14544Implemented support to obtain the DSDT from the Windows registry 14545(when the disassembly option is specified with no input file). 14546Added this code as the implementation for AcpiOsTableOverride in 14547the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 14548utility) to scan memory for the DSDT to the AcpiOsTableOverride 14549function in the DOS OSL to make the disassembler truly OS 14550independent. 14551 14552Implemented a new option to disassemble and compile in one step. 14553When used without an input filename, this option will grab the 14554DSDT from the local machine, disassemble it, and compile it in one 14555step. 14556 14557Added a warning message for invalid escapes (a backslash followed 14558by any character other than the allowable escapes). This catches 14559the quoted string error "\_SB_" (which should be "\\_SB_" ). 14560 14561Also, there are numerous instances in the ACPI specification where 14562this error occurs. 14563 14564Added a compiler option to disable all optimizations. This is 14565basically the "compatibility mode" because by using this option, 14566the AML code will come out exactly the same as other ASL 14567compilers. 14568 14569Added error messages for incorrectly ordered dependent resource 14570functions. This includes: missing EndDependentFn macro at end of 14571dependent resource list, nested dependent function macros (both 14572start and end), and missing StartDependentFn macro. These are 14573common errors that should be caught at compile time. 14574 14575Implemented _OSI support for the disassembler and compiler. _OSI 14576must be included in the namespace for proper disassembly (because 14577the disassembler must know the number of arguments.) 14578 14579Added an "optimization" message type that is optional (off by 14580default). This message is used for all optimizations - including 14581constant folding, integer optimization, and namepath optimization. 14582 14583---------------------------------------- 1458425 July 2002. Summary of changes for this release. 14585 14586 145871) ACPI CA Core Subsystem Version 20020725: 14588 14589The AML Disassembler has been enhanced to produce compilable ASL 14590code and has been integrated into the iASL compiler (see below) as 14591well as the single-step disassembly for the AML debugger and the 14592disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 14593resource templates and macros are fully supported. The 14594disassembler has been tested on over 30 different AML files, 14595producing identical AML when the resulting disassembled ASL file 14596is recompiled with the same ASL compiler. 14597 14598Modified the Resource Manager to allow zero interrupts and zero 14599dma channels during the GetCurrentResources call. This was 14600causing problems on some platforms. 14601 14602Added the AcpiOsRedirectOutput interface to the OSL to simplify 14603output redirection for the AcpiOsPrintf and AcpiOsVprintf 14604interfaces. 14605 14606Code and Data Size: Current core subsystem library sizes are shown 14607below. These are the code and data sizes for the acpica.lib 14608produced by the Microsoft Visual C++ 6.0 compiler, and these 14609values do not include any ACPI driver or OSPM code. The debug 14610version of the code includes the debug output trace mechanism and 14611has a larger code and data size. Note that these values will vary 14612depending on the efficiency of the compiler and the compiler 14613options used during generation. 14614 14615 Previous Release 14616 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 14617 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 14618 Current Release: 14619 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 14620 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 14621 14622 146232) Linux 14624 14625Fixed a panic in the EC driver (Dominik Brodowski) 14626 14627Implemented checksum of the R/XSDT itself during Linux table scan 14628(Richard Schaal) 14629 14630 146313) iASL compiler 14632 14633The AML disassembler is integrated into the compiler. The "-d" 14634option invokes the disassembler to completely disassemble an 14635input AML file, producing as output a text ASL file with the 14636extension ".dsl" (to avoid name collisions with existing .asl 14637source files.) A future enhancement will allow the disassembler 14638to obtain the BIOS DSDT from the registry under Windows. 14639 14640Fixed a problem with the VendorShort and VendorLong resource 14641descriptors where an invalid AML sequence was created. 14642 14643Implemented a fix for BufferData term in the ASL parser. It was 14644inadvertently defined twice, allowing invalid syntax to pass and 14645causing reduction conflicts. 14646 14647Fixed a problem where the Ones opcode could get converted to a 14648value of zero if "Ones" was used where a byte, word or dword value 14649was expected. The 64-bit value is now truncated to the correct 14650size with the correct value. 14651 14652 14653 14654---------------------------------------- 1465502 July 2002. Summary of changes for this release. 14656 14657 146581) ACPI CA Core Subsystem Version 20020702: 14659 14660The Table Manager code has been restructured to add several new 14661features. Tables that are not required by the core subsystem 14662(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 14663validated in any way and are returned from AcpiGetFirmwareTable if 14664requested. The AcpiOsTableOverride interface is now called for 14665each table that is loaded by the subsystem in order to allow the 14666host to override any table it chooses. Previously, only the DSDT 14667could be overridden. Added one new files, tbrsdt.c and 14668tbgetall.c. 14669 14670Fixed a problem with the conversion of internal package objects to 14671external objects (when a package is returned from a control 14672method.) The return buffer length was set to zero instead of the 14673proper length of the package object. 14674 14675Fixed a reported problem with the use of the RefOf and DeRefOf 14676operators when passing reference arguments to control methods. A 14677new type of Reference object is used internally for references 14678produced by the RefOf operator. 14679 14680Added additional error messages in the Resource Manager to explain 14681AE_BAD_DATA errors when they occur during resource parsing. 14682 14683Split the AcpiEnableSubsystem into two primitives to enable a 14684finer granularity initialization sequence. These two calls should 14685be called in this order: AcpiEnableSubsystem (flags), 14686AcpiInitializeObjects (flags). The flags parameter remains the 14687same. 14688 14689 146902) Linux 14691 14692Updated the ACPI utilities module to understand the new style of 14693fully resolved package objects that are now returned from the core 14694subsystem. This eliminates errors of the form: 14695 14696 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 14697 acpi_utils-0430 [145] acpi_evaluate_reference: 14698 Invalid element in package (not a device reference) 14699 14700The method evaluation utility uses the new buffer allocation 14701scheme instead of calling AcpiEvaluate Object twice. 14702 14703Added support for ECDT. This allows the use of the Embedded 14704 14705Controller before the namespace has been fully initialized, which 14706is necessary for ACPI 2.0 support, and for some laptops to 14707initialize properly. (Laptops using ECDT are still rare, so only 14708limited testing was performed of the added functionality.) 14709 14710Fixed memory leaks in the EC driver. 14711 14712Eliminated a brittle code structure in acpi_bus_init(). 14713 14714Eliminated the acpi_evaluate() helper function in utils.c. It is 14715no longer needed since acpi_evaluate_object can optionally 14716allocate memory for the return object. 14717 14718Implemented fix for keyboard hang when getting battery readings on 14719some systems (Stephen White) 14720 14721PCI IRQ routing update (Dominik Brodowski) 14722 14723Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 14724support 14725 14726---------------------------------------- 1472711 June 2002. Summary of changes for this release. 14728 14729 147301) ACPI CA Core Subsystem Version 20020611: 14731 14732Fixed a reported problem where constants such as Zero and One 14733appearing within _PRT packages were not handled correctly within 14734the resource manager code. Originally reported against the ASL 14735compiler because the code generator now optimizes integers to 14736their minimal AML representation (i.e. AML constants if possible.) 14737The _PRT code now handles all AML constant opcodes correctly 14738(Zero, One, Ones, Revision). 14739 14740Fixed a problem with the Concatenate operator in the AML 14741interpreter where a buffer result object was incorrectly marked as 14742not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 14743 14744All package sub-objects are now fully resolved before they are 14745returned from the external ACPI interfaces. This means that name 14746strings are resolved to object handles, and constant operators 14747(Zero, One, Ones, Revision) are resolved to Integers. 14748 14749Implemented immediate resolution of the AML Constant opcodes 14750(Zero, One, Ones, Revision) to Integer objects upon detection 14751within the AML stream. This has simplified and reduced the 14752generated code size of the subsystem by eliminating about 10 14753switch statements for these constants (which previously were 14754contained in Reference objects.) The complicating issues are that 14755the Zero opcode is used as a "placeholder" for unspecified 14756optional target operands and stores to constants are defined to be 14757no-ops. 14758 14759Code and Data Size: Current core subsystem library sizes are shown 14760below. These are the code and data sizes for the acpica.lib 14761produced by the Microsoft Visual C++ 6.0 compiler, and these 14762values do not include any ACPI driver or OSPM code. The debug 14763version of the code includes the debug output trace mechanism and 14764has a larger code and data size. Note that these values will vary 14765depending on the efficiency of the compiler and the compiler 14766options used during generation. 14767 14768 Previous Release 14769 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 14770 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 14771 Current Release: 14772 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 14773 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 14774 14775 147762) Linux 14777 14778 14779Added preliminary support for obtaining _TRA data for PCI root 14780bridges (Bjorn Helgaas). 14781 14782 147833) iASL Compiler Version X2046: 14784 14785Fixed a problem where the "_DDN" reserved name was defined to be a 14786control method with one argument. There are no arguments, and 14787_DDN does not have to be a control method. 14788 14789Fixed a problem with the Linux version of the compiler where the 14790source lines printed with error messages were the wrong lines. 14791This turned out to be the "LF versus CR/LF" difference between 14792Windows and Unix. This appears to be the longstanding issue 14793concerning listing output and error messages. 14794 14795Fixed a problem with the Linux version of compiler where opcode 14796names within error messages were wrong. This was caused by a 14797slight difference in the output of the Flex tool on Linux versus 14798Windows. 14799 14800Fixed a problem with the Linux compiler where the hex output files 14801contained some garbage data caused by an internal buffer overrun. 14802 14803 14804---------------------------------------- 1480517 May 2002. Summary of changes for this release. 14806 14807 148081) ACPI CA Core Subsystem Version 20020517: 14809 14810Implemented a workaround to an BIOS bug discovered on the HP 14811OmniBook where the FADT revision number and the table size are 14812inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 14813behavior is to fallback to using only the ACPI 1.0 fields of the 14814FADT if the table is too small to be a ACPI 2.0 table as claimed 14815by the revision number. Although this is a BIOS bug, this is a 14816case where the workaround is simple enough and with no side 14817effects, so it seemed prudent to add it. A warning message is 14818issued, however. 14819 14820Implemented minimum size checks for the fixed-length ACPI tables - 14821- the FADT and FACS, as well as consistency checks between the 14822revision number and the table size. 14823 14824Fixed a reported problem in the table override support where the 14825new table pointer was incorrectly treated as a physical address 14826instead of a logical address. 14827 14828Eliminated the use of the AE_AML_ERROR exception and replaced it 14829with more descriptive codes. 14830 14831Fixed a problem where an exception would occur if an ASL Field was 14832defined with no named Field Units underneath it (used by some 14833index fields). 14834 14835Code and Data Size: Current core subsystem library sizes are shown 14836below. These are the code and data sizes for the acpica.lib 14837produced by the Microsoft Visual C++ 6.0 compiler, and these 14838values do not include any ACPI driver or OSPM code. The debug 14839version of the code includes the debug output trace mechanism and 14840has a larger code and data size. Note that these values will vary 14841depending on the efficiency of the compiler and the compiler 14842options used during generation. 14843 14844 Previous Release 14845 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 14846 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 14847 Current Release: 14848 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 14849 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 14850 14851 14852 148532) Linux 14854 14855Much work done on ACPI init (MADT and PCI IRQ routing support). 14856(Paul D. and Dominik Brodowski) 14857 14858Fix PCI IRQ-related panic on boot (Sam Revitch) 14859 14860Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 14861 14862Fix "MHz" typo (Dominik Brodowski) 14863 14864Fix RTC year 2000 issue (Dominik Brodowski) 14865 14866Preclude multiple button proc entries (Eric Brunet) 14867 14868Moved arch-specific code out of include/platform/aclinux.h 14869 148703) iASL Compiler Version X2044: 14871 14872Implemented error checking for the string used in the EISAID macro 14873(Usually used in the definition of the _HID object.) The code now 14874strictly enforces the PnP format - exactly 7 characters, 3 14875uppercase letters and 4 hex digits. 14876 14877If a raw string is used in the definition of the _HID object 14878(instead of the EISAID macro), the string must contain all 14879alphanumeric characters (e.g., "*PNP0011" is not allowed because 14880of the asterisk.) 14881 14882Implemented checking for invalid use of ACPI reserved names for 14883most of the name creation operators (Name, Device, Event, Mutex, 14884OperationRegion, PowerResource, Processor, and ThermalZone.) 14885Previously, this check was only performed for control methods. 14886 14887Implemented an additional check on the Name operator to emit an 14888error if a reserved name that must be implemented in ASL as a 14889control method is used. We know that a reserved name must be a 14890method if it is defined with input arguments. 14891 14892The warning emitted when a namespace object reference is not found 14893during the cross reference phase has been changed into an error. 14894The "External" directive should be used for names defined in other 14895modules. 14896 14897 148984) Tools and Utilities 14899 14900The 16-bit tools (adump16 and aexec16) have been regenerated and 14901tested. 14902 14903Fixed a problem with the output of both acpidump and adump16 where 14904the indentation of closing parentheses and brackets was not 14905 14906aligned properly with the parent block. 14907 14908 14909---------------------------------------- 1491003 May 2002. Summary of changes for this release. 14911 14912 149131) ACPI CA Core Subsystem Version 20020503: 14914 14915Added support a new OSL interface that allows the host operating 14916 14917system software to override the DSDT found in the firmware - 14918AcpiOsTableOverride. With this interface, the OSL can examine the 14919version of the firmware DSDT and replace it with a different one 14920if desired. 14921 14922Added new external interfaces for accessing ACPI registers from 14923device drivers and other system software - AcpiGetRegister and 14924AcpiSetRegister. This was simply an externalization of the 14925existing AcpiHwBitRegister interfaces. 14926 14927Fixed a regression introduced in the previous build where the 14928ASL/AML CreateField operator always returned an error, 14929"destination must be a NS Node". 14930 14931Extended the maximum time (before failure) to successfully enable 14932ACPI mode to 3 seconds. 14933 14934Code and Data Size: Current core subsystem library sizes are shown 14935below. These are the code and data sizes for the acpica.lib 14936produced by the Microsoft Visual C++ 6.0 compiler, and these 14937values do not include any ACPI driver or OSPM code. The debug 14938version of the code includes the debug output trace mechanism and 14939has a larger code and data size. Note that these values will vary 14940depending on the efficiency of the compiler and the compiler 14941options used during generation. 14942 14943 Previous Release 14944 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 14945 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 14946 Current Release: 14947 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 14948 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 14949 14950 149512) Linux 14952 14953Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 14954free. While 3 out of 4 of our in-house systems work fine, the last 14955one still hangs when testing the LAPIC timer. 14956 14957Renamed many files in 2.5 kernel release to omit "acpi_" from the 14958name. 14959 14960Added warning on boot for Presario 711FR. 14961 14962Sleep improvements (Pavel Machek) 14963 14964ACPI can now be built without CONFIG_PCI enabled. 14965 14966IA64: Fixed memory map functions (JI Lee) 14967 14968 149693) iASL Compiler Version X2043: 14970 14971Added support to allow the compiler to be integrated into the MS 14972VC++ development environment for one-button compilation of single 14973files or entire projects -- with error-to-source-line mapping. 14974 14975Implemented support for compile-time constant folding for the 14976Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 14977specification. This allows the ASL writer to use expressions 14978instead of Integer/Buffer/String constants in terms that must 14979evaluate to constants at compile time and will also simplify the 14980emitted AML in any such sub-expressions that can be folded 14981(evaluated at compile-time.) This increases the size of the 14982compiler significantly because a portion of the ACPI CA AML 14983interpreter is included within the compiler in order to pre- 14984evaluate constant expressions. 14985 14986 14987Fixed a problem with the "Unicode" ASL macro that caused the 14988compiler to fault. (This macro is used in conjunction with the 14989_STR reserved name.) 14990 14991Implemented an AML opcode optimization to use the Zero, One, and 14992Ones opcodes where possible to further reduce the size of integer 14993constants and thus reduce the overall size of the generated AML 14994code. 14995 14996Implemented error checking for new reserved terms for ACPI version 149972.0A. 14998 14999Implemented the -qr option to display the current list of ACPI 15000reserved names known to the compiler. 15001 15002Implemented the -qc option to display the current list of ASL 15003operators that are allowed within constant expressions and can 15004therefore be folded at compile time if the operands are constants. 15005 15006 150074) Documentation 15008 15009Updated the Programmer's Reference for new interfaces, data types, 15010and memory allocation model options. 15011 15012Updated the iASL Compiler User Reference to apply new format and 15013add information about new features and options. 15014 15015---------------------------------------- 1501619 April 2002. Summary of changes for this release. 15017 150181) ACPI CA Core Subsystem Version 20020419: 15019 15020The source code base for the Core Subsystem has been completely 15021cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 15022versions. The Lint option files used are included in the 15023/acpi/generate/lint directory. 15024 15025Implemented enhanced status/error checking across the entire 15026Hardware manager subsystem. Any hardware errors (reported from 15027the OSL) are now bubbled up and will abort a running control 15028method. 15029 15030 15031Fixed a problem where the per-ACPI-table integer width (32 or 64) 15032was stored only with control method nodes, causing a fault when 15033non-control method code was executed during table loading. The 15034solution implemented uses a global variable to indicate table 15035width across the entire ACPI subsystem. Therefore, ACPI CA does 15036not support mixed integer widths across different ACPI tables 15037(DSDT, SSDT). 15038 15039Fixed a problem where NULL extended fields (X fields) in an ACPI 150402.0 ACPI FADT caused the table load to fail. Although the 15041existing ACPI specification is a bit fuzzy on this topic, the new 15042behavior is to fall back on a ACPI 1.0 field if the corresponding 15043ACPI 2.0 X field is zero (even though the table revision indicates 15044a full ACPI 2.0 table.) The ACPI specification will be updated to 15045clarify this issue. 15046 15047Fixed a problem with the SystemMemory operation region handler 15048where memory was always accessed byte-wise even if the AML- 15049specified access width was larger than a byte. This caused 15050problems on systems with memory-mapped I/O. Memory is now 15051accessed with the width specified. On systems that do not support 15052non-aligned transfers, a check is made to guarantee proper address 15053alignment before proceeding in order to avoid an AML-caused 15054alignment fault within the kernel. 15055 15056 15057Fixed a problem with the ExtendedIrq resource where only one byte 15058of the 4-byte Irq field was extracted. 15059 15060Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 15061function was out of date and required a rewrite. 15062 15063Code and Data Size: Current core subsystem library sizes are shown 15064below. These are the code and data sizes for the acpica.lib 15065produced by the Microsoft Visual C++ 6.0 compiler, and these 15066values do not include any ACPI driver or OSPM code. The debug 15067version of the code includes the debug output trace mechanism and 15068has a larger code and data size. Note that these values will vary 15069depending on the efficiency of the compiler and the compiler 15070options used during generation. 15071 15072 Previous Release 15073 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 15074 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 15075 Current Release: 15076 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 15077 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 15078 15079 150802) Linux 15081 15082PCI IRQ routing fixes (Dominik Brodowski) 15083 15084 150853) iASL Compiler Version X2042: 15086 15087Implemented an additional compile-time error check for a field 15088unit whose size + minimum access width would cause a run-time 15089access beyond the end-of-region. Previously, only the field size 15090itself was checked. 15091 15092The Core subsystem and iASL compiler now share a common parse 15093object in preparation for compile-time evaluation of the type 150943/4/5 ASL operators. 15095 15096 15097---------------------------------------- 15098Summary of changes for this release: 03_29_02 15099 151001) ACPI CA Core Subsystem Version 20020329: 15101 15102Implemented support for late evaluation of TermArg operands to 15103Buffer and Package objects. This allows complex expressions to be 15104used in the declarations of these object types. 15105 15106Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 151071.0, if the field was larger than 32 bits, it was returned as a 15108buffer - otherwise it was returned as an integer. In ACPI 2.0, 15109the field is returned as a buffer only if the field is larger than 1511064 bits. The TableRevision is now considered when making this 15111conversion to avoid incompatibility with existing ASL code. 15112 15113Implemented logical addressing for AcpiOsGetRootPointer. This 15114allows an RSDP with either a logical or physical address. With 15115this support, the host OS can now override all ACPI tables with 15116one logical RSDP. Includes implementation of "typed" pointer 15117support to allow a common data type for both physical and logical 15118pointers internally. This required a change to the 15119AcpiOsGetRootPointer interface. 15120 15121Implemented the use of ACPI 2.0 Generic Address Structures for all 15122GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 15123mapped I/O for these ACPI features. 15124 15125Initialization now ignores not only non-required tables (All 15126tables other than the FADT, FACS, DSDT, and SSDTs), but also does 15127not validate the table headers of unrecognized tables. 15128 15129Fixed a problem where a notify handler could only be 15130installed/removed on an object of type Device. All "notify" 15131 15132objects are now supported -- Devices, Processor, Power, and 15133Thermal. 15134 15135Removed most verbosity from the ACPI_DB_INFO debug level. Only 15136critical information is returned when this debug level is enabled. 15137 15138Code and Data Size: Current core subsystem library sizes are shown 15139below. These are the code and data sizes for the acpica.lib 15140produced by the Microsoft Visual C++ 6.0 compiler, and these 15141values do not include any ACPI driver or OSPM code. The debug 15142version of the code includes the debug output trace mechanism and 15143has a larger code and data size. Note that these values will vary 15144depending on the efficiency of the compiler and the compiler 15145options used during generation. 15146 15147 Previous Release 15148 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 15149 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 15150 Current Release: 15151 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 15152 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 15153 15154 151552) Linux: 15156 15157The processor driver (acpi_processor.c) now fully supports ACPI 151582.0-based processor performance control (e.g. Intel(R) 15159SpeedStep(TM) technology) Note that older laptops that only have 15160the Intel "applet" interface are not supported through this. The 15161'limit' and 'performance' interface (/proc) are fully functional. 15162[Note that basic policy for controlling performance state 15163transitions will be included in the next version of ospmd.] The 15164idle handler was modified to more aggressively use C2, and PIIX4 15165errata handling underwent a complete overhaul (big thanks to 15166Dominik Brodowski). 15167 15168Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 15169based devices in the ACPI namespace are now dynamically bound 15170(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 15171This allows, among other things, ACPI to resolve bus numbers for 15172subordinate PCI bridges. 15173 15174Enhanced PCI IRQ routing to get the proper bus number for _PRT 15175entries defined underneath PCI bridges. 15176 15177Added IBM 600E to bad bios list due to invalid _ADR value for 15178PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 15179 15180In the process of adding full MADT support (e.g. IOAPIC) for IA32 15181(acpi.c, mpparse.c) -- stay tuned. 15182 15183Added back visual differentiation between fixed-feature and 15184control-method buttons in dmesg. Buttons are also subtyped (e.g. 15185button/power/PWRF) to simplify button identification. 15186 15187We no longer use -Wno-unused when compiling debug. Please ignore 15188any "_THIS_MODULE defined but not used" messages. 15189 15190Can now shut down the system using "magic sysrq" key. 15191 15192 151933) iASL Compiler version 2041: 15194 15195Fixed a problem where conversion errors for hex/octal/decimal 15196constants were not reported. 15197 15198Implemented a fix for the General Register template Address field. 15199This field was 8 bits when it should be 64. 15200 15201Fixed a problem where errors/warnings were no longer being emitted 15202within the listing output file. 15203 15204Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 15205exactly 4 characters, alphanumeric only. 15206 15207 15208 15209 15210---------------------------------------- 15211Summary of changes for this release: 03_08_02 15212 15213 152141) ACPI CA Core Subsystem Version 20020308: 15215 15216Fixed a problem with AML Fields where the use of the "AccessAny" 15217keyword could cause an interpreter error due to attempting to read 15218or write beyond the end of the parent Operation Region. 15219 15220Fixed a problem in the SystemMemory Operation Region handler where 15221an attempt was made to map memory beyond the end of the region. 15222This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 15223errors on some Linux systems. 15224 15225Fixed a problem where the interpreter/namespace "search to root" 15226algorithm was not functioning for some object types. Relaxed the 15227internal restriction on the search to allow upsearches for all 15228external object types as well as most internal types. 15229 15230 152312) Linux: 15232 15233We now use safe_halt() macro versus individual calls to sti | hlt. 15234 15235Writing to the processor limit interface should now work. "echo 1" 15236will increase the limit, 2 will decrease, and 0 will reset to the 15237 15238default. 15239 15240 152413) ASL compiler: 15242 15243Fixed segfault on Linux version. 15244 15245 15246---------------------------------------- 15247Summary of changes for this release: 02_25_02 15248 152491) ACPI CA Core Subsystem: 15250 15251 15252Fixed a problem where the GPE bit masks were not initialized 15253properly, causing erratic GPE behavior. 15254 15255Implemented limited support for multiple calling conventions. The 15256code can be generated with either the VPL (variable parameter 15257list, or "C") convention, or the FPL (fixed parameter list, or 15258"Pascal") convention. The core subsystem is about 3.4% smaller 15259when generated with FPL. 15260 15261 152622) Linux 15263 15264Re-add some /proc/acpi/event functionality that was lost during 15265the rewrite 15266 15267Resolved issue with /proc events for fixed-feature buttons showing 15268up as the system device. 15269 15270Fixed checks on C2/C3 latencies to be inclusive of maximum values. 15271 15272Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 15273 15274Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 15275 15276Fixed limit interface & usage to fix bugs with passive cooling 15277hysterisis. 15278 15279Restructured PRT support. 15280 15281 15282---------------------------------------- 15283Summary of changes for this label: 02_14_02 15284 15285 152861) ACPI CA Core Subsystem: 15287 15288Implemented support in AcpiLoadTable to allow loading of FACS and 15289FADT tables. 15290 15291Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 15292been removed. All 64-bit platforms should be migrated to the ACPI 152932.0 tables. The actbl71.h header has been removed from the source 15294tree. 15295 15296All C macros defined within the subsystem have been prefixed with 15297"ACPI_" to avoid collision with other system include files. 15298 15299Removed the return value for the two AcpiOsPrint interfaces, since 15300it is never used and causes lint warnings for ignoring the return 15301value. 15302 15303Added error checking to all internal mutex acquire and release 15304calls. Although a failure from one of these interfaces is 15305probably a fatal system error, these checks will cause the 15306immediate abort of the currently executing method or interface. 15307 15308Fixed a problem where the AcpiSetCurrentResources interface could 15309fault. This was a side effect of the deployment of the new memory 15310allocation model. 15311 15312Fixed a couple of problems with the Global Lock support introduced 15313in the last major build. The "common" (1.0/2.0) internal FACS was 15314being overwritten with the FACS signature and clobbering the 15315Global Lock pointer. Also, the actual firmware FACS was being 15316unmapped after construction of the "common" FACS, preventing 15317access to the actual Global Lock field within it. The "common" 15318internal FACS is no longer installed as an actual ACPI table; it 15319is used simply as a global. 15320 15321Code and Data Size: Current core subsystem library sizes are shown 15322below. These are the code and data sizes for the acpica.lib 15323produced by the Microsoft Visual C++ 6.0 compiler, and these 15324values do not include any ACPI driver or OSPM code. The debug 15325version of the code includes the debug output trace mechanism and 15326has a larger code and data size. Note that these values will vary 15327depending on the efficiency of the compiler and the compiler 15328options used during generation. 15329 15330 Previous Release (02_07_01) 15331 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 15332 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 15333 Current Release: 15334 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 15335 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 15336 15337 153382) Linux 15339 15340Updated Linux-specific code for core macro and OSL interface 15341changes described above. 15342 15343Improved /proc/acpi/event. It now can be opened only once and has 15344proper poll functionality. 15345 15346Fixed and restructured power management (acpi_bus). 15347 15348Only create /proc "view by type" when devices of that class exist. 15349 15350Fixed "charging/discharging" bug (and others) in acpi_battery. 15351 15352Improved thermal zone code. 15353 15354 153553) ASL Compiler, version X2039: 15356 15357 15358Implemented the new compiler restriction on ASL String hex/octal 15359escapes to non-null, ASCII values. An error results if an invalid 15360value is used. (This will require an ACPI 2.0 specification 15361change.) 15362 15363AML object labels that are output to the optional C and ASM source 15364are now prefixed with both the ACPI table signature and table ID 15365to help guarantee uniqueness within a large BIOS project. 15366 15367 15368---------------------------------------- 15369Summary of changes for this label: 02_01_02 15370 153711) ACPI CA Core Subsystem: 15372 15373ACPI 2.0 support is complete in the entire Core Subsystem and the 15374ASL compiler. All new ACPI 2.0 operators are implemented and all 15375other changes for ACPI 2.0 support are complete. With 15376simultaneous code and data optimizations throughout the subsystem, 15377ACPI 2.0 support has been implemented with almost no additional 15378cost in terms of code and data size. 15379 15380Implemented a new mechanism for allocation of return buffers. If 15381the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 15382be allocated on behalf of the caller. Consolidated all return 15383buffer validation and allocation to a common procedure. Return 15384buffers will be allocated via the primary OSL allocation interface 15385since it appears that a separate pool is not needed by most users. 15386If a separate pool is required for these buffers, the caller can 15387still use the original mechanism and pre-allocate the buffer(s). 15388 15389Implemented support for string operands within the DerefOf 15390operator. 15391 15392Restructured the Hardware and Event managers to be table driven, 15393simplifying the source code and reducing the amount of generated 15394code. 15395 15396Split the common read/write low-level ACPI register bitfield 15397procedure into a separate read and write, simplifying the code 15398considerably. 15399 15400Obsoleted the AcpiOsCallocate OSL interface. This interface was 15401used only a handful of times and didn't have enough critical mass 15402for a separate interface. Replaced with a common calloc procedure 15403in the core. 15404 15405Fixed a reported problem with the GPE number mapping mechanism 15406that allows GPE1 numbers to be non-contiguous with GPE0. 15407Reorganized the GPE information and shrunk a large array that was 15408originally large enough to hold info for all possible GPEs (256) 15409to simply large enough to hold all GPEs up to the largest GPE 15410number on the machine. 15411 15412Fixed a reported problem with resource structure alignment on 64- 15413bit platforms. 15414 15415Changed the AcpiEnableEvent and AcpiDisableEvent external 15416interfaces to not require any flags for the common case of 15417enabling/disabling a GPE. 15418 15419Implemented support to allow a "Notify" on a Processor object. 15420 15421Most TBDs in comments within the source code have been resolved 15422and eliminated. 15423 15424 15425Fixed a problem in the interpreter where a standalone parent 15426prefix (^) was not handled correctly in the interpreter and 15427debugger. 15428 15429Removed obsolete and unnecessary GPE save/restore code. 15430 15431Implemented Field support in the ASL Load operator. This allows a 15432table to be loaded from a named field, in addition to loading a 15433table directly from an Operation Region. 15434 15435Implemented timeout and handle support in the external Global Lock 15436interfaces. 15437 15438Fixed a problem in the AcpiDump utility where pathnames were no 15439longer being generated correctly during the dump of named objects. 15440 15441Modified the AML debugger to give a full display of if/while 15442predicates instead of just one AML opcode at a time. (The 15443predicate can have several nested ASL statements.) The old method 15444was confusing during single stepping. 15445 15446Code and Data Size: Current core subsystem library sizes are shown 15447below. These are the code and data sizes for the acpica.lib 15448produced by the Microsoft Visual C++ 6.0 compiler, and these 15449values do not include any ACPI driver or OSPM code. The debug 15450version of the code includes the debug output trace mechanism and 15451has a larger code and data size. Note that these values will vary 15452depending on the efficiency of the compiler and the compiler 15453options used during generation. 15454 15455 Previous Release (12_18_01) 15456 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 15457 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 15458 Current Release: 15459 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 15460 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 15461 154622) Linux 15463 15464 Implemented fix for PIIX reverse throttling errata (Processor 15465driver) 15466 15467Added new Limit interface (Processor and Thermal drivers) 15468 15469New thermal policy (Thermal driver) 15470 15471Many updates to /proc 15472 15473Battery "low" event support (Battery driver) 15474 15475Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 15476 15477IA32 - IA64 initialization unification, no longer experimental 15478 15479Menuconfig options redesigned 15480 154813) ASL Compiler, version X2037: 15482 15483Implemented several new output features to simplify integration of 15484AML code into firmware: 1) Output the AML in C source code with 15485labels for each named ASL object. The original ASL source code 15486is interleaved as C comments. 2) Output the AML in ASM source code 15487with labels and interleaved ASL source. 3) Output the AML in 15488raw hex table form, in either C or ASM. 15489 15490Implemented support for optional string parameters to the 15491LoadTable operator. 15492 15493Completed support for embedded escape sequences within string 15494literals. The compiler now supports all single character escapes 15495as well as the Octal and Hex escapes. Note: the insertion of a 15496null byte into a string literal (via the hex/octal escape) causes 15497the string to be immediately terminated. A warning is issued. 15498 15499Fixed a problem where incorrect AML was generated for the case 15500where an ASL namepath consists of a single parent prefix ( 15501 15502) with no trailing name segments. 15503 15504The compiler has been successfully generated with a 64-bit C 15505compiler. 15506 15507 15508 15509 15510---------------------------------------- 15511Summary of changes for this label: 12_18_01 15512 155131) Linux 15514 15515Enhanced blacklist with reason and severity fields. Any table's 15516signature may now be used to identify a blacklisted system. 15517 15518Call _PIC control method to inform the firmware which interrupt 15519model the OS is using. Turn on any disabled link devices. 15520 15521Cleaned up busmgr /proc error handling (Andreas Dilger) 15522 15523 2) ACPI CA Core Subsystem: 15524 15525Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 15526while loop) 15527 15528Completed implementation of the ACPI 2.0 "Continue", 15529"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 15530operators. All new ACPI 2.0 operators are now implemented in both 15531the ASL compiler and the AML interpreter. The only remaining ACPI 155322.0 task is support for the String data type in the DerefOf 15533operator. Fixed a problem with AcquireMutex where the status code 15534was lost if the caller had to actually wait for the mutex. 15535 15536Increased the maximum ASL Field size from 64K bits to 4G bits. 15537 15538Completed implementation of the external Global Lock interfaces -- 15539AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 15540Handler parameters were added. 15541 15542Completed another pass at removing warnings and issues when 15543compiling with 64-bit compilers. The code now compiles cleanly 15544with the Intel 64-bit C/C++ compiler. Most notably, the pointer 15545add and subtract (diff) macros have changed considerably. 15546 15547 15548Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1554964-bit platforms, 32-bits on all others. This type is used 15550wherever memory allocation and/or the C sizeof() operator is used, 15551and affects the OSL memory allocation interfaces AcpiOsAllocate 15552and AcpiOsCallocate. 15553 15554Implemented sticky user breakpoints in the AML debugger. 15555 15556Code and Data Size: Current core subsystem library sizes are shown 15557below. These are the code and data sizes for the acpica.lib 15558produced by the Microsoft Visual C++ 6.0 compiler, and these 15559values do not include any ACPI driver or OSPM code. The debug 15560version of the code includes the debug output trace mechanism and 15561has a larger code and data size. Note that these values will vary 15562depending on the efficiency of the compiler and the compiler 15563options used during generation. 15564 15565 Previous Release (12_05_01) 15566 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 15567 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 15568 Current Release: 15569 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 15570 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 15571 15572 3) ASL Compiler, version X2034: 15573 15574Now checks for (and generates an error if detected) the use of a 15575Break or Continue statement without an enclosing While statement. 15576 15577 15578Successfully generated the compiler with the Intel 64-bit C 15579compiler. 15580 15581 ---------------------------------------- 15582Summary of changes for this label: 12_05_01 15583 15584 1) ACPI CA Core Subsystem: 15585 15586The ACPI 2.0 CopyObject operator is fully implemented. This 15587operator creates a new copy of an object (and is also used to 15588bypass the "implicit conversion" mechanism of the Store operator.) 15589 15590The ACPI 2.0 semantics for the SizeOf operator are fully 15591implemented. The change is that performing a SizeOf on a 15592reference object causes an automatic dereference of the object to 15593tha actual value before the size is evaluated. This behavior was 15594undefined in ACPI 1.0. 15595 15596The ACPI 2.0 semantics for the Extended IRQ resource descriptor 15597have been implemented. The interrupt polarity and mode are now 15598independently set. 15599 15600Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 15601appearing in Package objects were not properly converted to 15602integers when the internal Package was converted to an external 15603object (via the AcpiEvaluateObject interface.) 15604 15605Fixed a problem with the namespace object deletion mechanism for 15606objects created by control methods. There were two parts to this 15607problem: 1) Objects created during the initialization phase method 15608parse were not being deleted, and 2) The object owner ID mechanism 15609to track objects was broken. 15610 15611Fixed a problem where the use of the ASL Scope operator within a 15612control method would result in an invalid opcode exception. 15613 15614Fixed a problem introduced in the previous label where the buffer 15615length required for the _PRT structure was not being returned 15616correctly. 15617 15618Code and Data Size: Current core subsystem library sizes are shown 15619below. These are the code and data sizes for the acpica.lib 15620produced by the Microsoft Visual C++ 6.0 compiler, and these 15621values do not include any ACPI driver or OSPM code. The debug 15622version of the code includes the debug output trace mechanism and 15623has a larger code and data size. Note that these values will vary 15624depending on the efficiency of the compiler and the compiler 15625options used during generation. 15626 15627 Previous Release (11_20_01) 15628 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 15629 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 15630 15631 Current Release: 15632 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 15633 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 15634 15635 2) Linux: 15636 15637Updated all files to apply cleanly against 2.4.16. 15638 15639Added basic PCI Interrupt Routing Table (PRT) support for IA32 15640(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 15641version supports both static and dyanmic PRT entries, but dynamic 15642entries are treated as if they were static (not yet 15643reconfigurable). Architecture- specific code to use this data is 15644absent on IA32 but should be available shortly. 15645 15646Changed the initialization sequence to start the ACPI interpreter 15647(acpi_init) prior to initialization of the PCI driver (pci_init) 15648in init/main.c. This ordering is required to support PRT and 15649facilitate other (future) enhancement. A side effect is that the 15650ACPI bus driver and certain device drivers can no longer be loaded 15651as modules. 15652 15653Modified the 'make menuconfig' options to allow PCI Interrupt 15654Routing support to be included without the ACPI Bus and other 15655device drivers. 15656 15657 3) ASL Compiler, version X2033: 15658 15659Fixed some issues with the use of the new CopyObject and 15660DataTableRegion operators. Both are fully functional. 15661 15662 ---------------------------------------- 15663Summary of changes for this label: 11_20_01 15664 15665 20 November 2001. Summary of changes for this release. 15666 15667 1) ACPI CA Core Subsystem: 15668 15669Updated Index support to match ACPI 2.0 semantics. Storing a 15670Integer, String, or Buffer to an Index of a Buffer will store only 15671the least-significant byte of the source to the Indexed buffer 15672byte. Multiple writes are not performed. 15673 15674Fixed a problem where the access type used in an AccessAs ASL 15675operator was not recorded correctly into the field object. 15676 15677Fixed a problem where ASL Event objects were created in a 15678signalled state. Events are now created in an unsignalled state. 15679 15680The internal object cache is now purged after table loading and 15681initialization to reduce the use of dynamic kernel memory -- on 15682the assumption that object use is greatest during the parse phase 15683of the entire table (versus the run-time use of individual control 15684methods.) 15685 15686ACPI 2.0 variable-length packages are now fully operational. 15687 15688Code and Data Size: Code and Data optimizations have permitted new 15689feature development with an actual reduction in the library size. 15690Current core subsystem library sizes are shown below. These are 15691the code and data sizes for the acpica.lib produced by the 15692Microsoft Visual C++ 6.0 compiler, and these values do not include 15693any ACPI driver or OSPM code. The debug version of the code 15694includes the debug output trace mechanism and has a larger code 15695and data size. Note that these values will vary depending on the 15696efficiency of the compiler and the compiler options used during 15697generation. 15698 15699 Previous Release (11_09_01): 15700 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 15701 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 15702 15703 Current Release: 15704 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 15705 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 15706 15707 2) Linux: 15708 15709Enhanced the ACPI boot-time initialization code to allow the use 15710of Local APIC tables for processor enumeration on IA-32, and to 15711pave the way for a fully MPS-free boot (on SMP systems) in the 15712near future. This functionality replaces 15713arch/i386/kernel/acpitables.c, which was introduced in an earlier 157142.4.15-preX release. To enable this feature you must add 15715"acpi_boot=on" to the kernel command line -- see the help entry 15716for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 15717the works... 15718 15719Restructured the configuration options to allow boot-time table 15720parsing support without inclusion of the ACPI Interpreter (and 15721other) code. 15722 15723NOTE: This release does not include fixes for the reported events, 15724power-down, and thermal passive cooling issues (coming soon). 15725 15726 3) ASL Compiler: 15727 15728Added additional typechecking for Fields within restricted access 15729Operation Regions. All fields within EC and CMOS regions must be 15730declared with ByteAcc. All fields withing SMBus regions must be 15731declared with the BufferAcc access type. 15732 15733Fixed a problem where the listing file output of control methods 15734no longer interleaved the actual AML code with the ASL source 15735code. 15736 15737 15738 15739 15740---------------------------------------- 15741Summary of changes for this label: 11_09_01 15742 157431) ACPI CA Core Subsystem: 15744 15745Implemented ACPI 2.0-defined support for writes to fields with a 15746Buffer, String, or Integer source operand that is smaller than the 15747target field. In these cases, the source operand is zero-extended 15748to fill the target field. 15749 15750Fixed a problem where a Field starting bit offset (within the 15751parent operation region) was calculated incorrectly if the 15752 15753alignment of the field differed from the access width. This 15754affected CreateWordField, CreateDwordField, CreateQwordField, and 15755possibly other fields that use the "AccessAny" keyword. 15756 15757Fixed a problem introduced in the 11_02_01 release where indirect 15758stores through method arguments did not operate correctly. 15759 157602) Linux: 15761 15762Implemented boot-time ACPI table parsing support 15763(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 15764facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 15765legacy BIOS interfaces (e.g. MPS) for the configuration of system 15766processors, memory, and interrupts during setup_arch(). Note that 15767this patch does not include the required architecture-specific 15768changes required to apply this information -- subsequent patches 15769will be posted for both IA32 and IA64 to achieve this. 15770 15771Added low-level sleep support for IA32 platforms, courtesy of Pat 15772Mochel. This allows IA32 systems to transition to/from various 15773sleeping states (e.g. S1, S3), although the lack of a centralized 15774driver model and power-manageable drivers will prevent its 15775(successful) use on most systems. 15776 15777Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 15778submenu, unified IA32 and IA64 options, added new "Boot using ACPI 15779tables" option, etc. 15780 15781Increased the default timeout for the EC driver from 1ms to 10ms 15782(1000 cycles of 10us) to try to address AE_TIME errors during EC 15783transactions. 15784 15785 ---------------------------------------- 15786Summary of changes for this label: 11_02_01 15787 157881) ACPI CA Core Subsystem: 15789 15790ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 15791(QWordAcc keyword). All ACPI 2.0 64-bit support is now 15792implemented. 15793 15794OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 15795changes to support ACPI 2.0 Qword field access. Read/Write 15796PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 15797accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 15798the value parameter for the address space handler interface is now 15799an ACPI_INTEGER. OSL implementations of these interfaces must now 15800handle the case where the Width parameter is 64. 15801 15802Index Fields: Fixed a problem where unaligned bit assembly and 15803disassembly for IndexFields was not supported correctly. 15804 15805Index and Bank Fields: Nested Index and Bank Fields are now 15806supported. During field access, a check is performed to ensure 15807that the value written to an Index or Bank register is not out of 15808the range of the register. The Index (or Bank) register is 15809written before each access to the field data. Future support will 15810include allowing individual IndexFields to be wider than the 15811DataRegister width. 15812 15813Fields: Fixed a problem where the AML interpreter was incorrectly 15814attempting to write beyond the end of a Field/OpRegion. This was 15815a boundary case that occurred when a DWORD field was written to a 15816BYTE access OpRegion, forcing multiple writes and causing the 15817interpreter to write one datum too many. 15818 15819Fields: Fixed a problem with Field/OpRegion access where the 15820starting bit address of a field was incorrectly calculated if the 15821current access type was wider than a byte (WordAcc, DwordAcc, or 15822QwordAcc). 15823 15824Fields: Fixed a problem where forward references to individual 15825FieldUnits (individual Field names within a Field definition) were 15826not resolved during the AML table load. 15827 15828Fields: Fixed a problem where forward references from a Field 15829definition to the parent Operation Region definition were not 15830resolved during the AML table load. 15831 15832Fields: Duplicate FieldUnit names within a scope are now detected 15833during AML table load. 15834 15835Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 15836returned an incorrect name for the root node. 15837 15838Code and Data Size: Code and Data optimizations have permitted new 15839feature development with an actual reduction in the library size. 15840Current core subsystem library sizes are shown below. These are 15841the code and data sizes for the acpica.lib produced by the 15842Microsoft Visual C++ 6.0 compiler, and these values do not include 15843any ACPI driver or OSPM code. The debug version of the code 15844includes the debug output trace mechanism and has a larger code 15845and data size. Note that these values will vary depending on the 15846efficiency of the compiler and the compiler options used during 15847generation. 15848 15849 Previous Release (10_18_01): 15850 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 15851 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 15852 15853 Current Release: 15854 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 15855 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 15856 15857 2) Linux: 15858 15859Improved /proc processor output (Pavel Machek) Re-added 15860MODULE_LICENSE("GPL") to all modules. 15861 15862 3) ASL Compiler version X2030: 15863 15864Duplicate FieldUnit names within a scope are now detected and 15865flagged as errors. 15866 15867 4) Documentation: 15868 15869Programmer Reference updated to reflect OSL and address space 15870handler interface changes described above. 15871 15872---------------------------------------- 15873Summary of changes for this label: 10_18_01 15874 15875ACPI CA Core Subsystem: 15876 15877Fixed a problem with the internal object reference count mechanism 15878that occasionally caused premature object deletion. This resolves 15879all of the outstanding problem reports where an object is deleted 15880in the middle of an interpreter evaluation. Although this problem 15881only showed up in rather obscure cases, the solution to the 15882problem involved an adjustment of all reference counts involving 15883objects attached to namespace nodes. 15884 15885Fixed a problem with Field support in the interpreter where 15886writing to an aligned field whose length is an exact multiple (2 15887or greater) of the field access granularity would cause an attempt 15888to write beyond the end of the field. 15889 15890The top level AML opcode execution functions within the 15891interpreter have been renamed with a more meaningful and 15892consistent naming convention. The modules exmonad.c and 15893exdyadic.c were eliminated. New modules are exoparg1.c, 15894exoparg2.c, exoparg3.c, and exoparg6.c. 15895 15896Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 15897 15898Fixed a problem where the AML debugger was causing some internal 15899objects to not be deleted during subsystem termination. 15900 15901Fixed a problem with the external AcpiEvaluateObject interface 15902where the subsystem would fault if the named object to be 15903evaluated refered to a constant such as Zero, Ones, etc. 15904 15905Fixed a problem with IndexFields and BankFields where the 15906subsystem would fault if the index, data, or bank registers were 15907not defined in the same scope as the field itself. 15908 15909Added printf format string checking for compilers that support 15910this feature. Corrected more than 50 instances of issues with 15911format specifiers within invocations of ACPI_DEBUG_PRINT 15912throughout the core subsystem code. 15913 15914The ASL "Revision" operator now returns the ACPI support level 15915implemented in the core - the value "2" since the ACPI 2.0 support 15916is more than 50% implemented. 15917 15918Enhanced the output of the AML debugger "dump namespace" command 15919to output in a more human-readable form. 15920 15921Current core subsystem library code sizes are shown below. These 15922 15923are the code and data sizes for the acpica.lib produced by the 15924Microsoft Visual C++ 6.0 compiler, and these values do not include 15925any ACPI driver or OSPM code. The debug version of the code 15926includes the full debug trace mechanism -- leading to a much 15927 15928larger code and data size. Note that these values will vary 15929depending on the efficiency of the compiler and the compiler 15930options used during generation. 15931 15932 Previous Label (09_20_01): 15933 Non-Debug Version: 65K Code, 5K Data, 70K Total 15934 Debug Version: 138K Code, 58K Data, 196K Total 15935 15936 This Label: 15937 15938 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 15939 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 15940 15941Linux: 15942 15943Implemented a "Bad BIOS Blacklist" to track machines that have 15944known ASL/AML problems. 15945 15946Enhanced the /proc interface for the thermal zone driver and added 15947support for _HOT (the critical suspend trip point). The 'info' 15948file now includes threshold/policy information, and allows setting 15949of _SCP (cooling preference) and _TZP (polling frequency) values 15950to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 15951frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 15952preference to the passive/quiet mode (if supported by the ASL). 15953 15954Implemented a workaround for a gcc bug that resuted in an OOPs 15955when loading the control method battery driver. 15956 15957 ---------------------------------------- 15958Summary of changes for this label: 09_20_01 15959 15960 ACPI CA Core Subsystem: 15961 15962The AcpiEnableEvent and AcpiDisableEvent interfaces have been 15963modified to allow individual GPE levels to be flagged as wake- 15964enabled (i.e., these GPEs are to remain enabled when the platform 15965sleeps.) 15966 15967The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 15968support wake-enabled GPEs. This means that upon entering the 15969sleep state, all GPEs that are not wake-enabled are disabled. 15970When leaving the sleep state, these GPEs are reenabled. 15971 15972A local double-precision divide/modulo module has been added to 15973enhance portability to OS kernels where a 64-bit math library is 15974not available. The new module is "utmath.c". 15975 15976Several optimizations have been made to reduce the use of CPU 15977stack. Originally over 2K, the maximum stack usage is now below 159782K at 1860 bytes (1.82k) 15979 15980Fixed a problem with the AcpiGetFirmwareTable interface where the 15981root table pointer was not mapped into a logical address properly. 15982 15983Fixed a problem where a NULL pointer was being dereferenced in the 15984interpreter code for the ASL Notify operator. 15985 15986Fixed a problem where the use of the ASL Revision operator 15987returned an error. This operator now returns the current version 15988of the ACPI CA core subsystem. 15989 15990Fixed a problem where objects passed as control method parameters 15991to AcpiEvaluateObject were always deleted at method termination. 15992However, these objects may end up being stored into the namespace 15993by the called method. The object reference count mechanism was 15994applied to these objects instead of a force delete. 15995 15996Fixed a problem where static strings or buffers (contained in the 15997AML code) that are declared as package elements within the ASL 15998code could cause a fault because the interpreter would attempt to 15999delete them. These objects are now marked with the "static 16000object" flag to prevent any attempt to delete them. 16001 16002Implemented an interpreter optimization to use operands directly 16003from the state object instead of extracting the operands to local 16004variables. This reduces stack use and code size, and improves 16005performance. 16006 16007The module exxface.c was eliminated as it was an unnecessary extra 16008layer of code. 16009 16010Current core subsystem library code sizes are shown below. These 16011are the code and data sizes for the acpica.lib produced by the 16012Microsoft Visual C++ 6.0 compiler, and these values do not include 16013any ACPI driver or OSPM code. The debug version of the code 16014includes the full debug trace mechanism -- leading to a much 16015larger code and data size. Note that these values will vary 16016depending on the efficiency of the compiler and the compiler 16017options used during generation. 16018 16019 Non-Debug Version: 65K Code, 5K Data, 70K Total 16020(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 16021Total (Previously 195K) 16022 16023Linux: 16024 16025Support for ACPI 2.0 64-bit integers has been added. All ACPI 16026Integer objects are now 64 bits wide 16027 16028All Acpi data types and structures are now in lower case. Only 16029Acpi macros are upper case for differentiation. 16030 16031 Documentation: 16032 16033Changes to the external interfaces as described above. 16034 16035 ---------------------------------------- 16036Summary of changes for this label: 08_31_01 16037 16038 ACPI CA Core Subsystem: 16039 16040A bug with interpreter implementation of the ASL Divide operator 16041was found and fixed. The implicit function return value (not the 16042explicit store operands) was returning the remainder instead of 16043the quotient. This was a longstanding bug and it fixes several 16044known outstanding issues on various platforms. 16045 16046The ACPI_DEBUG_PRINT and function trace entry/exit macros have 16047been further optimized for size. There are 700 invocations of the 16048DEBUG_PRINT macro alone, so each optimization reduces the size of 16049the debug version of the subsystem significantly. 16050 16051A stack trace mechanism has been implemented. The maximum stack 16052usage is about 2K on 32-bit platforms. The debugger command "stat 16053stack" will display the current maximum stack usage. 16054 16055All public symbols and global variables within the subsystem are 16056now prefixed with the string "Acpi". This keeps all of the 16057symbols grouped together in a kernel map, and avoids conflicts 16058with other kernel subsystems. 16059 16060Most of the internal fixed lookup tables have been moved into the 16061code segment via the const operator. 16062 16063Several enhancements have been made to the interpreter to both 16064reduce the code size and improve performance. 16065 16066Current core subsystem library code sizes are shown below. These 16067are the code and data sizes for the acpica.lib produced by the 16068Microsoft Visual C++ 6.0 compiler, and these values do not include 16069any ACPI driver or OSPM code. The debug version of the code 16070includes the full debug trace mechanism which contains over 700 16071invocations of the DEBUG_PRINT macro, 500 function entry macro 16072invocations, and over 900 function exit macro invocations -- 16073leading to a much larger code and data size. Note that these 16074values will vary depending on the efficiency of the compiler and 16075the compiler options used during generation. 16076 16077 Non-Debug Version: 64K Code, 5K Data, 69K Total 16078Debug Version: 137K Code, 58K Data, 195K Total 16079 16080 Linux: 16081 16082Implemented wbinvd() macro, pending a kernel-wide definition. 16083 16084Fixed /proc/acpi/event to handle poll() and short reads. 16085 16086 ASL Compiler, version X2026: 16087 16088Fixed a problem introduced in the previous label where the AML 16089 16090code emitted for package objects produced packages with zero 16091length. 16092 16093 ---------------------------------------- 16094Summary of changes for this label: 08_16_01 16095 16096ACPI CA Core Subsystem: 16097 16098The following ACPI 2.0 ASL operators have been implemented in the 16099AML interpreter (These are already supported by the Intel ASL 16100compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 16101ToBuffer. Support for 64-bit AML constants is implemented in the 16102AML parser, debugger, and disassembler. 16103 16104The internal memory tracking mechanism (leak detection code) has 16105been upgraded to reduce the memory overhead (a separate tracking 16106block is no longer allocated for each memory allocation), and now 16107supports all of the internal object caches. 16108 16109The data structures and code for the internal object caches have 16110been coelesced and optimized so that there is a single cache and 16111memory list data structure and a single group of functions that 16112implement generic cache management. This has reduced the code 16113size in both the debug and release versions of the subsystem. 16114 16115The DEBUG_PRINT macro(s) have been optimized for size and replaced 16116by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 16117different, because it generates a single call to an internal 16118function. This results in a savings of about 90 bytes per 16119invocation, resulting in an overall code and data savings of about 1612016% in the debug version of the subsystem. 16121 16122 Linux: 16123 16124Fixed C3 disk corruption problems and re-enabled C3 on supporting 16125machines. 16126 16127Integrated low-level sleep code by Patrick Mochel. 16128 16129Further tweaked source code Linuxization. 16130 16131Other minor fixes. 16132 16133 ASL Compiler: 16134 16135Support for ACPI 2.0 variable length packages is fixed/completed. 16136 16137Fixed a problem where the optional length parameter for the ACPI 161382.0 ToString operator. 16139 16140Fixed multiple extraneous error messages when a syntax error is 16141detected within the declaration line of a control method. 16142 16143 ---------------------------------------- 16144Summary of changes for this label: 07_17_01 16145 16146ACPI CA Core Subsystem: 16147 16148Added a new interface named AcpiGetFirmwareTable to obtain any 16149ACPI table via the ACPI signature. The interface can be called at 16150any time during kernel initialization, even before the kernel 16151virtual memory manager is initialized and paging is enabled. This 16152allows kernel subsystems to obtain ACPI tables very early, even 16153before the ACPI CA subsystem is initialized. 16154 16155Fixed a problem where Fields defined with the AnyAcc attribute 16156could be resolved to the incorrect address under the following 16157conditions: 1) the field width is larger than 8 bits and 2) the 16158parent operation region is not defined on a DWORD boundary. 16159 16160Fixed a problem where the interpreter is not being locked during 16161namespace initialization (during execution of the _INI control 16162methods), causing an error when an attempt is made to release it 16163later. 16164 16165ACPI 2.0 support in the AML Interpreter has begun and will be 16166ongoing throughout the rest of this year. In this label, The Mod 16167operator is implemented. 16168 16169Added a new data type to contain full PCI addresses named 16170ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 16171and Function values. 16172 16173 Linux: 16174 16175Enhanced the Linux version of the source code to change most 16176capitalized ACPI type names to lowercase. For example, all 16177instances of ACPI_STATUS are changed to acpi_status. This will 16178result in a large diff, but the change is strictly cosmetic and 16179aligns the CA code closer to the Linux coding standard. 16180 16181OSL Interfaces: 16182 16183The interfaces to the PCI configuration space have been changed to 16184add the PCI Segment number and to split the single 32-bit combined 16185DeviceFunction field into two 16-bit fields. This was 16186accomplished by moving the four values that define an address in 16187PCI configuration space (segment, bus, device, and function) to 16188the new ACPI_PCI_ID structure. 16189 16190The changes to the PCI configuration space interfaces led to a 16191reexamination of the complete set of address space access 16192interfaces for PCI, I/O, and Memory. The previously existing 18 16193interfaces have proven difficult to maintain (any small change 16194must be propagated across at least 6 interfaces) and do not easily 16195allow for future expansion to 64 bits if necessary. Also, on some 16196systems, it would not be appropriate to demultiplex the access 16197width (8, 16, 32,or 64) before calling the OSL if the 16198corresponding native OS interfaces contain a similar access width 16199parameter. For these reasons, the 18 address space interfaces 16200have been replaced by these 6 new ones: 16201 16202AcpiOsReadPciConfiguration 16203AcpiOsWritePciConfiguration 16204AcpiOsReadMemory 16205AcpiOsWriteMemory 16206AcpiOsReadPort 16207AcpiOsWritePort 16208 16209Added a new interface named AcpiOsGetRootPointer to allow the OSL 16210to perform the platform and/or OS-specific actions necessary to 16211obtain the ACPI RSDP table pointer. On IA-32 platforms, this 16212interface will simply call down to the CA core to perform the low- 16213memory search for the table. On IA-64, the RSDP is obtained from 16214EFI. Migrating this interface to the OSL allows the CA core to 16215 16216remain OS and platform independent. 16217 16218Added a new interface named AcpiOsSignal to provide a generic 16219"function code and pointer" interface for various miscellaneous 16220signals and notifications that must be made to the host OS. The 16221first such signals are intended to support the ASL Fatal and 16222Breakpoint operators. In the latter case, the AcpiOsBreakpoint 16223interface has been obsoleted. 16224 16225The definition of the AcpiFormatException interface has been 16226changed to simplify its use. The caller no longer must supply a 16227buffer to the call; A pointer to a const string is now returned 16228directly. This allows the call to be easily used in printf 16229statements, etc. since the caller does not have to manage a local 16230buffer. 16231 16232 16233 ASL Compiler, Version X2025: 16234 16235The ACPI 2.0 Switch/Case/Default operators have been implemented 16236and are fully functional. They will work with all ACPI 1.0 16237interpreters, since the operators are simply translated to If/Else 16238pairs. 16239 16240The ACPI 2.0 ElseIf operator is implemented and will also work 16241with 1.0 interpreters, for the same reason. 16242 16243Implemented support for ACPI 2.0 variable-length packages. These 16244packages have a separate opcode, and their size is determined by 16245the interpreter at run-time. 16246 16247Documentation The ACPI CA Programmer Reference has been updated to 16248reflect the new interfaces and changes to existing interfaces. 16249 16250 ------------------------------------------ 16251Summary of changes for this label: 06_15_01 16252 16253 ACPI CA Core Subsystem: 16254 16255Fixed a problem where a DWORD-accessed field within a Buffer 16256object would get its byte address inadvertently rounded down to 16257the nearest DWORD. Buffers are always Byte-accessible. 16258 16259 ASL Compiler, version X2024: 16260 16261Fixed a problem where the Switch() operator would either fault or 16262hang the compiler. Note however, that the AML code for this ACPI 162632.0 operator is not yet implemented. 16264 16265Compiler uses the new AcpiOsGetTimer interface to obtain compile 16266timings. 16267 16268Implementation of the CreateField operator automatically converts 16269a reference to a named field within a resource descriptor from a 16270byte offset to a bit offset if required. 16271 16272Added some missing named fields from the resource descriptor 16273support. These are the names that are automatically created by the 16274compiler to reference fields within a descriptor. They are only 16275valid at compile time and are not passed through to the AML 16276interpreter. 16277 16278Resource descriptor named fields are now typed as Integers and 16279subject to compile-time typechecking when used in expressions. 16280 16281 ------------------------------------------ 16282Summary of changes for this label: 05_18_01 16283 16284 ACPI CA Core Subsystem: 16285 16286Fixed a couple of problems in the Field support code where bits 16287from adjacent fields could be returned along with the proper field 16288bits. Restructured the field support code to improve performance, 16289readability and maintainability. 16290 16291New DEBUG_PRINTP macro automatically inserts the procedure name 16292into the output, saving hundreds of copies of procedure name 16293strings within the source, shrinking the memory footprint of the 16294debug version of the core subsystem. 16295 16296 Source Code Structure: 16297 16298The source code directory tree was restructured to reflect the 16299current organization of the component architecture. Some files 16300and directories have been moved and/or renamed. 16301 16302 Linux: 16303 16304Fixed leaking kacpidpc processes. 16305 16306Fixed queueing event data even when /proc/acpi/event is not 16307opened. 16308 16309 ASL Compiler, version X2020: 16310 16311Memory allocation performance enhancement - over 24X compile time 16312improvement on large ASL files. Parse nodes and namestring 16313buffers are now allocated from a large internal compiler buffer. 16314 16315The temporary .SRC file is deleted unless the "-s" option is 16316specified 16317 16318The "-d" debug output option now sends all output to the .DBG file 16319instead of the console. 16320 16321"External" second parameter is now optional 16322 16323"ElseIf" syntax now properly allows the predicate 16324 16325Last operand to "Load" now recognized as a Target operand 16326 16327Debug object can now be used anywhere as a normal object. 16328 16329ResourceTemplate now returns an object of type BUFFER 16330 16331EISAID now returns an object of type INTEGER 16332 16333"Index" now works with a STRING operand 16334 16335"LoadTable" now accepts optional parameters 16336 16337"ToString" length parameter is now optional 16338 16339"Interrupt (ResourceType," parse error fixed. 16340 16341"Register" with a user-defined region space parse error fixed 16342 16343Escaped backslash at the end of a string ("\\") scan/parse error 16344fixed 16345 16346"Revision" is now an object of type INTEGER. 16347 16348 16349 16350------------------------------------------ 16351Summary of changes for this label: 05_02_01 16352 16353Linux: 16354 16355/proc/acpi/event now blocks properly. 16356 16357Removed /proc/sys/acpi. You can still dump your DSDT from 16358/proc/acpi/dsdt. 16359 16360 ACPI CA Core Subsystem: 16361 16362Fixed a problem introduced in the previous label where some of the 16363"small" resource descriptor types were not recognized. 16364 16365Improved error messages for the case where an ASL Field is outside 16366the range of the parent operation region. 16367 16368 ASL Compiler, version X2018: 16369 16370 16371Added error detection for ASL Fields that extend beyond the length 16372of the parent operation region (only if the length of the region 16373is known at compile time.) This includes fields that have a 16374minimum access width that is smaller than the parent region, and 16375individual field units that are partially or entirely beyond the 16376extent of the parent. 16377 16378 16379 16380------------------------------------------ 16381Summary of changes for this label: 04_27_01 16382 16383 ACPI CA Core Subsystem: 16384 16385Fixed a problem where the namespace mutex could be released at the 16386wrong time during execution of AcpiRemoveAddressSpaceHandler. 16387 16388Added optional thread ID output for debug traces, to simplify 16389debugging of multiple threads. Added context switch notification 16390when the debug code realizes that a different thread is now 16391executing ACPI code. 16392 16393Some additional external data types have been prefixed with the 16394string "ACPI_" for consistency. This may effect existing code. 16395The data types affected are the external callback typedefs - e.g., 16396 16397WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 16398 16399 Linux: 16400 16401Fixed an issue with the OSL semaphore implementation where a 16402thread was waking up with an error from receiving a SIGCHLD 16403signal. 16404 16405Linux version of ACPI CA now uses the system C library for string 16406manipulation routines instead of a local implementation. 16407 16408Cleaned up comments and removed TBDs. 16409 16410 ASL Compiler, version X2017: 16411 16412Enhanced error detection and reporting for all file I/O 16413operations. 16414 16415 Documentation: 16416 16417Programmer Reference updated to version 1.06. 16418 16419 16420 16421------------------------------------------ 16422Summary of changes for this label: 04_13_01 16423 16424 ACPI CA Core Subsystem: 16425 16426Restructured support for BufferFields and RegionFields. 16427BankFields support is now fully operational. All known 32-bit 16428limitations on field sizes have been removed. Both BufferFields 16429and (Operation) RegionFields are now supported by the same field 16430management code. 16431 16432Resource support now supports QWORD address and IO resources. The 1643316/32/64 bit address structures and the Extended IRQ structure 16434have been changed to properly handle Source Resource strings. 16435 16436A ThreadId of -1 is now used to indicate a "mutex not acquired" 16437condition internally and must never be returned by AcpiOsThreadId. 16438This reserved value was changed from 0 since Unix systems allow a 16439thread ID of 0. 16440 16441Linux: 16442 16443Driver code reorganized to enhance portability 16444 16445Added a kernel configuration option to control ACPI_DEBUG 16446 16447Fixed the EC driver to honor _GLK. 16448 16449ASL Compiler, version X2016: 16450 16451Fixed support for the "FixedHw" keyword. Previously, the FixedHw 16452address space was set to 0, not 0x7f as it should be. 16453 16454 ------------------------------------------ 16455Summary of changes for this label: 03_13_01 16456 16457 ACPI CA Core Subsystem: 16458 16459During ACPI initialization, the _SB_._INI method is now run if 16460present. 16461 16462Notify handler fix - notifies are deferred until the parent method 16463completes execution. This fixes the "mutex already acquired" 16464issue seen occasionally. 16465 16466Part of the "implicit conversion" rules in ACPI 2.0 have been 16467found to cause compatibility problems with existing ASL/AML. The 16468convert "result-to-target-type" implementation has been removed 16469for stores to method Args and Locals. Source operand conversion 16470is still fully implemented. Possible changes to ACPI 2.0 16471specification pending. 16472 16473Fix to AcpiRsCalculatePciRoutingTableLength to return correct 16474length. 16475 16476Fix for compiler warnings for 64-bit compiles. 16477 16478 Linux: 16479 16480/proc output aligned for easier parsing. 16481 16482Release-version compile problem fixed. 16483 16484New kernel configuration options documented in Configure.help. 16485 16486IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 16487context" message. 16488 16489 OSPM: 16490 16491Power resource driver integrated with bus manager. 16492 16493Fixed kernel fault during active cooling for thermal zones. 16494 16495Source Code: 16496 16497The source code tree has been restructured. 16498 16499 16500 16501------------------------------------------ 16502Summary of changes for this label: 03_02_01 16503 16504 Linux OS Services Layer (OSL): 16505 16506Major revision of all Linux-specific code. 16507 16508Modularized all ACPI-specific drivers. 16509 16510Added new thermal zone and power resource drivers. 16511 16512Revamped /proc interface (new functionality is under /proc/acpi). 16513 16514New kernel configuration options. 16515 16516 Linux known issues: 16517 16518New kernel configuration options not documented in Configure.help 16519yet. 16520 16521 16522Module dependencies not currently implemented. If used, they 16523should be loaded in this order: busmgr, power, ec, system, 16524processor, battery, ac_adapter, button, thermal. 16525 16526Modules will not load if CONFIG_MODVERSION is set. 16527 16528IBM 600E - entering S5 may reboot instead of shutting down. 16529 16530IBM 600E - Sleep button may generate "Invalid <NULL> context" 16531message. 16532 16533Some systems may fail with "execution mutex already acquired" 16534message. 16535 16536 ACPI CA Core Subsystem: 16537 16538Added a new OSL Interface, AcpiOsGetThreadId. This was required 16539for the deadlock detection code. Defined to return a non-zero, 32- 16540bit thread ID for the currently executing thread. May be a non- 16541zero constant integer on single-thread systems. 16542 16543Implemented deadlock detection for internal subsystem mutexes. We 16544may add conditional compilation for this code (debug only) later. 16545 16546ASL/AML Mutex object semantics are now fully supported. This 16547includes multiple acquires/releases by owner and support for the 16548 16549Mutex SyncLevel parameter. 16550 16551A new "Force Release" mechanism automatically frees all ASL 16552Mutexes that have been acquired but not released when a thread 16553exits the interpreter. This forces conformance to the ACPI spec 16554("All mutexes must be released when an invocation exits") and 16555prevents deadlocked ASL threads. This mechanism can be expanded 16556(later) to monitor other resource acquisitions if OEM ASL code 16557continues to misbehave (which it will). 16558 16559Several new ACPI exception codes have been added for the Mutex 16560support. 16561 16562Recursive method calls are now allowed and supported (the ACPI 16563spec does in fact allow recursive method calls.) The number of 16564recursive calls is subject to the restrictions imposed by the 16565SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 16566parameter. 16567 16568Implemented support for the SyncLevel parameter for control 16569methods (ACPI 2.0 feature) 16570 16571Fixed a deadlock problem when multiple threads attempted to use 16572the interpreter. 16573 16574Fixed a problem where the string length of a String package 16575element was not always set in a package returned from 16576AcpiEvaluateObject. 16577 16578Fixed a problem where the length of a String package element was 16579not always included in the length of the overall package returned 16580from AcpiEvaluateObject. 16581 16582Added external interfaces (Acpi*) to the ACPI debug memory 16583manager. This manager keeps a list of all outstanding 16584allocations, and can therefore detect memory leaks and attempts to 16585free memory blocks more than once. Useful for code such as the 16586power manager, etc. May not be appropriate for device drivers. 16587Performance with the debug code enabled is slow. 16588 16589The ACPI Global Lock is now an optional hardware element. 16590 16591 ASL Compiler Version X2015: 16592 16593Integrated changes to allow the compiler to be generated on 16594multiple platforms. 16595 16596Linux makefile added to generate the compiler on Linux 16597 16598 Source Code: 16599 16600All platform-specific headers have been moved to their own 16601subdirectory, Include/Platform. 16602 16603New source file added, Interpreter/ammutex.c 16604 16605New header file, Include/acstruct.h 16606 16607 Documentation: 16608 16609The programmer reference has been updated for the following new 16610interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 16611 16612 ------------------------------------------ 16613Summary of changes for this label: 02_08_01 16614 16615Core ACPI CA Subsystem: Fixed a problem where an error was 16616incorrectly returned if the return resource buffer was larger than 16617the actual data (in the resource interfaces). 16618 16619References to named objects within packages are resolved to the 16620 16621full pathname string before packages are returned directly (via 16622the AcpiEvaluateObject interface) or indirectly via the resource 16623interfaces. 16624 16625Linux OS Services Layer (OSL): 16626 16627Improved /proc battery interface. 16628 16629 16630Added C-state debugging output and other miscellaneous fixes. 16631 16632ASL Compiler Version X2014: 16633 16634All defined method arguments can now be used as local variables, 16635including the ones that are not actually passed in as parameters. 16636The compiler tracks initialization of the arguments and issues an 16637exception if they are used without prior assignment (just like 16638locals). 16639 16640The -o option now specifies a filename prefix that is used for all 16641output files, including the AML output file. Otherwise, the 16642default behavior is as follows: 1) the AML goes to the file 16643specified in the DSDT. 2) all other output files use the input 16644source filename as the base. 16645 16646 ------------------------------------------ 16647Summary of changes for this label: 01_25_01 16648 16649Core ACPI CA Subsystem: Restructured the implementation of object 16650store support within the interpreter. This includes support for 16651the Store operator as well as any ASL operators that include a 16652target operand. 16653 16654Partially implemented support for Implicit Result-to-Target 16655conversion. This is when a result object is converted on the fly 16656to the type of an existing target object. Completion of this 16657support is pending further analysis of the ACPI specification 16658concerning this matter. 16659 16660CPU-specific code has been removed from the subsystem (hardware 16661directory). 16662 16663New Power Management Timer functions added 16664 16665Linux OS Services Layer (OSL): Moved system state transition code 16666to the core, fixed it, and modified Linux OSL accordingly. 16667 16668Fixed C2 and C3 latency calculations. 16669 16670 16671We no longer use the compilation date for the version message on 16672initialization, but retrieve the version from AcpiGetSystemInfo(). 16673 16674Incorporated for fix Sony VAIO machines. 16675 16676Documentation: The Programmer Reference has been updated and 16677reformatted. 16678 16679 16680ASL Compiler: Version X2013: Fixed a problem where the line 16681numbering and error reporting could get out of sync in the 16682presence of multiple include files. 16683 16684 ------------------------------------------ 16685Summary of changes for this label: 01_15_01 16686 16687Core ACPI CA Subsystem: 16688 16689Implemented support for type conversions in the execution of the 16690ASL Concatenate operator (The second operand is converted to 16691match the type of the first operand before concatenation.) 16692 16693Support for implicit source operand conversion is partially 16694implemented. The ASL source operand types Integer, Buffer, and 16695String are freely interchangeable for most ASL operators and are 16696converted by the interpreter on the fly as required. Implicit 16697Target operand conversion (where the result is converted to the 16698target type before storing) is not yet implemented. 16699 16700Support for 32-bit and 64-bit BCD integers is implemented. 16701 16702Problem fixed where a field read on an aligned field could cause a 16703read past the end of the field. 16704 16705New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 16706does not return a value, but the caller expects one. (The ASL 16707compiler flags this as a warning.) 16708 16709ASL Compiler: 16710 16711Version X2011: 167121. Static typechecking of all operands is implemented. This 16713prevents the use of invalid objects (such as using a Package where 16714an Integer is required) at compile time instead of at interpreter 16715run-time. 167162. The ASL source line is printed with ALL errors and warnings. 167173. Bug fix for source EOF without final linefeed. 167184. Debug option is split into a parse trace and a namespace trace. 167195. Namespace output option (-n) includes initial values for 16720integers and strings. 167216. Parse-only option added for quick syntax checking. 167227. Compiler checks for duplicate ACPI name declarations 16723 16724Version X2012: 167251. Relaxed typechecking to allow interchangeability between 16726strings, integers, and buffers. These types are now converted by 16727the interpreter at runtime. 167282. Compiler reports time taken by each internal subsystem in the 16729debug output file. 16730 16731 16732 ------------------------------------------ 16733Summary of changes for this label: 12_14_00 16734 16735ASL Compiler: 16736 16737This is the first official release of the compiler. Since the 16738compiler requires elements of the Core Subsystem, this label 16739synchronizes everything. 16740 16741------------------------------------------ 16742Summary of changes for this label: 12_08_00 16743 16744 16745Fixed a problem where named references within the ASL definition 16746of both OperationRegions and CreateXXXFields did not work 16747properly. The symptom was an AE_AML_OPERAND_TYPE during 16748initialization of the region/field. This is similar (but not 16749related internally) to the problem that was fixed in the last 16750label. 16751 16752Implemented both 32-bit and 64-bit support for the BCD ASL 16753functions ToBCD and FromBCD. 16754 16755Updated all legal headers to include "2000" in the copyright 16756years. 16757 16758 ------------------------------------------ 16759Summary of changes for this label: 12_01_00 16760 16761Fixed a problem where method invocations within the ASL definition 16762of both OperationRegions and CreateXXXFields did not work 16763properly. The symptom was an AE_AML_OPERAND_TYPE during 16764initialization of the region/field: 16765 16766 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 16767[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 16768(0x3005) 16769 16770Fixed a problem where operators with more than one nested 16771subexpression would fail. The symptoms were varied, by mostly 16772AE_AML_OPERAND_TYPE errors. This was actually a rather serious 16773problem that has gone unnoticed until now. 16774 16775 Subtract (Add (1,2), Multiply (3,4)) 16776 16777Fixed a problem where AcpiGetHandle didn't quite get fixed in the 16778previous build (The prefix part of a relative path was handled 16779incorrectly). 16780 16781Fixed a problem where Operation Region initialization failed if 16782the operation region name was a "namepath" instead of a simple 16783"nameseg". Symptom was an AE_NO_OPERAND error. 16784 16785Fixed a problem where an assignment to a local variable via the 16786indirect RefOf mechanism only worked for the first such 16787assignment. Subsequent assignments were ignored. 16788 16789 ------------------------------------------ 16790Summary of changes for this label: 11_15_00 16791 16792ACPI 2.0 table support with backwards support for ACPI 1.0 and the 167930.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 16794the AML interpreter does NOT have support for the new 2.0 ASL 16795grammar terms at this time. 16796 16797All ACPI hardware access is via the GAS structures in the ACPI 2.0 16798FADT. 16799 16800All physical memory addresses across all platforms are now 64 bits 16801wide. Logical address width remains dependent on the platform 16802(i.e., "void *"). 16803 16804AcpiOsMapMemory interface changed to a 64-bit physical address. 16805 16806The AML interpreter integer size is now 64 bits, as per the ACPI 168072.0 specification. 16808 16809For backwards compatibility with ACPI 1.0, ACPI tables with a 16810revision number less than 2 use 32-bit integers only. 16811 16812Fixed a problem where the evaluation of OpRegion operands did not 16813always resolve them to numbers properly. 16814 16815------------------------------------------ 16816Summary of changes for this label: 10_20_00 16817 16818Fix for CBN_._STA issue. This fix will allow correct access to 16819CBN_ OpRegions when the _STA returns 0x8. 16820 16821Support to convert ACPI constants (Ones, Zeros, One) to actual 16822values before a package object is returned 16823 16824Fix for method call as predicate to if/while construct causing 16825incorrect if/while behavior 16826 16827Fix for Else block package lengths sometimes calculated wrong (if 16828block > 63 bytes) 16829 16830Fix for Processor object length field, was always zero 16831 16832Table load abort if FACP sanity check fails 16833 16834Fix for problem with Scope(name) if name already exists 16835 16836Warning emitted if a named object referenced cannot be found 16837(resolved) during method execution. 16838 16839 16840 16841 16842 16843------------------------------------------ 16844Summary of changes for this label: 9_29_00 16845 16846New table initialization interfaces: AcpiInitializeSubsystem no 16847longer has any parameters AcpiFindRootPointer - Find the RSDP (if 16848necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 16849>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 16850AcpiLoadTables 16851 16852Note: These interface changes require changes to all existing OSDs 16853 16854The PCI_Config default address space handler is always installed 16855at the root namespace object. 16856 16857------------------------------------------- 16858Summary of changes for this label: 09_15_00 16859 16860The new initialization architecture is implemented. New 16861interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 16862AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 16863 16864(Namespace is automatically loaded when a table is loaded) 16865 16866The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1686752 bytes to 32 bytes. There is usually one of these for every 16868namespace object, so the memory savings is significant. 16869 16870Implemented just-in-time evaluation of the CreateField operators. 16871 16872Bug fixes for IA-64 support have been integrated. 16873 16874Additional code review comments have been implemented 16875 16876The so-called "third pass parse" has been replaced by a final walk 16877through the namespace to initialize all operation regions (address 16878spaces) and fields that have not yet been initialized during the 16879execution of the various _INI and REG methods. 16880 16881New file - namespace/nsinit.c 16882 16883------------------------------------------- 16884Summary of changes for this label: 09_01_00 16885 16886Namespace manager data structures have been reworked to change the 16887primary object from a table to a single object. This has 16888resulted in dynamic memory savings of 3X within the namespace and 168892X overall in the ACPI CA subsystem. 16890 16891Fixed problem where the call to AcpiEvFindPciRootBuses was 16892inadvertently left commented out. 16893 16894Reduced the warning count when generating the source with the GCC 16895compiler. 16896 16897Revision numbers added to each module header showing the 16898SourceSafe version of the file. Please refer to this version 16899number when giving us feedback or comments on individual modules. 16900 16901The main object types within the subsystem have been renamed to 16902clarify their purpose: 16903 16904ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 16905ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 16906ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 16907 16908NOTE: no changes to the initialization sequence are included in 16909this label. 16910 16911------------------------------------------- 16912Summary of changes for this label: 08_23_00 16913 16914Fixed problem where TerminateControlMethod was being called 16915multiple times per method 16916 16917Fixed debugger problem where single stepping caused a semaphore to 16918be oversignalled 16919 16920Improved performance through additional parse object caching - 16921added ACPI_EXTENDED_OP type 16922 16923------------------------------------------- 16924Summary of changes for this label: 08_10_00 16925 16926Parser/Interpreter integration: Eliminated the creation of 16927complete parse trees for ACPI tables and control methods. 16928Instead, parse subtrees are created and then deleted as soon as 16929they are processed (Either entered into the namespace or executed 16930by the interpreter). This reduces the use of dynamic kernel 16931memory significantly. (about 10X) 16932 16933Exception codes broken into classes and renumbered. Be sure to 16934recompile all code that includes acexcep.h. Hopefully we won't 16935have to renumber the codes again now that they are split into 16936classes (environment, programmer, AML code, ACPI table, and 16937internal). 16938 16939Fixed some additional alignment issues in the Resource Manager 16940subcomponent 16941 16942Implemented semaphore tracking in the AcpiExec utility, and fixed 16943several places where mutexes/semaphores were being unlocked 16944without a corresponding lock operation. There are no known 16945semaphore or mutex "leaks" at this time. 16946 16947Fixed the case where an ASL Return operator is used to return an 16948unnamed package. 16949 16950------------------------------------------- 16951Summary of changes for this label: 07_28_00 16952 16953Fixed a problem with the way addresses were calculated in 16954AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 16955manifested itself when a Field was created with WordAccess or 16956DwordAccess, but the field unit defined within the Field was less 16957 16958than a Word or Dword. 16959 16960Fixed a problem in AmlDumpOperands() module's loop to pull 16961operands off of the operand stack to display information. The 16962problem manifested itself as a TLB error on 64-bit systems when 16963accessing an operand stack with two or more operands. 16964 16965Fixed a problem with the PCI configuration space handlers where 16966context was getting confused between accesses. This required a 16967change to the generic address space handler and address space 16968setup definitions. Handlers now get both a global handler context 16969(this is the one passed in by the user when executing 16970AcpiInstallAddressSpaceHandler() and a specific region context 16971that is unique to each region (For example, the _ADR, _SEG and 16972_BBN values associated with a specific region). The generic 16973function definitions have changed to the following: 16974 16975typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 16976UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 16977*HandlerContext, // This used to be void *Context void 16978*RegionContext); // This is an additional parameter 16979 16980typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 16981RegionHandle, UINT32 Function, void *HandlerContext, void 16982**RegionContext); // This used to be **ReturnContext 16983 16984------------------------------------------- 16985Summary of changes for this label: 07_21_00 16986 16987Major file consolidation and rename. All files within the 16988interpreter have been renamed as well as most header files. This 16989was done to prevent collisions with existing files in the host 16990OSs -- filenames such as "config.h" and "global.h" seem to be 16991quite common. The VC project files have been updated. All 16992makefiles will require modification. 16993 16994The parser/interpreter integration continues in Phase 5 with the 16995implementation of a complete 2-pass parse (the AML is parsed 16996twice) for each table; This avoids the construction of a huge 16997parse tree and therefore reduces the amount of dynamic memory 16998required by the subsystem. Greater use of the parse object cache 16999means that performance is unaffected. 17000 17001Many comments from the two code reviews have been rolled in. 17002 17003The 64-bit alignment support is complete. 17004 17005------------------------------------------- 17006Summary of changes for this label: 06_30_00 17007 17008With a nod and a tip of the hat to the technology of yesteryear, 17009we've added support in the source code for 80 column output 17010devices. The code is now mostly constrained to 80 columns or 17011less to support environments and editors that 1) cannot display 17012or print more than 80 characters on a single line, and 2) cannot 17013disable line wrapping. 17014 17015A major restructuring of the namespace data structure has been 17016completed. The result is 1) cleaner and more 17017understandable/maintainable code, and 2) a significant reduction 17018in the dynamic memory requirement for each named ACPI object 17019(almost half). 17020 17021------------------------------------------- 17022Summary of changes for this label: 06_23_00 17023 17024Linux support has been added. In order to obtain approval to get 17025the ACPI CA subsystem into the Linux kernel, we've had to make 17026quite a few changes to the base subsystem that will affect all 17027users (all the changes are generic and OS- independent). The 17028effects of these global changes have been somewhat far reaching. 17029Files have been merged and/or renamed and interfaces have been 17030renamed. The major changes are described below. 17031 17032Osd* interfaces renamed to AcpiOs* to eliminate namespace 17033pollution/confusion within our target kernels. All OSD 17034interfaces must be modified to match the new naming convention. 17035 17036Files merged across the subsystem. A number of the smaller source 17037and header files have been merged to reduce the file count and 17038increase the density of the existing files. There are too many 17039to list here. In general, makefiles that call out individual 17040files will require rebuilding. 17041 17042Interpreter files renamed. All interpreter files now have the 17043prefix am* instead of ie* and is*. 17044 17045Header files renamed: The acapi.h file is now acpixf.h. The 17046acpiosd.h file is now acpiosxf.h. We are removing references to 17047the acronym "API" since it is somewhat windowsy. The new name is 17048"external interface" or xface or xf in the filenames.j 17049 17050 17051All manifest constants have been forced to upper case (some were 17052mixed case.) Also, the string "ACPI_" has been prepended to many 17053(not all) of the constants, typedefs, and structs. 17054 17055The globals "DebugLevel" and "DebugLayer" have been renamed 17056"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 17057 17058All other globals within the subsystem are now prefixed with 17059"AcpiGbl_" Internal procedures within the subsystem are now 17060prefixed with "Acpi" (with only a few exceptions). The original 17061two-letter abbreviation for the subcomponent remains after "Acpi" 17062- for example, CmCallocate became AcpiCmCallocate. 17063 17064Added a source code translation/conversion utility. Used to 17065generate the Linux source code, it can be modified to generate 17066other types of source as well. Can also be used to cleanup 17067existing source by removing extraneous spaces and blank lines. 17068Found in tools/acpisrc/* 17069 17070OsdUnMapMemory was renamed to OsdUnmapMemory and then 17071AcpiOsUnmapMemory. (UnMap became Unmap). 17072 17073A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 17074When set to one, this indicates that the caller wants to use the 17075 17076semaphore as a mutex, not a counting semaphore. ACPI CA uses 17077both types. However, implementers of this call may want to use 17078different OS primitives depending on the type of semaphore 17079requested. For example, some operating systems provide separate 17080 17081"mutex" and "semaphore" interfaces - where the mutex interface is 17082much faster because it doesn't have all the overhead of a full 17083semaphore implementation. 17084 17085Fixed a deadlock problem where a method that accesses the PCI 17086address space can block forever if it is the first access to the 17087space. 17088 17089------------------------------------------- 17090Summary of changes for this label: 06_02_00 17091 17092Support for environments that cannot handle unaligned data 17093accesses (e.g. firmware and OS environments devoid of alignment 17094handler technology namely SAL/EFI and the IA-64 Linux kernel) has 17095been added (via configurable macros) in these three areas: - 17096Transfer of data from the raw AML byte stream is done via byte 17097moves instead of word/dword/qword moves. - External objects are 17098aligned within the user buffer, including package elements (sub- 17099objects). - Conversion of name strings to UINT32 Acpi Names is now 17100done byte-wise. 17101 17102The Store operator was modified to mimic Microsoft's 17103implementation when storing to a Buffer Field. 17104 17105Added a check of the BM_STS bit before entering C3. 17106 17107The methods subdirectory has been obsoleted and removed. A new 17108file, cmeval.c subsumes the functionality. 17109 17110A 16-bit (DOS) version of AcpiExec has been developed. The 17111makefile is under the acpiexec directory. 17112