1---------------------------------------- 231 May 2017. Summary of changes for version 20170531: 3 4 50) ACPI 6.2 support: 6 7The ACPI specification version 6.2 has been released and is available at 8http://uefi.org/specifications 9 10This version of ACPICA fully supports the ACPI 6.2 specification. Changes 11are summarized below. 12 13New ACPI tables (Table Compiler/Disassembler/Templates): 14 HMAT (Heterogeneous Memory Attributes Table) 15 WSMT (Windows SMM Security Mitigation Table) 16 PPTT (Processor Properties Topology Table) 17 18New subtables for existing ACPI tables: 19 HEST (New subtable, Arch-deferred machine check) 20 SRAT (New subtable, Arch-specific affinity structure) 21 PCCT (New subtables, Extended PCC subspaces (types 3 and 4)) 22 23Simple updates for existing ACPI tables: 24 BGRT (two new flag bits) 25 HEST (New bit defined for several subtables, GHES_ASSIST) 26 27New Resource Descriptors and Resource macros (Compiler/Disassembler): 28 PinConfig() 29 PinFunction() 30 PinGroup() 31 PinGroupConfig() 32 PinGroupFunction() 33 New type for hardware error notification (section 18.3.2.9) 34 35New predefined names/methods (Compiler/Interpreter): 36 _HMA (Heterogeneous Memory Attributes) 37 _LSI (Label Storage Information) 38 _LSR (Label Storage Read) 39 _LSW (Label Storage Write) 40 41ASL grammar/macro changes (Compiler): 42 For() ASL macro, implemented with the AML while operator 43 Extensions to Concatenate operator 44 Support for multiple definition blocks in same ASL file 45 Clarification for Buffer operator 46 Allow executable AML code underneath all scopes (Devices, etc.) 47 Clarification/change for the _OSI return value 48 ASL grammar update for reference operators 49 Allow a zero-length string for AML filename in DefinitionBlock 50 51Miscellaneous: 52 New device object notification value 53 Remove a notify value (0x0C) for graceful shutdown 54 New UUIDs for processor/cache properties and 55 physical package property 56 New _HID, ACPI0014 (Wireless Power Calibration Device) 57 58 591) ACPICA kernel-resident subsystem: 60 61Added support to disable ACPI events on hardware-reduced platforms. 62Eliminates error messages of the form "Could not enable fixed event". Lv 63Zheng 64 65Fixed a problem using Device/Thermal objects with the ObjectType and 66DerefOf ASL operators. This support had not been fully/properly 67implemented. 68 69Fixed a problem where if a Buffer object containing a resource template 70was longer than the actual resource template, an error was generated -- 71even though the AML is legal. This case has been seen in the field. 72 73Fixed a problem with the header definition of the MADT PCAT_COMPAT flag. 74The values for DUAL_PIC and MULTIPLE_APIC were reversed. 75 76Added header file changes for the TPM2 ACPI table. Update to new version 77of the TCG specification. Adds a new TPM2 subtable for ARM SMC. 78 79Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex. 80These interfaces are intended to be used only in conjunction with the 81predefined _DLM method (Device Lock Method). "This object appears in a 82device scope when AML access to the device must be synchronized with the 83OS environment". 84 85Example Code and Data Size: These are the sizes for the OS-independent 86acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 87debug version of the code includes the debug output trace mechanism and 88has a much larger code and data size. 89 90 Current Release: 91 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total 92 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total 93 Previous Release: 94 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 95 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 96 97 982) iASL Compiler/Disassembler and Tools: 99 100iASL: Fixed a problem where an External() declaration could not refer to 101a Field Unit. Erik Schmauss. 102 103Disassembler: Improved support for the Switch/Case operators. This 104feature will disassemble AML code back to the original Switch operators 105when possible, instead of an If..Else sequence. David Box 106 107iASL and disassembler: Improved the handling of multiple extraneous 108parentheses for both ASL input and disassembled ASL output. 109 110Improved the behavior of the iASL compiler and disassembler to detect 111improper use of external declarations 112 113Disassembler: Now aborts immediately upon detection of an unknown AML 114opcode. The AML parser has no real way to recover from this, and can 115result in the creation of an ill-formed parse tree that causes errors 116later during the disassembly. 117 118All tools: Fixed a problem where the Unix application OSL did not handle 119control-c correctly. For example, a control-c could incorrectly wake the 120debugger. 121 122AcpiExec: Improved the Control-C handling and added a handler for 123segmentation faults (SIGSEGV). Supports both Windows and Unix-like 124environments. 125 126Reduced the verbosity of the generic unix makefiles. Previously, each 127compilation displayed the full set of compiler options. This has been 128eliminated as the options are easily inspected within the makefiles. Each 129compilation now results in a single line of output. 130 131---------------------------------------- 13203 March 2017. Summary of changes for version 20170303: 133 134 1350) ACPICA licensing: 136 137The licensing information at the start of each source code module has 138been updated. In addition to the Intel license, the dual GPLv2/BSD 139license has been added for completeness. Now, a single version of the 140source code should be suitable for all ACPICA customers. This is the 141major change for this release since it affects all source code modules. 142 143 1441) ACPICA kernel-resident subsystem: 145 146Fixed two issues with the common asltypes.h header that could cause 147problems in some environments: (Kim Jung-uk) 148 Removed typedef for YY_BUFFER_STATE ? 149 Fixes an error with earlier versions of Flex. 150 Removed use of FILE typedef (which is only defined in stdio.h) 151 152 1532) iASL Compiler/Disassembler and Tools: 154 155Disassembler: fixed a regression introduced in 20170224. A fix for a 156memory leak related to resource descriptor tags (names) could fault when 157the disassembler was generated with 64-bit compilers. 158 159The ASLTS test suite has been updated to implement a new testing 160architecture. During generation of the suite from ASL source, both the 161ASL and ASL+ compilers are now validated, as well as the disassembler 162itself (Erik Schmauss). The architecture executes as follows: 163 164 For every ASL source module: 165 Compile (legacy ASL compilation) 166 Disassemble the resulting AML to ASL+ source code 167 Compile the new ASL+ module 168 Perform a binary compare on the legacy AML and the new ASL+ AML 169 The ASLTS suite then executes normally using the AML binaries. 170 171---------------------------------------- 17224 February 2017. Summary of changes for version 20170224: 173 174 1751) ACPICA kernel-resident subsystem: 176 177Interpreter: Fixed two issues with the control method return value auto- 178repair feature, where an attempt to double-delete an internal object 179could result in an ACPICA warning (for _CID repair and others). No fault 180occurs, however, because the attempted deletion (actually a release to an 181internal cache) is detected and ignored via object poisoning. 182 183Debugger: Fixed an AML interpreter mutex issue during the single stepping 184of control methods. If certain debugger commands are executed during 185stepping, a mutex aquire/release error could occur. Lv Zheng. 186 187Fixed some issues generating ACPICA with the Intel C compiler by 188restoring the original behavior and compiler-specific include file in 189acenv.h. Lv Zheng. 190 191Example Code and Data Size: These are the sizes for the OS-independent 192acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 193debug version of the code includes the debug output trace mechanism and 194has a much larger code and data size. 195 196 Current Release: 197 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total 198 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total 199 Previous Release: 200 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 201 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 202 203 2042) iASL Compiler/Disassembler and Tools: 205 206iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion 207tool has been designed, implemented, and included in this release. The 208key feature of this utility is that the original comments within the 209input ASL file are preserved during the conversion process, and included 210within the converted ASL+ file -- thus creating a transparent conversion 211of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss. 212 213 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with 214converted code 215 216iASL/Disassembler: Improved the detection and correct disassembly of 217Switch/Case operators. This feature detects sequences of if/elseif/else 218operators that originated from ASL Switch/Case/Default operators and 219emits the original operators. David Box. 220 221iASL: Improved the IORT ACPI table support in the following areas. Lv 222Zheng: 223 Clear MappingOffset if the MappingCount is zero. 224 Fix the disassembly of the SMMU GSU interrupt offset. 225 Update the template file for the IORT table. 226 227Disassembler: Enhanced the detection and disassembly of resource 228template/descriptor within a Buffer object. An EndTag descriptor is now 229required to have a zero second byte, since all known ASL compilers emit 230this. This helps eliminate incorrect decisions when a buffer is 231disassembled (false positives on resource templates). 232 233---------------------------------------- 23419 January 2017. Summary of changes for version 20170119: 235 236 2371) General ACPICA software: 238 239Entire source code base: Added the 2017 copyright to all source code 240legal/licensing module headers and utility/tool signons. This includes 241the standard Linux dual-license header. This affects virtually every file 242in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and 243the ACPICA test suite. 244 245 2462) iASL Compiler/Disassembler and Tools: 247 248iASL: Removed/fixed an inadvertent remark when a method argument 249containing a reference is used as a target operand within the method (and 250never used as a simple argument), as in the example below. Jeffrey Hugo. 251 252 dsdt.asl 1507: Store(0x1, Arg0) 253 Remark 2146 - ^ Method Argument is never used (Arg0) 254 255All tools: Removed the bit width of the compiler that generated the tool 256from the common signon for all user space tools. This proved to be 257confusing and unnecessary. This includes similar removal of HARDWARE_NAME 258from the generic makefiles (Thomas Petazzoni). Example below. 259 260 Old: 261 ASL+ Optimizing Compiler version 20170119-32 262 ASL+ Optimizing Compiler version 20170119-64 263 264 New: 265 ASL+ Optimizing Compiler version 20170119 266 267---------------------------------------- 26822 December 2016. Summary of changes for version 20161222: 269 270 2711) ACPICA kernel-resident subsystem: 272 273AML Debugger: Implemented a new mechanism to simplify and enhance 274debugger integration into all environments, including kernel debuggers 275and user-space utilities, as well as remote debug services. This 276mechanism essentially consists of new OSL interfaces to support debugger 277initialization/termination, as well as wait/notify interfaces to perform 278the debugger handshake with the host. Lv Zheng. 279 280 New OSL interfaces: 281 AcpiOsInitializeDebugger (void) 282 AcpiOsTerminateDebugger (void) 283 AcpiOsWaitCommandReady (void) 284 AcpiOsNotifyCommandComplete (void) 285 286 New OS services layer: 287 osgendbg.c -- Example implementation, and used for AcpiExec 288 289Update for Generic Address Space (GAS) support: Although the AccessWidth 290and/or BitOffset fields of the GAS are not often used, this change now 291fully supports these fields. This affects the internal support for FADT 292registers, registers in other ACPI data tables, and the AcpiRead and 293AcpiWrite public interfaces. Lv Zheng. 294 295Sleep support: In order to simplify integration of ACPI sleep for the 296various host operating systems, a new OSL interface has been introduced. 297AcpiOsEnterSleep allows the host to perform any required operations 298before the final write to the sleep control register(s) is performed by 299ACPICA. Lv Zheng. 300 301 New OSL interface: 302 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue) 303 304 Called from these internal interfaces: 305 AcpiHwLegacySleep 306 AcpiHwExtendedSleep 307 308EFI support: Added a very small EFI/ACPICA example application. Provides 309a simple demo for EFI integration, as well as assisting with resolution 310of issues related to customer ACPICA/EFI integration. Lv Zheng. See: 311 312 source/tools/efihello/efihello.c 313 314Local C library: Implemented several new functions to enhance ACPICA 315portability, for environments where these clib functions are not 316available (such as EFI). Lv Zheng: 317 putchar 318 getchar 319 strpbrk 320 strtok 321 memmove 322 323Fixed a regression where occasionally a valid resource descriptor was 324incorrectly detected as invalid at runtime, and a 325AE_AML_NO_RESOURCE_END_TAG was returned. 326 327Fixed a problem with the recently implemented support that enables 328control method invocations as Target operands to many ASL operators. 329Warnings of this form: "Needed type [Reference], found [Processor]" were 330seen at runtime for some method invocations. 331 332Example Code and Data Size: These are the sizes for the OS-independent 333acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 334debug version of the code includes the debug output trace mechanism and 335has a much larger code and data size. 336 337 Current Release: 338 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total 339 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total 340 Previous Release: 341 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 342 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 343 344 3452) iASL Compiler/Disassembler and Tools: 346 347Disassembler: Enhanced output by adding the capability to detect and 348disassemble ASL Switch/Case statements back to the original ASL source 349code instead of if/else blocks. David Box. 350 351AcpiHelp: Split a large file into separate files based upon 352functionality/purpose. New files are: 353 ahaml.c 354 ahasl.c 355 356---------------------------------------- 35717 November 2016. Summary of changes for version 20161117: 358 359 3601) ACPICA kernel-resident subsystem: 361 362Table Manager: Fixed a regression introduced in 20160729, "FADT support 363cleanup". This was an attempt to remove all references in the source to 364the FADT version 2, which never was a legal version number. It was 365skipped because it was an early version of 64-bit support that was 366eventually abandoned for the current 64-bit support. 367 368Interpreter: Fixed a problem where runtime implicit conversion was 369incorrectly disabled for the ASL operators below. This brings the 370behavior into compliance with the ACPI specification: 371 FromBCD 372 ToBCD 373 ToDecimalString 374 ToHexString 375 ToInteger 376 ToBuffer 377 378Table Manager: Added a new public interface, AcpiPutTable, used to 379release and free an ACPI table returned by AcpiGetTable and related 380interfaces. Lv Zheng. 381 382Example Code and Data Size: These are the sizes for the OS-independent 383acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 384debug version of the code includes the debug output trace mechanism and 385has a much larger code and data size. 386 387 Current Release: 388 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total 389 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total 390 Previous Release: 391 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 392 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 393 394 3952) iASL Compiler/Disassembler and Tools: 396 397Disassembler: Fixed a regression for disassembly of Resource Template. 398Detection of templates in the AML stream missed some types of templates. 399 400iASL: Fixed a problem where an Access Size error was returned for the PCC 401address space when the AccessSize of the GAS register is greater than a 402DWORD. Hoan Tran. 403 404iASL: Implemented several grammar changes for the operators below. These 405changes are slated for the next version of the ACPI specification: 406 RefOf - Disallow method invocation as an operand 407 CondRefOf - Disallow method invocation as an operand 408 DerefOf - Disallow operands that use the result from operators 409that 410 do not return a reference (Changed TermArg to 411SuperName). 412 413iASL: Control method invocations are now allowed for Target operands, as 414per the ACPI specification. Removed error for using a control method 415invocation as a Target operand. 416 417Disassembler: Improved detection of Resource Templates, Unicode, and 418Strings within Buffer objects. These subtypes do not contain a specific 419opcode to indicate the originating ASL code, and they must be detected by 420other means within the disassembler. 421 422iASL: Implemented an optimization improvement for 32-bit ACPI tables 423(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode 424only after 64-bit to 32-bit truncation. A truncation warning message is 425still emitted, however. 426 427AcpiXtract: Implemented handling for both types of line terminators (LF 428or CR/LF) so that it can accept AcpiDump output files from any system. 429Peter Wu. 430 431AcpiBin: Added two new options for comparing AML files: 432 -a: compare and display ALL mismatches 433 -o: start compare at this offset into the second file 434 435---------------------------------------- 43630 September 2016. Summary of changes for version 20160930: 437 438 4391) ACPICA kernel-resident subsystem: 440 441Fixed a regression in the internal AcpiTbFindTable function where a non 442AE_OK exception could inadvertently be returned even if the function did 443not fail. This problem affects the following operators: 444 DataTableRegion 445 LoadTable 446 447Fixed a regression in the LoadTable operator where a load to any 448namespace location other than the root no longer worked properly. 449 450Increased the maximum loop count value that will result in the 451AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to 452prevent infinite loops within the AML interpreter and thus the host OS 453kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to 4541,048,575). 455 456Moved the AcpiGbl_MaxLoopIterations configuration variable to the public 457acpixf.h file. This allows hosts to easily configure the maximum loop 458count at runtime. 459 460Removed an illegal character in the strtoul64.c file. This character 461caused errors with some C compilers. 462 463Example Code and Data Size: These are the sizes for the OS-independent 464acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 465debug version of the code includes the debug output trace mechanism and 466has a much larger code and data size. 467 468 Current Release: 469 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total 470 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total 471 Previous Release: 472 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total 473 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 474 475 4762) iASL Compiler/Disassembler and Tools: 477 478Disassembler: Fixed a problem with the conversion of Else{If{ blocks into 479the simpler ASL ElseIf keyword. During the conversion, a trailing If 480block could be lost and missing from the disassembled output. 481 482iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+, 483the missing rule caused a parse error when using the Index operator as an 484operand to ObjectType. This construct now compiles properly. Example: 485 ObjectType(PKG1[4]). 486 487iASL: Correctly handle unresolved symbols in the hardware map file (-lm 488option). Previously, unresolved symbols could cause a protection fault. 489Such symbols are now marked as unresolved in the map file. 490 491iASL: Implemented support to allow control method invocations as an 492operand to the ASL DeRefOf operator. Example: 493 DeRefOf(MTH1(Local0)) 494 495Disassembler: Improved support for the ToPLD ASL macro. Detection of a 496possible _PLD buffer now includes examination of both the normal buffer 497length (16 or 20) as well as the surrounding AML package length. 498 499Disassembler: Fixed a problem with the decoding of complex expressions 500within the Divide operator for ASL+. For the case where both the quotient 501and remainder targets are specified, the entire statement cannot be 502disassembled. Previously, the output incorrectly contained a mix of ASL- 503and ASL+ operators. This mixed statement causes a syntax error when 504compiled. Example: 505 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly 506disassembled to: 507 Divide (INT1 + 6, 128, RSLT, QUOT) 508 509iASL/Tools: Added support to process AML and non-AML ACPI tables 510consistently. For the disassembler and AcpiExec, allow all types of ACPI 511tables (AML and data tables). For the iASL -e option, allow only AML 512tables (DSDT/SSDT). 513 514---------------------------------------- 51531 August 2016. Summary of changes for version 20160831: 516 517 5181) ACPICA kernel-resident subsystem: 519 520Improve support for the so-called "module-level code", which is defined 521to be math, logical and control AML opcodes that appear outside of any 522control method. This change improves the support by adding more opcodes 523that can be executed in the manner. Some other issues have been solved, 524and the ASL grammar changes to support such code under all scope 525operators (Device, etc.) are complete. Lv Zheng. 526 527UEFI support: these OSL functions have been implemented. This is an 528additional step toward supporting the AcpiExec utility natively (with 529full hardware access) under UEFI. Marcelo Ferreira. 530 AcpiOsReadPciConfiguration 531 AcpiOsWritePciConfiguration 532 533Fixed a possible mutex error during control method auto-serialization. Lv 534Zheng. 535 536Updated support for the Generic Address Structure by fully implementing 537all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv 538Zheng. 539 540Updated the return value for the internal _OSI method. Instead of 5410xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF 542for 64-bit ACPI tables. This fixes an incompatibility with other ACPI 543implementations, and will be reflected and clarified in the next version 544of the ACPI specification. 545 546Implemented two new table events that can be passed to an ACPICA table 547handler. These events are used to indicate a table installation or 548uninstallation. These events are used in addition to existed table load 549and unload events. Lv Zheng. 550 551Implemented a cleanup for all internal string-to-integer conversions. 552Consolidate multiple versions of this functionality and limit possible 553bases to either 10 or 16 to simplify the code. Adds a new file, 554utstrtoul64. 555 556Cleanup the inclusion order of the various compiler-specific headers. 557This simplifies build configuration management. The compiler-specific 558headers are now split out from the host-specific headers. Lv Zheng. 559 560Example Code and Data Size: These are the sizes for the OS-independent 561acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 562debug version of the code includes the debug output trace mechanism and 563has a much larger code and data size. 564 565 Current Release: 566 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total 567 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total 568 569 5702) iASL Compiler/Disassembler and Tools: 571 572iASL/AcpiExec: Added a command line option to display the build date/time 573of the tool (-vd). This can be useful to verify that the correct version 574of the tools are being used. 575 576AML Debugger: Implemented a new subcommand ("execute predef") to execute 577all predefined control methods and names within the current namespace. 578This can be useful for debugging problems with ACPI tables and the ACPI 579namespace. 580 581---------------------------------------- 58229 July 2016. Summary of changes for version 20160729: 583 584 5851) ACPICA kernel-resident subsystem: 586 587Implemented basic UEFI support for the various ACPICA tools. This 588includes: 5891) An OSL to implement the various AcpiOs* interfaces on UEFI. 5902) Support to obtain the ACPI tables on UEFI. 5913) Local implementation of required C library functions not available on 592UEFI. 5934) A front-end (main) function for the tools for UEFI-related 594initialization. 595 596The initial deployment of this support is the AcpiDump utility executing 597as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit"). 598Current environments supported are Linux/Unix. MSVC generation is not 599supported at this time. See the generate/efi/README file for build 600instructions. Lv Zheng. 601 602Future plans include porting the AcpiExec utility to execute natively on 603the platform with I/O and memory access. This will allow viewing/dump of 604the platform namespace and native execution of ACPI control methods that 605access the actual hardware. To fully implement this support, the OSL 606functions below must be implemented with UEFI interfaces. Any community 607help in the implementation of these functions would be appreciated: 608 AcpiOsReadPort 609 AcpiOsWritePort 610 AcpiOsReadMemory 611 AcpiOsWriteMemory 612 AcpiOsReadPciConfiguration 613 AcpiOsWritePciConfiguration 614 615Restructured and standardized the C library configuration for ACPICA, 616resulting in the various configuration options below. This includes a 617global restructuring of the compiler-dependent and platform-dependent 618include files. These changes may affect the existing platform-dependent 619configuration files on some hosts. Lv Zheng. 620 621The current C library configuration options appear below. For any issues, 622it may be helpful to examine the existing compiler-dependent and 623platform-dependent files as examples. Lv Zheng. 624 6251) Linux kernel: 626 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 627library. 628 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 6292) Unix/Windows/BSD applications: 630 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C 631library. 632 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library. 6333) UEFI applications: 634 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C 635library. 636 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library. 6374) UEFI applications (EDK2/StdLib): 638 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library. 639 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library. 640 641 642AML interpreter: "module-level code" support. Allows for execution of so- 643called "executable" AML code (math/logical operations, etc.) outside of 644control methods not just at the module level (top level) but also within 645any scope declared outside of a control method - Scope{}, Device{}, 646Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng. 647 648Simplified the configuration of the "maximum AML loops" global option by 649adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be 650modified at runtime. 651 652 653Example Code and Data Size: These are the sizes for the OS-independent 654acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 655debug version of the code includes the debug output trace mechanism and 656has a much larger code and data size. 657 658 Current Release: 659 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total 660 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total 661 662 6632) iASL Compiler/Disassembler and Tools: 664 665iASL: Add full support for the RASF ACPI table (RAS Features Table). 666Includes disassembler, data table compiler, and header support. 667 668iASL Expand "module-level code" support. Allows for 669compilation/disassembly of so-called "executable" AML code (math/logical 670operations, etc.) outside of control methods not just at the module level 671(top level) but also within any scope declared outside of a control 672method - Scope{}, Device{}, Processor{}, PowerResource{}, and 673ThermalZone{}. 674 675AcpiDump: Added support for dumping all SSDTs on newer versions of 676Windows. These tables are now easily available -- SSDTs are not available 677through the registry on older versions. 678 679---------------------------------------- 68027 May 2016. Summary of changes for version 20160527: 681 682 6831) ACPICA kernel-resident subsystem: 684 685Temporarily reverted the new arbitrary bit length/alignment support in 686AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been 687a number of regressions with the new code that need to be fully resolved 688and tested before this support can be finally integrated into ACPICA. 689Apologies for any inconveniences these issues may have caused. 690 691The ACPI message macros are not configurable (ACPI_MSG_ERROR, 692ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR, 693and ACPI_MSG_BIOS_WARNING). Lv Zheng. 694 695Fixed a couple of GCC warnings associated with the use of the -Wcast-qual 696option. Adds a new return macro, return_STR. Junk-uk Kim. 697 698Example Code and Data Size: These are the sizes for the OS-independent 699acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 700debug version of the code includes the debug output trace mechanism and 701has a much larger code and data size. 702 703 Current Release: 704 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total 705 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 706 Previous Release: 707 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 708 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total 709 710---------------------------------------- 71122 April 2016. Summary of changes for version 20160422: 712 7131) ACPICA kernel-resident subsystem: 714 715Fixed a regression in the GAS (generic address structure) arbitrary bit 716support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior 717and incorrect return values. Lv Zheng. ACPICA BZ 1270. 718 719ACPI 6.0: Added support for new/renamed resource macros. One new argument 720was added to each of these macros, and the original name has been 721deprecated. The AML disassembler will always disassemble to the new 722names. Support for the new macros was added to iASL, disassembler, 723resource manager, and the acpihelp utility. ACPICA BZ 1274. 724 725 I2cSerialBus -> I2cSerialBusV2 726 SpiSerialBus -> SpiSerialBusV2 727 UartSerialBus -> UartSerialBusV2 728 729ACPI 6.0: Added support for a new integer field that was appended to the 730package object returned by the _BIX method. This adds iASL compile-time 731and AML runtime error checking. ACPICA BZ 1273. 732 733ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm 734Subspace Type2" (Headers, Disassembler, and data table compiler). 735 736Example Code and Data Size: These are the sizes for the OS-independent 737acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 738debug version of the code includes the debug output trace mechanism and 739has a much larger code and data size. 740 741 Current Release: 742 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total 743 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total 744 Previous Release: 745 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 746 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 747 748 7492) iASL Compiler/Disassembler and Tools: 750 751iASL: Implemented an ASL grammar extension to allow/enable executable 752"module-level code" to be created and executed under the various 753operators that create new scopes. This type of AML code is already 754supported in all known AML interpreters, and the grammar change will 755appear in the next version of the ACPI specification. Simplifies the 756conditional runtime creation of named objects under these object types: 757 758 Device 759 PowerResource 760 Processor 761 Scope 762 ThermalZone 763 764iASL: Implemented a new ASL extension, a "For" loop macro to add greater 765ease-of-use to the ASL language. The syntax is similar to the 766corresponding C operator, and is implemented with the existing AML While 767opcode -- thus requiring no changes to existing AML interpreters. 768 769 For (Initialize, Predicate, Update) {TermList} 770 771Grammar: 772 ForTerm := 773 For ( 774 Initializer // Nothing | TermArg => ComputationalData 775 Predicate // Nothing | TermArg => ComputationalData 776 Update // Nothing | TermArg => ComputationalData 777 ) {TermList} 778 779 780iASL: The _HID/_ADR detection and validation has been enhanced to search 781under conditionals in order to allow these objects to be conditionally 782created at runtime. 783 784iASL: Fixed several issues with the constant folding feature. The 785improvement allows better detection and resolution of statements that can 786be folded at compile time. ACPICA BZ 1266. 787 788iASL/Disassembler: Fixed a couple issues with the Else{If{}...} 789conversion to the ASL ElseIf operator where incorrect ASL code could be 790generated. 791 792iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where 793sometimes an extra (and extraneous) set of parentheses were emitted for 794some combinations of operators. Although this did not cause any problems 795with recompilation of the disassembled code, it made the code more 796difficult to read. David Box. ACPICA BZ 1231. 797 798iASL: Changed to ignore the unreferenced detection for predefined names 799of resource descriptor elements, when the resource descriptor is 800created/defined within a control method. 801 802iASL: Disassembler: Fix a possible fault with externally declared Buffer 803objects. 804 805---------------------------------------- 80618 March 2016. Summary of changes for version 20160318: 807 8081) ACPICA kernel-resident subsystem: 809 810Added support for arbitrary bit lengths and bit offsets for registers 811defined by the Generic Address Structure. Previously, only aligned bit 812lengths of 8/16/32/64 were supported. This was sufficient for many years, 813but recently some machines have been seen that require arbitrary bit- 814level support. ACPICA BZ 1240. Lv Zheng. 815 816Fixed an issue where the \_SB._INI method sometimes must be evaluated 817before any _REG methods are evaluated. Lv Zheng. 818 819Implemented several changes related to ACPI table support 820(Headers/Disassembler/TableCompiler): 821NFIT: For ACPI 6.1, updated to add some additional new fields and 822constants. 823FADT: Updated a warning message and set compliance to ACPI 6.1 (Version 8246). 825DMAR: Added new constants per the 10/2014 DMAR spec. 826IORT: Added new subtable per the 10/2015 IORT spec. 827HEST: For ACPI 6.1, added new constants and new subtable. 828DBG2: Added new constants per the 12/2015 DBG2 spec. 829FPDT: Fixed several incorrect fields, add the FPDT boot record structure. 830ACPICA BZ 1249. 831ERST/EINJ: Updated disassembler with new "Execute Timings" actions. 832 833Updated header support for the DMAR table to match the current version of 834the related spec. 835 836Added extensions to the ASL Concatenate operator to allow any ACPI object 837to be passed as an operand. Any object other than Integer/String/Buffer 838simply returns a string containing the object type. This extends the 839usefulness of the Printf macros. Previously, Concatenate would abort the 840control method if a non-data object was encountered. 841 842ACPICA source code: Deployed the C "const" keyword across the source code 843where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD). 844 845Example Code and Data Size: These are the sizes for the OS-independent 846acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 847debug version of the code includes the debug output trace mechanism and 848has a much larger code and data size. 849 850 Current Release: 851 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total 852 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total 853 Previous Release: 854 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 855 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 856 857 8582) iASL Compiler/Disassembler and Tools: 859 860iASL/Disassembler: Improved the heuristic used to determine the number of 861arguments for an externally defined control method (a method in another 862table). Although this is an improvement, there is no deterministic way to 863"guess" the number of method arguments. Only the ACPI 6.0 External opcode 864will completely solve this problem as it is deployed (automatically) in 865newer BIOS code. 866 867iASL/Disassembler: Fixed an ordering issue for emitted External() ASL 868statements that could cause errors when the disassembled file is 869compiled. ACPICA BZ 1243. David Box. 870 871iASL: Fixed a regression caused by the merger of the two versions of the 872local strtoul64. Because of a dependency on a global variable, strtoul64 873could return an error for integers greater than a 32-bit value. ACPICA BZ 8741260. 875 876iASL: Fixed a regression where a fault could occur for an ASL Return 877statement if it invokes a control method that is not resolved. ACPICA BZ 8781264. 879 880AcpiXtract: Improved input file validation: detection of binary files and 881non-acpidump text files. 882 883---------------------------------------- 88412 February 2016. Summary of changes for version 20160212: 885 8861) ACPICA kernel-resident subsystem: 887 888Implemented full support for the ACPI 6.1 specification (released in 889January). This version of the specification is available at: 890http://www.uefi.org/specifications 891 892Only a relatively small number of changes were required in ACPICA to 893support ACPI 6.1, in these areas: 894- New predefined names 895- New _HID values 896- A new subtable for HEST 897- A few other header changes for new values 898 899Ensure \_SB_._INI is executed before any _REG methods are executed. There 900appears to be existing BIOS code that relies on this behavior. Lv Zheng. 901 902Reverted a change made in version 20151218 which enabled method 903invocations to be targets of various ASL operators (SuperName and Target 904grammar elements). While the new behavior is supported by the ACPI 905specification, other AML interpreters do not support this behavior and 906never will. The ACPI specification will be updated for ACPI 6.2 to remove 907this support. Therefore, the change was reverted to the original ACPICA 908behavior. 909 910ACPICA now supports the GCC 6 compiler. 911 912Current Release: (Note: build changes increased sizes) 913 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total 914 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total 915Previous Release: 916 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 917 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total 918 919 9202) iASL Compiler/Disassembler and Tools: 921 922Completed full support for the ACPI 6.0 External() AML opcode. The 923compiler emits an external AML opcode for each ASL External statement. 924This opcode is used by the disassembler to assist with the disassembly of 925external control methods by specifying the required number of arguments 926for the method. AML interpreters do not use this opcode. To ensure that 927interpreters do not even see the opcode, a block of one or more external 928opcodes is surrounded by an "If(0)" construct. As this feature becomes 929commonly deployed in BIOS code, the ability of disassemblers to correctly 930disassemble AML code will be greatly improved. David Box. 931 932iASL: Implemented support for an optional cross-reference output file. 933The -lx option will create a the cross-reference file with the suffix 934"xrf". Three different types of cross-reference are created in this file: 935- List of object references made from within each control method 936- Invocation (caller) list for each user-defined control method 937- List of references to each non-method object in the namespace 938 939iASL: Method invocations as ASL Target operands are now disallowed and 940flagged as errors in preparation for ACPI 6.2 (see the description of the 941problem above). 942 943---------------------------------------- 9448 January 2016. Summary of changes for version 20160108: 945 9461) ACPICA kernel-resident subsystem: 947 948Updated all ACPICA copyrights and signons to 2016: Added the 2016 949copyright to all source code module headers and utility/tool signons. 950This includes the standard Linux dual-license header. This affects 951virtually every file in the ACPICA core subsystem, iASL compiler, all 952ACPICA utilities, and the ACPICA test suite. 953 954Fixed a regression introduced in version 20151218 concerning the 955execution of so-called module-level ASL/AML code. Namespace objects 956created under a module-level If() construct were not properly/fully 957entered into the namespace and could cause an interpreter fault when 958accessed. 959 960Example Code and Data Size: These are the sizes for the OS-independent 961acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 962debug version of the code includes the debug output trace mechanism and 963has a much larger code and data size. 964 965Current Release: 966 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total 967 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total 968 Previous Release: 969 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 970 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 971 972 9732) iASL Compiler/Disassembler and Tools: 974 975Fixed a problem with the compilation of the GpioIo and GpioInt resource 976descriptors. The _PIN field name was incorrectly defined to be an array 977of 32-bit values, but the _PIN values are in fact 16 bits each. This 978would cause incorrect bit width warnings when using Word (16-bit) fields 979to access the descriptors. 980 981 982---------------------------------------- 98318 December 2015. Summary of changes for version 20151218: 984 9851) ACPICA kernel-resident subsystem: 986 987Implemented per-AML-table execution of "module-level code" as individual 988ACPI tables are loaded into the namespace during ACPICA initialization. 989In other words, any module-level code within an AML table is executed 990immediately after the table is loaded, instead of batched and executed 991after all of the tables have been loaded. This provides compatibility 992with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng, 993David Box. 994 995To fully support the feature above, the default operation region handlers 996for the SystemMemory, SystemIO, and PCI_Config address spaces are now 997installed before any ACPI tables are loaded. This enables module-level 998code to access these address spaces during the table load and module- 999level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David 1000Box. 1001 1002Implemented several changes to the internal _REG support in conjunction 1003with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples 1004utilities for the changes above. Although these tools were changed, host 1005operating systems that simply use the default handlers for SystemMemory, 1006SystemIO, and PCI_Config spaces should not require any update. Lv Zheng. 1007 1008For example, in the code below, DEV1 is conditionally added to the 1009namespace by the DSDT via module-level code that accesses an operation 1010region. The SSDT references DEV1 via the Scope operator. DEV1 must be 1011created immediately after the DSDT is loaded in order for the SSDT to 1012successfully reference DEV1. Previously, this code would cause an 1013AE_NOT_EXIST exception during the load of the SSDT. Now, this code is 1014fully supported by ACPICA. 1015 1016 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1) 1017 { 1018 OperationRegion (OPR1, SystemMemory, 0x400, 32) 1019 Field (OPR1, AnyAcc, NoLock, Preserve) 1020 { 1021 FLD1, 1 1022 } 1023 If (FLD1) 1024 { 1025 Device (\DEV1) 1026 { 1027 } 1028 } 1029 } 1030 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1) 1031 { 1032 External (\DEV1, DeviceObj) 1033 Scope (\DEV1) 1034 { 1035 } 1036 } 1037 1038Fixed an AML interpreter problem where control method invocations were 1039not handled correctly when the invocation was itself a SuperName argument 1040to another ASL operator. In these cases, the method was not invoked. 1041ACPICA BZ 1002. Affects the following ASL operators that have a SuperName 1042argument: 1043 Store 1044 Acquire, Wait 1045 CondRefOf, RefOf 1046 Decrement, Increment 1047 Load, Unload 1048 Notify 1049 Signal, Release, Reset 1050 SizeOf 1051 1052Implemented automatic String-to-ObjectReference conversion support for 1053packages returned by predefined names (such as _DEP). A common BIOS error 1054is to add double quotes around an ObjectReference namepath, which turns 1055the reference into an unexpected string object. This support detects the 1056problem and corrects it before the package is returned to the caller that 1057invoked the method. Lv Zheng. 1058 1059Implemented extensions to the Concatenate operator. Concatenate now 1060accepts any type of object, it is not restricted to simply 1061Integer/String/Buffer. For objects other than these 3 basic data types, 1062the argument is treated as a string containing the name of the object 1063type. This expands the utility of Concatenate and the Printf/Fprintf 1064macros. ACPICA BZ 1222. 1065 1066Cleaned up the output of the ASL Debug object. The timer() value is now 1067optional and no longer emitted by default. Also, the basic data types of 1068Integer/String/Buffer are simply emitted as their values, without a data 1069type string -- since the data type is obvious from the output. ACPICA BZ 10701221. 1071 1072Example Code and Data Size: These are the sizes for the OS-independent 1073acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1074debug version of the code includes the debug output trace mechanism and 1075has a much larger code and data size. 1076 1077 Current Release: 1078 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total 1079 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total 1080 Previous Release: 1081 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 1082 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 1083 1084 10852) iASL Compiler/Disassembler and Tools: 1086 1087iASL: Fixed some issues with the ASL Include() operator. This operator 1088was incorrectly defined in the iASL parser rules, causing a new scope to 1089be opened for the code within the include file. This could lead to 1090several issues, including allowing ASL code that is technically illegal 1091and not supported by AML interpreters. Note, this does not affect the 1092related #include preprocessor operator. ACPICA BZ 1212. 1093 1094iASL/Disassembler: Implemented support for the ASL ElseIf operator. This 1095operator is essentially an ASL macro since there is no AML opcode 1096associated with it. The code emitted by the iASL compiler for ElseIf is 1097an Else opcode followed immediately by an If opcode. The disassembler 1098will now emit an ElseIf if it finds an Else immediately followed by an 1099If. This simplifies the decoded ASL, especially for deeply nested 1100If..Else and large Switch constructs. Thus, the disassembled code more 1101closely follows the original source ASL. ACPICA BZ 1211. Example: 1102 1103 Old disassembly: 1104 Else 1105 { 1106 If (Arg0 == 0x02) 1107 { 1108 Local0 = 0x05 1109 } 1110 } 1111 1112 New disassembly: 1113 ElseIf (Arg0 == 0x02) 1114 { 1115 Local0 = 0x05 1116 } 1117 1118AcpiExec: Added support for the new module level code behavior and the 1119early region installation. This required a small change to the 1120initialization, since AcpiExec must install its own operation region 1121handlers. 1122 1123AcpiExec: Added support to make the debug object timer optional. Default 1124is timer disabled. This cleans up the debug object output -- the timer 1125data is rarely used. 1126 1127AcpiExec: Multiple ACPI tables are now loaded in the order that they 1128appear on the command line. This can be important when there are 1129interdependencies/references between the tables. 1130 1131iASL/Templates. Add support to generate template files with multiple 1132SSDTs within a single output file. Also added ommand line support to 1133specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ 11341223, 1225. 1135 1136 1137---------------------------------------- 113824 November 2015. Summary of changes for version 20151124: 1139 11401) ACPICA kernel-resident subsystem: 1141 1142Fixed a possible regression for a previous update to FADT handling. The 1143FADT no longer has a fixed table ID, causing some issues with code that 1144was hardwired to a specific ID. Lv Zheng. 1145 1146Fixed a problem where the method auto-serialization could interfere with 1147the current SyncLevel. This change makes the auto-serialization support 1148transparent to the SyncLevel support and management. 1149 1150Removed support for the _SUB predefined name in AcpiGetObjectInfo. This 1151interface is intended for early access to the namespace during the 1152initial namespace device discovery walk. The _SUB method has been seen to 1153access operation regions in some cases, causing errors because the 1154operation regions are not fully initialized. 1155 1156AML Debugger: Fixed some issues with the terminate/quit/exit commands 1157that can cause faults. Lv Zheng. 1158 1159AML Debugger: Add thread ID support so that single-step mode only applies 1160to the AML Debugger thread. This prevents runtime errors within some 1161kernels. Lv Zheng. 1162 1163Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx 1164methods that are invoked by this interface are optional, removed warnings 1165emitted for the case where one or more of these methods do not exist. 1166ACPICA BZ 1208, original change by Prarit Bhargava. 1167 1168Made a major pass through the entire ACPICA source code base to 1169standardize formatting that has diverged a bit over time. There are no 1170functional changes, but this will of course cause quite a few code 1171differences from the previous ACPICA release. 1172 1173Example Code and Data Size: These are the sizes for the OS-independent 1174acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1175debug version of the code includes the debug output trace mechanism and 1176has a much larger code and data size. 1177 1178 Current Release: 1179 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total 1180 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total 1181 Previous Release: 1182 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1183 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 1184 1185 11862) iASL Compiler/Disassembler and Tools: 1187 1188iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple 1189definition blocks within a single ASL file and the resulting AML file. 1190Support for this type of file was also added to the various tools that 1191use binary AML files: acpiexec, acpixtract, and the AML disassembler. The 1192example code below shows two definition blocks within the same file: 1193 1194 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template", 11950x12345678) 1196 { 1197 } 1198 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01) 1199 { 1200 } 1201 1202iASL: Enhanced typechecking for the Name() operator. All expressions for 1203the value of the named object must be reduced/folded to a single constant 1204at compile time, as per the ACPI specification (the AML definition of 1205Name()). 1206 1207iASL: Fixed some code indentation issues for the -ic and -ia options (C 1208and assembly headers). Now all emitted code correctly begins in column 1. 1209 1210iASL: Added an error message for an attempt to open a Scope() on an 1211object defined in an SSDT. The DSDT is always loaded into the namespace 1212first, so any attempt to open a Scope on an SSDT object will fail at 1213runtime. 1214 1215 1216---------------------------------------- 121730 September 2015. Summary of changes for version 20150930: 1218 12191) ACPICA kernel-resident subsystem: 1220 1221Debugger: Implemented several changes and bug fixes to assist support for 1222the in-kernel version of the AML debugger. Lv Zheng. 1223- Fix the "predefined" command for in-kernel debugger. 1224- Do not enter debug command loop for the help and version commands. 1225- Disallow "execute" command during execution/single-step of a method. 1226 1227Interpreter: Updated runtime typechecking for all operators that have 1228target operands. The operand is resolved and validated that it is legal. 1229For example, the target cannot be a non-data object such as a Device, 1230Mutex, ThermalZone, etc., as per the ACPI specification. 1231 1232Debugger: Fixed the double-mutex user I/O handshake to work when local 1233deadlock detection is enabled. 1234 1235Debugger: limited display of method locals and arguments (LocalX and 1236ArgX) to only those that have actually been initialized. This prevents 1237lines of extraneous output. 1238 1239Updated the definition of the NFIT table to correct the bit polarity of 1240one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED 1241 1242Example Code and Data Size: These are the sizes for the OS-independent 1243acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1244debug version of the code includes the debug output trace mechanism and 1245has a much larger code and data size. 1246 1247 Current Release: 1248 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1249 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total 1250 Previous Release: 1251 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 1252 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 1253 1254 12552) iASL Compiler/Disassembler and Tools: 1256 1257iASL: Improved the compile-time typechecking for operands of many of the 1258ASL operators: 1259 1260-- Added an option to disable compiler operand/operator typechecking (- 1261ot). 1262 1263-- For the following operators, the TermArg operands are now validated 1264when possible to be Integer data objects: BankField, OperationRegion, 1265DataTableRegion, Buffer, and Package. 1266 1267-- Store (Source, Target): Both the source and target operands are 1268resolved and checked that the operands are both legal. For example, 1269neither operand can be a non-data object such as a Device, Mutex, 1270ThermalZone, etc. Note, as per the ACPI specification, the CopyObject 1271operator can be used to store an object to any type of target object. 1272 1273-- Store (Source, Target): If the source is a Package object, the target 1274must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target 1275is a Package, the source must also be a Package. 1276 1277-- Store (Source, Target): A warning is issued if the source and target 1278resolve to the identical named object. 1279 1280-- Store (Source, <method invocation>): An error is generated for the 1281target method invocation, as this construct is not supported by the AML 1282interpreter. 1283 1284-- For all ASL math and logic operators, the target operand must be a 1285data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This 1286includes the function return value also. 1287 1288-- External declarations are also included in the typechecking where 1289possible. External objects defined using the UnknownObj keyword cannot be 1290typechecked, however. 1291 1292iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index 1293operator: 1294- Legacy code: Index(PKG1, 3) 1295- New ASL+ code: PKG1[3] 1296This completes the ACPI 6.0 ASL+ support as it was the only operator not 1297supported. 1298 1299iASL: Fixed the file suffix for the preprocessor output file (.i). Two 1300spaces were inadvertently appended to the filename, causing file access 1301and deletion problems on some systems. 1302 1303ASL Test Suite (ASLTS): Updated the master makefile to generate all 1304possible compiler output files when building the test suite -- thus 1305exercising these features of the compiler. These files are automatically 1306deleted when the test suite exits. 1307 1308 1309---------------------------------------- 131018 August 2015. Summary of changes for version 20150818: 1311 13121) ACPICA kernel-resident subsystem: 1313 1314Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv 1315Zheng. ACPICA BZ 1186. 1316 1317Completed development to ensure that the ACPICA Disassembler and Debugger 1318are fully standalone components of ACPICA. Removed cross-component 1319dependences. Lv Zheng. 1320 1321The max-number-of-AML-loops is now runtime configurable (previously was 1322compile-time only). This is essentially a loop timeout to force-abort 1323infinite AML loops. ACPCIA BZ 1192. 1324 1325Debugger: Cleanup output to dump ACPI names and namepaths without any 1326trailing underscores. Lv Zheng. ACPICA BZ 1135. 1327 1328Removed unnecessary conditional compilations across the Debugger and 1329Disassembler components where entire modules could be left uncompiled. 1330 1331The aapits test is deprecated and has been removed from the ACPICA git 1332tree. The test has never been completed and has not been maintained, thus 1333becoming rather useless. ACPICA BZ 1015, 794. 1334 1335A batch of small changes to close bugzilla and other reports: 1336- Remove duplicate code for _PLD processing. ACPICA BZ 1176. 1337- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185. 1338- iASL: Support POSIX yacc again in makefile. Jung-uk Kim. 1339- ACPI table support: general cleanup and simplification. Lv Zheng, Bob 1340Moore. 1341- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable. 1342ACPICA BZ 1184. 1343- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML 1344operators. 1345- Debugger: Split debugger initialization/termination interfaces. Lv 1346Zheng. 1347- AcpiExec: Emit OemTableId for SSDTs during the load phase for table 1348identification. 1349- AcpiExec: Add debug message during _REG method phase during table 1350load/init. 1351- AcpiNames: Fix a regression where some output was missing and no longer 1352emitted. 1353- Debugger: General cleanup and simplification. Lv Zheng. 1354- Disassembler: Cleanup use of several global option variables. Lv Zheng. 1355 1356Example Code and Data Size: These are the sizes for the OS-independent 1357acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1358debug version of the code includes the debug output trace mechanism and 1359has a much larger code and data size. 1360 1361 Current Release: 1362 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total 1363 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total 1364 Previous Release: 1365 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 1366 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 1367 1368 13692) iASL Compiler/Disassembler and Tools: 1370 1371AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT 1372were not handled properly and caused load errors. Now, properly invoke 1373and use the ACPICA auto-reallocate mechanism for ACPI table data 1374structures. ACPICA BZ 1188 1375 1376AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA 1377BZ 1190. 1378 1379AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For 1380AcpiExec, this means that no control methods (like _REG/_INI/_STA) are 1381executed during initialization. ACPICA BZ 1187, 1189. 1382 1383iASL/Disassembler: Implemented a prototype "listing" mode that emits AML 1384that corresponds to each disassembled ASL statement, to simplify 1385debugging. ACPICA BZ 1191. 1386 1387Debugger: Add option to the "objects" command to display a summary of the 1388current namespace objects (Object type and count). This is displayed if 1389the command is entered with no arguments. 1390 1391AcpiNames: Add -x option to specify debug level, similar to AcpiExec. 1392 1393 1394---------------------------------------- 139517 July 2015. Summary of changes for version 20150717: 1396 13971) ACPICA kernel-resident subsystem: 1398 1399Improved the partitioning between the Debugger and Disassembler 1400components. This allows the Debugger to be used standalone within kernel 1401code without the Disassembler (which is used for single stepping also). 1402This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng. 1403 1404Debugger: Implemented a new command to trace the execution of control 1405methods (Trace). This is especially useful for the in-kernel version of 1406the debugger when file I/O may not be available for method trace output. 1407See the ACPICA reference for more information. Lv Zheng. 1408 1409Moved all C library prototypes (used for the local versions of these 1410functions when requested) to a new header, acclib.h 1411Cleaned up the use of non-ANSI C library functions. These functions are 1412implemented locally in ACPICA. Moved all such functions to a common 1413source file, utnonansi.c 1414 1415Debugger: Fixed a problem with the "!!" command (get last command 1416executed) where the debugger could enter an infinite loop and eventually 1417crash. 1418 1419Removed the use of local macros that were used for some of the standard C 1420library functions to automatically cast input parameters. This mostly 1421affected the is* functions where the input parameter is defined to be an 1422int. This required a few modifications to the main ACPICA source code to 1423provide casting for these functions and eliminate possible compiler 1424warnings for these parameters. 1425 1426Across the source code, added additional status/error checking to resolve 1427issues discovered by static source code analysis tools such as Coverity. 1428 1429Example Code and Data Size: These are the sizes for the OS-independent 1430acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1431debug version of the code includes the debug output trace mechanism and 1432has a much larger code and data size. 1433 1434 Current Release: 1435 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total 1436 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total 1437 Previous Release: 1438 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 1439 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 1440 1441 14422) iASL Compiler/Disassembler and Tools: 1443 1444iASL: Fixed a regression where the device map file feature no longer 1445worked properly when used in conjunction with the disassembler. It only 1446worked properly with the compiler itself. 1447 1448iASL: Implemented a new warning for method LocalX variables that are set 1449but never used (similar to a C compiler such as gcc). This also applies 1450to ArgX variables that are not defined by the parent method, and are 1451instead (legally) used as local variables. 1452 1453iASL/Preprocessor: Finished the pass-through of line numbers from the 1454preprocessor to the compiler. This ensures that compiler errors/warnings 1455have the correct original line numbers and filenames, regardless of any 1456#include files. 1457 1458iASL/Preprocessor: Fixed a couple of issues with comment handling and the 1459pass-through of comments to the preprocessor output file (which becomes 1460the compiler input file). Also fixed a problem with // comments that 1461appear after a math expression. 1462 1463iASL: Added support for the TCPA server table to the table compiler and 1464template generator. (The client table was already previously supported) 1465 1466iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to 1467identify the iASL compiler. 1468 1469Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined 1470multiple times. The new names are ACPI_SIGN_NEGATIVE and 1471ACPI_SIGN_POSITIVE. 1472 1473AcpiHelp: Update to expand help messages for the iASL preprocessor 1474directives. 1475 1476 1477---------------------------------------- 147819 June 2015. Summary of changes for version 20150619: 1479 1480Two regressions in version 20150616 have been addressed: 1481 1482Fixes some problems/issues with the C library macro removal (ACPI_STRLEN, 1483etc.) This update changes ACPICA to only use the standard headers for 1484functions, or the prototypes for the local versions of the C library 1485functions. Across the source code, this required some additional casts 1486for some Clib invocations for portability. Moved all local prototypes to 1487a new file, acclib.h 1488 1489Fixes several problems with recent changes to the handling of the FACS 1490table that could cause some systems not to boot. 1491 1492 1493---------------------------------------- 149416 June 2015. Summary of changes for version 20150616: 1495 1496 14971) ACPICA kernel-resident subsystem: 1498 1499Across the entire ACPICA source code base, the various macros for the C 1500library functions (such as ACPI_STRLEN, etc.) have been removed and 1501replaced by the standard C library names (strlen, etc.) The original 1502purpose for these macros is no longer applicable. This simplification 1503reduces the number of macros used in the ACPICA source code 1504significantly, improving readability and maintainability. 1505 1506Implemented support for a new ACPI table, the OSDT. This table, the 1507"override" SDT, can be loaded directly by the host OS at boot time. It 1508enables the replacement of existing namespace objects that were installed 1509via the DSDT and/or SSDTs. The primary purpose for this is to replace 1510buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated 1511for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob 1512Moore. 1513 1514Added support for systems with (improperly) two FACS tables -- a "32-bit" 1515table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit 1516X field). This change will support both automatically. There continues to 1517be systems found with this issue. This support requires a change to the 1518AcpiSetFirmwareWakingVector interface. Also, a public global variable has 1519been added to allow the host to select which FACS is desired 1520(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more 1521details Lv Zheng. 1522 1523Added a new feature to allow for systems that do not contain an FACS. 1524Although this is already supported on hardware-reduced platforms, the 1525feature has been extended for all platforms. The reasoning is that we do 1526not want to abort the entire ACPICA initialization just because the 1527system is seriously buggy and has no FACS. 1528 1529Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were 1530not correctly transcribed from the ACPI specification in ACPICA version 153120150515. 1532 1533Implemented support for the _CLS object in the AcpiGetObjectInfo external 1534interface. 1535 1536Updated the definitions of the TCPA and TPM2 ACPI tables to the more 1537recent TCG ACPI Specification, December 14, 2014. Table disassembler and 1538compiler also updated. Note: The TCPA "server" table is not supported by 1539the disassembler/table-compiler at this time. 1540 1541ACPI 6.0: Added definitions for the new GIC version field in the MADT. 1542 1543Example Code and Data Size: These are the sizes for the OS-independent 1544acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1545debug version of the code includes the debug output trace mechanism and 1546has a much larger code and data size. 1547 1548 Current Release: 1549 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total 1550 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total 1551 Previous Release: 1552 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 1553 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 1554 1555 15562) iASL Compiler/Disassembler and Tools: 1557 1558Disassembler: Fixed a problem with the new symbolic operator disassembler 1559where incorrect ASL code could be emitted in some cases for the "non- 1560commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and 1561ShiftRight. The actual problem cases seem to be rather unusual in common 1562ASL code, however. David Box. 1563 1564Modified the linux version of acpidump to obtain ACPI tables from not 1565just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv 1566Zheng. 1567 1568iASL: Fixed a problem where the user preprocessor output file (.i) 1569contained extra data that was not expected. The compiler was using this 1570file as a temporary file and passed through #line directives in order to 1571keep compiler error messages in sync with the input file and line number 1572across multiple include files. The (.i) is no longer a temporary file as 1573the compiler uses a new, different file for the original purpose. 1574 1575iASL: Fixed a problem where comments within the original ASL source code 1576file were not passed through to the preprocessor output file, nor any 1577listing files. 1578 1579iASL: Fixed some issues for the handling of the "#include" preprocessor 1580directive and the similar (but not the same) "Include" ASL operator. 1581 1582iASL: Add support for the new OSDT in both the disassembler and compiler. 1583 1584iASL: Fixed a problem with the constant folding support where a Buffer 1585object could be incorrectly generated (incorrectly formed) during a 1586conversion to a Store() operator. 1587 1588AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new 1589description text for the _REV predefined name. _REV now permanently 1590returns 2, as per the ACPI 6.0 specification. 1591 1592Debugger: Enhanced the output of the Debug ASL object for references 1593produced by the Index operator. For Buffers and strings, only output the 1594actual byte pointed to by the index. For packages, only print the single 1595package element decoded by the index. Previously, the entire 1596buffer/string/package was emitted. 1597 1598iASL/Table-compiler: Fixed a regression where the "generic" data types 1599were no longer recognized, causing errors. 1600 1601 1602---------------------------------------- 160315 May 2015. Summary of changes for version 20150515: 1604 1605This release implements most of ACPI 6.0 as described below. 1606 16071) ACPICA kernel-resident subsystem: 1608 1609Implemented runtime argument checking and return value checking for all 1610new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI, 1611_MTL, _PRR, _RDI, _RST, _TFP, _TSN. 1612 1613Example Code and Data Size: These are the sizes for the OS-independent 1614acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1615debug version of the code includes the debug output trace mechanism and 1616has a much larger code and data size. 1617 1618 Current Release: 1619 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total 1620 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total 1621 Previous Release: 1622 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 1623 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 1624 1625 16262) iASL Compiler/Disassembler and Tools: 1627 1628iASL compiler: Added compile-time support for all new ACPI 6.0 predefined 1629names (argument count validation and return value typechecking.) 1630 1631iASL disassembler and table compiler: implemented support for all new 1632ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV. 1633 1634iASL disassembler and table compiler: Added ACPI 6.0 changes to existing 1635tables: FADT, MADT. 1636 1637iASL preprocessor: Added a new directive to enable inclusion of binary 1638blobs into ASL code. The new directive is #includebuffer. It takes a 1639binary file as input and emits a named ascii buffer object into the ASL 1640code. 1641 1642AcpiHelp: Added support for all new ACPI 6.0 predefined names. 1643 1644AcpiHelp: Added a new option, -d, to display all iASL preprocessor 1645directives. 1646 1647AcpiHelp: Added a new option, -t, to display all known/supported ACPI 1648tables. 1649 1650 1651---------------------------------------- 165210 April 2015. Summary of changes for version 20150410: 1653 1654Reverted a change introduced in version 20150408 that caused 1655a regression in the disassembler where incorrect operator 1656symbols could be emitted. 1657 1658 1659---------------------------------------- 166008 April 2015. Summary of changes for version 20150408: 1661 1662 16631) ACPICA kernel-resident subsystem: 1664 1665Permanently set the return value for the _REV predefined name. It now 1666returns 2 (was 5). This matches other ACPI implementations. _REV will be 1667deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2 1668for ACPI 2.0 and later. It should never be used to differentiate or 1669identify operating systems. 1670 1671Added the "Windows 2015" string to the _OSI support. ACPICA will now 1672return TRUE to a query with this string. 1673 1674Fixed several issues with the local version of the printf function. 1675 1676Added the C99 compiler option (-std=c99) to the Unix makefiles. 1677 1678 Current Release: 1679 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total 1680 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total 1681 Previous Release: 1682 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1683 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1684 1685 16862) iASL Compiler/Disassembler and Tools: 1687 1688iASL: Implemented an enhancement to the constant folding feature to 1689transform the parse tree to a simple Store operation whenever possible: 1690 Add (2, 3, X) ==> is converted to: Store (5, X) 1691 X = 2 + 3 ==> is converted to: Store (5, X) 1692 1693Updated support for the SLIC table (Software Licensing Description Table) 1694in both the Data Table compiler and the disassembler. The SLIC table 1695support now conforms to "Microsoft Software Licensing Tables (SLIC and 1696MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data 1697following the ACPI header is now defined to be "Proprietary Data", and as 1698such, can only be entered or displayed as a hex data block. 1699 1700Implemented full support for the MSDM table as described in the document 1701above. Note: The format of MSDM is similar to SLIC. Any MSDM data 1702following the ACPI header is defined to be "Proprietary Data", and can 1703only be entered or displayed as a hex data block. 1704 1705Implemented the -Pn option for the iASL Table Compiler (was only 1706implemented for the ASL compiler). This option disables the iASL 1707preprocessor. 1708 1709Disassembler: For disassembly of Data Tables, added a comment field 1710around the Ascii equivalent data that is emitted as part of the "Raw 1711Table Data" block. This prevents the iASL Preprocessor from possible 1712confusion if/when the table is compiled. 1713 1714Disassembler: Added an option (-df) to force the disassembler to assume 1715that the table being disassembled contains valid AML. This feature is 1716useful for disassembling AML files that contain ACPI signatures other 1717than DSDT or SSDT (such as OEMx or other signatures). 1718 1719Changes for the EFI version of the tools: 17201) Fixed a build error/issue 17212) Fixed a cast warning 1722 1723iASL: Fixed a path issue with the __FILE__ operator by making the 1724directory prefix optional within the internal SplitInputFilename 1725function. 1726 1727Debugger: Removed some unused global variables. 1728 1729Tests: Updated the makefile for proper generation of the AAPITS suite. 1730 1731 1732---------------------------------------- 173304 February 2015. Summary of changes for version 20150204: 1734 1735ACPICA kernel-resident subsystem: 1736 1737Updated all ACPICA copyrights and signons to 2014. Added the 2014 1738copyright to all module headers and signons, including the standard Linux 1739header. This affects virtually every file in the ACPICA core subsystem, 1740iASL compiler, all ACPICA utilities, and the test suites. 1741 1742Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues. 1743A raw gpe handling mechanism was created to allow better handling of GPE 1744storms that aren't easily managed by the normal handler. The raw handler 1745allows disabling/renabling of the the GPE so that interrupt storms can be 1746avoided in cases where events cannot be timely serviced. In this 1747scenario, handlers should use the AcpiSetGpe() API to disable/enable the 1748GPE. This API will leave the reference counts undisturbed, thereby 1749preventing unintentional clearing of the GPE when the intent in only to 1750temporarily disable it. Raw handlers allow enabling and disabling of a 1751GPE by removing GPE register locking. As such, raw handlers much provide 1752their own locks while using GPE API's to protect access to GPE data 1753structures. 1754Lv Zheng 1755 1756Events: Always modify GPE registers under the GPE lock. 1757Applies GPE lock around AcpiFinishGpe() to protect access to GPE register 1758values. Reported as bug by joe.liu@apple.com. 1759 1760Unix makefiles: Separate option to disable optimizations and 1761_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the 1762NOOPT disable option and creates a separate flag (NOFORTIFY) for this 1763purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined 1764errors when building ACPICA. This allows disabling the option without 1765also having to disable optimazations. 1766David Box 1767 1768 Current Release: 1769 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total 1770 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total 1771 1772-- 1773-------------------------------------- 177407 November 2014. Summary of changes for version 20141107: 1775 1776This release is available at https://acpica.org/downloads 1777 1778This release introduces and implements language extensions to ASL that 1779provide support for symbolic ("C-style") operators and expressions. These 1780language extensions are known collectively as ASL+. 1781 1782 17831) iASL Compiler/Disassembler and Tools: 1784 1785Disassembler: Fixed a problem with disassembly of the UartSerialBus 1786macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E. 1787Box. 1788 1789Disassembler: Fixed the Unicode macro support to add escape sequences. 1790All non-printable ASCII values are emitted as escape sequences, as well 1791as the standard escapes for quote and backslash. Ensures that the 1792disassembled macro can be correctly recompiled. 1793 1794iASL: Added Printf/Fprintf macros for formatted output. These macros are 1795translated to existing AML Concatenate and Store operations. Printf 1796writes to the ASL Debug object. Fprintf allows the specification of an 1797ASL name as the target. Only a single format specifier is required, %o, 1798since the AML interpreter dynamically converts objects to the required 1799type. David E. Box. 1800 1801 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 1802 (Concatenate (Concatenate (Concatenate ("", Arg0), 1803 ": Unexpected value for "), Arg1), ", "), Arg2), 1804 " at line "), Arg3), Debug) 1805 1806 (new) Printf ("%o: Unexpected value for %o, %o at line %o", 1807 Arg0, Arg1, Arg2, Arg3) 1808 1809 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate 1810 ("", Arg1), ": "), Arg0), " Successful"), STR1) 1811 1812 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0) 1813 1814iASL: Added debug options (-bp, -bt) to dynamically prune levels of the 1815ASL parse tree before the AML code is generated. This allows blocks of 1816ASL code to be removed in order to help locate and identify problem 1817devices and/or code. David E. Box. 1818 1819AcpiExec: Added support (-fi) for an optional namespace object 1820initialization file. This file specifies initial values for namespace 1821objects as necessary for debugging and testing different ASL code paths 1822that may be taken as a result of BIOS options. 1823 1824 18252) Overview of symbolic operator support for ASL (ASL+) 1826------------------------------------------------------- 1827 1828As an extension to the ASL language, iASL implements support for symbolic 1829(C-style) operators for math and logical expressions. This can greatly 1830simplify ASL code as well as improve both readability and 1831maintainability. These language extensions can exist concurrently with 1832all legacy ASL code and expressions. 1833 1834The symbolic extensions are 100% compatible with existing AML 1835interpreters, since no new AML opcodes are created. To implement the 1836extensions, the iASL compiler transforms the symbolic expressions into 1837the legacy ASL/AML equivalents at compile time. 1838 1839Full symbolic expressions are supported, along with the standard C 1840precedence and associativity rules. 1841 1842Full disassembler support for the symbolic expressions is provided, and 1843creates an automatic migration path for existing ASL code to ASL+ code 1844via the disassembly process. By default, the disassembler now emits ASL+ 1845code with symbolic expressions. An option (-dl) is provided to force the 1846disassembler to emit legacy ASL code if desired. 1847 1848Below is the complete list of the currently supported symbolic operators 1849with examples. See the iASL User Guide for additional information. 1850 1851 1852ASL+ Syntax Legacy ASL Equivalent 1853----------- --------------------- 1854 1855 // Math operators 1856 1857Z = X + Y Add (X, Y, Z) 1858Z = X - Y Subtract (X, Y, Z) 1859Z = X * Y Multiply (X, Y, Z) 1860Z = X / Y Divide (X, Y, , Z) 1861Z = X % Y Mod (X, Y, Z) 1862Z = X << Y ShiftLeft (X, Y, Z) 1863Z = X >> Y ShiftRight (X, Y, Z) 1864Z = X & Y And (X, Y, Z) 1865Z = X | Y Or (X, Y, Z) 1866Z = X ^ Y Xor (X, Y, Z) 1867Z = ~X Not (X, Z) 1868X++ Increment (X) 1869X-- Decrement (X) 1870 1871 // Logical operators 1872 1873(X == Y) LEqual (X, Y) 1874(X != Y) LNotEqual (X, Y) 1875(X < Y) LLess (X, Y) 1876(X > Y) LGreater (X, Y) 1877(X <= Y) LLessEqual (X, Y) 1878(X >= Y) LGreaterEqual (X, Y) 1879(X && Y) LAnd (X, Y) 1880(X || Y) LOr (X, Y) 1881(!X) LNot (X) 1882 1883 // Assignment and compound assignment operations 1884 1885X = Y Store (Y, X) 1886X += Y Add (X, Y, X) 1887X -= Y Subtract (X, Y, X) 1888X *= Y Multiply (X, Y, X) 1889X /= Y Divide (X, Y, , X) 1890X %= Y Mod (X, Y, X) 1891X <<= Y ShiftLeft (X, Y, X) 1892X >>= Y ShiftRight (X, Y, X) 1893X &= Y And (X, Y, X) 1894X |= Y Or (X, Y, X) 1895X ^= Y Xor (X, Y, X) 1896 1897 18983) ASL+ Examples: 1899----------------- 1900 1901Legacy ASL: 1902 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual ( 1903 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530, 19040x03FB), 1905 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0)))) 1906 { 1907 And (MEMB, 0xFFFFFFF0, SRMB) 1908 Store (MEMB, Local2) 1909 Store (PDBM, Local1) 1910 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM) 1911 Store (SRMB, MEMB) 1912 Or (PDBM, 0x02, PDBM) 1913 } 1914 1915ASL+ version: 1916 If (((R510 & 0x03FB) == 0x02E0) || 1917 ((R520 & 0x03FB) == 0x02E0) || 1918 ((R530 & 0x03FB) == 0x02E0) || 1919 ((R540 & 0x03FB) == 0x02E0)) 1920 { 1921 SRMB = (MEMB & 0xFFFFFFF0) 1922 Local2 = MEMB 1923 Local1 = PDBM 1924 PDBM &= 0xFFFFFFFFFFFFFFF9 1925 MEMB = SRMB 1926 PDBM |= 0x02 1927 } 1928 1929Legacy ASL: 1930 Store (0x1234, Local1) 1931 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3) 1932 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3) 1933 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3) 1934 Store (Index (PKG1, 0x03), Local6) 1935 Store (Add (Local3, Local2), Debug) 1936 Add (Local1, 0x0F, Local2) 1937 Add (Local1, Multiply (Local2, Local3), Local2) 1938 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3) 1939 1940ASL+ version: 1941 Local1 = 0x1234 1942 Local3 = (((Local1 + TEST) + 0x20) * Local2) 1943 Local3 = (Local2 * ((Local1 + TEST) + 0x20)) 1944 Local3 = (Local1 + (TEST + (0x20 * Local2))) 1945 Local6 = Index (PKG1, 0x03) 1946 Debug = (Local3 + Local2) 1947 Local2 = (Local1 + 0x0F) 1948 Local2 = (Local1 + (Local2 * Local3)) 1949 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1)) 1950 1951 1952---------------------------------------- 195326 September 2014. Summary of changes for version 20140926: 1954 19551) ACPICA kernel-resident subsystem: 1956 1957Updated the GPIO operation region handler interface (GeneralPurposeIo). 1958In order to support GPIO Connection objects with multiple pins, along 1959with the related Field objects, the following changes to the interface 1960have been made: The Address is now defined to be the offset in bits of 1961the field unit from the previous invocation of a Connection. It can be 1962viewed as a "Pin Number Index" into the connection resource descriptor. 1963The BitWidth is the exact bit width of the field. It is usually one bit, 1964but not always. See the ACPICA reference guide (section 8.8.6.2.1) for 1965additional information and examples. 1966 1967GPE support: During ACPICA/GPE initialization, ensure that all GPEs with 1968corresponding _Lxx/_Exx methods are disabled (they may have been enabled 1969by the firmware), so that they cannot fire until they are enabled via 1970AcpiUpdateAllGpes. Rafael J. Wysocki. 1971 1972Added a new return flag for the Event/GPE status interfaces -- 1973AcpiGetEventStatus and AcpiGetGpeStatus. The new 1974ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or 1975GPE currently has a handler associated with it, and can thus actually 1976affect the system. Lv Zheng. 1977 1978Example Code and Data Size: These are the sizes for the OS-independent 1979acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 1980debug version of the code includes the debug output trace mechanism and 1981has a much larger code and data size. 1982 1983 Current Release: 1984 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total 1985 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total 1986 Previous Release: 1987 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 1988 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 1989 19902) iASL Compiler/Disassembler and Tools: 1991 1992iASL: Fixed a memory allocation/free regression introduced in 20140828 1993that could cause the compiler to crash. This was introduced inadvertently 1994during the effort to eliminate compiler memory leaks. ACPICA BZ 1111, 19951113. 1996 1997iASL: Removed two error messages that have been found to create false 1998positives, until they can be fixed and fully validated (ACPICA BZ 1112): 19991) Illegal forward reference within a method 20002) Illegal reference across two methods 2001 2002iASL: Implemented a new option (-lm) to create a hardware mapping file 2003that summarizes all GPIO, I2C, SPI, and UART connections. This option 2004works for both the compiler and disassembler. See the iASL compiler user 2005guide for additional information and examples (section 6.4.6). 2006 2007AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to 2008version 2. This corrects the AE_BAD_HEADER exception seen on systems with 2009a version 1 RSDP. Lv Zheng ACPICA BZ 1097. 2010 2011AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode 2012unless STDIN is actually a terminal. Assists with batch-mode processing. 2013ACPICA BZ 1114. 2014 2015Disassembler/AcpiHelp: Added another large group of recognized _HID 2016values. 2017 2018 2019---------------------------------------- 202028 August 2014. Summary of changes for version 20140828: 2021 20221) ACPICA kernel-resident subsystem: 2023 2024Fixed a problem related to the internal use of the Timer() operator where 2025a 64-bit divide could cause an attempted link to a double-precision math 2026library. This divide is not actually necessary, so the code was 2027restructured to eliminate it. Lv Zheng. 2028 2029ACPI 5.1: Added support for the runtime validation of the _DSD package 2030(similar to the iASL support). 2031 2032ACPI 5.1/Headers: Added support for the GICC affinity subtable to the 2033SRAT table. Hanjun Guo <hanjun.guo@linaro.org>. 2034 2035Example Code and Data Size: These are the sizes for the OS-independent 2036acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2037debug version of the code includes the debug output trace mechanism and 2038has a much larger code and data size. 2039 2040 Current Release: 2041 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total 2042 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total 2043 Previous Release: 2044 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1 2045 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 2046 20472) iASL Compiler/Disassembler and Tools: 2048 2049AcpiExec: Fixed a problem on unix systems where the original terminal 2050state was not always properly restored upon exit. Seen when using the -v 2051option. ACPICA BZ 1104. 2052 2053iASL: Fixed a problem with the validation of the ranges/length within the 2054Memory24 resource descriptor. There was a boundary condition when the 2055range was equal to the (length -1) caused by the fact that these values 2056are defined in 256-byte blocks, not bytes. ACPICA BZ 1098 2057 2058Disassembler: Fixed a problem with the GpioInt descriptor interrupt 2059polarity 2060flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword 2061is 2062now supported properly. 2063 2064ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported 2065in the disassembler, data table compiler, and table template generator. 2066 2067iASL: Added a requirement for Device() objects that one of either a _HID 2068or _ADR must exist within the scope of a Device, as per the ACPI 2069specification. Remove a similar requirement that was incorrectly in place 2070for the _DSD object. 2071 2072iASL: Added error detection for illegal named references within control 2073methods that would cause runtime failures. Now trapped as errors are: 1) 2074References to objects within a non-parent control method. 2) Forward 2075references (within a method) -- for control methods, AML interpreters use 2076a one-pass parse of control methods. ACPICA BZ 1008. 2077 2078iASL: Added error checking for dependencies related to the _PSx power 2079methods. ACPICA BZ 1029. 20801) For _PS0, one of these must exist within the same scope: _PS1, _PS2, 2081_PS3. 20822) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same 2083scope. 2084 2085iASL and table compiler: Cleanup miscellaneous memory leaks by fully 2086deploying the existing object and string caches and adding new caches for 2087the table compiler. 2088 2089iASL: Split the huge parser source file into multiple subfiles to improve 2090manageability. Generation now requires the M4 macro preprocessor, which 2091is part of the Bison distribution on both unix and windows platforms. 2092 2093AcpiSrc: Fixed and removed all extraneous warnings generated during 2094entire ACPICA source code scan and/or conversion. 2095 2096 2097---------------------------------------- 2098 209924 July 2014. Summary of changes for version 20140724: 2100 2101The ACPI 5.1 specification has been released and is available at: 2102http://uefi.org/specs/access 2103 2104 21050) ACPI 5.1 support in ACPICA: 2106 2107ACPI 5.1 is fully supported in ACPICA as of this release. 2108 2109New predefined names. Support includes iASL and runtime ACPICA 2110validation. 2111 _CCA (Cache Coherency Attribute). 2112 _DSD (Device-Specific Data). David Box. 2113 2114Modifications to existing ACPI tables. Support includes headers, iASL 2115Data Table compiler, disassembler, and the template generator. 2116 FADT - New fields and flags. Graeme Gregory. 2117 GTDT - One new subtable and new fields. Tomasz Nowicki. 2118 MADT - Two new subtables. Tomasz Nowicki. 2119 PCCT - One new subtable. 2120 2121Miscellaneous. 2122 New notification type for System Resource Affinity change events. 2123 2124 21251) ACPICA kernel-resident subsystem: 2126 2127Fixed a regression introduced in 20140627 where a fault can happen during 2128the deletion of Alias AML namespace objects. The problem affected both 2129the core ACPICA and the ACPICA tools including iASL and AcpiExec. 2130 2131Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a 2132simple mechanism to enable wake GPEs that have no associated handler or 2133control method. Rafael Wysocki. 2134 2135Updated the AcpiEnableGpe interface to disallow the enable if there is no 2136handler or control method associated with the particular GPE. This will 2137help avoid meaningless GPEs and even GPE floods. Rafael Wysocki. 2138 2139Updated GPE handling and dispatch by disabling the GPE before clearing 2140the status bit for edge-triggered GPEs. Lv Zheng. 2141 2142Added Timer() support to the AML Debug object. The current timer value is 2143now displayed with each invocation of (Store to) the debug object to 2144enable simple generation of execution times for AML code (method 2145execution for example.) ACPICA BZ 1093. 2146 2147Example Code and Data Size: These are the sizes for the OS-independent 2148acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2149debug version of the code includes the debug output trace mechanism and 2150has a much larger code and data size. 2151 2152 Current Release: 2153 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total 2154 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total 2155 Previous Release: 2156 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 2157 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 2158 2159 21602) iASL Compiler/Disassembler and Tools: 2161 2162Fixed an issue with the recently added local printf implementation, 2163concerning width/precision specifiers that could cause incorrect output. 2164Lv Zheng. ACPICA BZ 1094. 2165 2166Disassembler: Added support to detect buffers that contain UUIDs and 2167disassemble them to an invocation of the ToUUID operator. Also emit 2168commented descriptions of known ACPI-related UUIDs. 2169 2170AcpiHelp: Added support to display known ACPI-related UUIDs. New option, 2171-u. Adds three new files. 2172 2173iASL: Update table compiler and disassembler for DMAR table changes that 2174were introduced in September 2013. With assistance by David Woodhouse. 2175 2176---------------------------------------- 217727 June 2014. Summary of changes for version 20140627: 2178 21791) ACPICA kernel-resident subsystem: 2180 2181Formatted Output: Implemented local versions of standard formatted output 2182utilities such as printf, etc. Over time, it has been discovered that 2183there are in fact many portability issues with printf, and the addition 2184of this feature will fix/prevent these issues once and for all. Some 2185known issues are summarized below: 2186 21871) Output of 64-bit values is not portable. For example, UINT64 is %ull 2188for the Linux kernel and is %uI64 for some MSVC versions. 21892) Invoking printf consistently in a manner that is portable across both 219032-bit and 64-bit platforms is difficult at best in many situations. 21913) The output format for pointers varies from system to system (leading 2192zeros especially), and leads to inconsistent output from ACPICA across 2193platforms. 21944) Certain platform-specific printf formats may conflict with ACPICA use. 21955) If there is no local C library available, ACPICA now has local support 2196for printf. 2197 2198-- To address these printf issues in a complete manner, ACPICA now 2199directly implements a small subset of printf format specifiers, only 2200those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng. 2201 2202Implemented support for ACPICA generation within the EFI environment. 2203Initially, the AcpiDump utility is supported in the UEFI shell 2204environment. Lv Zheng. 2205 2206Added a new external interface, AcpiLogError, to improve ACPICA 2207portability. This allows the host to redirect error messages from the 2208ACPICA utilities. Lv Zheng. 2209 2210Added and deployed new OSL file I/O interfaces to improve ACPICA 2211portability: 2212 AcpiOsOpenFile 2213 AcpiOsCloseFile 2214 AcpiOsReadFile 2215 AcpiOsWriteFile 2216 AcpiOsGetFileOffset 2217 AcpiOsSetFileOffset 2218There are C library implementations of these functions in the new file 2219service_layers/oslibcfs.c -- however, the functions can be implemented by 2220the local host in any way necessary. Lv Zheng. 2221 2222Implemented a mechanism to disable/enable ACPI table checksum validation 2223at runtime. This can be useful when loading tables very early during OS 2224initialization when it may not be possible to map the entire table in 2225order to compute the checksum. Lv Zheng. 2226 2227Fixed a buffer allocation issue for the Generic Serial Bus support. 2228Originally, a fixed buffer length was used. This change allows for 2229variable-length buffers based upon the protocol indicated by the field 2230access attributes. Reported by Lan Tianyu. Lv Zheng. 2231 2232Fixed a problem where an object detached from a namespace node was not 2233properly terminated/cleared and could cause a circular list problem if 2234reattached. ACPICA BZ 1063. David Box. 2235 2236Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick. 2237 2238Fixed a possible memory leak in an error return path within the function 2239AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King. 2240 2241Example Code and Data Size: These are the sizes for the OS-independent 2242acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2243debug version of the code includes the debug output trace mechanism and 2244has a much larger code and data size. 2245 2246 Current Release: 2247 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total 2248 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total 2249 Previous Release: 2250 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 2251 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 2252 2253 22542) iASL Compiler/Disassembler and Tools: 2255 2256Disassembler: Add dump of ASCII equivalent text within a comment at the 2257end of each line of the output for the Buffer() ASL operator. 2258 2259AcpiDump: Miscellaneous changes: 2260 Fixed repetitive table dump in -n mode. 2261 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if 2262the ACPI 2.0 GUID fails. 2263 2264iASL: Fixed a problem where the compiler could fault if incorrectly given 2265an acpidump output file as input. ACPICA BZ 1088. David Box. 2266 2267AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if 2268they are invoked without any arguments. 2269 2270Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ 22711086. Colin Ian King. 2272 2273Disassembler: Cleaned up a block of code that extracts a parent Op 2274object. Added a comment that explains that the parent is guaranteed to be 2275valid in this case. ACPICA BZ 1069. 2276 2277 2278---------------------------------------- 227924 April 2014. Summary of changes for version 20140424: 2280 22811) ACPICA kernel-resident subsystem: 2282 2283Implemented support to skip/ignore NULL address entries in the RSDT/XSDT. 2284Some of these tables are known to contain a trailing NULL entry. Lv 2285Zheng. 2286 2287Removed an extraneous error message for the case where there are a large 2288number of system GPEs (> 124). This was the "32-bit FADT register is too 2289long to convert to GAS struct" message, which is irrelevant for GPEs 2290since the GPEx_BLK_LEN fields of the FADT are always used instead of the 2291(limited capacity) GAS bit length. Also, several changes to ensure proper 2292support for GPE numbers > 255, where some "GPE number" fields were 8-bits 2293internally. 2294 2295Implemented and deployed additional configuration support for the public 2296ACPICA external interfaces. Entire classes of interfaces can now be 2297easily modified or configured out, replaced by stubbed inline functions 2298by default. Lv Zheng. 2299 2300Moved all public ACPICA runtime configuration globals to the public 2301ACPICA external interface file for convenience. Also, removed some 2302obsolete/unused globals. See the file acpixf.h. Lv Zheng. 2303 2304Documentation: Added a new section to the ACPICA reference describing the 2305maximum number of GPEs that can be supported by the FADT-defined GPEs in 2306block zero and one. About 1200 total. See section 4.4.1 of the ACPICA 2307reference. 2308 2309Example Code and Data Size: These are the sizes for the OS-independent 2310acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2311debug version of the code includes the debug output trace mechanism and 2312has a much larger code and data size. 2313 2314 Current Release: 2315 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total 2316 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total 2317 Previous Release: 2318 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 2319 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 2320 2321 23222) iASL Compiler/Disassembler and Tools: 2323 2324iASL and disassembler: Add full support for the LPIT table (Low Power 2325Idle Table). Includes support in the disassembler, data table compiler, 2326and template generator. 2327 2328AcpiDump utility: 23291) Add option to force the use of the RSDT (over the XSDT). 23302) Improve validation of the RSDP signature (use 8 chars instead of 4). 2331 2332iASL: Add check for predefined packages that are too large. For 2333predefined names that contain subpackages, check if each subpackage is 2334too large. (Check for too small already exists.) 2335 2336Debugger: Updated the GPE command (which simulates a GPE by executing the 2337GPE code paths in ACPICA). The GPE device is now optional, and defaults 2338to the GPE 0/1 FADT-defined blocks. 2339 2340Unix application OSL: Update line-editing support. Add additional error 2341checking and take care not to reset terminal attributes on exit if they 2342were never set. This should help guarantee that the terminal is always 2343left in the previous state on program exit. 2344 2345 2346---------------------------------------- 234725 March 2014. Summary of changes for version 20140325: 2348 23491) ACPICA kernel-resident subsystem: 2350 2351Updated the auto-serialize feature for control methods. This feature 2352automatically serializes all methods that create named objects in order 2353to prevent runtime errors. The update adds support to ignore the 2354currently executing AML SyncLevel when invoking such a method, in order 2355to prevent disruption of any existing SyncLevel priorities that may exist 2356in the AML code. Although the use of SyncLevels is relatively rare, this 2357change fixes a regression where an AE_AML_MUTEX_ORDER exception can 2358appear on some machines starting with the 20140214 release. 2359 2360Added a new external interface to allow the host to install ACPI tables 2361very early, before the namespace is even created. AcpiInstallTable gives 2362the host additional flexibility for ACPI table management. Tables can be 2363installed directly by the host as if they had originally appeared in the 2364XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables 2365(anything except the DSDT and FACS). Adds a new file, tbdata.c, along 2366with additional internal restructuring and cleanup. See the ACPICA 2367Reference for interface details. Lv Zheng. 2368 2369Added validation of the checksum for all incoming dynamically loaded 2370tables (via external interfaces or via AML Load/LoadTable operators). Lv 2371Zheng. 2372 2373Updated the use of the AcpiOsWaitEventsComplete interface during Notify 2374and GPE handler removal. Restructured calls to eliminate possible race 2375conditions. Lv Zheng. 2376 2377Added a warning for the use/execution of the ASL/AML Unload (table) 2378operator. This will help detect and identify machines that use this 2379operator if and when it is ever used. This operator has never been seen 2380in the field and the usage model and possible side-effects of the drastic 2381runtime action of a full table removal are unknown. 2382 2383Reverted the use of #pragma push/pop which was introduced in the 20140214 2384release. It appears that push and pop are not implemented by enough 2385compilers to make the use of this feature feasible for ACPICA at this 2386time. However, these operators may be deployed in a future ACPICA 2387release. 2388 2389Added the missing EXPORT_SYMBOL macros for the install and remove SCI 2390handler interfaces. 2391 2392Source code generation: 23931) Disabled the use of the "strchr" macro for the gcc-specific 2394generation. For some versions of gcc, this macro can periodically expose 2395a compiler bug which in turn causes compile-time error(s). 23962) Added support for PPC64 compilation. Colin Ian King. 2397 2398Example Code and Data Size: These are the sizes for the OS-independent 2399acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2400debug version of the code includes the debug output trace mechanism and 2401has a much larger code and data size. 2402 2403 Current Release: 2404 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total 2405 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total 2406 Previous Release: 2407 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 2408 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 2409 2410 24112) iASL Compiler/Disassembler and Tools: 2412 2413Disassembler: Added several new features to improve the readability of 2414the resulting ASL code. Extra information is emitted within comment 2415fields in the ASL code: 24161) Known _HID/_CID values are decoded to descriptive text. 24172) Standard values for the Notify() operator are decoded to descriptive 2418text. 24193) Target operands are expanded to full pathnames (in a comment) when 2420possible. 2421 2422Disassembler: Miscellaneous updates for extern() handling: 24231) Abort compiler if file specified by -fe option does not exist. 24242) Silence unnecessary warnings about argument count mismatches. 24253) Update warning messages concerning unresolved method externals. 24264) Emit "UnknownObj" keyword for externals whose type cannot be 2427determined. 2428 2429AcpiHelp utility: 24301) Added the -a option to display both the ASL syntax and the AML 2431encoding for an input ASL operator. This effectively displays all known 2432information about an ASL operator with one AcpiHelp invocation. 24332) Added substring match support (similar to a wildcard) for the -i 2434(_HID/PNP IDs) option. 2435 2436iASL/Disassembler: Since this tool does not yet support execution on big- 2437endian machines, added detection of endianness and an error message if 2438execution is attempted on big-endian. Support for big-endian within iASL 2439is a feature that is on the ACPICA to-be-done list. 2440 2441AcpiBin utility: 24421) Remove option to extract binary files from an acpidump; this function 2443is made obsolete by the AcpiXtract utility. 24442) General cleanup of open files and allocated buffers. 2445 2446 2447---------------------------------------- 244814 February 2014. Summary of changes for version 20140214: 2449 24501) ACPICA kernel-resident subsystem: 2451 2452Implemented a new mechanism to proactively prevent problems with ill- 2453behaved reentrant control methods that create named ACPI objects. This 2454behavior is illegal as per the ACPI specification, but is nonetheless 2455frequently seen in the field. Previously, this could lead to an 2456AE_ALREADY_EXISTS exception if the method was actually entered by more 2457than one thread. This new mechanism detects such methods at table load 2458time and marks them "serialized" to prevent reentrancy. A new global 2459option, AcpiGbl_AutoSerializeMethods, has been added to disable this 2460feature if desired. This mechanism and global option obsoletes and 2461supersedes the previous AcpiGbl_SerializeAllMethods option. 2462 2463Added the "Windows 2013" string to the _OSI support. ACPICA will now 2464respond TRUE to _OSI queries with this string. It is the stated policy of 2465ACPICA to add new strings to the _OSI support as soon as possible after 2466they are defined. See the full ACPICA _OSI policy which has been added to 2467the utilities/utosi.c file. 2468 2469Hardened/updated the _PRT return value auto-repair code: 24701) Do not abort the repair on a single subpackage failure, continue to 2471check all subpackages. 24722) Add check for the minimum subpackage length (4). 24733) Properly handle extraneous NULL package elements. 2474 2475Added support to avoid the possibility of infinite loops when traversing 2476object linked lists. Never allow an infinite loop, even in the face of 2477corrupted object lists. 2478 2479ACPICA headers: Deployed the use of #pragma pack(push) and #pragma 2480pack(pop) directives to ensure that the ACPICA headers are independent of 2481compiler settings or other host headers. 2482 2483Example Code and Data Size: These are the sizes for the OS-independent 2484acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2485debug version of the code includes the debug output trace mechanism and 2486has a much larger code and data size. 2487 2488 Current Release: 2489 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total 2490 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total 2491 Previous Release: 2492 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 2493 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 2494 2495 24962) iASL Compiler/Disassembler and Tools: 2497 2498iASL/Table-compiler: Fixed a problem with support for the SPMI table. The 2499first reserved field was incorrectly forced to have a value of zero. This 2500change correctly forces the field to have a value of one. ACPICA BZ 1081. 2501 2502Debugger: Added missing support for the "Extra" and "Data" subobjects 2503when displaying object data. 2504 2505Debugger: Added support to display entire object linked lists when 2506displaying object data. 2507 2508iASL: Removed the obsolete -g option to obtain ACPI tables from the 2509Windows registry. This feature has been superseded by the acpidump 2510utility. 2511 2512 2513---------------------------------------- 251414 January 2014. Summary of changes for version 20140114: 2515 25161) ACPICA kernel-resident subsystem: 2517 2518Updated all ACPICA copyrights and signons to 2014. Added the 2014 2519copyright to all module headers and signons, including the standard Linux 2520header. This affects virtually every file in the ACPICA core subsystem, 2521iASL compiler, all ACPICA utilities, and the test suites. 2522 2523Improved parameter validation for AcpiInstallGpeBlock. Added the 2524following checks: 25251) The incoming device handle refers to type ACPI_TYPE_DEVICE. 25262) There is not already a GPE block attached to the device. 2527Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a 2528device. 2529 2530Correctly support "references" in the ACPI_OBJECT. This change fixes the 2531support to allow references (namespace nodes) to be passed as arguments 2532to control methods via the evaluate object interface. This is probably 2533most useful for testing purposes, however. 2534 2535Improved support for 32/64 bit physical addresses in printf()-like 2536output. This change improves the support for physical addresses in printf 2537debug statements and other output on both 32-bit and 64-bit hosts. It 2538consistently outputs the appropriate number of bytes for each host. The 2539%p specifier is unsatisfactory since it does not emit uniform output on 2540all hosts/clib implementations (on some, leading zeros are not supported, 2541leading to difficult-to-read output). 2542 2543Example Code and Data Size: These are the sizes for the OS-independent 2544acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2545debug version of the code includes the debug output trace mechanism and 2546has a much larger code and data size. 2547 2548 Current Release: 2549 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total 2550 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total 2551 Previous Release: 2552 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 2553 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 2554 2555 25562) iASL Compiler/Disassembler and Tools: 2557 2558iASL: Fix a possible fault when using the Connection() operator. Fixes a 2559problem if the parent Field definition for the Connection operator refers 2560to an operation region that does not exist. ACPICA BZ 1064. 2561 2562AcpiExec: Load of local test tables is now optional. The utility has the 2563capability to load some various tables to test features of ACPICA. 2564However, there are enough of them that the output of the utility became 2565confusing. With this change, only the required local tables are displayed 2566(RSDP, XSDT, etc.) along with the actual tables loaded via the command 2567line specification. This makes the default output simler and easier to 2568understand. The -el command line option restores the original behavior 2569for testing purposes. 2570 2571AcpiExec: Added support for overlapping operation regions. This change 2572expands the simulation of operation regions by supporting regions that 2573overlap within the given address space. Supports SystemMemory and 2574SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031. 2575 2576AcpiExec: Added region handler support for PCI_Config and EC spaces. This 2577allows AcpiExec to simulate these address spaces, similar to the current 2578support for SystemMemory and SystemIO. 2579 2580Debugger: Added new command to read/write/compare all namespace objects. 2581The command "test objects" will exercise the entire namespace by writing 2582new values to each data object, and ensuring that the write was 2583successful. The original value is then restored and verified. 2584 2585Debugger: Added the "test predefined" command. This change makes this 2586test public and puts it under the new "test" command. The test executes 2587each and every predefined name within the current namespace. 2588 2589 2590---------------------------------------- 259118 December 2013. Summary of changes for version 20131218: 2592 2593Global note: The ACPI 5.0A specification was released this month. There 2594are no changes needed for ACPICA since this release of ACPI is an 2595errata/clarification release. The specification is available at 2596acpi.info. 2597 2598 25991) ACPICA kernel-resident subsystem: 2600 2601Added validation of the XSDT root table if it is present. Some older 2602platforms contain an XSDT that is ill-formed or otherwise invalid (such 2603as containing some or all entries that are NULL pointers). This change 2604adds a new function to validate the XSDT before actually using it. If the 2605XSDT is found to be invalid, ACPICA will now automatically fall back to 2606using the RSDT instead. Original implementation by Zhao Yakui. Ported to 2607ACPICA and enhanced by Lv Zheng and Bob Moore. 2608 2609Added a runtime option to ignore the XSDT and force the use of the RSDT. 2610This change adds a runtime option that will force ACPICA to use the RSDT 2611instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec 2612requires that an XSDT be used instead of the RSDT, the XSDT has been 2613found to be corrupt or ill-formed on some machines. Lv Zheng. 2614 2615Added a runtime option to favor 32-bit FADT register addresses over the 261664-bit addresses. This change adds an option to favor 32-bit FADT 2617addresses when there is a conflict between the 32-bit and 64-bit versions 2618of the same register. The default behavior is to use the 64-bit version 2619in accordance with the ACPI specification. This can now be overridden via 2620the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng. 2621 2622During the change above, the internal "Convert FADT" and "Verify FADT" 2623functions have been merged to simplify the code, making it easier to 2624understand and maintain. ACPICA BZ 933. 2625 2626Improve exception reporting and handling for GPE block installation. 2627Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the 2628status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019. 2629 2630Added helper macros to extract bus/segment numbers from the HEST table. 2631This change adds two macros to extract the encoded bus and segment 2632numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT. 2633Betty Dall <betty.dall@hp.com> 2634 2635Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used 2636by ACPICA. It is not a public macro, so it should have no effect on 2637existing OSV code. Lv Zheng. 2638 2639Example Code and Data Size: These are the sizes for the OS-independent 2640acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2641debug version of the code includes the debug output trace mechanism and 2642has a much larger code and data size. 2643 2644 Current Release: 2645 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total 2646 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total 2647 Previous Release: 2648 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 2649 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 2650 2651 26522) iASL Compiler/Disassembler and Tools: 2653 2654Disassembler: Improved pathname support for emitted External() 2655statements. This change adds full pathname support for external names 2656that have been resolved internally by the inclusion of additional ACPI 2657tables (via the iASL -e option). Without this change, the disassembler 2658can emit multiple externals for the same object, or it become confused 2659when the Scope() operator is used on an external object. Overall, greatly 2660improves the ability to actually recompile the emitted ASL code when 2661objects a referenced across multiple ACPI tables. Reported by Michael 2662Tsirkin (mst@redhat.com). 2663 2664Tests/ASLTS: Updated functional control suite to execute with no errors. 2665David Box. Fixed several errors related to the testing of the interpreter 2666slack mode. Lv Zheng. 2667 2668iASL: Added support to detect names that are declared within a control 2669method, but are unused (these are temporary names that are only valid 2670during the time the method is executing). A remark is issued for these 2671cases. ACPICA BZ 1022. 2672 2673iASL: Added full support for the DBG2 table. Adds full disassembler, 2674table compiler, and template generator support for the DBG2 table (Debug 2675Port 2 table). 2676 2677iASL: Added full support for the PCCT table, update the table definition. 2678Updates the PCCT table definition in the actbl3.h header and adds table 2679compiler and template generator support. 2680 2681iASL: Added an option to emit only error messages (no warnings/remarks). 2682The -ve option will enable only error messages, warnings and remarks are 2683suppressed. This can simplify debugging when only the errors are 2684important, such as when an ACPI table is disassembled and there are many 2685warnings and remarks -- but only the actual errors are of real interest. 2686 2687Example ACPICA code (source/tools/examples): Updated the example code so 2688that it builds to an actual working program, not just example code. Added 2689ACPI tables and execution of an example control method in the DSDT. Added 2690makefile support for Unix generation. 2691 2692 2693---------------------------------------- 269415 November 2013. Summary of changes for version 20131115: 2695 2696This release is available at https://acpica.org/downloads 2697 2698 26991) ACPICA kernel-resident subsystem: 2700 2701Resource Manager: Fixed loop termination for the "get AML length" 2702function. The loop previously had an error termination on a NULL resource 2703pointer, which can never happen since the loop simply increments a valid 2704resource pointer. This fix changes the loop to terminate with an error on 2705an invalid end-of-buffer condition. The problem can be seen as an 2706infinite loop by callers to AcpiSetCurrentResources with an invalid or 2707corrupted resource descriptor, or a resource descriptor that is missing 2708an END_TAG descriptor. Reported by Dan Carpenter 2709<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore. 2710 2711Table unload and ACPICA termination: Delete all attached data objects 2712during namespace node deletion. This fix updates namespace node deletion 2713to delete the entire list of attached objects (attached via 2714AcpiAttachObject) instead of just one of the attached items. ACPICA BZ 27151024. Tomasz Nowicki (tomasz.nowicki@linaro.org). 2716 2717ACPICA termination: Added support to delete all objects attached to the 2718root namespace node. This fix deletes any and all objects that have been 2719attached to the root node via AcpiAttachData. Previously, none of these 2720objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026. 2721 2722Debug output: Do not emit the function nesting level for the in-kernel 2723build. The nesting level is really only useful during a single-thread 2724execution. Therefore, only enable this output for the AcpiExec utility. 2725Also, only emit the thread ID when executing under AcpiExec (Context 2726switches are still always detected and a message is emitted). ACPICA BZ 2727972. 2728 2729Example Code and Data Size: These are the sizes for the OS-independent 2730acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2731debug version of the code includes the debug output trace mechanism and 2732has a much larger code and data size. 2733 2734 Current Release: 2735 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total 2736 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total 2737 Previous Release: 2738 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 2739 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 2740 2741 27422) iASL Compiler/Disassembler and Tools: 2743 2744AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the 2745correct portable POSIX header for terminal control functions. 2746 2747Disassembler: Fixed control method invocation issues related to the use 2748of the CondRefOf() operator. The problem is seen in the disassembly where 2749control method invocations may not be disassembled properly if the 2750control method name has been used previously as an argument to CondRefOf. 2751The solution is to not attempt to emit an external declaration for the 2752CondRefOf target (it is not necessary in the first place). This prevents 2753disassembler object type confusion. ACPICA BZ 988. 2754 2755Unix Makefiles: Added an option to disable compiler optimizations and the 2756_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA 2757with optimizations (reportedly, gcc 4.4 for example). This change adds a 2758command line option for make (NOOPT) that disables all compiler 2759optimizations and the _FORTIFY_SOURCE compiler flag. The default 2760optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ 27611034. Lv Zheng, Bob Moore. 2762 2763Tests/ASLTS: Added options to specify individual test cases and modes. 2764This allows testers running aslts.sh to optionally specify individual 2765test modes and test cases. Also added an option to disable the forced 2766generation of the ACPICA tools from source if desired. Lv Zheng. 2767 2768---------------------------------------- 276927 September 2013. Summary of changes for version 20130927: 2770 2771This release is available at https://acpica.org/downloads 2772 2773 27741) ACPICA kernel-resident subsystem: 2775 2776Fixed a problem with store operations to reference objects. This change 2777fixes a problem where a Store operation to an ArgX object that contained 2778a 2779reference to a field object did not complete the automatic dereference 2780and 2781then write to the actual field object. Instead, the object type of the 2782field object was inadvertently changed to match the type of the source 2783operand. The new behavior will actually write to the field object (buffer 2784field or field unit), thus matching the correct ACPI-defined behavior. 2785 2786Implemented support to allow the host to redefine individual OSL 2787prototypes. This change enables the host to redefine OSL prototypes found 2788in the acpiosxf.h file. This allows the host to implement OSL interfaces 2789with a macro or inlined function. Further, it allows the host to add any 2790additional required modifiers such as __iomem, __init, __exit, etc., as 2791necessary on a per-interface basis. Enables maximum flexibility for the 2792OSL interfaces. Lv Zheng. 2793 2794Hardcoded the access width for the FADT-defined reset register. The ACPI 2795specification requires the reset register width to be 8 bits. ACPICA now 2796hardcodes the width to 8 and ignores the FADT width value. This provides 2797compatibility with other ACPI implementations that have allowed BIOS code 2798with bad register width values to go unnoticed. Matthew Garett, Bob 2799Moore, 2800Lv Zheng. 2801 2802Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is 2803used 2804in the OSL header (acpiosxf). The change modifies the position of this 2805macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid 2806build issues if the OSL defines the implementation of the interface to be 2807an inline stub function. Lv Zheng. 2808 2809Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA 2810initialization interfaces. This change adds a new macro for the main init 2811and terminate external interfaces in order to support hosts that require 2812additional or different processing for these functions. Changed from 2813ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv 2814Zheng, Bob Moore. 2815 2816Cleaned up the memory allocation macros for configurability. In the 2817common 2818case, the ACPI_ALLOCATE and related macros now resolve directly to their 2819respective AcpiOs* OSL interfaces. Two options: 28201) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by 2821default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define. 28222) For AcpiExec (and for debugging), the macros can optionally be 2823resolved 2824to the local ACPICA interfaces that track each allocation (local tracking 2825is used to immediately detect memory leaks). 2826Lv Zheng. 2827 2828Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel 2829to predefine this macro to either TRUE or FALSE during the system build. 2830 2831Replaced __FUNCTION_ with __func__ in the gcc-specific header. 2832 2833Example Code and Data Size: These are the sizes for the OS-independent 2834acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2835debug version of the code includes the debug output trace mechanism and 2836has a much larger code and data size. 2837 2838 Current Release: 2839 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total 2840 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total 2841 Previous Release: 2842 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 2843 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2844 2845 28462) iASL Compiler/Disassembler and Tools: 2847 2848iASL: Implemented wildcard support for the -e option. This simplifies use 2849when there are many SSDTs that must be included to resolve external 2850method 2851declarations. ACPICA BZ 1041. Example: 2852 iasl -e ssdt*.dat -d dsdt.dat 2853 2854AcpiExec: Add history/line-editing for Unix/Linux systems. This change 2855adds a portable module that implements full history and limited line 2856editing for Unix and Linux systems. It does not use readline() due to 2857portability issues. Instead it uses the POSIX termio interface to put the 2858terminal in raw input mode so that the various special keys can be 2859trapped 2860(such as up/down-arrow for history support and left/right-arrow for line 2861editing). Uses the existing debugger history mechanism. ACPICA BZ 1036. 2862 2863AcpiXtract: Add support to handle (ignore) "empty" lines containing only 2864one or more spaces. This provides compatible with early or different 2865versions of the AcpiDump utility. ACPICA BZ 1044. 2866 2867AcpiDump: Do not ignore tables that contain only an ACPI table header. 2868Apparently, some BIOSs create SSDTs that contain an ACPI table header but 2869no other data. This change adds support to dump these tables. Any tables 2870shorter than the length of an ACPI table header remain in error (an error 2871message is emitted). Reported by Yi Li. 2872 2873Debugger: Echo actual command along with the "unknown command" message. 2874 2875---------------------------------------- 287623 August 2013. Summary of changes for version 20130823: 2877 28781) ACPICA kernel-resident subsystem: 2879 2880Implemented support for host-installed System Control Interrupt (SCI) 2881handlers. Certain ACPI functionality requires the host to handle raw 2882SCIs. For example, the "SCI Doorbell" that is defined for memory power 2883state support requires the host device driver to handle SCIs to examine 2884if the doorbell has been activated. Multiple SCI handlers can be 2885installed to allow for future expansion. New external interfaces are 2886AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for 2887details. Lv Zheng, Bob Moore. ACPICA BZ 1032. 2888 2889Operation region support: Never locally free the handler "context" 2890pointer. This change removes some dangerous code that attempts to free 2891the handler context pointer in some (rare) circumstances. The owner of 2892the handler owns this pointer and the ACPICA code should never touch it. 2893Although not seen to be an issue in any kernel, it did show up as a 2894problem (fault) under AcpiExec. Also, set the internal storage field for 2895the context pointer to zero when the region is deactivated, simply for 2896sanity. David Box. ACPICA BZ 1039. 2897 2898AcpiRead: On error, do not modify the return value target location. If an 2899error happens in the middle of a split 32/32 64-bit I/O operation, do not 2900modify the target of the return value pointer. Makes the code consistent 2901with the rest of ACPICA. Bjorn Helgaas. 2902 2903Example Code and Data Size: These are the sizes for the OS-independent 2904acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 2905debug version of the code includes the debug output trace mechanism and 2906has a much larger code and data size. 2907 2908 Current Release: 2909 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total 2910 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 2911 Previous Release: 2912 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 2913 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total 2914 2915 29162) iASL Compiler/Disassembler and Tools: 2917 2918AcpiDump: Implemented several new features and fixed some problems: 29191) Added support to dump the RSDP, RSDT, and XSDT tables. 29202) Added support for multiple table instances (SSDT, UEFI). 29213) Added option to dump "customized" (overridden) tables (-c). 29224) Fixed a problem where some table filenames were improperly 2923constructed. 29245) Improved some error messages, removed some unnecessary messages. 2925 2926iASL: Implemented additional support for disassembly of ACPI tables that 2927contain invocations of external control methods. The -fe<file> option 2928allows the import of a file that specifies the external methods along 2929with the required number of arguments for each -- allowing for the 2930correct disassembly of the table. This is a workaround for a limitation 2931of AML code where the disassembler often cannot determine the number of 2932arguments required for an external control method and generates incorrect 2933ASL code. See the iASL reference for details. ACPICA BZ 1030. 2934 2935Debugger: Implemented a new command (paths) that displays the full 2936pathnames (namepaths) and object types of all objects in the namespace. 2937This is an alternative to the namespace command. 2938 2939Debugger: Implemented a new command (sci) that invokes the SCI dispatch 2940mechanism and any installed handlers. 2941 2942iASL: Fixed a possible segfault for "too many parent prefixes" condition. 2943This can occur if there are too many parent prefixes in a namepath (for 2944example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035. 2945 2946Application OSLs: Set the return value for the PCI read functions. These 2947functions simply return AE_OK, but should set the return value to zero 2948also. This change implements this. ACPICA BZ 1038. 2949 2950Debugger: Prevent possible command line buffer overflow. Increase the 2951size of a couple of the debugger line buffers, and ensure that overflow 2952cannot happen. ACPICA BZ 1037. 2953 2954iASL: Changed to abort immediately on serious errors during the parsing 2955phase. Due to the nature of ASL, there is no point in attempting to 2956compile these types of errors, and they typically end up causing a 2957cascade of hundreds of errors which obscure the original problem. 2958 2959---------------------------------------- 296025 July 2013. Summary of changes for version 20130725: 2961 29621) ACPICA kernel-resident subsystem: 2963 2964Fixed a problem with the DerefOf operator where references to FieldUnits 2965and BufferFields incorrectly returned the parent object, not the actual 2966value of the object. After this change, a dereference of a FieldUnit 2967reference results in a read operation on the field to get the value, and 2968likewise, the appropriate BufferField value is extracted from the target 2969buffer. 2970 2971Fixed a problem where the _WAK method could cause a fault under these 2972circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK 2973method returned no value. The problem is rarely seen because most kernels 2974run ACPICA in slack mode. 2975 2976For the DerefOf operator, a fatal error now results if an attempt is made 2977to dereference a reference (created by the Index operator) to a NULL 2978package element. Provides compatibility with other ACPI implementations, 2979and this behavior will be added to a future version of the ACPI 2980specification. 2981 2982The ACPI Power Management Timer (defined in the FADT) is now optional. 2983This provides compatibility with other ACPI implementations and will 2984appear in the next version of the ACPI specification. If there is no PM 2985Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of 2986zero in the FADT indicates no PM timer. 2987 2988Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This 2989allows the host to globally enable/disable all vendor strings, all 2990feature strings, or both. Intended to be primarily used for debugging 2991purposes only. Lv Zheng. 2992 2993Expose the collected _OSI data to the host via a global variable. This 2994data tracks the highest level vendor ID that has been invoked by the BIOS 2995so that the host (and potentially ACPICA itself) can change behaviors 2996based upon the age of the BIOS. 2997 2998Example Code and Data Size: These are the sizes for the OS-independent 2999acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3000debug version of the code includes the debug output trace mechanism and 3001has a much larger code and data size. 3002 3003 Current Release: 3004 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total 3005 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total 3006 Previous Release: 3007 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 3008 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 3009 3010 30112) iASL Compiler/Disassembler and Tools: 3012 3013iASL: Created the following enhancements for the -so option (create 3014offset table): 30151)Add offsets for the last nameseg in each namepath for every supported 3016object type 30172)Add support for Processor, Device, Thermal Zone, and Scope objects 30183)Add the actual AML opcode for the parent object of every supported 3019object type 30204)Add support for the ZERO/ONE/ONES AML opcodes for integer objects 3021 3022Disassembler: Emit all unresolved external symbols in a single block. 3023These are external references to control methods that could not be 3024resolved, and thus, the disassembler had to make a guess at the number of 3025arguments to parse. 3026 3027iASL: The argument to the -T option (create table template) is now 3028optional. If not specified, the default table is a DSDT, typically the 3029most common case. 3030 3031---------------------------------------- 303226 June 2013. Summary of changes for version 20130626: 3033 30341) ACPICA kernel-resident subsystem: 3035 3036Fixed an issue with runtime repair of the _CST object. Null or invalid 3037elements were not always removed properly. Lv Zheng. 3038 3039Removed an arbitrary restriction of 256 GPEs per GPE block (such as the 3040FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device, 3041the maximum number of GPEs is 1016. Use of multiple GPE block devices 3042makes the system-wide number of GPEs essentially unlimited. 3043 3044Example Code and Data Size: These are the sizes for the OS-independent 3045acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3046debug version of the code includes the debug output trace mechanism and 3047has a much larger code and data size. 3048 3049 Current Release: 3050 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total 3051 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total 3052 Previous Release: 3053 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 3054 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 3055 3056 30572) iASL Compiler/Disassembler and Tools: 3058 3059Portable AcpiDump: Implemented full support for the Linux and FreeBSD 3060hosts. Now supports Linux, FreeBSD, and Windows. 3061 3062Disassembler: Added some missing types for the HEST and EINJ tables: "Set 3063Error Type With Address", "CMCI", "MCE", and "Flush Cacheline". 3064 3065iASL/Preprocessor: Implemented full support for nested 3066#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks. 3067 3068Disassembler: Expanded maximum output string length to 64K. Was 256 bytes 3069max. The original purpose of this constraint was to limit the amount of 3070debug output. However, the string function in question (UtPrintString) is 3071now used for the disassembler also, where 256 bytes is insufficient. 3072Reported by RehabMan@GitHub. 3073 3074iASL/DataTables: Fixed some problems and issues with compilation of DMAR 3075tables. ACPICA BZ 999. Lv Zheng. 3076 3077iASL: Fixed a couple of error exit issues that could result in a "Could 3078not delete <file>" message during ASL compilation. 3079 3080AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though 3081the actual signatures for these tables are "FACP" and "APIC", 3082respectively. 3083 3084AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI 3085tables are allowed to have multiple instances. 3086 3087---------------------------------------- 308817 May 2013. Summary of changes for version 20130517: 3089 30901) ACPICA kernel-resident subsystem: 3091 3092Fixed a regression introduced in version 20130328 for _INI methods. This 3093change fixes a problem introduced in 20130328 where _INI methods are no 3094longer executed properly because of a memory block that was not 3095initialized correctly. ACPICA BZ 1016. Tomasz Nowicki 3096<tomasz.nowicki@linaro.org>. 3097 3098Fixed a possible problem with the new extended sleep registers in the 3099ACPI 31005.0 FADT. Do not use these registers (even if populated) unless the HW- 3101reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ 31021020. Lv Zheng. 3103 3104Implemented return value repair code for _CST predefined objects: Sort 3105the 3106list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng. 3107 3108Implemented a debug-only option to disable loading of SSDTs from the 3109RSDT/XSDT during ACPICA initialization. This can be useful for debugging 3110ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in 3111acglobal.h - ACPICA BZ 1005. Lv Zheng. 3112 3113Fixed some issues in the ACPICA initialization and termination code: 3114Tomasz Nowicki <tomasz.nowicki@linaro.org> 31151) Clear events initialized flag upon event component termination. ACPICA 3116BZ 1013. 31172) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018. 31183) Delete global lock pending lock during termination. ACPICA BZ 1012. 31194) Clear debug buffer global on termination to prevent possible multiple 3120delete. ACPICA BZ 1010. 3121 3122Standardized all switch() blocks across the entire source base. After 3123many 3124years, different formatting for switch() had crept in. This change makes 3125the formatting of every switch block identical. ACPICA BZ 997. Chao Guan. 3126 3127Split some files to enhance ACPICA modularity and configurability: 31281) Split buffer dump routines into utilities/utbuffer.c 31292) Split internal error message routines into utilities/uterror.c 31303) Split table print utilities into tables/tbprint.c 31314) Split iASL command-line option processing into asloptions.c 3132 3133Makefile enhancements: 31341) Support for all new files above. 31352) Abort make on errors from any subcomponent. Chao Guan. 31363) Add build support for Apple Mac OS X. Liang Qi. 3137 3138Example Code and Data Size: These are the sizes for the OS-independent 3139acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3140debug version of the code includes the debug output trace mechanism and 3141has a much larger code and data size. 3142 3143 Current Release: 3144 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total 3145 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total 3146 Previous Release: 3147 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 3148 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 3149 3150 31512) iASL Compiler/Disassembler and Tools: 3152 3153New utility: Implemented an easily portable version of the acpidump 3154utility to extract ACPI tables from the system (or a file) in an ASCII 3155hex 3156dump format. The top-level code implements the various command line 3157options, file I/O, and table dump routines. To port to a new host, only 3158three functions need to be implemented to get tables -- since this 3159functionality is OS-dependent. See the tools/acpidump/apmain.c module and 3160the ACPICA reference for porting instructions. ACPICA BZ 859. Notes: 31611) The Windows version obtains the ACPI tables from the Registry. 31622) The Linux version is under development. 31633) Other hosts - If an OS-dependent module is submitted, it will be 3164distributed with ACPICA. 3165 3166iASL: Fixed a regression for -D preprocessor option (define symbol). A 3167restructuring/change to the initialization sequence caused this option to 3168no longer work properly. 3169 3170iASL: Implemented a mechanism to disable specific warnings and remarks. 3171Adds a new command line option, "-vw <messageid> as well as "#pragma 3172disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore. 3173 3174iASL: Fix for too-strict package object validation. The package object 3175validation for return values from the predefined names is a bit too 3176strict, it does not allow names references within the package (which will 3177be resolved at runtime.) These types of references cannot be validated at 3178compile time. This change ignores named references within package objects 3179for names that return or define static packages. 3180 3181Debugger: Fixed the 80-character command line limitation for the History 3182command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan. 3183 3184iASL: Added control method and package support for the -so option 3185(generates AML offset table for BIOS support.) 3186 3187iASL: issue a remark if a non-serialized method creates named objects. If 3188a thread blocks within the method for any reason, and another thread 3189enters the method, the method will fail because an attempt will be made 3190to 3191create the same (named) object twice. In this case, issue a remark that 3192the method should be marked serialized. NOTE: may become a warning later. 3193ACPICA BZ 909. 3194 3195---------------------------------------- 319618 April 2013. Summary of changes for version 20130418: 3197 31981) ACPICA kernel-resident subsystem: 3199 3200Fixed a possible buffer overrun during some rare but specific field unit 3201read operations. This overrun can only happen if the DSDT version is 1 -- 3202meaning that all AML integers are 32 bits -- and the field length is 3203between 33 and 55 bits long. During the read, an internal buffer object 3204is 3205created for the field unit because the field is larger than an integer 3206(32 3207bits). However, in this case, the buffer will be incorrectly written 3208beyond the end because the buffer length is less than the internal 3209minimum 3210of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes 3211long, but a full 8 bytes will be written. 3212 3213Updated the Embedded Controller "orphan" _REG method support. This refers 3214to _REG methods under the EC device that have no corresponding operation 3215region. This is allowed by the ACPI specification. This update removes a 3216dependency on the existence an ECDT table. It will execute an orphan _REG 3217method as long as the operation region handler for the EC is installed at 3218the EC device node and not the namespace root. Rui Zhang (original 3219update), Bob Moore (update/integrate). 3220 3221Implemented run-time argument typechecking for all predefined ACPI names 3222(_STA, _BIF, etc.) This change performs object typechecking on all 3223incoming arguments for all predefined names executed via 3224AcpiEvaluateObject. This ensures that ACPI-related device drivers are 3225passing correct object types as well as the correct number of arguments 3226(therefore identifying any issues immediately). Also, the ASL/namespace 3227definition of the predefined name is checked against the ACPI 3228specification for the proper argument count. Adds one new file, 3229nsarguments.c 3230 3231Changed an exception code for the ASL UnLoad() operator. Changed the 3232exception code for the case where the input DdbHandle is invalid, from 3233AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE. 3234 3235Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the 3236global makefile. The use of this flag causes compiler errors on earlier 3237versions of GCC, so it has been removed for compatibility. 3238 3239Miscellaneous cleanup: 32401) Removed some unused/obsolete macros 32412) Fixed a possible memory leak in the _OSI support 32423) Removed an unused variable in the predefined name support 32434) Windows OSL: remove obsolete reference to a memory list field 3244 3245Example Code and Data Size: These are the sizes for the OS-independent 3246acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3247debug version of the code includes the debug output trace mechanism and 3248has a much larger code and data size. 3249 3250 Current Release: 3251 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 3252 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 3253 Previous Release: 3254 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total 3255 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total 3256 3257 32582) iASL Compiler/Disassembler and Tools: 3259 3260AcpiExec: Added installation of a handler for the SystemCMOS address 3261space. This prevents control method abort if a method accesses this 3262space. 3263 3264AcpiExec: Added support for multiple EC devices, and now install EC 3265operation region handler(s) at the actual EC device instead of the 3266namespace root. This reflects the typical behavior of host operating 3267systems. 3268 3269AcpiExec: Updated to ensure that all operation region handlers are 3270installed before the _REG methods are executed. This prevents a _REG 3271method from aborting if it accesses an address space has no handler. 3272AcpiExec installs a handler for every possible address space. 3273 3274Debugger: Enhanced the "handlers" command to display non-root handlers. 3275This change enhances the handlers command to display handlers associated 3276with individual devices throughout the namespace, in addition to the 3277currently supported display of handlers associated with the root 3278namespace 3279node. 3280 3281ASL Test Suite: Several test suite errors have been identified and 3282resolved, reducing the total error count during execution. Chao Guan. 3283 3284---------------------------------------- 328528 March 2013. Summary of changes for version 20130328: 3286 32871) ACPICA kernel-resident subsystem: 3288 3289Fixed several possible race conditions with the internal object reference 3290counting mechanism. Some of the external ACPICA interfaces update object 3291reference counts without holding the interpreter or namespace lock. This 3292change adds a spinlock to protect reference count updates on the internal 3293ACPICA objects. Reported by and with assistance from Andriy Gapon 3294(avg@FreeBSD.org). 3295 3296FADT support: Removed an extraneous warning for very large GPE register 3297sets. This change removes a size mismatch warning if the legacy length 3298field for a GPE register set is larger than the 64-bit GAS structure can 3299accommodate. GPE register sets can be larger than the 255-bit width 3300limitation of the GAS structure. Linn Crosetto (linn@hp.com). 3301 3302_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error 3303return from this interface. Handles a possible timeout case if 3304ACPI_WAIT_FOREVER is modified by the host to be a value less than 3305"forever". Jung-uk Kim. 3306 3307Predefined name support: Add allowed/required argument type information 3308to 3309the master predefined info table. This change adds the infrastructure to 3310enable typechecking on incoming arguments for all predefined 3311methods/objects. It does not actually contain the code that will fully 3312utilize this information, this is still under development. Also condenses 3313some duplicate code for the predefined names into a new module, 3314utilities/utpredef.c 3315 3316Example Code and Data Size: These are the sizes for the OS-independent 3317acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3318debug version of the code includes the debug output trace mechanism and 3319has a much larger code and data size. 3320 3321 Previous Release: 3322 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 3323 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 3324 Current Release: 3325 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total 3326 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total 3327 3328 33292) iASL Compiler/Disassembler and Tools: 3330 3331iASL: Implemented a new option to simplify the development of ACPI- 3332related 3333BIOS code. Adds support for a new "offset table" output file. The -so 3334option will create a C table containing the AML table offsets of various 3335named objects in the namespace so that BIOS code can modify them easily 3336at 3337boot time. This can simplify BIOS runtime code by eliminating expensive 3338searches for "magic values", enhancing boot times and adding greater 3339reliability. With assistance from Lee Hamel. 3340 3341iASL: Allow additional predefined names to return zero-length packages. 3342Now, all predefined names that are defined by the ACPI specification to 3343return a "variable-length package of packages" are allowed to return a 3344zero length top-level package. This allows the BIOS to tell the host that 3345the requested feature is not supported, and supports existing BIOS/ASL 3346code and practices. 3347 3348iASL: Changed the "result not used" warning to an error. This is the case 3349where an ASL operator is effectively a NOOP because the result of the 3350operation is not stored anywhere. For example: 3351 Add (4, Local0) 3352There is no target (missing 3rd argument), nor is the function return 3353value used. This is potentially a very serious problem -- since the code 3354was probably intended to do something, but for whatever reason, the value 3355was not stored. Therefore, this issue has been upgraded from a warning to 3356an error. 3357 3358AcpiHelp: Added allowable/required argument types to the predefined names 3359info display. This feature utilizes the recent update to the predefined 3360names table (above). 3361 3362---------------------------------------- 336314 February 2013. Summary of changes for version 20130214: 3364 33651) ACPICA Kernel-resident Subsystem: 3366 3367Fixed a possible regression on some hosts: Reinstated the safe return 3368macros (return_ACPI_STATUS, etc.) that ensure that the argument is 3369evaluated only once. Although these macros are not needed for the ACPICA 3370code itself, they are often used by ACPI-related host device drivers 3371where 3372the safe feature may be necessary. 3373 3374Fixed several issues related to the ACPI 5.0 reduced hardware support 3375(SOC): Now ensure that if the platform declares itself as hardware- 3376reduced 3377via the FADT, the following functions become NOOPs (and always return 3378AE_OK) because ACPI is always enabled by definition on these machines: 3379 AcpiEnable 3380 AcpiDisable 3381 AcpiHwGetMode 3382 AcpiHwSetMode 3383 3384Dynamic Object Repair: Implemented additional runtime repairs for 3385predefined name return values. Both of these repairs can simplify code in 3386the related device drivers that invoke these methods: 33871) For the _STR and _MLS names, automatically repair/convert an ASCII 3388string to a Unicode buffer. 33892) For the _CRS, _PRS, and _DMA names, return a resource descriptor with 3390a 3391lone end tag descriptor in the following cases: A Return(0) was executed, 3392a null buffer was returned, or no object at all was returned (non-slack 3393mode only). Adds a new file, nsconvert.c 3394ACPICA BZ 998. Bob Moore, Lv Zheng. 3395 3396Resource Manager: Added additional code to prevent possible infinite 3397loops 3398while traversing corrupted or ill-formed resource template buffers. Check 3399for zero-length resource descriptors in all code that loops through 3400resource templates (the length field is used to index through the 3401template). This change also hardens the external AcpiWalkResources and 3402AcpiWalkResourceBuffer interfaces. 3403 3404Local Cache Manager: Enhanced the main data structure to eliminate an 3405unnecessary mechanism to access the next object in the list. Actually 3406provides a small performance enhancement for hosts that use the local 3407ACPICA cache manager. Jung-uk Kim. 3408 3409Example Code and Data Size: These are the sizes for the OS-independent 3410acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3411debug version of the code includes the debug output trace mechanism and 3412has a much larger code and data size. 3413 3414 Previous Release: 3415 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 3416 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 3417 Current Release: 3418 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total 3419 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total 3420 3421 34222) iASL Compiler/Disassembler and Tools: 3423 3424iASL/Disassembler: Fixed several issues with the definition of the ACPI 34255.0 RASF table (RAS Feature Table). This change incorporates late changes 3426that were made to the ACPI 5.0 specification. 3427 3428iASL/Disassembler: Added full support for the following new ACPI tables: 3429 1) The MTMR table (MID Timer Table) 3430 2) The VRTC table (Virtual Real Time Clock Table). 3431Includes header file, disassembler, table compiler, and template support 3432for both tables. 3433 3434iASL: Implemented compile-time validation of package objects returned by 3435predefined names. This new feature validates static package objects 3436returned by the various predefined names defined to return packages. Both 3437object types and package lengths are validated, for both parent packages 3438and sub-packages, if any. The code is similar in structure and behavior 3439to 3440the runtime repair mechanism within the AML interpreter and uses the 3441existing predefined name information table. Adds a new file, aslprepkg.c. 3442ACPICA BZ 938. 3443 3444iASL: Implemented auto-detection of binary ACPI tables for disassembly. 3445This feature detects a binary file with a valid ACPI table header and 3446invokes the disassembler automatically. Eliminates the need to 3447specifically invoke the disassembler with the -d option. ACPICA BZ 862. 3448 3449iASL/Disassembler: Added several warnings for the case where there are 3450unresolved control methods during the disassembly. This can potentially 3451cause errors when the output file is compiled, because the disassembler 3452assumes zero method arguments in these cases (it cannot determine the 3453actual number of arguments without resolution/definition of the method). 3454 3455Debugger: Added support to display all resources with a single command. 3456Invocation of the resources command with no arguments will now display 3457all 3458resources within the current namespace. 3459 3460AcpiHelp: Added descriptive text for each ACPICA exception code displayed 3461via the -e option. 3462 3463---------------------------------------- 346417 January 2013. Summary of changes for version 20130117: 3465 34661) ACPICA Kernel-resident Subsystem: 3467 3468Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to 3469return either 1 or 2 integers. Although the ACPI spec defines the \_Sx 3470objects to return a package containing one integer, most BIOS code 3471returns 3472two integers and the previous code reflects that. However, we also need 3473to 3474support BIOS code that actually implements to the ACPI spec, and this 3475change reflects this. 3476 3477Fixed two issues with the ACPI_DEBUG_PRINT macros: 34781) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for 3479C compilers that require this support. 34802) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since 3481ACPI_DEBUG is already used by many of the various hosts. 3482 3483Updated all ACPICA copyrights and signons to 2013. Added the 2013 3484copyright to all module headers and signons, including the standard Linux 3485header. This affects virtually every file in the ACPICA core subsystem, 3486iASL compiler, all ACPICA utilities, and the test suites. 3487 3488Example Code and Data Size: These are the sizes for the OS-independent 3489acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3490debug version of the code includes the debug output trace mechanism and 3491has a much larger code and data size. 3492 3493 Previous Release: 3494 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 3495 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 3496 Current Release: 3497 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total 3498 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total 3499 3500 35012) iASL Compiler/Disassembler and Tools: 3502 3503Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and 3504prevent a possible fault on some hosts. Some C libraries modify the arg 3505pointer parameter to vfprintf making it difficult to call it twice in the 3506AcpiOsVprintf function. Use a local buffer to workaround this issue. This 3507does not affect the Windows OSL since the Win C library does not modify 3508the arg pointer. Chao Guan, Bob Moore. 3509 3510iASL: Fixed a possible infinite loop when the maximum error count is 3511reached. If an output file other than the .AML file is specified (such as 3512a listing file), and the maximum number of errors is reached, do not 3513attempt to flush data to the output file(s) as the compiler is aborting. 3514This can cause an infinite loop as the max error count code essentially 3515keeps calling itself. 3516 3517iASL/Disassembler: Added an option (-in) to ignore NOOP 3518opcodes/operators. 3519Implemented for both the compiler and the disassembler. Often, the NOOP 3520opcode is used as padding for packages that are changed dynamically by 3521the 3522BIOS. When disassembled and recompiled, these NOOPs will cause syntax 3523errors. This option causes the disassembler to ignore all NOOP opcodes 3524(0xA3), and it also causes the compiler to ignore all ASL source code 3525NOOP 3526statements as well. 3527 3528Debugger: Enhanced the Sleep command to execute all sleep states. This 3529change allows Sleep to be invoked with no arguments and causes the 3530debugger to execute all of the sleep states, 0-5, automatically. 3531 3532---------------------------------------- 353320 December 2012. Summary of changes for version 20121220: 3534 35351) ACPICA Kernel-resident Subsystem: 3536 3537Implemented a new interface, AcpiWalkResourceBuffer. This interface is an 3538alternate entry point for AcpiWalkResources and improves the usability of 3539the resource manager by accepting as input a buffer containing the output 3540of either a _CRS, _PRS, or _AEI method. The key functionality is that the 3541input buffer is not deleted by this interface so that it can be used by 3542the host later. See the ACPICA reference for details. 3543 3544Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table 3545(DSDT version < 2). The constant will be truncated and this warning 3546reflects that behavior. 3547 3548Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ, 3549ExtendedInterrupt, and GpioInt descriptors. This change adds support to 3550both get and set the new wake bit in these descriptors, separately from 3551the existing share bit. Reported by Aaron Lu. 3552 3553Interpreter: Fix Store() when an implicit conversion is not possible. For 3554example, in the cases such as a store of a string to an existing package 3555object, implement the store as a CopyObject(). This is a small departure 3556from the ACPI specification which states that the control method should 3557be 3558aborted in this case. However, the ASLTS suite depends on this behavior. 3559 3560Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT 3561macros: check if debug output is currently enabled as soon as possible to 3562minimize performance impact if debug is in fact not enabled. 3563 3564Source code restructuring: Cleanup to improve modularity. The following 3565new files have been added: dbconvert.c, evhandler.c, nsprepkg.c, 3566psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c. 3567Associated makefiles and project files have been updated. 3568 3569Changed an exception code for LoadTable operator. For the case where one 3570of the input strings is too long, change the returned exception code from 3571AE_BAD_PARAMETER to AE_AML_STRING_LIMIT. 3572 3573Fixed a possible memory leak in dispatcher error path. On error, delete 3574the mutex object created during method mutex creation. Reported by 3575tim.gardner@canonical.com. 3576 3577Example Code and Data Size: These are the sizes for the OS-independent 3578acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3579debug version of the code includes the debug output trace mechanism and 3580has a much larger code and data size. 3581 3582 Previous Release: 3583 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 3584 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3585 Current Release: 3586 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total 3587 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total 3588 3589 35902) iASL Compiler/Disassembler and Tools: 3591 3592iASL: Disallow a method call as argument to the ObjectType ASL operator. 3593This change tracks an errata to the ACPI 5.0 document. The AML grammar 3594will not allow the interpreter to differentiate between a method and a 3595method invocation when these are used as an argument to the ObjectType 3596operator. The ACPI specification change is to disallow a method 3597invocation 3598(UserTerm) for the ObjectType operator. 3599 3600Finish support for the TPM2 and CSRT tables in the headers, table 3601compiler, and disassembler. 3602 3603Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout 3604always expires immediately if the semaphore is not available. The 3605original 3606code was using a relative-time timeout, but sem_timedwait requires the 3607use 3608of an absolute time. 3609 3610iASL: Added a remark if the Timer() operator is used within a 32-bit 3611table. This operator returns a 64-bit time value that will be truncated 3612within a 32-bit table. 3613 3614iASL Source code restructuring: Cleanup to improve modularity. The 3615following new files have been added: aslhex.c, aslxref.c, aslnamesp.c, 3616aslmethod.c, and aslfileio.c. Associated makefiles and project files have 3617been updated. 3618 3619 3620---------------------------------------- 362114 November 2012. Summary of changes for version 20121114: 3622 36231) ACPICA Kernel-resident Subsystem: 3624 3625Implemented a performance enhancement for ACPI/AML Package objects. This 3626change greatly increases the performance of Package objects within the 3627interpreter. It changes the processing of reference counts for packages 3628by 3629optimizing for the most common case where the package sub-objects are 3630either Integers, Strings, or Buffers. Increases the overall performance 3631of 3632the ASLTS test suite by 1.5X (Increases the Slack Mode performance by 36332X.) 3634Chao Guan. ACPICA BZ 943. 3635 3636Implemented and deployed common macros to extract flag bits from resource 3637descriptors. Improves readability and maintainability of the code. Fixes 3638a 3639problem with the UART serial bus descriptor for the number of data bits 3640flags (was incorrectly 2 bits, should be 3). 3641 3642Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation 3643of the macros and changed the SETx macros to the style of (destination, 3644source). Also added ACPI_CASTx companion macros. Lv Zheng. 3645 3646Example Code and Data Size: These are the sizes for the OS-independent 3647acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3648debug version of the code includes the debug output trace mechanism and 3649has a much larger code and data size. 3650 3651 Previous Release: 3652 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 3653 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3654 Current Release: 3655 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total 3656 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3657 3658 36592) iASL Compiler/Disassembler and Tools: 3660 3661Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change 3662adds the ShareAndWake and ExclusiveAndWake flags which were added to the 3663Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986. 3664 3665Disassembler: Fixed a problem with external declaration generation. Fixes 3666a problem where an incorrect pathname could be generated for an external 3667declaration if the original reference to the object includes leading 3668carats (^). ACPICA BZ 984. 3669 3670Debugger: Completed a major update for the Disassemble<method> command. 3671This command was out-of-date and did not properly disassemble control 3672methods that had any reasonable complexity. This fix brings the command 3673up 3674to the same level as the rest of the disassembler. Adds one new file, 3675dmdeferred.c, which is existing code that is now common with the main 3676disassembler and the debugger disassemble command. ACPICA MZ 978. 3677 3678iASL: Moved the parser entry prototype to avoid a duplicate declaration. 3679Newer versions of Bison emit this prototype, so moved the prototype out 3680of 3681the iASL header to where it is actually used in order to avoid a 3682duplicate 3683declaration. 3684 3685iASL/Tools: Standardized use of the stream I/O functions: 3686 1) Ensure check for I/O error after every fopen/fread/fwrite 3687 2) Ensure proper order of size/count arguments for fread/fwrite 3688 3) Use test of (Actual != Requested) after all fwrite, and most fread 3689 4) Standardize I/O error messages 3690Improves reliability and maintainability of the code. Bob Moore, Lv 3691Zheng. 3692ACPICA BZ 981. 3693 3694Disassembler: Prevent duplicate External() statements. During generation 3695of external statements, detect similar pathnames that are actually 3696duplicates such as these: 3697 External (\ABCD) 3698 External (ABCD) 3699Remove all leading '\' characters from pathnames during the external 3700statement generation so that duplicates will be detected and tossed. 3701ACPICA BZ 985. 3702 3703Tools: Replace low-level I/O with stream I/O functions. Replace 3704open/read/write/close with the stream I/O equivalents 3705fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob 3706Moore. 3707 3708AcpiBin: Fix for the dump-to-hex function. Now correctly output the table 3709name header so that AcpiXtract recognizes the output file/table. 3710 3711iASL: Remove obsolete -2 option flag. Originally intended to force the 3712compiler/disassembler into an ACPI 2.0 mode, this was never implemented 3713and the entire concept is now obsolete. 3714 3715---------------------------------------- 371618 October 2012. Summary of changes for version 20121018: 3717 3718 37191) ACPICA Kernel-resident Subsystem: 3720 3721Updated support for the ACPI 5.0 MPST table. Fixes some problems 3722introduced by late changes to the table as it was added to the ACPI 5.0 3723specification. Includes header, disassembler, and data table compiler 3724support as well as a new version of the MPST template. 3725 3726AcpiGetObjectInfo: Enhanced the device object support to include the ACPI 37275.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID 3728methods: _HID, _CID, and _UID. 3729 3730Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed 3731ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent 3732name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId) 3733names for their various drivers. Affects the AcpiGetObjectInfo external 3734interface, and other internal interfaces as well. 3735 3736Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME. 3737This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME 3738on machines that support non-aligned transfers. Optimizes for this case 3739rather than using a strncpy. With assistance from Zheng Lv. 3740 3741Resource Manager: Small fix for buffer size calculation. Fixed a one byte 3742error in the output buffer calculation. Feng Tang. ACPICA BZ 849. 3743 3744Added a new debug print message for AML mutex objects that are force- 3745released. At control method termination, any currently acquired mutex 3746objects are force-released. Adds a new debug-only message for each one 3747that is released. 3748 3749Audited/updated all ACPICA return macros and the function debug depth 3750counter: 1) Ensure that all functions that use the various TRACE macros 3751also use the appropriate ACPICA return macros. 2) Ensure that all normal 3752return statements surround the return expression (value) with parens to 3753ensure consistency across the ACPICA code base. Guan Chao, Tang Feng, 3754Zheng Lv, Bob Moore. ACPICA Bugzilla 972. 3755 3756Global source code changes/maintenance: All extra lines at the start and 3757end of each source file have been removed for consistency. Also, within 3758comments, all new sentences start with a single space instead of a double 3759space, again for consistency across the code base. 3760 3761Example Code and Data Size: These are the sizes for the OS-independent 3762acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3763debug version of the code includes the debug output trace mechanism and 3764has a much larger code and data size. 3765 3766 Previous Release: 3767 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 3768 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 3769 Current Release: 3770 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total 3771 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total 3772 3773 37742) iASL Compiler/Disassembler and Tools: 3775 3776AcpiExec: Improved the algorithm used for memory leak/corruption 3777detection. Added some intelligence to the code that maintains the global 3778list of allocated memory. The list is now ordered by allocated memory 3779address, significantly improving performance. When running AcpiExec on 3780the ASLTS test suite, speed improvements of 3X to 5X are seen, depending 3781on the platform and/or the environment. Note, this performance 3782enhancement affects the AcpiExec utility only, not the kernel-resident 3783ACPICA code. 3784 3785Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For 3786the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix 3787incorrect table offset reported for invalid opcodes. Report the original 378832-bit value for bad ACPI_NAMEs (as well as the repaired name.) 3789 3790Disassembler: Enhanced the -vt option to emit the binary table data in 3791hex format to assist with debugging. 3792 3793Fixed a potential filename buffer overflow in osunixdir.c. Increased the 3794size of file structure. Colin Ian King. 3795 3796---------------------------------------- 379713 September 2012. Summary of changes for version 20120913: 3798 3799 38001) ACPICA Kernel-resident Subsystem: 3801 3802ACPI 5.0: Added two new notify types for the Hardware Error Notification 3803Structure within the Hardware Error Source Table (HEST) table -- CMCI(5) 3804and 3805MCE(6). 3806 3807Table Manager: Merged/removed duplicate code in the root table resize 3808functions. One function is external, the other is internal. Lv Zheng, 3809ACPICA 3810BZ 846. 3811 3812Makefiles: Completely removed the obsolete "Linux" makefiles under 3813acpica/generate/linux. These makefiles are obsolete and have been 3814replaced 3815by 3816the generic unix makefiles under acpica/generate/unix. 3817 3818Makefiles: Ensure that binary files always copied properly. Minor rule 3819change 3820to ensure that the final binary output files are always copied up to the 3821appropriate binary directory (bin32 or bin64.) 3822 3823Example Code and Data Size: These are the sizes for the OS-independent 3824acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3825debug 3826version of the code includes the debug output trace mechanism and has a 3827much 3828larger code and data size. 3829 3830 Previous Release: 3831 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 3832 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 3833 Current Release: 3834 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total 3835 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total 3836 3837 38382) iASL Compiler/Disassembler and Tools: 3839 3840Disassembler: Fixed a possible fault during the disassembly of resource 3841descriptors when a second parse is required because of the invocation of 3842external control methods within the table. With assistance from 3843adq@lidskialf.net. ACPICA BZ 976. 3844 3845iASL: Fixed a namepath optimization problem. An error can occur if the 3846parse 3847node that contains the namepath to be optimized does not have a parent 3848node 3849that is a named object. This change fixes the problem. 3850 3851iASL: Fixed a regression where the AML file is not deleted on errors. The 3852AML 3853output file should be deleted if there are any errors during the 3854compiler. 3855The 3856only exception is if the -f (force output) option is used. ACPICA BZ 974. 3857 3858iASL: Added a feature to automatically increase internal line buffer 3859sizes. 3860Via realloc(), automatically increase the internal line buffer sizes as 3861necessary to support very long source code lines. The current version of 3862the 3863preprocessor requires a buffer long enough to contain full source code 3864lines. 3865This change increases the line buffer(s) if the input lines go beyond the 3866current buffer size. This eliminates errors that occurred when a source 3867code 3868line was longer than the buffer. 3869 3870iASL: Fixed a problem with constant folding in method declarations. The 3871SyncLevel term is a ByteConstExpr, and incorrect code would be generated 3872if a 3873Type3 opcode was used. 3874 3875Debugger: Improved command help support. For incorrect argument count, 3876display 3877full help for the command. For help command itself, allow an argument to 3878specify a command. 3879 3880Test Suites: Several bug fixes for the ASLTS suite reduces the number of 3881errors during execution of the suite. Guan Chao. 3882 3883---------------------------------------- 388416 August 2012. Summary of changes for version 20120816: 3885 3886 38871) ACPICA Kernel-resident Subsystem: 3888 3889Removed all use of the deprecated _GTS and _BFS predefined methods. The 3890_GTS 3891(Going To Sleep) and _BFS (Back From Sleep) methods are essentially 3892deprecated and will probably be removed from the ACPI specification. 3893Windows 3894does not invoke them, and reportedly never will. The final nail in the 3895coffin 3896is that the ACPI specification states that these methods must be run with 3897interrupts off, which is not going to happen in a kernel interpreter. 3898Note: 3899Linux has removed all use of the methods also. It was discovered that 3900invoking these functions caused failures on some machines, probably 3901because 3902they were never tested since Windows does not call them. Affects two 3903external 3904interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng. 3905ACPICA BZ 969. 3906 3907Implemented support for complex bit-packed buffers returned from the _PLD 3908(Physical Location of Device) predefined method. Adds a new external 3909interface, AcpiDecodePldBuffer that parses the buffer into a more usable 3910C 3911structure. Note: C Bitfields cannot be used for this type of predefined 3912structure since the memory layout of individual bitfields is not defined 3913by 3914the C language. In addition, there are endian concerns where a compiler 3915will 3916change the bitfield ordering based on the machine type. The new ACPICA 3917interface eliminates these issues, and should be called after _PLD is 3918executed. ACPICA BZ 954. 3919 3920Implemented a change to allow a scope change to root (via "Scope (\)") 3921during 3922execution of module-level ASL code (code that is executed at table load 3923time.) Lin Ming. 3924 3925Added the Windows8/Server2012 string for the _OSI method. This change 3926adds 3927a 3928new _OSI string, "Windows 2012" for both Windows 8 and Windows Server 39292012. 3930 3931Added header support for the new ACPI tables DBG2 (Debug Port Table Type 39322) 3933and CSRT (Core System Resource Table). 3934 3935Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined 3936names. This simplifies access to the buffers returned by these predefined 3937names. Adds a new file, include/acbuffer.h. ACPICA BZ 956. 3938 3939GPE support: Removed an extraneous parameter from the various low-level 3940internal GPE functions. Tang Feng. 3941 3942Removed the linux makefiles from the unix packages. The generate/linux 3943makefiles are obsolete and have been removed from the unix tarball 3944release 3945packages. The replacement makefiles are under generate/unix, and there is 3946a 3947top-level makefile under the main acpica directory. ACPICA BZ 967, 912. 3948 3949Updates for Unix makefiles: 39501) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven. 39512) Update linker flags (move to end of command line) for AcpiExec 3952utility. 3953Guan Chao. 3954 3955Split ACPICA initialization functions to new file, utxfinit.c. Split from 3956utxface.c to improve modularity and reduce file size. 3957 3958Example Code and Data Size: These are the sizes for the OS-independent 3959acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 3960debug version of the code includes the debug output trace mechanism and 3961has a 3962much larger code and data size. 3963 3964 Previous Release: 3965 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 3966 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 3967 Current Release: 3968 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total 3969 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total 3970 3971 39722) iASL Compiler/Disassembler and Tools: 3973 3974iASL: Fixed a problem with constant folding for fixed-length constant 3975expressions. The constant-folding code was not being invoked for constant 3976expressions that allow the use of type 3/4/5 opcodes to generate 3977constants 3978for expressions such as ByteConstExpr, WordConstExpr, etc. This could 3979result 3980in the generation of invalid AML bytecode. ACPICA BZ 970. 3981 3982iASL: Fixed a generation issue on newer versions of Bison. Newer versions 3983apparently automatically emit some of the necessary externals. This 3984change 3985handles these versions in order to eliminate generation warnings. 3986 3987Disassembler: Added support to decode the DBG2 and CSRT ACPI tables. 3988 3989Disassembler: Add support to decode _PLD buffers. The decoded buffer 3990appears 3991within comments in the output file. 3992 3993Debugger: Fixed a regression with the "Threads" command where 3994AE_BAD_PARAMETER was always returned. 3995 3996---------------------------------------- 399711 July 2012. Summary of changes for version 20120711: 3998 39991) ACPICA Kernel-resident Subsystem: 4000 4001Fixed a possible fault in the return package object repair code. Fixes a 4002problem that can occur when a lone package object is wrapped with an 4003outer 4004package object in order to force conformance to the ACPI specification. 4005Can 4006affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX, 4007_DLM, 4008_CSD, _PSD, _TSD. 4009 4010Removed code to disable/enable bus master arbitration (ARB_DIS bit in the 4011PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the 4012ARB_DIS bit must be implemented in the host-dependent C3 processor power 4013state 4014support. Note, ARB_DIS is obsolete and only applies to older chipsets, 4015both 4016Intel and other vendors. (for Intel: ICH4-M and earlier) 4017 4018This change removes the code to disable/enable bus master arbitration 4019during 4020suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register 4021causes 4022resume problems on some machines. The change has been in use for over 4023seven 4024years within Linux. 4025 4026Implemented two new external interfaces to support host-directed dynamic 4027ACPI 4028table load and unload. They are intended to simplify the host 4029implementation 4030of hot-plug support: 4031 AcpiLoadTable: Load an SSDT from a buffer into the namespace. 4032 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the 4033table. 4034See the ACPICA reference for additional details. Adds one new file, 4035components/tables/tbxfload.c 4036 4037Implemented and deployed two new interfaces for errors and warnings that 4038are 4039known to be caused by BIOS/firmware issues: 4040 AcpiBiosError: Prints "ACPI Firmware Error" message. 4041 AcpiBiosWarning: Prints "ACPI Firmware Warning" message. 4042Deployed these new interfaces in the ACPICA Table Manager code for ACPI 4043table 4044and FADT errors. Additional deployment to be completed as appropriate in 4045the 4046future. The associated conditional macros are ACPI_BIOS_ERROR and 4047ACPI_BIOS_WARNING. See the ACPICA reference for additional details. 4048ACPICA 4049BZ 4050843. 4051 4052Implicit notify support: ensure that no memory allocation occurs within a 4053critical region. This fix moves a memory allocation outside of the time 4054that a 4055spinlock is held. Fixes issues on systems that do not allow this 4056behavior. 4057Jung-uk Kim. 4058 4059Split exception code utilities and tables into a new file, 4060utilities/utexcep.c 4061 4062Example Code and Data Size: These are the sizes for the OS-independent 4063acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4064debug 4065version of the code includes the debug output trace mechanism and has a 4066much 4067larger code and data size. 4068 4069 Previous Release: 4070 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 4071 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 4072 Current Release: 4073 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total 4074 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total 4075 4076 40772) iASL Compiler/Disassembler and Tools: 4078 4079iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead 4080of 40810. Jung-uk Kim. 4082 4083Debugger: Enhanced the "tables" command to emit additional information 4084about 4085the current set of ACPI tables, including the owner ID and flags decode. 4086 4087Debugger: Reimplemented the "unload" command to use the new 4088AcpiUnloadParentTable external interface. This command was disable 4089previously 4090due to need for an unload interface. 4091 4092AcpiHelp: Added a new option to decode ACPICA exception codes. The -e 4093option 4094will decode 16-bit hex status codes (ACPI_STATUS) to name strings. 4095 4096---------------------------------------- 409720 June 2012. Summary of changes for version 20120620: 4098 4099 41001) ACPICA Kernel-resident Subsystem: 4101 4102Implemented support to expand the "implicit notify" feature to allow 4103multiple 4104devices to be notified by a single GPE. This feature automatically 4105generates a 4106runtime device notification in the absence of a BIOS-provided GPE control 4107method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit 4108notify is 4109provided by ACPICA for Windows compatibility, and is a workaround for 4110BIOS 4111AML 4112code errors. See the description of the AcpiSetupGpeForWake interface in 4113the 4114APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918. 4115 4116Changed some comments and internal function names to simplify and ensure 4117correctness of the Linux code translation. No functional changes. 4118 4119Example Code and Data Size: These are the sizes for the OS-independent 4120acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4121debug 4122version of the code includes the debug output trace mechanism and has a 4123much 4124larger code and data size. 4125 4126 Previous Release: 4127 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 4128 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 4129 Current Release: 4130 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total 4131 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total 4132 4133 41342) iASL Compiler/Disassembler and Tools: 4135 4136Disassembler: Added support to emit short, commented descriptions for the 4137ACPI 4138predefined names in order to improve the readability of the disassembled 4139output. ACPICA BZ 959. Changes include: 4140 1) Emit descriptions for all standard predefined names (_INI, _STA, 4141_PRW, 4142etc.) 4143 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.) 4144 3) Emit descriptions for the resource descriptor names (_MIN, _LEN, 4145etc.) 4146 4147AcpiSrc: Fixed several long-standing Linux code translation issues. 4148Argument 4149descriptions in function headers are now translated properly to lower 4150case 4151and 4152underscores. ACPICA BZ 961. Also fixes translation problems such as 4153these: 4154(old -> new) 4155 i_aSL -> iASL 4156 00-7_f -> 00-7F 4157 16_k -> 16K 4158 local_fADT -> local_FADT 4159 execute_oSI -> execute_OSI 4160 4161iASL: Fixed a problem where null bytes were inadvertently emitted into 4162some 4163listing files. 4164 4165iASL: Added the existing debug options to the standard help screen. There 4166are 4167no longer two different help screens. ACPICA BZ 957. 4168 4169AcpiHelp: Fixed some typos in the various predefined name descriptions. 4170Also 4171expand some of the descriptions where appropriate. 4172 4173iASL: Fixed the -ot option (display compile times/statistics). Was not 4174working 4175properly for standard output; only worked for the debug file case. 4176 4177---------------------------------------- 417818 May 2012. Summary of changes for version 20120518: 4179 4180 41811) ACPICA Core Subsystem: 4182 4183Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is 4184defined 4185to block until asynchronous events such as notifies and GPEs have 4186completed. 4187Within ACPICA, it is only called before a notify or GPE handler is 4188removed/uninstalled. It also may be useful for the host OS within related 4189drivers such as the Embedded Controller driver. See the ACPICA reference 4190for 4191additional information. ACPICA BZ 868. 4192 4193ACPI Tables: Added a new error message for a possible overflow failure 4194during 4195the conversion of FADT 32-bit legacy register addresses to internal 4196common 419764- 4198bit GAS structure representation. The GAS has a one-byte "bit length" 4199field, 4200thus limiting the register length to 255 bits. ACPICA BZ 953. 4201 4202Example Code and Data Size: These are the sizes for the OS-independent 4203acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4204debug 4205version of the code includes the debug output trace mechanism and has a 4206much 4207larger code and data size. 4208 4209 Previous Release: 4210 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4211 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 4212 Current Release: 4213 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total 4214 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total 4215 4216 42172) iASL Compiler/Disassembler and Tools: 4218 4219iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL 4220macro. 4221This keyword was added late in the ACPI 5.0 release cycle and was not 4222implemented until now. 4223 4224Disassembler: Added support for Operation Region externals. Adds missing 4225support for operation regions that are defined in another table, and 4226referenced locally via a Field or BankField ASL operator. Now generates 4227the 4228correct External statement. 4229 4230Disassembler: Several additional fixes for the External() statement 4231generation 4232related to some ASL operators. Also, order the External() statements 4233alphabetically in the disassembler output. Fixes the External() 4234generation 4235for 4236the Create* field, Alias, and Scope operators: 4237 1) Create* buffer field operators - fix type mismatch warning on 4238disassembly 4239 2) Alias - implement missing External support 4240 3) Scope - fix to make sure all necessary externals are emitted. 4241 4242iASL: Improved pathname support. For include files, merge the prefix 4243pathname 4244with the file pathname and eliminate unnecessary components. Convert 4245backslashes in all pathnames to forward slashes, for readability. Include 4246file 4247pathname changes affect both #include and Include() type operators. 4248 4249iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the 4250end 4251of a valid line by inserting a newline and then returning the EOF during 4252the 4253next call to GetNextLine. Prevents the line from being ignored due to EOF 4254condition. 4255 4256iASL: Implemented some changes to enhance the IDE support (-vi option.) 4257Error 4258and Warning messages are now correctly recognized for both the source 4259code 4260browser and the global error and warning counts. 4261 4262---------------------------------------- 426320 April 2012. Summary of changes for version 20120420: 4264 4265 42661) ACPICA Core Subsystem: 4267 4268Implemented support for multiple notify handlers. This change adds 4269support 4270to 4271allow multiple system and device notify handlers on Device, Thermal Zone, 4272and 4273Processor objects. This can simplify the host OS notification 4274implementation. 4275Also re-worked and restructured the entire notify support code to 4276simplify 4277handler installation, handler removal, notify event queuing, and notify 4278dispatch to handler(s). Note: there can still only be two global notify 4279handlers - one for system notifies and one for device notifies. There are 4280no 4281changes to the existing handler install/remove interfaces. Lin Ming, Bob 4282Moore, Rafael Wysocki. 4283 4284Fixed a regression in the package repair code where the object reference 4285count was calculated incorrectly. Regression was introduced in the commit 4286"Support to add Package wrappers". 4287 4288Fixed a couple possible memory leaks in the AML parser, in the error 4289recovery 4290path. Jesper Juhl, Lin Ming. 4291 4292Example Code and Data Size: These are the sizes for the OS-independent 4293acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4294debug version of the code includes the debug output trace mechanism and 4295has a 4296much larger code and data size. 4297 4298 Previous Release: 4299 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4300 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4301 Current Release: 4302 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4303 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total 4304 4305 43062) iASL Compiler/Disassembler and Tools: 4307 4308iASL: Fixed a problem with the resource descriptor support where the 4309length 4310of the StartDependentFn and StartDependentFnNoPrio descriptors were not 4311included in cumulative descriptor offset, resulting in incorrect values 4312for 4313resource tags within resource descriptors appearing after a 4314StartDependent* 4315descriptor. Reported by Petr Vandrovec. ACPICA BZ 949. 4316 4317iASL and Preprocessor: Implemented full support for the #line directive 4318to 4319correctly track original source file line numbers through the .i 4320preprocessor 4321output file - for error and warning messages. 4322 4323iASL: Expand the allowable byte constants for address space IDs. 4324Previously, 4325the allowable range was 0x80-0xFF (user-defined spaces), now the range is 43260x0A-0xFF to allow for custom and new IDs without changing the compiler. 4327 4328iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948. 4329 4330iASL: Add option to completely disable the preprocessor (-Pn). 4331 4332iASL: Now emit all error/warning messages to standard error (stderr) by 4333default (instead of the previous stdout). 4334 4335ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch(). 4336Update 4337for resource descriptor offset fix above. Update/cleanup error output 4338routines. Enable and send iASL errors/warnings to an error logfile 4339(error.txt). Send all other iASL output to a logfile (compiler.txt). 4340Fixed 4341several extraneous "unrecognized operator" messages. 4342 4343---------------------------------------- 434420 March 2012. Summary of changes for version 20120320: 4345 4346 43471) ACPICA Core Subsystem: 4348 4349Enhanced the sleep/wake interfaces to optionally execute the _GTS method 4350(Going To Sleep) and the _BFS method (Back From Sleep). Windows 4351apparently 4352does not execute these methods, and therefore these methods are often 4353untested. It has been seen on some systems where the execution of these 4354methods causes errors and also prevents the machine from entering S5. It 4355is 4356therefore suggested that host operating systems do not execute these 4357methods 4358by default. In the future, perhaps these methods can be optionally 4359executed 4360based on the age of the system and/or what is the newest version of 4361Windows 4362that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState 4363and 4364AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin 4365Ming. 4366 4367Fixed a problem where the length of the local/common FADT was set too 4368early. 4369The local FADT table length cannot be set to the common length until the 4370original length has been examined. There is code that checks the table 4371length 4372and sets various fields appropriately. This can affect older machines 4373with 4374early FADT versions. For example, this can cause inadvertent writes to 4375the 4376CST_CNT register. Julian Anastasov. 4377 4378Fixed a mapping issue related to a physical table override. Use the 4379deferred 4380mapping mechanism for tables loaded via the physical override OSL 4381interface. 4382This allows for early mapping before the virtual memory manager is 4383available. 4384Thomas Renninger, Bob Moore. 4385 4386Enhanced the automatic return-object repair code: Repair a common problem 4387with 4388predefined methods that are defined to return a variable-length Package 4389of 4390sub-objects. If there is only one sub-object, some BIOS ASL code 4391mistakenly 4392simply returns the single object instead of a Package with one sub- 4393object. 4394This new support will repair this error by wrapping a Package object 4395around 4396the original object, creating the correct and expected Package with one 4397sub- 4398object. Names that can be repaired in this manner include: _ALR, _CSD, 4399_HPX, 4400_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ 4401939. 4402 4403Changed the exception code returned for invalid ACPI paths passed as 4404parameters to external interfaces such as AcpiEvaluateObject. Was 4405AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME. 4406 4407Example Code and Data Size: These are the sizes for the OS-independent 4408acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4409debug 4410version of the code includes the debug output trace mechanism and has a 4411much 4412larger code and data size. 4413 4414 Previous Release: 4415 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 4416 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4417 Current Release: 4418 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total 4419 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4420 4421 44222) iASL Compiler/Disassembler and Tools: 4423 4424iASL: Added the infrastructure and initial implementation of a integrated 4425C- 4426like preprocessor. This will simplify BIOS development process by 4427eliminating 4428the need for a separate preprocessing step during builds. On Windows, it 4429also 4430eliminates the need to install a separate C compiler. ACPICA BZ 761. Some 4431features including full #define() macro support are still under 4432development. 4433These preprocessor directives are supported: 4434 #define 4435 #elif 4436 #else 4437 #endif 4438 #error 4439 #if 4440 #ifdef 4441 #ifndef 4442 #include 4443 #pragma message 4444 #undef 4445 #warning 4446In addition, these new command line options are supported: 4447 -D <symbol> Define symbol for preprocessor use 4448 -li Create preprocessed output file (*.i) 4449 -P Preprocess only and create preprocessor output file (*.i) 4450 4451Table Compiler: Fixed a problem where the equals operator within an 4452expression 4453did not work properly. 4454 4455Updated iASL to use the current versions of Bison/Flex. Updated the 4456Windows 4457project file to invoke these tools from the standard location. ACPICA BZ 4458904. 4459Versions supported: 4460 Flex for Windows: V2.5.4 4461 Bison for Windows: V2.4.1 4462 4463---------------------------------------- 446415 February 2012. Summary of changes for version 20120215: 4465 4466 44671) ACPICA Core Subsystem: 4468 4469There have been some major changes to the sleep/wake support code, as 4470described below (a - e). 4471 4472a) The AcpiLeaveSleepState has been split into two interfaces, similar to 4473AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is 4474AcpiLeaveSleepStatePrep. This allows the host to perform actions between 4475the 4476time the _BFS method is called and the _WAK method is called. NOTE: all 4477hosts 4478must update their wake/resume code or else sleep/wake will not work 4479properly. 4480Rafael Wysocki. 4481 4482b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the 4483_WAK 4484method. Some machines require that the GPEs are enabled before the _WAK 4485method 4486is executed. Thomas Renninger. 4487 4488c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status) 4489bit. 4490Some BIOS code assumes that WAK_STS will be cleared on resume and use it 4491to 4492determine whether the system is rebooting or resuming. Matthew Garrett. 4493 4494d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From 4495Sleep) to 4496match the ACPI specification requirement. Rafael Wysocki. 4497 4498e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl 4499registers within the V5 FADT. This support adds two new files: 4500hardware/hwesleep.c implements the support for the new registers. Moved 4501all 4502sleep/wake external interfaces to hardware/hwxfsleep.c. 4503 4504 4505Added a new OSL interface for ACPI table overrides, 4506AcpiOsPhysicalTableOverride. This interface allows the host to override a 4507table via a physical address, instead of the logical address required by 4508AcpiOsTableOverride. This simplifies the host implementation. Initial 4509implementation by Thomas Renninger. The ACPICA implementation creates a 4510single 4511shared function for table overrides that attempts both a logical and a 4512physical override. 4513 4514Expanded the OSL memory read/write interfaces to 64-bit data 4515(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory 4516transfer support for GAS register structures passed to AcpiRead and 4517AcpiWrite. 4518 4519Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a 4520custom 4521build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC) 4522model. 4523See the ACPICA reference for details. ACPICA BZ 942. This option removes 4524about 452510% of the code and 5% of the static data, and the following hardware 4526ACPI 4527features become unavailable: 4528 PM Event and Control registers 4529 SCI interrupt (and handler) 4530 Fixed Events 4531 General Purpose Events (GPEs) 4532 Global Lock 4533 ACPI PM timer 4534 FACS table (Waking vectors and Global Lock) 4535 4536Updated the unix tarball directory structure to match the ACPICA git 4537source 4538tree. This ensures that the generic unix makefiles work properly (in 4539generate/unix). Also updated the Linux makefiles to match. ACPICA BZ 4540867. 4541 4542Updated the return value of the _REV predefined method to integer value 5 4543to 4544reflect ACPI 5.0 support. 4545 4546Moved the external ACPI PM timer interface prototypes to the public 4547acpixf.h 4548file where they belong. 4549 4550Example Code and Data Size: These are the sizes for the OS-independent 4551acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4552debug 4553version of the code includes the debug output trace mechanism and has a 4554much 4555larger code and data size. 4556 4557 Previous Release: 4558 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 4559 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 4560 Current Release: 4561 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total 4562 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total 4563 4564 45652) iASL Compiler/Disassembler and Tools: 4566 4567Disassembler: Fixed a problem with the new ACPI 5.0 serial resource 4568descriptors (I2C, SPI, UART) where the resource produce/consumer bit was 4569incorrectly displayed. 4570 4571AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI 4572specification. 4573 4574---------------------------------------- 457511 January 2012. Summary of changes for version 20120111: 4576 4577 45781) ACPICA Core Subsystem: 4579 4580Implemented a new mechanism to allow host device drivers to check for 4581address 4582range conflicts with ACPI Operation Regions. Both SystemMemory and 4583SystemIO 4584address spaces are supported. A new external interface, 4585AcpiCheckAddressRange, 4586allows drivers to check an address range against the ACPI namespace. See 4587the 4588ACPICA reference for additional details. Adds one new file, 4589utilities/utaddress.c. Lin Ming, Bob Moore. 4590 4591Fixed several issues with the ACPI 5.0 FADT support: Add the sleep 4592Control 4593and 4594Status registers, update the ACPI 5.0 flags, and update internal data 4595structures to handle an FADT larger than 256 bytes. The size of the ACPI 45965.0 4597FADT is 268 bytes. 4598 4599Updated all ACPICA copyrights and signons to 2012. Added the 2012 4600copyright to 4601all module headers and signons, including the standard Linux header. This 4602affects virtually every file in the ACPICA core subsystem, iASL compiler, 4603and 4604all ACPICA utilities. 4605 4606Example Code and Data Size: These are the sizes for the OS-independent 4607acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 4608debug 4609version of the code includes the debug output trace mechanism and has a 4610much 4611larger code and data size. 4612 4613 Previous Release: 4614 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 4615 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 4616 Current Release: 4617 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total 4618 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total 4619 4620 46212) iASL Compiler/Disassembler and Tools: 4622 4623Disassembler: fixed a problem with the automatic resource tag generation 4624support. Fixes a problem where the resource tags are inadvertently not 4625constructed if the table being disassembled contains external references 4626to 4627control methods. Moved the actual construction of the tags to after the 4628final 4629namespace is constructed (after 2nd parse is invoked due to external 4630control 4631method references.) ACPICA BZ 941. 4632 4633Table Compiler: Make all "generic" operators caseless. These are the 4634operators 4635like UINT8, String, etc. Making these caseless improves ease-of-use. 4636ACPICA BZ 4637934. 4638 4639---------------------------------------- 464023 November 2011. Summary of changes for version 20111123: 4641 46420) ACPI 5.0 Support: 4643 4644This release contains full support for the ACPI 5.0 specification, as 4645summarized below. 4646 4647Reduced Hardware Support: 4648------------------------- 4649 4650This support allows for ACPI systems without the usual ACPI hardware. 4651This 4652support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA 4653will 4654not attempt to initialize or use any of the usual ACPI hardware. Note, 4655when 4656this flag is set, all of the following ACPI hardware is assumed to be not 4657present and is not initialized or accessed: 4658 4659 General Purpose Events (GPEs) 4660 Fixed Events (PM1a/PM1b and PM Control) 4661 Power Management Timer and Console Buttons (power/sleep) 4662 Real-time Clock Alarm 4663 Global Lock 4664 System Control Interrupt (SCI) 4665 The FACS is assumed to be non-existent 4666 4667ACPI Tables: 4668------------ 4669 4670All new tables and updates to existing tables are fully supported in the 4671ACPICA headers (for use by device drivers), the disassembler, and the 4672iASL 4673Data Table Compiler. ACPI 5.0 defines these new tables: 4674 4675 BGRT /* Boot Graphics Resource Table */ 4676 DRTM /* Dynamic Root of Trust for Measurement table */ 4677 FPDT /* Firmware Performance Data Table */ 4678 GTDT /* Generic Timer Description Table */ 4679 MPST /* Memory Power State Table */ 4680 PCCT /* Platform Communications Channel Table */ 4681 PMTT /* Platform Memory Topology Table */ 4682 RASF /* RAS Feature table */ 4683 4684Operation Regions/SpaceIDs: 4685--------------------------- 4686 4687All new operation regions are fully supported by the iASL compiler, the 4688disassembler, and the ACPICA runtime code (for dispatch to region 4689handlers.) 4690The new operation region Space IDs are: 4691 4692 GeneralPurposeIo 4693 GenericSerialBus 4694 4695Resource Descriptors: 4696--------------------- 4697 4698All new ASL resource descriptors are fully supported by the iASL 4699compiler, 4700the 4701ASL/AML disassembler, and the ACPICA runtime Resource Manager code 4702(including 4703all new predefined resource tags). New descriptors are: 4704 4705 FixedDma 4706 GpioIo 4707 GpioInt 4708 I2cSerialBus 4709 SpiSerialBus 4710 UartSerialBus 4711 4712ASL/AML Operators, New and Modified: 4713------------------------------------ 4714 4715One new operator is added, the Connection operator, which is used to 4716associate 4717a GeneralPurposeIo or GenericSerialBus resource descriptor with 4718individual 4719field objects within an operation region. Several new protocols are 4720associated 4721with the AccessAs operator. All are fully supported by the iASL compiler, 4722disassembler, and runtime ACPICA AML interpreter: 4723 4724 Connection // Declare Field Connection 4725attributes 4726 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol 4727 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes 4728Protocol 4729 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol 4730 RawDataBuffer // Data type for Vendor Data 4731fields 4732 4733Predefined ASL/AML Objects: 4734--------------------------- 4735 4736All new predefined objects/control-methods are supported by the iASL 4737compiler 4738and the ACPICA runtime validation/repair (arguments and return values.) 4739New 4740predefined names include the following: 4741 4742Standard Predefined Names (Objects or Control Methods): 4743 _AEI, _CLS, _CPC, _CWS, _DEP, 4744 _DLM, _EVT, _GCP, _CRT, _GWS, 4745 _HRV, _PRE, _PSE, _SRT, _SUB. 4746 4747Resource Tags (Names used to access individual fields within resource 4748descriptors): 4749 _DBT, _DPL, _DRS, _END, _FLC, 4750 _IOR, _LIN, _MOD, _PAR, _PHA, 4751 _PIN, _PPI, _POL, _RXL, _SLV, 4752 _SPE, _STB, _TXL, _VEN. 4753 4754ACPICA External Interfaces: 4755--------------------------- 4756 4757Several new interfaces have been defined for use by ACPI-related device 4758drivers and other host OS services: 4759 4760AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS 4761to 4762acquire and release AML mutexes that are defined in the DSDT/SSDT tables 4763provided by the BIOS. They are intended to be used in conjunction with 4764the 4765ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level 4766mutual exclusion with the AML code/interpreter. 4767 4768AcpiGetEventResources: Returns the (formatted) resource descriptors as 4769defined 4770by the ACPI 5.0 _AEI object (ACPI Event Information). This object 4771provides 4772resource descriptors associated with hardware-reduced platform events, 4773similar 4774to the AcpiGetCurrentResources interface. 4775 4776Operation Region Handlers: For General Purpose IO and Generic Serial Bus 4777operation regions, information about the Connection() object and any 4778optional 4779length information is passed to the region handler within the Context 4780parameter. 4781 4782AcpiBufferToResource: This interface converts a raw AML buffer containing 4783a 4784resource template or resource descriptor to the ACPI_RESOURCE internal 4785format 4786suitable for use by device drivers. Can be used by an operation region 4787handler 4788to convert the Connection() buffer object into a ACPI_RESOURCE. 4789 4790Miscellaneous/Tools/TestSuites: 4791------------------------------- 4792 4793Support for extended _HID names (Four alpha characters instead of three). 4794Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities. 4795Support for ACPI 5.0 features in the ASLTS test suite. 4796Fully updated documentation (ACPICA and iASL reference documents.) 4797 4798ACPI Table Definition Language: 4799------------------------------- 4800 4801Support for this language was implemented and released as a subsystem of 4802the 4803iASL compiler in 2010. (See the iASL compiler User Guide.) 4804 4805 4806Non-ACPI 5.0 changes for this release: 4807-------------------------------------- 4808 48091) ACPICA Core Subsystem: 4810 4811Fix a problem with operation region declarations where a failure can 4812occur 4813if 4814the region name and an argument that evaluates to an object (such as the 4815region address) are in different namespace scopes. Lin Ming, ACPICA BZ 4816937. 4817 4818Do not abort an ACPI table load if an invalid space ID is found within. 4819This 4820will be caught later if the offending method is executed. ACPICA BZ 925. 4821 4822Fixed an issue with the FFixedHW space ID where the ID was not always 4823recognized properly (Both ACPICA and iASL). ACPICA BZ 926. 4824 4825Fixed a problem with the 32-bit generation of the unix-specific OSL 4826(osunixxf.c). Lin Ming, ACPICA BZ 936. 4827 4828Several changes made to enable generation with the GCC 4.6 compiler. 4829ACPICA BZ 4830935. 4831 4832New error messages: Unsupported I/O requests (not 8/16/32 bit), and 4833Index/Bank 4834field registers out-of-range. 4835 48362) iASL Compiler/Disassembler and Tools: 4837 4838iASL: Implemented the __PATH__ operator, which returns the full pathname 4839of 4840the current source file. 4841 4842AcpiHelp: Automatically display expanded keyword information for all ASL 4843operators. 4844 4845Debugger: Add "Template" command to disassemble/dump resource template 4846buffers. 4847 4848Added a new master script to generate and execute the ASLTS test suite. 4849Automatically handles 32- and 64-bit generation. See tests/aslts.sh 4850 4851iASL: Fix problem with listing generation during processing of the 4852Switch() 4853operator where AML listing was disabled until the entire Switch block was 4854completed. 4855 4856iASL: Improve support for semicolon statement terminators. Fix "invalid 4857character" message for some cases when the semicolon is used. Semicolons 4858are 4859now allowed after every <Term> grammar element. ACPICA BZ 927. 4860 4861iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ 4862923. 4863 4864Disassembler: Fix problem with disassembly of the DataTableRegion 4865operator 4866where an inadvertent "Unhandled deferred opcode" message could be 4867generated. 4868 48693) Example Code and Data Size 4870 4871These are the sizes for the OS-independent acpica.lib produced by the 4872Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 4873includes the debug output trace mechanism and has a much larger code and 4874data 4875size. 4876 4877 Previous Release: 4878 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4879 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4880 Current Release: 4881 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total 4882 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total 4883 4884---------------------------------------- 488522 September 2011. Summary of changes for version 20110922: 4886 48870) ACPI 5.0 News: 4888 4889Support for ACPI 5.0 in ACPICA has been underway for several months and 4890will 4891be released at the same time that ACPI 5.0 is officially released. 4892 4893The ACPI 5.0 specification is on track for release in the next few 4894months. 4895 48961) ACPICA Core Subsystem: 4897 4898Fixed a problem where the maximum sleep time for the Sleep() operator was 4899intended to be limited to two seconds, but was inadvertently limited to 490020 4901seconds instead. 4902 4903Linux and Unix makefiles: Added header file dependencies to ensure 4904correct 4905generation of ACPICA core code and utilities. Also simplified the 4906makefiles 4907considerably through the use of the vpath variable to specify search 4908paths. 4909ACPICA BZ 924. 4910 49112) iASL Compiler/Disassembler and Tools: 4912 4913iASL: Implemented support to check the access length for all fields 4914created to 4915access named Resource Descriptor fields. For example, if a resource field 4916is 4917defined to be two bits, a warning is issued if a CreateXxxxField() is 4918used 4919with an incorrect bit length. This is implemented for all current 4920resource 4921descriptor names. ACPICA BZ 930. 4922 4923Disassembler: Fixed a byte ordering problem with the output of 24-bit and 492456- 4925bit integers. 4926 4927iASL: Fixed a couple of issues associated with variable-length package 4928objects. 1) properly handle constants like One, Ones, Zero -- do not make 4929a 4930VAR_PACKAGE when these are used as a package length. 2) Allow the 4931VAR_PACKAGE 4932opcode (in addition to PACKAGE) when validating object types for 4933predefined 4934names. 4935 4936iASL: Emit statistics for all output files (instead of just the ASL input 4937and 4938AML output). Includes listings, hex files, etc. 4939 4940iASL: Added -G option to the table compiler to allow the compilation of 4941custom 4942ACPI tables. The only part of a table that is required is the standard 494336- 4944byte 4945ACPI header. 4946 4947AcpiXtract: Ported to the standard ACPICA environment (with ACPICA 4948headers), 4949which also adds correct 64-bit support. Also, now all output filenames 4950are 4951completely lower case. 4952 4953AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when 4954loading table files. A warning is issued for any such tables. The only 4955exception is an FADT. This also fixes a possible fault when attempting to 4956load 4957non-AML tables. ACPICA BZ 932. 4958 4959AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where 4960a 4961missing table terminator could cause a fault when using the -p option. 4962 4963AcpiSrc: Fixed a possible divide-by-zero fault when generating file 4964statistics. 4965 49663) Example Code and Data Size 4967 4968These are the sizes for the OS-independent acpica.lib produced by the 4969Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code 4970includes the debug output trace mechanism and has a much larger code and 4971data 4972size. 4973 4974 Previous Release (VC 9.0): 4975 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4976 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4977 Current Release (VC 9.0): 4978 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 4979 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 4980 4981 4982---------------------------------------- 498323 June 2011. Summary of changes for version 20110623: 4984 49851) ACPI CA Core Subsystem: 4986 4987Updated the predefined name repair mechanism to not attempt repair of a 4988_TSS 4989return object if a _PSS object is present. We can only sort the _TSS 4990return 4991package if there is no _PSS within the same scope. This is because if 4992_PSS 4993is 4994present, the ACPI specification dictates that the _TSS Power Dissipation 4995field 4996is to be ignored, and therefore some BIOSs leave garbage values in the 4997_TSS 4998Power field(s). In this case, it is best to just return the _TSS package 4999as- 5000is. Reported by, and fixed with assistance from Fenghua Yu. 5001 5002Added an option to globally disable the control method return value 5003validation 5004and repair. This runtime option can be used to disable return value 5005repair 5006if 5007this is causing a problem on a particular machine. Also added an option 5008to 5009AcpiExec (-dr) to set this disable flag. 5010 5011All makefiles and project files: Major changes to improve generation of 5012ACPICA 5013tools. ACPICA BZ 912: 5014 Reduce default optimization levels to improve compatibility 5015 For Linux, add strict-aliasing=0 for gcc 4 5016 Cleanup and simplify use of command line defines 5017 Cleanup multithread library support 5018 Improve usage messages 5019 5020Linux-specific header: update handling of THREAD_ID and pthread. For the 502132- 5022bit case, improve casting to eliminate possible warnings, especially with 5023the 5024acpica tools. 5025 5026Example Code and Data Size: These are the sizes for the OS-independent 5027acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5028debug 5029version of the code includes the debug output trace mechanism and has a 5030much 5031larger code and data size. 5032 5033 Previous Release (VC 9.0): 5034 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 5035 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5036 Current Release (VC 9.0): 5037 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total 5038 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5039 50402) iASL Compiler/Disassembler and Tools: 5041 5042With this release, a new utility named "acpihelp" has been added to the 5043ACPICA 5044package. This utility summarizes the ACPI specification chapters for the 5045ASL 5046and AML languages. It generates under Linux/Unix as well as Windows, and 5047provides the following functionality: 5048 Find/display ASL operator(s) -- with description and syntax. 5049 Find/display ASL keyword(s) -- with exact spelling and descriptions. 5050 Find/display ACPI predefined name(s) -- with description, number 5051 of arguments, and the return value data type. 5052 Find/display AML opcode name(s) -- with opcode, arguments, and 5053grammar. 5054 Decode/display AML opcode -- with opcode name, arguments, and 5055grammar. 5056 5057Service Layers: Make multi-thread support configurable. Conditionally 5058compile 5059the multi-thread support so that threading libraries will not be linked 5060if 5061not 5062necessary. The only tool that requires multi-thread support is AcpiExec. 5063 5064iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions 5065of 5066Bison appear to want the interface to yyerror to be a const char * (or at 5067least this is a problem when generating iASL on some systems.) ACPICA BZ 5068923 5069Pierre Lejeune. 5070 5071Tools: Fix for systems where O_BINARY is not defined. Only used for 5072Windows 5073versions of the tools. 5074 5075---------------------------------------- 507627 May 2011. Summary of changes for version 20110527: 5077 50781) ACPI CA Core Subsystem: 5079 5080ASL Load() operator: Reinstate most restrictions on the incoming ACPI 5081table 5082signature. Now, only allow SSDT, OEMx, and a null signature. History: 5083 1) Originally, we checked the table signature for "SSDT" or "PSDT". 5084 (PSDT is now obsolete.) 5085 2) We added support for OEMx tables, signature "OEM" plus a fourth 5086 "don't care" character. 5087 3) Valid tables were encountered with a null signature, so we just 5088 gave up on validating the signature, (05/2008). 5089 4) We encountered non-AML tables such as the MADT, which caused 5090 interpreter errors and kernel faults. So now, we once again allow 5091 only SSDT, OEMx, and now, also a null signature. (05/2011). 5092 5093Added the missing _TDL predefined name to the global name list in order 5094to 5095enable validation. Affects both the core ACPICA code and the iASL 5096compiler. 5097 5098Example Code and Data Size: These are the sizes for the OS-independent 5099acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5100debug 5101version of the code includes the debug output trace mechanism and has a 5102much 5103larger code and data size. 5104 5105 Previous Release (VC 9.0): 5106 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 5107 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 5108 Current Release (VC 9.0): 5109 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total 5110 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total 5111 51122) iASL Compiler/Disassembler and Tools: 5113 5114Debugger/AcpiExec: Implemented support for "complex" method arguments on 5115the 5116debugger command line. This adds support beyond simple integers -- 5117including 5118Strings, Buffers, and Packages. Includes support for nested packages. 5119Increased the default command line buffer size to accommodate these 5120arguments. 5121See the ACPICA reference for details and syntax. ACPICA BZ 917. 5122 5123Debugger/AcpiExec: Implemented support for "default" method arguments for 5124the 5125Execute/Debug command. Now, the debugger will always invoke a control 5126method 5127with the required number of arguments -- even if the command line 5128specifies 5129none or insufficient arguments. It uses default integer values for any 5130missing 5131arguments. Also fixes a bug where only six method arguments maximum were 5132supported instead of the required seven. 5133 5134Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine 5135and 5136also return status in order to prevent buffer overruns. See the ACPICA 5137reference for details and syntax. ACPICA BZ 921 5138 5139iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and 5140makefiles to simplify support for the two different but similar parser 5141generators, bison and yacc. 5142 5143Updated the generic unix makefile for gcc 4. The default gcc version is 5144now 5145expected to be 4 or greater, since options specific to gcc 4 are used. 5146 5147---------------------------------------- 514813 April 2011. Summary of changes for version 20110413: 5149 51501) ACPI CA Core Subsystem: 5151 5152Implemented support to execute a so-called "orphan" _REG method under the 5153EC 5154device. This change will force the execution of a _REG method underneath 5155the 5156EC 5157device even if there is no corresponding operation region of type 5158EmbeddedControl. Fixes a problem seen on some machines and apparently is 5159compatible with Windows behavior. ACPICA BZ 875. 5160 5161Added more predefined methods that are eligible for automatic NULL 5162package 5163element removal. This change adds another group of predefined names to 5164the 5165list 5166of names that can be repaired by having NULL package elements dynamically 5167removed. This group are those methods that return a single variable- 5168length 5169package containing simple data types such as integers, buffers, strings. 5170This 5171includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx, 5172_PSL, 5173_Sx, 5174and _TZD. ACPICA BZ 914. 5175 5176Split and segregated all internal global lock functions to a new file, 5177evglock.c. 5178 5179Updated internal address SpaceID for DataTable regions. Moved this 5180internal 5181space 5182id in preparation for ACPI 5.0 changes that will include some new space 5183IDs. 5184This 5185change should not affect user/host code. 5186 5187Example Code and Data Size: These are the sizes for the OS-independent 5188acpica.lib 5189produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 5190version of 5191the code includes the debug output trace mechanism and has a much larger 5192code 5193and 5194data size. 5195 5196 Previous Release (VC 9.0): 5197 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 5198 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 5199 Current Release (VC 9.0): 5200 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total 5201 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total 5202 52032) iASL Compiler/Disassembler and Tools: 5204 5205iASL/DTC: Major update for new grammar features. Allow generic data types 5206in 5207custom ACPI tables. Field names are now optional. Any line can be split 5208to 5209multiple lines using the continuation char (\). Large buffers now use 5210line- 5211continuation character(s) and no colon on the continuation lines. See the 5212grammar 5213update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob 5214Moore. 5215 5216iASL: Mark ASL "Return()" and the simple "Return" as "Null" return 5217statements. 5218Since the parser stuffs a "zero" as the return value for these statements 5219(due 5220to 5221the underlying AML grammar), they were seen as "return with value" by the 5222iASL 5223semantic checking. They are now seen correctly as "null" return 5224statements. 5225 5226iASL: Check if a_REG declaration has a corresponding Operation Region. 5227Adds a 5228check for each _REG to ensure that there is in fact a corresponding 5229operation 5230region declaration in the same scope. If not, the _REG method is not very 5231useful 5232since it probably won't be executed. ACPICA BZ 915. 5233 5234iASL/DTC: Finish support for expression evaluation. Added a new 5235expression 5236parser 5237that implements c-style operator precedence and parenthesization. ACPICA 5238bugzilla 5239908. 5240 5241Disassembler/DTC: Remove support for () and <> style comments in data 5242tables. 5243Now 5244that DTC has full expression support, we don't want to have comment 5245strings 5246that 5247start with a parentheses or a less-than symbol. Now, only the standard /* 5248and 5249// 5250comments are supported, as well as the bracket [] comments. 5251 5252AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have 5253"unusual" 5254headers in the acpidump file. Update the header validation to support 5255these 5256tables. Problem introduced in previous AcpiXtract version in the change 5257to 5258support "wrong checksum" error messages emitted by acpidump utility. 5259 5260iASL: Add a * option to generate all template files (as a synonym for 5261ALL) 5262as 5263in 5264"iasl -T *" or "iasl -T ALL". 5265 5266iASL/DTC: Do not abort compiler on fatal errors. We do not want to 5267completely 5268abort the compiler on "fatal" errors, simply should abort the current 5269compile. 5270This allows multiple compiles with a single (possibly wildcard) compiler 5271invocation. 5272 5273---------------------------------------- 527416 March 2011. Summary of changes for version 20110316: 5275 52761) ACPI CA Core Subsystem: 5277 5278Fixed a problem caused by a _PRW method appearing at the namespace root 5279scope 5280during the setup of wake GPEs. A fault could occur if a _PRW directly 5281under 5282the 5283root object was passed to the AcpiSetupGpeForWake interface. Lin Ming. 5284 5285Implemented support for "spurious" Global Lock interrupts. On some 5286systems, a 5287global lock interrupt can occur without the pending flag being set. Upon 5288a 5289GL 5290interrupt, we now ensure that a thread is actually waiting for the lock 5291before 5292signaling GL availability. Rafael Wysocki, Bob Moore. 5293 5294Example Code and Data Size: These are the sizes for the OS-independent 5295acpica.lib 5296produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug 5297version of 5298the code includes the debug output trace mechanism and has a much larger 5299code 5300and 5301data size. 5302 5303 Previous Release (VC 9.0): 5304 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5305 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5306 Current Release (VC 9.0): 5307 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total 5308 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total 5309 53102) iASL Compiler/Disassembler and Tools: 5311 5312Implemented full support for the "SLIC" ACPI table. Includes support in 5313the 5314header files, disassembler, table compiler, and template generator. Bob 5315Moore, 5316Lin Ming. 5317 5318AcpiXtract: Correctly handle embedded comments and messages from 5319AcpiDump. 5320Apparently some or all versions of acpidump will occasionally emit a 5321comment 5322like 5323"Wrong checksum", etc., into the dump file. This was causing problems for 5324AcpiXtract. ACPICA BZ 905. 5325 5326iASL: Fix the Linux makefile by removing an inadvertent double file 5327inclusion. 5328ACPICA BZ 913. 5329 5330AcpiExec: Update installation of operation region handlers. Install one 5331handler 5332for a user-defined address space. This is used by the ASL test suite 5333(ASLTS). 5334 5335---------------------------------------- 533611 February 2011. Summary of changes for version 20110211: 5337 53381) ACPI CA Core Subsystem: 5339 5340Added a mechanism to defer _REG methods for some early-installed 5341handlers. 5342Most user handlers should be installed before call to 5343AcpiEnableSubsystem. 5344However, Event handlers and region handlers should be installed after 5345AcpiInitializeObjects. Override handlers for the "default" regions should 5346be 5347installed early, however. This change executes all _REG methods for the 5348default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any 5349chicken/egg issues between them. ACPICA BZ 848. 5350 5351Implemented an optimization for GPE detection. This optimization will 5352simply 5353ignore GPE registers that contain no enabled GPEs -- there is no need to 5354read the register since this information is available internally. This 5355becomes more important on machines with a large GPE space. ACPICA 5356bugzilla 5357884. Lin Ming. Suggestion from Joe Liu. 5358 5359Removed all use of the highly unreliable FADT revision field. The 5360revision 5361number in the FADT has been found to be completely unreliable and cannot 5362be 5363trusted. Only the actual table length can be used to infer the version. 5364This 5365change updates the ACPICA core and the disassembler so that both no 5366longer 5367even look at the FADT version and instead depend solely upon the FADT 5368length. 5369 5370Fix an unresolved name issue for the no-debug and no-error-message source 5371generation cases. The _AcpiModuleName was left undefined in these cases, 5372but 5373it is actually needed as a parameter to some interfaces. Define 5374_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888. 5375 5376Split several large files (makefiles and project files updated) 5377 utglobal.c -> utdecode.c 5378 dbcomds.c -> dbmethod.c dbnames.c 5379 dsopcode.c -> dsargs.c dscontrol.c 5380 dsload.c -> dsload2.c 5381 aslanalyze.c -> aslbtypes.c aslwalks.c 5382 5383Example Code and Data Size: These are the sizes for the OS-independent 5384acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5385debug version of the code includes the debug output trace mechanism and 5386has 5387a much larger code and data size. 5388 5389 Previous Release (VC 9.0): 5390 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5391 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5392 Current Release (VC 9.0): 5393 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5394 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5395 53962) iASL Compiler/Disassembler and Tools: 5397 5398iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__. 5399These are useful C-style macros with the standard definitions. ACPICA 5400bugzilla 898. 5401 5402iASL/DTC: Added support for integer expressions and labels. Support for 5403full 5404expressions for all integer fields in all ACPI tables. Support for labels 5405in 5406"generic" portions of tables such as UEFI. See the iASL reference manual. 5407 5408Debugger: Added a command to display the status of global handlers. The 5409"handlers" command will display op region, fixed event, and miscellaneous 5410global handlers. installation status -- and for op regions, whether 5411default 5412or user-installed handler will be used. 5413 5414iASL: Warn if reserved method incorrectly returns a value. Many 5415predefined 5416names are defined such that they do not return a value. If implemented as 5417a 5418method, issue a warning if such a name explicitly returns a value. ACPICA 5419Bugzilla 855. 5420 5421iASL: Added detection of GPE method name conflicts. Detects a conflict 5422where 5423there are two GPE methods of the form _Lxy and _Exy in the same scope. 5424(For 5425example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848. 5426 5427iASL/DTC: Fixed a couple input scanner issues with comments and line 5428numbers. Comment remover could get confused and miss a comment ending. 5429Fixed 5430a problem with line counter maintenance. 5431 5432iASL/DTC: Reduced the severity of some errors from fatal to error. There 5433is 5434no need to abort on simple errors within a field definition. 5435 5436Debugger: Simplified the output of the help command. All help output now 5437in 5438a single screen, instead of help subcommands. ACPICA Bugzilla 897. 5439 5440---------------------------------------- 544112 January 2011. Summary of changes for version 20110112: 5442 54431) ACPI CA Core Subsystem: 5444 5445Fixed a race condition between method execution and namespace walks that 5446can 5447possibly cause a fault. The problem was apparently introduced in version 544820100528 as a result of a performance optimization that reduces the 5449number 5450of 5451namespace walks upon method exit by using the delete_namespace_subtree 5452function instead of the delete_namespace_by_owner function used 5453previously. 5454Bug is a missing namespace lock in the delete_namespace_subtree function. 5455dana.myers@oracle.com 5456 5457Fixed several issues and a possible fault with the automatic "serialized" 5458method support. History: This support changes a method to "serialized" on 5459the 5460fly if the method generates an AE_ALREADY_EXISTS error, indicating the 5461possibility that it cannot handle reentrancy. This fix repairs a couple 5462of 5463issues seen in the field, especially on machines with many cores: 5464 5465 1) Delete method children only upon the exit of the last thread, 5466 so as to not delete objects out from under other running threads 5467 (and possibly causing a fault.) 5468 2) Set the "serialized" bit for the method only upon the exit of the 5469 Last thread, so as to not cause deadlock when running threads 5470 attempt to exit. 5471 3) Cleanup the use of the AML "MethodFlags" and internal method flags 5472 so that there is no longer any confusion between the two. 5473 5474 Lin Ming, Bob Moore. Reported by dana.myers@oracle.com. 5475 5476Debugger: Now lock the namespace for duration of a namespace dump. 5477Prevents 5478issues if the namespace is changing dynamically underneath the debugger. 5479Especially affects temporary namespace nodes, since the debugger displays 5480these also. 5481 5482Updated the ordering of include files. The ACPICA headers should appear 5483before any compiler-specific headers (stdio.h, etc.) so that acenv.h can 5484set 5485any necessary compiler-specific defines, etc. Affects the ACPI-related 5486tools 5487and utilities. 5488 5489Updated all ACPICA copyrights and signons to 2011. Added the 2011 5490copyright 5491to all module headers and signons, including the Linux header. This 5492affects 5493virtually every file in the ACPICA core subsystem, iASL compiler, and all 5494utilities. 5495 5496Added project files for MS Visual Studio 2008 (VC++ 9.0). The original 5497project files for VC++ 6.0 are now obsolete. New project files can be 5498found 5499under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for 5500details. 5501 5502Example Code and Data Size: These are the sizes for the OS-independent 5503acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The 5504debug version of the code includes the debug output trace mechanism and 5505has a 5506much larger code and data size. 5507 5508 Previous Release (VC 6.0): 5509 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 5510 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 5511 Current Release (VC 9.0): 5512 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total 5513 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total 5514 55152) iASL Compiler/Disassembler and Tools: 5516 5517iASL: Added generic data types to the Data Table compiler. Add "generic" 5518data 5519types such as UINT32, String, Unicode, etc., to simplify the generation 5520of 5521platform-defined tables such as UEFI. Lin Ming. 5522 5523iASL: Added listing support for the Data Table Compiler. Adds listing 5524support 5525(-l) to display actual binary output for each line of input code. 5526 5527---------------------------------------- 552809 December 2010. Summary of changes for version 20101209: 5529 55301) ACPI CA Core Subsystem: 5531 5532Completed the major overhaul of the GPE support code that was begun in 5533July 55342010. Major features include: removal of _PRW execution in ACPICA (host 5535executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing, 5536changes to existing interfaces, simplification of GPE handler operation, 5537and 5538a handful of new interfaces: 5539 5540 AcpiUpdateAllGpes 5541 AcpiFinishGpe 5542 AcpiSetupGpeForWake 5543 AcpiSetGpeWakeMask 5544 One new file, evxfgpe.c to consolidate all external GPE interfaces. 5545 5546See the ACPICA Programmer Reference for full details and programming 5547information. See the new section 4.4 "General Purpose Event (GPE) 5548Support" 5549for a full overview, and section 8.7 "ACPI General Purpose Event 5550Management" 5551for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin 5552Ming, 5553Bob Moore, Rafael Wysocki. 5554 5555Implemented a new GPE feature for Windows compatibility, the "Implicit 5556Wake 5557GPE Notify". This feature will automatically issue a Notify(2) on a 5558device 5559when a Wake GPE is received if there is no corresponding GPE method or 5560handler. ACPICA BZ 870. 5561 5562Fixed a problem with the Scope() operator during table parse and load 5563phase. 5564During load phase (table load or method execution), the scope operator 5565should 5566not enter the target into the namespace. Instead, it should open a new 5567scope 5568at the target location. Linux BZ 19462, ACPICA BZ 882. 5569 5570Example Code and Data Size: These are the sizes for the OS-independent 5571acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5572debug version of the code includes the debug output trace mechanism and 5573has a 5574much larger code and data size. 5575 5576 Previous Release: 5577 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total 5578 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total 5579 Current Release: 5580 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5581 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5582 55832) iASL Compiler/Disassembler and Tools: 5584 5585iASL: Relax the alphanumeric restriction on _CID strings. These strings 5586are 5587"bus-specific" per the ACPI specification, and therefore any characters 5588are 5589acceptable. The only checks that can be performed are for a null string 5590and 5591perhaps for a leading asterisk. ACPICA BZ 886. 5592 5593iASL: Fixed a problem where a syntax error that caused a premature EOF 5594condition on the source file emitted a very confusing error message. The 5595premature EOF is now detected correctly. ACPICA BZ 891. 5596 5597Disassembler: Decode the AccessSize within a Generic Address Structure 5598(byte 5599access, word access, etc.) Note, this field does not allow arbitrary bit 5600access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword. 5601 5602New: AcpiNames utility - Example namespace dump utility. Shows an example 5603of 5604ACPICA configuration for a minimal namespace dump utility. Uses table and 5605namespace managers, but no AML interpreter. Does not add any 5606functionality 5607over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to 5608partition and configure ACPICA. ACPICA BZ 883. 5609 5610AML Debugger: Increased the debugger buffer size for method return 5611objects. 5612Was 4K, increased to 16K. Also enhanced error messages for debugger 5613method 5614execution, including the buffer overflow case. 5615 5616---------------------------------------- 561713 October 2010. Summary of changes for version 20101013: 5618 56191) ACPI CA Core Subsystem: 5620 5621Added support to clear the PCIEXP_WAKE event. When clearing ACPI events, 5622now 5623clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via 5624HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880. 5625 5626Changed the type of the predefined namespace object _TZ from ThermalZone 5627to 5628Device. This was found to be confusing to the host software that 5629processes 5630the various thermal zones, since _TZ is not really a ThermalZone. 5631However, 5632a 5633Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui 5634Zhang. 5635 5636Added Windows Vista SP2 to the list of supported _OSI strings. The actual 5637string is "Windows 2006 SP2". 5638 5639Eliminated duplicate code in AcpiUtExecute* functions. Now that the 5640nsrepair 5641code automatically repairs _HID-related strings, this type of code is no 5642longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ 5643878. 5644 5645Example Code and Data Size: These are the sizes for the OS-independent 5646acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5647debug version of the code includes the debug output trace mechanism and 5648has a 5649much larger code and data size. 5650 5651 Previous Release: 5652 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5653 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5654 Current Release: 5655 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5656 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5657 56582) iASL Compiler/Disassembler and Tools: 5659 5660iASL: Implemented additional compile-time validation for _HID strings. 5661The 5662non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the 5663length 5664of 5665the string must be exactly seven or eight characters. For both _HID and 5666_CID 5667strings, all characters must be alphanumeric. ACPICA BZ 874. 5668 5669iASL: Allow certain "null" resource descriptors. Some BIOS code creates 5670descriptors that are mostly or all zeros, with the expectation that they 5671will 5672be filled in at runtime. iASL now allows this as long as there is a 5673"resource 5674tag" (name) associated with the descriptor, which gives the ASL a handle 5675needed to modify the descriptor. ACPICA BZ 873. 5676 5677Added single-thread support to the generic Unix application OSL. 5678Primarily 5679for iASL support, this change removes the use of semaphores in the 5680single- 5681threaded ACPICA tools/applications - increasing performance. The 5682_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED 5683option. ACPICA BZ 879. 5684 5685AcpiExec: several fixes for the 64-bit version. Adds XSDT support and 5686support 5687for 64-bit DSDT/FACS addresses in the FADT. Lin Ming. 5688 5689iASL: Moved all compiler messages to a new file, aslmessages.h. 5690 5691---------------------------------------- 569215 September 2010. Summary of changes for version 20100915: 5693 56941) ACPI CA Core Subsystem: 5695 5696Removed the AcpiOsDerivePciId OSL interface. The various host 5697implementations 5698of this function were not OS-dependent and are now obsolete and can be 5699removed from all host OSLs. This function has been replaced by 5700AcpiHwDerivePciId, which is now part of the ACPICA core code. 5701AcpiHwDerivePciId has been implemented without recursion. Adds one new 5702module, hwpci.c. ACPICA BZ 857. 5703 5704Implemented a dynamic repair for _HID and _CID strings. The following 5705problems are now repaired at runtime: 1) Remove a leading asterisk in the 5706string, and 2) the entire string is uppercased. Both repairs are in 5707accordance with the ACPI specification and will simplify host driver 5708code. 5709ACPICA BZ 871. 5710 5711The ACPI_THREAD_ID type is no longer configurable, internally it is now 5712always UINT64. This simplifies the ACPICA code, especially any printf 5713output. 5714UINT64 is the only common data type for all thread_id types across all 5715operating systems. It is now up to the host OSL to cast the native 5716thread_id 5717type to UINT64 before returning the value to ACPICA (via 5718AcpiOsGetThreadId). 5719Lin Ming, Bob Moore. 5720 5721Added the ACPI_INLINE type to enhance the ACPICA configuration. The 5722"inline" 5723keyword is not standard across compilers, and this type allows inline to 5724be 5725configured on a per-compiler basis. Lin Ming. 5726 5727Made the system global AcpiGbl_SystemAwakeAndRunning publically 5728available. 5729Added an extern for this boolean in acpixf.h. Some hosts utilize this 5730value 5731during suspend/restore operations. ACPICA BZ 869. 5732 5733All code that implements error/warning messages with the "ACPI:" prefix 5734has 5735been moved to a new module, utxferror.c. 5736 5737The UINT64_OVERLAY was moved to utmath.c, which is the only module where 5738it 5739is used. ACPICA BZ 829. Lin Ming, Bob Moore. 5740 5741Example Code and Data Size: These are the sizes for the OS-independent 5742acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5743debug version of the code includes the debug output trace mechanism and 5744has a 5745much larger code and data size. 5746 5747 Previous Release: 5748 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 5749 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 5750 Current Release: 5751 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total 5752 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total 5753 57542) iASL Compiler/Disassembler and Tools: 5755 5756iASL/Disassembler: Write ACPI errors to stderr instead of the output 5757file. 5758This keeps the output files free of random error messages that may 5759originate 5760from within the namespace/interpreter code. Used this opportunity to 5761merge 5762all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ 5763866. Lin Ming, Bob Moore. 5764 5765Tools: update some printfs for ansi warnings on size_t. Handle width 5766change 5767of size_t on 32-bit versus 64-bit generations. Lin Ming. 5768 5769---------------------------------------- 577006 August 2010. Summary of changes for version 20100806: 5771 57721) ACPI CA Core Subsystem: 5773 5774Designed and implemented a new host interface to the _OSI support code. 5775This 5776will allow the host to dynamically add or remove multiple _OSI strings, 5777as 5778well as install an optional handler that is called for each _OSI 5779invocation. 5780Also added a new AML debugger command, 'osi' to display and modify the 5781global 5782_OSI string table, and test support in the AcpiExec utility. See the 5783ACPICA 5784reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836. 5785New Functions: 5786 AcpiInstallInterface - Add an _OSI string. 5787 AcpiRemoveInterface - Delete an _OSI string. 5788 AcpiInstallInterfaceHandler - Install optional _OSI handler. 5789Obsolete Functions: 5790 AcpiOsValidateInterface - no longer used. 5791New Files: 5792 source/components/utilities/utosi.c 5793 5794Re-introduced the support to enable multi-byte transfers for Embedded 5795Controller (EC) operation regions. A reported problem was found to be a 5796bug 5797in the host OS, not in the multi-byte support. Previously, the maximum 5798data 5799size passed to the EC operation region handler was a single byte. There 5800are 5801often EC Fields larger than one byte that need to be transferred, and it 5802is 5803useful for the EC driver to lock these as a single transaction. This 5804change 5805enables single transfers larger than 8 bits. This effectively changes the 5806access to the EC space from ByteAcc to AnyAcc, and will probably require 5807changes to the host OS Embedded Controller driver to enable 16/32/64/256- 5808bit 5809transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming. 5810 5811Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The 5812prototype in acpiosxf.h had the output value pointer as a (void *). 5813It should be a (UINT64 *). This may affect some host OSL code. 5814 5815Fixed a couple problems with the recently modified Linux makefiles for 5816iASL 5817and AcpiExec. These new makefiles place the generated object files in the 5818local directory so that there can be no collisions between the files that 5819are 5820shared between them that are compiled with different options. 5821 5822Example Code and Data Size: These are the sizes for the OS-independent 5823acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5824debug version of the code includes the debug output trace mechanism and 5825has a 5826much larger code and data size. 5827 5828 Previous Release: 5829 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5830 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 5831 Current Release: 5832 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total 5833 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total 5834 58352) iASL Compiler/Disassembler and Tools: 5836 5837iASL/Disassembler: Added a new option (-da, "disassemble all") to load 5838the 5839namespace from and disassemble an entire group of AML files. Useful for 5840loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn) 5841and 5842disassembling with one simple command. ACPICA BZ 865. Lin Ming. 5843 5844iASL: Allow multiple invocations of -e option. This change allows 5845multiple 5846uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ 5847834. 5848Lin Ming. 5849 5850---------------------------------------- 585102 July 2010. Summary of changes for version 20100702: 5852 58531) ACPI CA Core Subsystem: 5854 5855Implemented several updates to the recently added GPE reference count 5856support. The model for "wake" GPEs is changing to give the host OS 5857complete 5858control of these GPEs. Eventually, the ACPICA core will not execute any 5859_PRW 5860methods, since the host already must execute them. Also, additional 5861changes 5862were made to help ensure that the reference counts are kept in proper 5863synchronization with reality. Rafael J. Wysocki. 5864 58651) Ensure that GPEs are not enabled twice during initialization. 58662) Ensure that GPE enable masks stay in sync with the reference count. 58673) Do not inadvertently enable GPEs when writing GPE registers. 58684) Remove the internal wake reference counter and add new AcpiGpeWakeup 5869interface. This interface will set or clear individual GPEs for wakeup. 58705) Remove GpeType argument from AcpiEnable and AcpiDisable. These 5871interfaces 5872are now used for "runtime" GPEs only. 5873 5874Changed the behavior of the GPE install/remove handler interfaces. The 5875GPE 5876is 5877no longer disabled during this process, as it was found to cause problems 5878on 5879some machines. Rafael J. Wysocki. 5880 5881Reverted a change introduced in version 20100528 to enable Embedded 5882Controller multi-byte transfers. This change was found to cause problems 5883with 5884Index Fields and possibly Bank Fields. It will be reintroduced when these 5885problems have been resolved. 5886 5887Fixed a problem with references to Alias objects within Package Objects. 5888A 5889reference to an Alias within the definition of a Package was not always 5890resolved properly. Aliases to objects like Processors, Thermal zones, 5891etc. 5892were resolved to the actual object instead of a reference to the object 5893as 5894it 5895should be. Package objects are only allowed to contain integer, string, 5896buffer, package, and reference objects. Redhat bugzilla 608648. 5897 5898Example Code and Data Size: These are the sizes for the OS-independent 5899acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 5900debug version of the code includes the debug output trace mechanism and 5901has a 5902much larger code and data size. 5903 5904 Previous Release: 5905 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5906 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 5907 Current Release: 5908 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 5909 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total 5910 59112) iASL Compiler/Disassembler and Tools: 5912 5913iASL: Implemented a new compiler subsystem to allow definition and 5914compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc. 5915These 5916are called "ACPI Data Tables", and the new compiler is the "Data Table 5917Compiler". This compiler is intended to simplify the existing error-prone 5918process of creating these tables for the BIOS, as well as allowing the 5919disassembly, modification, recompilation, and override of existing ACPI 5920data 5921tables. See the iASL User Guide for detailed information. 5922 5923iASL: Implemented a new Template Generator option in support of the new 5924Data 5925Table Compiler. This option will create examples of all known ACPI tables 5926that can be used as the basis for table development. See the iASL 5927documentation and the -T option. 5928 5929Disassembler and headers: Added support for the WDDT ACPI table (Watchdog 5930Descriptor Table). 5931 5932Updated the Linux makefiles for iASL and AcpiExec to place the generated 5933object files in the local directory so that there can be no collisions 5934between the shared files between them that are generated with different 5935options. 5936 5937Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec. 5938Use 5939the #define __APPLE__ to enable this support. 5940 5941---------------------------------------- 594228 May 2010. Summary of changes for version 20100528: 5943 5944Note: The ACPI 4.0a specification was released on April 5, 2010 and is 5945available at www.acpi.info. This is primarily an errata release. 5946 59471) ACPI CA Core Subsystem: 5948 5949Undefined ACPI tables: We are looking for the definitions for the 5950following 5951ACPI tables that have been seen in the field: ATKG, IEIT, GSCI. 5952 5953Implemented support to enable multi-byte transfers for Embedded 5954Controller 5955(EC) operation regions. Previously, the maximum data size passed to the 5956EC 5957operation region handler was a single byte. There are often EC Fields 5958larger 5959than one byte that need to be transferred, and it is useful for the EC 5960driver 5961to lock these as a single transaction. This change enables single 5962transfers 5963larger than 8 bits. This effectively changes the access to the EC space 5964from 5965ByteAcc to AnyAcc, and will probably require changes to the host OS 5966Embedded 5967Controller driver to enable 16/32/64/256-bit transfers in addition to 8- 5968bit 5969transfers. Alexey Starikovskiy, Lin Ming 5970 5971Implemented a performance enhancement for namespace search and access. 5972This 5973change enhances the performance of namespace searches and walks by adding 5974a 5975backpointer to the parent in each namespace node. On large namespaces, 5976this 5977change can improve overall ACPI performance by up to 9X. Adding a pointer 5978to 5979each namespace node increases the overall size of the internal namespace 5980by 5981about 5%, since each namespace entry usually consists of both a namespace 5982node and an ACPI operand object. However, this is the first growth of the 5983namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy. 5984 5985Implemented a performance optimization that reduces the number of 5986namespace 5987walks. On control method exit, only walk the namespace if the method is 5988known 5989to have created namespace objects outside of its local scope. Previously, 5990the 5991entire namespace was traversed on each control method exit. This change 5992can 5993improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob 5994Moore. 5995 5996Added support to truncate I/O addresses to 16 bits for Windows 5997compatibility. 5998Some ASL code has been seen in the field that inadvertently has bits set 5999above bit 15. This feature is optional and is enabled if the BIOS 6000requests 6001any Windows OSI strings. It can also be enabled by the host OS. Matthew 6002Garrett, Bob Moore. 6003 6004Added support to limit the maximum time for the ASL Sleep() operator. To 6005prevent accidental deep sleeps, limit the maximum time that Sleep() will 6006actually sleep. Configurable, the default maximum is two seconds. ACPICA 6007bugzilla 854. 6008 6009Added run-time validation support for the _WDG and_WED Microsoft 6010predefined 6011methods. These objects are defined by "Windows Instrumentation", and are 6012not 6013part of the ACPI spec. ACPICA BZ 860. 6014 6015Expanded all statistic counters used during namespace and device 6016initialization from 16 to 32 bits in order to support very large 6017namespaces. 6018 6019Replaced all instances of %d in printf format specifiers with %u since 6020nearly 6021all integers in ACPICA are unsigned. 6022 6023Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly 6024returned 6025as AE_NO_HANDLER. 6026 6027Example Code and Data Size: These are the sizes for the OS-independent 6028acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6029debug version of the code includes the debug output trace mechanism and 6030has a 6031much larger code and data size. 6032 6033 Previous Release: 6034 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 6035 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 6036 Current Release: 6037 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total 6038 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total 6039 60402) iASL Compiler/Disassembler and Tools: 6041 6042iASL: Added compiler support for the _WDG and_WED Microsoft predefined 6043methods. These objects are defined by "Windows Instrumentation", and are 6044not 6045part of the ACPI spec. ACPICA BZ 860. 6046 6047AcpiExec: added option to disable the memory tracking mechanism. The -dt 6048option will disable the tracking mechanism, which improves performance 6049considerably. 6050 6051AcpiExec: Restructured the command line options into -d (disable) and -e 6052(enable) options. 6053 6054---------------------------------------- 605528 April 2010. Summary of changes for version 20100428: 6056 60571) ACPI CA Core Subsystem: 6058 6059Implemented GPE support for dynamically loaded ACPI tables. For all GPEs, 6060including FADT-based and GPE Block Devices, execute any _PRW methods in 6061the 6062new table, and process any _Lxx/_Exx GPE methods in the new table. Any 6063runtime GPE that is referenced by an _Lxx/_Exx method in the new table is 6064immediately enabled. Handles the FADT-defined GPEs as well as GPE Block 6065Devices. Provides compatibility with other ACPI implementations. Two new 6066files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob 6067Moore. 6068 6069Fixed a regression introduced in version 20100331 within the table 6070manager 6071where initial table loading could fail. This was introduced in the fix 6072for 6073AcpiReallocateRootTable. Also, renamed some of fields in the table 6074manager 6075data structures to clarify their meaning and use. 6076 6077Fixed a possible allocation overrun during internal object copy in 6078AcpiUtCopySimpleObject. The original code did not correctly handle the 6079case 6080where the object to be copied was a namespace node. Lin Ming. ACPICA BZ 6081847. 6082 6083Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a 6084possible access beyond end-of-allocation. Also, now fully validate 6085descriptor 6086(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847 6087 6088Example Code and Data Size: These are the sizes for the OS-independent 6089acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6090debug version of the code includes the debug output trace mechanism and 6091has a 6092much larger code and data size. 6093 6094 Previous Release: 6095 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 6096 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 6097 Current Release: 6098 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total 6099 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total 6100 61012) iASL Compiler/Disassembler and Tools: 6102 6103iASL: Implemented Min/Max/Len/Gran validation for address resource 6104descriptors. This change implements validation for the address fields 6105that 6106are common to all address-type resource descriptors. These checks are 6107implemented: Checks for valid Min/Max, length within the Min/Max window, 6108valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as 6109per 6110table 6-40 in the ACPI 4.0a specification. Also split the large 6111aslrestype1.c 6112and aslrestype2.c files into five new files. ACPICA BZ 840. 6113 6114iASL: Added support for the _Wxx predefined names. This support was 6115missing 6116and these names were not recognized by the compiler as valid predefined 6117names. ACPICA BZ 851. 6118 6119iASL: Added an error for all predefined names that are defined to return 6120no 6121value and thus must be implemented as Control Methods. These include all 6122of 6123the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous 6124names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856. 6125 6126iASL: Implemented the -ts option to emit hex AML data in ASL format, as 6127an 6128ASL Buffer. Allows ACPI tables to be easily included within ASL files, to 6129be 6130dynamically loaded via the Load() operator. Also cleaned up output for 6131the 6132- 6133ta and -tc options. ACPICA BZ 853. 6134 6135Tests: Added a new file with examples of extended iASL error checking. 6136Demonstrates the advanced error checking ability of the iASL compiler. 6137Available at tests/misc/badcode.asl. 6138 6139---------------------------------------- 614031 March 2010. Summary of changes for version 20100331: 6141 61421) ACPI CA Core Subsystem: 6143 6144Completed a major update for the GPE support in order to improve support 6145for 6146shared GPEs and to simplify both host OS and ACPICA code. Added a 6147reference 6148count mechanism to support shared GPEs that require multiple device 6149drivers. 6150Several external interfaces have changed. One external interface has been 6151removed. One new external interface was added. Most of the GPE external 6152interfaces now use the GPE spinlock instead of the events mutex (and the 6153Flags parameter for many GPE interfaces has been removed.) See the 6154updated 6155ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore, 6156Rafael 6157Wysocki. ACPICA BZ 831. 6158 6159Changed: 6160 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus 6161Removed: 6162 AcpiSetGpeType 6163New: 6164 AcpiSetGpe 6165 6166Implemented write support for DataTable operation regions. These regions 6167are 6168defined via the DataTableRegion() operator. Previously, only read support 6169was 6170implemented. The ACPI specification allows DataTableRegions to be 6171read/write, 6172however. 6173 6174Implemented a new subsystem option to force a copy of the DSDT to local 6175memory. Optionally copy the entire DSDT to local memory (instead of 6176simply 6177mapping it.) There are some (albeit very rare) BIOSs that corrupt or 6178replace 6179the original DSDT, creating the need for this option. Default is FALSE, 6180do 6181not copy the DSDT. 6182 6183Implemented detection of a corrupted or replaced DSDT. This change adds 6184support to detect a DSDT that has been corrupted and/or replaced from 6185outside 6186the OS (by firmware). This is typically catastrophic for the system, but 6187has 6188been seen on some machines. Once this problem has been detected, the DSDT 6189copy option can be enabled via system configuration. Lin Ming, Bob Moore. 6190 6191Fixed two problems with AcpiReallocateRootTable during the root table 6192copy. 6193When copying the root table to the new allocation, the length used was 6194incorrect. The new size was used instead of the current table size, 6195meaning 6196too much data was copied. Also, the count of available slots for ACPI 6197tables 6198was not set correctly. Alexey Starikovskiy, Bob Moore. 6199 6200Example Code and Data Size: These are the sizes for the OS-independent 6201acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6202debug version of the code includes the debug output trace mechanism and 6203has a 6204much larger code and data size. 6205 6206 Previous Release: 6207 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 6208 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 6209 Current Release: 6210 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total 6211 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total 6212 62132) iASL Compiler/Disassembler and Tools: 6214 6215iASL: Implement limited typechecking for values returned from predefined 6216control methods. The type of any returned static (unnamed) object is now 6217validated. For example, Return(1). ACPICA BZ 786. 6218 6219iASL: Fixed a predefined name object verification regression. Fixes a 6220problem 6221introduced in version 20100304. An error is incorrectly generated if a 6222predefined name is declared as a static named object with a value defined 6223using the keywords "Zero", "One", or "Ones". Lin Ming. 6224 6225iASL: Added Windows 7 support for the -g option (get local ACPI tables) 6226by 6227reducing the requested registry access rights. ACPICA BZ 842. 6228 6229Disassembler: fixed a possible fault when generating External() 6230statements. 6231Introduced in commit ae7d6fd: Properly handle externals with parent- 6232prefix 6233(carat). Fixes a string length allocation calculation. Lin Ming. 6234 6235---------------------------------------- 623604 March 2010. Summary of changes for version 20100304: 6237 62381) ACPI CA Core Subsystem: 6239 6240Fixed a possible problem with the AML Mutex handling function 6241AcpiExReleaseMutex where the function could fault under the very rare 6242condition when the interpreter has blocked, the interpreter lock is 6243released, 6244the interpreter is then reentered via the same thread, and attempts to 6245acquire an AML mutex that was previously acquired. FreeBSD report 140979. 6246Lin 6247Ming. 6248 6249Implemented additional configuration support for the AML "Debug Object". 6250Output from the debug object can now be enabled via a global variable, 6251AcpiGbl_EnableAmlDebugObject. This will assist with remote machine 6252debugging. 6253This debug output is now available in the release version of ACPICA 6254instead 6255of just the debug version. Also, the entire debug output module can now 6256be 6257configured out of the ACPICA build if desired. One new file added, 6258executer/exdebug.c. Lin Ming, Bob Moore. 6259 6260Added header support for the ACPI MCHI table (Management Controller Host 6261Interface Table). This table was added in ACPI 4.0, but the defining 6262document 6263has only recently become available. 6264 6265Standardized output of integer values for ACPICA warnings/errors. Always 6266use 62670x prefix for hex output, always use %u for unsigned integer decimal 6268output. 6269Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about 6270400 6271invocations.) These invocations were converted from the original 6272ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835. 6273 6274Example Code and Data Size: These are the sizes for the OS-independent 6275acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6276debug version of the code includes the debug output trace mechanism and 6277has a 6278much larger code and data size. 6279 6280 Previous Release: 6281 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 6282 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 6283 Current Release: 6284 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total 6285 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total 6286 62872) iASL Compiler/Disassembler and Tools: 6288 6289iASL: Implemented typechecking support for static (non-control method) 6290predefined named objects that are declared with the Name() operator. For 6291example, the type of this object is now validated to be of type Integer: 6292Name(_BBN, 1). This change migrates the compiler to using the core 6293predefined 6294name table instead of maintaining a local version. Added a new file, 6295aslpredef.c. ACPICA BZ 832. 6296 6297Disassembler: Added support for the ACPI 4.0 MCHI table. 6298 6299---------------------------------------- 630021 January 2010. Summary of changes for version 20100121: 6301 63021) ACPI CA Core Subsystem: 6303 6304Added the 2010 copyright to all module headers and signons. This affects 6305virtually every file in the ACPICA core subsystem, the iASL compiler, the 6306tools/utilities, and the test suites. 6307 6308Implemented a change to the AcpiGetDevices interface to eliminate 6309unnecessary 6310invocations of the _STA method. In the case where a specific _HID is 6311requested, do not run _STA until a _HID match is found. This eliminates 6312potentially dozens of _STA calls during a search for a particular 6313device/HID, 6314which in turn can improve boot times. ACPICA BZ 828. Lin Ming. 6315 6316Implemented an additional repair for predefined method return values. 6317Attempt 6318to repair unexpected NULL elements within returned Package objects. 6319Create 6320an 6321Integer of value zero, a NULL String, or a zero-length Buffer as 6322appropriate. 6323ACPICA BZ 818. Lin Ming, Bob Moore. 6324 6325Removed the obsolete ACPI_INTEGER data type. This type was introduced as 6326the 6327code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0 6328(with 632964-bit AML integers). It is now obsolete and this change removes it from 6330the 6331ACPICA code base, replaced by UINT64. The original typedef has been 6332retained 6333for now for compatibility with existing device driver code. ACPICA BZ 6334824. 6335 6336Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field 6337in 6338the parse tree object. 6339 6340Added additional warning options for the gcc-4 generation. Updated the 6341source 6342accordingly. This includes some code restructuring to eliminate 6343unreachable 6344code, elimination of some gotos, elimination of unused return values, 6345some 6346additional casting, and removal of redundant declarations. 6347 6348Example Code and Data Size: These are the sizes for the OS-independent 6349acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6350debug version of the code includes the debug output trace mechanism and 6351has a 6352much larger code and data size. 6353 6354 Previous Release: 6355 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 6356 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 6357 Current Release: 6358 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total 6359 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total 6360 63612) iASL Compiler/Disassembler and Tools: 6362 6363No functional changes for this release. 6364 6365---------------------------------------- 636614 December 2009. Summary of changes for version 20091214: 6367 63681) ACPI CA Core Subsystem: 6369 6370Enhanced automatic data type conversions for predefined name repairs. 6371This 6372change expands the automatic repairs/conversions for predefined name 6373return 6374values to make Integers, Strings, and Buffers fully interchangeable. 6375Also, 6376a 6377Buffer can be converted to a Package of Integers if necessary. The 6378nsrepair.c 6379module was completely restructured. Lin Ming, Bob Moore. 6380 6381Implemented automatic removal of null package elements during predefined 6382name 6383repairs. This change will automatically remove embedded and trailing NULL 6384package elements from returned package objects that are defined to 6385contain 6386a 6387variable number of sub-packages. The driver is then presented with a 6388package 6389with no null elements to deal with. ACPICA BZ 819. 6390 6391Implemented a repair for the predefined _FDE and _GTM names. The expected 6392return value for both names is a Buffer of 5 DWORDs. This repair fixes 6393two 6394possible problems (both seen in the field), where a package of integers 6395is 6396returned, or a buffer of BYTEs is returned. With assistance from Jung-uk 6397Kim. 6398 6399Implemented additional module-level code support. This change will 6400properly 6401execute module-level code that is not at the root of the namespace (under 6402a 6403Device object, etc.). Now executes the code within the current scope 6404instead 6405of the root. ACPICA BZ 762. Lin Ming. 6406 6407Fixed possible mutex acquisition errors when running _REG methods. Fixes 6408a 6409problem where mutex errors can occur when running a _REG method that is 6410in 6411the same scope as a method-defined operation region or an operation 6412region 6413under a module-level IF block. This type of code is rare, so the problem 6414has 6415not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore. 6416 6417Fixed a possible memory leak during module-level code execution. An 6418object 6419could be leaked for each block of executed module-level code if the 6420interpreter slack mode is enabled This change deletes any implicitly 6421returned 6422object from the module-level code block. Lin Ming. 6423 6424Removed messages for successful predefined repair(s). The repair 6425mechanism 6426was considered too wordy. Now, messages are only unconditionally emitted 6427if 6428the return object cannot be repaired. Existing messages for successful 6429repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ 6430827. 6431 6432Example Code and Data Size: These are the sizes for the OS-independent 6433acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6434debug version of the code includes the debug output trace mechanism and 6435has a 6436much larger code and data size. 6437 6438 Previous Release: 6439 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 6440 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 6441 Current Release: 6442 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total 6443 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total 6444 64452) iASL Compiler/Disassembler and Tools: 6446 6447iASL: Fixed a regression introduced in 20091112 where intermediate .SRC 6448files 6449were no longer automatically removed at the termination of the compile. 6450 6451acpiexec: Implemented the -f option to specify default region fill value. 6452This option specifies the value used to initialize buffers that simulate 6453operation regions. Default value is zero. Useful for debugging problems 6454that 6455depend on a specific initial value for a region or field. 6456 6457---------------------------------------- 645812 November 2009. Summary of changes for version 20091112: 6459 64601) ACPI CA Core Subsystem: 6461 6462Implemented a post-order callback to AcpiWalkNamespace. The existing 6463interface only has a pre-order callback. This change adds an additional 6464parameter for a post-order callback which will be more useful for bus 6465scans. 6466ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference. 6467 6468Modified the behavior of the operation region memory mapping cache for 6469SystemMemory. Ensure that the memory mappings created for operation 6470regions 6471do not cross 4K page boundaries. Crossing a page boundary while mapping 6472regions can cause kernel warnings on some hosts if the pages have 6473different 6474attributes. Such regions are probably BIOS bugs, and this is the 6475workaround. 6476Linux BZ 14445. Lin Ming. 6477 6478Implemented an automatic repair for predefined methods that must return 6479sorted lists. This change will repair (by sorting) packages returned by 6480_ALR, 6481_PSS, and _TSS. Drivers can now assume that the packages are correctly 6482sorted 6483and do not contain NULL package elements. Adds one new file, 6484namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore. 6485 6486Fixed a possible fault during predefined name validation if a return 6487Package 6488object contains NULL elements. Also adds a warning if a NULL element is 6489followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement 6490may 6491include repair or removal of all such NULL elements where possible. 6492 6493Implemented additional module-level executable AML code support. This 6494change 6495will execute module-level code that is not at the root of the namespace 6496(under a Device object, etc.) at table load time. Module-level executable 6497AML 6498code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming. 6499 6500Implemented a new internal function to create Integer objects. This 6501function 6502simplifies miscellaneous object creation code. ACPICA BZ 823. 6503 6504Reduced the severity of predefined repair messages, Warning to Info. 6505Since 6506the object was successfully repaired, a warning is too severe. Reduced to 6507an 6508info message for now. These messages may eventually be changed to debug- 6509only. 6510ACPICA BZ 812. 6511 6512Example Code and Data Size: These are the sizes for the OS-independent 6513acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6514debug version of the code includes the debug output trace mechanism and 6515has a 6516much larger code and data size. 6517 6518 Previous Release: 6519 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 6520 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 6521 Current Release: 6522 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total 6523 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total 6524 65252) iASL Compiler/Disassembler and Tools: 6526 6527iASL: Implemented Switch() with While(1) so that Break works correctly. 6528This 6529change correctly implements the Switch operator with a surrounding 6530While(1) 6531so that the Break operator works as expected. ACPICA BZ 461. Lin Ming. 6532 6533iASL: Added a message if a package initializer list is shorter than 6534package 6535length. Adds a new remark for a Package() declaration if an initializer 6536list 6537exists, but is shorter than the declared length of the package. Although 6538technically legal, this is probably a coding error and it is seen in the 6539field. ACPICA BZ 815. Lin Ming, Bob Moore. 6540 6541iASL: Fixed a problem where the compiler could fault after the maximum 6542number 6543of errors was reached (200). 6544 6545acpixtract: Fixed a possible warning for pointer cast if the compiler 6546warning 6547level set very high. 6548 6549---------------------------------------- 655013 October 2009. Summary of changes for version 20091013: 6551 65521) ACPI CA Core Subsystem: 6553 6554Fixed a problem where an Operation Region _REG method could be executed 6555more 6556than once. If a custom address space handler is installed by the host 6557before 6558the "initialize operation regions" phase of the ACPICA initialization, 6559any 6560_REG methods for that address space could be executed twice. This change 6561fixes the problem. ACPICA BZ 427. Lin Ming. 6562 6563Fixed a possible memory leak for the Scope() ASL operator. When the exact 6564invocation of "Scope(\)" is executed (change scope to root), one internal 6565operand object was leaked. Lin Ming. 6566 6567Implemented a run-time repair for the _MAT predefined method. If the _MAT 6568return value is defined as a Field object in the AML, and the field 6569size is less than or equal to the default width of an integer (32 or 657064),_MAT 6571can incorrectly return an Integer instead of a Buffer. ACPICA now 6572automatically repairs this problem. ACPICA BZ 810. 6573 6574Implemented a run-time repair for the _BIF and _BIX predefined methods. 6575The 6576"OEM Information" field is often incorrectly returned as an Integer with 6577value zero if the field is not supported by the platform. This is due to 6578an 6579ambiguity in the ACPI specification. The field should always be a string. 6580ACPICA now automatically repairs this problem by returning a NULL string 6581within the returned Package. ACPICA BZ 807. 6582 6583Example Code and Data Size: These are the sizes for the OS-independent 6584acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6585debug version of the code includes the debug output trace mechanism and 6586has a 6587much larger code and data size. 6588 6589 Previous Release: 6590 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 6591 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 6592 Current Release: 6593 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total 6594 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total 6595 65962) iASL Compiler/Disassembler and Tools: 6597 6598Disassembler: Fixed a problem where references to external symbols that 6599contained one or more parent-prefixes (carats) were not handled 6600correctly, 6601possibly causing a fault. ACPICA BZ 806. Lin Ming. 6602 6603Disassembler: Restructured the code so that all functions that handle 6604external symbols are in a single module. One new file is added, 6605common/dmextern.c. 6606 6607AML Debugger: Added a max count argument for the Batch command (which 6608executes multiple predefined methods within the namespace.) 6609 6610iASL: Updated the compiler documentation (User Reference.) Available at 6611http://www.acpica.org/documentation/. ACPICA BZ 750. 6612 6613AcpiXtract: Updated for Lint and other formatting changes. Close all open 6614files. 6615 6616---------------------------------------- 661703 September 2009. Summary of changes for version 20090903: 6618 66191) ACPI CA Core Subsystem: 6620 6621For Windows Vista compatibility, added the automatic execution of an _INI 6622method located at the namespace root (\_INI). This method is executed at 6623table load time. This support is in addition to the automatic execution 6624of 6625\_SB._INI. Lin Ming. 6626 6627Fixed a possible memory leak in the interpreter for AML package objects 6628if 6629the package initializer list is longer than the defined size of the 6630package. 6631This apparently can only happen if the BIOS changes the package size on 6632the 6633fly (seen in a _PSS object), as ASL compilers do not allow this. The 6634interpreter will truncate the package to the defined size (and issue an 6635error 6636message), but previously could leave the extra objects undeleted if they 6637were 6638pre-created during the argument processing (such is the case if the 6639package 6640consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805. 6641 6642Fixed a problem seen when a Buffer or String is stored to itself via ASL. 6643This has been reported in the field. Previously, ACPICA would zero out 6644the 6645buffer/string. Now, the operation is treated as a noop. Provides Windows 6646compatibility. ACPICA BZ 803. Lin Ming. 6647 6648Removed an extraneous error message for ASL constructs of the form 6649Store(LocalX,LocalX) when LocalX is uninitialized. These curious 6650statements 6651are seen in many BIOSs and are once again treated as NOOPs and no error 6652is 6653emitted when they are encountered. ACPICA BZ 785. 6654 6655Fixed an extraneous warning message if a _DSM reserved method returns a 6656Package object. _DSM can return any type of object, so validation on the 6657return type cannot be performed. ACPICA BZ 802. 6658 6659Example Code and Data Size: These are the sizes for the OS-independent 6660acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6661debug version of the code includes the debug output trace mechanism and 6662has a 6663much larger code and data size. 6664 6665 Previous Release: 6666 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 6667 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 6668 Current Release: 6669 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total 6670 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total 6671 66722) iASL Compiler/Disassembler and Tools: 6673 6674iASL: Fixed a problem with the use of the Alias operator and Resource 6675Templates. The correct alias is now constructed and no error is emitted. 6676ACPICA BZ 738. 6677 6678iASL: Implemented the -I option to specify additional search directories 6679for 6680include files. Allows multiple additional search paths for include files. 6681Directories are searched in the order specified on the command line 6682(after 6683the local directory is searched.) ACPICA BZ 800. 6684 6685iASL: Fixed a problem where the full pathname for include files was not 6686emitted for warnings/errors. This caused the IDE support to not work 6687properly. ACPICA BZ 765. 6688 6689iASL: Implemented the -@ option to specify a Windows-style response file 6690containing additional command line options. ACPICA BZ 801. 6691 6692AcpiExec: Added support to load multiple AML files simultaneously (such 6693as 6694a 6695DSDT and multiple SSDTs). Also added support for wildcards within the AML 6696pathname. These features allow all machine tables to be easily loaded and 6697debugged together. ACPICA BZ 804. 6698 6699Disassembler: Added missing support for disassembly of HEST table Error 6700Bank 6701subtables. 6702 6703---------------------------------------- 670430 July 2009. Summary of changes for version 20090730: 6705 6706The ACPI 4.0 implementation for ACPICA is complete with this release. 6707 67081) ACPI CA Core Subsystem: 6709 6710ACPI 4.0: Added header file support for all new and changed ACPI tables. 6711Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are 6712new 6713for ACPI 4.0, but have previously been supported in ACPICA are: CPEP, 6714BERT, 6715EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT. 6716There 6717have been some ACPI 4.0 changes to other existing tables. Split the large 6718actbl1.h header into the existing actbl2.h header. ACPICA BZ 774. 6719 6720ACPI 4.0: Implemented predefined name validation for all new names. There 6721are 672231 new names in ACPI 4.0. The predefined validation module was split into 6723two 6724files. The new file is namespace/nsrepair.c. ACPICA BZ 770. 6725 6726Implemented support for so-called "module-level executable code". This is 6727executable AML code that exists outside of any control method and is 6728intended 6729to be executed at table load time. Although illegal since ACPI 2.0, this 6730type 6731of code still exists and is apparently still being created. Blocks of 6732this 6733code are now detected and executed as intended. Currently, the code 6734blocks 6735must exist under either an If, Else, or While construct; these are the 6736typical cases seen in the field. ACPICA BZ 762. Lin Ming. 6737 6738Implemented an automatic dynamic repair for predefined names that return 6739nested Package objects. This applies to predefined names that are defined 6740to 6741return a variable-length Package of sub-packages. If the number of sub- 6742packages is one, BIOS code is occasionally seen that creates a simple 6743single 6744package with no sub-packages. This code attempts to fix the problem by 6745wrapping a new package object around the existing package. These methods 6746can 6747be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA 6748BZ 6749790. 6750 6751Fixed a regression introduced in 20090625 for the AcpiGetDevices 6752interface. 6753The _HID/_CID matching was broken and no longer matched IDs correctly. 6754ACPICA 6755BZ 793. 6756 6757Fixed a problem with AcpiReset where the reset would silently fail if the 6758register was one of the protected I/O ports. AcpiReset now bypasses the 6759port 6760validation mechanism. This may eventually be driven into the 6761AcpiRead/Write 6762interfaces. 6763 6764Fixed a regression related to the recent update of the AcpiRead/Write 6765interfaces. A sleep/suspend could fail if the optional PM2 Control 6766register 6767does not exist during an attempt to write the Bus Master Arbitration bit. 6768(However, some hosts already delete the code that writes this bit, and 6769the 6770code may in fact be obsolete at this date.) ACPICA BZ 799. 6771 6772Fixed a problem where AcpiTerminate could fault if inadvertently called 6773twice 6774in succession. ACPICA BZ 795. 6775 6776Example Code and Data Size: These are the sizes for the OS-independent 6777acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6778debug version of the code includes the debug output trace mechanism and 6779has a 6780much larger code and data size. 6781 6782 Previous Release: 6783 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 6784 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 6785 Current Release: 6786 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total 6787 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total 6788 67892) iASL Compiler/Disassembler and Tools: 6790 6791ACPI 4.0: Implemented disassembler support for all new ACPI tables and 6792changes to existing tables. ACPICA BZ 775. 6793 6794---------------------------------------- 679525 June 2009. Summary of changes for version 20090625: 6796 6797The ACPI 4.0 Specification was released on June 16 and is available at 6798www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will 6799continue for the next few releases. 6800 68011) ACPI CA Core Subsystem: 6802 6803ACPI 4.0: Implemented interpreter support for the IPMI operation region 6804address space. Includes support for bi-directional data buffers and an 6805IPMI 6806address space handler (to be installed by an IPMI device driver.) ACPICA 6807BZ 6808773. Lin Ming. 6809 6810ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT. 6811Includes 6812support in both the header files and the disassembler. 6813 6814Completed a major update for the AcpiGetObjectInfo external interface. 6815Changes include: 6816 - Support for variable, unlimited length HID, UID, and CID strings. 6817 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA, 6818etc.) 6819 - Call the _SxW power methods on behalf of a device object. 6820 - Determine if a device is a PCI root bridge. 6821 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO. 6822These changes will require an update to all callers of this interface. 6823See 6824the updated ACPICA Programmer Reference for details. One new source file 6825has 6826been added - utilities/utids.c. ACPICA BZ 368, 780. 6827 6828Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit 6829transfers. The Value parameter has been extended from 32 bits to 64 bits 6830in 6831order to support new ACPI 4.0 tables. These changes will require an 6832update 6833to 6834all callers of these interfaces. See the ACPICA Programmer Reference for 6835details. ACPICA BZ 768. 6836 6837Fixed several problems with AcpiAttachData. The handler was not invoked 6838when 6839the host node was deleted. The data sub-object was not automatically 6840deleted 6841when the host node was deleted. The interface to the handler had an 6842unused 6843parameter, this was removed. ACPICA BZ 778. 6844 6845Enhanced the function that dumps ACPI table headers. All non-printable 6846characters in the string fields are now replaced with '?' (Signature, 6847OemId, 6848OemTableId, and CompilerId.) ACPI tables with non-printable characters in 6849these fields are occasionally seen in the field. ACPICA BZ 788. 6850 6851Fixed a problem with predefined method repair code where the code that 6852attempts to repair/convert an object of incorrect type is only executed 6853on 6854the first time the predefined method is called. The mechanism that 6855disables 6856warnings on subsequent calls was interfering with the repair mechanism. 6857ACPICA BZ 781. 6858 6859Fixed a possible memory leak in the predefined validation/repair code 6860when 6861a 6862buffer is automatically converted to an expected string object. 6863 6864Removed obsolete 16-bit files from the distribution and from the current 6865git 6866tree head. ACPICA BZ 776. 6867 6868Example Code and Data Size: These are the sizes for the OS-independent 6869acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6870debug version of the code includes the debug output trace mechanism and 6871has a 6872much larger code and data size. 6873 6874 Previous Release: 6875 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 6876 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 6877 Current Release: 6878 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total 6879 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total 6880 68812) iASL Compiler/Disassembler and Tools: 6882 6883ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI 6884operation region keyword. ACPICA BZ 771, 772. Lin Ming. 6885 6886ACPI 4.0: iASL - implemented compile-time validation support for all new 6887predefined names and control methods (31 total). ACPICA BZ 769. 6888 6889---------------------------------------- 689021 May 2009. Summary of changes for version 20090521: 6891 68921) ACPI CA Core Subsystem: 6893 6894Disabled the preservation of the SCI enable bit in the PM1 control 6895register. 6896The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification 6897to 6898be 6899a "preserved" bit - "OSPM always preserves this bit position", section 69004.7.3.2.1. However, some machines fail if this bit is in fact preserved 6901because the bit needs to be explicitly set by the OS as a workaround. No 6902machines fail if the bit is not preserved. Therefore, ACPICA no longer 6903attempts to preserve this bit. 6904 6905Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or 6906incorrectly formed _PRT package could cause a fault. Added validation to 6907ensure that each package element is actually a sub-package. 6908 6909Implemented a new interface to install or override a single control 6910method, 6911AcpiInstallMethod. This interface is useful when debugging in order to 6912repair 6913an existing method or to install a missing method without having to 6914override 6915the entire ACPI table. See the ACPICA Programmer Reference for use and 6916examples. Lin Ming, Bob Moore. 6917 6918Fixed several reference count issues with the DdbHandle object that is 6919created from a Load or LoadTable operator. Prevent premature deletion of 6920the 6921object. Also, mark the object as invalid once the table has been 6922unloaded. 6923This is needed because the handle itself may not be deleted after the 6924table 6925unload, depending on whether it has been stored in a named object by the 6926caller. Lin Ming. 6927 6928Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple 6929mutexes of the same sync level are acquired but then not released in 6930strict 6931opposite order, the internally maintained Current Sync Level becomes 6932confused 6933and can cause subsequent execution errors. ACPICA BZ 471. 6934 6935Changed the allowable release order for ASL mutex objects. The ACPI 4.0 6936specification has been changed to make the SyncLevel for mutex objects 6937more 6938useful. When releasing a mutex, the SyncLevel of the mutex must now be 6939the 6940same as the current sync level. This makes more sense than the previous 6941rule 6942(SyncLevel less than or equal). This change updates the code to match the 6943specification. 6944 6945Fixed a problem with the local version of the AcpiOsPurgeCache function. 6946The 6947(local) cache must be locked during all cache object deletions. Andrew 6948Baumann. 6949 6950Updated the Load operator to use operation region interfaces. This 6951replaces 6952direct memory mapping with region access calls. Now, all region accesses 6953go 6954through the installed region handler as they should. 6955 6956Simplified and optimized the NsGetNextNode function. Reduced parameter 6957count 6958and reduced code for this frequently used function. 6959 6960Example Code and Data Size: These are the sizes for the OS-independent 6961acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 6962debug version of the code includes the debug output trace mechanism and 6963has a 6964much larger code and data size. 6965 6966 Previous Release: 6967 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 6968 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 6969 Current Release: 6970 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total 6971 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total 6972 69732) iASL Compiler/Disassembler and Tools: 6974 6975Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some 6976problems 6977with sub-table disassembly and handling invalid sub-tables. Attempt 6978recovery 6979after an invalid sub-table ID. 6980 6981---------------------------------------- 698222 April 2009. Summary of changes for version 20090422: 6983 69841) ACPI CA Core Subsystem: 6985 6986Fixed a compatibility issue with the recently released I/O port 6987protection 6988mechanism. For windows compatibility, 1) On a port protection violation, 6989simply ignore the request and do not return an exception (allow the 6990control 6991method to continue execution.) 2) If only part of the request overlaps a 6992protected port, read/write the individual ports that are not protected. 6993Linux 6994BZ 13036. Lin Ming 6995 6996Enhanced the execution of the ASL/AML BreakPoint operator so that it 6997actually 6998breaks into the AML debugger if the debugger is present. This matches the 6999ACPI-defined behavior. 7000 7001Fixed several possible warnings related to the use of the configurable 7002ACPI_THREAD_ID. This type can now be configured as either an integer or a 7003pointer with no warnings. Also fixes several warnings in printf-like 7004statements for the 64-bit build when the type is configured as a pointer. 7005ACPICA BZ 766, 767. 7006 7007Fixed a number of possible warnings when compiling with gcc 4+ (depending 7008on 7009warning options.) Examples include printf formats, aliasing, unused 7010globals, 7011missing prototypes, missing switch default statements, use of non-ANSI 7012library functions, use of non-ANSI constructs. See generate/unix/Makefile 7013for 7014a list of warning options used with gcc 3 and 4. ACPICA BZ 735. 7015 7016Example Code and Data Size: These are the sizes for the OS-independent 7017acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7018debug version of the code includes the debug output trace mechanism and 7019has a 7020much larger code and data size. 7021 7022 Previous Release: 7023 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 7024 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 7025 Current Release: 7026 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total 7027 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total 7028 70292) iASL Compiler/Disassembler and Tools: 7030 7031iASL: Fixed a generation warning from Bison 2.3 and fixed several 7032warnings 7033on 7034the 64-bit build. 7035 7036iASL: Fixed a problem where the Unix/Linux versions of the compiler could 7037not 7038correctly digest Windows/DOS formatted files (with CR/LF). 7039 7040iASL: Added a new option for "quiet mode" (-va) that produces only the 7041compilation summary, not individual errors and warnings. Useful for large 7042batch compilations. 7043 7044AcpiExec: Implemented a new option (-z) to enable a forced 7045semaphore/mutex 7046timeout that can be used to detect hang conditions during execution of 7047AML 7048code (includes both internal semaphores and AML-defined mutexes and 7049events.) 7050 7051Added new makefiles for the generation of acpica in a generic unix-like 7052environment. These makefiles are intended to generate the acpica tools 7053and 7054utilities from the original acpica git source tree structure. 7055 7056Test Suites: Updated and cleaned up the documentation files. Updated the 7057copyrights to 2009, affecting all source files. Use the new version of 7058iASL 7059with quiet mode. Increased the number of available semaphores in the 7060Windows 7061OSL, allowing the aslts to execute fully on Windows. For the Unix OSL, 7062added 7063an alternate implementation of the semaphore timeout to allow aslts to 7064execute fully on Cygwin. 7065 7066---------------------------------------- 706720 March 2009. Summary of changes for version 20090320: 7068 70691) ACPI CA Core Subsystem: 7070 7071Fixed a possible race condition between AcpiWalkNamespace and dynamic 7072table 7073unloads. Added a reader/writer locking mechanism to allow multiple 7074concurrent 7075namespace walks (readers), but block a dynamic table unload until it can 7076gain 7077exclusive write access to the namespace. This fixes a problem where a 7078table 7079unload could (possibly catastrophically) delete the portion of the 7080namespace 7081that is currently being examined by a walk. Adds a new file, utlock.c, 7082that 7083implements the reader/writer lock mechanism. ACPICA BZ 749. 7084 7085Fixed a regression introduced in version 20090220 where a change to the 7086FADT 7087handling could cause the ACPICA subsystem to access non-existent I/O 7088ports. 7089 7090Modified the handling of FADT register and table (FACS/DSDT) addresses. 7091The 7092FADT can contain both 32-bit and 64-bit versions of these addresses. 7093Previously, the 64-bit versions were favored, meaning that if both 32 and 709464 7095versions were valid, but not equal, the 64-bit version was used. This was 7096found to cause some machines to fail. Now, in this case, the 32-bit 7097version 7098is used instead. This now matches the Windows behavior. 7099 7100Implemented a new mechanism to protect certain I/O ports. Provides 7101Microsoft 7102compatibility and protects the standard PC I/O ports from access via AML 7103code. Adds a new file, hwvalid.c 7104 7105Fixed a possible extraneous warning message from the FADT support. The 7106message warns of a 32/64 length mismatch between the legacy and GAS 7107definitions for a register. 7108 7109Removed the obsolete AcpiOsValidateAddress OSL interface. This interface 7110is 7111made obsolete by the port protection mechanism above. It was previously 7112used 7113to validate the entire address range of an operation region, which could 7114be 7115incorrect if the range included illegal ports, but fields within the 7116operation region did not actually access those ports. Validation is now 7117performed on a per-field basis instead of the entire region. 7118 7119Modified the handling of the PM1 Status Register ignored bit (bit 11.) 7120Ignored bits must be "preserved" according to the ACPI spec. Usually, 7121this 7122means a read/modify/write when writing to the register. However, for 7123status 7124registers, writing a one means clear the event. Writing a zero means 7125preserve 7126the event (do not clear.) This behavior is clarified in the ACPI 4.0 7127spec, 7128and the ACPICA code now simply always writes a zero to the ignored bit. 7129 7130Modified the handling of ignored bits for the PM1 A/B Control Registers. 7131As 7132per the ACPI specification, for the control registers, preserve 7133(read/modify/write) all bits that are defined as either reserved or 7134ignored. 7135 7136Updated the handling of write-only bits in the PM1 A/B Control Registers. 7137When reading the register, zero the write-only bits as per the ACPI spec. 7138ACPICA BZ 443. Lin Ming. 7139 7140Removed "Linux" from the list of supported _OSI strings. Linux no longer 7141wants to reply true to this request. The Windows strings are the only 7142paths 7143through the AML that are tested and known to work properly. 7144 7145 Previous Release: 7146 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 7147 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 7148 Current Release: 7149 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total 7150 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total 7151 71522) iASL Compiler/Disassembler and Tools: 7153 7154Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c 7155and 7156aetables.c 7157 7158---------------------------------------- 715920 February 2009. Summary of changes for version 20090220: 7160 71611) ACPI CA Core Subsystem: 7162 7163Optimized the ACPI register locking. Removed locking for reads from the 7164ACPI 7165bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock 7166is 7167not required when reading the single-bit registers. The 7168AcpiGetRegisterUnlocked function is no longer needed and has been 7169removed. 7170This will improve performance for reads on these registers. ACPICA BZ 7171760. 7172 7173Fixed the parameter validation for AcpiRead/Write. Now return 7174AE_BAD_PARAMETER if the input register pointer is null, and 7175AE_BAD_ADDRESS 7176if 7177the register has an address of zero. Previously, these cases simply 7178returned 7179AE_OK. For optional registers such as PM1B status/enable/control, the 7180caller 7181should check for a valid register address before calling. ACPICA BZ 748. 7182 7183Renamed the external ACPI bit register access functions. Renamed 7184AcpiGetRegister and AcpiSetRegister to clarify the purpose of these 7185functions. The new names are AcpiReadBitRegister and 7186AcpiWriteBitRegister. 7187Also, restructured the code for these functions by simplifying the code 7188path 7189and condensing duplicate code to reduce code size. 7190 7191Added new functions to transparently handle the possibly split PM1 A/B 7192registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two 7193functions 7194now handle the split registers for PM1 Status, Enable, and Control. 7195ACPICA 7196BZ 7197746. 7198 7199Added a function to handle the PM1 control registers, 7200AcpiHwWritePm1Control. 7201This function writes both of the PM1 control registers (A/B). These 7202registers 7203are different than the PM1 A/B status and enable registers in that 7204different 7205values can be written to the A/B registers. Most notably, the SLP_TYP 7206bits 7207can be different, as per the values returned from the _Sx predefined 7208methods. 7209 7210Removed an extra register write within AcpiHwClearAcpiStatus. This 7211function 7212was writing an optional PM1B status register twice. The existing call to 7213the 7214low-level AcpiHwRegisterWrite automatically handles a possibly split PM1 7215A/B 7216register. ACPICA BZ 751. 7217 7218Split out the PM1 Status registers from the FADT. Added new globals for 7219these 7220registers (A/B), similar to the way the PM1 Enable registers are handled. 7221Instead of overloading the FADT Event Register blocks. This makes the 7222code 7223clearer and less prone to error. 7224 7225Fixed the warning message for when the platform contains too many ACPI 7226tables 7227for the default size of the global root table data structure. The 7228calculation 7229for the truncation value was incorrect. 7230 7231Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this 7232obsolete macro, since it is now a simple reference to ->common.type. 7233There 7234were about 150 invocations of the macro across 41 files. ACPICA BZ 755. 7235 7236Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as 7237TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to 7238simply SLEEP_TYPE. ACPICA BZ 754. 7239 7240Conditionally compile the AcpiSetFirmwareWakingVector64 function. This 7241function is only needed on 64-bit host operating systems and is thus not 7242included for 32-bit hosts. 7243 7244Debug output: print the input and result for invocations of the _OSI 7245reserved 7246control method via the ACPI_LV_INFO debug level. Also, reduced some of 7247the 7248verbosity of this debug level. Len Brown. 7249 7250Example Code and Data Size: These are the sizes for the OS-independent 7251acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7252debug version of the code includes the debug output trace mechanism and 7253has a 7254much larger code and data size. 7255 7256 Previous Release: 7257 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 7258 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 7259 Current Release: 7260 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total 7261 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total 7262 72632) iASL Compiler/Disassembler and Tools: 7264 7265Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the 7266various legal performance profiles. 7267 7268---------------------------------------- 726923 January 2009. Summary of changes for version 20090123: 7270 72711) ACPI CA Core Subsystem: 7272 7273Added the 2009 copyright to all module headers and signons. This affects 7274virtually every file in the ACPICA core subsystem, the iASL compiler, and 7275the tools/utilities. 7276 7277Implemented a change to allow the host to override any ACPI table, 7278including 7279dynamically loaded tables. Previously, only the DSDT could be replaced by 7280the 7281host. With this change, the AcpiOsTableOverride interface is called for 7282each 7283table found in the RSDT/XSDT during ACPICA initialization, and also 7284whenever 7285a table is dynamically loaded via the AML Load operator. 7286 7287Updated FADT flag definitions, especially the Boot Architecture flags. 7288 7289Debugger: For the Find command, automatically pad the input ACPI name 7290with 7291underscores if the name is shorter than 4 characters. This enables a 7292match 7293with the actual namespace entry which is itself padded with underscores. 7294 7295Example Code and Data Size: These are the sizes for the OS-independent 7296acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7297debug version of the code includes the debug output trace mechanism and 7298has a 7299much larger code and data size. 7300 7301 Previous Release: 7302 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 7303 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 7304 Current Release: 7305 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total 7306 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total 7307 73082) iASL Compiler/Disassembler and Tools: 7309 7310Fix build error under Bison-2.4. 7311 7312Dissasembler: Enhanced FADT support. Added decoding of the Boot 7313Architecture 7314flags. Now decode all flags, regardless of the FADT version. Flag output 7315includes the FADT version which first defined each flag. 7316 7317The iASL -g option now dumps the RSDT to a file (in addition to the FADT 7318and 7319DSDT). Windows only. 7320 7321---------------------------------------- 732204 December 2008. Summary of changes for version 20081204: 7323 73241) ACPI CA Core Subsystem: 7325 7326The ACPICA Programmer Reference has been completely updated and revamped 7327for 7328this release. This includes updates to the external interfaces, OSL 7329interfaces, the overview sections, and the debugger reference. 7330 7331Several new ACPICA interfaces have been implemented and documented in the 7332programmer reference: 7333AcpiReset - Writes the reset value to the FADT-defined reset register. 7334AcpiDisableAllGpes - Disable all available GPEs. 7335AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs. 7336AcpiGetGpeDevice - Get the GPE block device associated with a GPE. 7337AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs. 7338AcpiRead - Low-level read ACPI register (was HwLowLevelRead.) 7339AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.) 7340 7341Most of the public ACPI hardware-related interfaces have been moved to a 7342new 7343file, components/hardware/hwxface.c 7344 7345Enhanced the FADT parsing and low-level ACPI register access: The ACPI 7346register lengths within the FADT are now used, and the low level ACPI 7347register access no longer hardcodes the ACPI register lengths. Given that 7348there may be some risk in actually trusting the FADT register lengths, a 7349run- 7350time option was added to fall back to the default hardcoded lengths if 7351the 7352FADT proves to contain incorrect values - UseDefaultRegisterWidths. This 7353option is set to true for now, and a warning is issued if a suspicious 7354FADT 7355register length is overridden with the default value. 7356 7357Fixed a reference count issue in NsRepairObject. This problem was 7358introduced 7359in version 20081031 as part of a fix to repair Buffer objects within 7360Packages. Lin Ming. 7361 7362Added semaphore support to the Linux/Unix application OS-services layer 7363(OSL). ACPICA BZ 448. Lin Ming. 7364 7365Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes 7366will 7367be implemented in the OSL, or will binary semaphores be used instead. 7368 7369Example Code and Data Size: These are the sizes for the OS-independent 7370acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7371debug version of the code includes the debug output trace mechanism and 7372has a 7373much larger code and data size. 7374 7375 Previous Release: 7376 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 7377 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 7378 Current Release: 7379 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total 7380 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total 7381 73822) iASL Compiler/Disassembler and Tools: 7383 7384iASL: Completed the '-e' option to include additional ACPI tables in 7385order 7386to 7387aid with disassembly and External statement generation. ACPICA BZ 742. 7388Lin 7389Ming. 7390 7391iASL: Removed the "named object in while loop" error. The compiler cannot 7392determine how many times a loop will execute. ACPICA BZ 730. 7393 7394Disassembler: Implemented support for FADT revision 2 (MS extension). 7395ACPICA 7396BZ 743. 7397 7398Disassembler: Updates for several ACPI data tables (HEST, EINJ, and 7399MCFG). 7400 7401---------------------------------------- 740231 October 2008. Summary of changes for version 20081031: 7403 74041) ACPI CA Core Subsystem: 7405 7406Restructured the ACPICA header files into public/private. acpi.h now 7407includes 7408only the "public" acpica headers. All other acpica headers are "private" 7409and 7410should not be included by acpica users. One new file, accommon.h is used 7411to 7412include the commonly used private headers for acpica code generation. 7413Future 7414plans include moving all private headers to a new subdirectory. 7415 7416Implemented an automatic Buffer->String return value conversion for 7417predefined ACPI methods. For these methods (such as _BIF), added 7418automatic 7419conversion for return objects that are required to be a String, but a 7420Buffer 7421was found instead. This can happen when reading string battery data from 7422an 7423operation region, because it used to be difficult to convert the data 7424from 7425buffer to string from within the ASL. Ensures that the host OS is 7426provided 7427with a valid null-terminated string. Linux BZ 11822. 7428 7429Updated the FACS waking vector interfaces. Split 7430AcpiSetFirmwareWakingVector 7431into two: one for the 32-bit vector, another for the 64-bit vector. This 7432is 7433required because the host OS must setup the wake much differently for 7434each 7435vector (real vs. protected mode, etc.) and the interface itself should 7436not 7437be 7438deciding which vector to use. Also, eliminated the 7439GetFirmwareWakingVector 7440interface, as it served no purpose (only the firmware reads the vector, 7441OS 7442only writes the vector.) ACPICA BZ 731. 7443 7444Implemented a mechanism to escape infinite AML While() loops. Added a 7445loop 7446counter to force exit from AML While loops if the count becomes too 7447large. 7448This can occur in poorly written AML when the hardware does not respond 7449within a while loop and the loop does not implement a timeout. The 7450maximum 7451loop count is configurable. A new exception code is returned when a loop 7452is 7453broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore. 7454 7455Optimized the execution of AML While loops. Previously, a control state 7456object was allocated and freed for each execution of the loop. The 7457optimization is to simply reuse the control state for each iteration. 7458This 7459speeds up the raw loop execution time by about 5%. 7460 7461Enhanced the implicit return mechanism. For Windows compatibility, return 7462an 7463implicit integer of value zero for methods that contain no executable 7464code. 7465Such methods are seen in the field as stubs (presumably), and can cause 7466drivers to fail if they expect a return value. Lin Ming. 7467 7468Allow multiple backslashes as root prefixes in namepaths. In a fully 7469qualified namepath, allow multiple backslash prefixes. This can happen 7470(and 7471is seen in the field) because of the use of a double-backslash in strings 7472(since backslash is the escape character) causing confusion. ACPICA BZ 7473739 7474Lin Ming. 7475 7476Emit a warning if two different FACS or DSDT tables are discovered in the 7477FADT. Checks if there are two valid but different addresses for the FACS 7478and 7479DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.) 7480 7481Consolidated the method argument count validation code. Merged the code 7482that 7483validates control method argument counts into the predefined validation 7484module. Eliminates possible multiple warnings for incorrect argument 7485counts. 7486 7487Implemented ACPICA example code. Includes code for ACPICA initialization, 7488handler installation, and calling a control method. Available at 7489source/tools/examples. 7490 7491Added a global pointer for FACS table to simplify internal FACS access. 7492Use 7493the global pointer instead of using AcpiGetTableByIndex for each FACS 7494access. 7495This simplifies the code for the Global Lock and the Firmware Waking 7496Vector(s). 7497 7498Example Code and Data Size: These are the sizes for the OS-independent 7499acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7500debug version of the code includes the debug output trace mechanism and 7501has a 7502much larger code and data size. 7503 7504 Previous Release: 7505 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 7506 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 7507 Current Release: 7508 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total 7509 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total 7510 75112) iASL Compiler/Disassembler and Tools: 7512 7513iASL: Improved disassembly of external method calls. Added the -e option 7514to 7515allow the inclusion of additional ACPI tables to help with the 7516disassembly 7517of 7518method invocations and the generation of external declarations during the 7519disassembly. Certain external method invocations cannot be disassembled 7520properly without the actual declaration of the method. Use the -e option 7521to 7522include the table where the external method(s) are actually declared. 7523Most 7524useful for disassembling SSDTs that make method calls back to the master 7525DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl 7526-d 7527-e dsdt.aml ssdt1.aml 7528 7529iASL: Fix to allow references to aliases within ASL namepaths. Fixes a 7530problem where the use of an alias within a namepath would result in a not 7531found error or cause the compiler to fault. Also now allows forward 7532references from the Alias operator itself. ACPICA BZ 738. 7533 7534---------------------------------------- 753526 September 2008. Summary of changes for version 20080926: 7536 75371) ACPI CA Core Subsystem: 7538 7539Designed and implemented a mechanism to validate predefined ACPI methods 7540and 7541objects. This code validates the predefined ACPI objects (objects whose 7542names 7543start with underscore) that appear in the namespace, at the time they are 7544evaluated. The argument count and the type of the returned object are 7545validated against the ACPI specification. The purpose of this validation 7546is 7547to detect problems with the BIOS-implemented predefined ACPI objects 7548before 7549the results are returned to the ACPI-related drivers. Future enhancements 7550may 7551include actual repair of incorrect return objects where possible. Two new 7552files are nspredef.c and acpredef.h. 7553 7554Fixed a fault in the AML parser if a memory allocation fails during the 7555Op 7556completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492. 7557 7558Fixed an issue with implicit return compatibility. This change improves 7559the 7560implicit return mechanism to be more compatible with the MS interpreter. 7561Lin 7562Ming, ACPICA BZ 349. 7563 7564Implemented support for zero-length buffer-to-string conversions. Allow 7565zero 7566length strings during interpreter buffer-to-string conversions. For 7567example, 7568during the ToDecimalString and ToHexString operators, as well as implicit 7569conversions. Fiodor Suietov, ACPICA BZ 585. 7570 7571Fixed two possible memory leaks in the error exit paths of 7572AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions 7573are 7574similar in that they use a stack of state objects in order to eliminate 7575recursion. The stack must be fully unwound and deallocated if an error 7576occurs. Lin Ming. ACPICA BZ 383. 7577 7578Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the 7579global 7580ACPI register table. This bit does not exist and is unused. Lin Ming, Bob 7581Moore ACPICA BZ 442. 7582 7583Removed the obsolete version number in module headers. Removed the 7584"$Revision" number that appeared in each module header. This version 7585number 7586was useful under SourceSafe and CVS, but has no meaning under git. It is 7587not 7588only incorrect, it could also be misleading. 7589 7590Example Code and Data Size: These are the sizes for the OS-independent 7591acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7592debug version of the code includes the debug output trace mechanism and 7593has a 7594much larger code and data size. 7595 7596 Previous Release: 7597 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7598 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 7599 Current Release: 7600 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total 7601 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total 7602 7603---------------------------------------- 760429 August 2008. Summary of changes for version 20080829: 7605 76061) ACPI CA Core Subsystem: 7607 7608Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type 7609Reference. Changes include the elimination of cheating on the Object 7610field 7611for the DdbHandle subtype, addition of a reference class field to 7612differentiate the various reference types (instead of an AML opcode), and 7613the 7614cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723 7615 7616Reduce an error to a warning for an incorrect method argument count. 7617Previously aborted with an error if too few arguments were passed to a 7618control method via the external ACPICA interface. Now issue a warning 7619instead 7620and continue. Handles the case where the method inadvertently declares 7621too 7622many arguments, but does not actually use the extra ones. Applies mainly 7623to 7624the predefined methods. Lin Ming. Linux BZ 11032. 7625 7626Disallow the evaluation of named object types with no intrinsic value. 7627Return 7628AE_TYPE for objects that have no value and therefore evaluation is 7629undefined: 7630Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation 7631of 7632these types were allowed, but an exception would be generated at some 7633point 7634during the evaluation. Now, the error is generated up front. 7635 7636Fixed a possible memory leak in the AcpiNsGetExternalPathname function 7637(nsnames.c). Fixes a leak in the error exit path. 7638 7639Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These 7640debug 7641levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and 7642ACPI_EXCEPTION 7643interfaces. Also added ACPI_DB_EVENTS to correspond with the existing 7644ACPI_LV_EVENTS. 7645 7646Removed obsolete and/or unused exception codes from the acexcep.h header. 7647There is the possibility that certain device drivers may be affected if 7648they 7649use any of these exceptions. 7650 7651The ACPICA documentation has been added to the public git source tree, 7652under 7653acpica/documents. Included are the ACPICA programmer reference, the iASL 7654compiler reference, and the changes.txt release logfile. 7655 7656Example Code and Data Size: These are the sizes for the OS-independent 7657acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7658debug version of the code includes the debug output trace mechanism and 7659has a 7660much larger code and data size. 7661 7662 Previous Release: 7663 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7664 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 7665 Current Release: 7666 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7667 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total 7668 76692) iASL Compiler/Disassembler and Tools: 7670 7671Allow multiple argument counts for the predefined _SCP method. ACPI 3.0 7672defines _SCP with 3 arguments. Previous versions defined it with only 1 7673argument. iASL now allows both definitions. 7674 7675iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for 7676zero- 7677length subtables when disassembling ACPI tables. Also fixed a couple of 7678errors where a full 16-bit table type field was not extracted from the 7679input 7680properly. 7681 7682acpisrc: Improve comment counting mechanism for generating source code 7683statistics. Count first and last lines of multi-line comments as 7684whitespace, 7685not comment lines. Handle Linux legal header in addition to standard 7686acpica 7687header. 7688 7689---------------------------------------- 7690 769129 July 2008. Summary of changes for version 20080729: 7692 76931) ACPI CA Core Subsystem: 7694 7695Fix a possible deadlock in the GPE dispatch. Remove call to 7696AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will 7697attempt 7698to acquire the GPE lock but can deadlock since the GPE lock is already 7699held 7700at dispatch time. This code was introduced in version 20060831 as a 7701response 7702to Linux BZ 6881 and has since been removed from Linux. 7703 7704Add a function to dereference returned reference objects. Examines the 7705return 7706object from a call to AcpiEvaluateObject. Any Index or RefOf references 7707are 7708automatically dereferenced in an attempt to return something useful 7709(these 7710reference types cannot be converted into an external ACPI_OBJECT.) 7711Provides 7712MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105 7713 7714x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new 7715subtables for the MADT and one new subtable for the SRAT. Includes 7716disassembler and AcpiSrc support. Data from the Intel 64 Architecture 7717x2APIC 7718Specification, June 2008. 7719 7720Additional error checking for pathname utilities. Add error check after 7721all 7722calls to AcpiNsGetPathnameLength. Add status return from 7723AcpiNsBuildExternalPath and check after all calls. Add parameter 7724validation 7725to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar. 7726 7727Return status from the global init function AcpiUtGlobalInitialize. This 7728is 7729used by both the kernel subsystem and the utilities such as iASL 7730compiler. 7731The function could possibly fail when the caches are initialized. Yang 7732Yi. 7733 7734Add a function to decode reference object types to strings. Created for 7735improved error messages. 7736 7737Improve object conversion error messages. Better error messages during 7738object 7739conversion from internal to the external ACPI_OBJECT. Used for external 7740calls 7741to AcpiEvaluateObject. 7742 7743Example Code and Data Size: These are the sizes for the OS-independent 7744acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7745debug version of the code includes the debug output trace mechanism and 7746has a 7747much larger code and data size. 7748 7749 Previous Release: 7750 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 7751 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 7752 Current Release: 7753 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total 7754 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total 7755 77562) iASL Compiler/Disassembler and Tools: 7757 7758Debugger: fix a possible hang when evaluating non-methods. Fixes a 7759problem 7760introduced in version 20080701. If the object being evaluated (via 7761execute 7762command) is not a method, the debugger can hang while trying to obtain 7763non- 7764existent parameters. 7765 7766iASL: relax error for using reserved "_T_x" identifiers. These names can 7767appear in a disassembled ASL file if they were emitted by the original 7768compiler. Instead of issuing an error or warning and forcing the user to 7769manually change these names, issue a remark instead. 7770 7771iASL: error if named object created in while loop. Emit an error if any 7772named 7773object is created within a While loop. If allowed, this code will 7774generate 7775a 7776run-time error on the second iteration of the loop when an attempt is 7777made 7778to 7779create the same named object twice. ACPICA bugzilla 730. 7780 7781iASL: Support absolute pathnames for include files. Add support for 7782absolute 7783pathnames within the Include operator. previously, only relative 7784pathnames 7785were supported. 7786 7787iASL: Enforce minimum 1 interrupt in interrupt macro and Resource 7788Descriptor. 7789The ACPI spec requires one interrupt minimum. BZ 423 7790 7791iASL: Handle a missing ResourceSource arg, with a present SourceIndex. 7792Handles the case for the Interrupt Resource Descriptor where 7793the ResourceSource argument is omitted but ResourceSourceIndex 7794is present. Now leave room for the Index. BZ 426 7795 7796iASL: Prevent error message if CondRefOf target does not exist. Fixes 7797cases 7798where an error message is emitted if the target does not exist. BZ 516 7799 7800iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option 7801(get ACPI tables on Windows). This was apparently broken in version 780220070919. 7803 7804AcpiXtract: Handle EOF while extracting data. Correctly handle the case 7805where 7806the EOF happens immediately after the last table in the input file. Print 7807completion message. Previously, no message was displayed in this case. 7808 7809---------------------------------------- 781001 July 2008. Summary of changes for version 20080701: 7811 78120) Git source tree / acpica.org 7813 7814Fixed a problem where a git-clone from http would not transfer the entire 7815source tree. 7816 78171) ACPI CA Core Subsystem: 7818 7819Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one 7820enable bit. Now performs a read-change-write of the enable register 7821instead 7822of simply writing out the cached enable mask. This will prevent 7823inadvertent 7824enabling of GPEs if a rogue GPE is received during initialization (before 7825GPE 7826handlers are installed.) 7827 7828Implemented a copy for dynamically loaded tables. Previously, dynamically 7829loaded tables were simply mapped - but on some machines this memory is 7830corrupted after suspend. Now copy the table to a local buffer. For the 7831OpRegion case, added checksum verify. Use the table length from the table 7832header, not the region length. For the Buffer case, use the table length 7833also. Dennis Noordsij, Bob Moore. BZ 10734 7834 7835Fixed a problem where the same ACPI table could not be dynamically loaded 7836and 7837unloaded more than once. Without this change, a table cannot be loaded 7838again 7839once it has been loaded/unloaded one time. The current mechanism does not 7840unregister a table upon an unload. During a load, if the same table is 7841found, 7842this no longer returns an exception. BZ 722 7843 7844Fixed a problem where the wrong descriptor length was calculated for the 7845EndTag descriptor in 64-bit mode. The "minimal" descriptors such as 7846EndTag 7847are calculated as 12 bytes long, but the actual length in the internal 7848descriptor is 16 because of the round-up to 8 on the 64-bit build. 7849Reported 7850by Linn Crosetto. BZ 728 7851 7852Fixed a possible memory leak in the Unload operator. The DdbHandle 7853returned 7854by Load() did not have its reference count decremented during unload, 7855leading 7856to a memory leak. Lin Ming. BZ 727 7857 7858Fixed a possible memory leak when deleting thermal/processor objects. Any 7859associated notify handlers (and objects) were not being deleted. Fiodor 7860Suietov. BZ 506 7861 7862Fixed the ordering of the ASCII names in the global mutex table to match 7863the 7864actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug 7865only. 7866Vegard Nossum. BZ 726 7867 7868Enhanced the AcpiGetObjectInfo interface to return the number of required 7869arguments if the object is a control method. Added this call to the 7870debugger 7871so the proper number of default arguments are passed to a method. This 7872prevents a warning when executing methods from AcpiExec. 7873 7874Added a check for an invalid handle in AcpiGetObjectInfo. Return 7875AE_BAD_PARAMETER if input handle is invalid. BZ 474 7876 7877Fixed an extraneous warning from exconfig.c on the 64-bit build. 7878 7879Example Code and Data Size: These are the sizes for the OS-independent 7880acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7881debug version of the code includes the debug output trace mechanism and 7882has a 7883much larger code and data size. 7884 7885 Previous Release: 7886 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 7887 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 7888 Current Release: 7889 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total 7890 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total 7891 78922) iASL Compiler/Disassembler and Tools: 7893 7894iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both 7895resource descriptor names. 7896 7897iASL: Detect invalid ASCII characters in input (windows version). Removed 7898the 7899"-CF" flag from the flex compile, enables correct detection of non-ASCII 7900characters in the input. BZ 441 7901 7902iASL: Eliminate warning when result of LoadTable is not used. Eliminate 7903the 7904"result of operation not used" warning when the DDB handle returned from 7905LoadTable is not used. The warning is not needed. BZ 590 7906 7907AcpiExec: Add support for dynamic table load/unload. Now calls _CFG 7908method 7909to 7910pass address of table to the AML. Added option to disable OpRegion 7911simulation 7912to allow creation of an OpRegion with a real address that was passed to 7913_CFG. 7914All of this allows testing of the Load and Unload operators from 7915AcpiExec. 7916 7917Debugger: update tables command for unloaded tables. Handle unloaded 7918tables 7919and use the standard table header output routine. 7920 7921---------------------------------------- 792209 June 2008. Summary of changes for version 20080609: 7923 79241) ACPI CA Core Subsystem: 7925 7926Implemented a workaround for reversed _PRT entries. A significant number 7927of 7928BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This 7929change dynamically detects and repairs this problem. Provides 7930compatibility 7931with MS ACPI. BZ 6859 7932 7933Simplified the internal ACPI hardware interfaces to eliminate the locking 7934flag parameter from Register Read/Write. Added a new external interface, 7935AcpiGetRegisterUnlocked. 7936 7937Fixed a problem where the invocation of a GPE control method could hang. 7938This 7939was a regression introduced in 20080514. The new method argument count 7940validation mechanism can enter an infinite loop when a GPE method is 7941dispatched. Problem fixed by removing the obsolete code that passed GPE 7942block 7943information to the notify handler via the control method parameter 7944pointer. 7945 7946Fixed a problem where the _SST execution status was incorrectly returned 7947to 7948the caller of AcpiEnterSleepStatePrep. This was a regression introduced 7949in 795020080514. _SST is optional and a NOT_FOUND exception should never be 7951returned. BZ 716 7952 7953Fixed a problem where a deleted object could be accessed from within the 7954AML 7955parser. This was a regression introduced in version 20080123 as a fix for 7956the 7957Unload operator. Lin Ming. BZ 10669 7958 7959Cleaned up the debug operand dump mechanism. Eliminated unnecessary 7960operands 7961and eliminated the use of a negative index in a loop. Operands are now 7962displayed in the correct order, not backwards. This also fixes a 7963regression 7964introduced in 20080514 on 64-bit systems where the elimination of 7965ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ 7966715 7967 7968Fixed a possible memory leak in EvPciConfigRegionSetup where the error 7969exit 7970path did not delete a locally allocated structure. 7971 7972Updated definitions for the DMAR and SRAT tables to synchronize with the 7973current specifications. Includes disassembler support. 7974 7975Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect 7976loop termination value was used. Loop terminated on iteration early, 7977missing 7978one mutex. Linn Crosetto 7979 7980Example Code and Data Size: These are the sizes for the OS-independent 7981acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 7982debug version of the code includes the debug output trace mechanism and 7983has a 7984much larger code and data size. 7985 7986 Previous Release: 7987 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 7988 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 7989 Current Release: 7990 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total 7991 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total 7992 79932) iASL Compiler/Disassembler and Tools: 7994 7995Disassembler: Implemented support for EisaId() within _CID objects. Now 7996disassemble integer _CID objects back to EisaId invocations, including 7997multiple integers within _CID packages. Includes single-step support for 7998debugger also. 7999 8000Disassembler: Added support for DMAR and SRAT table definition changes. 8001 8002---------------------------------------- 800314 May 2008. Summary of changes for version 20080514: 8004 80051) ACPI CA Core Subsystem: 8006 8007Fixed a problem where GPEs were enabled too early during the ACPICA 8008initialization. This could lead to "handler not installed" errors on some 8009machines. Moved GPE enable until after _REG/_STA/_INI methods are run. 8010This 8011ensures that all operation regions and devices throughout the namespace 8012have 8013been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916. 8014 8015Implemented a change to the enter sleep code. Moved execution of the _GTS 8016method to just before setting sleep enable bit. The execution was moved 8017from 8018AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed 8019immediately before the SLP_EN bit is set, as per the ACPI specification. 8020Luming Yu, BZ 1653. 8021 8022Implemented a fix to disable unknown GPEs (2nd version). Now always 8023disable 8024the GPE, even if ACPICA thinks that that it is already disabled. It is 8025possible that the AML or some other code has enabled the GPE unbeknownst 8026to 8027the ACPICA code. 8028 8029Fixed a problem with the Field operator where zero-length fields would 8030return 8031an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length 8032ASL 8033field declarations in Field(), BankField(), and IndexField(). BZ 10606. 8034 8035Implemented a fix for the Load operator, now load the table at the 8036namespace 8037root. This reverts a change introduced in version 20071019. The table is 8038now 8039loaded at the namespace root even though this goes against the ACPI 8040specification. This provides compatibility with other ACPI 8041implementations. 8042The ACPI specification will be updated to reflect this in ACPI 4.0. Lin 8043Ming. 8044 8045Fixed a problem where ACPICA would not Load() tables with unusual 8046signatures. 8047Now ignore ACPI table signature for Load() operator. Only "SSDT" is 8048acceptable to the ACPI spec, but tables are seen with OEMx and null sigs. 8049Therefore, signature validation is worthless. Apparently MS ACPI accepts 8050such 8051signatures, ACPICA must be compatible. BZ 10454. 8052 8053Fixed a possible negative array index in AcpiUtValidateException. Added 8054NULL 8055fields to the exception string arrays to eliminate a -1 subtraction on 8056the 8057SubStatus field. 8058 8059Updated the debug tracking macros to reduce overall code and data size. 8060Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings 8061instead of pointers to static strings. Jan Beulich and Bob Moore. 8062 8063Implemented argument count checking in control method invocation via 8064AcpiEvaluateObject. Now emit an error if too few arguments, warning if 8065too 8066many. This applies only to extern programmatic control method execution, 8067not 8068method-to-method calls within the AML. Lin Ming. 8069 8070Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is 8071no 8072longer needed, especially with the removal of 16-bit support. It was 8073replaced 8074mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64 8075bit 8076on 807732/64-bit platforms is required. 8078 8079Added the C const qualifier for appropriate string constants -- mostly 8080MODULE_NAME and printf format strings. Jan Beulich. 8081 8082Example Code and Data Size: These are the sizes for the OS-independent 8083acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8084debug version of the code includes the debug output trace mechanism and 8085has a 8086much larger code and data size. 8087 8088 Previous Release: 8089 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 8090 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 8091 Current Release: 8092 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total 8093 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total 8094 80952) iASL Compiler/Disassembler and Tools: 8096 8097Implemented ACPI table revision ID validation in the disassembler. Zero 8098is 8099always invalid. For DSDTs, the ID controls the interpreter integer width. 81001 8101means 32-bit and this is unusual. 2 or greater is 64-bit. 8102 8103---------------------------------------- 810421 March 2008. Summary of changes for version 20080321: 8105 81061) ACPI CA Core Subsystem: 8107 8108Implemented an additional change to the GPE support in order to suppress 8109spurious or stray GPEs. The AcpiEvDisableGpe function will now 8110permanently 8111disable incoming GPEs that are neither enabled nor disabled -- meaning 8112that 8113the GPE is unknown to the system. This should prevent future interrupt 8114floods 8115from that GPE. BZ 6217 (Zhang Rui) 8116 8117Fixed a problem where NULL package elements were not returned to the 8118AcpiEvaluateObject interface correctly. The element was simply ignored 8119instead of returning a NULL ACPI_OBJECT package element, potentially 8120causing 8121a buffer overflow and/or confusing the caller who expected a fixed number 8122of 8123elements. BZ 10132 (Lin Ming, Bob Moore) 8124 8125Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word, 8126Dword, 8127Qword), Field, BankField, and IndexField operators when invoked from 8128inside 8129an executing control method. In this case, these operators created 8130namespace 8131nodes that were incorrectly left marked as permanent nodes instead of 8132temporary nodes. This could cause a problem if there is race condition 8133between an exiting control method and a running namespace walk. (Reported 8134by 8135Linn Crosetto) 8136 8137Fixed a problem where the CreateField and CreateXXXField operators would 8138incorrectly allow duplicate names (the name of the field) with no 8139exception 8140generated. 8141 8142Implemented several changes for Notify handling. Added support for new 8143Notify 8144values (ACPI 2.0+) and improved the Notify debug output. Notify on 8145PowerResource objects is no longer allowed, as per the ACPI 8146specification. 8147(Bob Moore, Zhang Rui) 8148 8149All Reference Objects returned via the AcpiEvaluateObject interface are 8150now 8151marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved 8152for 8153NULL objects - either NULL package elements or unresolved named 8154references. 8155 8156Fixed a problem where an extraneous debug message was produced for 8157package 8158objects (when debugging enabled). The message "Package List length larger 8159than NumElements count" is now produced in the correct case, and is now 8160an 8161error message rather than a debug message. Added a debug message for the 8162opposite case, where NumElements is larger than the Package List (the 8163package 8164will be padded out with NULL elements as per the ACPI spec.) 8165 8166Implemented several improvements for the output of the ASL "Debug" object 8167to 8168clarify and keep all data for a given object on one output line. 8169 8170Fixed two size calculation issues with the variable-length Start 8171Dependent 8172resource descriptor. 8173 8174Example Code and Data Size: These are the sizes for the OS-independent 8175acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8176debug version of the code includes the debug output trace mechanism and 8177has 8178a much larger code and data size. 8179 8180 Previous Release: 8181 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 8182 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 8183 Current Release: 8184 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total 8185 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total 8186 81872) iASL Compiler/Disassembler and Tools: 8188 8189Fixed a problem with the use of the Switch operator where execution of 8190the 8191containing method by multiple concurrent threads could cause an 8192AE_ALREADY_EXISTS exception. This is caused by the fact that there is no 8193actual Switch opcode, it must be simulated with local named temporary 8194variables and if/else pairs. The solution chosen was to mark any method 8195that 8196uses Switch as Serialized, thus preventing multiple thread entries. BZ 8197469. 8198 8199---------------------------------------- 820013 February 2008. Summary of changes for version 20080213: 8201 82021) ACPI CA Core Subsystem: 8203 8204Implemented another MS compatibility design change for GPE/Notify 8205handling. 8206GPEs are now cleared/enabled asynchronously to allow all pending notifies 8207to 8208complete first. It is expected that the OSL will queue the enable request 8209behind all pending notify requests (may require changes to the local host 8210OSL 8211in AcpiOsExecute). Alexey Starikovskiy. 8212 8213Fixed a problem where buffer and package objects passed as arguments to a 8214control method via the external AcpiEvaluateObject interface could cause 8215an 8216AE_AML_INTERNAL exception depending on the order and type of operators 8217executed by the target control method. 8218 8219Fixed a problem where resource descriptor size optimization could cause a 8220problem when a _CRS resource template is passed to a _SRS method. The 8221_SRS 8222resource template must use the same descriptors (with the same size) as 8223returned from _CRS. This change affects the following resource 8224descriptors: 8225IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ 82269487) 8227 8228Fixed a problem where a CopyObject to RegionField, BankField, and 8229IndexField 8230objects did not perform an implicit conversion as it should. These types 8231must 8232retain their initial type permanently as per the ACPI specification. 8233However, 8234a CopyObject to all other object types should not perform an implicit 8235conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388 8236 8237Fixed a problem with the AcpiGetDevices interface where the mechanism to 8238match device CIDs did not examine the entire list of available CIDs, but 8239instead aborted on the first non-matching CID. Andrew Patterson. 8240 8241Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro 8242was 8243inadvertently changed to return a 16-bit value instead of a 32-bit value, 8244truncating the upper dword of a 64-bit value. This macro is only used to 8245display debug output, so no incorrect calculations were made. Also, 8246reimplemented the macro so that a 64-bit shift is not performed by 8247inefficient compilers. 8248 8249Added missing va_end statements that should correspond with each va_start 8250statement. 8251 8252Example Code and Data Size: These are the sizes for the OS-independent 8253acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8254debug version of the code includes the debug output trace mechanism and 8255has 8256a much larger code and data size. 8257 8258 Previous Release: 8259 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 8260 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 8261 Current Release: 8262 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total 8263 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total 8264 82652) iASL Compiler/Disassembler and Tools: 8266 8267Implemented full disassembler support for the following new ACPI tables: 8268BERT, EINJ, and ERST. Implemented partial disassembler support for the 8269complicated HEST table. These tables support the Windows Hardware Error 8270Architecture (WHEA). 8271 8272---------------------------------------- 827323 January 2008. Summary of changes for version 20080123: 8274 82751) ACPI CA Core Subsystem: 8276 8277Added the 2008 copyright to all module headers and signons. This affects 8278virtually every file in the ACPICA core subsystem, the iASL compiler, and 8279the tools/utilities. 8280 8281Fixed a problem with the SizeOf operator when used with Package and 8282Buffer 8283objects. These objects have deferred execution for some arguments, and 8284the 8285execution is now completed before the SizeOf is executed. This problem 8286caused 8287unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore) 8288BZ 82899558 8290 8291Implemented an enhancement to the interpreter "slack mode". In the 8292absence 8293of 8294an explicit return or an implicitly returned object from the last 8295executed 8296opcode, a control method will now implicitly return an integer of value 0 8297for 8298Microsoft compatibility. (Lin Ming) BZ 392 8299 8300Fixed a problem with the Load operator where an exception was not 8301returned 8302in 8303the case where the table is already loaded. (Lin Ming) BZ 463 8304 8305Implemented support for the use of DDBHandles as an Indexed Reference, as 8306per 8307the ACPI spec. (Lin Ming) BZ 486 8308 8309Implemented support for UserTerm (Method invocation) for the Unload 8310operator 8311as per the ACPI spec. (Lin Ming) BZ 580 8312 8313Fixed a problem with the LoadTable operator where the OemId and 8314OemTableId 8315input strings could cause unexpected failures if they were shorter than 8316the 8317maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576 8318 8319Implemented support for UserTerm (Method invocation) for the Unload 8320operator 8321as per the ACPI spec. (Lin Ming) BZ 580 8322 8323Implemented header file support for new ACPI tables - BERT, ERST, EINJ, 8324HEST, 8325IBFT, UEFI, WDAT. Disassembler support is forthcoming. 8326 8327Example Code and Data Size: These are the sizes for the OS-independent 8328acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8329debug version of the code includes the debug output trace mechanism and 8330has 8331a much larger code and data size. 8332 8333 Previous Release: 8334 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 8335 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 8336 Current Release: 8337 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total 8338 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total 8339 83402) iASL Compiler/Disassembler and Tools: 8341 8342Implemented support in the disassembler for checksum validation on 8343incoming 8344binary DSDTs and SSDTs. If incorrect, a message is displayed within the 8345table 8346header dump at the start of the disassembly. 8347 8348Implemented additional debugging information in the namespace listing 8349file 8350created during compilation. In addition to the namespace hierarchy, the 8351full 8352pathname to each namespace object is displayed. 8353 8354Fixed a problem with the disassembler where invalid ACPI tables could 8355cause 8356faults or infinite loops. 8357 8358Fixed an unexpected parse error when using the optional "parameter types" 8359list in a control method declaration. (Lin Ming) BZ 397 8360 8361Fixed a problem where two External declarations with the same name did 8362not 8363cause an error (Lin Ming) BZ 509 8364 8365Implemented support for full TermArgs (adding Argx, Localx and method 8366invocation) for the ParameterData parameter to the LoadTable operator. 8367(Lin 8368Ming) BZ 583,587 8369 8370---------------------------------------- 837119 December 2007. Summary of changes for version 20071219: 8372 83731) ACPI CA Core Subsystem: 8374 8375Implemented full support for deferred execution for the TermArg string 8376arguments for DataTableRegion. This enables forward references and full 8377operand resolution for the three string arguments. Similar to 8378OperationRegion 8379deferred argument execution.) Lin Ming. BZ 430 8380 8381Implemented full argument resolution support for the BankValue argument 8382to 8383BankField. Previously, only constants were supported, now any TermArg may 8384be 8385used. Lin Ming BZ 387, 393 8386 8387Fixed a problem with AcpiGetDevices where the search of a branch of the 8388device tree could be terminated prematurely. In accordance with the ACPI 8389specification, the search down the current branch is terminated if a 8390device 8391is both not present and not functional (instead of just not present.) 8392Yakui 8393Zhao. 8394 8395Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly 8396if 8397the underlying AML code changed the GPE enable registers. Now, any 8398unknown 8399incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately 8400disabled 8401instead of simply ignored. Rui Zhang. 8402 8403Fixed a problem with Index Fields where the Index register was 8404incorrectly 8405limited to a maximum of 32 bits. Now any size may be used. 8406 8407Fixed a couple memory leaks associated with "implicit return" objects 8408when 8409the AML Interpreter slack mode is enabled. Lin Ming BZ 349 8410 8411Example Code and Data Size: These are the sizes for the OS-independent 8412acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8413debug version of the code includes the debug output trace mechanism and 8414has 8415a much larger code and data size. 8416 8417 Previous Release: 8418 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 8419 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 8420 Current Release: 8421 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total 8422 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total 8423 8424---------------------------------------- 842514 November 2007. Summary of changes for version 20071114: 8426 84271) ACPI CA Core Subsystem: 8428 8429Implemented event counters for each of the Fixed Events, the ACPI SCI 8430(interrupt) itself, and control methods executed. Named 8431AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively. 8432These 8433should be useful for debugging and statistics. 8434 8435Implemented a new external interface, AcpiGetStatistics, to retrieve the 8436contents of the various event counters. Returns the current values for 8437AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and 8438AcpiMethodCount. The interface can be expanded in the future if new 8439counters 8440are added. Device drivers should use this interface rather than access 8441the 8442counters directly. 8443 8444Fixed a problem with the FromBCD and ToBCD operators. With some 8445compilers, 8446the ShortDivide function worked incorrectly, causing problems with the 8447BCD 8448functions with large input values. A truncation from 64-bit to 32-bit 8449inadvertently occurred. Internal BZ 435. Lin Ming 8450 8451Fixed a problem with Index references passed as method arguments. 8452References 8453passed as arguments to control methods were dereferenced immediately 8454(before 8455control was passed to the called method). The references are now 8456correctly 8457passed directly to the called method. BZ 5389. Lin Ming 8458 8459Fixed a problem with CopyObject used in conjunction with the Index 8460operator. 8461The reference was incorrectly dereferenced before the copy. The reference 8462is 8463now correctly copied. BZ 5391. Lin Ming 8464 8465Fixed a problem with Control Method references within Package objects. 8466These 8467references are now correctly generated. This completes the package 8468construction overhaul that began in version 20071019. 8469 8470Example Code and Data Size: These are the sizes for the OS-independent 8471acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8472debug version of the code includes the debug output trace mechanism and 8473has 8474a much larger code and data size. 8475 8476 Previous Release: 8477 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 8478 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 8479 Current Release: 8480 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total 8481 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total 8482 8483 84842) iASL Compiler/Disassembler and Tools: 8485 8486The AcpiExec utility now installs handlers for all of the predefined 8487Operation Region types. New types supported are: PCI_Config, CMOS, and 8488PCIBARTarget. 8489 8490Fixed a problem with the 64-bit version of AcpiExec where the extended 8491(64- 8492bit) address fields for the DSDT and FACS within the FADT were not being 8493used, causing truncation of the upper 32-bits of these addresses. Lin 8494Ming 8495and Bob Moore 8496 8497---------------------------------------- 849819 October 2007. Summary of changes for version 20071019: 8499 85001) ACPI CA Core Subsystem: 8501 8502Fixed a problem with the Alias operator when the target of the alias is a 8503named ASL operator that opens a new scope -- Scope, Device, 8504PowerResource, 8505Processor, and ThermalZone. In these cases, any children of the original 8506operator could not be accessed via the alias, potentially causing 8507unexpected 8508AE_NOT_FOUND exceptions. (BZ 9067) 8509 8510Fixed a problem with the Package operator where all named references were 8511created as object references and left otherwise unresolved. According to 8512the 8513ACPI specification, a Package can only contain Data Objects or references 8514to 8515control methods. The implication is that named references to Data Objects 8516(Integer, Buffer, String, Package, BufferField, Field) should be resolved 8517immediately upon package creation. This is the approach taken with this 8518change. References to all other named objects (Methods, Devices, Scopes, 8519etc.) are all now properly created as reference objects. (BZ 5328) 8520 8521Reverted a change to Notify handling that was introduced in version 852220070508. This version changed the Notify handling from asynchronous to 8523fully synchronous (Device driver Notify handling with respect to the 8524Notify 8525ASL operator). It was found that this change caused more problems than it 8526solved and was removed by most users. 8527 8528Fixed a problem with the Increment and Decrement operators where the type 8529of 8530the target object could be unexpectedly and incorrectly changed. (BZ 353) 8531Lin Ming. 8532 8533Fixed a problem with the Load and LoadTable operators where the table 8534location within the namespace was ignored. Instead, the table was always 8535loaded into the root or current scope. Lin Ming. 8536 8537Fixed a problem with the Load operator when loading a table from a buffer 8538object. The input buffer was prematurely zeroed and/or deleted. (BZ 577) 8539 8540Fixed a problem with the Debug object where a store of a DdbHandle 8541reference 8542object to the Debug object could cause a fault. 8543 8544Added a table checksum verification for the Load operator, in the case 8545where 8546the load is from a buffer. (BZ 578). 8547 8548Implemented additional parameter validation for the LoadTable operator. 8549The 8550length of the input strings SignatureString, OemIdString, and OemTableId 8551are 8552now checked for maximum lengths. (BZ 582) Lin Ming. 8553 8554Example Code and Data Size: These are the sizes for the OS-independent 8555acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8556debug version of the code includes the debug output trace mechanism and 8557has 8558a much larger code and data size. 8559 8560 Previous Release: 8561 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 8562 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 8563 Current Release: 8564 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total 8565 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total 8566 8567 85682) iASL Compiler/Disassembler: 8569 8570Fixed a problem where if a single file was specified and the file did not 8571exist, no error message was emitted. (Introduced with wildcard support in 8572version 20070917.) 8573 8574---------------------------------------- 857519 September 2007. Summary of changes for version 20070919: 8576 85771) ACPI CA Core Subsystem: 8578 8579Designed and implemented new external interfaces to install and remove 8580handlers for ACPI table-related events. Current events that are defined 8581are 8582LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as 8583they are dynamically loaded and unloaded. See AcpiInstallTableHandler and 8584AcpiRemoveTableHandler. (Lin Ming and Bob Moore) 8585 8586Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag 8587(acpi_serialized option on Linux) could cause some systems to hang during 8588initialization. (Bob Moore) BZ 8171 8589 8590Fixed a problem where objects of certain types (Device, ThermalZone, 8591Processor, PowerResource) can be not found if they are declared and 8592referenced from within the same control method (Lin Ming) BZ 341 8593 8594Example Code and Data Size: These are the sizes for the OS-independent 8595acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8596debug version of the code includes the debug output trace mechanism and 8597has 8598a much larger code and data size. 8599 8600 Previous Release: 8601 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 8602 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 8603 Current Release: 8604 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total 8605 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total 8606 8607 86082) iASL Compiler/Disassembler: 8609 8610Implemented support to allow multiple files to be compiled/disassembled 8611in 8612a 8613single invocation. This includes command line wildcard support for both 8614the 8615Windows and Unix versions of the compiler. This feature simplifies the 8616disassembly and compilation of multiple ACPI tables in a single 8617directory. 8618 8619---------------------------------------- 862008 May 2007. Summary of changes for version 20070508: 8621 86221) ACPI CA Core Subsystem: 8623 8624Implemented a Microsoft compatibility design change for the handling of 8625the 8626Notify AML operator. Previously, notify handlers were dispatched and 8627executed completely asynchronously in a deferred thread. The new design 8628still executes the notify handlers in a different thread, but the 8629original 8630thread that executed the Notify() now waits at a synchronization point 8631for 8632the notify handler to complete. Some machines depend on a synchronous 8633Notify 8634operator in order to operate correctly. 8635 8636Implemented support to allow Package objects to be passed as method 8637arguments to the external AcpiEvaluateObject interface. Previously, this 8638would return the AE_NOT_IMPLEMENTED exception. This feature had not been 8639implemented since there were no reserved control methods that required it 8640until recently. 8641 8642Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs 8643that 8644contained invalid non-zero values in reserved fields could cause later 8645failures because these fields have meaning in later revisions of the 8646FADT. 8647For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The 8648fields 8649are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.) 8650 8651Fixed a problem where the Global Lock handle was not properly updated if 8652a 8653thread that acquired the Global Lock via executing AML code then 8654attempted 8655to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by 8656Joe 8657Liu. 8658 8659Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list 8660could be corrupted if the interrupt being removed was at the head of the 8661list. Reported by Linn Crosetto. 8662 8663Example Code and Data Size: These are the sizes for the OS-independent 8664acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8665debug version of the code includes the debug output trace mechanism and 8666has 8667a much larger code and data size. 8668 8669 Previous Release: 8670 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8671 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 8672 Current Release: 8673 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total 8674 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total 8675 8676---------------------------------------- 867720 March 2007. Summary of changes for version 20070320: 8678 86791) ACPI CA Core Subsystem: 8680 8681Implemented a change to the order of interpretation and evaluation of AML 8682operand objects within the AML interpreter. The interpreter now evaluates 8683operands in the order that they appear in the AML stream (and the 8684corresponding ASL code), instead of in the reverse order (after the 8685entire 8686operand list has been parsed). The previous behavior caused several 8687subtle 8688incompatibilities with the Microsoft AML interpreter as well as being 8689somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov. 8690 8691Implemented a change to the ACPI Global Lock support. All interfaces to 8692the 8693global lock now allow the same thread to acquire the lock multiple times. 8694This affects the AcpiAcquireGlobalLock external interface to the global 8695lock 8696as well as the internal use of the global lock to support AML fields -- a 8697control method that is holding the global lock can now simultaneously 8698access 8699AML fields that require global lock protection. Previously, in both 8700cases, 8701this would have resulted in an AE_ALREADY_ACQUIRED exception. The change 8702to 8703AcpiAcquireGlobalLock is of special interest to drivers for the Embedded 8704Controller. There is no change to the behavior of the AML Acquire 8705operator, 8706as this can already be used to acquire a mutex multiple times by the same 8707thread. BZ 8066. With assistance from Alexey Starikovskiy. 8708 8709Fixed a problem where invalid objects could be referenced in the AML 8710Interpreter after error conditions. During operand evaluation, ensure 8711that 8712the internal "Return Object" field is cleared on error and only valid 8713pointers are stored there. Caused occasional access to deleted objects 8714that 8715resulted in "large reference count" warning messages. Valery Podrezov. 8716 8717Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur 8718on 8719deeply nested control method invocations. BZ 7873, local BZ 487. Valery 8720Podrezov. 8721 8722Fixed an internal problem with the handling of result objects on the 8723interpreter result stack. BZ 7872. Valery Podrezov. 8724 8725Removed obsolete code that handled the case where AML_NAME_OP is the 8726target 8727of a reference (Reference.Opcode). This code was no longer necessary. BZ 87287874. Valery Podrezov. 8729 8730Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This 8731was 8732a 8733remnant from the previously discontinued 16-bit support. 8734 8735Example Code and Data Size: These are the sizes for the OS-independent 8736acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8737debug version of the code includes the debug output trace mechanism and 8738has 8739a much larger code and data size. 8740 8741 Previous Release: 8742 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8743 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8744 Current Release: 8745 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8746 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total 8747 8748---------------------------------------- 874926 January 2007. Summary of changes for version 20070126: 8750 87511) ACPI CA Core Subsystem: 8752 8753Added the 2007 copyright to all module headers and signons. This affects 8754virtually every file in the ACPICA core subsystem, the iASL compiler, and 8755the utilities. 8756 8757Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable 8758during a table load. A bad pointer was passed in the case where the DSDT 8759is 8760overridden, causing a fault in this case. 8761 8762Example Code and Data Size: These are the sizes for the OS-independent 8763acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8764debug version of the code includes the debug output trace mechanism and 8765has 8766a much larger code and data size. 8767 8768 Previous Release: 8769 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8770 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8771 Current Release: 8772 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8773 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8774 8775---------------------------------------- 877615 December 2006. Summary of changes for version 20061215: 8777 87781) ACPI CA Core Subsystem: 8779 8780Support for 16-bit ACPICA has been completely removed since it is no 8781longer 8782necessary and it clutters the code. All 16-bit macros, types, and 8783conditional compiles have been removed, cleaning up and simplifying the 8784code 8785across the entire subsystem. DOS support is no longer needed since the 8786bootable Linux firmware kit is now available. 8787 8788The handler for the Global Lock is now removed during AcpiTerminate to 8789enable a clean subsystem restart, via the implementation of the 8790AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz, 8791HP) 8792 8793Implemented enhancements to the multithreading support within the 8794debugger 8795to enable improved multithreading debugging and evaluation of the 8796subsystem. 8797(Valery Podrezov) 8798 8799Debugger: Enhanced the Statistics/Memory command to emit the total 8800(maximum) 8801memory used during the execution, as well as the maximum memory consumed 8802by 8803each of the various object types. (Valery Podrezov) 8804 8805Example Code and Data Size: These are the sizes for the OS-independent 8806acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8807debug version of the code includes the debug output trace mechanism and 8808has 8809a much larger code and data size. 8810 8811 Previous Release: 8812 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 8813 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 8814 Current Release: 8815 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total 8816 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total 8817 8818 88192) iASL Compiler/Disassembler and Tools: 8820 8821AcpiExec: Implemented a new option (-m) to display full memory use 8822statistics upon subsystem/program termination. (Valery Podrezov) 8823 8824---------------------------------------- 882509 November 2006. Summary of changes for version 20061109: 8826 88271) ACPI CA Core Subsystem: 8828 8829Optimized the Load ASL operator in the case where the source operand is 8830an 8831operation region. Simply map the operation region memory, instead of 8832performing a bytewise read. (Region must be of type SystemMemory, see 8833below.) 8834 8835Fixed the Load ASL operator for the case where the source operand is a 8836region field. A buffer object is also allowed as the source operand. BZ 8837480 8838 8839Fixed a problem where the Load ASL operator allowed the source operand to 8840be 8841an operation region of any type. It is now restricted to regions of type 8842SystemMemory, as per the ACPI specification. BZ 481 8843 8844Additional cleanup and optimizations for the new Table Manager code. 8845 8846AcpiEnable will now fail if all of the required ACPI tables are not 8847loaded 8848(FADT, FACS, DSDT). BZ 477 8849 8850Added #pragma pack(8/4) to acobject.h to ensure that the structures in 8851this 8852header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been 8853manually optimized to be aligned and will not work if it is byte-packed. 8854 8855Example Code and Data Size: These are the sizes for the OS-independent 8856acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8857debug version of the code includes the debug output trace mechanism and 8858has 8859a much larger code and data size. 8860 8861 Previous Release: 8862 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 8863 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 8864 Current Release: 8865 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total 8866 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total 8867 8868 88692) iASL Compiler/Disassembler and Tools: 8870 8871Fixed a problem where the presence of the _OSI predefined control method 8872within complex expressions could cause an internal compiler error. 8873 8874AcpiExec: Implemented full region support for multiple address spaces. 8875SpaceId is now part of the REGION object. BZ 429 8876 8877---------------------------------------- 887811 October 2006. Summary of changes for version 20061011: 8879 88801) ACPI CA Core Subsystem: 8881 8882Completed an AML interpreter performance enhancement for control method 8883execution. Previously a 2-pass parse/execution, control methods are now 8884completely parsed and executed in a single pass. This improves overall 8885interpreter performance by ~25%, reduces code size, and reduces CPU stack 8886use. (Valery Podrezov + interpreter changes in version 20051202 that 8887eliminated namespace loading during the pass one parse.) 8888 8889Implemented _CID support for PCI Root Bridge detection. If the _HID does 8890not 8891match the predefined PCI Root Bridge IDs, the _CID list (if present) is 8892now 8893obtained and also checked for an ID match. 8894 8895Implemented additional support for the PCI _ADR execution: upsearch until 8896a 8897device scope is found before executing _ADR. This allows PCI_Config 8898operation regions to be declared locally within control methods 8899underneath 8900PCI device objects. 8901 8902Fixed a problem with a possible race condition between threads executing 8903AcpiWalkNamespace and the AML interpreter. This condition was removed by 8904modifying AcpiWalkNamespace to (by default) ignore all temporary 8905namespace 8906entries created during any concurrent control method execution. An 8907additional namespace race condition is known to exist between 8908AcpiWalkNamespace and the Load/Unload ASL operators and is still under 8909investigation. 8910 8911Restructured the AML ParseLoop function, breaking it into several 8912subfunctions in order to reduce CPU stack use and improve 8913maintainability. 8914(Mikhail Kouzmich) 8915 8916AcpiGetHandle: Fix for parameter validation to detect invalid 8917combinations 8918of prefix handle and pathname. BZ 478 8919 8920Example Code and Data Size: These are the sizes for the OS-independent 8921acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8922debug version of the code includes the debug output trace mechanism and 8923has 8924a much larger code and data size. 8925 8926 Previous Release: 8927 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8928 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 8929 Current Release: 8930 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total 8931 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total 8932 89332) iASL Compiler/Disassembler and Tools: 8934 8935Ported the -g option (get local ACPI tables) to the new ACPICA Table 8936Manager 8937to restore original behavior. 8938 8939---------------------------------------- 894027 September 2006. Summary of changes for version 20060927: 8941 89421) ACPI CA Core Subsystem: 8943 8944Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister. 8945These functions now use a spinlock for mutual exclusion and the interrupt 8946level indication flag is not needed. 8947 8948Fixed a problem with the Global Lock where the lock could appear to be 8949obtained before it is actually obtained. The global lock semaphore was 8950inadvertently created with one unit instead of zero units. (BZ 464) 8951Fiodor 8952Suietov. 8953 8954Fixed a possible memory leak and fault in AcpiExResolveObjectToValue 8955during 8956a read from a buffer or region field. (BZ 458) Fiodor Suietov. 8957 8958Example Code and Data Size: These are the sizes for the OS-independent 8959acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 8960debug version of the code includes the debug output trace mechanism and 8961has 8962a much larger code and data size. 8963 8964 Previous Release: 8965 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8966 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 8967 Current Release: 8968 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 8969 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total 8970 8971 89722) iASL Compiler/Disassembler and Tools: 8973 8974Fixed a compilation problem with the pre-defined Resource Descriptor 8975field 8976names where an "object does not exist" error could be incorrectly 8977generated 8978if the parent ResourceTemplate pathname places the template within a 8979different namespace scope than the current scope. (BZ 7212) 8980 8981Fixed a problem where the compiler could hang after syntax errors 8982detected 8983in an ElseIf construct. (BZ 453) 8984 8985Fixed a problem with the AmlFilename parameter to the DefinitionBlock() 8986operator. An incorrect output filename was produced when this parameter 8987was 8988a null string (""). Now, the original input filename is used as the AML 8989output filename, with an ".aml" extension. 8990 8991Implemented a generic batch command mode for the AcpiExec utility 8992(execute 8993any AML debugger command) (Valery Podrezov). 8994 8995---------------------------------------- 899612 September 2006. Summary of changes for version 20060912: 8997 89981) ACPI CA Core Subsystem: 8999 9000Enhanced the implementation of the "serialized mode" of the interpreter 9001(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is 9002specified, instead of creating a serialization semaphore per control 9003method, 9004the interpreter lock is simply no longer released before a blocking 9005operation during control method execution. This effectively makes the AML 9006Interpreter single-threaded. The overhead of a semaphore per-method is 9007eliminated. 9008 9009Fixed a regression where an error was no longer emitted if a control 9010method 9011attempts to create 2 objects of the same name. This once again returns 9012AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism 9013that 9014will dynamically serialize the control method to possible prevent future 9015errors. (BZ 440) 9016 9017Integrated a fix for a problem with PCI Express HID detection in the PCI 9018Config Space setup procedure. (BZ 7145) 9019 9020Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the 9021AcpiHwInitialize function - the FADT registers are now validated when the 9022table is loaded. 9023 9024Added two new warnings during FADT verification - 1) if the FADT is 9025larger 9026than the largest known FADT version, and 2) if there is a mismatch 9027between 9028a 902932-bit block address and the 64-bit X counterpart (when both are non- 9030zero.) 9031 9032Example Code and Data Size: These are the sizes for the OS-independent 9033acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9034debug version of the code includes the debug output trace mechanism and 9035has 9036a much larger code and data size. 9037 9038 Previous Release: 9039 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 9040 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 9041 Current Release: 9042 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total 9043 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total 9044 9045 90462) iASL Compiler/Disassembler and Tools: 9047 9048Fixed a problem with the implementation of the Switch() operator where 9049the 9050temporary variable was declared too close to the actual Switch, instead 9051of 9052at method level. This could cause a problem if the Switch() operator is 9053within a while loop, causing an error on the second iteration. (BZ 460) 9054 9055Disassembler - fix for error emitted for unknown type for target of scope 9056operator. Now, ignore it and continue. 9057 9058Disassembly of an FADT now verifies the input FADT and reports any errors 9059found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs. 9060 9061Disassembly of raw data buffers with byte initialization data now 9062prefixes 9063each output line with the current buffer offset. 9064 9065Disassembly of ASF! table now includes all variable-length data fields at 9066the end of some of the subtables. 9067 9068The disassembler now emits a comment if a buffer appears to be a 9069ResourceTemplate, but cannot be disassembled as such because the EndTag 9070does 9071not appear at the very end of the buffer. 9072 9073AcpiExec - Added the "-t" command line option to enable the serialized 9074mode 9075of the AML interpreter. 9076 9077---------------------------------------- 907831 August 2006. Summary of changes for version 20060831: 9079 90801) ACPI CA Core Subsystem: 9081 9082Miscellaneous fixes for the Table Manager: 9083- Correctly initialize internal common FADT for all 64-bit "X" fields 9084- Fixed a couple table mapping issues during table load 9085- Fixed a couple alignment issues for IA64 9086- Initialize input array to zero in AcpiInitializeTables 9087- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader, 9088AcpiGetTableByIndex 9089 9090Change for GPE support: when a "wake" GPE is received, all wake GPEs are 9091now 9092immediately disabled to prevent the waking GPE from firing again and to 9093prevent other wake GPEs from interrupting the wake process. 9094 9095Added the AcpiGpeCount global that tracks the number of processed GPEs, 9096to 9097be used for debugging systems with a large number of ACPI interrupts. 9098 9099Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in 9100both the ACPICA headers and the disassembler. 9101 9102Example Code and Data Size: These are the sizes for the OS-independent 9103acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9104debug version of the code includes the debug output trace mechanism and 9105has 9106a much larger code and data size. 9107 9108 Previous Release: 9109 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 9110 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 9111 Current Release: 9112 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total 9113 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total 9114 9115 91162) iASL Compiler/Disassembler and Tools: 9117 9118Disassembler support for the DMAR ACPI table. 9119 9120---------------------------------------- 912123 August 2006. Summary of changes for version 20060823: 9122 91231) ACPI CA Core Subsystem: 9124 9125The Table Manager component has been completely redesigned and 9126reimplemented. The new design is much simpler, and reduces the overall 9127code 9128and data size of the kernel-resident ACPICA by approximately 5%. Also, it 9129is 9130now possible to obtain the ACPI tables very early during kernel 9131initialization, even before dynamic memory management is initialized. 9132(Alexey Starikovskiy, Fiodor Suietov, Bob Moore) 9133 9134Obsolete ACPICA interfaces: 9135 9136- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel 9137init 9138time). 9139- AcpiLoadTable: Not needed. 9140- AcpiUnloadTable: Not needed. 9141 9142New ACPICA interfaces: 9143 9144- AcpiInitializeTables: Must be called before the table manager can be 9145used. 9146- AcpiReallocateRootTable: Used to transfer the root table to dynamically 9147allocated memory after it becomes available. 9148- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI 9149tables 9150in the RSDT/XSDT. 9151 9152Other ACPICA changes: 9153 9154- AcpiGetTableHeader returns the actual mapped table header, not a copy. 9155Use 9156AcpiOsUnmapMemory to free this mapping. 9157- AcpiGetTable returns the actual mapped table. The mapping is managed 9158internally and must not be deleted by the caller. Use of this interface 9159causes no additional dynamic memory allocation. 9160- AcpiFindRootPointer: Support for physical addressing has been 9161eliminated, 9162it appeared to be unused. 9163- The interface to AcpiOsMapMemory has changed to be consistent with the 9164other allocation interfaces. 9165- The interface to AcpiOsGetRootPointer has changed to eliminate 9166unnecessary 9167parameters. 9168- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on 916964- 9170bit platforms. Was previously 64 bits on all platforms. 9171- The interface to the ACPI Global Lock acquire/release macros have 9172changed 9173slightly since ACPICA no longer keeps a local copy of the FACS with a 9174constructed pointer to the actual global lock. 9175 9176Porting to the new table manager: 9177 9178- AcpiInitializeTables: Must be called once, and can be called anytime 9179during the OS initialization process. It allows the host to specify an 9180area 9181of memory to be used to store the internal version of the RSDT/XSDT (root 9182table). This allows the host to access ACPI tables before memory 9183management 9184is initialized and running. 9185- AcpiReallocateRootTable: Can be called after memory management is 9186running 9187to copy the root table to a dynamically allocated array, freeing up the 9188scratch memory specified in the call to AcpiInitializeTables. 9189- AcpiSubsystemInitialize: This existing interface is independent of the 9190Table Manager, and does not have to be called before the Table Manager 9191can 9192be used, it only must be called before the rest of ACPICA can be used. 9193- ACPI Tables: Some changes have been made to the names and structure of 9194the 9195actbl.h and actbl1.h header files and may require changes to existing 9196code. 9197For example, bitfields have been completely removed because of their lack 9198of 9199portability across C compilers. 9200- Update interfaces to the Global Lock acquire/release macros if local 9201versions are used. (see acwin.h) 9202 9203Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c 9204 9205New files: tbfind.c 9206 9207Example Code and Data Size: These are the sizes for the OS-independent 9208acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9209debug version of the code includes the debug output trace mechanism and 9210has 9211a much larger code and data size. 9212 9213 Previous Release: 9214 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 9215 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 9216 Current Release: 9217 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total 9218 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total 9219 9220 92212) iASL Compiler/Disassembler and Tools: 9222 9223No changes for this release. 9224 9225---------------------------------------- 922621 July 2006. Summary of changes for version 20060721: 9227 92281) ACPI CA Core Subsystem: 9229 9230The full source code for the ASL test suite used to validate the iASL 9231compiler and the ACPICA core subsystem is being released with the ACPICA 9232source for the first time. The source is contained in a separate package 9233and 9234consists of over 1100 files that exercise all ASL/AML operators. The 9235package 9236should appear on the Intel/ACPI web site shortly. (Valery Podrezov, 9237Fiodor 9238Suietov) 9239 9240Completed a new design and implementation for support of the ACPI Global 9241Lock. On the OS side, the global lock is now treated as a standard AML 9242mutex. Previously, multiple OS threads could "acquire" the global lock 9243simultaneously. However, this could cause the BIOS to be starved out of 9244the 9245lock - especially in cases such as the Embedded Controller driver where 9246there is a tight coupling between the OS and the BIOS. 9247 9248Implemented an optimization for the ACPI Global Lock interrupt mechanism. 9249The Global Lock interrupt handler no longer queues the execution of a 9250separate thread to signal the global lock semaphore. Instead, the 9251semaphore 9252is signaled directly from the interrupt handler. 9253 9254Implemented support within the AML interpreter for package objects that 9255contain a larger AML length (package list length) than the package 9256element 9257count. In this case, the length of the package is truncated to match the 9258package element count. Some BIOS code apparently modifies the package 9259length 9260on the fly, and this change supports this behavior. Provides 9261compatibility 9262with the MS AML interpreter. (With assistance from Fiodor Suietov) 9263 9264Implemented a temporary fix for the BankValue parameter of a Bank Field 9265to 9266support all constant values, now including the Zero and One opcodes. 9267Evaluation of this parameter must eventually be converted to a full 9268TermArg 9269evaluation. A not-implemented error is now returned (temporarily) for 9270non- 9271constant values for this parameter. 9272 9273Fixed problem reports (Fiodor Suietov) integrated: 9274- Fix for premature object deletion after CopyObject on Operation Region 9275(BZ 9276350) 9277 9278Example Code and Data Size: These are the sizes for the OS-independent 9279acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9280debug version of the code includes the debug output trace mechanism and 9281has 9282a much larger code and data size. 9283 9284 Previous Release: 9285 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total 9286 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total 9287 Current Release: 9288 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 9289 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 9290 9291 92922) iASL Compiler/Disassembler and Tools: 9293 9294No changes for this release. 9295 9296---------------------------------------- 929707 July 2006. Summary of changes for version 20060707: 9298 92991) ACPI CA Core Subsystem: 9300 9301Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers 9302that do not allow the initialization of address pointers within packed 9303structures - even though the hardware itself may support misaligned 9304transfers. Some of the debug data structures are packed by default to 9305minimize size. 9306 9307Added an error message for the case where AcpiOsGetThreadId() returns 9308zero. 9309A non-zero value is required by the core ACPICA code to ensure the proper 9310operation of AML mutexes and recursive control methods. 9311 9312The DSDT is now the only ACPI table that determines whether the AML 9313interpreter is in 32-bit or 64-bit mode. Not really a functional change, 9314but 9315the hooks for per-table 32/64 switching have been removed from the code. 9316A 9317clarification to the ACPI specification is forthcoming in ACPI 3.0B. 9318 9319Fixed a possible leak of an OwnerID in the error path of 9320AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID 9321deletion to a single place in AcpiTbUninstallTable to correct possible 9322leaks 9323when using the AcpiTbDeleteTablesByType interface (with assistance from 9324Lance Ortiz.) 9325 9326Fixed a problem with Serialized control methods where the semaphore 9327associated with the method could be over-signaled after multiple method 9328invocations. 9329 9330Fixed two issues with the locking of the internal namespace data 9331structure. 9332Both the Unload() operator and AcpiUnloadTable interface now lock the 9333namespace during the namespace deletion associated with the table unload 9334(with assistance from Linn Crosetto.) 9335 9336Fixed problem reports (Valery Podrezov) integrated: 9337- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426) 9338 9339Fixed problem reports (Fiodor Suietov) integrated: 9340- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369) 9341- On Address Space handler deletion, needless deactivation call (BZ 374) 9342- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ 9343375) 9344- Possible memory leak, Notify sub-objects of Processor, Power, 9345ThermalZone 9346(BZ 376) 9347- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378) 9348- Minimum Length of RSDT should be validated (BZ 379) 9349- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no 9350Handler (BZ (380) 9351- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type 9352loaded 9353(BZ 381) 9354 9355Example Code and Data Size: These are the sizes for the OS-independent 9356acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9357debug version of the code includes the debug output trace mechanism and 9358has 9359a much larger code and data size. 9360 9361 Previous Release: 9362 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 9363 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 9364 Current Release: 9365 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total 9366 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total 9367 9368 93692) iASL Compiler/Disassembler and Tools: 9370 9371Fixed problem reports: 9372Compiler segfault when ASL contains a long (>1024) String declaration (BZ 9373436) 9374 9375---------------------------------------- 937623 June 2006. Summary of changes for version 20060623: 9377 93781) ACPI CA Core Subsystem: 9379 9380Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This 9381allows the type to be customized to the host OS for improved efficiency 9382(since a spinlock is usually a very small object.) 9383 9384Implemented support for "ignored" bits in the ACPI registers. According 9385to 9386the ACPI specification, these bits should be preserved when writing the 9387registers via a read/modify/write cycle. There are 3 bits preserved in 9388this 9389manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11]. 9390 9391Implemented the initial deployment of new OSL mutex interfaces. Since 9392some 9393host operating systems have separate mutex and semaphore objects, this 9394feature was requested. The base code now uses mutexes (and the new mutex 9395interfaces) wherever a binary semaphore was used previously. However, for 9396the current release, the mutex interfaces are defined as macros to map 9397them 9398to the existing semaphore interfaces. Therefore, no OSL changes are 9399required 9400at this time. (See acpiosxf.h) 9401 9402Fixed several problems with the support for the control method SyncLevel 9403parameter. The SyncLevel now works according to the ACPI specification 9404and 9405in concert with the Mutex SyncLevel parameter, since the current 9406SyncLevel 9407is a property of the executing thread. Mutual exclusion for control 9408methods 9409is now implemented with a mutex instead of a semaphore. 9410 9411Fixed three instances of the use of the C shift operator in the bitfield 9412support code (exfldio.c) to avoid the use of a shift value larger than 9413the 9414target data width. The behavior of C compilers is undefined in this case 9415and 9416can cause unpredictable results, and therefore the case must be detected 9417and 9418avoided. (Fiodor Suietov) 9419 9420Added an info message whenever an SSDT or OEM table is loaded dynamically 9421via the Load() or LoadTable() ASL operators. This should improve 9422debugging 9423capability since it will show exactly what tables have been loaded 9424(beyond 9425the tables present in the RSDT/XSDT.) 9426 9427Example Code and Data Size: These are the sizes for the OS-independent 9428acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9429debug version of the code includes the debug output trace mechanism and 9430has 9431a much larger code and data size. 9432 9433 Previous Release: 9434 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 9435 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 9436 Current Release: 9437 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total 9438 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total 9439 9440 94412) iASL Compiler/Disassembler and Tools: 9442 9443No changes for this release. 9444 9445---------------------------------------- 944608 June 2006. Summary of changes for version 20060608: 9447 94481) ACPI CA Core Subsystem: 9449 9450Converted the locking mutex used for the ACPI hardware to a spinlock. 9451This 9452change should eliminate all problems caused by attempting to acquire a 9453semaphore at interrupt level, and it means that all ACPICA external 9454interfaces that directly access the ACPI hardware can be safely called 9455from 9456interrupt level. OSL code that implements the semaphore interfaces should 9457be 9458able to eliminate any workarounds for being called at interrupt level. 9459 9460Fixed a regression introduced in 20060526 where the ACPI device 9461initialization could be prematurely aborted with an AE_NOT_FOUND if a 9462device 9463did not have an optional _INI method. 9464 9465Fixed an IndexField issue where a write to the Data Register should be 9466limited in size to the AccessSize (width) of the IndexField itself. (BZ 9467433, 9468Fiodor Suietov) 9469 9470Fixed problem reports (Valery Podrezov) integrated: 9471- Allow store of ThermalZone objects to Debug object (BZ 5369/5370) 9472 9473Fixed problem reports (Fiodor Suietov) integrated: 9474- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364) 9475 9476Removed four global mutexes that were obsolete and were no longer being 9477used. 9478 9479Example Code and Data Size: These are the sizes for the OS-independent 9480acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9481debug version of the code includes the debug output trace mechanism and 9482has 9483a much larger code and data size. 9484 9485 Previous Release: 9486 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 9487 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 9488 Current Release: 9489 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total 9490 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total 9491 9492 94932) iASL Compiler/Disassembler and Tools: 9494 9495Fixed a fault when using -g option (get tables from registry) on Windows 9496machines. 9497 9498Fixed problem reports integrated: 9499- Generate error if CreateField NumBits parameter is zero. (BZ 405) 9500- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor 9501Suietov) 9502- Global table revision override (-r) is ignored (BZ 413) 9503 9504---------------------------------------- 950526 May 2006. Summary of changes for version 20060526: 9506 95071) ACPI CA Core Subsystem: 9508 9509Restructured, flattened, and simplified the internal interfaces for 9510namespace object evaluation - resulting in smaller code, less CPU stack 9511use, 9512and fewer interfaces. (With assistance from Mikhail Kouzmich) 9513 9514Fixed a problem with the CopyObject operator where the first parameter 9515was 9516not typed correctly for the parser, interpreter, compiler, and 9517disassembler. 9518Caused various errors and unexpected behavior. 9519 9520Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits 9521produced incorrect results with some C compilers. Since the behavior of C 9522compilers when the shift value is larger than the datatype width is 9523apparently not well defined, the interpreter now detects this condition 9524and 9525simply returns zero as expected in all such cases. (BZ 395) 9526 9527Fixed problem reports (Valery Podrezov) integrated: 9528- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329) 9529- Allow interpreter to handle nested method declarations (BZ 5361) 9530 9531Fixed problem reports (Fiodor Suietov) integrated: 9532- AcpiTerminate doesn't free debug memory allocation list objects (BZ 9533355) 9534- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ 9535356) 9536- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357) 9537- Resource Manager should return AE_TYPE for non-device objects (BZ 358) 9538- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359) 9539- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360) 9540- Incomplete cleanup branch in AcpiPsParseAml (BZ 361) 9541- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362) 9542- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ 9543365) 9544- Status of the Global Initialization Handler call not used (BZ 366) 9545- Incorrect object parameter to Global Initialization Handler (BZ 367) 9546 9547Example Code and Data Size: These are the sizes for the OS-independent 9548acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9549debug version of the code includes the debug output trace mechanism and 9550has 9551a much larger code and data size. 9552 9553 Previous Release: 9554 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 9555 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 9556 Current Release: 9557 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total 9558 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total 9559 9560 95612) iASL Compiler/Disassembler and Tools: 9562 9563Modified the parser to allow the names IO, DMA, and IRQ to be used as 9564namespace identifiers with no collision with existing resource descriptor 9565macro names. This provides compatibility with other ASL compilers and is 9566most useful for disassembly/recompilation of existing tables without 9567parse 9568errors. (With assistance from Thomas Renninger) 9569 9570Disassembler: fixed an incorrect disassembly problem with the 9571DataTableRegion and CopyObject operators. Fixed a possible fault during 9572disassembly of some Alias operators. 9573 9574---------------------------------------- 957512 May 2006. Summary of changes for version 20060512: 9576 95771) ACPI CA Core Subsystem: 9578 9579Replaced the AcpiOsQueueForExecution interface with a new interface named 9580AcpiOsExecute. The major difference is that the new interface does not 9581have 9582a Priority parameter, this appeared to be useless and has been replaced 9583by 9584a 9585Type parameter. The Type tells the host what type of execution is being 9586requested, such as global lock handler, notify handler, GPE handler, etc. 9587This allows the host to queue and execute the request as appropriate for 9588the 9589request type, possibly using different work queues and different 9590priorities 9591for the various request types. This enables fixes for multithreading 9592deadlock problems such as BZ #5534, and will require changes to all 9593existing 9594OS interface layers. (Alexey Starikovskiy and Bob Moore) 9595 9596Fixed a possible memory leak associated with the support for the so- 9597called 9598"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor 9599Suietov) 9600 9601Fixed a problem with the Load() operator where a table load from an 9602operation region could overwrite an internal table buffer by up to 7 9603bytes 9604and cause alignment faults on IPF systems. (With assistance from Luming 9605Yu) 9606 9607Example Code and Data Size: These are the sizes for the OS-independent 9608acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9609debug version of the code includes the debug output trace mechanism and 9610has 9611a much larger code and data size. 9612 9613 Previous Release: 9614 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 9615 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 9616 Current Release: 9617 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total 9618 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total 9619 9620 9621 96222) iASL Compiler/Disassembler and Tools: 9623 9624Disassembler: Implemented support to cross reference the internal 9625namespace 9626and automatically generate ASL External() statements for symbols not 9627defined 9628within the current table being disassembled. This will simplify the 9629disassembly and recompilation of interdependent tables such as SSDTs 9630since 9631these statements will no longer have to be added manually. 9632 9633Disassembler: Implemented experimental support to automatically detect 9634invocations of external control methods and generate appropriate 9635External() 9636statements. This is problematic because the AML cannot be correctly 9637parsed 9638until the number of arguments for each control method is known. 9639Currently, 9640standalone method invocations and invocations as the source operand of a 9641Store() statement are supported. 9642 9643Disassembler: Implemented support for the ASL pseudo-operators LNotEqual, 9644LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()), 9645LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code 9646more readable and likely closer to the original ASL source. 9647 9648---------------------------------------- 964921 April 2006. Summary of changes for version 20060421: 9650 96511) ACPI CA Core Subsystem: 9652 9653Removed a device initialization optimization introduced in 20051216 where 9654the _STA method was not run unless an _INI was also present for the same 9655device. This optimization could cause problems because it could allow 9656_INI 9657methods to be run within a not-present device subtree. (If a not-present 9658device had no _INI, _STA would not be run, the not-present status would 9659not 9660be discovered, and the children of the device would be incorrectly 9661traversed.) 9662 9663Implemented a new _STA optimization where namespace subtrees that do not 9664contain _INI are identified and ignored during device initialization. 9665Selectively running _STA can significantly improve boot time on large 9666machines (with assistance from Len Brown.) 9667 9668Implemented support for the device initialization case where the returned 9669_STA flags indicate a device not-present but functioning. In this case, 9670_INI 9671is not run, but the device children are examined for presence, as per the 9672ACPI specification. 9673 9674Implemented an additional change to the IndexField support in order to 9675conform to MS behavior. The value written to the Index Register is not 9676simply a byte offset, it is a byte offset in units of the access width of 9677the parent Index Field. (Fiodor Suietov) 9678 9679Defined and deployed a new OSL interface, AcpiOsValidateAddress. This 9680interface is called during the creation of all AML operation regions, and 9681allows the host OS to exert control over what addresses it will allow the 9682AML code to access. Operation Regions whose addresses are disallowed will 9683cause a runtime exception when they are actually accessed (will not 9684affect 9685or abort table loading.) See oswinxf or osunixxf for an example 9686implementation. 9687 9688Defined and deployed a new OSL interface, AcpiOsValidateInterface. This 9689interface allows the host OS to match the various "optional" 9690interface/behavior strings for the _OSI predefined control method as 9691appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf 9692for an example implementation. 9693 9694Restructured and corrected various problems in the exception handling 9695code 9696paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod 9697(with assistance from Takayoshi Kochi.) 9698 9699Modified the Linux source converter to ignore quoted string literals 9700while 9701converting identifiers from mixed to lower case. This will correct 9702problems 9703with the disassembler and other areas where such strings must not be 9704modified. 9705 9706The ACPI_FUNCTION_* macros no longer require quotes around the function 9707name. This allows the Linux source converter to convert the names, now 9708that 9709the converter ignores quoted strings. 9710 9711Example Code and Data Size: These are the sizes for the OS-independent 9712acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9713debug version of the code includes the debug output trace mechanism and 9714has 9715a much larger code and data size. 9716 9717 Previous Release: 9718 9719 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 9720 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 9721 Current Release: 9722 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total 9723 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total 9724 9725 97262) iASL Compiler/Disassembler and Tools: 9727 9728Implemented 3 new warnings for iASL, and implemented multiple warning 9729levels 9730(w2 flag). 9731 97321) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is 9733not 9734WAIT_FOREVER (0xFFFF) and the code does not examine the return value to 9735check for the possible timeout, a warning is issued. 9736 97372) Useless operators: If an ASL operator does not specify an optional 9738target 9739operand and it also does not use the function return value from the 9740operator, a warning is issued since the operator effectively does 9741nothing. 9742 97433) Unreferenced objects: If a namespace object is created, but never 9744referenced, a warning is issued. This is a warning level 2 since there 9745are 9746cases where this is ok, such as when a secondary table is loaded that 9747uses 9748the unreferenced objects. Even so, care is taken to only flag objects 9749that 9750don't look like they will ever be used. For example, the reserved methods 9751(starting with an underscore) are usually not referenced because it is 9752expected that the OS will invoke them. 9753 9754---------------------------------------- 975531 March 2006. Summary of changes for version 20060331: 9756 97571) ACPI CA Core Subsystem: 9758 9759Implemented header file support for the following additional ACPI tables: 9760ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this 9761support, 9762all current and known ACPI tables are now defined in the ACPICA headers 9763and 9764are available for use by device drivers and other software. 9765 9766Implemented support to allow tables that contain ACPI names with invalid 9767characters to be loaded. Previously, this would cause the table load to 9768fail, but since there are several known cases of such tables on existing 9769machines, this change was made to enable ACPI support for them. Also, 9770this 9771matches the behavior of the Microsoft ACPI implementation. 9772 9773Fixed a couple regressions introduced during the memory optimization in 9774the 977520060317 release. The namespace node definition required additional 9776reorganization and an internal datatype that had been changed to 8-bit 9777was 9778restored to 32-bit. (Valery Podrezov) 9779 9780Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState 9781could be passed through to AcpiOsReleaseObject which is unexpected. Such 9782null pointers are now trapped and ignored, matching the behavior of the 9783previous implementation before the deployment of AcpiOsReleaseObject. 9784(Valery Podrezov, Fiodor Suietov) 9785 9786Fixed a memory mapping leak during the deletion of a SystemMemory 9787operation 9788region where a cached memory mapping was not deleted. This became a 9789noticeable problem for operation regions that are defined within 9790frequently 9791used control methods. (Dana Meyers) 9792 9793Reorganized the ACPI table header files into two main files: one for the 9794ACPI tables consumed by the ACPICA core, and another for the 9795miscellaneous 9796ACPI tables that are consumed by the drivers and other software. The 9797various 9798FADT definitions were merged into one common section and three different 9799tables (ACPI 1.0, 1.0+, and 2.0) 9800 9801Example Code and Data Size: These are the sizes for the OS-independent 9802acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The 9803debug version of the code includes the debug output trace mechanism and 9804has 9805a much larger code and data size. 9806 9807 Previous Release: 9808 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 9809 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 9810 Current Release: 9811 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total 9812 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total 9813 9814 98152) iASL Compiler/Disassembler and Tools: 9816 9817Disassembler: Implemented support to decode and format all non-AML ACPI 9818tables (tables other than DSDTs and SSDTs.) This includes the new tables 9819added to the ACPICA headers, therefore all current and known ACPI tables 9820are 9821supported. 9822 9823Disassembler: The change to allow ACPI names with invalid characters also 9824enables the disassembly of such tables. Invalid characters within names 9825are 9826changed to '*' to make the name printable; the iASL compiler will still 9827generate an error for such names, however, since this is an invalid ACPI 9828character. 9829 9830Implemented an option for AcpiXtract (-a) to extract all tables found in 9831the 9832input file. The default invocation extracts only the DSDTs and SSDTs. 9833 9834Fixed a couple of gcc generation issues for iASL and AcpiExec and added a 9835makefile for the AcpiXtract utility. 9836 9837---------------------------------------- 983817 March 2006. Summary of changes for version 20060317: 9839 98401) ACPI CA Core Subsystem: 9841 9842Implemented the use of a cache object for all internal namespace nodes. 9843Since there are about 1000 static nodes in a typical system, this will 9844decrease memory use for cache implementations that minimize per- 9845allocation 9846overhead (such as a slab allocator.) 9847 9848Removed the reference count mechanism for internal namespace nodes, since 9849it 9850was deemed unnecessary. This reduces the size of each namespace node by 9851about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit 9852case, 9853and 32 bytes for the 64-bit case. 9854 9855Optimized several internal data structures to reduce object size on 64- 9856bit 9857platforms by packing data within the 64-bit alignment. This includes the 9858frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static 9859instances corresponding to the namespace objects. 9860 9861Added two new strings for the predefined _OSI method: "Windows 2001.1 9862SP1" 9863and "Windows 2006". 9864 9865Split the allocation tracking mechanism out to a separate file, from 9866utalloc.c to uttrack.c. This mechanism appears to be only useful for 9867application-level code. Kernels may wish to not include uttrack.c in 9868distributions. 9869 9870Removed all remnants of the obsolete ACPI_REPORT_* macros and the 9871associated 9872code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING 9873macros.) 9874 9875Code and Data Size: These are the sizes for the acpica.lib produced by 9876the 9877Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 9878ACPI 9879driver or OSPM code. The debug version of the code includes the debug 9880output 9881trace mechanism and has a much larger code and data size. Note that these 9882values will vary depending on the efficiency of the compiler and the 9883compiler options used during generation. 9884 9885 Previous Release: 9886 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9887 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 9888 Current Release: 9889 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total 9890 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total 9891 9892 98932) iASL Compiler/Disassembler and Tools: 9894 9895Implemented an ANSI C version of the acpixtract utility. This version 9896will 9897automatically extract the DSDT and all SSDTs from the input acpidump text 9898file and dump the binary output to separate files. It can also display a 9899summary of the input file including the headers for each table found and 9900will extract any single ACPI table, with any signature. (See 9901source/tools/acpixtract) 9902 9903---------------------------------------- 990410 March 2006. Summary of changes for version 20060310: 9905 99061) ACPI CA Core Subsystem: 9907 9908Tagged all external interfaces to the subsystem with the new 9909ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to 9910assist 9911kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL 9912macro. The default definition is NULL. 9913 9914Added the ACPI_THREAD_ID type for the return value from 9915AcpiOsGetThreadId. 9916This allows the host to define this as necessary to simplify kernel 9917integration. The default definition is ACPI_NATIVE_UINT. 9918 9919Fixed two interpreter problems related to error processing, the deletion 9920of 9921objects, and placing invalid pointers onto the internal operator result 9922stack. BZ 6028, 6151 (Valery Podrezov) 9923 9924Increased the reference count threshold where a warning is emitted for 9925large 9926reference counts in order to eliminate unnecessary warnings on systems 9927with 9928large namespaces (especially 64-bit.) Increased the value from 0x400 to 99290x800. 9930 9931Due to universal disagreement as to the meaning of the 'c' in the 9932calloc() 9933function, the ACPI_MEM_CALLOCATE macro has been renamed to 9934ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'. 9935ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and 9936ACPI_FREE. 9937 9938Code and Data Size: These are the sizes for the acpica.lib produced by 9939the 9940Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 9941ACPI 9942driver or OSPM code. The debug version of the code includes the debug 9943output 9944trace mechanism and has a much larger code and data size. Note that these 9945values will vary depending on the efficiency of the compiler and the 9946compiler options used during generation. 9947 9948 Previous Release: 9949 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 9950 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 9951 Current Release: 9952 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 9953 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total 9954 9955 99562) iASL Compiler/Disassembler: 9957 9958Disassembler: implemented support for symbolic resource descriptor 9959references. If a CreateXxxxField operator references a fixed offset 9960within 9961a 9962resource descriptor, a name is assigned to the descriptor and the offset 9963is 9964translated to the appropriate resource tag and pathname. The addition of 9965this support brings the disassembled code very close to the original ASL 9966source code and helps eliminate run-time errors when the disassembled 9967code 9968is modified (and recompiled) in such a way as to invalidate the original 9969fixed offsets. 9970 9971Implemented support for a Descriptor Name as the last parameter to the 9972ASL 9973Register() macro. This parameter was inadvertently left out of the ACPI 9974specification, and will be added for ACPI 3.0b. 9975 9976Fixed a problem where the use of the "_OSI" string (versus the full path 9977"\_OSI") caused an internal compiler error. ("No back ptr to op") 9978 9979Fixed a problem with the error message that occurs when an invalid string 9980is 9981used for a _HID object (such as one with an embedded asterisk: 9982"*PNP010A".) 9983The correct message is now displayed. 9984 9985---------------------------------------- 998617 February 2006. Summary of changes for version 20060217: 9987 99881) ACPI CA Core Subsystem: 9989 9990Implemented a change to the IndexField support to match the behavior of 9991the 9992Microsoft AML interpreter. The value written to the Index register is now 9993a 9994byte offset, no longer an index based upon the width of the Data 9995register. 9996This should fix IndexField problems seen on some machines where the Data 9997register is not exactly one byte wide. The ACPI specification will be 9998clarified on this point. 9999 10000Fixed a problem where several resource descriptor types could overrun the 10001internal descriptor buffer due to size miscalculation: VendorShort, 10002VendorLong, and Interrupt. This was noticed on IA64 machines, but could 10003affect all platforms. 10004 10005Fixed a problem where individual resource descriptors were misaligned 10006within 10007the internal buffer, causing alignment faults on IA64 platforms. 10008 10009Code and Data Size: These are the sizes for the acpica.lib produced by 10010the 10011Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any 10012ACPI 10013driver or OSPM code. The debug version of the code includes the debug 10014output 10015trace mechanism and has a much larger code and data size. Note that these 10016values will vary depending on the efficiency of the compiler and the 10017compiler options used during generation. 10018 10019 Previous Release: 10020 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10021 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 10022 Current Release: 10023 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total 10024 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total 10025 10026 100272) iASL Compiler/Disassembler: 10028 10029Implemented support for new reserved names: _WDG and _WED are Microsoft 10030extensions for Windows Instrumentation Management, _TDL is a new ACPI- 10031defined method (Throttling Depth Limit.) 10032 10033Fixed a problem where a zero-length VendorShort or VendorLong resource 10034descriptor was incorrectly emitted as a descriptor of length one. 10035 10036---------------------------------------- 1003710 February 2006. Summary of changes for version 20060210: 10038 100391) ACPI CA Core Subsystem: 10040 10041Removed a couple of extraneous ACPI_ERROR messages that appeared during 10042normal execution. These became apparent after the conversion from 10043ACPI_DEBUG_PRINT. 10044 10045Fixed a problem where the CreateField operator could hang if the BitIndex 10046or 10047NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359) 10048 10049Fixed a problem where a DeRefOf operation on a buffer object incorrectly 10050failed with an exception. This also fixes a couple of related RefOf and 10051DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387) 10052 10053Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead 10054of 10055AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov, 10056BZ 100575480) 10058 10059Implemented a memory cleanup at the end of the execution of each 10060iteration 10061of an AML While() loop, preventing the accumulation of outstanding 10062objects. 10063(Valery Podrezov, BZ 5427) 10064 10065Eliminated a chunk of duplicate code in the object resolution code. 10066(Valery 10067Podrezov, BZ 5336) 10068 10069Fixed several warnings during the 64-bit code generation. 10070 10071The AcpiSrc source code conversion tool now inserts one line of 10072whitespace 10073after an if() statement that is followed immediately by a comment, 10074improving 10075readability of the Linux code. 10076 10077Code and Data Size: The current and previous library sizes for the core 10078subsystem are shown below. These are the code and data sizes for the 10079acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10080These 10081values do not include any ACPI driver or OSPM code. The debug version of 10082the 10083code includes the debug output trace mechanism and has a much larger code 10084and data size. Note that these values will vary depending on the 10085efficiency 10086of the compiler and the compiler options used during generation. 10087 10088 Previous Release: 10089 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 10090 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 10091 Current Release: 10092 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total 10093 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total 10094 10095 100962) iASL Compiler/Disassembler: 10097 10098Fixed a problem with the disassembly of a BankField operator with a 10099complex 10100expression for the BankValue parameter. 10101 10102---------------------------------------- 1010327 January 2006. Summary of changes for version 20060127: 10104 101051) ACPI CA Core Subsystem: 10106 10107Implemented support in the Resource Manager to allow unresolved 10108namestring 10109references within resource package objects for the _PRT method. This 10110support 10111is in addition to the previously implemented unresolved reference support 10112within the AML parser. If the interpreter slack mode is enabled, these 10113unresolved references will be passed through to the caller as a NULL 10114package 10115entry. 10116 10117Implemented and deployed new macros and functions for error and warning 10118messages across the subsystem. These macros are simpler and generate less 10119code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION, 10120ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older 10121macros remain defined to allow ACPI drivers time to migrate to the new 10122macros. 10123 10124Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of 10125the 10126Acquire/Release Lock OSL interfaces. 10127 10128Fixed a problem where Alias ASL operators are sometimes not correctly 10129resolved, in both the interpreter and the iASL compiler. 10130 10131Fixed several problems with the implementation of the 10132ConcatenateResTemplate 10133ASL operator. As per the ACPI specification, zero length buffers are now 10134treated as a single EndTag. One-length buffers always cause a fatal 10135exception. Non-zero length buffers that do not end with a full 2-byte 10136EndTag 10137cause a fatal exception. 10138 10139Fixed a possible structure overwrite in the AcpiGetObjectInfo external 10140interface. (With assistance from Thomas Renninger) 10141 10142Code and Data Size: The current and previous library sizes for the core 10143subsystem are shown below. These are the code and data sizes for the 10144acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10145These 10146values do not include any ACPI driver or OSPM code. The debug version of 10147the 10148code includes the debug output trace mechanism and has a much larger code 10149and data size. Note that these values will vary depending on the 10150efficiency 10151of the compiler and the compiler options used during generation. 10152 10153 Previous Release: 10154 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 10155 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 10156 Current Release: 10157 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total 10158 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total 10159 10160 101612) iASL Compiler/Disassembler: 10162 10163Fixed an internal error that was generated for any forward references to 10164ASL 10165Alias objects. 10166 10167---------------------------------------- 1016813 January 2006. Summary of changes for version 20060113: 10169 101701) ACPI CA Core Subsystem: 10171 10172Added 2006 copyright to all module headers and signons. This affects 10173virtually every file in the ACPICA core subsystem, iASL compiler, and the 10174utilities. 10175 10176Enhanced the ACPICA error reporting in order to simplify user migration 10177to 10178the non-debug version of ACPICA. Replaced all instances of the 10179ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN 10180debug 10181levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros, 10182respectively. This preserves all error and warning messages in the non- 10183debug 10184version of the ACPICA code (this has been referred to as the "debug lite" 10185option.) Over 200 cases were converted to create a total of over 380 10186error/warning messages across the ACPICA code. This increases the code 10187and 10188data size of the default non-debug version of the code somewhat (about 1018913K), 10190but all error/warning reporting may be disabled if desired (and code 10191eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time 10192configuration option. The size of the debug version of ACPICA remains 10193about 10194the same. 10195 10196Fixed a memory leak within the AML Debugger "Set" command. One object was 10197not properly deleted for every successful invocation of the command. 10198 10199Code and Data Size: The current and previous library sizes for the core 10200subsystem are shown below. These are the code and data sizes for the 10201acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10202These 10203values do not include any ACPI driver or OSPM code. The debug version of 10204the 10205code includes the debug output trace mechanism and has a much larger code 10206and data size. Note that these values will vary depending on the 10207efficiency 10208of the compiler and the compiler options used during generation. 10209 10210 Previous Release: 10211 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 10212 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 10213 Current Release: 10214 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total 10215 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total 10216 10217 102182) iASL Compiler/Disassembler: 10219 10220The compiler now officially supports the ACPI 3.0a specification that was 10221released on December 30, 2005. (Specification is available at 10222www.acpi.info) 10223 10224---------------------------------------- 1022516 December 2005. Summary of changes for version 20051216: 10226 102271) ACPI CA Core Subsystem: 10228 10229Implemented optional support to allow unresolved names within ASL Package 10230objects. A null object is inserted in the package when a named reference 10231cannot be located in the current namespace. Enabled via the interpreter 10232slack flag, this should eliminate AE_NOT_FOUND exceptions seen on 10233machines 10234that contain such code. 10235 10236Implemented an optimization to the initialization sequence that can 10237improve 10238boot time. During ACPI device initialization, the _STA method is now run 10239if 10240and only if the _INI method exists. The _STA method is used to determine 10241if 10242the device is present; An _INI can only be run if _STA returns present, 10243but 10244it is a waste of time to run the _STA method if the _INI does not exist. 10245(Prototype and assistance from Dong Wei) 10246 10247Implemented use of the C99 uintptr_t for the pointer casting macros if it 10248is 10249available in the current compiler. Otherwise, the default (void *) cast 10250is 10251used as before. 10252 10253Fixed some possible memory leaks found within the execution path of the 10254Break, Continue, If, and CreateField operators. (Valery Podrezov) 10255 10256Fixed a problem introduced in the 20051202 release where an exception is 10257generated during method execution if a control method attempts to declare 10258another method. 10259 10260Moved resource descriptor string constants that are used by both the AML 10261disassembler and AML debugger to the common utilities directory so that 10262these components are independent. 10263 10264Implemented support in the AcpiExec utility (-e switch) to globally 10265ignore 10266exceptions during control method execution (method is not aborted.) 10267 10268Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix 10269generation. 10270 10271Code and Data Size: The current and previous library sizes for the core 10272subsystem are shown below. These are the code and data sizes for the 10273acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10274These 10275values do not include any ACPI driver or OSPM code. The debug version of 10276the 10277code includes the debug output trace mechanism and has a much larger code 10278and data size. Note that these values will vary depending on the 10279efficiency 10280of the compiler and the compiler options used during generation. 10281 10282 Previous Release: 10283 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10284 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 10285 Current Release: 10286 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total 10287 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total 10288 10289 102902) iASL Compiler/Disassembler: 10291 10292Fixed a problem where a CPU stack overflow fault could occur if a 10293recursive 10294method call was made from within a Return statement. 10295 10296---------------------------------------- 1029702 December 2005. Summary of changes for version 20051202: 10298 102991) ACPI CA Core Subsystem: 10300 10301Modified the parsing of control methods to no longer create namespace 10302objects during the first pass of the parse. Objects are now created only 10303during the execute phase, at the moment the namespace creation operator 10304is 10305encountered in the AML (Name, OperationRegion, CreateByteField, etc.) 10306This 10307should eliminate ALREADY_EXISTS exceptions seen on some machines where 10308reentrant control methods are protected by an AML mutex. The mutex will 10309now 10310correctly block multiple threads from attempting to create the same 10311object 10312more than once. 10313 10314Increased the number of available Owner Ids for namespace object tracking 10315from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen 10316on 10317some machines with a large number of ACPI tables (either static or 10318dynamic). 10319 10320Fixed a problem with the AcpiExec utility where a fault could occur when 10321the 10322-b switch (batch mode) is used. 10323 10324Enhanced the namespace dump routine to output the owner ID for each 10325namespace object. 10326 10327Code and Data Size: The current and previous library sizes for the core 10328subsystem are shown below. These are the code and data sizes for the 10329acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10330These 10331values do not include any ACPI driver or OSPM code. The debug version of 10332the 10333code includes the debug output trace mechanism and has a much larger code 10334and data size. Note that these values will vary depending on the 10335efficiency 10336of the compiler and the compiler options used during generation. 10337 10338 Previous Release: 10339 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10340 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 10341 Current Release: 10342 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10343 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total 10344 10345 103462) iASL Compiler/Disassembler: 10347 10348Fixed a parse error during compilation of certain Switch/Case constructs. 10349To 10350simplify the parse, the grammar now allows for multiple Default 10351statements 10352and this error is now detected and flagged during the analysis phase. 10353 10354Disassembler: The disassembly now includes the contents of the original 10355table header within a comment at the start of the file. This includes the 10356name and version of the original ASL compiler. 10357 10358---------------------------------------- 1035917 November 2005. Summary of changes for version 20051117: 10360 103611) ACPI CA Core Subsystem: 10362 10363Fixed a problem in the AML parser where the method thread count could be 10364decremented below zero if any errors occurred during the method parse 10365phase. 10366This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some 10367machines. 10368This also fixed a related regression with the mechanism that detects and 10369corrects methods that cannot properly handle reentrancy (related to the 10370deployment of the new OwnerId mechanism.) 10371 10372Eliminated the pre-parsing of control methods (to detect errors) during 10373table load. Related to the problem above, this was causing unwind issues 10374if 10375any errors occurred during the parse, and it seemed to be overkill. A 10376table 10377load should not be aborted if there are problems with any single control 10378method, thus rendering this feature rather pointless. 10379 10380Fixed a problem with the new table-driven resource manager where an 10381internal 10382buffer overflow could occur for small resource templates. 10383 10384Implemented a new external interface, AcpiGetVendorResource. This 10385interface 10386will find and return a vendor-defined resource descriptor within a _CRS 10387or 10388_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn 10389Helgaas. 10390 10391Removed the length limit (200) on string objects as per the upcoming ACPI 103923.0A specification. This affects the following areas of the interpreter: 103931) 10394any implicit conversion of a Buffer to a String, 2) a String object 10395result 10396of the ASL Concatentate operator, 3) the String object result of the ASL 10397ToString operator. 10398 10399Fixed a problem in the Windows OS interface layer (OSL) where a 10400WAIT_FOREVER 10401on a semaphore object would incorrectly timeout. This allows the 10402multithreading features of the AcpiExec utility to work properly under 10403Windows. 10404 10405Updated the Linux makefiles for the iASL compiler and AcpiExec to include 10406the recently added file named "utresrc.c". 10407 10408Code and Data Size: The current and previous library sizes for the core 10409subsystem are shown below. These are the code and data sizes for the 10410acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10411These 10412values do not include any ACPI driver or OSPM code. The debug version of 10413the 10414code includes the debug output trace mechanism and has a much larger code 10415and data size. Note that these values will vary depending on the 10416efficiency 10417of the compiler and the compiler options used during generation. 10418 10419 Previous Release: 10420 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 10421 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 10422 Current Release: 10423 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total 10424 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 10425 10426 104272) iASL Compiler/Disassembler: 10428 10429Removed the limit (200) on string objects as per the upcoming ACPI 3.0A 10430specification. For the iASL compiler, this means that string literals 10431within 10432the source ASL can be of any length. 10433 10434Enhanced the listing output to dump the AML code for resource descriptors 10435immediately after the ASL code for each descriptor, instead of in a block 10436at 10437the end of the entire resource template. 10438 10439Enhanced the compiler debug output to dump the entire original parse tree 10440constructed during the parse phase, before any transforms are applied to 10441the 10442tree. The transformed tree is dumped also. 10443 10444---------------------------------------- 1044502 November 2005. Summary of changes for version 20051102: 10446 104471) ACPI CA Core Subsystem: 10448 10449Modified the subsystem initialization sequence to improve GPE support. 10450The 10451GPE initialization has been split into two parts in order to defer 10452execution 10453of the _PRW methods (Power Resources for Wake) until after the hardware 10454is 10455fully initialized and the SCI handler is installed. This allows the _PRW 10456methods to access fields protected by the Global Lock. This will fix 10457systems 10458where a NO_GLOBAL_LOCK exception has been seen during initialization. 10459 10460Converted the ACPI internal object disassemble and display code within 10461the 10462AML debugger to fully table-driven operation, reducing code size and 10463increasing maintainability. 10464 10465Fixed a regression with the ConcatenateResTemplate() ASL operator 10466introduced 10467in the 20051021 release. 10468 10469Implemented support for "local" internal ACPI object types within the 10470debugger "Object" command and the AcpiWalkNamespace external interfaces. 10471These local types include RegionFields, BankFields, IndexFields, Alias, 10472and 10473reference objects. 10474 10475Moved common AML resource handling code into a new file, "utresrc.c". 10476This 10477code is shared by both the Resource Manager and the AML Debugger. 10478 10479Code and Data Size: The current and previous library sizes for the core 10480subsystem are shown below. These are the code and data sizes for the 10481acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10482These 10483values do not include any ACPI driver or OSPM code. The debug version of 10484the 10485code includes the debug output trace mechanism and has a much larger code 10486and data size. Note that these values will vary depending on the 10487efficiency 10488of the compiler and the compiler options used during generation. 10489 10490 Previous Release: 10491 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 10492 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 10493 Current Release: 10494 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total 10495 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total 10496 10497 104982) iASL Compiler/Disassembler: 10499 10500Fixed a problem with very large initializer lists (more than 4000 10501elements) 10502for both Buffer and Package objects where the parse stack could overflow. 10503 10504Enhanced the pre-compile source code scan for non-ASCII characters to 10505ignore 10506characters within comment fields. The scan is now always performed and is 10507no 10508longer optional, detecting invalid characters within a source file 10509immediately rather than during the parse phase or later. 10510 10511Enhanced the ASL grammar definition to force early reductions on all 10512list- 10513style grammar elements so that the overall parse stack usage is greatly 10514reduced. This should improve performance and reduce the possibility of 10515parse 10516stack overflow. 10517 10518Eliminated all reduce/reduce conflicts in the iASL parser generation. 10519Also, 10520with the addition of a %expected statement, the compiler generates from 10521source with no warnings. 10522 10523Fixed a possible segment fault in the disassembler if the input filename 10524does not contain a "dot" extension (Thomas Renninger). 10525 10526---------------------------------------- 1052721 October 2005. Summary of changes for version 20051021: 10528 105291) ACPI CA Core Subsystem: 10530 10531Implemented support for the EM64T and other x86-64 processors. This 10532essentially entails recognizing that these processors support non-aligned 10533memory transfers. Previously, all 64-bit processors were assumed to lack 10534hardware support for non-aligned transfers. 10535 10536Completed conversion of the Resource Manager to nearly full table-driven 10537operation. Specifically, the resource conversion code (convert AML to 10538internal format and the reverse) and the debug code to dump internal 10539resource descriptors are fully table-driven, reducing code and data size 10540and 10541improving maintainability. 10542 10543The OSL interfaces for Acquire and Release Lock now use a 64-bit flag 10544word 10545on 64-bit processors instead of a fixed 32-bit word. (With assistance 10546from 10547Alexey Starikovskiy) 10548 10549Implemented support within the resource conversion code for the Type- 10550Specific byte within the various ACPI 3.0 *WordSpace macros. 10551 10552Fixed some issues within the resource conversion code for the type- 10553specific 10554flags for both Memory and I/O address resource descriptors. For Memory, 10555implemented support for the MTP and TTP flags. For I/O, split the TRS and 10556TTP flags into two separate fields. 10557 10558Code and Data Size: The current and previous library sizes for the core 10559subsystem are shown below. These are the code and data sizes for the 10560acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10561These 10562values do not include any ACPI driver or OSPM code. The debug version of 10563the 10564code includes the debug output trace mechanism and has a much larger code 10565and data size. Note that these values will vary depending on the 10566efficiency 10567of the compiler and the compiler options used during generation. 10568 10569 Previous Release: 10570 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 10571 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 10572 Current Release: 10573 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total 10574 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total 10575 10576 10577 105782) iASL Compiler/Disassembler: 10579 10580Relaxed a compiler restriction that disallowed a ResourceIndex byte if 10581the 10582corresponding ResourceSource string was not also present in a resource 10583descriptor declaration. This restriction caused problems with existing 10584AML/ASL code that includes the Index byte without the string. When such 10585AML 10586was disassembled, it could not be compiled without modification. Further, 10587the modified code created a resource template with a different size than 10588the 10589original, breaking code that used fixed offsets into the resource 10590template 10591buffer. 10592 10593Removed a recent feature of the disassembler to ignore a lone 10594ResourceIndex 10595byte. This byte is now emitted if present so that the exact AML can be 10596reproduced when the disassembled code is recompiled. 10597 10598Improved comments and text alignment for the resource descriptor code 10599emitted by the disassembler. 10600 10601Implemented disassembler support for the ACPI 3.0 AccessSize field within 10602a 10603Register() resource descriptor. 10604 10605---------------------------------------- 1060630 September 2005. Summary of changes for version 20050930: 10607 106081) ACPI CA Core Subsystem: 10609 10610Completed a major overhaul of the Resource Manager code - specifically, 10611optimizations in the area of the AML/internal resource conversion code. 10612The 10613code has been optimized to simplify and eliminate duplicated code, CPU 10614stack 10615use has been decreased by optimizing function parameters and local 10616variables, and naming conventions across the manager have been 10617standardized 10618for clarity and ease of maintenance (this includes function, parameter, 10619variable, and struct/typedef names.) The update may force changes in some 10620driver code, depending on how resources are handled by the host OS. 10621 10622All Resource Manager dispatch and information tables have been moved to a 10623single location for clarity and ease of maintenance. One new file was 10624created, named "rsinfo.c". 10625 10626The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to 10627guarantee that the argument is not evaluated twice, making them less 10628prone 10629to macro side-effects. However, since there exists the possibility of 10630additional stack use if a particular compiler cannot optimize them (such 10631as 10632in the debug generation case), the original macros are optionally 10633available. 10634Note that some invocations of the return_VALUE macro may now cause size 10635mismatch warnings; the return_UINT8 and return_UINT32 macros are provided 10636to 10637eliminate these. (From Randy Dunlap) 10638 10639Implemented a new mechanism to enable debug tracing for individual 10640control 10641methods. A new external interface, AcpiDebugTrace, is provided to enable 10642this mechanism. The intent is to allow the host OS to easily enable and 10643disable tracing for problematic control methods. This interface can be 10644easily exposed to a user or debugger interface if desired. See the file 10645psxface.c for details. 10646 10647AcpiUtCallocate will now return a valid pointer if a length of zero is 10648specified - a length of one is used and a warning is issued. This matches 10649the behavior of AcpiUtAllocate. 10650 10651Code and Data Size: The current and previous library sizes for the core 10652subsystem are shown below. These are the code and data sizes for the 10653acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10654These 10655values do not include any ACPI driver or OSPM code. The debug version of 10656the 10657code includes the debug output trace mechanism and has a much larger code 10658and data size. Note that these values will vary depending on the 10659efficiency 10660of the compiler and the compiler options used during generation. 10661 10662 Previous Release: 10663 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 10664 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 10665 Current Release: 10666 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total 10667 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total 10668 10669 106702) iASL Compiler/Disassembler: 10671 10672A remark is issued if the effective compile-time length of a package or 10673buffer is zero. Previously, this was a warning. 10674 10675---------------------------------------- 1067616 September 2005. Summary of changes for version 20050916: 10677 106781) ACPI CA Core Subsystem: 10679 10680Fixed a problem within the Resource Manager where support for the Generic 10681Register descriptor was not fully implemented. This descriptor is now 10682fully 10683recognized, parsed, disassembled, and displayed. 10684 10685Completely restructured the Resource Manager code to utilize table-driven 10686dispatch and lookup, eliminating many of the large switch() statements. 10687This 10688reduces overall subsystem code size and code complexity. Affects the 10689resource parsing and construction, disassembly, and debug dump output. 10690 10691Cleaned up and restructured the debug dump output for all resource 10692descriptors. Improved readability of the output and reduced code size. 10693 10694Fixed a problem where changes to internal data structures caused the 10695optional ACPI_MUTEX_DEBUG code to fail compilation if specified. 10696 10697Code and Data Size: The current and previous library sizes for the core 10698subsystem are shown below. These are the code and data sizes for the 10699acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. 10700These 10701values do not include any ACPI driver or OSPM code. The debug version of 10702the 10703code includes the debug output trace mechanism and has a much larger code 10704and data size. Note that these values will vary depending on the 10705efficiency 10706of the compiler and the compiler options used during generation. 10707 10708 Previous Release: 10709 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 10710 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 10711 Current Release: 10712 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total 10713 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total 10714 10715 107162) iASL Compiler/Disassembler: 10717 10718Updated the disassembler to automatically insert an EndDependentFn() 10719macro 10720into the ASL stream if this macro is missing in the original AML code, 10721simplifying compilation of the resulting ASL module. 10722 10723Fixed a problem in the disassembler where a disassembled ResourceSource 10724string (within a large resource descriptor) was not surrounded by quotes 10725and 10726not followed by a comma, causing errors when the resulting ASL module was 10727compiled. Also, escape sequences within a ResourceSource string are now 10728handled correctly (especially "\\") 10729 10730---------------------------------------- 1073102 September 2005. Summary of changes for version 20050902: 10732 107331) ACPI CA Core Subsystem: 10734 10735Fixed a problem with the internal Owner ID allocation and deallocation 10736mechanisms for control method execution and recursive method invocation. 10737This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId" 10738messages seen on some systems. Recursive method invocation depth is 10739currently limited to 255. (Alexey Starikovskiy) 10740 10741Completely eliminated all vestiges of support for the "module-level 10742executable code" until this support is fully implemented and debugged. 10743This 10744should eliminate the NO_RETURN_VALUE exceptions seen during table load on 10745some systems that invoke this support. 10746 10747Fixed a problem within the resource manager code where the transaction 10748flags 10749for a 64-bit address descriptor were handled incorrectly in the type- 10750specific flag byte. 10751 10752Consolidated duplicate code within the address descriptor resource 10753manager 10754code, reducing overall subsystem code size. 10755 10756Fixed a fault when using the AML debugger "disassemble" command to 10757disassemble individual control methods. 10758 10759Removed references to the "release_current" directory within the Unix 10760release package. 10761 10762Code and Data Size: The current and previous core subsystem library sizes 10763are shown below. These are the code and data sizes for the acpica.lib 10764produced by the Microsoft Visual C++ 6.0 compiler. These values do not 10765include any ACPI driver or OSPM code. The debug version of the code 10766includes 10767the debug output trace mechanism and has a much larger code and data 10768size. 10769Note that these values will vary depending on the efficiency of the 10770compiler 10771and the compiler options used during generation. 10772 10773 Previous Release: 10774 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10775 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 10776 Current Release: 10777 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total 10778 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total 10779 10780 107812) iASL Compiler/Disassembler: 10782 10783Implemented an error check for illegal duplicate values in the interrupt 10784and 10785dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and 10786Interrupt(). 10787 10788Implemented error checking for the Irq() and IrqNoFlags() macros to 10789detect 10790too many values in the interrupt list (16 max) and invalid values in the 10791list (range 0 - 15) 10792 10793The maximum length string literal within an ASL file is now restricted to 10794200 characters as per the ACPI specification. 10795 10796Fixed a fault when using the -ln option (generate namespace listing). 10797 10798Implemented an error check to determine if a DescriptorName within a 10799resource descriptor has already been used within the current scope. 10800 10801---------------------------------------- 1080215 August 2005. Summary of changes for version 20050815: 10803 108041) ACPI CA Core Subsystem: 10805 10806Implemented a full bytewise compare to determine if a table load request 10807is 10808attempting to load a duplicate table. The compare is performed if the 10809table 10810signatures and table lengths match. This will allow different tables with 10811the same OEM Table ID and revision to be loaded - probably against the 10812ACPI 10813specification, but discovered in the field nonetheless. 10814 10815Added the changes.txt logfile to each of the zipped release packages. 10816 10817Code and Data Size: Current and previous core subsystem library sizes are 10818shown below. These are the code and data sizes for the acpica.lib 10819produced 10820by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10821any ACPI driver or OSPM code. The debug version of the code includes the 10822debug output trace mechanism and has a much larger code and data size. 10823Note 10824that these values will vary depending on the efficiency of the compiler 10825and 10826the compiler options used during generation. 10827 10828 Previous Release: 10829 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10830 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 10831 Current Release: 10832 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10833 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total 10834 10835 108362) iASL Compiler/Disassembler: 10837 10838Fixed a problem where incorrect AML code could be generated for Package 10839objects if optimization is disabled (via the -oa switch). 10840 10841Fixed a problem with where incorrect AML code is generated for variable- 10842length packages when the package length is not specified and the number 10843of 10844initializer values is greater than 255. 10845 10846 10847---------------------------------------- 1084829 July 2005. Summary of changes for version 20050729: 10849 108501) ACPI CA Core Subsystem: 10851 10852Implemented support to ignore an attempt to install/load a particular 10853ACPI 10854table more than once. Apparently there exists BIOS code that repeatedly 10855attempts to load the same SSDT upon certain events. With assistance from 10856Venkatesh Pallipadi. 10857 10858Restructured the main interface to the AML parser in order to correctly 10859handle all exceptional conditions. This will prevent leakage of the 10860OwnerId 10861resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on 10862some 10863machines. With assistance from Alexey Starikovskiy. 10864 10865Support for "module level code" has been disabled in this version due to 10866a 10867number of issues that have appeared on various machines. The support can 10868be 10869enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem 10870compilation. When the issues are fully resolved, the code will be enabled 10871by 10872default again. 10873 10874Modified the internal functions for debug print support to define the 10875FunctionName parameter as a (const char *) for compatibility with 10876compiler 10877built-in macros such as __FUNCTION__, etc. 10878 10879Linted the entire ACPICA source tree for both 32-bit and 64-bit. 10880 10881Implemented support to display an object count summary for the AML 10882Debugger 10883commands Object and Methods. 10884 10885Code and Data Size: Current and previous core subsystem library sizes are 10886shown below. These are the code and data sizes for the acpica.lib 10887produced 10888by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10889any ACPI driver or OSPM code. The debug version of the code includes the 10890debug output trace mechanism and has a much larger code and data size. 10891Note 10892that these values will vary depending on the efficiency of the compiler 10893and 10894the compiler options used during generation. 10895 10896 Previous Release: 10897 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 10898 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 10899 Current Release: 10900 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total 10901 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total 10902 10903 109042) iASL Compiler/Disassembler: 10905 10906Fixed a regression that appeared in the 20050708 version of the compiler 10907where an error message was inadvertently emitted for invocations of the 10908_OSI 10909reserved control method. 10910 10911---------------------------------------- 1091208 July 2005. Summary of changes for version 20050708: 10913 109141) ACPI CA Core Subsystem: 10915 10916The use of the CPU stack in the debug version of the subsystem has been 10917considerably reduced. Previously, a debug structure was declared in every 10918function that used the debug macros. This structure has been removed in 10919favor of declaring the individual elements as parameters to the debug 10920functions. This reduces the cumulative stack use during nested execution 10921of 10922ACPI function calls at the cost of a small increase in the code size of 10923the 10924debug version of the subsystem. With assistance from Alexey Starikovskiy 10925and 10926Len Brown. 10927 10928Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent 10929headers to define a macro that will return the current function name at 10930runtime (such as __FUNCTION__ or _func_, etc.) The function name is used 10931by 10932the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the 10933compiler-dependent header, the function name is saved on the CPU stack 10934(one 10935pointer per function.) This mechanism is used because apparently there 10936exists no standard ANSI-C defined macro that that returns the function 10937name. 10938 10939Redesigned and reimplemented the "Owner ID" mechanism used to track 10940namespace objects created/deleted by ACPI tables and control method 10941execution. A bitmap is now used to allocate and free the IDs, thus 10942solving 10943the wraparound problem present in the previous implementation. The size 10944of 10945the namespace node descriptor was reduced by 2 bytes as a result (Alexey 10946Starikovskiy). 10947 10948Removed the UINT32_BIT and UINT16_BIT types that were used for the 10949bitfield 10950flag definitions within the headers for the predefined ACPI tables. These 10951have been replaced by UINT8_BIT in order to increase the code portability 10952of 10953the subsystem. If the use of UINT8 remains a problem, we may be forced to 10954eliminate bitfields entirely because of a lack of portability. 10955 10956Enhanced the performance of the AcpiUtUpdateObjectReference procedure. 10957This 10958is a frequently used function and this improvement increases the 10959performance 10960of the entire subsystem (Alexey Starikovskiy). 10961 10962Fixed several possible memory leaks and the inverse - premature object 10963deletion (Alexey Starikovskiy). 10964 10965Code and Data Size: Current and previous core subsystem library sizes are 10966shown below. These are the code and data sizes for the acpica.lib 10967produced 10968by the Microsoft Visual C++ 6.0 compiler, and these values do not include 10969any ACPI driver or OSPM code. The debug version of the code includes the 10970debug output trace mechanism and has a much larger code and data size. 10971Note 10972that these values will vary depending on the efficiency of the compiler 10973and 10974the compiler options used during generation. 10975 10976 Previous Release: 10977 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 10978 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 10979 Current Release: 10980 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total 10981 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total 10982 10983---------------------------------------- 1098424 June 2005. Summary of changes for version 20050624: 10985 109861) ACPI CA Core Subsystem: 10987 10988Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for 10989the host-defined cache object. This allows the OSL implementation to 10990define 10991and type this object in any manner desired, simplifying the OSL 10992implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for 10993Linux, and should be defined in the OS-specific header file for other 10994operating systems as required. 10995 10996Changed the interface to AcpiOsAcquireObject to directly return the 10997requested object as the function return (instead of ACPI_STATUS.) This 10998change was made for performance reasons, since this is the purpose of the 10999interface in the first place. AcpiOsAcquireObject is now similar to the 11000AcpiOsAllocate interface. 11001 11002Implemented a new AML debugger command named Businfo. This command 11003displays 11004information about all devices that have an associate _PRT object. The 11005_ADR, 11006_HID, _UID, and _CID are displayed for these devices. 11007 11008Modified the initialization sequence in AcpiInitializeSubsystem to call 11009the 11010OSL interface AcpiOslInitialize first, before any local initialization. 11011This 11012change was required because the global initialization now calls OSL 11013interfaces. 11014 11015Enhanced the Dump command to display the entire contents of Package 11016objects 11017(including all sub-objects and their values.) 11018 11019Restructured the code base to split some files because of size and/or 11020because the code logically belonged in a separate file. New files are 11021listed 11022below. All makefiles and project files included in the ACPI CA release 11023have 11024been updated. 11025 utilities/utcache.c /* Local cache interfaces */ 11026 utilities/utmutex.c /* Local mutex support */ 11027 utilities/utstate.c /* State object support */ 11028 interpreter/parser/psloop.c /* Main AML parse loop */ 11029 11030Code and Data Size: Current and previous core subsystem library sizes are 11031shown below. These are the code and data sizes for the acpica.lib 11032produced 11033by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11034any ACPI driver or OSPM code. The debug version of the code includes the 11035debug output trace mechanism and has a much larger code and data size. 11036Note 11037that these values will vary depending on the efficiency of the compiler 11038and 11039the compiler options used during generation. 11040 11041 Previous Release: 11042 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 11043 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 11044 Current Release: 11045 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total 11046 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total 11047 11048 110492) iASL Compiler/Disassembler: 11050 11051Fixed a regression introduced in version 20050513 where the use of a 11052Package 11053object within a Case() statement caused a compile time exception. The 11054original behavior has been restored (a Match() operator is emitted.) 11055 11056---------------------------------------- 1105717 June 2005. Summary of changes for version 20050617: 11058 110591) ACPI CA Core Subsystem: 11060 11061Moved the object cache operations into the OS interface layer (OSL) to 11062allow 11063the host OS to handle these operations if desired (for example, the Linux 11064OSL will invoke the slab allocator). This support is optional; the 11065compile 11066time define ACPI_USE_LOCAL_CACHE may be used to utilize the original 11067cache 11068code in the ACPI CA core. The new OSL interfaces are shown below. See 11069utalloc.c for an example implementation, and acpiosxf.h for the exact 11070interface definitions. With assistance from Alexey Starikovskiy. 11071 AcpiOsCreateCache 11072 AcpiOsDeleteCache 11073 AcpiOsPurgeCache 11074 AcpiOsAcquireObject 11075 AcpiOsReleaseObject 11076 11077Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to 11078return 11079and restore a flags parameter. This fits better with many OS lock models. 11080Note: the current execution state (interrupt handler or not) is no longer 11081passed to these interfaces. If necessary, the OSL must determine this 11082state 11083by itself, a simple and fast operation. With assistance from Alexey 11084Starikovskiy. 11085 11086Fixed a problem in the ACPI table handling where a valid XSDT was assumed 11087present if the revision of the RSDP was 2 or greater. According to the 11088ACPI 11089specification, the XSDT is optional in all cases, and the table manager 11090therefore now checks for both an RSDP >=2 and a valid XSDT pointer. 11091Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs 11092contain 11093only the RSDT. 11094 11095Fixed an interpreter problem with the Mid() operator in the case of an 11096input 11097string where the resulting output string is of zero length. It now 11098correctly 11099returns a valid, null terminated string object instead of a string object 11100with a null pointer. 11101 11102Fixed a problem with the control method argument handling to allow a 11103store 11104to an Arg object that already contains an object of type Device. The 11105Device 11106object is now correctly overwritten. Previously, an error was returned. 11107 11108 11109Enhanced the debugger Find command to emit object values in addition to 11110the 11111found object pathnames. The output format is the same as the dump 11112namespace 11113command. 11114 11115Enhanced the debugger Set command. It now has the ability to set the 11116value 11117of any Named integer object in the namespace (Previously, only method 11118locals 11119and args could be set.) 11120 11121Code and Data Size: Current and previous core subsystem library sizes are 11122shown below. These are the code and data sizes for the acpica.lib 11123produced 11124by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11125any ACPI driver or OSPM code. The debug version of the code includes the 11126debug output trace mechanism and has a much larger code and data size. 11127Note 11128that these values will vary depending on the efficiency of the compiler 11129and 11130the compiler options used during generation. 11131 11132 Previous Release: 11133 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 11134 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 11135 Current Release: 11136 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total 11137 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total 11138 11139 111402) iASL Compiler/Disassembler: 11141 11142Fixed a regression in the disassembler where if/else/while constructs 11143were 11144output incorrectly. This problem was introduced in the previous release 11145(20050526). This problem also affected the single-step disassembly in the 11146debugger. 11147 11148Fixed a problem where compiling the reserved _OSI method would randomly 11149(but 11150rarely) produce compile errors. 11151 11152Enhanced the disassembler to emit compilable code in the face of 11153incorrect 11154AML resource descriptors. If the optional ResourceSourceIndex is present, 11155but the ResourceSource is not, do not emit the ResourceSourceIndex in the 11156disassembly. Otherwise, the resulting code cannot be compiled without 11157errors. 11158 11159---------------------------------------- 1116026 May 2005. Summary of changes for version 20050526: 11161 111621) ACPI CA Core Subsystem: 11163 11164Implemented support to execute Type 1 and Type 2 AML opcodes appearing at 11165the module level (not within a control method.) These opcodes are 11166executed 11167exactly once at the time the table is loaded. This type of code was legal 11168up 11169until the release of ACPI 2.0B (2002) and is now supported within ACPI CA 11170in 11171order to provide backwards compatibility with earlier BIOS 11172implementations. 11173This eliminates the "Encountered executable code at module level" warning 11174that was previously generated upon detection of such code. 11175 11176Fixed a problem in the interpreter where an AE_NOT_FOUND exception could 11177inadvertently be generated during the lookup of namespace objects in the 11178second pass parse of ACPI tables and control methods. It appears that 11179this 11180problem could occur during the resolution of forward references to 11181namespace 11182objects. 11183 11184Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function, 11185corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This 11186allows the deadlock detection debug code to be compiled out in the normal 11187case, improving mutex performance (and overall subsystem performance) 11188considerably. 11189 11190Implemented a handful of miscellaneous fixes for possible memory leaks on 11191error conditions and error handling control paths. These fixes were 11192suggested by FreeBSD and the Coverity Prevent source code analysis tool. 11193 11194Added a check for a null RSDT pointer in AcpiGetFirmwareTable 11195(tbxfroot.c) 11196to prevent a fault in this error case. 11197 11198Code and Data Size: Current and previous core subsystem library sizes are 11199shown below. These are the code and data sizes for the acpica.lib 11200produced 11201by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11202any ACPI driver or OSPM code. The debug version of the code includes the 11203debug output trace mechanism and has a much larger code and data size. 11204Note 11205that these values will vary depending on the efficiency of the compiler 11206and 11207the compiler options used during generation. 11208 11209 Previous Release: 11210 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11211 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11212 Current Release: 11213 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total 11214 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total 11215 11216 112172) iASL Compiler/Disassembler: 11218 11219Implemented support to allow Type 1 and Type 2 ASL operators to appear at 11220the module level (not within a control method.) These operators will be 11221executed once at the time the table is loaded. This type of code was 11222legal 11223up until the release of ACPI 2.0B (2002) and is now supported by the iASL 11224compiler in order to provide backwards compatibility with earlier BIOS 11225ASL 11226code. 11227 11228The ACPI integer width (specified via the table revision ID or the -r 11229override, 32 or 64 bits) is now used internally during compile-time 11230constant 11231folding to ensure that constants are truncated to 32 bits if necessary. 11232Previously, the revision ID value was only emitted in the AML table 11233header. 11234 11235An error message is now generated for the Mutex and Method operators if 11236the 11237SyncLevel parameter is outside the legal range of 0 through 15. 11238 11239Fixed a problem with the Method operator ParameterTypes list handling 11240(ACPI 112413.0). Previously, more than 2 types or 2 arguments generated a syntax 11242error. 11243The actual underlying implementation of method argument typechecking is 11244still under development, however. 11245 11246---------------------------------------- 1124713 May 2005. Summary of changes for version 20050513: 11248 112491) ACPI CA Core Subsystem: 11250 11251Implemented support for PCI Express root bridges -- added support for 11252device 11253PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup. 11254 11255The interpreter now automatically truncates incoming 64-bit constants to 1125632 11257bits if currently executing out of a 32-bit ACPI table (Revision < 2). 11258This 11259also affects the iASL compiler constant folding. (Note: as per below, the 11260iASL compiler no longer allows 64-bit constants within 32-bit tables.) 11261 11262Fixed a problem where string and buffer objects with "static" pointers 11263(pointers to initialization data within an ACPI table) were not handled 11264consistently. The internal object copy operation now always copies the 11265data 11266to a newly allocated buffer, regardless of whether the source object is 11267static or not. 11268 11269Fixed a problem with the FromBCD operator where an implicit result 11270conversion was improperly performed while storing the result to the 11271target 11272operand. Since this is an "explicit conversion" operator, the implicit 11273conversion should never be performed on the output. 11274 11275Fixed a problem with the CopyObject operator where a copy to an existing 11276named object did not always completely overwrite the existing object 11277stored 11278at name. Specifically, a buffer-to-buffer copy did not delete the 11279existing 11280buffer. 11281 11282Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces 11283and 11284structs for consistency. 11285 11286Code and Data Size: Current and previous core subsystem library sizes are 11287shown below. These are the code and data sizes for the acpica.lib 11288produced 11289by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11290any ACPI driver or OSPM code. The debug version of the code includes the 11291debug output trace mechanism and has a much larger code and data size. 11292Note 11293that these values will vary depending on the efficiency of the compiler 11294and 11295the compiler options used during generation. 11296 11297 Previous Release: 11298 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11299 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11300 Current Release: (Same sizes) 11301 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11302 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11303 11304 113052) iASL Compiler/Disassembler: 11306 11307The compiler now emits a warning if an attempt is made to generate a 64- 11308bit 11309integer constant from within a 32-bit ACPI table (Revision < 2). The 11310integer 11311is truncated to 32 bits. 11312 11313Fixed a problem with large package objects: if the static length of the 11314package is greater than 255, the "variable length package" opcode is 11315emitted. Previously, this caused an error. This requires an update to the 11316ACPI spec, since it currently (incorrectly) states that packages larger 11317than 11318255 elements are not allowed. 11319 11320The disassembler now correctly handles variable length packages and 11321packages 11322larger than 255 elements. 11323 11324---------------------------------------- 1132508 April 2005. Summary of changes for version 20050408: 11326 113271) ACPI CA Core Subsystem: 11328 11329Fixed three cases in the interpreter where an "index" argument to an ASL 11330function was still (internally) 32 bits instead of the required 64 bits. 11331This was the Index argument to the Index, Mid, and Match operators. 11332 11333The "strupr" function is now permanently local (AcpiUtStrupr), since this 11334is 11335not a POSIX-defined function and not present in most kernel-level C 11336libraries. All references to the C library strupr function have been 11337removed 11338from the headers. 11339 11340Completed the deployment of static functions/prototypes. All prototypes 11341with 11342the static attribute have been moved from the headers to the owning C 11343file. 11344 11345Implemented an extract option (-e) for the AcpiBin utility (AML binary 11346utility). This option allows the utility to extract individual ACPI 11347tables 11348from the output of AcpiDmp. It provides the same functionality of the 11349acpixtract.pl perl script without the worry of setting the correct perl 11350options. AcpiBin runs on Windows and has not yet been generated/validated 11351in 11352the Linux/Unix environment (but should be soon). 11353 11354Updated and fixed the table dump option for AcpiBin (-d). This option 11355converts a single ACPI table to a hex/ascii file, similar to the output 11356of 11357AcpiDmp. 11358 11359Code and Data Size: Current and previous core subsystem library sizes are 11360shown below. These are the code and data sizes for the acpica.lib 11361produced 11362by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11363any ACPI driver or OSPM code. The debug version of the code includes the 11364debug output trace mechanism and has a much larger code and data size. 11365Note 11366that these values will vary depending on the efficiency of the compiler 11367and 11368the compiler options used during generation. 11369 11370 Previous Release: 11371 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 11372 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 11373 Current Release: 11374 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total 11375 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total 11376 11377 113782) iASL Compiler/Disassembler: 11379 11380Disassembler fix: Added a check to ensure that the table length found in 11381the 11382ACPI table header within the input file is not longer than the actual 11383input 11384file size. This indicates some kind of file or table corruption. 11385 11386---------------------------------------- 1138729 March 2005. Summary of changes for version 20050329: 11388 113891) ACPI CA Core Subsystem: 11390 11391An error is now generated if an attempt is made to create a Buffer Field 11392of 11393length zero (A CreateField with a length operand of zero.) 11394 11395The interpreter now issues a warning whenever executable code at the 11396module 11397level is detected during ACPI table load. This will give some idea of the 11398prevalence of this type of code. 11399 11400Implemented support for references to named objects (other than control 11401methods) within package objects. 11402 11403Enhanced package object output for the debug object. Package objects are 11404now 11405completely dumped, showing all elements. 11406 11407Enhanced miscellaneous object output for the debug object. Any object can 11408now be written to the debug object (for example, a device object can be 11409written, and the type of the object will be displayed.) 11410 11411The "static" qualifier has been added to all local functions across both 11412the 11413core subsystem and the iASL compiler. 11414 11415The number of "long" lines (> 80 chars) within the source has been 11416significantly reduced, by about 1/3. 11417 11418Cleaned up all header files to ensure that all CA/iASL functions are 11419prototyped (even static functions) and the formatting is consistent. 11420 11421Two new header files have been added, acopcode.h and acnames.h. 11422 11423Removed several obsolete functions that were no longer used. 11424 11425Code and Data Size: Current and previous core subsystem library sizes are 11426shown below. These are the code and data sizes for the acpica.lib 11427produced 11428by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11429any ACPI driver or OSPM code. The debug version of the code includes the 11430debug output trace mechanism and has a much larger code and data size. 11431Note 11432that these values will vary depending on the efficiency of the compiler 11433and 11434the compiler options used during generation. 11435 11436 Previous Release: 11437 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11438 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 11439 Current Release: 11440 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total 11441 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total 11442 11443 11444 114452) iASL Compiler/Disassembler: 11446 11447Fixed a problem with the resource descriptor generation/support. For the 11448ResourceSourceIndex and the ResourceSource fields, both must be present, 11449or 11450both must be not present - can't have one without the other. 11451 11452The compiler now returns non-zero from the main procedure if any errors 11453have 11454occurred during the compilation. 11455 11456 11457---------------------------------------- 1145809 March 2005. Summary of changes for version 20050309: 11459 114601) ACPI CA Core Subsystem: 11461 11462The string-to-buffer implicit conversion code has been modified again 11463after 11464a change to the ACPI specification. In order to match the behavior of 11465the 11466other major ACPI implementation, the target buffer is no longer truncated 11467if 11468the source string is smaller than an existing target buffer. This change 11469requires an update to the ACPI spec, and should eliminate the recent 11470AE_AML_BUFFER_LIMIT issues. 11471 11472The "implicit return" support was rewritten to a new algorithm that 11473solves 11474the general case. Rather than attempt to determine when a method is about 11475to 11476exit, the result of every ASL operator is saved momentarily until the 11477very 11478next ASL operator is executed. Therefore, no matter how the method exits, 11479there will always be a saved implicit return value. This feature is only 11480enabled with the AcpiGbl_EnableInterpreterSlack flag, and should 11481eliminate 11482AE_AML_NO_RETURN_VALUE errors when enabled. 11483 11484Implemented implicit conversion support for the predicate (operand) of 11485the 11486If, Else, and While operators. String and Buffer arguments are 11487automatically 11488converted to Integers. 11489 11490Changed the string-to-integer conversion behavior to match the new ACPI 11491errata: "If no integer object exists, a new integer is created. The ASCII 11492string is interpreted as a hexadecimal constant. Each string character is 11493interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting 11494with the first character as the most significant digit, and ending with 11495the 11496first non-hexadecimal character or end-of-string." This means that the 11497first 11498non-hex character terminates the conversion and this is the code that was 11499changed. 11500 11501Fixed a problem where the ObjectType operator would fail (fault) when 11502used 11503on an Index of a Package which pointed to a null package element. The 11504operator now properly returns zero (Uninitialized) in this case. 11505 11506Fixed a problem where the While operator used excessive memory by not 11507properly popping the result stack during execution. There was no memory 11508leak 11509after execution, however. (Code provided by Valery Podrezov.) 11510 11511Fixed a problem where references to control methods within Package 11512objects 11513caused the method to be invoked, instead of producing a reference object 11514pointing to the method. 11515 11516Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree) 11517to 11518improve performance and reduce code size. (Code provided by Alexey 11519Starikovskiy.) 11520 11521Code and Data Size: Current and previous core subsystem library sizes are 11522shown below. These are the code and data sizes for the acpica.lib 11523produced 11524by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11525any ACPI driver or OSPM code. The debug version of the code includes the 11526debug output trace mechanism and has a much larger code and data size. 11527Note 11528that these values will vary depending on the efficiency of the compiler 11529and 11530the compiler options used during generation. 11531 11532 Previous Release: 11533 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11534 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 11535 Current Release: 11536 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11537 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total 11538 11539 115402) iASL Compiler/Disassembler: 11541 11542Fixed a problem with the Return operator with no arguments. Since the AML 11543grammar for the byte encoding requires an operand for the Return opcode, 11544the 11545compiler now emits a Return(Zero) for this case. An ACPI specification 11546update has been written for this case. 11547 11548For tables other than the DSDT, namepath optimization is automatically 11549disabled. This is because SSDTs can be loaded anywhere in the namespace, 11550the 11551compiler has no knowledge of where, and thus cannot optimize namepaths. 11552 11553Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was 11554inadvertently omitted from the ACPI specification, and will require an 11555update to the spec. 11556 11557The source file scan for ASCII characters is now optional (-a). This 11558change 11559was made because some vendors place non-ascii characters within comments. 11560However, the scan is simply a brute-force byte compare to ensure all 11561characters in the file are in the range 0x00 to 0x7F. 11562 11563Fixed a problem with the CondRefOf operator where the compiler was 11564inappropriately checking for the existence of the target. Since the point 11565of 11566the operator is to check for the existence of the target at run-time, the 11567compiler no longer checks for the target existence. 11568 11569Fixed a problem where errors generated from the internal AML interpreter 11570during constant folding were not handled properly, causing a fault. 11571 11572Fixed a problem with overly aggressive range checking for the Stall 11573operator. The valid range (max 255) is now only checked if the operand is 11574of 11575type Integer. All other operand types cannot be statically checked. 11576 11577Fixed a problem where control method references within the RefOf, 11578DeRefOf, 11579and ObjectType operators were not treated properly. They are now treated 11580as 11581actual references, not method invocations. 11582 11583Fixed and enhanced the "list namespace" option (-ln). This option was 11584broken 11585a number of releases ago. 11586 11587Improved error handling for the Field, IndexField, and BankField 11588operators. 11589The compiler now cleanly reports and recovers from errors in the field 11590component (FieldUnit) list. 11591 11592Fixed a disassembler problem where the optional ResourceDescriptor fields 11593TRS and TTP were not always handled correctly. 11594 11595Disassembler - Comments in output now use "//" instead of "/*" 11596 11597---------------------------------------- 1159828 February 2005. Summary of changes for version 20050228: 11599 116001) ACPI CA Core Subsystem: 11601 11602Fixed a problem where the result of an Index() operator (an object 11603reference) must increment the reference count on the target object for 11604the 11605life of the object reference. 11606 11607Implemented AML Interpreter and Debugger support for the new ACPI 3.0 11608Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and 11609WordSpace 11610resource descriptors. 11611 11612Implemented support in the _OSI method for the ACPI 3.0 "Extended Address 11613Space Descriptor" string, indicating interpreter support for the 11614descriptors 11615above. 11616 11617Implemented header support for the new ACPI 3.0 FADT flag bits. 11618 11619Implemented header support for the new ACPI 3.0 PCI Express bits for the 11620PM1 11621status/enable registers. 11622 11623Updated header support for the MADT processor local Apic struct and MADT 11624platform interrupt source struct for new ACPI 3.0 fields. 11625 11626Implemented header support for the SRAT and SLIT ACPI tables. 11627 11628Implemented the -s switch in AcpiExec to enable the "InterpreterSlack" 11629flag 11630at runtime. 11631 11632Code and Data Size: Current and previous core subsystem library sizes are 11633shown below. These are the code and data sizes for the acpica.lib 11634produced 11635by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11636any ACPI driver or OSPM code. The debug version of the code includes the 11637debug output trace mechanism and has a much larger code and data size. 11638Note 11639that these values will vary depending on the efficiency of the compiler 11640and 11641the compiler options used during generation. 11642 11643 Previous Release: 11644 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 11645 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 11646 Current Release: 11647 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11648 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total 11649 11650 116512) iASL Compiler/Disassembler: 11652 11653Fixed a problem with the internal 64-bit String-to-integer conversion 11654with 11655strings less than two characters long. 11656 11657Fixed a problem with constant folding where the result of the Index() 11658operator can not be considered a constant. This means that Index() cannot 11659be 11660a type3 opcode and this will require an update to the ACPI specification. 11661 11662Disassembler: Implemented support for the TTP, MTP, and TRS resource 11663descriptor fields. These fields were inadvertently ignored and not output 11664in 11665the disassembly of the resource descriptor. 11666 11667 11668 ---------------------------------------- 1166911 February 2005. Summary of changes for version 20050211: 11670 116711) ACPI CA Core Subsystem: 11672 11673Implemented ACPI 3.0 support for implicit conversion within the Match() 11674operator. MatchObjects can now be of type integer, buffer, or string 11675instead 11676of just type integer. Package elements are implicitly converted to the 11677type 11678of the MatchObject. This change aligns the behavior of Match() with the 11679behavior of the other logical operators (LLess(), etc.) It also requires 11680an 11681errata change to the ACPI specification as this support was intended for 11682ACPI 3.0, but was inadvertently omitted. 11683 11684Fixed a problem with the internal implicit "to buffer" conversion. 11685Strings 11686that are converted to buffers will cause buffer truncation if the string 11687is 11688smaller than the target buffer. Integers that are converted to buffers 11689will 11690not cause buffer truncation, only zero extension (both as per the ACPI 11691spec.) The problem was introduced when code was added to truncate the 11692buffer, but this should not be performed in all cases, only the string 11693case. 11694 11695Fixed a problem with the Buffer and Package operators where the 11696interpreter 11697would get confused if two such operators were used as operands to an ASL 11698operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result 11699stack was not being popped after the execution of these operators, 11700resulting 11701in an AE_NO_RETURN_VALUE exception. 11702 11703Fixed a problem with constructs of the form Store(Index(...),...). The 11704reference object returned from Index was inadvertently resolved to an 11705actual 11706value. This problem was introduced in version 20050114 when the behavior 11707of 11708Store() was modified to restrict the object types that can be used as the 11709source operand (to match the ACPI specification.) 11710 11711Reduced excessive stack use within the AcpiGetObjectInfo procedure. 11712 11713Added a fix to aclinux.h to allow generation of AcpiExec on Linux. 11714 11715Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct. 11716 11717Code and Data Size: Current and previous core subsystem library sizes are 11718shown below. These are the code and data sizes for the acpica.lib 11719produced 11720by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11721any ACPI driver or OSPM code. The debug version of the code includes the 11722debug output trace mechanism and has a much larger code and data size. 11723Note 11724that these values will vary depending on the efficiency of the compiler 11725and 11726the compiler options used during generation. 11727 11728 Previous Release: 11729 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 11730 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 11731 Current Release: 11732 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total 11733 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total 11734 11735 117362) iASL Compiler/Disassembler: 11737 11738Fixed a code generation problem in the constant folding optimization code 11739where incorrect code was generated if a constant was reduced to a buffer 11740object (i.e., a reduced type 5 opcode.) 11741 11742Fixed a typechecking problem for the ToBuffer operator. Caused by an 11743incorrect return type in the internal opcode information table. 11744 11745---------------------------------------- 1174625 January 2005. Summary of changes for version 20050125: 11747 117481) ACPI CA Core Subsystem: 11749 11750Fixed a recently introduced problem with the Global Lock where the 11751underlying semaphore was not created. This problem was introduced in 11752version 20050114, and caused an AE_AML_NO_OPERAND exception during an 11753Acquire() operation on _GL. 11754 11755The local object cache is now optional, and is disabled by default. Both 11756AcpiExec and the iASL compiler enable the cache because they run in user 11757mode and this enhances their performance. #define 11758ACPI_ENABLE_OBJECT_CACHE 11759to enable the local cache. 11760 11761Fixed an issue in the internal function AcpiUtEvaluateObject concerning 11762the 11763optional "implicit return" support where an error was returned if no 11764return 11765object was expected, but one was implicitly returned. AE_OK is now 11766returned 11767in this case and the implicitly returned object is deleted. 11768AcpiUtEvaluateObject is only occasionally used, and only to execute 11769reserved 11770methods such as _STA and _INI where the return type is known up front. 11771 11772Fixed a few issues with the internal convert-to-integer code. It now 11773returns 11774an error if an attempt is made to convert a null string, a string of only 11775blanks/tabs, or a zero-length buffer. This affects both implicit 11776conversion 11777and explicit conversion via the ToInteger() operator. 11778 11779The internal debug code in AcpiUtAcquireMutex has been commented out. It 11780is 11781not needed for normal operation and should increase the performance of 11782the 11783entire subsystem. The code remains in case it is needed for debug 11784purposes 11785again. 11786 11787The AcpiExec source and makefile are included in the Unix/Linux package 11788for 11789the first time. 11790 11791Code and Data Size: Current and previous core subsystem library sizes are 11792shown below. These are the code and data sizes for the acpica.lib 11793produced 11794by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11795any ACPI driver or OSPM code. The debug version of the code includes the 11796debug output trace mechanism and has a much larger code and data size. 11797Note 11798that these values will vary depending on the efficiency of the compiler 11799and 11800the compiler options used during generation. 11801 11802 Previous Release: 11803 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 11804 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 11805 Current Release: 11806 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total 11807 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total 11808 118092) iASL Compiler/Disassembler: 11810 11811Switch/Case support: A warning is now issued if the type of the Switch 11812value 11813cannot be determined at compile time. For example, Switch(Arg0) will 11814generate the warning, and the type is assumed to be an integer. As per 11815the 11816ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate 11817the 11818warning. 11819 11820Switch/Case support: Implemented support for buffer and string objects as 11821the switch value. This is an ACPI 3.0 feature, now that LEqual supports 11822buffers and strings. 11823 11824Switch/Case support: The emitted code for the LEqual() comparisons now 11825uses 11826the switch value as the first operand, not the second. The case value is 11827now 11828the second operand, and this allows the case value to be implicitly 11829converted to the type of the switch value, not the other way around. 11830 11831Switch/Case support: Temporary variables are now emitted immediately 11832within 11833the control method, not at the global level. This means that there are 11834now 1183536 temps available per-method, not 36 temps per-module as was the case 11836with 11837the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.) 11838 11839---------------------------------------- 1184014 January 2005. Summary of changes for version 20050114: 11841 11842Added 2005 copyright to all module headers. This affects every module in 11843the core subsystem, iASL compiler, and the utilities. 11844 118451) ACPI CA Core Subsystem: 11846 11847Fixed an issue with the String-to-Buffer conversion code where the string 11848null terminator was not included in the buffer after conversion, but 11849there 11850is existing ASL that assumes the string null terminator is included. This 11851is 11852the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was 11853introduced in the previous version when the code was updated to correctly 11854set the converted buffer size as per the ACPI specification. The ACPI 11855spec 11856is ambiguous and will be updated to specify that the null terminator must 11857be 11858included in the converted buffer. This also affects the ToBuffer() ASL 11859operator. 11860 11861Fixed a problem with the Mid() ASL/AML operator where it did not work 11862correctly on Buffer objects. Newly created sub-buffers were not being 11863marked 11864as initialized. 11865 11866 11867Fixed a problem in AcpiTbFindTable where incorrect string compares were 11868performed on the OemId and OemTableId table header fields. These fields 11869are 11870not null terminated, so strncmp is now used instead of strcmp. 11871 11872Implemented a restriction on the Store() ASL/AML operator to align the 11873behavior with the ACPI specification. Previously, any object could be 11874used 11875as the source operand. Now, the only objects that may be used are 11876Integers, 11877Buffers, Strings, Packages, Object References, and DDB Handles. If 11878necessary, the original behavior can be restored by enabling the 11879EnableInterpreterSlack flag. 11880 11881Enhanced the optional "implicit return" support to allow an implicit 11882return 11883value from methods that are invoked externally via the AcpiEvaluateObject 11884interface. This enables implicit returns from the _STA and _INI methods, 11885for example. 11886 11887Changed the Revision() ASL/AML operator to return the current version of 11888the 11889AML interpreter, in the YYYYMMDD format. Previously, it incorrectly 11890returned 11891the supported ACPI version (This is the function of the _REV method). 11892 11893Updated the _REV predefined method to return the currently supported 11894version 11895of ACPI, now 3. 11896 11897Implemented batch mode option for the AcpiExec utility (-b). 11898 11899Code and Data Size: Current and previous core subsystem library sizes are 11900shown below. These are the code and data sizes for the acpica.lib 11901produced 11902by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11903any ACPI driver or OSPM code. The debug version of the code includes the 11904debug output trace mechanism and has a much larger code and data size. 11905Note 11906that these values will vary depending on the efficiency of the compiler 11907and 11908the compiler options used during generation. 11909 11910 Previous Release: 11911 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11912 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 11913 Current Release: 11914 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total 11915 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total 11916 11917---------------------------------------- 1191810 December 2004. Summary of changes for version 20041210: 11919 11920ACPI 3.0 support is nearing completion in both the iASL compiler and the 11921ACPI CA core subsystem. 11922 119231) ACPI CA Core Subsystem: 11924 11925Fixed a problem in the ToDecimalString operator where the resulting 11926string 11927length was incorrectly calculated. The length is now calculated exactly, 11928eliminating incorrect AE_STRING_LIMIT exceptions. 11929 11930Fixed a problem in the ToHexString operator to allow a maximum 200 11931character 11932string to be produced. 11933 11934Fixed a problem in the internal string-to-buffer and buffer-to-buffer 11935copy 11936routine where the length of the resulting buffer was not truncated to the 11937new size (if the target buffer already existed). 11938 11939Code and Data Size: Current and previous core subsystem library sizes are 11940shown below. These are the code and data sizes for the acpica.lib 11941produced 11942by the Microsoft Visual C++ 6.0 compiler, and these values do not include 11943any ACPI driver or OSPM code. The debug version of the code includes the 11944debug output trace mechanism and has a much larger code and data size. 11945Note 11946that these values will vary depending on the efficiency of the compiler 11947and 11948the compiler options used during generation. 11949 11950 Previous Release: 11951 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11952 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 11953 Current Release: 11954 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 11955 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total 11956 11957 119582) iASL Compiler/Disassembler: 11959 11960Implemented the new ACPI 3.0 resource template macros - DWordSpace, 11961ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace. 11962Includes support in the disassembler. 11963 11964Implemented support for the new (ACPI 3.0) parameter to the Register 11965macro, 11966AccessSize. 11967 11968Fixed a problem where the _HE resource name for the Interrupt macro was 11969referencing bit 0 instead of bit 1. 11970 11971Implemented check for maximum 255 interrupts in the Interrupt macro. 11972 11973Fixed a problem with the predefined resource descriptor names where 11974incorrect AML code was generated if the offset within the resource buffer 11975was 0 or 1. The optimizer shortened the AML code to a single byte opcode 11976but did not update the surrounding package lengths. 11977 11978Changes to the Dma macro: All channels within the channel list must be 11979in 11980the range 0-7. Maximum 8 channels can be specified. BusMaster operand is 11981optional (default is BusMaster). 11982 11983Implemented check for maximum 7 data bytes for the VendorShort macro. 11984 11985The ReadWrite parameter is now optional for the Memory32 and similar 11986macros. 11987 11988---------------------------------------- 1198903 December 2004. Summary of changes for version 20041203: 11990 119911) ACPI CA Core Subsystem: 11992 11993The low-level field insertion/extraction code (exfldio) has been 11994completely 11995rewritten to eliminate unnecessary complexity, bugs, and boundary 11996conditions. 11997 11998Fixed a problem in the ToInteger, ToBuffer, ToHexString, and 11999ToDecimalString 12000operators where the input operand could be inadvertently deleted if no 12001conversion was necessary (e.g., if the input to ToInteger was an Integer 12002object.) 12003 12004Fixed a problem with the ToDecimalString and ToHexString where an 12005incorrect 12006exception code was returned if the resulting string would be > 200 chars. 12007AE_STRING_LIMIT is now returned. 12008 12009Fixed a problem with the Concatenate operator where AE_OK was always 12010returned, even if the operation failed. 12011 12012Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128 12013semaphores to be allocated. 12014 12015Code and Data Size: Current and previous core subsystem library sizes are 12016shown below. These are the code and data sizes for the acpica.lib 12017produced 12018by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12019any ACPI driver or OSPM code. The debug version of the code includes the 12020debug output trace mechanism and has a much larger code and data size. 12021Note 12022that these values will vary depending on the efficiency of the compiler 12023and 12024the compiler options used during generation. 12025 12026 Previous Release: 12027 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12028 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12029 Current Release: 12030 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total 12031 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total 12032 12033 120342) iASL Compiler/Disassembler: 12035 12036Fixed typechecking for the ObjectType and SizeOf operators. Problem was 12037recently introduced in 20041119. 12038 12039Fixed a problem with the ToUUID macro where the upper nybble of each 12040buffer 12041byte was inadvertently set to zero. 12042 12043---------------------------------------- 1204419 November 2004. Summary of changes for version 20041119: 12045 120461) ACPI CA Core Subsystem: 12047 12048Fixed a problem in the internal ConvertToInteger routine where new 12049integers 12050were not truncated to 32 bits for 32-bit ACPI tables. This routine 12051converts 12052buffers and strings to integers. 12053 12054Implemented support to store a value to an Index() on a String object. 12055This 12056is an ACPI 2.0 feature that had not yet been implemented. 12057 12058Implemented new behavior for storing objects to individual package 12059elements 12060(via the Index() operator). The previous behavior was to invoke the 12061implicit 12062conversion rules if an object was already present at the index. The new 12063behavior is to simply delete any existing object and directly store the 12064new 12065object. Although the ACPI specification seems unclear on this subject, 12066other 12067ACPI implementations behave in this manner. (This is the root of the 12068AE_BAD_HEX_CONSTANT issue.) 12069 12070Modified the RSDP memory scan mechanism to support the extended checksum 12071for 12072ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid 12073RSDP signature is found with a valid checksum. 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: 78.5K Code, 11.5K Data, 90.0K Total 12088 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12089 Current Release: 12090 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12091 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12092 12093 120942) iASL Compiler/Disassembler: 12095 12096Fixed a missing semicolon in the aslcompiler.y file. 12097 12098---------------------------------------- 1209905 November 2004. Summary of changes for version 20041105: 12100 121011) ACPI CA Core Subsystem: 12102 12103Implemented support for FADT revision 2. This was an interim table 12104(between 12105ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register. 12106 12107Implemented optional support to allow uninitialized LocalX and ArgX 12108variables in a control method. The variables are initialized to an 12109Integer 12110object with a value of zero. This support is enabled by setting the 12111AcpiGbl_EnableInterpreterSlack flag to TRUE. 12112 12113Implemented support for Integer objects for the SizeOf operator. Either 121144 12115or 8 is returned, depending on the current integer size (32-bit or 64- 12116bit, 12117depending on the parent table revision). 12118 12119Fixed a problem in the implementation of the SizeOf and ObjectType 12120operators 12121where the operand was resolved to a value too early, causing incorrect 12122return values for some objects. 12123 12124Fixed some possible memory leaks during exceptional conditions. 12125 12126Code and Data Size: Current and previous core subsystem library sizes are 12127shown below. These are the code and data sizes for the acpica.lib 12128produced 12129by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12130any ACPI driver or OSPM code. The debug version of the code includes the 12131debug output trace mechanism and has a much larger code and data size. 12132Note 12133that these values will vary depending on the efficiency of the compiler 12134and 12135the compiler options used during generation. 12136 12137 Previous Release: 12138 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12139 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 12140 Current Release: 12141 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total 12142 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total 12143 12144 121452) iASL Compiler/Disassembler: 12146 12147Implemented support for all ACPI 3.0 reserved names and methods. 12148 12149Implemented all ACPI 3.0 grammar elements in the front-end, including 12150support for semicolons. 12151 12152Implemented the ACPI 3.0 Function() and ToUUID() macros 12153 12154Fixed a problem in the disassembler where a Scope() operator would not be 12155emitted properly if the target of the scope was in another table. 12156 12157---------------------------------------- 1215815 October 2004. Summary of changes for version 20041015: 12159 12160Note: ACPI CA is currently undergoing an in-depth and complete formal 12161evaluation to test/verify the following areas. Other suggestions are 12162welcome. This will result in an increase in the frequency of releases and 12163the number of bug fixes in the next few months. 12164 - Functional tests for all ASL/AML operators 12165 - All implicit/explicit type conversions 12166 - Bit fields and operation regions 12167 - 64-bit math support and 32-bit-only "truncated" math support 12168 - Exceptional conditions, both compiler and interpreter 12169 - Dynamic object deletion and memory leaks 12170 - ACPI 3.0 support when implemented 12171 - External interfaces to the ACPI subsystem 12172 12173 121741) ACPI CA Core Subsystem: 12175 12176Fixed two alignment issues on 64-bit platforms - within debug statements 12177in 12178AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the 12179Address 12180field within the non-aligned ACPI generic address structure. 12181 12182Fixed a problem in the Increment and Decrement operators where incorrect 12183operand resolution could result in the inadvertent modification of the 12184original integer when the integer is passed into another method as an 12185argument and the arg is then incremented/decremented. 12186 12187Fixed a problem in the FromBCD operator where the upper 32-bits of a 64- 12188bit 12189BCD number were truncated during conversion. 12190 12191Fixed a problem in the ToDecimal operator where the length of the 12192resulting 12193string could be set incorrectly too long if the input operand was a 12194Buffer 12195object. 12196 12197Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte 12198(0) 12199within a buffer would prematurely terminate a compare between buffer 12200objects. 12201 12202Added a check for string overflow (>200 characters as per the ACPI 12203specification) during the Concatenate operator with two string operands. 12204 12205Code and Data Size: Current and previous core subsystem library sizes are 12206shown below. These are the code and data sizes for the acpica.lib 12207produced 12208by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12209any ACPI driver or OSPM code. The debug version of the code includes the 12210debug output trace mechanism and has a much larger code and data size. 12211Note 12212that these values will vary depending on the efficiency of the compiler 12213and 12214the compiler options used during generation. 12215 12216 Previous Release: 12217 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12218 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 12219 Current Release: 12220 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12221 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total 12222 12223 12224 122252) iASL Compiler/Disassembler: 12226 12227Allow the use of the ObjectType operator on uninitialized Locals and Args 12228(returns 0 as per the ACPI specification). 12229 12230Fixed a problem where the compiler would fault if there was a syntax 12231error 12232in the FieldName of all of the various CreateXXXField operators. 12233 12234Disallow the use of lower case letters within the EISAID macro, as per 12235the 12236ACPI specification. All EISAID strings must be of the form "UUUNNNN" 12237Where 12238U is an uppercase letter and N is a hex digit. 12239 12240 12241---------------------------------------- 1224206 October 2004. Summary of changes for version 20041006: 12243 122441) ACPI CA Core Subsystem: 12245 12246Implemented support for the ACPI 3.0 Timer operator. This ASL function 12247implements a 64-bit timer with 100 nanosecond granularity. 12248 12249Defined a new OSL interface, AcpiOsGetTimer. This interface is used to 12250implement the ACPI 3.0 Timer operator. This allows the host OS to 12251implement 12252the timer with the best clock available. Also, it keeps the core 12253subsystem 12254out of the clock handling business, since the host OS (usually) performs 12255this function. 12256 12257Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write) 12258functions use a 64-bit address which is part of the packed ACPI Generic 12259Address Structure. Since the structure is non-aligned, the alignment 12260macros 12261are now used to extract the address to a local variable before use. 12262 12263Fixed a problem where the ToInteger operator assumed all input strings 12264were 12265hexadecimal. The operator now handles both decimal strings and hex 12266strings 12267(prefixed with "0x"). 12268 12269Fixed a problem where the string length in the string object created as a 12270result of the internal ConvertToString procedure could be incorrect. This 12271potentially affected all implicit conversions and also the 12272ToDecimalString 12273and ToHexString operators. 12274 12275Fixed two problems in the ToString operator. If the length parameter was 12276zero, an incorrect string object was created and the value of the input 12277length parameter was inadvertently changed from zero to Ones. 12278 12279Fixed a problem where the optional ResourceSource string in the 12280ExtendedIRQ 12281resource macro was ignored. 12282 12283Simplified the interfaces to the internal division functions, reducing 12284code 12285size and complexity. 12286 12287Code and Data Size: Current and previous core subsystem library sizes are 12288shown below. These are the code and data sizes for the acpica.lib 12289produced 12290by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12291any ACPI driver or OSPM code. The debug version of the code includes the 12292debug output trace mechanism and has a much larger code and data size. 12293Note 12294that these values will vary depending on the efficiency of the compiler 12295and 12296the compiler options used during generation. 12297 12298 Previous Release: 12299 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 12300 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 12301 Current Release: 12302 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12303 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total 12304 12305 123062) iASL Compiler/Disassembler: 12307 12308Implemented support for the ACPI 3.0 Timer operator. 12309 12310Fixed a problem where the Default() operator was inadvertently ignored in 12311a 12312Switch/Case block. This was a problem in the translation of the Switch 12313statement to If...Else pairs. 12314 12315Added support to allow a standalone Return operator, with no parentheses 12316(or 12317operands). 12318 12319Fixed a problem with code generation for the ElseIf operator where the 12320translated Else...If parse tree was improperly constructed leading to the 12321loss of some code. 12322 12323---------------------------------------- 1232422 September 2004. Summary of changes for version 20040922: 12325 123261) ACPI CA Core Subsystem: 12327 12328Fixed a problem with the implementation of the LNot() operator where 12329"Ones" 12330was not returned for the TRUE case. Changed the code to return Ones 12331instead 12332of (!Arg) which was usually 1. This change affects iASL constant folding 12333for 12334this operator also. 12335 12336Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was 12337not 12338initialized properly -- Now zero the entire buffer in this case where the 12339buffer already exists. 12340 12341Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32 12342Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all 12343related code considerably. This will require changes/updates to all OS 12344interface layers (OSLs.) 12345 12346Implemented a new external interface, AcpiInstallExceptionHandler, to 12347allow 12348a system exception handler to be installed. This handler is invoked upon 12349any 12350run-time exception that occurs during control method execution. 12351 12352Added support for the DSDT in AcpiTbFindTable. This allows the 12353DataTableRegion() operator to access the local copy of the DSDT. 12354 12355Code and Data Size: Current and previous core subsystem library sizes are 12356shown below. These are the code and data sizes for the acpica.lib 12357produced 12358by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12359any ACPI driver or OSPM code. The debug version of the code includes the 12360debug output trace mechanism and has a much larger code and data size. 12361Note 12362that these values will vary depending on the efficiency of the compiler 12363and 12364the compiler options used during generation. 12365 12366 Previous Release: 12367 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 12368 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 12369 Current Release: 12370 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total 12371 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total 12372 12373 123742) iASL Compiler/Disassembler: 12375 12376Fixed a problem with constant folding and the LNot operator. LNot was 12377returning 1 in the TRUE case, not Ones as per the ACPI specification. 12378This 12379could result in the generation of an incorrect folded/reduced constant. 12380 12381End-Of-File is now allowed within a "//"-style comment. A parse error no 12382longer occurs if such a comment is at the very end of the input ASL 12383source 12384file. 12385 12386Implemented the "-r" option to override the Revision in the table header. 12387The initial use of this option will be to simplify the evaluation of the 12388AML 12389interpreter by allowing a single ASL source module to be compiled for 12390either 1239132-bit or 64-bit integers. 12392 12393 12394---------------------------------------- 1239527 August 2004. Summary of changes for version 20040827: 12396 123971) ACPI CA Core Subsystem: 12398 12399- Implemented support for implicit object conversion in the non-numeric 12400logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual, 12401and 12402LNotEqual.) Any combination of Integers/Strings/Buffers may now be used; 12403the second operand is implicitly converted on the fly to match the type 12404of 12405the first operand. For example: 12406 12407 LEqual (Source1, Source2) 12408 12409Source1 and Source2 must each evaluate to an integer, a string, or a 12410buffer. 12411The data type of Source1 dictates the required type of Source2. Source2 12412is 12413implicitly converted if necessary to match the type of Source1. 12414 12415- Updated and corrected the behavior of the string conversion support. 12416The 12417rules concerning conversion of buffers to strings (according to the ACPI 12418specification) are as follows: 12419 12420ToDecimalString - explicit byte-wise conversion of buffer to string of 12421decimal values (0-255) separated by commas. ToHexString - explicit byte- 12422wise 12423conversion of buffer to string of hex values (0-FF) separated by commas. 12424ToString - explicit byte-wise conversion of buffer to string. Byte-by- 12425byte 12426copy with no transform except NULL terminated. Any other implicit buffer- 12427to- 12428string conversion - byte-wise conversion of buffer to string of hex 12429values 12430(0-FF) separated by spaces. 12431 12432- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack. 12433 12434- Fixed a problem in AcpiNsGetPathnameLength where the returned length 12435was 12436one byte too short in the case of a node in the root scope. This could 12437cause a fault during debug output. 12438 12439- Code and Data Size: Current and previous core subsystem library sizes 12440are 12441shown below. These are the code and data sizes for the acpica.lib 12442produced 12443by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12444any ACPI driver or OSPM code. The debug version of the code includes the 12445debug output trace mechanism and has a much larger code and data size. 12446Note 12447that these values will vary depending on the efficiency of the compiler 12448and 12449the compiler options used during generation. 12450 12451 Previous Release: 12452 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 12453 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 12454 Current Release: 12455 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total 12456 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total 12457 12458 124592) iASL Compiler/Disassembler: 12460 12461- Fixed a Linux generation error. 12462 12463 12464---------------------------------------- 1246516 August 2004. Summary of changes for version 20040816: 12466 124671) ACPI CA Core Subsystem: 12468 12469Designed and implemented support within the AML interpreter for the so- 12470called "implicit return". This support returns the result of the last 12471ASL 12472operation within a control method, in the absence of an explicit Return() 12473operator. A few machines depend on this behavior, even though it is not 12474explicitly supported by the ASL language. It is optional support that 12475can 12476be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag. 12477 12478Removed support for the PCI_Config address space from the internal low 12479level 12480hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This 12481support was not used internally, and would not work correctly anyway 12482because 12483the PCI bus number and segment number were not supported. There are 12484separate interfaces for PCI configuration space access because of the 12485unique 12486interface. 12487 12488Code and Data Size: Current and previous core subsystem library sizes are 12489shown below. These are the code and data sizes for the acpica.lib 12490produced 12491by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12492any ACPI driver or OSPM code. The debug version of the code includes the 12493debug output trace mechanism and has a much larger code and data size. 12494Note 12495that these values will vary depending on the efficiency of the compiler 12496and 12497the compiler options used during generation. 12498 12499 Previous Release: 12500 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12501 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 12502 Current Release: 12503 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total 12504 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total 12505 12506 125072) iASL Compiler/Disassembler: 12508 12509Fixed a problem where constants in ASL expressions at the root level (not 12510within a control method) could be inadvertently truncated during code 12511generation. This problem was introduced in the 20040715 release. 12512 12513 12514---------------------------------------- 1251515 July 2004. Summary of changes for version 20040715: 12516 125171) ACPI CA Core Subsystem: 12518 12519Restructured the internal HW GPE interfaces to pass/track the current 12520state 12521of interrupts (enabled/disabled) in order to avoid possible deadlock and 12522increase flexibility of the interfaces. 12523 12524Implemented a "lexicographical compare" for String and Buffer objects 12525within 12526the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual - 12527- 12528as per further clarification to the ACPI specification. Behavior is 12529similar 12530to C library "strcmp". 12531 12532Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable 12533external function. In the 32-bit non-debug case, the stack use has been 12534reduced from 168 bytes to 32 bytes. 12535 12536Deployed a new run-time configuration flag, 12537AcpiGbl_EnableInterpreterSlack, 12538whose purpose is to allow the AML interpreter to forgive certain bad AML 12539constructs. Default setting is FALSE. 12540 12541Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field 12542IO 12543support code. If enabled, it allows field access to go beyond the end of 12544a 12545region definition if the field is within the region length rounded up to 12546the 12547next access width boundary (a common coding error.) 12548 12549Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to 12550ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also, 12551these 12552symbols are lowercased by the latest version of the AcpiSrc tool. 12553 12554The prototypes for the PCI interfaces in acpiosxf.h have been updated to 12555rename "Register" to simply "Reg" to prevent certain compilers from 12556complaining. 12557 12558Code and Data Size: Current and previous core subsystem library sizes are 12559shown below. These are the code and data sizes for the acpica.lib 12560produced 12561by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12562any ACPI driver or OSPM code. The debug version of the code includes the 12563debug output trace mechanism and has a much larger code and data size. 12564Note 12565that these values will vary depending on the efficiency of the compiler 12566and 12567the compiler options used during generation. 12568 12569 Previous Release: 12570 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12571 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 12572 Current Release: 12573 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total 12574 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total 12575 12576 125772) iASL Compiler/Disassembler: 12578 12579Implemented full support for Package objects within the Case() operator. 12580Note: The Break() operator is currently not supported within Case blocks 12581(TermLists) as there is some question about backward compatibility with 12582ACPI 125831.0 interpreters. 12584 12585 12586Fixed a problem where complex terms were not supported properly within 12587the 12588Switch() operator. 12589 12590Eliminated extraneous warning for compiler-emitted reserved names of the 12591form "_T_x". (Used in Switch/Case operators.) 12592 12593Eliminated optimization messages for "_T_x" objects and small constants 12594within the DefinitionBlock operator. 12595 12596 12597---------------------------------------- 1259815 June 2004. Summary of changes for version 20040615: 12599 126001) ACPI CA Core Subsystem: 12601 12602Implemented support for Buffer and String objects (as per ACPI 2.0) for 12603the 12604following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 12605LLessEqual. 12606 12607All directory names in the entire source package are lower case, as they 12608were in earlier releases. 12609 12610Implemented "Disassemble" command in the AML debugger that will 12611disassemble 12612a single control method. 12613 12614Code and Data Size: Current and previous core subsystem library sizes are 12615shown below. These are the code and data sizes for the acpica.lib 12616produced 12617by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12618any ACPI driver or OSPM code. The debug version of the code includes the 12619debug output trace mechanism and has a much larger code and data size. 12620Note 12621that these values will vary depending on the efficiency of the compiler 12622and 12623the compiler options used during generation. 12624 12625 Previous Release: 12626 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 12627 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 12628 12629 Current Release: 12630 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total 12631 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total 12632 12633 126342) iASL Compiler/Disassembler: 12635 12636Implemented support for Buffer and String objects (as per ACPI 2.0) for 12637the 12638following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and 12639LLessEqual. 12640 12641All directory names in the entire source package are lower case, as they 12642were in earlier releases. 12643 12644Fixed a fault when using the -g or -d<nofilename> options if the FADT was 12645not found. 12646 12647Fixed an issue with the Windows version of the compiler where later 12648versions 12649of Windows place the FADT in the registry under the name "FADT" and not 12650"FACP" as earlier versions did. This applies when using the -g or - 12651d<nofilename> options. The compiler now looks for both strings as 12652necessary. 12653 12654Fixed a problem with compiler namepath optimization where a namepath 12655within 12656the Scope() operator could not be optimized if the namepath was a subpath 12657of 12658the current scope path. 12659 12660---------------------------------------- 1266127 May 2004. Summary of changes for version 20040527: 12662 126631) ACPI CA Core Subsystem: 12664 12665Completed a new design and implementation for EBDA (Extended BIOS Data 12666Area) 12667support in the RSDP scan code. The original code improperly scanned for 12668the 12669EBDA by simply scanning from memory location 0 to 0x400. The correct 12670method 12671is to first obtain the EBDA pointer from within the BIOS data area, then 12672scan 1K of memory starting at the EBDA pointer. There appear to be few 12673if 12674any machines that place the RSDP in the EBDA, however. 12675 12676Integrated a fix for a possible fault during evaluation of BufferField 12677arguments. Obsolete code that was causing the problem was removed. 12678 12679Found and fixed a problem in the Field Support Code where data could be 12680corrupted on a bit field read that starts on an aligned boundary but does 12681not end on an aligned boundary. Merged the read/write "datum length" 12682calculation code into a common procedure. 12683 12684Rolled in a couple of changes to the FreeBSD-specific header. 12685 12686 12687Code and Data Size: Current and previous core subsystem library sizes are 12688shown below. These are the code and data sizes for the acpica.lib 12689produced 12690by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12691any ACPI driver or OSPM code. The debug version of the code includes the 12692debug output trace mechanism and has a much larger code and data size. 12693Note 12694that these values will vary depending on the efficiency of the compiler 12695and 12696the compiler options used during generation. 12697 12698 Previous Release: 12699 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12700 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 12701 Current Release: 12702 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total 12703 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total 12704 12705 127062) iASL Compiler/Disassembler: 12707 12708Fixed a generation warning produced by some overly-verbose compilers for 12709a 1271064-bit constant. 12711 12712---------------------------------------- 1271314 May 2004. Summary of changes for version 20040514: 12714 127151) ACPI CA Core Subsystem: 12716 12717Fixed a problem where hardware GPE enable bits sometimes not set properly 12718during and after GPE method execution. Result of 04/27 changes. 12719 12720Removed extra "clear all GPEs" when sleeping/waking. 12721 12722Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single 12723AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above 12724to 12725the new AcpiEv* calls as appropriate. 12726 12727ACPI_OS_NAME was removed from the OS-specific headers. The default name 12728is 12729now "Microsoft Windows NT" for maximum compatibility. However this can 12730be 12731changed by modifying the acconfig.h file. 12732 12733Allow a single invocation of AcpiInstallNotifyHandler for a handler that 12734traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag. 12735 12736Run _INI methods on ThermalZone objects. This is against the ACPI 12737specification, but there is apparently ASL code in the field that has 12738these 12739_INI methods, and apparently "other" AML interpreters execute them. 12740 12741Performed a full 16/32/64 bit lint that resulted in some small changes. 12742 12743Added a sleep simulation command to the AML debugger to test sleep code. 12744 12745Code and Data Size: Current and previous core subsystem library sizes are 12746shown below. These are the code and data sizes for the acpica.lib 12747produced 12748by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12749any ACPI driver or OSPM code. The debug version of the code includes the 12750debug output trace mechanism and has a much larger code and data size. 12751Note 12752that these values will vary depending on the efficiency of the compiler 12753and 12754the compiler options used during generation. 12755 12756 Previous Release: 12757 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12758 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 12759 Current Release: 12760 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12761 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total 12762 12763---------------------------------------- 1276427 April 2004. Summary of changes for version 20040427: 12765 127661) ACPI CA Core Subsystem: 12767 12768Completed a major overhaul of the GPE handling within ACPI CA. There are 12769now three types of GPEs: wake-only, runtime-only, and combination 12770wake/run. 12771The only GPEs allowed to be combination wake/run are for button-style 12772devices such as a control-method power button, control-method sleep 12773button, 12774or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are 12775not 12776referenced by any _PRW methods are marked for "runtime" and hardware 12777enabled. Any GPE that is referenced by a _PRW method is marked for 12778"wake" 12779(and disabled at runtime). However, at sleep time, only those GPEs that 12780have been specifically enabled for wake via the AcpiEnableGpe interface 12781will 12782actually be hardware enabled. 12783 12784A new external interface has been added, AcpiSetGpeType(), that is meant 12785to 12786be used by device drivers to force a GPE to a particular type. It will 12787be 12788especially useful for the drivers for the button devices mentioned above. 12789 12790Completed restructuring of the ACPI CA initialization sequence so that 12791default operation region handlers are installed before GPEs are 12792initialized 12793and the _PRW methods are executed. This will prevent errors when the 12794_PRW 12795methods attempt to access system memory or I/O space. 12796 12797GPE enable/disable no longer reads the GPE enable register. We now keep 12798the 12799enable info for runtime and wake separate and in the GPE_EVENT_INFO. We 12800thus no longer depend on the hardware to maintain these bits. 12801 12802Always clear the wake status and fixed/GPE status bits before sleep, even 12803for state S5. 12804 12805Improved the AML debugger output for displaying the GPE blocks and their 12806current status. 12807 12808Added new strings for the _OSI method, of the form "Windows 2001 SPx" 12809where 12810x = 0,1,2,3,4. 12811 12812Fixed a problem where the physical address was incorrectly calculated 12813when 12814the Load() operator was used to directly load from an Operation Region 12815(vs. 12816loading from a Field object.) Also added check for minimum table length 12817for 12818this case. 12819 12820Fix for multiple mutex acquisition. Restore original thread SyncLevel on 12821mutex release. 12822 12823Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for 12824consistency with the other fields returned. 12825 12826Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such 12827structure for each GPE in the system, so the size of this structure is 12828important. 12829 12830CPU stack requirement reduction: Cleaned up the method execution and 12831object 12832evaluation paths so that now a parameter structure is passed, instead of 12833copying the various method parameters over and over again. 12834 12835In evregion.c: Correctly exit and reenter the interpreter region if and 12836only if dispatching an operation region request to a user-installed 12837handler. 12838Do not exit/reenter when dispatching to a default handler (e.g., default 12839system memory or I/O handlers) 12840 12841 12842Notes for updating drivers for the new GPE support. The following 12843changes 12844must be made to ACPI-related device drivers that are attached to one or 12845more 12846GPEs: (This information will be added to the ACPI CA Programmer 12847Reference.) 12848 128491) AcpiInstallGpeHandler no longer automatically enables the GPE, you 12850must 12851explicitly call AcpiEnableGpe. 128522) There is a new interface called AcpiSetGpeType. This should be called 12853before enabling the GPE. Also, this interface will automatically disable 12854the GPE if it is currently enabled. 128553) AcpiEnableGpe no longer supports a GPE type flag. 12856 12857Specific drivers that must be changed: 128581) EC driver: 12859 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED, 12860AeGpeHandler, NULL); 12861 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME); 12862 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR); 12863 128642) Button Drivers (Power, Lid, Sleep): 12865Run _PRW method under parent device 12866If _PRW exists: /* This is a control-method button */ 12867 Extract GPE number and possibly GpeDevice 12868 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN); 12869 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR); 12870 12871For all other devices that have _PRWs, we automatically set the GPE type 12872to 12873ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled. 12874This 12875must be done on a selective basis, usually requiring some kind of user 12876app 12877to allow the user to pick the wake devices. 12878 12879 12880Code and Data Size: Current and previous core subsystem library sizes are 12881shown below. These are the code and data sizes for the acpica.lib 12882produced 12883by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12884any ACPI driver or OSPM code. The debug version of the code includes the 12885debug output trace mechanism and has a much larger code and data size. 12886Note 12887that these values will vary depending on the efficiency of the compiler 12888and 12889the compiler options used during generation. 12890 12891 Previous Release: 12892 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 12893 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 12894 Current Release: 12895 12896 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total 12897 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total 12898 12899 12900 12901---------------------------------------- 1290202 April 2004. Summary of changes for version 20040402: 12903 129041) ACPI CA Core Subsystem: 12905 12906Fixed an interpreter problem where an indirect store through an ArgX 12907parameter was incorrectly applying the "implicit conversion rules" during 12908the store. From the ACPI specification: "If the target is a method local 12909or 12910argument (LocalX or ArgX), no conversion is performed and the result is 12911stored directly to the target". The new behavior is to disable implicit 12912conversion during ALL stores to an ArgX. 12913 12914Changed the behavior of the _PRW method scan to ignore any and all errors 12915returned by a given _PRW. This prevents the scan from aborting from the 12916failure of any single _PRW. 12917 12918Moved the runtime configuration parameters from the global init procedure 12919to 12920static variables in acglobal.h. This will allow the host to override the 12921default values easily. 12922 12923Code and Data Size: Current and previous core subsystem library sizes are 12924shown below. These are the code and data sizes for the acpica.lib 12925produced 12926by the Microsoft Visual C++ 6.0 compiler, and these values do not include 12927any ACPI driver or OSPM code. The debug version of the code includes the 12928debug output trace mechanism and has a much larger code and data size. 12929Note 12930that these values will vary depending on the efficiency of the compiler 12931and 12932the compiler options used during generation. 12933 12934 Previous Release: 12935 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 12936 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 12937 Current Release: 12938 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total 12939 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total 12940 12941 129422) iASL Compiler/Disassembler: 12943 12944iASL now fully disassembles SSDTs. However, External() statements are 12945not 12946generated automatically for unresolved symbols at this time. This is a 12947planned feature for future implementation. 12948 12949Fixed a scoping problem in the disassembler that occurs when the type of 12950the 12951target of a Scope() operator is overridden. This problem caused an 12952incorrectly nested internal namespace to be constructed. 12953 12954Any warnings or errors that are emitted during disassembly are now 12955commented 12956out automatically so that the resulting file can be recompiled without 12957any 12958hand editing. 12959 12960---------------------------------------- 1296126 March 2004. Summary of changes for version 20040326: 12962 129631) ACPI CA Core Subsystem: 12964 12965Implemented support for "wake" GPEs via interaction between GPEs and the 12966_PRW methods. Every GPE that is pointed to by one or more _PRWs is 12967identified as a WAKE GPE and by default will no longer be enabled at 12968runtime. Previously, we were blindly enabling all GPEs with a 12969corresponding 12970_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway. 12971We 12972believe this has been the cause of thousands of "spurious" GPEs on some 12973systems. 12974 12975This new GPE behavior is can be reverted to the original behavior (enable 12976ALL GPEs at runtime) via a runtime flag. 12977 12978Fixed a problem where aliased control methods could not access objects 12979properly. The proper scope within the namespace was not initialized 12980(transferred to the target of the aliased method) before executing the 12981target method. 12982 12983Fixed a potential race condition on internal object deletion on the 12984return 12985object in AcpiEvaluateObject. 12986 12987Integrated a fix for resource descriptors where both _MEM and _MTP were 12988being extracted instead of just _MEM. (i.e. bitmask was incorrectly too 12989wide, 0x0F instead of 0x03.) 12990 12991Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName, 12992preventing 12993a 12994fault in some cases. 12995 12996Updated Notify() values for debug statements in evmisc.c 12997 12998Return proper status from AcpiUtMutexInitialize, not just simply AE_OK. 12999 13000Code and Data Size: Current and previous core subsystem library sizes are 13001shown below. These are the code and data sizes for the acpica.lib 13002produced 13003by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13004any ACPI driver or OSPM code. The debug version of the code includes the 13005debug output trace mechanism and has a much larger code and data size. 13006Note 13007that these values will vary depending on the efficiency of the compiler 13008and 13009the compiler options used during generation. 13010 13011 Previous Release: 13012 13013 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 13014 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 13015 Current Release: 13016 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total 13017 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total 13018 13019---------------------------------------- 1302011 March 2004. Summary of changes for version 20040311: 13021 130221) ACPI CA Core Subsystem: 13023 13024Fixed a problem where errors occurring during the parse phase of control 13025method execution did not abort cleanly. For example, objects created and 13026installed in the namespace were not deleted. This caused all subsequent 13027invocations of the method to return the AE_ALREADY_EXISTS exception. 13028 13029Implemented a mechanism to force a control method to "Serialized" 13030execution 13031if the method attempts to create namespace objects. (The root of the 13032AE_ALREADY_EXISTS problem.) 13033 13034Implemented support for the predefined _OSI "internal" control method. 13035Initial supported strings are "Linux", "Windows 2000", "Windows 2001", 13036and 13037"Windows 2001.1", and can be easily upgraded for new strings as 13038necessary. 13039This feature will allow "other" operating systems to execute the fully 13040tested, "Windows" code path through the ASL code 13041 13042Global Lock Support: Now allows multiple acquires and releases with any 13043internal thread. Removed concept of "owning thread" for this special 13044mutex. 13045 13046Fixed two functions that were inappropriately declaring large objects on 13047the 13048CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage 13049during 13050method execution considerably. 13051 13052Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the 13053S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT. 13054 13055Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs 13056defined on the machine. 13057 13058Implemented two runtime options: One to force all control method 13059execution 13060to "Serialized" to mimic Windows behavior, another to disable _OSI 13061support 13062if it causes problems on a given machine. 13063 13064Code and Data Size: Current and previous core subsystem library sizes are 13065shown below. These are the code and data sizes for the acpica.lib 13066produced 13067by the Microsoft Visual C++ 6.0 compiler, and these values do not include 13068any ACPI driver or OSPM code. The debug version of the code includes the 13069debug output trace mechanism and has a much larger code and data size. 13070Note 13071that these values will vary depending on the efficiency of the compiler 13072and 13073the compiler options used during generation. 13074 13075 Previous Release: 13076 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 13077 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 13078 Current Release: 13079 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total 13080 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total 13081 130822) iASL Compiler/Disassembler: 13083 13084Fixed an array size problem for FreeBSD that would cause the compiler to 13085fault. 13086 13087---------------------------------------- 1308820 February 2004. Summary of changes for version 20040220: 13089 13090 130911) ACPI CA Core Subsystem: 13092 13093Implemented execution of _SxD methods for Device objects in the 13094GetObjectInfo interface. 13095 13096Fixed calls to _SST method to pass the correct arguments. 13097 13098Added a call to _SST on wake to restore to "working" state. 13099 13100Check for End-Of-Buffer failure case in the WalkResources interface. 13101 13102Integrated fix for 64-bit alignment issue in acglobal.h by moving two 13103structures to the beginning of the file. 13104 13105After wake, clear GPE status register(s) before enabling GPEs. 13106 13107After wake, clear/enable power button. (Perhaps we should clear/enable 13108all 13109fixed events upon wake.) 13110 13111Fixed a couple of possible memory leaks in the Namespace manager. 13112 13113Integrated latest acnetbsd.h file. 13114 13115---------------------------------------- 1311611 February 2004. Summary of changes for version 20040211: 13117 13118 131191) ACPI CA Core Subsystem: 13120 13121Completed investigation and implementation of the call-by-reference 13122mechanism for control method arguments. 13123 13124Fixed a problem where a store of an object into an indexed package could 13125fail if the store occurs within a different method than the method that 13126created the package. 13127 13128Fixed a problem where the ToDecimal operator could return incorrect 13129results. 13130 13131Fixed a problem where the CopyObject operator could fail on some of the 13132more 13133obscure objects (e.g., Reference objects.) 13134 13135Improved the output of the Debug object to display buffer, package, and 13136index objects. 13137 13138Fixed a problem where constructs of the form "RefOf (ArgX)" did not 13139return 13140the expected result. 13141 13142Added permanent ACPI_REPORT_ERROR macros for all instances of the 13143ACPI_AML_INTERNAL exception. 13144 13145Integrated latest version of acfreebsd.h 13146 13147---------------------------------------- 1314816 January 2004. Summary of changes for version 20040116: 13149 13150The purpose of this release is primarily to update the copyright years in 13151each module, thus causing a huge number of diffs. There are a few small 13152functional changes, however. 13153 131541) ACPI CA Core Subsystem: 13155 13156Improved error messages when there is a problem finding one or more of 13157the 13158required base ACPI tables 13159 13160Reintroduced the definition of APIC_HEADER in actbl.h 13161 13162Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h) 13163 13164Removed extraneous reference to NewObj in dsmthdat.c 13165 131662) iASL compiler 13167 13168Fixed a problem introduced in December that disabled the correct 13169disassembly 13170of Resource Templates 13171 13172 13173---------------------------------------- 1317403 December 2003. Summary of changes for version 20031203: 13175 131761) ACPI CA Core Subsystem: 13177 13178Changed the initialization of Operation Regions during subsystem 13179init to perform two entire walks of the ACPI namespace; The first 13180to initialize the regions themselves, the second to execute the 13181_REG methods. This fixed some interdependencies across _REG 13182methods found on some machines. 13183 13184Fixed a problem where a Store(Local0, Local1) could simply update 13185the object reference count, and not create a new copy of the 13186object if the Local1 is uninitialized. 13187 13188Implemented support for the _SST reserved method during sleep 13189transitions. 13190 13191Implemented support to clear the SLP_TYP and SLP_EN bits when 13192waking up, this is apparently required by some machines. 13193 13194When sleeping, clear the wake status only if SleepState is not S5. 13195 13196Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect 13197pointer arithmetic advanced a string pointer too far. 13198 13199Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer 13200could be returned if the requested table has not been loaded. 13201 13202Within the support for IRQ resources, restructured the handling of 13203the active and edge/level bits. 13204 13205Fixed a few problems in AcpiPsxExecute() where memory could be 13206leaked under certain error conditions. 13207 13208Improved error messages for the cases where the ACPI mode could 13209not be entered. 13210 13211Code and Data Size: Current and previous core subsystem library 13212sizes are shown below. These are the code and data sizes for the 13213acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13214these values do not include any ACPI driver or OSPM code. The 13215debug version of the code includes the debug output trace 13216mechanism and has a much larger code and data size. Note that 13217these values will vary depending on the efficiency of the compiler 13218and the compiler options used during generation. 13219 13220 Previous Release (20031029): 13221 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 13222 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 13223 Current Release: 13224 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total 13225 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total 13226 132272) iASL Compiler/Disassembler: 13228 13229Implemented a fix for the iASL disassembler where a bad index was 13230generated. This was most noticeable on 64-bit platforms 13231 13232 13233---------------------------------------- 1323429 October 2003. Summary of changes for version 20031029: 13235 132361) ACPI CA Core Subsystem: 13237 13238 13239Fixed a problem where a level-triggered GPE with an associated 13240_Lxx control method was incorrectly cleared twice. 13241 13242Fixed a problem with the Field support code where an access can 13243occur beyond the end-of-region if the field is non-aligned but 13244extends to the very end of the parent region (resulted in an 13245AE_AML_REGION_LIMIT exception.) 13246 13247Fixed a problem with ACPI Fixed Events where an RT Clock handler 13248would not get invoked on an RTC event. The RTC event bitmasks for 13249the PM1 registers were not being initialized properly. 13250 13251Implemented support for executing _STA and _INI methods for 13252Processor objects. Although this is currently not part of the 13253ACPI specification, there is existing ASL code that depends on the 13254init-time execution of these methods. 13255 13256Implemented and deployed a GetDescriptorName function to decode 13257the various types of internal descriptors. Guards against null 13258descriptors during debug output also. 13259 13260Implemented and deployed a GetNodeName function to extract the 4- 13261character namespace node name. This function simplifies the debug 13262and error output, as well as guarding against null pointers during 13263output. 13264 13265Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to 13266simplify the debug and error output of 64-bit integers. This 13267macro replaces the HIDWORD and LODWORD macros for dumping these 13268integers. 13269 13270Updated the implementation of the Stall() operator to only call 13271AcpiOsStall(), and also return an error if the operand is larger 13272than 255. This preserves the required behavior of not 13273relinquishing the processor, as would happen if AcpiOsSleep() was 13274called for "long stalls". 13275 13276Constructs of the form "Store(LocalX,LocalX)" where LocalX is not 13277initialized are now treated as NOOPs. 13278 13279Cleaned up a handful of warnings during 64-bit generation. 13280 13281Fixed a reported error where and incorrect GPE number was passed 13282to the GPE dispatch handler. This value is only used for error 13283output, however. Used this opportunity to clean up and streamline 13284the GPE dispatch code. 13285 13286Code and Data Size: Current and previous core subsystem library 13287sizes are shown below. These are the code and data sizes for the 13288acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13289these values do not include any ACPI driver or OSPM code. The 13290 13291debug version of the code includes the debug output trace 13292mechanism and has a much larger code and data size. Note that 13293these values will vary depending on the efficiency of the compiler 13294and the compiler options used during generation. 13295 13296 Previous Release (20031002): 13297 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 13298 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 13299 Current Release: 13300 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total 13301 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total 13302 13303 133042) iASL Compiler/Disassembler: 13305 13306Updated the iASL compiler to return an error if the operand to the 13307Stall() operator is larger than 255. 13308 13309 13310---------------------------------------- 1331102 October 2003. Summary of changes for version 20031002: 13312 13313 133141) ACPI CA Core Subsystem: 13315 13316Fixed a problem with Index Fields where the index was not 13317incremented for fields that require multiple writes to the 13318index/data registers (Fields that are wider than the data 13319register.) 13320 13321Fixed a problem with all Field objects where a write could go 13322beyond the end-of-field if the field was larger than the access 13323granularity and therefore required multiple writes to complete the 13324request. An extra write beyond the end of the field could happen 13325inadvertently. 13326 13327Fixed a problem with Index Fields where a BUFFER_OVERFLOW error 13328would incorrectly be returned if the width of the Data Register 13329was larger than the specified field access width. 13330 13331Completed fixes for LoadTable() and Unload() and verified their 13332operation. Implemented full support for the "DdbHandle" object 13333throughout the ACPI CA subsystem. 13334 13335Implemented full support for the MADT and ECDT tables in the ACPI 13336CA header files. Even though these tables are not directly 13337consumed by ACPI CA, the header definitions are useful for ACPI 13338device drivers. 13339 13340Integrated resource descriptor fixes posted to the Linux ACPI 13341list. This included checks for minimum descriptor length, and 13342support for trailing NULL strings within descriptors that have 13343optional string elements. 13344 13345Code and Data Size: Current and previous core subsystem library 13346sizes are shown below. These are the code and data sizes for the 13347acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13348these values do not include any ACPI driver or OSPM code. The 13349debug version of the code includes the debug output trace 13350mechanism and has a much larger code and data size. Note that 13351these values will vary depending on the efficiency of the compiler 13352and the compiler options used during generation. 13353 13354 Previous Release (20030918): 13355 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 13356 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 13357 Current Release: 13358 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total 13359 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total 13360 13361 133622) iASL Compiler: 13363 13364Implemented detection of non-ASCII characters within the input 13365source ASL file. This catches attempts to compile binary (AML) 13366files early in the compile, with an informative error message. 13367 13368Fixed a problem where the disassembler would fault if the output 13369filename could not be generated or if the output file could not be 13370opened. 13371 13372---------------------------------------- 1337318 September 2003. Summary of changes for version 20030918: 13374 13375 133761) ACPI CA Core Subsystem: 13377 13378Found and fixed a longstanding problem with the late execution of 13379the various deferred AML opcodes (such as Operation Regions, 13380Buffer Fields, Buffers, and Packages). If the name string 13381specified for the name of the new object placed the object in a 13382scope other than the current scope, the initialization/execution 13383of the opcode failed. The solution to this problem was to 13384implement a mechanism where the late execution of such opcodes 13385does not attempt to lookup/create the name a second time in an 13386incorrect scope. This fixes the "region size computed 13387incorrectly" problem. 13388 13389Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a 13390Global Lock AE_BAD_PARAMETER error. 13391 13392Fixed several 64-bit issues with prototypes, casting and data 13393types. 13394 13395Removed duplicate prototype from acdisasm.h 13396 13397Fixed an issue involving EC Operation Region Detach (Shaohua Li) 13398 13399Code and Data Size: Current and previous core subsystem library 13400sizes are shown below. These are the code and data sizes for the 13401acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13402these values do not include any ACPI driver or OSPM code. The 13403debug version of the code includes the debug output trace 13404mechanism and has a much larger code and data size. Note that 13405these values will vary depending on the efficiency of the compiler 13406and the compiler options used during generation. 13407 13408 Previous Release: 13409 13410 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 13411 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 13412 Current Release: 13413 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total 13414 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total 13415 13416 134172) Linux: 13418 13419Fixed the AcpiOsSleep implementation in osunixxf.c to pass the 13420correct sleep time in seconds. 13421 13422---------------------------------------- 1342314 July 2003. Summary of changes for version 20030619: 13424 134251) ACPI CA Core Subsystem: 13426 13427Parse SSDTs in order discovered, as opposed to reverse order 13428(Hrvoje Habjanic) 13429 13430Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas 13431Klausner, 13432 Nate Lawson) 13433 13434 134352) Linux: 13436 13437Dynamically allocate SDT list (suggested by Andi Kleen) 13438 13439proc function return value cleanups (Andi Kleen) 13440 13441Correctly handle NMI watchdog during long stalls (Andrew Morton) 13442 13443Make it so acpismp=force works (reported by Andrew Morton) 13444 13445 13446---------------------------------------- 1344719 June 2003. Summary of changes for version 20030619: 13448 134491) ACPI CA Core Subsystem: 13450 13451Fix To/FromBCD, eliminating the need for an arch-specific #define. 13452 13453Do not acquire a semaphore in the S5 shutdown path. 13454 13455Fix ex_digits_needed for 0. (Takayoshi Kochi) 13456 13457Fix sleep/stall code reversal. (Andi Kleen) 13458 13459Revert a change having to do with control method calling 13460semantics. 13461 134622) Linux: 13463 13464acpiphp update (Takayoshi Kochi) 13465 13466Export acpi_disabled for sonypi (Stelian Pop) 13467 13468Mention acpismp=force in config help 13469 13470Re-add acpitable.c and acpismp=force. This improves backwards 13471 13472compatibility and also cleans up the code to a significant degree. 13473 13474Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge) 13475 13476---------------------------------------- 1347722 May 2003. Summary of changes for version 20030522: 13478 134791) ACPI CA Core Subsystem: 13480 13481Found and fixed a reported problem where an AE_NOT_FOUND error 13482occurred occasionally during _BST evaluation. This turned out to 13483be an Owner ID allocation issue where a called method did not get 13484a new ID assigned to it. Eventually, (after 64k calls), the Owner 13485ID UINT16 would wraparound so that the ID would be the same as the 13486caller's and the called method would delete the caller's 13487namespace. 13488 13489Implemented extended error reporting for control methods that are 13490aborted due to a run-time exception. Output includes the exact 13491AML instruction that caused the method abort, a dump of the method 13492locals and arguments at the time of the abort, and a trace of all 13493nested control method calls. 13494 13495Modified the interpreter to allow the creation of buffers of zero 13496length from the AML code. Implemented new code to ensure that no 13497attempt is made to actually allocate a memory buffer (of length 13498zero) - instead, a simple buffer object with a NULL buffer pointer 13499and length zero is created. A warning is no longer issued when 13500the AML attempts to create a zero-length buffer. 13501 13502Implemented a workaround for the "leading asterisk issue" in 13503_HIDs, _UIDs, and _CIDs in the AML interpreter. One leading 13504asterisk is automatically removed if present in any HID, UID, or 13505CID strings. The iASL compiler will still flag this asterisk as 13506an error, however. 13507 13508Implemented full support for _CID methods that return a package of 13509multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface 13510now additionally returns a device _CID list if present. This 13511required a change to the external interface in order to pass an 13512ACPI_BUFFER object as a parameter since the _CID list is of 13513variable length. 13514 13515Fixed a problem with the new AE_SAME_HANDLER exception where 13516handler initialization code did not know about this exception. 13517 13518Code and Data Size: Current and previous core subsystem library 13519sizes are shown below. These are the code and data sizes for the 13520acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and 13521these values do not include any ACPI driver or OSPM code. The 13522debug version of the code includes the debug output trace 13523mechanism and has a much larger code and data size. Note that 13524these values will vary depending on the efficiency of the compiler 13525and the compiler options used during generation. 13526 13527 Previous Release (20030509): 13528 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 13529 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 13530 Current Release: 13531 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total 13532 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total 13533 13534 135352) Linux: 13536 13537Fixed a bug in which we would reinitialize the ACPI interrupt 13538after it was already working, thus disabling all ACPI and the IRQs 13539for any other device sharing the interrupt. (Thanks to Stian 13540Jordet) 13541 13542Toshiba driver update (John Belmonte) 13543 13544Return only 0 or 1 for our interrupt handler status (Andrew 13545Morton) 13546 13547 135483) iASL Compiler: 13549 13550Fixed a reported problem where multiple (nested) ElseIf() 13551statements were not handled correctly by the compiler, resulting 13552in incorrect warnings and incorrect AML code. This was a problem 13553in both the ASL parser and the code generator. 13554 13555 135564) Documentation: 13557 13558Added changes to existing interfaces, new exception codes, and new 13559text concerning reference count object management versus garbage 13560collection. 13561 13562---------------------------------------- 1356309 May 2003. Summary of changes for version 20030509. 13564 13565 135661) ACPI CA Core Subsystem: 13567 13568Changed the subsystem initialization sequence to hold off 13569installation of address space handlers until the hardware has been 13570initialized and the system has entered ACPI mode. This is because 13571the installation of space handlers can cause _REG methods to be 13572run. Previously, the _REG methods could potentially be run before 13573ACPI mode was enabled. 13574 13575Fixed some memory leak issues related to address space handler and 13576notify handler installation. There were some problems with the 13577reference count mechanism caused by the fact that the handler 13578objects are shared across several namespace objects. 13579 13580Fixed a reported problem where reference counts within the 13581namespace were not properly updated when named objects created by 13582method execution were deleted. 13583 13584Fixed a reported problem where multiple SSDTs caused a deletion 13585issue during subsystem termination. Restructured the table data 13586structures to simplify the linked lists and the related code. 13587 13588Fixed a problem where the table ID associated with secondary 13589tables (SSDTs) was not being propagated into the namespace objects 13590created by those tables. This would only present a problem for 13591tables that are unloaded at run-time, however. 13592 13593Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE 13594type as the length parameter (instead of UINT32). 13595 13596Solved a long-standing problem where an ALREADY_EXISTS error 13597appears on various systems. This problem could happen when there 13598are multiple PCI_Config operation regions under a single PCI root 13599bus. This doesn't happen very frequently, but there are some 13600systems that do this in the ASL. 13601 13602Fixed a reported problem where the internal DeleteNode function 13603was incorrectly handling the case where a namespace node was the 13604first in the parent's child list, and had additional peers (not 13605the only child, but first in the list of children.) 13606 13607Code and Data Size: Current core subsystem library sizes are shown 13608below. These are the code and data sizes for the acpica.lib 13609produced by the Microsoft Visual C++ 6.0 compiler, and these 13610values do not include any ACPI driver or OSPM code. The debug 13611version of the code includes the debug output trace mechanism and 13612has a much larger code and data size. Note that these values will 13613vary depending on the efficiency of the compiler and the compiler 13614options used during generation. 13615 13616 Previous Release 13617 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 13618 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 13619 Current Release: 13620 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total 13621 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total 13622 13623 136242) Linux: 13625 13626Allow ":" in OS override string (Ducrot Bruno) 13627 13628Kobject fix (Greg KH) 13629 13630 136313 iASL Compiler/Disassembler: 13632 13633Fixed a problem in the generation of the C source code files (AML 13634is emitted in C source statements for BIOS inclusion) where the 13635Ascii dump that appears within a C comment at the end of each line 13636could cause a compile time error if the AML sequence happens to 13637have an open comment or close comment sequence embedded. 13638 13639 13640---------------------------------------- 1364124 April 2003. Summary of changes for version 20030424. 13642 13643 136441) ACPI CA Core Subsystem: 13645 13646Support for big-endian systems has been implemented. Most of the 13647support has been invisibly added behind big-endian versions of the 13648ACPI_MOVE_* macros. 13649 13650Fixed a problem in AcpiHwDisableGpeBlock() and 13651AcpiHwClearGpeBlock() where an incorrect offset was passed to the 13652low level hardware write routine. The offset parameter was 13653actually eliminated from the low level read/write routines because 13654they had become obsolete. 13655 13656Fixed a problem where a handler object was deleted twice during 13657the removal of a fixed event handler. 13658 13659 136602) Linux: 13661 13662A fix for SMP systems with link devices was contributed by 13663 13664Compaq's Dan Zink. 13665 13666(2.5) Return whether we handled the interrupt in our IRQ handler. 13667(Linux ISRs no longer return void, so we can propagate the handler 13668return value from the ACPI CA core back to the OS.) 13669 13670 13671 136723) Documentation: 13673 13674The ACPI CA Programmer Reference has been updated to reflect new 13675interfaces and changes to existing interfaces. 13676 13677---------------------------------------- 1367828 March 2003. Summary of changes for version 20030328. 13679 136801) ACPI CA Core Subsystem: 13681 13682The GPE Block Device support has been completed. New interfaces 13683are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event 13684interfaces (enable, disable, clear, getstatus) have been split 13685into separate interfaces for Fixed Events and General Purpose 13686Events (GPEs) in order to support GPE Block Devices properly. 13687 13688Fixed a problem where the error message "Failed to acquire 13689semaphore" would appear during operations on the embedded 13690controller (EC). 13691 13692Code and Data Size: Current core subsystem library sizes are shown 13693below. These are the code and data sizes for the acpica.lib 13694produced by the Microsoft Visual C++ 6.0 compiler, and these 13695values do not include any ACPI driver or OSPM code. The debug 13696version of the code includes the debug output trace mechanism and 13697has a much larger code and data size. Note that these values will 13698vary depending on the efficiency of the compiler and the compiler 13699options used during generation. 13700 13701 Previous Release 13702 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 13703 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 13704 Current Release: 13705 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total 13706 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total 13707 13708 13709---------------------------------------- 1371028 February 2003. Summary of changes for version 20030228. 13711 13712 137131) ACPI CA Core Subsystem: 13714 13715The GPE handling and dispatch code has been completely overhauled 13716in preparation for support of GPE Block Devices (ID ACPI0006). 13717This affects internal data structures and code only; there should 13718be no differences visible externally. One new file has been 13719added, evgpeblk.c 13720 13721The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only 13722fields that are used to determine the GPE block lengths. The 13723REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address 13724structures are ignored. This is per the ACPI specification but it 13725isn't very clear. The full 256 Block 0/1 GPEs are now supported 13726(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128). 13727 13728In the SCI interrupt handler, removed the read of the PM1_CONTROL 13729register to look at the SCI_EN bit. On some machines, this read 13730causes an SMI event and greatly slows down SCI events. (This may 13731in fact be the cause of slow battery status response on some 13732systems.) 13733 13734Fixed a problem where a store of a NULL string to a package object 13735could cause the premature deletion of the object. This was seen 13736during execution of the battery _BIF method on some systems, 13737resulting in no battery data being returned. 13738 13739Added AcpiWalkResources interface to simplify parsing of resource 13740lists. 13741 13742Code and Data Size: Current core subsystem library sizes are shown 13743below. These are the code and data sizes for the acpica.lib 13744produced by the Microsoft Visual C++ 6.0 compiler, and these 13745values do not include any ACPI driver or OSPM code. The debug 13746version of the code includes the debug output trace mechanism and 13747has a much larger code and data size. Note that these values will 13748vary depending on the efficiency of the compiler and the compiler 13749options used during generation. 13750 13751 Previous Release 13752 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13753 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13754 Current Release: 13755 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total 13756 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total 13757 13758 137592) Linux 13760 13761S3 fixes (Ole Rohne) 13762 13763Update ACPI PHP driver with to use new acpi_walk_resource API 13764(Bjorn Helgaas) 13765 13766Add S4BIOS support (Pavel Machek) 13767 13768Map in entire table before performing checksum (John Stultz) 13769 13770Expand the mem= cmdline to allow the specification of reserved and 13771ACPI DATA blocks (Pavel Machek) 13772 13773Never use ACPI on VISWS 13774 13775Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez) 13776 13777Revert a change that allowed P_BLK lengths to be 4 or 5. This is 13778causing us to think that some systems support C2 when they really 13779don't. 13780 13781Do not count processor objects for non-present CPUs (Thanks to 13782Dominik Brodowski) 13783 13784 137853) iASL Compiler: 13786 13787Fixed a problem where ASL include files could not be found and 13788opened. 13789 13790Added support for the _PDC reserved name. 13791 13792 13793---------------------------------------- 1379422 January 2003. Summary of changes for version 20030122. 13795 13796 137971) ACPI CA Core Subsystem: 13798 13799Added a check for constructs of the form: Store (Local0, Local0) 13800where Local0 is not initialized. Apparently, some BIOS 13801programmers believe that this is a NOOP. Since this store doesn't 13802do anything anyway, the new prototype behavior will ignore this 13803error. This is a case where we can relax the strict checking in 13804the interpreter in the name of compatibility. 13805 13806 138072) Linux 13808 13809The AcpiSrc Source Conversion Utility has been released with the 13810Linux package for the first time. This is the utility that is 13811used to convert the ACPI CA base source code to the Linux version. 13812 13813(Both) Handle P_BLK lengths shorter than 6 more gracefully 13814 13815(Both) Move more headers to include/acpi, and delete an unused 13816header. 13817 13818(Both) Move drivers/acpi/include directory to include/acpi 13819 13820(Both) Boot functions don't use cmdline, so don't pass it around 13821 13822(Both) Remove include of unused header (Adrian Bunk) 13823 13824(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since 13825the 13826former now also includes the latter, acpiphp.h only needs the one, 13827now. 13828 13829(2.5) Make it possible to select method of bios restoring after S3 13830resume. [=> no more ugly ifdefs] (Pavel Machek) 13831 13832(2.5) Make proc write interfaces work (Pavel Machek) 13833 13834(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski) 13835 13836(2.5) Break out ACPI Perf code into its own module, under cpufreq 13837(Dominik Brodowski) 13838 13839(2.4) S4BIOS support (Ducrot Bruno) 13840 13841(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio 13842Visinoni) 13843 13844 138453) iASL Compiler: 13846 13847Added support to disassemble SSDT and PSDTs. 13848 13849Implemented support to obtain SSDTs from the Windows registry if 13850available. 13851 13852 13853---------------------------------------- 1385409 January 2003. Summary of changes for version 20030109. 13855 138561) ACPI CA Core Subsystem: 13857 13858Changed the behavior of the internal Buffer-to-String conversion 13859function. The current ACPI specification states that the contents 13860of the buffer are "converted to a string of two-character 13861hexadecimal numbers, each separated by a space". Unfortunately, 13862this definition is not backwards compatible with existing ACPI 1.0 13863implementations (although the behavior was not defined in the ACPI 138641.0 specification). The new behavior simply copies data from the 13865buffer to the string until a null character is found or the end of 13866the buffer is reached. The new String object is always null 13867terminated. This problem was seen during the generation of _BIF 13868battery data where incorrect strings were returned for battery 13869type, etc. This will also require an errata to the ACPI 13870specification. 13871 13872Renamed all instances of NATIVE_UINT and NATIVE_INT to 13873ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively. 13874 13875Copyright in all module headers (both Linux and non-Linux) has be 13876updated to 2003. 13877 13878Code and Data Size: Current core subsystem library sizes are shown 13879below. These are the code and data sizes for the acpica.lib 13880produced by the Microsoft Visual C++ 6.0 compiler, and these 13881values do not include any ACPI driver or OSPM code. The debug 13882version of the code includes the debug output trace mechanism and 13883has a much larger code and data size. Note that these values will 13884vary depending on the efficiency of the compiler and the compiler 13885options used during generation. 13886 13887 Previous Release 13888 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13889 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13890 Current Release: 13891 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13892 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13893 13894 138952) Linux 13896 13897Fixed an oops on module insertion/removal (Matthew Tippett) 13898 13899(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante) 13900 13901(2.5) Replace pr_debug (Randy Dunlap) 13902 13903(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski) 13904 13905(Both) Eliminate spawning of thread from timer callback, in favor 13906of schedule_work() 13907 13908(Both) Show Lid status in /proc (Zdenek OGAR Skalak) 13909 13910(Both) Added define for Fixed Function HW region (Matthew Wilcox) 13911 13912(Both) Add missing statics to button.c (Pavel Machek) 13913 13914Several changes have been made to the source code translation 13915utility that generates the Linux Code in order to make the code 13916more "Linux-like": 13917 13918All typedefs on structs and unions have been removed in keeping 13919with the Linux coding style. 13920 13921Removed the non-Linux SourceSafe module revision number from each 13922module header. 13923 13924Completed major overhaul of symbols to be lowercased for linux. 13925Doubled the number of symbols that are lowercased. 13926 13927Fixed a problem where identifiers within procedure headers and 13928within quotes were not fully lower cased (they were left with a 13929starting capital.) 13930 13931Some C macros whose only purpose is to allow the generation of 16- 13932bit code are now completely removed in the Linux code, increasing 13933readability and maintainability. 13934 13935---------------------------------------- 13936 1393712 December 2002. Summary of changes for version 20021212. 13938 13939 139401) ACPI CA Core Subsystem: 13941 13942Fixed a problem where the creation of a zero-length AML Buffer 13943would cause a fault. 13944 13945Fixed a problem where a Buffer object that pointed to a static AML 13946buffer (in an ACPI table) could inadvertently be deleted, causing 13947memory corruption. 13948 13949Fixed a problem where a user buffer (passed in to the external 13950ACPI CA interfaces) could be overwritten if the buffer was too 13951small to complete the operation, causing memory corruption. 13952 13953Fixed a problem in the Buffer-to-String conversion code where a 13954string of length one was always returned, regardless of the size 13955of the input Buffer object. 13956 13957Removed the NATIVE_CHAR data type across the entire source due to 13958lack of need and lack of consistent use. 13959 13960Code and Data Size: Current core subsystem library sizes are shown 13961below. These are the code and data sizes for the acpica.lib 13962produced by the Microsoft Visual C++ 6.0 compiler, and these 13963values do not include any ACPI driver or OSPM code. The debug 13964version of the code includes the debug output trace mechanism and 13965has a much larger code and data size. Note that these values will 13966vary depending on the efficiency of the compiler and the compiler 13967options used during generation. 13968 13969 Previous Release 13970 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 13971 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 13972 Current Release: 13973 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total 13974 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total 13975 13976 13977---------------------------------------- 1397805 December 2002. Summary of changes for version 20021205. 13979 139801) ACPI CA Core Subsystem: 13981 13982Fixed a problem where a store to a String or Buffer object could 13983cause corruption of the DSDT if the object type being stored was 13984the same as the target object type and the length of the object 13985being stored was equal to or smaller than the original (existing) 13986target object. This was seen to cause corruption of battery _BIF 13987buffers if the _BIF method modified the buffer on the fly. 13988 13989Fixed a problem where an internal error was generated if a control 13990method invocation was used in an OperationRegion, Buffer, or 13991Package declaration. This was caused by the deferred parsing of 13992the control method and thus the deferred creation of the internal 13993method object. The solution to this problem was to create the 13994internal method object at the moment the method is encountered in 13995the first pass - so that subsequent references to the method will 13996able to obtain the required parameter count and thus properly 13997parse the method invocation. This problem presented itself as an 13998AE_AML_INTERNAL during the pass 1 parse phase during table load. 13999 14000Fixed a problem where the internal String object copy routine did 14001not always allocate sufficient memory for the target String object 14002and caused memory corruption. This problem was seen to cause 14003"Allocation already present in list!" errors as memory allocation 14004became corrupted. 14005 14006Implemented a new function for the evaluation of namespace objects 14007that allows the specification of the allowable return object 14008types. This simplifies a lot of code that checks for a return 14009object of one or more specific objects returned from the 14010evaluation (such as _STA, etc.) This may become and external 14011function if it would be useful to ACPI-related drivers. 14012 14013Completed another round of prefixing #defines with "ACPI_" for 14014clarity. 14015 14016Completed additional code restructuring to allow more modular 14017linking for iASL compiler and AcpiExec. Several files were split 14018creating new files. New files: nsparse.c dsinit.c evgpe.c 14019 14020Implemented an abort mechanism to terminate an executing control 14021method via the AML debugger. This feature is useful for debugging 14022control methods that depend (wait) for specific hardware 14023responses. 14024 14025Code and Data Size: Current core subsystem library sizes are shown 14026below. These are the code and data sizes for the acpica.lib 14027produced by the Microsoft Visual C++ 6.0 compiler, and these 14028values do not include any ACPI driver or OSPM code. The debug 14029version of the code includes the debug output trace mechanism and 14030has a much larger code and data size. Note that these values will 14031vary depending on the efficiency of the compiler and the compiler 14032options used during generation. 14033 14034 Previous Release 14035 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14036 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 14037 Current Release: 14038 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total 14039 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total 14040 14041 140422) iASL Compiler/Disassembler 14043 14044Fixed a compiler code generation problem for "Interrupt" Resource 14045Descriptors. If specified in the ASL, the optional "Resource 14046Source Index" and "Resource Source" fields were not inserted into 14047the correct location within the AML resource descriptor, creating 14048an invalid descriptor. 14049 14050Fixed a disassembler problem for "Interrupt" resource descriptors. 14051The optional "Resource Source Index" and "Resource Source" fields 14052were ignored. 14053 14054 14055---------------------------------------- 1405622 November 2002. Summary of changes for version 20021122. 14057 14058 140591) ACPI CA Core Subsystem: 14060 14061Fixed a reported problem where an object stored to a Method Local 14062or Arg was not copied to a new object during the store - the 14063object pointer was simply copied to the Local/Arg. This caused 14064all subsequent operations on the Local/Arg to also affect the 14065original source of the store operation. 14066 14067Fixed a problem where a store operation to a Method Local or Arg 14068was not completed properly if the Local/Arg contained a reference 14069(from RefOf) to a named field. The general-purpose store-to- 14070namespace-node code is now used so that this case is handled 14071automatically. 14072 14073Fixed a problem where the internal object copy routine would cause 14074a protection fault if the object being copied was a Package and 14075contained either 1) a NULL package element or 2) a nested sub- 14076package. 14077 14078Fixed a problem with the GPE initialization that resulted from an 14079ambiguity in the ACPI specification. One section of the 14080specification states that both the address and length of the GPE 14081block must be zero if the block is not supported. Another section 14082implies that only the address need be zero if the block is not 14083supported. The code has been changed so that both the address and 14084the length must be non-zero to indicate a valid GPE block (i.e., 14085if either the address or the length is zero, the GPE block is 14086invalid.) 14087 14088Code and Data Size: Current core subsystem library sizes are shown 14089below. These are the code and data sizes for the acpica.lib 14090produced by the Microsoft Visual C++ 6.0 compiler, and these 14091values do not include any ACPI driver or OSPM code. The debug 14092version of the code includes the debug output trace mechanism and 14093has a much larger code and data size. Note that these values will 14094vary depending on the efficiency of the compiler and the compiler 14095options used during generation. 14096 14097 Previous Release 14098 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 14099 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 14100 Current Release: 14101 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14102 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total 14103 14104 141052) Linux 14106 14107Cleaned up EC driver. Exported an external EC read/write 14108interface. By going through this, other drivers (most notably 14109sonypi) will be able to serialize access to the EC. 14110 14111 141123) iASL Compiler/Disassembler 14113 14114Implemented support to optionally generate include files for both 14115ASM and C (the -i switch). This simplifies BIOS development by 14116automatically creating include files that contain external 14117declarations for the symbols that are created within the 14118 14119(optionally generated) ASM and C AML source files. 14120 14121 14122---------------------------------------- 1412315 November 2002. Summary of changes for version 20021115. 14124 141251) ACPI CA Core Subsystem: 14126 14127Fixed a memory leak problem where an error during resolution of 14128 14129method arguments during a method invocation from another method 14130failed to cleanup properly by deleting all successfully resolved 14131argument objects. 14132 14133Fixed a problem where the target of the Index() operator was not 14134correctly constructed if the source object was a package. This 14135problem has not been detected because the use of a target operand 14136with Index() is very rare. 14137 14138Fixed a problem with the Index() operator where an attempt was 14139made to delete the operand objects twice. 14140 14141Fixed a problem where an attempt was made to delete an operand 14142twice during execution of the CondRefOf() operator if the target 14143did not exist. 14144 14145Implemented the first of perhaps several internal create object 14146functions that create and initialize a specific object type. This 14147consolidates duplicated code wherever the object is created, thus 14148shrinking the size of the subsystem. 14149 14150Implemented improved debug/error messages for errors that occur 14151during nested method invocations. All executing method pathnames 14152are displayed (with the error) as the call stack is unwound - thus 14153simplifying debug. 14154 14155Fixed a problem introduced in the 10/02 release that caused 14156premature deletion of a buffer object if a buffer was used as an 14157ASL operand where an integer operand is required (Thus causing an 14158implicit object conversion from Buffer to Integer.) The change in 14159the 10/02 release was attempting to fix a memory leak (albeit 14160incorrectly.) 14161 14162Code and Data Size: Current core subsystem library sizes are shown 14163below. These are the code and data sizes for the acpica.lib 14164produced by the Microsoft Visual C++ 6.0 compiler, and these 14165values do not include any ACPI driver or OSPM code. The debug 14166version of the code includes the debug output trace mechanism and 14167has a much larger code and data size. Note that these values will 14168vary depending on the efficiency of the compiler and the compiler 14169options used during generation. 14170 14171 Previous Release 14172 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 14173 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 14174 Current Release: 14175 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total 14176 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total 14177 14178 141792) Linux 14180 14181Changed the implementation of the ACPI semaphores to use down() 14182instead of down_interruptable(). It is important that the 14183execution of ACPI control methods not be interrupted by signals. 14184Methods must run to completion, or the system may be left in an 14185unknown/unstable state. 14186 14187Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set. 14188(Shawn Starr) 14189 14190 141913) iASL Compiler/Disassembler 14192 14193 14194Changed the default location of output files. All output files 14195are now placed in the current directory by default instead of in 14196the directory of the source file. This change may affect some 14197existing makefiles, but it brings the behavior of the compiler in 14198line with other similar tools. The location of the output files 14199can be overridden with the -p command line switch. 14200 14201 14202---------------------------------------- 1420311 November 2002. Summary of changes for version 20021111. 14204 14205 142060) ACPI Specification 2.0B is released and is now available at: 14207http://www.acpi.info/index.html 14208 14209 142101) ACPI CA Core Subsystem: 14211 14212Implemented support for the ACPI 2.0 SMBus Operation Regions. 14213This includes the early detection and handoff of the request to 14214the SMBus region handler (avoiding all of the complex field 14215support code), and support for the bidirectional return packet 14216from an SMBus write operation. This paves the way for the 14217development of SMBus drivers in each host operating system. 14218 14219Fixed a problem where the semaphore WAIT_FOREVER constant was 14220defined as 32 bits, but must be 16 bits according to the ACPI 14221specification. This had the side effect of causing ASL 14222Mutex/Event timeouts even though the ASL code requested a wait 14223forever. Changed all internal references to the ACPI timeout 14224parameter to 16 bits to prevent future problems. Changed the name 14225of WAIT_FOREVER to ACPI_WAIT_FOREVER. 14226 14227Code and Data Size: Current core subsystem library sizes are shown 14228below. These are the code and data sizes for the acpica.lib 14229produced by the Microsoft Visual C++ 6.0 compiler, and these 14230values do not include any ACPI driver or OSPM code. The debug 14231version of the code includes the debug output trace mechanism and 14232has a much larger code and data size. Note that these values will 14233vary depending on the efficiency of the compiler and the compiler 14234options used during generation. 14235 14236 Previous Release 14237 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14238 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 14239 Current Release: 14240 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total 14241 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total 14242 14243 142442) Linux 14245 14246Module loading/unloading fixes (John Cagle) 14247 14248 142493) iASL Compiler/Disassembler 14250 14251Added support for the SMBBlockProcessCall keyword (ACPI 2.0) 14252 14253Implemented support for the disassembly of all SMBus protocol 14254keywords (SMBQuick, SMBWord, etc.) 14255 14256---------------------------------------- 1425701 November 2002. Summary of changes for version 20021101. 14258 14259 142601) ACPI CA Core Subsystem: 14261 14262Fixed a problem where platforms that have a GPE1 block but no GPE0 14263block were not handled correctly. This resulted in a "GPE 14264overlap" error message. GPE0 is no longer required. 14265 14266Removed code added in the previous release that inserted nodes 14267into the namespace in alphabetical order. This caused some side- 14268effects on various machines. The root cause of the problem is 14269still under investigation since in theory, the internal ordering 14270of the namespace nodes should not matter. 14271 14272 14273Enhanced error reporting for the case where a named object is not 14274found during control method execution. The full ACPI namepath 14275(name reference) of the object that was not found is displayed in 14276this case. 14277 14278Note: as a result of the overhaul of the namespace object types in 14279the previous release, the namespace nodes for the predefined 14280scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE 14281instead of ACPI_TYPE_ANY. This simplifies the namespace 14282management code but may affect code that walks the namespace tree 14283looking for specific object types. 14284 14285Code and Data Size: Current core subsystem library sizes are shown 14286below. These are the code and data sizes for the acpica.lib 14287produced by the Microsoft Visual C++ 6.0 compiler, and these 14288values do not include any ACPI driver or OSPM code. The debug 14289version of the code includes the debug output trace mechanism and 14290has a much larger code and data size. Note that these values will 14291vary depending on the efficiency of the compiler and the compiler 14292options used during generation. 14293 14294 Previous Release 14295 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 14296 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 14297 Current Release: 14298 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total 14299 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total 14300 14301 143022) Linux 14303 14304Fixed a problem introduced in the previous release where the 14305Processor and Thermal objects were not recognized and installed in 14306/proc. This was related to the scope type change described above. 14307 14308 143093) iASL Compiler/Disassembler 14310 14311Implemented the -g option to get all of the required ACPI tables 14312from the registry and save them to files (Windows version of the 14313compiler only.) The required tables are the FADT, FACS, and DSDT. 14314 14315Added ACPI table checksum validation during table disassembly in 14316order to catch corrupted tables. 14317 14318 14319---------------------------------------- 1432022 October 2002. Summary of changes for version 20021022. 14321 143221) ACPI CA Core Subsystem: 14323 14324Implemented a restriction on the Scope operator that the target 14325must already exist in the namespace at the time the operator is 14326encountered (during table load or method execution). In other 14327words, forward references are not allowed and Scope() cannot 14328create a new object. This changes the previous behavior where the 14329interpreter would create the name if not found. This new behavior 14330correctly enables the search-to-root algorithm during namespace 14331lookup of the target name. Because of this upsearch, this fixes 14332the known Compaq _SB_.OKEC problem and makes both the AML 14333interpreter and iASL compiler compatible with other ACPI 14334implementations. 14335 14336Completed a major overhaul of the internal ACPI object types for 14337the ACPI Namespace and the associated operand objects. Many of 14338these types had become obsolete with the introduction of the two- 14339pass namespace load. This cleanup simplifies the code and makes 14340the entire namespace load mechanism much clearer and easier to 14341understand. 14342 14343Improved debug output for tracking scope opening/closing to help 14344diagnose scoping issues. The old scope name as well as the new 14345scope name are displayed. Also improved error messages for 14346problems with ASL Mutex objects and error messages for GPE 14347problems. 14348 14349Cleaned up the namespace dump code, removed obsolete code. 14350 14351All string output (for all namespace/object dumps) now uses the 14352common ACPI string output procedure which handles escapes properly 14353and does not emit non-printable characters. 14354 14355Fixed some issues with constants in the 64-bit version of the 14356local C library (utclib.c) 14357 14358 143592) Linux 14360 14361EC Driver: No longer attempts to acquire the Global Lock at 14362interrupt level. 14363 14364 143653) iASL Compiler/Disassembler 14366 14367Implemented ACPI 2.0B grammar change that disallows all Type 1 and 143682 opcodes outside of a control method. This means that the 14369"executable" operators (versus the "namespace" operators) cannot 14370be used at the table level; they can only be used within a control 14371method. 14372 14373Implemented the restriction on the Scope() operator where the 14374target must already exist in the namespace at the time the 14375operator is encountered (during ASL compilation). In other words, 14376forward references are not allowed and Scope() cannot create a new 14377object. This makes the iASL compiler compatible with other ACPI 14378implementations and makes the Scope() implementation adhere to the 14379ACPI specification. 14380 14381Fixed a problem where namepath optimization for the Alias operator 14382was optimizing the wrong path (of the two namepaths.) This caused 14383a "Missing alias link" error message. 14384 14385Fixed a problem where an "unknown reserved name" warning could be 14386incorrectly generated for names like "_SB" when the trailing 14387underscore is not used in the original ASL. 14388 14389Fixed a problem where the reserved name check did not handle 14390NamePaths with multiple NameSegs correctly. The first nameseg of 14391the NamePath was examined instead of the last NameSeg. 14392 14393 14394---------------------------------------- 14395 1439602 October 2002. Summary of changes for this release. 14397 14398 143991) ACPI CA Core Subsystem version 20021002: 14400 14401Fixed a problem where a store/copy of a string to an existing 14402string did not always set the string length properly in the String 14403object. 14404 14405Fixed a reported problem with the ToString operator where the 14406behavior was identical to the ToHexString operator instead of just 14407simply converting a raw buffer to a string data type. 14408 14409Fixed a problem where CopyObject and the other "explicit" 14410conversion operators were not updating the internal namespace node 14411type as part of the store operation. 14412 14413Fixed a memory leak during implicit source operand conversion 14414where the original object was not deleted if it was converted to a 14415new object of a different type. 14416 14417Enhanced error messages for all problems associated with namespace 14418lookups. Common procedure generates and prints the lookup name as 14419well as the formatted status. 14420 14421Completed implementation of a new design for the Alias support 14422within the namespace. The existing design did not handle the case 14423where a new object was assigned to one of the two names due to the 14424use of an explicit conversion operator, resulting in the two names 14425pointing to two different objects. The new design simply points 14426the Alias name to the original name node - not to the object. 14427This results in a level of indirection that must be handled in the 14428name resolution mechanism. 14429 14430Code and Data Size: Current core subsystem library sizes are shown 14431below. These are the code and data sizes for the acpica.lib 14432produced by the Microsoft Visual C++ 6.0 compiler, and these 14433values do not include any ACPI driver or OSPM code. The debug 14434version of the code includes the debug output trace mechanism and 14435has a larger code and data size. Note that these values will vary 14436depending on the efficiency of the compiler and the compiler 14437options used during generation. 14438 14439 Previous Release 14440 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 14441 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 14442 Current Release: 14443 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total 14444 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total 14445 14446 144472) Linux 14448 14449Initialize thermal driver's timer before it is used. (Knut 14450Neumann) 14451 14452Allow handling negative celsius values. (Kochi Takayoshi) 14453 14454Fix thermal management and make trip points. R/W (Pavel Machek) 14455 14456Fix /proc/acpi/sleep. (P. Christeas) 14457 14458IA64 fixes. (David Mosberger) 14459 14460Fix reversed logic in blacklist code. (Sergio Monteiro Basto) 14461 14462Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik 14463Brodowski) 14464 14465 144663) iASL Compiler/Disassembler 14467 14468Clarified some warning/error messages. 14469 14470 14471---------------------------------------- 1447218 September 2002. Summary of changes for this release. 14473 14474 144751) ACPI CA Core Subsystem version 20020918: 14476 14477Fixed a reported problem with reference chaining (via the Index() 14478and RefOf() operators) in the ObjectType() and SizeOf() operators. 14479The definition of these operators includes the dereferencing of 14480all chained references to return information on the base object. 14481 14482Fixed a problem with stores to indexed package elements - the 14483existing code would not complete the store if an "implicit 14484conversion" was not performed. In other words, if the existing 14485object (package element) was to be replaced completely, the code 14486didn't handle this case. 14487 14488Relaxed typechecking on the ASL "Scope" operator to allow the 14489target name to refer to an object of type Integer, String, or 14490Buffer, in addition to the scoping object types (Device, 14491predefined Scopes, Processor, PowerResource, and ThermalZone.) 14492This allows existing AML code that has workarounds for a bug in 14493Windows to function properly. A warning is issued, however. This 14494affects both the AML interpreter and the iASL compiler. Below is 14495an example of this type of ASL code: 14496 14497 Name(DEB,0x00) 14498 Scope(DEB) 14499 { 14500 14501Fixed some reported problems with 64-bit integer support in the 14502local implementation of C library functions (clib.c) 14503 14504 145052) Linux 14506 14507Use ACPI fix map region instead of IOAPIC region, since it is 14508undefined in non-SMP. 14509 14510Ensure that the SCI has the proper polarity and trigger, even on 14511systems that do not have an interrupt override entry in the MADT. 14512 145132.5 big driver reorganization (Pat Mochel) 14514 14515Use early table mapping code from acpitable.c (Andi Kleen) 14516 14517New blacklist entries (Andi Kleen) 14518 14519Blacklist improvements. Split blacklist code out into a separate 14520file. Move checking the blacklist to very early. Previously, we 14521would use ACPI tables, and then halfway through init, check the 14522blacklist -- too late. Now, it's early enough to completely fall- 14523back to non-ACPI. 14524 14525 145263) iASL Compiler/Disassembler version 20020918: 14527 14528Fixed a problem where the typechecking code didn't know that an 14529alias could point to a method. In other words, aliases were not 14530being dereferenced during typechecking. 14531 14532 14533---------------------------------------- 1453429 August 2002. Summary of changes for this release. 14535 145361) ACPI CA Core Subsystem Version 20020829: 14537 14538If the target of a Scope() operator already exists, it must be an 14539object type that actually opens a scope -- such as a Device, 14540Method, Scope, etc. This is a fatal runtime error. Similar error 14541check has been added to the iASL compiler also. 14542 14543Tightened up the namespace load to disallow multiple names in the 14544same scope. This previously was allowed if both objects were of 14545the same type. (i.e., a lookup was the same as entering a new 14546name). 14547 14548 145492) Linux 14550 14551Ensure that the ACPI interrupt has the proper trigger and 14552polarity. 14553 14554local_irq_disable is extraneous. (Matthew Wilcox) 14555 14556Make "acpi=off" actually do what it says, and not use the ACPI 14557interpreter *or* the tables. 14558 14559Added arch-neutral support for parsing SLIT and SRAT tables (Kochi 14560Takayoshi) 14561 14562 145633) iASL Compiler/Disassembler Version 20020829: 14564 14565Implemented namepath optimization for name declarations. For 14566example, a declaration like "Method (\_SB_.ABCD)" would get 14567optimized to "Method (ABCD)" if the declaration is within the 14568\_SB_ scope. This optimization is in addition to the named 14569reference path optimization first released in the previous 14570version. This would seem to complete all possible optimizations 14571for namepaths within the ASL/AML. 14572 14573If the target of a Scope() operator already exists, it must be an 14574object type that actually opens a scope -- such as a Device, 14575Method, Scope, etc. 14576 14577Implemented a check and warning for unreachable code in the same 14578block below a Return() statement. 14579 14580Fixed a problem where the listing file was not generated if the 14581compiler aborted if the maximum error count was exceeded (200). 14582 14583Fixed a problem where the typechecking of method return values was 14584broken. This includes the check for a return value when the 14585method is invoked as a TermArg (a return value is expected.) 14586 14587Fixed a reported problem where EOF conditions during a quoted 14588string or comment caused a fault. 14589 14590 14591---------------------------------------- 1459215 August 2002. Summary of changes for this release. 14593 145941) ACPI CA Core Subsystem Version 20020815: 14595 14596Fixed a reported problem where a Store to a method argument that 14597contains a reference did not perform the indirect store correctly. 14598This problem was created during the conversion to the new 14599reference object model - the indirect store to a method argument 14600code was not updated to reflect the new model. 14601 14602Reworked the ACPI mode change code to better conform to ACPI 2.0, 14603handle corner cases, and improve code legibility (Kochi Takayoshi) 14604 14605Fixed a problem with the pathname parsing for the carat (^) 14606prefix. The heavy use of the carat operator by the new namepath 14607optimization in the iASL compiler uncovered a problem with the AML 14608interpreter handling of this prefix. In the case where one or 14609more carats precede a single nameseg, the nameseg was treated as 14610standalone and the search rule (to root) was inadvertently 14611applied. This could cause both the iASL compiler and the 14612interpreter to find the wrong object or to miss the error that 14613should occur if the object does not exist at that exact pathname. 14614 14615Found and fixed the problem where the HP Pavilion DSDT would not 14616load. This was a relatively minor tweak to the table loading code 14617(a problem caused by the unexpected encounter with a method 14618invocation not within a control method), but it does not solve the 14619overall issue of the execution of AML code at the table level. 14620This investigation is still ongoing. 14621 14622Code and Data Size: Current core subsystem library sizes are shown 14623below. These are the code and data sizes for the acpica.lib 14624produced by the Microsoft Visual C++ 6.0 compiler, and these 14625values do not include any ACPI driver or OSPM code. The debug 14626version of the code includes the debug output trace mechanism and 14627has a larger code and data size. Note that these values will vary 14628depending on the efficiency of the compiler and the compiler 14629options used during generation. 14630 14631 Previous Release 14632 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 14633 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 14634 Current Release: 14635 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total 14636 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total 14637 14638 146392) Linux 14640 14641Remove redundant slab.h include (Brad Hards) 14642 14643Fix several bugs in thermal.c (Herbert Nachtnebel) 14644 14645Make CONFIG_ACPI_BOOT work properly (Pavel Machek) 14646 14647Change acpi_system_suspend to use updated irq functions (Pavel 14648Machek) 14649 14650Export acpi_get_firmware_table (Matthew Wilcox) 14651 14652Use proper root proc entry for ACPI (Kochi Takayoshi) 14653 14654Fix early-boot table parsing (Bjorn Helgaas) 14655 14656 146573) iASL Compiler/Disassembler 14658 14659Reworked the compiler options to make them more consistent and to 14660use two-letter options where appropriate. We were running out of 14661sensible letters. This may break some makefiles, so check the 14662current options list by invoking the compiler with no parameters. 14663 14664Completed the design and implementation of the ASL namepath 14665optimization option for the compiler. This option optimizes all 14666references to named objects to the shortest possible path. The 14667first attempt tries to utilize a single nameseg (4 characters) and 14668the "search-to-root" algorithm used by the interpreter. If that 14669cannot be used (because either the name is not in the search path 14670or there is a conflict with another object with the same name), 14671the pathname is optimized using the carat prefix (usually a 14672shorter string than specifying the entire path from the root.) 14673 14674Implemented support to obtain the DSDT from the Windows registry 14675(when the disassembly option is specified with no input file). 14676Added this code as the implementation for AcpiOsTableOverride in 14677the Windows OSL. Migrated the 16-bit code (used in the AcpiDump 14678utility) to scan memory for the DSDT to the AcpiOsTableOverride 14679function in the DOS OSL to make the disassembler truly OS 14680independent. 14681 14682Implemented a new option to disassemble and compile in one step. 14683When used without an input filename, this option will grab the 14684DSDT from the local machine, disassemble it, and compile it in one 14685step. 14686 14687Added a warning message for invalid escapes (a backslash followed 14688by any character other than the allowable escapes). This catches 14689the quoted string error "\_SB_" (which should be "\\_SB_" ). 14690 14691Also, there are numerous instances in the ACPI specification where 14692this error occurs. 14693 14694Added a compiler option to disable all optimizations. This is 14695basically the "compatibility mode" because by using this option, 14696the AML code will come out exactly the same as other ASL 14697compilers. 14698 14699Added error messages for incorrectly ordered dependent resource 14700functions. This includes: missing EndDependentFn macro at end of 14701dependent resource list, nested dependent function macros (both 14702start and end), and missing StartDependentFn macro. These are 14703common errors that should be caught at compile time. 14704 14705Implemented _OSI support for the disassembler and compiler. _OSI 14706must be included in the namespace for proper disassembly (because 14707the disassembler must know the number of arguments.) 14708 14709Added an "optimization" message type that is optional (off by 14710default). This message is used for all optimizations - including 14711constant folding, integer optimization, and namepath optimization. 14712 14713---------------------------------------- 1471425 July 2002. Summary of changes for this release. 14715 14716 147171) ACPI CA Core Subsystem Version 20020725: 14718 14719The AML Disassembler has been enhanced to produce compilable ASL 14720code and has been integrated into the iASL compiler (see below) as 14721well as the single-step disassembly for the AML debugger and the 14722disassembler for the AcpiDump utility. All ACPI 2.0A opcodes, 14723resource templates and macros are fully supported. The 14724disassembler has been tested on over 30 different AML files, 14725producing identical AML when the resulting disassembled ASL file 14726is recompiled with the same ASL compiler. 14727 14728Modified the Resource Manager to allow zero interrupts and zero 14729dma channels during the GetCurrentResources call. This was 14730causing problems on some platforms. 14731 14732Added the AcpiOsRedirectOutput interface to the OSL to simplify 14733output redirection for the AcpiOsPrintf and AcpiOsVprintf 14734interfaces. 14735 14736Code and Data Size: Current core subsystem library sizes are shown 14737below. These are the code and data sizes for the acpica.lib 14738produced by the Microsoft Visual C++ 6.0 compiler, and these 14739values do not include any ACPI driver or OSPM code. The debug 14740version of the code includes the debug output trace mechanism and 14741has a larger code and data size. Note that these values will vary 14742depending on the efficiency of the compiler and the compiler 14743options used during generation. 14744 14745 Previous Release 14746 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 14747 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 14748 Current Release: 14749 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total 14750 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total 14751 14752 147532) Linux 14754 14755Fixed a panic in the EC driver (Dominik Brodowski) 14756 14757Implemented checksum of the R/XSDT itself during Linux table scan 14758(Richard Schaal) 14759 14760 147613) iASL compiler 14762 14763The AML disassembler is integrated into the compiler. The "-d" 14764option invokes the disassembler to completely disassemble an 14765input AML file, producing as output a text ASL file with the 14766extension ".dsl" (to avoid name collisions with existing .asl 14767source files.) A future enhancement will allow the disassembler 14768to obtain the BIOS DSDT from the registry under Windows. 14769 14770Fixed a problem with the VendorShort and VendorLong resource 14771descriptors where an invalid AML sequence was created. 14772 14773Implemented a fix for BufferData term in the ASL parser. It was 14774inadvertently defined twice, allowing invalid syntax to pass and 14775causing reduction conflicts. 14776 14777Fixed a problem where the Ones opcode could get converted to a 14778value of zero if "Ones" was used where a byte, word or dword value 14779was expected. The 64-bit value is now truncated to the correct 14780size with the correct value. 14781 14782 14783 14784---------------------------------------- 1478502 July 2002. Summary of changes for this release. 14786 14787 147881) ACPI CA Core Subsystem Version 20020702: 14789 14790The Table Manager code has been restructured to add several new 14791features. Tables that are not required by the core subsystem 14792(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer 14793validated in any way and are returned from AcpiGetFirmwareTable if 14794requested. The AcpiOsTableOverride interface is now called for 14795each table that is loaded by the subsystem in order to allow the 14796host to override any table it chooses. Previously, only the DSDT 14797could be overridden. Added one new files, tbrsdt.c and 14798tbgetall.c. 14799 14800Fixed a problem with the conversion of internal package objects to 14801external objects (when a package is returned from a control 14802method.) The return buffer length was set to zero instead of the 14803proper length of the package object. 14804 14805Fixed a reported problem with the use of the RefOf and DeRefOf 14806operators when passing reference arguments to control methods. A 14807new type of Reference object is used internally for references 14808produced by the RefOf operator. 14809 14810Added additional error messages in the Resource Manager to explain 14811AE_BAD_DATA errors when they occur during resource parsing. 14812 14813Split the AcpiEnableSubsystem into two primitives to enable a 14814finer granularity initialization sequence. These two calls should 14815be called in this order: AcpiEnableSubsystem (flags), 14816AcpiInitializeObjects (flags). The flags parameter remains the 14817same. 14818 14819 148202) Linux 14821 14822Updated the ACPI utilities module to understand the new style of 14823fully resolved package objects that are now returned from the core 14824subsystem. This eliminates errors of the form: 14825 14826 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT] 14827 acpi_utils-0430 [145] acpi_evaluate_reference: 14828 Invalid element in package (not a device reference) 14829 14830The method evaluation utility uses the new buffer allocation 14831scheme instead of calling AcpiEvaluate Object twice. 14832 14833Added support for ECDT. This allows the use of the Embedded 14834 14835Controller before the namespace has been fully initialized, which 14836is necessary for ACPI 2.0 support, and for some laptops to 14837initialize properly. (Laptops using ECDT are still rare, so only 14838limited testing was performed of the added functionality.) 14839 14840Fixed memory leaks in the EC driver. 14841 14842Eliminated a brittle code structure in acpi_bus_init(). 14843 14844Eliminated the acpi_evaluate() helper function in utils.c. It is 14845no longer needed since acpi_evaluate_object can optionally 14846allocate memory for the return object. 14847 14848Implemented fix for keyboard hang when getting battery readings on 14849some systems (Stephen White) 14850 14851PCI IRQ routing update (Dominik Brodowski) 14852 14853Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC 14854support 14855 14856---------------------------------------- 1485711 June 2002. Summary of changes for this release. 14858 14859 148601) ACPI CA Core Subsystem Version 20020611: 14861 14862Fixed a reported problem where constants such as Zero and One 14863appearing within _PRT packages were not handled correctly within 14864the resource manager code. Originally reported against the ASL 14865compiler because the code generator now optimizes integers to 14866their minimal AML representation (i.e. AML constants if possible.) 14867The _PRT code now handles all AML constant opcodes correctly 14868(Zero, One, Ones, Revision). 14869 14870Fixed a problem with the Concatenate operator in the AML 14871interpreter where a buffer result object was incorrectly marked as 14872not fully evaluated, causing a run-time error of AE_AML_INTERNAL. 14873 14874All package sub-objects are now fully resolved before they are 14875returned from the external ACPI interfaces. This means that name 14876strings are resolved to object handles, and constant operators 14877(Zero, One, Ones, Revision) are resolved to Integers. 14878 14879Implemented immediate resolution of the AML Constant opcodes 14880(Zero, One, Ones, Revision) to Integer objects upon detection 14881within the AML stream. This has simplified and reduced the 14882generated code size of the subsystem by eliminating about 10 14883switch statements for these constants (which previously were 14884contained in Reference objects.) The complicating issues are that 14885the Zero opcode is used as a "placeholder" for unspecified 14886optional target operands and stores to constants are defined to be 14887no-ops. 14888 14889Code and Data Size: Current core subsystem library sizes are shown 14890below. These are the code and data sizes for the acpica.lib 14891produced by the Microsoft Visual C++ 6.0 compiler, and these 14892values do not include any ACPI driver or OSPM code. The debug 14893version of the code includes the debug output trace mechanism and 14894has a larger code and data size. Note that these values will vary 14895depending on the efficiency of the compiler and the compiler 14896options used during generation. 14897 14898 Previous Release 14899 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 14900 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 14901 Current Release: 14902 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total 14903 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total 14904 14905 149062) Linux 14907 14908 14909Added preliminary support for obtaining _TRA data for PCI root 14910bridges (Bjorn Helgaas). 14911 14912 149133) iASL Compiler Version X2046: 14914 14915Fixed a problem where the "_DDN" reserved name was defined to be a 14916control method with one argument. There are no arguments, and 14917_DDN does not have to be a control method. 14918 14919Fixed a problem with the Linux version of the compiler where the 14920source lines printed with error messages were the wrong lines. 14921This turned out to be the "LF versus CR/LF" difference between 14922Windows and Unix. This appears to be the longstanding issue 14923concerning listing output and error messages. 14924 14925Fixed a problem with the Linux version of compiler where opcode 14926names within error messages were wrong. This was caused by a 14927slight difference in the output of the Flex tool on Linux versus 14928Windows. 14929 14930Fixed a problem with the Linux compiler where the hex output files 14931contained some garbage data caused by an internal buffer overrun. 14932 14933 14934---------------------------------------- 1493517 May 2002. Summary of changes for this release. 14936 14937 149381) ACPI CA Core Subsystem Version 20020517: 14939 14940Implemented a workaround to an BIOS bug discovered on the HP 14941OmniBook where the FADT revision number and the table size are 14942inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new 14943behavior is to fallback to using only the ACPI 1.0 fields of the 14944FADT if the table is too small to be a ACPI 2.0 table as claimed 14945by the revision number. Although this is a BIOS bug, this is a 14946case where the workaround is simple enough and with no side 14947effects, so it seemed prudent to add it. A warning message is 14948issued, however. 14949 14950Implemented minimum size checks for the fixed-length ACPI tables - 14951- the FADT and FACS, as well as consistency checks between the 14952revision number and the table size. 14953 14954Fixed a reported problem in the table override support where the 14955new table pointer was incorrectly treated as a physical address 14956instead of a logical address. 14957 14958Eliminated the use of the AE_AML_ERROR exception and replaced it 14959with more descriptive codes. 14960 14961Fixed a problem where an exception would occur if an ASL Field was 14962defined with no named Field Units underneath it (used by some 14963index fields). 14964 14965Code and Data Size: Current core subsystem library sizes are shown 14966below. These are the code and data sizes for the acpica.lib 14967produced by the Microsoft Visual C++ 6.0 compiler, and these 14968values do not include any ACPI driver or OSPM code. The debug 14969version of the code includes the debug output trace mechanism and 14970has a larger code and data size. Note that these values will vary 14971depending on the efficiency of the compiler and the compiler 14972options used during generation. 14973 14974 Previous Release 14975 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 14976 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 14977 Current Release: 14978 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total 14979 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total 14980 14981 14982 149832) Linux 14984 14985Much work done on ACPI init (MADT and PCI IRQ routing support). 14986(Paul D. and Dominik Brodowski) 14987 14988Fix PCI IRQ-related panic on boot (Sam Revitch) 14989 14990Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno) 14991 14992Fix "MHz" typo (Dominik Brodowski) 14993 14994Fix RTC year 2000 issue (Dominik Brodowski) 14995 14996Preclude multiple button proc entries (Eric Brunet) 14997 14998Moved arch-specific code out of include/platform/aclinux.h 14999 150003) iASL Compiler Version X2044: 15001 15002Implemented error checking for the string used in the EISAID macro 15003(Usually used in the definition of the _HID object.) The code now 15004strictly enforces the PnP format - exactly 7 characters, 3 15005uppercase letters and 4 hex digits. 15006 15007If a raw string is used in the definition of the _HID object 15008(instead of the EISAID macro), the string must contain all 15009alphanumeric characters (e.g., "*PNP0011" is not allowed because 15010of the asterisk.) 15011 15012Implemented checking for invalid use of ACPI reserved names for 15013most of the name creation operators (Name, Device, Event, Mutex, 15014OperationRegion, PowerResource, Processor, and ThermalZone.) 15015Previously, this check was only performed for control methods. 15016 15017Implemented an additional check on the Name operator to emit an 15018error if a reserved name that must be implemented in ASL as a 15019control method is used. We know that a reserved name must be a 15020method if it is defined with input arguments. 15021 15022The warning emitted when a namespace object reference is not found 15023during the cross reference phase has been changed into an error. 15024The "External" directive should be used for names defined in other 15025modules. 15026 15027 150284) Tools and Utilities 15029 15030The 16-bit tools (adump16 and aexec16) have been regenerated and 15031tested. 15032 15033Fixed a problem with the output of both acpidump and adump16 where 15034the indentation of closing parentheses and brackets was not 15035 15036aligned properly with the parent block. 15037 15038 15039---------------------------------------- 1504003 May 2002. Summary of changes for this release. 15041 15042 150431) ACPI CA Core Subsystem Version 20020503: 15044 15045Added support a new OSL interface that allows the host operating 15046 15047system software to override the DSDT found in the firmware - 15048AcpiOsTableOverride. With this interface, the OSL can examine the 15049version of the firmware DSDT and replace it with a different one 15050if desired. 15051 15052Added new external interfaces for accessing ACPI registers from 15053device drivers and other system software - AcpiGetRegister and 15054AcpiSetRegister. This was simply an externalization of the 15055existing AcpiHwBitRegister interfaces. 15056 15057Fixed a regression introduced in the previous build where the 15058ASL/AML CreateField operator always returned an error, 15059"destination must be a NS Node". 15060 15061Extended the maximum time (before failure) to successfully enable 15062ACPI mode to 3 seconds. 15063 15064Code and Data Size: Current core subsystem library sizes are shown 15065below. These are the code and data sizes for the acpica.lib 15066produced by the Microsoft Visual C++ 6.0 compiler, and these 15067values do not include any ACPI driver or OSPM code. The debug 15068version of the code includes the debug output trace mechanism and 15069has a larger code and data size. Note that these values will vary 15070depending on the efficiency of the compiler and the compiler 15071options used during generation. 15072 15073 Previous Release 15074 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 15075 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 15076 Current Release: 15077 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total 15078 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total 15079 15080 150812) Linux 15082 15083Enhanced ACPI init code for SMP. We are now fully MPS and $PIR- 15084free. While 3 out of 4 of our in-house systems work fine, the last 15085one still hangs when testing the LAPIC timer. 15086 15087Renamed many files in 2.5 kernel release to omit "acpi_" from the 15088name. 15089 15090Added warning on boot for Presario 711FR. 15091 15092Sleep improvements (Pavel Machek) 15093 15094ACPI can now be built without CONFIG_PCI enabled. 15095 15096IA64: Fixed memory map functions (JI Lee) 15097 15098 150993) iASL Compiler Version X2043: 15100 15101Added support to allow the compiler to be integrated into the MS 15102VC++ development environment for one-button compilation of single 15103files or entire projects -- with error-to-source-line mapping. 15104 15105Implemented support for compile-time constant folding for the 15106Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0 15107specification. This allows the ASL writer to use expressions 15108instead of Integer/Buffer/String constants in terms that must 15109evaluate to constants at compile time and will also simplify the 15110emitted AML in any such sub-expressions that can be folded 15111(evaluated at compile-time.) This increases the size of the 15112compiler significantly because a portion of the ACPI CA AML 15113interpreter is included within the compiler in order to pre- 15114evaluate constant expressions. 15115 15116 15117Fixed a problem with the "Unicode" ASL macro that caused the 15118compiler to fault. (This macro is used in conjunction with the 15119_STR reserved name.) 15120 15121Implemented an AML opcode optimization to use the Zero, One, and 15122Ones opcodes where possible to further reduce the size of integer 15123constants and thus reduce the overall size of the generated AML 15124code. 15125 15126Implemented error checking for new reserved terms for ACPI version 151272.0A. 15128 15129Implemented the -qr option to display the current list of ACPI 15130reserved names known to the compiler. 15131 15132Implemented the -qc option to display the current list of ASL 15133operators that are allowed within constant expressions and can 15134therefore be folded at compile time if the operands are constants. 15135 15136 151374) Documentation 15138 15139Updated the Programmer's Reference for new interfaces, data types, 15140and memory allocation model options. 15141 15142Updated the iASL Compiler User Reference to apply new format and 15143add information about new features and options. 15144 15145---------------------------------------- 1514619 April 2002. Summary of changes for this release. 15147 151481) ACPI CA Core Subsystem Version 20020419: 15149 15150The source code base for the Core Subsystem has been completely 15151cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit 15152versions. The Lint option files used are included in the 15153/acpi/generate/lint directory. 15154 15155Implemented enhanced status/error checking across the entire 15156Hardware manager subsystem. Any hardware errors (reported from 15157the OSL) are now bubbled up and will abort a running control 15158method. 15159 15160 15161Fixed a problem where the per-ACPI-table integer width (32 or 64) 15162was stored only with control method nodes, causing a fault when 15163non-control method code was executed during table loading. The 15164solution implemented uses a global variable to indicate table 15165width across the entire ACPI subsystem. Therefore, ACPI CA does 15166not support mixed integer widths across different ACPI tables 15167(DSDT, SSDT). 15168 15169Fixed a problem where NULL extended fields (X fields) in an ACPI 151702.0 ACPI FADT caused the table load to fail. Although the 15171existing ACPI specification is a bit fuzzy on this topic, the new 15172behavior is to fall back on a ACPI 1.0 field if the corresponding 15173ACPI 2.0 X field is zero (even though the table revision indicates 15174a full ACPI 2.0 table.) The ACPI specification will be updated to 15175clarify this issue. 15176 15177Fixed a problem with the SystemMemory operation region handler 15178where memory was always accessed byte-wise even if the AML- 15179specified access width was larger than a byte. This caused 15180problems on systems with memory-mapped I/O. Memory is now 15181accessed with the width specified. On systems that do not support 15182non-aligned transfers, a check is made to guarantee proper address 15183alignment before proceeding in order to avoid an AML-caused 15184alignment fault within the kernel. 15185 15186 15187Fixed a problem with the ExtendedIrq resource where only one byte 15188of the 4-byte Irq field was extracted. 15189 15190Fixed the AcpiExDigitsNeeded() procedure to support _UID. This 15191function was out of date and required a rewrite. 15192 15193Code and Data Size: Current core subsystem library sizes are shown 15194below. These are the code and data sizes for the acpica.lib 15195produced by the Microsoft Visual C++ 6.0 compiler, and these 15196values do not include any ACPI driver or OSPM code. The debug 15197version of the code includes the debug output trace mechanism and 15198has a larger code and data size. Note that these values will vary 15199depending on the efficiency of the compiler and the compiler 15200options used during generation. 15201 15202 Previous Release 15203 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 15204 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 15205 Current Release: 15206 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total 15207 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total 15208 15209 152102) Linux 15211 15212PCI IRQ routing fixes (Dominik Brodowski) 15213 15214 152153) iASL Compiler Version X2042: 15216 15217Implemented an additional compile-time error check for a field 15218unit whose size + minimum access width would cause a run-time 15219access beyond the end-of-region. Previously, only the field size 15220itself was checked. 15221 15222The Core subsystem and iASL compiler now share a common parse 15223object in preparation for compile-time evaluation of the type 152243/4/5 ASL operators. 15225 15226 15227---------------------------------------- 15228Summary of changes for this release: 03_29_02 15229 152301) ACPI CA Core Subsystem Version 20020329: 15231 15232Implemented support for late evaluation of TermArg operands to 15233Buffer and Package objects. This allows complex expressions to be 15234used in the declarations of these object types. 15235 15236Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI 152371.0, if the field was larger than 32 bits, it was returned as a 15238buffer - otherwise it was returned as an integer. In ACPI 2.0, 15239the field is returned as a buffer only if the field is larger than 1524064 bits. The TableRevision is now considered when making this 15241conversion to avoid incompatibility with existing ASL code. 15242 15243Implemented logical addressing for AcpiOsGetRootPointer. This 15244allows an RSDP with either a logical or physical address. With 15245this support, the host OS can now override all ACPI tables with 15246one logical RSDP. Includes implementation of "typed" pointer 15247support to allow a common data type for both physical and logical 15248pointers internally. This required a change to the 15249AcpiOsGetRootPointer interface. 15250 15251Implemented the use of ACPI 2.0 Generic Address Structures for all 15252GPE, Fixed Event, and PM Timer I/O. This allows the use of memory 15253mapped I/O for these ACPI features. 15254 15255Initialization now ignores not only non-required tables (All 15256tables other than the FADT, FACS, DSDT, and SSDTs), but also does 15257not validate the table headers of unrecognized tables. 15258 15259Fixed a problem where a notify handler could only be 15260installed/removed on an object of type Device. All "notify" 15261 15262objects are now supported -- Devices, Processor, Power, and 15263Thermal. 15264 15265Removed most verbosity from the ACPI_DB_INFO debug level. Only 15266critical information is returned when this debug level is enabled. 15267 15268Code and Data Size: Current core subsystem library sizes are shown 15269below. These are the code and data sizes for the acpica.lib 15270produced by the Microsoft Visual C++ 6.0 compiler, and these 15271values do not include any ACPI driver or OSPM code. The debug 15272version of the code includes the debug output trace mechanism and 15273has a larger code and data size. Note that these values will vary 15274depending on the efficiency of the compiler and the compiler 15275options used during generation. 15276 15277 Previous Release 15278 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 15279 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 15280 Current Release: 15281 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total 15282 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total 15283 15284 152852) Linux: 15286 15287The processor driver (acpi_processor.c) now fully supports ACPI 152882.0-based processor performance control (e.g. Intel(R) 15289SpeedStep(TM) technology) Note that older laptops that only have 15290the Intel "applet" interface are not supported through this. The 15291'limit' and 'performance' interface (/proc) are fully functional. 15292[Note that basic policy for controlling performance state 15293transitions will be included in the next version of ospmd.] The 15294idle handler was modified to more aggressively use C2, and PIIX4 15295errata handling underwent a complete overhaul (big thanks to 15296Dominik Brodowski). 15297 15298Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR- 15299based devices in the ACPI namespace are now dynamically bound 15300(associated) with their PCI counterparts (e.g. PCI1->01:00.0). 15301This allows, among other things, ACPI to resolve bus numbers for 15302subordinate PCI bridges. 15303 15304Enhanced PCI IRQ routing to get the proper bus number for _PRT 15305entries defined underneath PCI bridges. 15306 15307Added IBM 600E to bad bios list due to invalid _ADR value for 15308PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing. 15309 15310In the process of adding full MADT support (e.g. IOAPIC) for IA32 15311(acpi.c, mpparse.c) -- stay tuned. 15312 15313Added back visual differentiation between fixed-feature and 15314control-method buttons in dmesg. Buttons are also subtyped (e.g. 15315button/power/PWRF) to simplify button identification. 15316 15317We no longer use -Wno-unused when compiling debug. Please ignore 15318any "_THIS_MODULE defined but not used" messages. 15319 15320Can now shut down the system using "magic sysrq" key. 15321 15322 153233) iASL Compiler version 2041: 15324 15325Fixed a problem where conversion errors for hex/octal/decimal 15326constants were not reported. 15327 15328Implemented a fix for the General Register template Address field. 15329This field was 8 bits when it should be 64. 15330 15331Fixed a problem where errors/warnings were no longer being emitted 15332within the listing output file. 15333 15334Implemented the ACPI 2.0A restriction on ACPI Table Signatures to 15335exactly 4 characters, alphanumeric only. 15336 15337 15338 15339 15340---------------------------------------- 15341Summary of changes for this release: 03_08_02 15342 15343 153441) ACPI CA Core Subsystem Version 20020308: 15345 15346Fixed a problem with AML Fields where the use of the "AccessAny" 15347keyword could cause an interpreter error due to attempting to read 15348or write beyond the end of the parent Operation Region. 15349 15350Fixed a problem in the SystemMemory Operation Region handler where 15351an attempt was made to map memory beyond the end of the region. 15352This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY" 15353errors on some Linux systems. 15354 15355Fixed a problem where the interpreter/namespace "search to root" 15356algorithm was not functioning for some object types. Relaxed the 15357internal restriction on the search to allow upsearches for all 15358external object types as well as most internal types. 15359 15360 153612) Linux: 15362 15363We now use safe_halt() macro versus individual calls to sti | hlt. 15364 15365Writing to the processor limit interface should now work. "echo 1" 15366will increase the limit, 2 will decrease, and 0 will reset to the 15367 15368default. 15369 15370 153713) ASL compiler: 15372 15373Fixed segfault on Linux version. 15374 15375 15376---------------------------------------- 15377Summary of changes for this release: 02_25_02 15378 153791) ACPI CA Core Subsystem: 15380 15381 15382Fixed a problem where the GPE bit masks were not initialized 15383properly, causing erratic GPE behavior. 15384 15385Implemented limited support for multiple calling conventions. The 15386code can be generated with either the VPL (variable parameter 15387list, or "C") convention, or the FPL (fixed parameter list, or 15388"Pascal") convention. The core subsystem is about 3.4% smaller 15389when generated with FPL. 15390 15391 153922) Linux 15393 15394Re-add some /proc/acpi/event functionality that was lost during 15395the rewrite 15396 15397Resolved issue with /proc events for fixed-feature buttons showing 15398up as the system device. 15399 15400Fixed checks on C2/C3 latencies to be inclusive of maximum values. 15401 15402Replaced AE_ERRORs in acpi_osl.c with more specific error codes. 15403 15404Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi" 15405 15406Fixed limit interface & usage to fix bugs with passive cooling 15407hysterisis. 15408 15409Restructured PRT support. 15410 15411 15412---------------------------------------- 15413Summary of changes for this label: 02_14_02 15414 15415 154161) ACPI CA Core Subsystem: 15417 15418Implemented support in AcpiLoadTable to allow loading of FACS and 15419FADT tables. 15420 15421Suport for the now-obsolete interim 0.71 64-bit ACPI tables has 15422been removed. All 64-bit platforms should be migrated to the ACPI 154232.0 tables. The actbl71.h header has been removed from the source 15424tree. 15425 15426All C macros defined within the subsystem have been prefixed with 15427"ACPI_" to avoid collision with other system include files. 15428 15429Removed the return value for the two AcpiOsPrint interfaces, since 15430it is never used and causes lint warnings for ignoring the return 15431value. 15432 15433Added error checking to all internal mutex acquire and release 15434calls. Although a failure from one of these interfaces is 15435probably a fatal system error, these checks will cause the 15436immediate abort of the currently executing method or interface. 15437 15438Fixed a problem where the AcpiSetCurrentResources interface could 15439fault. This was a side effect of the deployment of the new memory 15440allocation model. 15441 15442Fixed a couple of problems with the Global Lock support introduced 15443in the last major build. The "common" (1.0/2.0) internal FACS was 15444being overwritten with the FACS signature and clobbering the 15445Global Lock pointer. Also, the actual firmware FACS was being 15446unmapped after construction of the "common" FACS, preventing 15447access to the actual Global Lock field within it. The "common" 15448internal FACS is no longer installed as an actual ACPI table; it 15449is used simply as a global. 15450 15451Code and Data Size: Current core subsystem library sizes are shown 15452below. These are the code and data sizes for the acpica.lib 15453produced by the Microsoft Visual C++ 6.0 compiler, and these 15454values do not include any ACPI driver or OSPM code. The debug 15455version of the code includes the debug output trace mechanism and 15456has a larger code and data size. Note that these values will vary 15457depending on the efficiency of the compiler and the compiler 15458options used during generation. 15459 15460 Previous Release (02_07_01) 15461 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 15462 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 15463 Current Release: 15464 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total 15465 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total 15466 15467 154682) Linux 15469 15470Updated Linux-specific code for core macro and OSL interface 15471changes described above. 15472 15473Improved /proc/acpi/event. It now can be opened only once and has 15474proper poll functionality. 15475 15476Fixed and restructured power management (acpi_bus). 15477 15478Only create /proc "view by type" when devices of that class exist. 15479 15480Fixed "charging/discharging" bug (and others) in acpi_battery. 15481 15482Improved thermal zone code. 15483 15484 154853) ASL Compiler, version X2039: 15486 15487 15488Implemented the new compiler restriction on ASL String hex/octal 15489escapes to non-null, ASCII values. An error results if an invalid 15490value is used. (This will require an ACPI 2.0 specification 15491change.) 15492 15493AML object labels that are output to the optional C and ASM source 15494are now prefixed with both the ACPI table signature and table ID 15495to help guarantee uniqueness within a large BIOS project. 15496 15497 15498---------------------------------------- 15499Summary of changes for this label: 02_01_02 15500 155011) ACPI CA Core Subsystem: 15502 15503ACPI 2.0 support is complete in the entire Core Subsystem and the 15504ASL compiler. All new ACPI 2.0 operators are implemented and all 15505other changes for ACPI 2.0 support are complete. With 15506simultaneous code and data optimizations throughout the subsystem, 15507ACPI 2.0 support has been implemented with almost no additional 15508cost in terms of code and data size. 15509 15510Implemented a new mechanism for allocation of return buffers. If 15511the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will 15512be allocated on behalf of the caller. Consolidated all return 15513buffer validation and allocation to a common procedure. Return 15514buffers will be allocated via the primary OSL allocation interface 15515since it appears that a separate pool is not needed by most users. 15516If a separate pool is required for these buffers, the caller can 15517still use the original mechanism and pre-allocate the buffer(s). 15518 15519Implemented support for string operands within the DerefOf 15520operator. 15521 15522Restructured the Hardware and Event managers to be table driven, 15523simplifying the source code and reducing the amount of generated 15524code. 15525 15526Split the common read/write low-level ACPI register bitfield 15527procedure into a separate read and write, simplifying the code 15528considerably. 15529 15530Obsoleted the AcpiOsCallocate OSL interface. This interface was 15531used only a handful of times and didn't have enough critical mass 15532for a separate interface. Replaced with a common calloc procedure 15533in the core. 15534 15535Fixed a reported problem with the GPE number mapping mechanism 15536that allows GPE1 numbers to be non-contiguous with GPE0. 15537Reorganized the GPE information and shrunk a large array that was 15538originally large enough to hold info for all possible GPEs (256) 15539to simply large enough to hold all GPEs up to the largest GPE 15540number on the machine. 15541 15542Fixed a reported problem with resource structure alignment on 64- 15543bit platforms. 15544 15545Changed the AcpiEnableEvent and AcpiDisableEvent external 15546interfaces to not require any flags for the common case of 15547enabling/disabling a GPE. 15548 15549Implemented support to allow a "Notify" on a Processor object. 15550 15551Most TBDs in comments within the source code have been resolved 15552and eliminated. 15553 15554 15555Fixed a problem in the interpreter where a standalone parent 15556prefix (^) was not handled correctly in the interpreter and 15557debugger. 15558 15559Removed obsolete and unnecessary GPE save/restore code. 15560 15561Implemented Field support in the ASL Load operator. This allows a 15562table to be loaded from a named field, in addition to loading a 15563table directly from an Operation Region. 15564 15565Implemented timeout and handle support in the external Global Lock 15566interfaces. 15567 15568Fixed a problem in the AcpiDump utility where pathnames were no 15569longer being generated correctly during the dump of named objects. 15570 15571Modified the AML debugger to give a full display of if/while 15572predicates instead of just one AML opcode at a time. (The 15573predicate can have several nested ASL statements.) The old method 15574was confusing during single stepping. 15575 15576Code and Data Size: Current core subsystem library sizes are shown 15577below. These are the code and data sizes for the acpica.lib 15578produced by the Microsoft Visual C++ 6.0 compiler, and these 15579values do not include any ACPI driver or OSPM code. The debug 15580version of the code includes the debug output trace mechanism and 15581has a larger code and data size. Note that these values will vary 15582depending on the efficiency of the compiler and the compiler 15583options used during generation. 15584 15585 Previous Release (12_18_01) 15586 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 15587 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 15588 Current Release: 15589 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total 15590 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total 15591 155922) Linux 15593 15594 Implemented fix for PIIX reverse throttling errata (Processor 15595driver) 15596 15597Added new Limit interface (Processor and Thermal drivers) 15598 15599New thermal policy (Thermal driver) 15600 15601Many updates to /proc 15602 15603Battery "low" event support (Battery driver) 15604 15605Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers) 15606 15607IA32 - IA64 initialization unification, no longer experimental 15608 15609Menuconfig options redesigned 15610 156113) ASL Compiler, version X2037: 15612 15613Implemented several new output features to simplify integration of 15614AML code into firmware: 1) Output the AML in C source code with 15615labels for each named ASL object. The original ASL source code 15616is interleaved as C comments. 2) Output the AML in ASM source code 15617with labels and interleaved ASL source. 3) Output the AML in 15618raw hex table form, in either C or ASM. 15619 15620Implemented support for optional string parameters to the 15621LoadTable operator. 15622 15623Completed support for embedded escape sequences within string 15624literals. The compiler now supports all single character escapes 15625as well as the Octal and Hex escapes. Note: the insertion of a 15626null byte into a string literal (via the hex/octal escape) causes 15627the string to be immediately terminated. A warning is issued. 15628 15629Fixed a problem where incorrect AML was generated for the case 15630where an ASL namepath consists of a single parent prefix ( 15631 15632) with no trailing name segments. 15633 15634The compiler has been successfully generated with a 64-bit C 15635compiler. 15636 15637 15638 15639 15640---------------------------------------- 15641Summary of changes for this label: 12_18_01 15642 156431) Linux 15644 15645Enhanced blacklist with reason and severity fields. Any table's 15646signature may now be used to identify a blacklisted system. 15647 15648Call _PIC control method to inform the firmware which interrupt 15649model the OS is using. Turn on any disabled link devices. 15650 15651Cleaned up busmgr /proc error handling (Andreas Dilger) 15652 15653 2) ACPI CA Core Subsystem: 15654 15655Implemented ACPI 2.0 semantics for the "Break" operator (Exit from 15656while loop) 15657 15658Completed implementation of the ACPI 2.0 "Continue", 15659"ConcatenateResTemplate", "DataTableRegion", and "LoadTable" 15660operators. All new ACPI 2.0 operators are now implemented in both 15661the ASL compiler and the AML interpreter. The only remaining ACPI 156622.0 task is support for the String data type in the DerefOf 15663operator. Fixed a problem with AcquireMutex where the status code 15664was lost if the caller had to actually wait for the mutex. 15665 15666Increased the maximum ASL Field size from 64K bits to 4G bits. 15667 15668Completed implementation of the external Global Lock interfaces -- 15669AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and 15670Handler parameters were added. 15671 15672Completed another pass at removing warnings and issues when 15673compiling with 64-bit compilers. The code now compiles cleanly 15674with the Intel 64-bit C/C++ compiler. Most notably, the pointer 15675add and subtract (diff) macros have changed considerably. 15676 15677 15678Created and deployed a new ACPI_SIZE type that is 64-bits wide on 1567964-bit platforms, 32-bits on all others. This type is used 15680wherever memory allocation and/or the C sizeof() operator is used, 15681and affects the OSL memory allocation interfaces AcpiOsAllocate 15682and AcpiOsCallocate. 15683 15684Implemented sticky user breakpoints in the AML debugger. 15685 15686Code and Data Size: Current core subsystem library sizes are shown 15687below. These are the code and data sizes for the acpica.lib 15688produced by the Microsoft Visual C++ 6.0 compiler, and these 15689values do not include any ACPI driver or OSPM code. The debug 15690version of the code includes the debug output trace mechanism and 15691has a larger code and data size. Note that these values will vary 15692depending on the efficiency of the compiler and the compiler 15693options used during generation. 15694 15695 Previous Release (12_05_01) 15696 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 15697 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 15698 Current Release: 15699 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total 15700 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total 15701 15702 3) ASL Compiler, version X2034: 15703 15704Now checks for (and generates an error if detected) the use of a 15705Break or Continue statement without an enclosing While statement. 15706 15707 15708Successfully generated the compiler with the Intel 64-bit C 15709compiler. 15710 15711 ---------------------------------------- 15712Summary of changes for this label: 12_05_01 15713 15714 1) ACPI CA Core Subsystem: 15715 15716The ACPI 2.0 CopyObject operator is fully implemented. This 15717operator creates a new copy of an object (and is also used to 15718bypass the "implicit conversion" mechanism of the Store operator.) 15719 15720The ACPI 2.0 semantics for the SizeOf operator are fully 15721implemented. The change is that performing a SizeOf on a 15722reference object causes an automatic dereference of the object to 15723tha actual value before the size is evaluated. This behavior was 15724undefined in ACPI 1.0. 15725 15726The ACPI 2.0 semantics for the Extended IRQ resource descriptor 15727have been implemented. The interrupt polarity and mode are now 15728independently set. 15729 15730Fixed a problem where ASL Constants (Zero, One, Ones, Revision) 15731appearing in Package objects were not properly converted to 15732integers when the internal Package was converted to an external 15733object (via the AcpiEvaluateObject interface.) 15734 15735Fixed a problem with the namespace object deletion mechanism for 15736objects created by control methods. There were two parts to this 15737problem: 1) Objects created during the initialization phase method 15738parse were not being deleted, and 2) The object owner ID mechanism 15739to track objects was broken. 15740 15741Fixed a problem where the use of the ASL Scope operator within a 15742control method would result in an invalid opcode exception. 15743 15744Fixed a problem introduced in the previous label where the buffer 15745length required for the _PRT structure was not being returned 15746correctly. 15747 15748Code and Data Size: Current core subsystem library sizes are shown 15749below. These are the code and data sizes for the acpica.lib 15750produced by the Microsoft Visual C++ 6.0 compiler, and these 15751values do not include any ACPI driver or OSPM code. The debug 15752version of the code includes the debug output trace mechanism and 15753has a larger code and data size. Note that these values will vary 15754depending on the efficiency of the compiler and the compiler 15755options used during generation. 15756 15757 Previous Release (11_20_01) 15758 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 15759 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 15760 15761 Current Release: 15762 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total 15763 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total 15764 15765 2) Linux: 15766 15767Updated all files to apply cleanly against 2.4.16. 15768 15769Added basic PCI Interrupt Routing Table (PRT) support for IA32 15770(acpi_pci.c), and unified the PRT code for IA32 and IA64. This 15771version supports both static and dyanmic PRT entries, but dynamic 15772entries are treated as if they were static (not yet 15773reconfigurable). Architecture- specific code to use this data is 15774absent on IA32 but should be available shortly. 15775 15776Changed the initialization sequence to start the ACPI interpreter 15777(acpi_init) prior to initialization of the PCI driver (pci_init) 15778in init/main.c. This ordering is required to support PRT and 15779facilitate other (future) enhancement. A side effect is that the 15780ACPI bus driver and certain device drivers can no longer be loaded 15781as modules. 15782 15783Modified the 'make menuconfig' options to allow PCI Interrupt 15784Routing support to be included without the ACPI Bus and other 15785device drivers. 15786 15787 3) ASL Compiler, version X2033: 15788 15789Fixed some issues with the use of the new CopyObject and 15790DataTableRegion operators. Both are fully functional. 15791 15792 ---------------------------------------- 15793Summary of changes for this label: 11_20_01 15794 15795 20 November 2001. Summary of changes for this release. 15796 15797 1) ACPI CA Core Subsystem: 15798 15799Updated Index support to match ACPI 2.0 semantics. Storing a 15800Integer, String, or Buffer to an Index of a Buffer will store only 15801the least-significant byte of the source to the Indexed buffer 15802byte. Multiple writes are not performed. 15803 15804Fixed a problem where the access type used in an AccessAs ASL 15805operator was not recorded correctly into the field object. 15806 15807Fixed a problem where ASL Event objects were created in a 15808signalled state. Events are now created in an unsignalled state. 15809 15810The internal object cache is now purged after table loading and 15811initialization to reduce the use of dynamic kernel memory -- on 15812the assumption that object use is greatest during the parse phase 15813of the entire table (versus the run-time use of individual control 15814methods.) 15815 15816ACPI 2.0 variable-length packages are now fully operational. 15817 15818Code and Data Size: Code and Data optimizations have permitted new 15819feature development with an actual reduction in the library size. 15820Current core subsystem library sizes are shown below. These are 15821the code and data sizes for the acpica.lib produced by the 15822Microsoft Visual C++ 6.0 compiler, and these values do not include 15823any ACPI driver or OSPM code. The debug version of the code 15824includes the debug output trace mechanism and has a larger code 15825and data size. Note that these values will vary depending on the 15826efficiency of the compiler and the compiler options used during 15827generation. 15828 15829 Previous Release (11_09_01): 15830 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 15831 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 15832 15833 Current Release: 15834 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total 15835 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total 15836 15837 2) Linux: 15838 15839Enhanced the ACPI boot-time initialization code to allow the use 15840of Local APIC tables for processor enumeration on IA-32, and to 15841pave the way for a fully MPS-free boot (on SMP systems) in the 15842near future. This functionality replaces 15843arch/i386/kernel/acpitables.c, which was introduced in an earlier 158442.4.15-preX release. To enable this feature you must add 15845"acpi_boot=on" to the kernel command line -- see the help entry 15846for CONFIG_ACPI_BOOT for more information. An IA-64 release is in 15847the works... 15848 15849Restructured the configuration options to allow boot-time table 15850parsing support without inclusion of the ACPI Interpreter (and 15851other) code. 15852 15853NOTE: This release does not include fixes for the reported events, 15854power-down, and thermal passive cooling issues (coming soon). 15855 15856 3) ASL Compiler: 15857 15858Added additional typechecking for Fields within restricted access 15859Operation Regions. All fields within EC and CMOS regions must be 15860declared with ByteAcc. All fields withing SMBus regions must be 15861declared with the BufferAcc access type. 15862 15863Fixed a problem where the listing file output of control methods 15864no longer interleaved the actual AML code with the ASL source 15865code. 15866 15867 15868 15869 15870---------------------------------------- 15871Summary of changes for this label: 11_09_01 15872 158731) ACPI CA Core Subsystem: 15874 15875Implemented ACPI 2.0-defined support for writes to fields with a 15876Buffer, String, or Integer source operand that is smaller than the 15877target field. In these cases, the source operand is zero-extended 15878to fill the target field. 15879 15880Fixed a problem where a Field starting bit offset (within the 15881parent operation region) was calculated incorrectly if the 15882 15883alignment of the field differed from the access width. This 15884affected CreateWordField, CreateDwordField, CreateQwordField, and 15885possibly other fields that use the "AccessAny" keyword. 15886 15887Fixed a problem introduced in the 11_02_01 release where indirect 15888stores through method arguments did not operate correctly. 15889 158902) Linux: 15891 15892Implemented boot-time ACPI table parsing support 15893(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code 15894facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than 15895legacy BIOS interfaces (e.g. MPS) for the configuration of system 15896processors, memory, and interrupts during setup_arch(). Note that 15897this patch does not include the required architecture-specific 15898changes required to apply this information -- subsequent patches 15899will be posted for both IA32 and IA64 to achieve this. 15900 15901Added low-level sleep support for IA32 platforms, courtesy of Pat 15902Mochel. This allows IA32 systems to transition to/from various 15903sleeping states (e.g. S1, S3), although the lack of a centralized 15904driver model and power-manageable drivers will prevent its 15905(successful) use on most systems. 15906 15907Revamped the ACPI 'menuconfig' layout: created new "ACPI Support" 15908submenu, unified IA32 and IA64 options, added new "Boot using ACPI 15909tables" option, etc. 15910 15911Increased the default timeout for the EC driver from 1ms to 10ms 15912(1000 cycles of 10us) to try to address AE_TIME errors during EC 15913transactions. 15914 15915 ---------------------------------------- 15916Summary of changes for this label: 11_02_01 15917 159181) ACPI CA Core Subsystem: 15919 15920ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access 15921(QWordAcc keyword). All ACPI 2.0 64-bit support is now 15922implemented. 15923 15924OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required 15925changes to support ACPI 2.0 Qword field access. Read/Write 15926PciConfiguration(), Read/Write Memory(), and Read/Write Port() now 15927accept an ACPI_INTEGER (64 bits) as the value parameter. Also, 15928the value parameter for the address space handler interface is now 15929an ACPI_INTEGER. OSL implementations of these interfaces must now 15930handle the case where the Width parameter is 64. 15931 15932Index Fields: Fixed a problem where unaligned bit assembly and 15933disassembly for IndexFields was not supported correctly. 15934 15935Index and Bank Fields: Nested Index and Bank Fields are now 15936supported. During field access, a check is performed to ensure 15937that the value written to an Index or Bank register is not out of 15938the range of the register. The Index (or Bank) register is 15939written before each access to the field data. Future support will 15940include allowing individual IndexFields to be wider than the 15941DataRegister width. 15942 15943Fields: Fixed a problem where the AML interpreter was incorrectly 15944attempting to write beyond the end of a Field/OpRegion. This was 15945a boundary case that occurred when a DWORD field was written to a 15946BYTE access OpRegion, forcing multiple writes and causing the 15947interpreter to write one datum too many. 15948 15949Fields: Fixed a problem with Field/OpRegion access where the 15950starting bit address of a field was incorrectly calculated if the 15951current access type was wider than a byte (WordAcc, DwordAcc, or 15952QwordAcc). 15953 15954Fields: Fixed a problem where forward references to individual 15955FieldUnits (individual Field names within a Field definition) were 15956not resolved during the AML table load. 15957 15958Fields: Fixed a problem where forward references from a Field 15959definition to the parent Operation Region definition were not 15960resolved during the AML table load. 15961 15962Fields: Duplicate FieldUnit names within a scope are now detected 15963during AML table load. 15964 15965Acpi Interfaces: Fixed a problem where the AcpiGetName() interface 15966returned an incorrect name for the root node. 15967 15968Code and Data Size: Code and Data optimizations have permitted new 15969feature development with an actual reduction in the library size. 15970Current core subsystem library sizes are shown below. These are 15971the code and data sizes for the acpica.lib produced by the 15972Microsoft Visual C++ 6.0 compiler, and these values do not include 15973any ACPI driver or OSPM code. The debug version of the code 15974includes the debug output trace mechanism and has a larger code 15975and data size. Note that these values will vary depending on the 15976efficiency of the compiler and the compiler options used during 15977generation. 15978 15979 Previous Release (10_18_01): 15980 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 15981 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 15982 15983 Current Release: 15984 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total 15985 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total 15986 15987 2) Linux: 15988 15989Improved /proc processor output (Pavel Machek) Re-added 15990MODULE_LICENSE("GPL") to all modules. 15991 15992 3) ASL Compiler version X2030: 15993 15994Duplicate FieldUnit names within a scope are now detected and 15995flagged as errors. 15996 15997 4) Documentation: 15998 15999Programmer Reference updated to reflect OSL and address space 16000handler interface changes described above. 16001 16002---------------------------------------- 16003Summary of changes for this label: 10_18_01 16004 16005ACPI CA Core Subsystem: 16006 16007Fixed a problem with the internal object reference count mechanism 16008that occasionally caused premature object deletion. This resolves 16009all of the outstanding problem reports where an object is deleted 16010in the middle of an interpreter evaluation. Although this problem 16011only showed up in rather obscure cases, the solution to the 16012problem involved an adjustment of all reference counts involving 16013objects attached to namespace nodes. 16014 16015Fixed a problem with Field support in the interpreter where 16016writing to an aligned field whose length is an exact multiple (2 16017or greater) of the field access granularity would cause an attempt 16018to write beyond the end of the field. 16019 16020The top level AML opcode execution functions within the 16021interpreter have been renamed with a more meaningful and 16022consistent naming convention. The modules exmonad.c and 16023exdyadic.c were eliminated. New modules are exoparg1.c, 16024exoparg2.c, exoparg3.c, and exoparg6.c. 16025 16026Support for the ACPI 2.0 "Mid" ASL operator has been implemented. 16027 16028Fixed a problem where the AML debugger was causing some internal 16029objects to not be deleted during subsystem termination. 16030 16031Fixed a problem with the external AcpiEvaluateObject interface 16032where the subsystem would fault if the named object to be 16033evaluated refered to a constant such as Zero, Ones, etc. 16034 16035Fixed a problem with IndexFields and BankFields where the 16036subsystem would fault if the index, data, or bank registers were 16037not defined in the same scope as the field itself. 16038 16039Added printf format string checking for compilers that support 16040this feature. Corrected more than 50 instances of issues with 16041format specifiers within invocations of ACPI_DEBUG_PRINT 16042throughout the core subsystem code. 16043 16044The ASL "Revision" operator now returns the ACPI support level 16045implemented in the core - the value "2" since the ACPI 2.0 support 16046is more than 50% implemented. 16047 16048Enhanced the output of the AML debugger "dump namespace" command 16049to output in a more human-readable form. 16050 16051Current core subsystem library code sizes are shown below. These 16052 16053are the code and data sizes for the acpica.lib produced by the 16054Microsoft Visual C++ 6.0 compiler, and these values do not include 16055any ACPI driver or OSPM code. The debug version of the code 16056includes the full debug trace mechanism -- leading to a much 16057 16058larger code and data size. Note that these values will vary 16059depending on the efficiency of the compiler and the compiler 16060options used during generation. 16061 16062 Previous Label (09_20_01): 16063 Non-Debug Version: 65K Code, 5K Data, 70K Total 16064 Debug Version: 138K Code, 58K Data, 196K Total 16065 16066 This Label: 16067 16068 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total 16069 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total 16070 16071Linux: 16072 16073Implemented a "Bad BIOS Blacklist" to track machines that have 16074known ASL/AML problems. 16075 16076Enhanced the /proc interface for the thermal zone driver and added 16077support for _HOT (the critical suspend trip point). The 'info' 16078file now includes threshold/policy information, and allows setting 16079of _SCP (cooling preference) and _TZP (polling frequency) values 16080to the 'info' file. Examples: "echo tzp=5 > info" sets the polling 16081frequency to 5 seconds, and "echo scp=1 > info" sets the cooling 16082preference to the passive/quiet mode (if supported by the ASL). 16083 16084Implemented a workaround for a gcc bug that resuted in an OOPs 16085when loading the control method battery driver. 16086 16087 ---------------------------------------- 16088Summary of changes for this label: 09_20_01 16089 16090 ACPI CA Core Subsystem: 16091 16092The AcpiEnableEvent and AcpiDisableEvent interfaces have been 16093modified to allow individual GPE levels to be flagged as wake- 16094enabled (i.e., these GPEs are to remain enabled when the platform 16095sleeps.) 16096 16097The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now 16098support wake-enabled GPEs. This means that upon entering the 16099sleep state, all GPEs that are not wake-enabled are disabled. 16100When leaving the sleep state, these GPEs are reenabled. 16101 16102A local double-precision divide/modulo module has been added to 16103enhance portability to OS kernels where a 64-bit math library is 16104not available. The new module is "utmath.c". 16105 16106Several optimizations have been made to reduce the use of CPU 16107stack. Originally over 2K, the maximum stack usage is now below 161082K at 1860 bytes (1.82k) 16109 16110Fixed a problem with the AcpiGetFirmwareTable interface where the 16111root table pointer was not mapped into a logical address properly. 16112 16113Fixed a problem where a NULL pointer was being dereferenced in the 16114interpreter code for the ASL Notify operator. 16115 16116Fixed a problem where the use of the ASL Revision operator 16117returned an error. This operator now returns the current version 16118of the ACPI CA core subsystem. 16119 16120Fixed a problem where objects passed as control method parameters 16121to AcpiEvaluateObject were always deleted at method termination. 16122However, these objects may end up being stored into the namespace 16123by the called method. The object reference count mechanism was 16124applied to these objects instead of a force delete. 16125 16126Fixed a problem where static strings or buffers (contained in the 16127AML code) that are declared as package elements within the ASL 16128code could cause a fault because the interpreter would attempt to 16129delete them. These objects are now marked with the "static 16130object" flag to prevent any attempt to delete them. 16131 16132Implemented an interpreter optimization to use operands directly 16133from the state object instead of extracting the operands to local 16134variables. This reduces stack use and code size, and improves 16135performance. 16136 16137The module exxface.c was eliminated as it was an unnecessary extra 16138layer of code. 16139 16140Current core subsystem library code sizes are shown below. These 16141are the code and data sizes for the acpica.lib produced by the 16142Microsoft Visual C++ 6.0 compiler, and these values do not include 16143any ACPI driver or OSPM code. The debug version of the code 16144includes the full debug trace mechanism -- leading to a much 16145larger code and data size. Note that these values will vary 16146depending on the efficiency of the compiler and the compiler 16147options used during generation. 16148 16149 Non-Debug Version: 65K Code, 5K Data, 70K Total 16150(Previously 69K) Debug Version: 138K Code, 58K Data, 196K 16151Total (Previously 195K) 16152 16153Linux: 16154 16155Support for ACPI 2.0 64-bit integers has been added. All ACPI 16156Integer objects are now 64 bits wide 16157 16158All Acpi data types and structures are now in lower case. Only 16159Acpi macros are upper case for differentiation. 16160 16161 Documentation: 16162 16163Changes to the external interfaces as described above. 16164 16165 ---------------------------------------- 16166Summary of changes for this label: 08_31_01 16167 16168 ACPI CA Core Subsystem: 16169 16170A bug with interpreter implementation of the ASL Divide operator 16171was found and fixed. The implicit function return value (not the 16172explicit store operands) was returning the remainder instead of 16173the quotient. This was a longstanding bug and it fixes several 16174known outstanding issues on various platforms. 16175 16176The ACPI_DEBUG_PRINT and function trace entry/exit macros have 16177been further optimized for size. There are 700 invocations of the 16178DEBUG_PRINT macro alone, so each optimization reduces the size of 16179the debug version of the subsystem significantly. 16180 16181A stack trace mechanism has been implemented. The maximum stack 16182usage is about 2K on 32-bit platforms. The debugger command "stat 16183stack" will display the current maximum stack usage. 16184 16185All public symbols and global variables within the subsystem are 16186now prefixed with the string "Acpi". This keeps all of the 16187symbols grouped together in a kernel map, and avoids conflicts 16188with other kernel subsystems. 16189 16190Most of the internal fixed lookup tables have been moved into the 16191code segment via the const operator. 16192 16193Several enhancements have been made to the interpreter to both 16194reduce the code size and improve performance. 16195 16196Current core subsystem library code sizes are shown below. These 16197are the code and data sizes for the acpica.lib produced by the 16198Microsoft Visual C++ 6.0 compiler, and these values do not include 16199any ACPI driver or OSPM code. The debug version of the code 16200includes the full debug trace mechanism which contains over 700 16201invocations of the DEBUG_PRINT macro, 500 function entry macro 16202invocations, and over 900 function exit macro invocations -- 16203leading to a much larger code and data size. Note that these 16204values will vary depending on the efficiency of the compiler and 16205the compiler options used during generation. 16206 16207 Non-Debug Version: 64K Code, 5K Data, 69K Total 16208Debug Version: 137K Code, 58K Data, 195K Total 16209 16210 Linux: 16211 16212Implemented wbinvd() macro, pending a kernel-wide definition. 16213 16214Fixed /proc/acpi/event to handle poll() and short reads. 16215 16216 ASL Compiler, version X2026: 16217 16218Fixed a problem introduced in the previous label where the AML 16219 16220code emitted for package objects produced packages with zero 16221length. 16222 16223 ---------------------------------------- 16224Summary of changes for this label: 08_16_01 16225 16226ACPI CA Core Subsystem: 16227 16228The following ACPI 2.0 ASL operators have been implemented in the 16229AML interpreter (These are already supported by the Intel ASL 16230compiler): ToDecimalString, ToHexString, ToString, ToInteger, and 16231ToBuffer. Support for 64-bit AML constants is implemented in the 16232AML parser, debugger, and disassembler. 16233 16234The internal memory tracking mechanism (leak detection code) has 16235been upgraded to reduce the memory overhead (a separate tracking 16236block is no longer allocated for each memory allocation), and now 16237supports all of the internal object caches. 16238 16239The data structures and code for the internal object caches have 16240been coelesced and optimized so that there is a single cache and 16241memory list data structure and a single group of functions that 16242implement generic cache management. This has reduced the code 16243size in both the debug and release versions of the subsystem. 16244 16245The DEBUG_PRINT macro(s) have been optimized for size and replaced 16246by ACPI_DEBUG_PRINT. The syntax for this macro is slightly 16247different, because it generates a single call to an internal 16248function. This results in a savings of about 90 bytes per 16249invocation, resulting in an overall code and data savings of about 1625016% in the debug version of the subsystem. 16251 16252 Linux: 16253 16254Fixed C3 disk corruption problems and re-enabled C3 on supporting 16255machines. 16256 16257Integrated low-level sleep code by Patrick Mochel. 16258 16259Further tweaked source code Linuxization. 16260 16261Other minor fixes. 16262 16263 ASL Compiler: 16264 16265Support for ACPI 2.0 variable length packages is fixed/completed. 16266 16267Fixed a problem where the optional length parameter for the ACPI 162682.0 ToString operator. 16269 16270Fixed multiple extraneous error messages when a syntax error is 16271detected within the declaration line of a control method. 16272 16273 ---------------------------------------- 16274Summary of changes for this label: 07_17_01 16275 16276ACPI CA Core Subsystem: 16277 16278Added a new interface named AcpiGetFirmwareTable to obtain any 16279ACPI table via the ACPI signature. The interface can be called at 16280any time during kernel initialization, even before the kernel 16281virtual memory manager is initialized and paging is enabled. This 16282allows kernel subsystems to obtain ACPI tables very early, even 16283before the ACPI CA subsystem is initialized. 16284 16285Fixed a problem where Fields defined with the AnyAcc attribute 16286could be resolved to the incorrect address under the following 16287conditions: 1) the field width is larger than 8 bits and 2) the 16288parent operation region is not defined on a DWORD boundary. 16289 16290Fixed a problem where the interpreter is not being locked during 16291namespace initialization (during execution of the _INI control 16292methods), causing an error when an attempt is made to release it 16293later. 16294 16295ACPI 2.0 support in the AML Interpreter has begun and will be 16296ongoing throughout the rest of this year. In this label, The Mod 16297operator is implemented. 16298 16299Added a new data type to contain full PCI addresses named 16300ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device, 16301and Function values. 16302 16303 Linux: 16304 16305Enhanced the Linux version of the source code to change most 16306capitalized ACPI type names to lowercase. For example, all 16307instances of ACPI_STATUS are changed to acpi_status. This will 16308result in a large diff, but the change is strictly cosmetic and 16309aligns the CA code closer to the Linux coding standard. 16310 16311OSL Interfaces: 16312 16313The interfaces to the PCI configuration space have been changed to 16314add the PCI Segment number and to split the single 32-bit combined 16315DeviceFunction field into two 16-bit fields. This was 16316accomplished by moving the four values that define an address in 16317PCI configuration space (segment, bus, device, and function) to 16318the new ACPI_PCI_ID structure. 16319 16320The changes to the PCI configuration space interfaces led to a 16321reexamination of the complete set of address space access 16322interfaces for PCI, I/O, and Memory. The previously existing 18 16323interfaces have proven difficult to maintain (any small change 16324must be propagated across at least 6 interfaces) and do not easily 16325allow for future expansion to 64 bits if necessary. Also, on some 16326systems, it would not be appropriate to demultiplex the access 16327width (8, 16, 32,or 64) before calling the OSL if the 16328corresponding native OS interfaces contain a similar access width 16329parameter. For these reasons, the 18 address space interfaces 16330have been replaced by these 6 new ones: 16331 16332AcpiOsReadPciConfiguration 16333AcpiOsWritePciConfiguration 16334AcpiOsReadMemory 16335AcpiOsWriteMemory 16336AcpiOsReadPort 16337AcpiOsWritePort 16338 16339Added a new interface named AcpiOsGetRootPointer to allow the OSL 16340to perform the platform and/or OS-specific actions necessary to 16341obtain the ACPI RSDP table pointer. On IA-32 platforms, this 16342interface will simply call down to the CA core to perform the low- 16343memory search for the table. On IA-64, the RSDP is obtained from 16344EFI. Migrating this interface to the OSL allows the CA core to 16345 16346remain OS and platform independent. 16347 16348Added a new interface named AcpiOsSignal to provide a generic 16349"function code and pointer" interface for various miscellaneous 16350signals and notifications that must be made to the host OS. The 16351first such signals are intended to support the ASL Fatal and 16352Breakpoint operators. In the latter case, the AcpiOsBreakpoint 16353interface has been obsoleted. 16354 16355The definition of the AcpiFormatException interface has been 16356changed to simplify its use. The caller no longer must supply a 16357buffer to the call; A pointer to a const string is now returned 16358directly. This allows the call to be easily used in printf 16359statements, etc. since the caller does not have to manage a local 16360buffer. 16361 16362 16363 ASL Compiler, Version X2025: 16364 16365The ACPI 2.0 Switch/Case/Default operators have been implemented 16366and are fully functional. They will work with all ACPI 1.0 16367interpreters, since the operators are simply translated to If/Else 16368pairs. 16369 16370The ACPI 2.0 ElseIf operator is implemented and will also work 16371with 1.0 interpreters, for the same reason. 16372 16373Implemented support for ACPI 2.0 variable-length packages. These 16374packages have a separate opcode, and their size is determined by 16375the interpreter at run-time. 16376 16377Documentation The ACPI CA Programmer Reference has been updated to 16378reflect the new interfaces and changes to existing interfaces. 16379 16380 ------------------------------------------ 16381Summary of changes for this label: 06_15_01 16382 16383 ACPI CA Core Subsystem: 16384 16385Fixed a problem where a DWORD-accessed field within a Buffer 16386object would get its byte address inadvertently rounded down to 16387the nearest DWORD. Buffers are always Byte-accessible. 16388 16389 ASL Compiler, version X2024: 16390 16391Fixed a problem where the Switch() operator would either fault or 16392hang the compiler. Note however, that the AML code for this ACPI 163932.0 operator is not yet implemented. 16394 16395Compiler uses the new AcpiOsGetTimer interface to obtain compile 16396timings. 16397 16398Implementation of the CreateField operator automatically converts 16399a reference to a named field within a resource descriptor from a 16400byte offset to a bit offset if required. 16401 16402Added some missing named fields from the resource descriptor 16403support. These are the names that are automatically created by the 16404compiler to reference fields within a descriptor. They are only 16405valid at compile time and are not passed through to the AML 16406interpreter. 16407 16408Resource descriptor named fields are now typed as Integers and 16409subject to compile-time typechecking when used in expressions. 16410 16411 ------------------------------------------ 16412Summary of changes for this label: 05_18_01 16413 16414 ACPI CA Core Subsystem: 16415 16416Fixed a couple of problems in the Field support code where bits 16417from adjacent fields could be returned along with the proper field 16418bits. Restructured the field support code to improve performance, 16419readability and maintainability. 16420 16421New DEBUG_PRINTP macro automatically inserts the procedure name 16422into the output, saving hundreds of copies of procedure name 16423strings within the source, shrinking the memory footprint of the 16424debug version of the core subsystem. 16425 16426 Source Code Structure: 16427 16428The source code directory tree was restructured to reflect the 16429current organization of the component architecture. Some files 16430and directories have been moved and/or renamed. 16431 16432 Linux: 16433 16434Fixed leaking kacpidpc processes. 16435 16436Fixed queueing event data even when /proc/acpi/event is not 16437opened. 16438 16439 ASL Compiler, version X2020: 16440 16441Memory allocation performance enhancement - over 24X compile time 16442improvement on large ASL files. Parse nodes and namestring 16443buffers are now allocated from a large internal compiler buffer. 16444 16445The temporary .SRC file is deleted unless the "-s" option is 16446specified 16447 16448The "-d" debug output option now sends all output to the .DBG file 16449instead of the console. 16450 16451"External" second parameter is now optional 16452 16453"ElseIf" syntax now properly allows the predicate 16454 16455Last operand to "Load" now recognized as a Target operand 16456 16457Debug object can now be used anywhere as a normal object. 16458 16459ResourceTemplate now returns an object of type BUFFER 16460 16461EISAID now returns an object of type INTEGER 16462 16463"Index" now works with a STRING operand 16464 16465"LoadTable" now accepts optional parameters 16466 16467"ToString" length parameter is now optional 16468 16469"Interrupt (ResourceType," parse error fixed. 16470 16471"Register" with a user-defined region space parse error fixed 16472 16473Escaped backslash at the end of a string ("\\") scan/parse error 16474fixed 16475 16476"Revision" is now an object of type INTEGER. 16477 16478 16479 16480------------------------------------------ 16481Summary of changes for this label: 05_02_01 16482 16483Linux: 16484 16485/proc/acpi/event now blocks properly. 16486 16487Removed /proc/sys/acpi. You can still dump your DSDT from 16488/proc/acpi/dsdt. 16489 16490 ACPI CA Core Subsystem: 16491 16492Fixed a problem introduced in the previous label where some of the 16493"small" resource descriptor types were not recognized. 16494 16495Improved error messages for the case where an ASL Field is outside 16496the range of the parent operation region. 16497 16498 ASL Compiler, version X2018: 16499 16500 16501Added error detection for ASL Fields that extend beyond the length 16502of the parent operation region (only if the length of the region 16503is known at compile time.) This includes fields that have a 16504minimum access width that is smaller than the parent region, and 16505individual field units that are partially or entirely beyond the 16506extent of the parent. 16507 16508 16509 16510------------------------------------------ 16511Summary of changes for this label: 04_27_01 16512 16513 ACPI CA Core Subsystem: 16514 16515Fixed a problem where the namespace mutex could be released at the 16516wrong time during execution of AcpiRemoveAddressSpaceHandler. 16517 16518Added optional thread ID output for debug traces, to simplify 16519debugging of multiple threads. Added context switch notification 16520when the debug code realizes that a different thread is now 16521executing ACPI code. 16522 16523Some additional external data types have been prefixed with the 16524string "ACPI_" for consistency. This may effect existing code. 16525The data types affected are the external callback typedefs - e.g., 16526 16527WALK_CALLBACK becomes ACPI_WALK_CALLBACK. 16528 16529 Linux: 16530 16531Fixed an issue with the OSL semaphore implementation where a 16532thread was waking up with an error from receiving a SIGCHLD 16533signal. 16534 16535Linux version of ACPI CA now uses the system C library for string 16536manipulation routines instead of a local implementation. 16537 16538Cleaned up comments and removed TBDs. 16539 16540 ASL Compiler, version X2017: 16541 16542Enhanced error detection and reporting for all file I/O 16543operations. 16544 16545 Documentation: 16546 16547Programmer Reference updated to version 1.06. 16548 16549 16550 16551------------------------------------------ 16552Summary of changes for this label: 04_13_01 16553 16554 ACPI CA Core Subsystem: 16555 16556Restructured support for BufferFields and RegionFields. 16557BankFields support is now fully operational. All known 32-bit 16558limitations on field sizes have been removed. Both BufferFields 16559and (Operation) RegionFields are now supported by the same field 16560management code. 16561 16562Resource support now supports QWORD address and IO resources. The 1656316/32/64 bit address structures and the Extended IRQ structure 16564have been changed to properly handle Source Resource strings. 16565 16566A ThreadId of -1 is now used to indicate a "mutex not acquired" 16567condition internally and must never be returned by AcpiOsThreadId. 16568This reserved value was changed from 0 since Unix systems allow a 16569thread ID of 0. 16570 16571Linux: 16572 16573Driver code reorganized to enhance portability 16574 16575Added a kernel configuration option to control ACPI_DEBUG 16576 16577Fixed the EC driver to honor _GLK. 16578 16579ASL Compiler, version X2016: 16580 16581Fixed support for the "FixedHw" keyword. Previously, the FixedHw 16582address space was set to 0, not 0x7f as it should be. 16583 16584 ------------------------------------------ 16585Summary of changes for this label: 03_13_01 16586 16587 ACPI CA Core Subsystem: 16588 16589During ACPI initialization, the _SB_._INI method is now run if 16590present. 16591 16592Notify handler fix - notifies are deferred until the parent method 16593completes execution. This fixes the "mutex already acquired" 16594issue seen occasionally. 16595 16596Part of the "implicit conversion" rules in ACPI 2.0 have been 16597found to cause compatibility problems with existing ASL/AML. The 16598convert "result-to-target-type" implementation has been removed 16599for stores to method Args and Locals. Source operand conversion 16600is still fully implemented. Possible changes to ACPI 2.0 16601specification pending. 16602 16603Fix to AcpiRsCalculatePciRoutingTableLength to return correct 16604length. 16605 16606Fix for compiler warnings for 64-bit compiles. 16607 16608 Linux: 16609 16610/proc output aligned for easier parsing. 16611 16612Release-version compile problem fixed. 16613 16614New kernel configuration options documented in Configure.help. 16615 16616IBM 600E - Fixed Sleep button may generate "Invalid <NULL> 16617context" message. 16618 16619 OSPM: 16620 16621Power resource driver integrated with bus manager. 16622 16623Fixed kernel fault during active cooling for thermal zones. 16624 16625Source Code: 16626 16627The source code tree has been restructured. 16628 16629 16630 16631------------------------------------------ 16632Summary of changes for this label: 03_02_01 16633 16634 Linux OS Services Layer (OSL): 16635 16636Major revision of all Linux-specific code. 16637 16638Modularized all ACPI-specific drivers. 16639 16640Added new thermal zone and power resource drivers. 16641 16642Revamped /proc interface (new functionality is under /proc/acpi). 16643 16644New kernel configuration options. 16645 16646 Linux known issues: 16647 16648New kernel configuration options not documented in Configure.help 16649yet. 16650 16651 16652Module dependencies not currently implemented. If used, they 16653should be loaded in this order: busmgr, power, ec, system, 16654processor, battery, ac_adapter, button, thermal. 16655 16656Modules will not load if CONFIG_MODVERSION is set. 16657 16658IBM 600E - entering S5 may reboot instead of shutting down. 16659 16660IBM 600E - Sleep button may generate "Invalid <NULL> context" 16661message. 16662 16663Some systems may fail with "execution mutex already acquired" 16664message. 16665 16666 ACPI CA Core Subsystem: 16667 16668Added a new OSL Interface, AcpiOsGetThreadId. This was required 16669for the deadlock detection code. Defined to return a non-zero, 32- 16670bit thread ID for the currently executing thread. May be a non- 16671zero constant integer on single-thread systems. 16672 16673Implemented deadlock detection for internal subsystem mutexes. We 16674may add conditional compilation for this code (debug only) later. 16675 16676ASL/AML Mutex object semantics are now fully supported. This 16677includes multiple acquires/releases by owner and support for the 16678 16679Mutex SyncLevel parameter. 16680 16681A new "Force Release" mechanism automatically frees all ASL 16682Mutexes that have been acquired but not released when a thread 16683exits the interpreter. This forces conformance to the ACPI spec 16684("All mutexes must be released when an invocation exits") and 16685prevents deadlocked ASL threads. This mechanism can be expanded 16686(later) to monitor other resource acquisitions if OEM ASL code 16687continues to misbehave (which it will). 16688 16689Several new ACPI exception codes have been added for the Mutex 16690support. 16691 16692Recursive method calls are now allowed and supported (the ACPI 16693spec does in fact allow recursive method calls.) The number of 16694recursive calls is subject to the restrictions imposed by the 16695SERIALIZED method keyword and SyncLevel (ACPI 2.0) method 16696parameter. 16697 16698Implemented support for the SyncLevel parameter for control 16699methods (ACPI 2.0 feature) 16700 16701Fixed a deadlock problem when multiple threads attempted to use 16702the interpreter. 16703 16704Fixed a problem where the string length of a String package 16705element was not always set in a package returned from 16706AcpiEvaluateObject. 16707 16708Fixed a problem where the length of a String package element was 16709not always included in the length of the overall package returned 16710from AcpiEvaluateObject. 16711 16712Added external interfaces (Acpi*) to the ACPI debug memory 16713manager. This manager keeps a list of all outstanding 16714allocations, and can therefore detect memory leaks and attempts to 16715free memory blocks more than once. Useful for code such as the 16716power manager, etc. May not be appropriate for device drivers. 16717Performance with the debug code enabled is slow. 16718 16719The ACPI Global Lock is now an optional hardware element. 16720 16721 ASL Compiler Version X2015: 16722 16723Integrated changes to allow the compiler to be generated on 16724multiple platforms. 16725 16726Linux makefile added to generate the compiler on Linux 16727 16728 Source Code: 16729 16730All platform-specific headers have been moved to their own 16731subdirectory, Include/Platform. 16732 16733New source file added, Interpreter/ammutex.c 16734 16735New header file, Include/acstruct.h 16736 16737 Documentation: 16738 16739The programmer reference has been updated for the following new 16740interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree 16741 16742 ------------------------------------------ 16743Summary of changes for this label: 02_08_01 16744 16745Core ACPI CA Subsystem: Fixed a problem where an error was 16746incorrectly returned if the return resource buffer was larger than 16747the actual data (in the resource interfaces). 16748 16749References to named objects within packages are resolved to the 16750 16751full pathname string before packages are returned directly (via 16752the AcpiEvaluateObject interface) or indirectly via the resource 16753interfaces. 16754 16755Linux OS Services Layer (OSL): 16756 16757Improved /proc battery interface. 16758 16759 16760Added C-state debugging output and other miscellaneous fixes. 16761 16762ASL Compiler Version X2014: 16763 16764All defined method arguments can now be used as local variables, 16765including the ones that are not actually passed in as parameters. 16766The compiler tracks initialization of the arguments and issues an 16767exception if they are used without prior assignment (just like 16768locals). 16769 16770The -o option now specifies a filename prefix that is used for all 16771output files, including the AML output file. Otherwise, the 16772default behavior is as follows: 1) the AML goes to the file 16773specified in the DSDT. 2) all other output files use the input 16774source filename as the base. 16775 16776 ------------------------------------------ 16777Summary of changes for this label: 01_25_01 16778 16779Core ACPI CA Subsystem: Restructured the implementation of object 16780store support within the interpreter. This includes support for 16781the Store operator as well as any ASL operators that include a 16782target operand. 16783 16784Partially implemented support for Implicit Result-to-Target 16785conversion. This is when a result object is converted on the fly 16786to the type of an existing target object. Completion of this 16787support is pending further analysis of the ACPI specification 16788concerning this matter. 16789 16790CPU-specific code has been removed from the subsystem (hardware 16791directory). 16792 16793New Power Management Timer functions added 16794 16795Linux OS Services Layer (OSL): Moved system state transition code 16796to the core, fixed it, and modified Linux OSL accordingly. 16797 16798Fixed C2 and C3 latency calculations. 16799 16800 16801We no longer use the compilation date for the version message on 16802initialization, but retrieve the version from AcpiGetSystemInfo(). 16803 16804Incorporated for fix Sony VAIO machines. 16805 16806Documentation: The Programmer Reference has been updated and 16807reformatted. 16808 16809 16810ASL Compiler: Version X2013: Fixed a problem where the line 16811numbering and error reporting could get out of sync in the 16812presence of multiple include files. 16813 16814 ------------------------------------------ 16815Summary of changes for this label: 01_15_01 16816 16817Core ACPI CA Subsystem: 16818 16819Implemented support for type conversions in the execution of the 16820ASL Concatenate operator (The second operand is converted to 16821match the type of the first operand before concatenation.) 16822 16823Support for implicit source operand conversion is partially 16824implemented. The ASL source operand types Integer, Buffer, and 16825String are freely interchangeable for most ASL operators and are 16826converted by the interpreter on the fly as required. Implicit 16827Target operand conversion (where the result is converted to the 16828target type before storing) is not yet implemented. 16829 16830Support for 32-bit and 64-bit BCD integers is implemented. 16831 16832Problem fixed where a field read on an aligned field could cause a 16833read past the end of the field. 16834 16835New exception, AE_AML_NO_RETURN_VALUE, is returned when a method 16836does not return a value, but the caller expects one. (The ASL 16837compiler flags this as a warning.) 16838 16839ASL Compiler: 16840 16841Version X2011: 168421. Static typechecking of all operands is implemented. This 16843prevents the use of invalid objects (such as using a Package where 16844an Integer is required) at compile time instead of at interpreter 16845run-time. 168462. The ASL source line is printed with ALL errors and warnings. 168473. Bug fix for source EOF without final linefeed. 168484. Debug option is split into a parse trace and a namespace trace. 168495. Namespace output option (-n) includes initial values for 16850integers and strings. 168516. Parse-only option added for quick syntax checking. 168527. Compiler checks for duplicate ACPI name declarations 16853 16854Version X2012: 168551. Relaxed typechecking to allow interchangeability between 16856strings, integers, and buffers. These types are now converted by 16857the interpreter at runtime. 168582. Compiler reports time taken by each internal subsystem in the 16859debug output file. 16860 16861 16862 ------------------------------------------ 16863Summary of changes for this label: 12_14_00 16864 16865ASL Compiler: 16866 16867This is the first official release of the compiler. Since the 16868compiler requires elements of the Core Subsystem, this label 16869synchronizes everything. 16870 16871------------------------------------------ 16872Summary of changes for this label: 12_08_00 16873 16874 16875Fixed a problem where named references within the ASL definition 16876of both OperationRegions and CreateXXXFields did not work 16877properly. The symptom was an AE_AML_OPERAND_TYPE during 16878initialization of the region/field. This is similar (but not 16879related internally) to the problem that was fixed in the last 16880label. 16881 16882Implemented both 32-bit and 64-bit support for the BCD ASL 16883functions ToBCD and FromBCD. 16884 16885Updated all legal headers to include "2000" in the copyright 16886years. 16887 16888 ------------------------------------------ 16889Summary of changes for this label: 12_01_00 16890 16891Fixed a problem where method invocations within the ASL definition 16892of both OperationRegions and CreateXXXFields did not work 16893properly. The symptom was an AE_AML_OPERAND_TYPE during 16894initialization of the region/field: 16895 16896 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments 16897[DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s) 16898(0x3005) 16899 16900Fixed a problem where operators with more than one nested 16901subexpression would fail. The symptoms were varied, by mostly 16902AE_AML_OPERAND_TYPE errors. This was actually a rather serious 16903problem that has gone unnoticed until now. 16904 16905 Subtract (Add (1,2), Multiply (3,4)) 16906 16907Fixed a problem where AcpiGetHandle didn't quite get fixed in the 16908previous build (The prefix part of a relative path was handled 16909incorrectly). 16910 16911Fixed a problem where Operation Region initialization failed if 16912the operation region name was a "namepath" instead of a simple 16913"nameseg". Symptom was an AE_NO_OPERAND error. 16914 16915Fixed a problem where an assignment to a local variable via the 16916indirect RefOf mechanism only worked for the first such 16917assignment. Subsequent assignments were ignored. 16918 16919 ------------------------------------------ 16920Summary of changes for this label: 11_15_00 16921 16922ACPI 2.0 table support with backwards support for ACPI 1.0 and the 169230.71 extensions. Note: although we can read ACPI 2.0 BIOS tables, 16924the AML interpreter does NOT have support for the new 2.0 ASL 16925grammar terms at this time. 16926 16927All ACPI hardware access is via the GAS structures in the ACPI 2.0 16928FADT. 16929 16930All physical memory addresses across all platforms are now 64 bits 16931wide. Logical address width remains dependent on the platform 16932(i.e., "void *"). 16933 16934AcpiOsMapMemory interface changed to a 64-bit physical address. 16935 16936The AML interpreter integer size is now 64 bits, as per the ACPI 169372.0 specification. 16938 16939For backwards compatibility with ACPI 1.0, ACPI tables with a 16940revision number less than 2 use 32-bit integers only. 16941 16942Fixed a problem where the evaluation of OpRegion operands did not 16943always resolve them to numbers properly. 16944 16945------------------------------------------ 16946Summary of changes for this label: 10_20_00 16947 16948Fix for CBN_._STA issue. This fix will allow correct access to 16949CBN_ OpRegions when the _STA returns 0x8. 16950 16951Support to convert ACPI constants (Ones, Zeros, One) to actual 16952values before a package object is returned 16953 16954Fix for method call as predicate to if/while construct causing 16955incorrect if/while behavior 16956 16957Fix for Else block package lengths sometimes calculated wrong (if 16958block > 63 bytes) 16959 16960Fix for Processor object length field, was always zero 16961 16962Table load abort if FACP sanity check fails 16963 16964Fix for problem with Scope(name) if name already exists 16965 16966Warning emitted if a named object referenced cannot be found 16967(resolved) during method execution. 16968 16969 16970 16971 16972 16973------------------------------------------ 16974Summary of changes for this label: 9_29_00 16975 16976New table initialization interfaces: AcpiInitializeSubsystem no 16977longer has any parameters AcpiFindRootPointer - Find the RSDP (if 16978necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP- 16979>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by 16980AcpiLoadTables 16981 16982Note: These interface changes require changes to all existing OSDs 16983 16984The PCI_Config default address space handler is always installed 16985at the root namespace object. 16986 16987------------------------------------------- 16988Summary of changes for this label: 09_15_00 16989 16990The new initialization architecture is implemented. New 16991interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize) 16992AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace 16993 16994(Namespace is automatically loaded when a table is loaded) 16995 16996The ACPI_OPERAND_OBJECT has been optimized to shrink its size from 1699752 bytes to 32 bytes. There is usually one of these for every 16998namespace object, so the memory savings is significant. 16999 17000Implemented just-in-time evaluation of the CreateField operators. 17001 17002Bug fixes for IA-64 support have been integrated. 17003 17004Additional code review comments have been implemented 17005 17006The so-called "third pass parse" has been replaced by a final walk 17007through the namespace to initialize all operation regions (address 17008spaces) and fields that have not yet been initialized during the 17009execution of the various _INI and REG methods. 17010 17011New file - namespace/nsinit.c 17012 17013------------------------------------------- 17014Summary of changes for this label: 09_01_00 17015 17016Namespace manager data structures have been reworked to change the 17017primary object from a table to a single object. This has 17018resulted in dynamic memory savings of 3X within the namespace and 170192X overall in the ACPI CA subsystem. 17020 17021Fixed problem where the call to AcpiEvFindPciRootBuses was 17022inadvertently left commented out. 17023 17024Reduced the warning count when generating the source with the GCC 17025compiler. 17026 17027Revision numbers added to each module header showing the 17028SourceSafe version of the file. Please refer to this version 17029number when giving us feedback or comments on individual modules. 17030 17031The main object types within the subsystem have been renamed to 17032clarify their purpose: 17033 17034ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT 17035ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT 17036ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE 17037 17038NOTE: no changes to the initialization sequence are included in 17039this label. 17040 17041------------------------------------------- 17042Summary of changes for this label: 08_23_00 17043 17044Fixed problem where TerminateControlMethod was being called 17045multiple times per method 17046 17047Fixed debugger problem where single stepping caused a semaphore to 17048be oversignalled 17049 17050Improved performance through additional parse object caching - 17051added ACPI_EXTENDED_OP type 17052 17053------------------------------------------- 17054Summary of changes for this label: 08_10_00 17055 17056Parser/Interpreter integration: Eliminated the creation of 17057complete parse trees for ACPI tables and control methods. 17058Instead, parse subtrees are created and then deleted as soon as 17059they are processed (Either entered into the namespace or executed 17060by the interpreter). This reduces the use of dynamic kernel 17061memory significantly. (about 10X) 17062 17063Exception codes broken into classes and renumbered. Be sure to 17064recompile all code that includes acexcep.h. Hopefully we won't 17065have to renumber the codes again now that they are split into 17066classes (environment, programmer, AML code, ACPI table, and 17067internal). 17068 17069Fixed some additional alignment issues in the Resource Manager 17070subcomponent 17071 17072Implemented semaphore tracking in the AcpiExec utility, and fixed 17073several places where mutexes/semaphores were being unlocked 17074without a corresponding lock operation. There are no known 17075semaphore or mutex "leaks" at this time. 17076 17077Fixed the case where an ASL Return operator is used to return an 17078unnamed package. 17079 17080------------------------------------------- 17081Summary of changes for this label: 07_28_00 17082 17083Fixed a problem with the way addresses were calculated in 17084AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem 17085manifested itself when a Field was created with WordAccess or 17086DwordAccess, but the field unit defined within the Field was less 17087 17088than a Word or Dword. 17089 17090Fixed a problem in AmlDumpOperands() module's loop to pull 17091operands off of the operand stack to display information. The 17092problem manifested itself as a TLB error on 64-bit systems when 17093accessing an operand stack with two or more operands. 17094 17095Fixed a problem with the PCI configuration space handlers where 17096context was getting confused between accesses. This required a 17097change to the generic address space handler and address space 17098setup definitions. Handlers now get both a global handler context 17099(this is the one passed in by the user when executing 17100AcpiInstallAddressSpaceHandler() and a specific region context 17101that is unique to each region (For example, the _ADR, _SEG and 17102_BBN values associated with a specific region). The generic 17103function definitions have changed to the following: 17104 17105typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function, 17106UINT32 Address, UINT32 BitWidth, UINT32 *Value, void 17107*HandlerContext, // This used to be void *Context void 17108*RegionContext); // This is an additional parameter 17109 17110typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE 17111RegionHandle, UINT32 Function, void *HandlerContext, void 17112**RegionContext); // This used to be **ReturnContext 17113 17114------------------------------------------- 17115Summary of changes for this label: 07_21_00 17116 17117Major file consolidation and rename. All files within the 17118interpreter have been renamed as well as most header files. This 17119was done to prevent collisions with existing files in the host 17120OSs -- filenames such as "config.h" and "global.h" seem to be 17121quite common. The VC project files have been updated. All 17122makefiles will require modification. 17123 17124The parser/interpreter integration continues in Phase 5 with the 17125implementation of a complete 2-pass parse (the AML is parsed 17126twice) for each table; This avoids the construction of a huge 17127parse tree and therefore reduces the amount of dynamic memory 17128required by the subsystem. Greater use of the parse object cache 17129means that performance is unaffected. 17130 17131Many comments from the two code reviews have been rolled in. 17132 17133The 64-bit alignment support is complete. 17134 17135------------------------------------------- 17136Summary of changes for this label: 06_30_00 17137 17138With a nod and a tip of the hat to the technology of yesteryear, 17139we've added support in the source code for 80 column output 17140devices. The code is now mostly constrained to 80 columns or 17141less to support environments and editors that 1) cannot display 17142or print more than 80 characters on a single line, and 2) cannot 17143disable line wrapping. 17144 17145A major restructuring of the namespace data structure has been 17146completed. The result is 1) cleaner and more 17147understandable/maintainable code, and 2) a significant reduction 17148in the dynamic memory requirement for each named ACPI object 17149(almost half). 17150 17151------------------------------------------- 17152Summary of changes for this label: 06_23_00 17153 17154Linux support has been added. In order to obtain approval to get 17155the ACPI CA subsystem into the Linux kernel, we've had to make 17156quite a few changes to the base subsystem that will affect all 17157users (all the changes are generic and OS- independent). The 17158effects of these global changes have been somewhat far reaching. 17159Files have been merged and/or renamed and interfaces have been 17160renamed. The major changes are described below. 17161 17162Osd* interfaces renamed to AcpiOs* to eliminate namespace 17163pollution/confusion within our target kernels. All OSD 17164interfaces must be modified to match the new naming convention. 17165 17166Files merged across the subsystem. A number of the smaller source 17167and header files have been merged to reduce the file count and 17168increase the density of the existing files. There are too many 17169to list here. In general, makefiles that call out individual 17170files will require rebuilding. 17171 17172Interpreter files renamed. All interpreter files now have the 17173prefix am* instead of ie* and is*. 17174 17175Header files renamed: The acapi.h file is now acpixf.h. The 17176acpiosd.h file is now acpiosxf.h. We are removing references to 17177the acronym "API" since it is somewhat windowsy. The new name is 17178"external interface" or xface or xf in the filenames.j 17179 17180 17181All manifest constants have been forced to upper case (some were 17182mixed case.) Also, the string "ACPI_" has been prepended to many 17183(not all) of the constants, typedefs, and structs. 17184 17185The globals "DebugLevel" and "DebugLayer" have been renamed 17186"AcpiDbgLevel" and "AcpiDbgLayer" respectively. 17187 17188All other globals within the subsystem are now prefixed with 17189"AcpiGbl_" Internal procedures within the subsystem are now 17190prefixed with "Acpi" (with only a few exceptions). The original 17191two-letter abbreviation for the subcomponent remains after "Acpi" 17192- for example, CmCallocate became AcpiCmCallocate. 17193 17194Added a source code translation/conversion utility. Used to 17195generate the Linux source code, it can be modified to generate 17196other types of source as well. Can also be used to cleanup 17197existing source by removing extraneous spaces and blank lines. 17198Found in tools/acpisrc/* 17199 17200OsdUnMapMemory was renamed to OsdUnmapMemory and then 17201AcpiOsUnmapMemory. (UnMap became Unmap). 17202 17203A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore. 17204When set to one, this indicates that the caller wants to use the 17205 17206semaphore as a mutex, not a counting semaphore. ACPI CA uses 17207both types. However, implementers of this call may want to use 17208different OS primitives depending on the type of semaphore 17209requested. For example, some operating systems provide separate 17210 17211"mutex" and "semaphore" interfaces - where the mutex interface is 17212much faster because it doesn't have all the overhead of a full 17213semaphore implementation. 17214 17215Fixed a deadlock problem where a method that accesses the PCI 17216address space can block forever if it is the first access to the 17217space. 17218 17219------------------------------------------- 17220Summary of changes for this label: 06_02_00 17221 17222Support for environments that cannot handle unaligned data 17223accesses (e.g. firmware and OS environments devoid of alignment 17224handler technology namely SAL/EFI and the IA-64 Linux kernel) has 17225been added (via configurable macros) in these three areas: - 17226Transfer of data from the raw AML byte stream is done via byte 17227moves instead of word/dword/qword moves. - External objects are 17228aligned within the user buffer, including package elements (sub- 17229objects). - Conversion of name strings to UINT32 Acpi Names is now 17230done byte-wise. 17231 17232The Store operator was modified to mimic Microsoft's 17233implementation when storing to a Buffer Field. 17234 17235Added a check of the BM_STS bit before entering C3. 17236 17237The methods subdirectory has been obsoleted and removed. A new 17238file, cmeval.c subsumes the functionality. 17239 17240A 16-bit (DOS) version of AcpiExec has been developed. The 17241makefile is under the acpiexec directory. 17242